1. 及时更新系统与软件
保持CentOS系统及所有软件包的最新状态是防范exploit的基础。定期使用sudo yum update或sudo dnf update命令更新系统,优先安装安全补丁(可通过sudo yum --security update命令单独更新安全补丁)。建议启用自动更新(安装yum-cron并配置/etc/yum/yum-cron.conf文件,设置apply_updates=yes和update_cmd=security),确保系统及时获取最新安全修复。
2. 强化SSH安全
SSH是远程管理的关键服务,需重点加固:
- 禁用root登录:编辑
/etc/ssh/sshd_config文件,设置PermitRootLogin no,禁止直接以root用户远程登录; - 修改默认端口:将SSH默认端口22改为不常用端口(如2222),降低被自动扫描工具发现的风险;
- 使用密钥认证:生成SSH密钥对(
ssh-keygen -t rsa),将公钥复制到服务器(ssh-copy-id user@server),禁用密码登录(PasswordAuthentication no),避免密码暴力破解。
3. 配置防火墙限制访问
使用firewalld(CentOS默认防火墙)限制不必要的网络访问:
- 开放仅必要的服务端口(如HTTP的80端口、HTTPS的443端口、SSH的22/自定义端口),通过
sudo firewall-cmd --permanent --add-service=http或--add-port=80/tcp命令添加; - 配置默认区域为
public(sudo firewall-cmd --set-default-zone=public),拒绝未明确允许的流量; - 限制特定IP访问敏感端口(如SSH),使用
sudo firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="192.168.1.100" accept'命令,仅允许指定IP访问; - 修改配置后执行
sudo firewall-cmd --reload使规则生效。
4. 启用SELinux强制访问控制
SELinux通过强制访问控制(MAC)限制进程权限,降低exploit成功后的破坏范围:
- 确保SELinux处于
enforcing模式(sudo setenforce 1),并修改/etc/selinux/config文件中的SELINUX=enforcing使其永久生效; - 根据应用需求调整SELinux策略(如允许Apache访问特定目录),避免过度严格导致服务无法运行。
5. 安装安全工具辅助防护
- Fail2Ban:防范暴力破解攻击,自动封禁多次尝试登录失败的IP。安装命令:
sudo yum install fail2ban,启动并设置开机自启:sudo systemctl enable --now fail2ban; - rkhunter:扫描系统是否存在rootkit(恶意软件),定期运行
sudo rkhunter --update && sudo rkhunter --check更新数据库并检查系统; - Auditd:记录系统审计日志,监控关键操作(如文件修改、用户登录)。安装命令:
sudo yum install audit,启动服务:sudo systemctl enable --now auditd,查看日志:sudo ausearch -m avc -ts recent。
6. 限制用户权限遵循最小权限原则
- 避免使用root账户进行日常操作,创建普通用户并通过
usermod -aG wheel username命令将其加入wheel组(可使用sudo提权); - 为用户分配完成任务所需的最小权限,定期检查用户权限(
sudo visudo查看sudoers文件,确保无过度授权); - 审查文件和目录权限(
ls -l查看),使用chmod(修改权限)和chown(修改所有者)命令确保敏感文件(如/etc/passwd、/etc/shadow)仅能被授权用户访问。
7. 监控与审计系统活动
- 启用审计守护进程(
auditd),记录关键系统活动(如用户登录、文件修改、服务启动),通过ausearch命令分析日志,及时发现异常行为; - 使用日志分析工具(如
Logwatch)汇总日志信息,定期查看(sudo systemctl enable --now logwatch),识别潜在威胁; - 定期检查系统日志(
/var/log/messages、/var/log/secure),关注异常登录(如陌生IP的SSH登录)、未授权的进程启动等迹象。
8. 定期备份重要数据
定期备份系统和重要数据(如网站文件、数据库),确保遭受exploit攻击(如勒索软件加密文件)后能快速恢复。使用rsync(增量备份)、tar(全量备份)等工具备份至安全位置(如外部存储设备、云存储),并定期测试备份的可恢复性(如模拟恢复过程)。
9. 禁用不必要的服务与端口
通过systemctl命令禁用不需要的服务(如FTP、Telnet、Samba等),减少系统的攻击面:
- 查看运行中的服务:
systemctl list-units --type=service; - 停止并禁用服务:
sudo systemctl stop servicename && sudo systemctl disable servicename; - 关闭未使用的端口(如通过
firewalld删除未使用的端口规则),避免攻击者利用开放端口发起攻击。
10. 定期进行安全审计与漏洞扫描
- 使用漏洞扫描工具(如
Nessus、OpenVAS)定期扫描系统,发现潜在漏洞(如未修复的软件漏洞、配置错误)并及时修复; - 进行渗透测试(邀请专业团队或使用自动化工具),模拟攻击场景,验证系统安全性,发现并修复未被扫描到的漏洞;
- 定期审查安全策略(如密码策略、访问控制策略),根据最新的安全威胁调整防护措施。