要在CentOS系统上真正抵御Exploit攻击,仅靠单一防护手段远远不够。关键在于将系统视为一个整体进行安全加固——从缩小攻击面,到阻断渗透路径,再到权限隔离与行为监控,每一个环节都必须紧密衔接。以下几条主线,足以构建一个实用的防御体系。
1. 系统加固:最小化攻击面
- 保持系统与软件更新:内核及常用软件包的漏洞是Exploit最常见的人口。定期执行
yum update或dnf update修补已知漏洞,同时可启用yum-cron实现自动更新,既省心又能抢在攻击者之前完成修补。 - 最小化安装与端口管理:安装系统时选择“最小化安装”,仅保留SSH、Web服务等必要组件。使用
systemctl list-unit-files | grep enabled查看自启服务,将FTP、邮件服务等无用项全部禁用。再通过netstat -antupl或ss -tulnp检查开放端口,对23/tcp、135/tcp等高危端口直接封堵。 - 强化密码策略:密码长度至少10位,必须包含大小写字母、数字及特殊字符。通过
/etc/login.defs配置密码有效期,例如PASS_MAX_DAYS 90、PASS_WARN_AGE 7。再使用chage命令强制用户定期更改密码,如chage -M 30 -W 7 <用户名>,避免密码长期不变导致风险累积。
2. 防火墙配置:精准控制访问
- 推荐使用
firewalld(当然iptables同样可行),仅开放必要端口:SSH的22/tcp、HTTP的80/tcp、HTTPS的443/tcp。例如,firewall-cmd --permanent --add-service=ssh添加SSH服务,然后firewall-cmd --reload使规则生效。若只想允许特定内网IP段访问SSH,可使用firewall-cmd --permanent --zone=public --add-rich-rule='rule family="ipv4" source address="192.168.1.0/24" port port="22" protocol="tcp" accept',将SSH大门仅对信任区域敞开。
3. SSH安全:阻断暴力破解入口
- 修改SSH默认配置:编辑
/etc/ssh/sshd_config,禁用root直接登录(PermitRootLogin no),更换默认端口(例如Port 2222),限制登录用户(AllowUsers your_username),最大认证次数设为3(MaxAuthTries 3)。修改后务必执行systemctl restart sshd使配置生效。 - 使用密钥认证与Fail2Ban:建议关闭密码登录(
PasswordAuthentication no),改用密钥对认证。使用ssh-keygen -t rsa生成密钥,再通过ssh-copy-id your_username@server_ip将公钥复制到服务器。随后安装fail2ban(yum install fail2ban),配置/etc/fail2ban/jail.local文件,例如对SSH服务设置maxretry = 3、bantime = 3600,自动封禁那些反复尝试密码的可疑IP地址。
4. 权限与用户管理:遵循最小权限原则
- 限制用户权限:为用户仅分配完成任务所需的最小权限,日常操作避免使用root。通过
visudo编辑sudoers文件,精细化控制命令执行,例如username ALL=(ALL) NOPASSWD: /usr/bin/systemctl restart sshd,仅允许该用户重启SSH服务。 - 清理无用账户与强化账户安全:系统自带的
adm、lp、sync等账户如无需要则删除。长期不用的账户使用passwd -l username锁定。检查空口令账户:awk -F: '$2==""' /etc/shadow,一旦发现立即设置密码。此外,/etc/passwd、/etc/shadow等敏感文件权限应改为chmod 600,防止被普通用户窥探。
5. 安全机制启用:SELinux与审计
- 启用SELinux:编辑
/etc/selinux/config,设置SELINUX=enforcing(强制模式),然后setenforce 1立即生效。使用semanage配置策略,例如允许Apache访问特定目录,这样即使某个服务被攻破,SELinux也能有效遏制恶意行为。 - 启用审计日志:启动
auditd服务(systemctl enable auditd && systemctl start auditd),使其记录用户登录、文件修改、命令执行等关键事件。定期检查/var/log/audit/audit.log,使用ausearch或aureport分析异常,例如ausearch -m a vc -ts today可查看当天SELinux拒绝的事件。
6. 监控与应急:主动发现与响应
- 日志监控与分析:重点关注
/var/log/secure(SSH登录日志)和/var/log/messages(系统日志)。使用journalctl -u sshd过滤SSH相关日志,发现异地IP或频繁失败迹象立即警觉。若日志量较大,可考虑部署ELK Stack(Elasticsearch+Logstash+Kibana),实现集中分析并实时告警。 - 入侵检测与应急响应:部署入侵检测系统,如Snort或Dragon Squire,实时监控网络流量,端口扫描、SQL注入等恶意活动均可被识别。同时准备一套应急流程:发现攻击后立即隔离受感染主机(断网)、收集日志与流量记录作为证据、修补漏洞(更新系统、删除恶意文件)、从备份中恢复数据。
7. 数据保护:备份与恢复
- 定期备份关键数据。使用
rsync -a v /path/to/source /path/to/destination同步目录,或使用tar -czvf backup.tar.gz /path/to/data打包压缩。系统配置、数据库、用户数据均不可遗漏。备份文件应存储于独立的安全位置,如异地服务器或云存储,这样即使遭遇勒索软件,也能快速恢复,避免陷入被动。
