Linux安全加固:系统安全最佳实践
Linux安全加固:系统安全最佳实践
安全加固概述
系统安全加固是通过一系列配置和措施,减少系统受攻击面的过程。运维工程师需要从账户、文件、网络、审计等多个层面进行加固。
账户安全
密码策略
# 配置密码复杂度
cat /etc/security/pwquality.conf
# minlen = 12
# dcredit = -1 (至少1个数字)
# ucredit = -1 (至少1个大写字母)
# lcredit = -1 (至少1个小写字母)
# ocredit = -1 (至少1个特殊字符)
# 密码过期策略
cat /etc/login.defs
PASS_MAX_DAYS 90
PASS_MIN_DAYS 7
PASS_WARN_AGE 14
账户锁定
# 配置登录失败锁定
cat /etc/pam.d/system-auth
auth required pam_faillock.so preauth deny=5 unlock_time=900
# 查看锁定账户
sudo faillock --user username
sudo faillock --user username --reset
# 禁用无用账户
sudo usermod -s /sbin/nologin nobody
SSH安全
# /etc/ssh/sshd_config
Port 2222
PermitRootLogin no
PasswordAuthentication no
PubkeyAuthentication yes
MaxAuthTries 3
AllowUsers deploy admin
# 重启SSH服务
sudo systemctl restart sshd
文件系统安全
权限加固
# 查找SUID文件
find / -perm -4000 -type f 2>/dev/null
# 查找SGID文件
find / -perm -2000 -type f 2>/dev/null
# 移除不必要的SUID
sudo chmod u-s /usr/bin/newgrp
# 设置umask
echo "umask 027" >> /etc/profile
关键文件保护
# 设置关键文件权限
sudo chmod 600 /etc/shadow
sudo chmod 644 /etc/passwd
sudo chmod 600 /etc/ssh/sshd_config
# 文件完整性检查
sudo aide --init
sudo mv /var/lib/aide/aide.db.new.gz /var/lib/aide/aide.db.gz
sudo aide --check
网络安全
防火墙配置
# firewalld配置
sudo firewall-cmd --permanent --add-port=2222/tcp
sudo firewall-cmd --permanent --remove-service=ssh
sudo firewall-cmd --reload
# 查看规则
sudo firewall-cmd --list-all
网络参数加固
# /etc/sysctl.conf
net.ipv4.conf.all.rp_filter = 1
net.ipv4.conf.all.accept_redirects = 0
net.ipv4.conf.all.send_redirects = 0
net.ipv4.icmp_echo_ignore_broadcasts = 1
net.ipv4.conf.all.log_martians = 1
sudo sysctl -p
审计与监控
auditd审计系统
# 安装auditd
sudo yum install audit
# 监控关键文件
sudo auditctl -w /etc/passwd -p wa -k passwd_changes
sudo auditctl -w /etc/shadow -p wa -k shadow_changes
sudo auditctl -w /etc/sudoers -p wa -k sudoers_changes
# 查看审计日志
sudo ausearch -k passwd_changes
sudo aureport --summary
日志监控
# 实时监控登录日志
tail -f /var/log/secure
# 查看失败登录
grep "Failed password" /var/log/secure | awk '{print $11}' | sort | uniq -c | sort -rn
# 配置rsyslog集中日志
cat >> /etc/rsyslog.conf << EOF
auth,authpriv.* /var/log/auth.log
*.emerg :omusrmsg:*
EOF
入侵检测
rkhunter Rootkit检测
# 安装rkhunter
sudo yum install rkhunter
# 更新数据库
sudo rkhunter --update
# 扫描系统
sudo rkhunter --check --skip-keypress
ClamAV病毒扫描
# 安装ClamAV
sudo yum install clamav clamav-update
# 更新病毒库
sudo freshclam
# 扫描文件
sudo clamscan -r /home
sudo clamscan -r /var/www
安全审计脚本
#!/bin/bash
cat > /tmp/security_audit.sh << 'EOF'
echo "=== 安全审计报告 ==="
echo "--- 系统信息 ---"
uname -a
echo "--- 运行时间 ---"
uptime
echo "--- 登录用户 ---"
w
echo "--- 最近登录 ---"
last -10
echo "--- SUID文件 ---"
find / -perm -4000 -type f 2>/dev/null | wc -l
echo "--- 开放端口 ---"
ss -tlnp | grep LISTEN
echo "--- 防火墙状态 ---"
sudo iptables -L -n 2>/dev/null | head -5
EOF
chmod +x /tmp/security_audit.sh
安全加固清单
# 1. 更新系统
sudo yum update -y
# 2. 配置自动更新
sudo yum install yum-cron
sudo systemctl enable --now yum-cron
# 3. 检查开放端口
ss -tlnp
# 4. 审查用户账户
cat /etc/passwd | awk -F: '$3>=1000 {print $1}'
# 5. 检查cron任务
for user in $(cut -f1 -d: /etc/passwd); do
echo "=== $user ==="
crontab -l -u $user 2>/dev/null
done
总结
Linux安全加固是一个持续的过程。建议建立安全基线,定期进行安全审计,及时发现和修复安全隐患。