CentOS 从零开始的安全设置指南
一 基线准备与最小化安装
sudo yum update -y,修复已知漏洞。sudo yum install -y bash-completion net-tools wget curl vim epel-release。二 身份鉴别与账户安全
awk -F: '($3==0){print $1}' /etc/passwd),锁定或删除无用/风险账户;可清理或锁定常见默认账号如adm、lp、sync、shutdown、halt、games、ftp等。awk -F: '($2==""){print $1}' /etc/shadow,发现即强制设置合规口令。/etc/login.defs设置PASS_MAX_DAYS 90、PASS_MIN_LEN 10、PASS_WARN_AGE 14;通过PAM/pam_pwquality启用复杂度校验(长度、字符集、回退次数等)。pam_tally2或pam_faillock限制失败次数并锁定;在/etc/profile或/etc/bashrc设置TMOUT=600(10分钟无操作自动退出)。sudo组,按需授予最小权限,避免滥用NOPASSWD。chattr +i /etc/passwd /etc/shadow /etc/group /etc/gshadow),变更前务必解锁,避免运维阻塞。三 网络与防火墙
sudo systemctl start firewalld && sudo systemctl enable firewalld;默认区域设为public。firewall-cmd --reload使规则生效。
sudo firewall-cmd --permanent --zone=public --add-service=sshsudo firewall-cmd --permanent --zone=public --add-port=80/tcpfirewall-cmd --permanent --zone=public --add-source=192.168.1.0/24;必要时将默认区域设为drop以默认拒绝入站。journalctl -u firewalld查看防火墙日志,结合业务端口与来源白名单定期审计规则。四 SSH 安全加固
/etc/ssh/sshd_config):
PermitRootLogin no(禁止root直连)PasswordAuthentication no(禁用密码,强制密钥登录)PubkeyAuthentication yesAllowUsers <your_admin_user>(仅允许指定用户)Port <NEW_PORT>(可选:更改默认端口,降低自动化扫描命中)ClientAliveInterval 300、ClientAliveCountMax 0(空闲超时断开)PermitEmptyPasswords no、Banner /etc/issuesudo semanage port -a -t ssh_port_t -p tcp <NEW_PORT>;重启sshd生效。firewalld自动拉黑。五 内核 服务 与日志审计
getenforce/setenforce 1,/etc/selinux/config设为SELINUX=enforcing),仅在兼容性验证通过时才考虑放宽;按需调整内核网络防护(如net.ipv4.conf.all.log_martians=1、net.ipv4.icmp_echo_ignore_broadcasts=1等),变更前评估业务影响。rsyslog运行,配置/etc/logrotate.d/对关键日志进行按日轮转与保留;对外网开放的服务(SSH、Web)日志重点监控。/bin /sbin /usr/bin /etc /boot)基线并定期校验,及时发现篡改与后门。auditd,对/etc/passwd、/etc/shadow、sudo与SSH相关关键路径设置审计规则,留存可供取证的安全事件记录。