CentOS从零开始安全加固指南
sudo yum update -y更新系统内核及所有已安装软件包,修复已知安全漏洞。建议开启自动安全更新(如使用yum-cron),但生产环境需测试后再启用。/etc/ssh/sshd_config,将PermitRootLogin yes修改为PermitRootLogin no,禁止root用户通过SSH直接登录。修改后重启SSH服务:sudo systemctl restart sshd。admin):sudo useradd -m -G wheel admin(-G wheel将用户加入特权组),设置强密码:sudo passwd admin。编辑/etc/sudoers文件(使用visudo命令),添加admin ALL=(ALL) ALL,允许该用户通过sudo执行root权限命令。/etc/login.defs文件,设置密码有效期(PASS_MAX_DAYS 90,PASS_MIN_DAYS 2)、最小长度(PASS_MIN_LEN 10)、过期提醒(PASS_WARN_AGE 7)。同时修改PAM配置(/etc/pam.d/system-auth),添加password requisite pam_pwquality.so try_first_pass minlen=10 difok=5 dcredit=-1 lcredit=-1 ucredit=-1 ocredit=-1 enforce_for_root,要求密码包含大小写字母、数字、特殊字符中的至少三种。/etc/pam.d/su文件,添加auth required pam_wheel.so group=wheel,仅允许wheel组用户使用su切换到root,防止普通用户随意获取root权限。sudo systemctl start firewalld && sudo systemctl enable firewalld;sudo firewall-cmd --permanent --zone=public --add-port=22/tcp、sudo firewall-cmd --permanent --zone=public --add-service=http、sudo firewall-cmd --permanent --zone=public --add-service=https;sudo firewall-cmd --permanent --zone=public --add-rich-rule='rule family="ipv4" source address="192.168.1.100" port protocol="tcp" port="22" accept';sudo firewall-cmd --reload。systemctl list-unit-files --type=service列出所有服务,禁用不需要的服务(如telnet、ftp、cups(打印服务)):sudo systemctl stop <service_name> && sudo systemctl disable <service_name>,减少服务暴露的攻击面。getenforce(若返回Disabled,需修改/etc/selinux/config文件,将SELINUX=disabled改为SELINUX=enforcing);sudo setenforce 1;permissive模式(仅记录不拦截)过渡,再逐步调整为enforcing。/etc/profile文件,添加umask 027,使新创建的文件权限为644(属主可读写,组用户可读,其他用户无权限),目录权限为755(属主可读写执行,组用户可读执行,其他用户可读执行),防止未授权用户访问敏感文件。chattr命令给/etc/passwd(账号信息)、/etc/shadow(加密密码)、/etc/group(组信息)、/etc/gshadow(组加密密码)添加不可更改属性(+i),防止未授权修改:sudo chattr +i /etc/passwd /etc/shadow /etc/group /etc/gshadow。查看属性:lsattr /etc/passwd(若返回----i---------则表示锁定)。sudo yum install audit -y;sudo systemctl start auditd && sudo systemctl enable auditd;ausearch -m avc -ts recent(查看SELinux相关日志)、ausearch -ua <username>(查看指定用户的操作日志)。/etc/logrotate.conf文件,设置日志文件的最大大小(如maxsize 100M)、保留份数(如rotate 5),避免日志文件过大占用磁盘空间。也可针对特定服务(如/var/log/secure)创建自定义轮转规则。/etc/issue(本地登录显示的系统版本信息)和/etc/issue.net(远程登录显示的系统版本信息),防止攻击者通过版本信息针对性利用漏洞:sudo rm -f /etc/issue /etc/issue.net。/etc/inittab文件(CentOS 7及以上需编辑/etc/systemd/logind.conf),将ca::ctrlaltdel:/sbin/shutdown -t3 -r now行前加#注释,防止误按或恶意按该组合键导致服务器重启。ssh-keygen -t rsa -b 4096;ssh-copy-id admin@server_ip;/etc/ssh/sshd_config文件,设置PasswordAuthentication no,重启SSH服务:sudo systemctl restart sshd。