Linux系统加固
Linux系统加固摘要 Linux系统加固是提升服务器安全性的关键措施,通过配置优化减少攻击面。主要内容包括:1)用户管理,如删除不必要账户、强化密码策略和限制root权限;2)文件系统安全,设置严格权限和使用不可变属性;3)网络安全配置,包括防火墙规则、SSH加固和端口管理;4)系统服务管理,禁用非必要服务;5)定期更新系统和软件;6)日志监控与入侵检测,如部署AIDE和Fail2Ban。这些措
Linux系统加固
在当今数字化时代,Linux系统因其开源、灵活和高性能的特点,被广泛应用于服务器、云计算和嵌入式设备。然而,开放的特性也使其成为网络攻击的目标。系统加固(System Hardening)是提升Linux系统安全性的关键措施,旨在通过配置优化、权限控制和安全策略,降低安全风险,保护系统免受未经授权的访问和攻击。
一、Linux系统加固的基础
1.1 什么是系统加固?
系统加固是指通过一系列技术手段和配置调整,增强Linux系统的安全性,减少攻击面,防止未经授权的访问、数据泄露或系统破坏。加固的目标是确保系统在功能需求与安全性之间取得平衡,涵盖用户管理、文件权限、网络配置、软件更新和监控等多个方面。
1.2 为什么需要系统加固?
- 应对安全威胁:Linux系统常用于关键业务(如Web服务器、数据库),容易成为黑客攻击目标,如DDoS、SQL注入或权限提升攻击。
- 合规性要求:许多行业标准(如PCI-DSS、ISO 27001)要求对系统进行安全加固。
- 减少攻击面:未加固的系统可能存在默认账户、不必要服务或弱密码等漏洞,增加被攻击的风险。
- 保护数据安全:加固可以防止敏感数据(如用户信息、日志)泄露或被篡改。
1.3 系统加固的原则
- 最小权限原则:仅授予用户和服务所需的最低权限。
- 最小化原则:禁用不必要的服务、端口和软件,减少攻击入口。
- 深度防御:通过多层次安全措施(如防火墙、加密、监控)提升防护能力。
- 定期更新:及时修补已知漏洞,保持系统和软件的最新状态。
- 持续监控:实时检测异常行为,快速响应安全事件。
二、Linux系统加固的核心方法
系统加固涉及多个层面,以下从用户管理、文件权限、网络安全、系统服务、日志监控等方面详细介绍。
2.1 用户和权限管理
2.1.1 删除或禁用不必要账户
默认安装的Linux系统可能包含不必要的用户账户(如games、news),应删除或禁用:
sudo userdel -r games
sudo usermod -L news
查看所有账户:
cat /etc/passwd
2.1.2 强化密码策略
-
设置强密码要求:编辑/etc/login.defs:
PASS_MIN_LEN 12 PASS_MAX_DAYS 90 PASS_MIN_DAYS 7 PASS_WARN_AGE 14 -
使用PAM模块:编辑/etc/security/pwquality.conf:
minlen = 12 dcredit = -1 # 至少1个数字 ucredit = -1 # 至少1个大写字母 lcredit = -1 # 至少1个小写字母 ocredit = -1 # 至少1个特殊字符
2.1.3 限制root账户
-
禁用root直接登录:编辑/etc/ssh/sshd_config:
PermitRootLogin no重启SSH服务:
sudo systemctl restart sshd -
使用sudo:为普通用户分配sudo权限,编辑/etc/sudoers:
user1 ALL=(ALL) ALL
2.1.4 配置账户锁定
防止暴力破解,编辑/etc/security/faillock.conf:
deny = 5
unlock_time = 600
启用后,5次登录失败将锁定账户600秒。
2.2 文件系统安全
2.2.1 设置严格的文件权限
-
检查关键文件权限:确保/etc/passwd、/etc/shadow等文件权限正确:
sudo chmod 644 /etc/passwd sudo chmod 600 /etc/shadow -
限制目录访问:如限制/tmp目录:
sudo chmod 1777 /tmp
2.2.2 使用不可变属性
防止关键文件被修改:
sudo chattr +i /etc/passwd
取消不可变属性:
sudo chattr -i /etc/passwd
2.2.3 启用文件系统配额
限制用户磁盘使用量,参考以下步骤:
-
在/etc/fstab中启用配额:
/dev/sda2 /home ext4 defaults,usrquota,grpquota 0 2 -
初始化配额:
sudo quotacheck -cug /home sudo quotaon /home -
设置用户配额:
sudo edquota user1
2.3 网络安全配置
2.3.1 配置防火墙
使用firewalld或iptables限制网络访问:
-
firewalld:
sudo systemctl enable firewalld sudo systemctl start firewalld sudo firewall-cmd --permanent --add-service=ssh sudo firewall-cmd --permanent --add-port=80/tcp sudo firewall-cmd --reload -
iptables:
sudo iptables -A INPUT -p tcp --dport 22 -j ACCEPT sudo iptables -A INPUT -p tcp --dport 80 -j ACCEPT sudo iptables -A INPUT -j DROP sudo service iptables save
2.3.2 禁用不必要端口
检查开放端口:
sudo netstat -tuln
禁用不必要服务(如telnet):
sudo systemctl disable telnet
2.3.3 配置SSH安全
-
更改默认端口:编辑/etc/ssh/sshd_config:
Port 2222 -
限制用户登录:
AllowUsers user1 user2 -
启用密钥认证:
-
生成密钥对:
ssh-keygen -t rsa -b 4096 -
复制公钥到服务器:
ssh-copy-id user1@server -
禁用密码登录:
PasswordAuthentication no
-
2.4 系统服务管理
2.4.1 禁用不必要服务
列出所有服务:
sudo systemctl list-unit-files --state=enabled
禁用不必要服务(如cups打印服务):
sudo systemctl disable cups
2.4.2 限制服务权限
使用systemd限制服务资源: 编辑/etc/systemd/system/nginx.service.d/override.conf:
[Service]
MemoryLimit=512M
CPUQuota=50%
重新加载配置:
sudo systemctl daemon-reload
sudo systemctl restart nginx
2.5 软件和系统更新
2.5.1 定期更新系统
保持系统和软件最新,修补已知漏洞:
-
Debian/Ubuntu:
sudo apt update && sudo apt upgrade -y -
CentOS/RHEL:
sudo yum update -y
2.5.2 启用自动更新
配置自动安全更新(以Ubuntu为例):
sudo apt install unattended-upgrades
sudo dpkg-reconfigure --priority=low unattended-upgrades
2.6 日志和监控
2.6.1 配置日志审计
使用auditd监控关键操作:
sudo apt install auditd
sudo systemctl enable auditd
sudo systemctl start auditd
添加审计规则,监控/etc/passwd:
sudo auditctl -w /etc/passwd -p wa -k passwd_changes
2.6.2 集中化日志管理
使用rsyslog或syslog-ng收集日志,配置远程日志服务器: 编辑/etc/rsyslog.conf:
*.* @logserver:514
重启服务:
sudo systemctl restart rsyslog
2.6.3 实时监控
使用Prometheus和Grafana监控系统:
-
安装node_exporter:
sudo apt install prometheus-node-exporter -
配置Grafana仪表盘,监控CPU、内存和磁盘使用情况。
2.7 入侵检测与防护
2.7.1 安装入侵检测系统(IDS)
使用AIDE监控文件完整性:
sudo apt install aide
sudo aideinit
sudo mv /var/lib/aide/aide.db.new /var/lib/aide/aide.db
定期检查:
sudo aide --check
2.7.2 配置Fail2Ban
防止暴力破解:
sudo apt install fail2ban
配置SSH防护,编辑/etc/fail2ban/jail.local:
[sshd]
enabled = true
port = 2222
maxretry = 5
bantime = 600
重启服务:
sudo systemctl restart fail2ban
2.8 内核和模块加固
2.8.1 限制内核参数
编辑/etc/sysctl.conf,添加:
# 禁用IP转发
net.ipv4.ip_forward = 0
# 启用SYN洪水防护
net.ipv4.tcp_syncookies = 1
# 限制core dump
fs.suid_dumpable = 0
应用配置:
sudo sysctl -p
2.8.2 禁用不必要内核模块
列出加载的模块:
lsmod
禁用模块(如USB存储):
echo "blacklist usb-storage" >> /etc/modprobe.d/blacklist.conf
2.9 使用SELinux或AppArmor
-
SELinux(CentOS/RHEL): 启用强制模式:
sudo setenforce 1编辑/etc/selinux/config:
SELINUX=enforcing -
AppArmor(Ubuntu/Debian): 安装并配置:
sudo apt install apparmor sudo systemctl enable apparmor
三、预防安全风险的措施
-
定期安全审计: 使用lynis进行系统安全扫描:
sudo apt install lynis sudo lynis audit system -
备份关键数据: 配置定期备份:
0 2 * * * rsync -av /home /backup -
员工培训: 提高运维人员的安全意识,避免弱密码或误操作。
-
漏洞扫描: 使用OpenVAS或Nessus定期扫描系统漏洞。
四、案例分析:典型场景下的系统加固
4.1 案例1:Web服务器加固
某公司运行Nginx服务器,需防止常见攻击。加固步骤:
-
禁用root登录,配置SSH密钥认证。
-
使用firewalld仅开放80和443端口:
sudo firewall-cmd --permanent --add-service=http sudo firewall-cmd --permanent --add-service=https sudo firewall-cmd --reload -
安装Fail2Ban,配置SSH和HTTP防护。
-
启用AppArmor,限制Nginx权限。
-
结果:抵御多次暴力破解尝试,系统安全性提升。
4.2 案例2:数据库服务器加固
一台MySQL服务器存储敏感数据,需加固。步骤:
-
设置强密码策略,禁用匿名用户:
DROP USER ''@'localhost'; -
配置/etc/my.cnf:
[mysqld] bind-address = 127.0.0.1 -
使用LVM快照备份数据库:
sudo lvcreate -L 10G -s -n mysql_snap /dev/vg_name/lv_mysql -
启用auditd监控数据库文件。
-
结果:数据库访问受限,数据安全性增强。
五、常见问题与注意事项
- 功能与安全的平衡:过度加固可能影响系统功能,需根据业务需求调整。
- 备份测试:加固前确保备份可用,避免配置错误导致数据丢失。
- 日志管理:定期清理日志,避免磁盘空间不足。
- 持续更新:关注CVE漏洞公告,及时修补系统。
六、总结
Linux系统加固是保障服务器安全的关键措施,涵盖用户管理、文件权限、网络安全、服务优化等多个方面。通过合理配置防火墙、SSH、SELinux/AppArmor等工具,结合定期更新和监控,可以显著降低安全风险。
更多技术分享,关注公众号:halugin
更多推荐

所有评论(0)