CentOS加固
一、系统安全防线
1、防火墙设置:

iptables(CentOS6及更早版本):
启动命令:service iptables start
停止命令:service iptables stop
查看状态:service iptables status
重启命令:service iptables restart
清除策略:iptables F

设置默认策略为拒绝所有传入连接,允许本地回环接口和已建立的连接。
- iptables P INPUT DROP
- iptables A INPUT i lo j ACCEPT
- iptables A INPUT m state state ESTABLISHED,RELATED j ACCEPT
firewalld(CentOS7及更高版本):
启动命令:systemctl start firewalld
关闭命令:systemctl stop firewalld
重启命令:systemctl restart firewalld
查看状态:systemctl status firewalld

设置开机自启:systemctl enable firewalld
配置规则以允许特定端口(如SSH):
- firewallcmd permanent addport=22/tcp
- firewallcmd reload
TCPWrappers程序管控:
确保仅允许特定网络访问特定服务,编辑/etc/hosts.allow
和/etc/hosts.deny
文件。
2、SELinux:
启动命令:systemctl start selinux
关闭命令:systemctl stop selinux
查看状态:sestatus
临时调整到宽容模式:setenforce 0
永久关闭SELinux:编辑/etc/selinux/config
文件,将SELINUX=enforcing
改为SELINUX=disabled
二、身份鉴别与访问控制
1、密码策略:
设置密码复杂度和过期时间,编辑/etc/login.defs
:
- PASS_MAX_DAYS 90
- PASS_MIN_DAYS 0
- PASS_WARN_AGE 7
使用chage
命令修改用户密码策略。
2、空口令账户检查:
查找空口令账户:awk F: '($2=="") && ($3!=0) {print $1}' /etc/shadow
锁定或解锁账户:passwd l|u [username]
3、root权限管理:
禁止root用户直接登录SSH,编辑/etc/ssh/sshd_config
:
- PermitRootLogin no
限制su到root的用户,编辑/etc/pam.d/su
:
- auth required pam_wheel.so group=admin
4、SSH安全加固:
更改默认端口:编辑/etc/ssh/sshd_config
中的Port参数。
禁用root登录和空密码登录,设置最大认证次数。
允许特定用户或用户组登录,通过AllowUsers或AllowGroups指令。
启用公钥认证并禁用密码认证。
三、日志与监控
1、日志记录:
确保系统日志记录全面,包括登录日志、SSH日志等。
定期检查日志文件,如/var/log/secure
、/var/log/messages
等。
2、入侵检测:
安装并配置入侵检测系统(IDS),如AIDE(Advanced Intrusion Detection Environment)。
定期扫描系统文件完整性。
四、资源控制与最小化安装
1、最小化安装:
仅安装必要的软件包和服务,减少攻击面。
使用yum
或dnf
的命令行工具进行软件管理。
2、资源限制:
使用ulimit
命令限制用户进程的资源使用量,如CPU、内存等。
配置系统资源的硬限制和软限制,编辑/etc/security/limits.conf
文件。
五、备份与恢复
1、备份策略:
定期备份重要数据和配置文件,使用tar
、rsync
等工具。
备份验证,确保备份数据的完整性和可恢复性。
存储备份于安全位置,如异地机房或云存储。
2、恢复演练:
定期进行恢复演练,确保在紧急情况下能迅速恢复系统。
记录恢复步骤和注意事项。
六、常见问题解答(FAQs)
Q1: 如何更改SSH默认端口?
A1: 编辑/etc/ssh/sshd_config
文件,找到Port
参数并设置为新的端口号,然后重启SSH服务。
Q2: 如何禁止root用户远程登录SSH?
A2: 编辑/etc/ssh/sshd_config
文件,添加或修改PermitRootLogin no
参数,然后重启SSH服务。
Q3: SELinux是什么,如何临时关闭它?
A3: SELinux是SecurityEnhanced Linux的缩写,是一种强制访问控制机制,临时关闭SELinux可以使用命令setenforce 0
。
Q4: 如何限制特定用户的最大进程数?
A4: 编辑/etc/security/limits.conf
文件,添加类似* hard nproc 100
的行来限制所有用户的最大进程数,或指定特定用户。
CentOS加固是一个持续的过程,需要管理员根据系统的实际使用情况和安全需求不断调整和完善,通过实施上述加固措施,可以显著提升CentOS系统的安全性,降低被攻击的风险,管理员也应保持对最新安全动态的关注,及时更新系统补丁和安全策略。