服务器linux操作系统安全加固
一、系统更新与补丁管理
更新系统
sudo yum update -y # 更新所有软件包
sudo yum install epel-release -y # 安装EPEL扩展源
启用自动安全更新
sudo yum install yum-cron -y
sudo systemctl enable yum-cron
sudo systemctl start yum-cron
配置 /etc/yum/yum-cron.conf,设置 update_cmd = security 和 apply_updates = yes。
二、账户与权限安全
禁用root远程登录
编辑 /etc/ssh/sshd_config:
PermitRootLogin no
创建普通用户并赋予sudo权限
bash
复制
useradd admin
passwd admin
usermod -aG wheel admin # 加入sudo组
限制sudo权限
编辑 /etc/sudoers,限制用户仅能执行必要命令:
admin ALL=(ALL) /usr/bin/systemctl restart nginx, /usr/sbin/reboot
密码策略强化
修改 /etc/login.defs:
PASS_MAX_DAYS 90
PASS_MIN_DAYS 1
PASS_MIN_LEN 12
PASS_WARN_AGE 7
安装密码复杂度检查模块:
sudo yum install cracklib
sudo vi /etc/pam.d/system-auth # 添加 `minlen=12 difok=3 ucredit=-1 lcredit=-1 dcredit=-1`
三、SSH 安全加固
修改SSH默认端口
编辑 /etc/ssh/sshd_config:
Port 2222 # 改为非标准端口(如2222)
仅允许密钥登录
PasswordAuthentication no
PubkeyAuthentication yes
限制SSH访问IP
AllowUsers admin@192.168.1.0/24 # 仅允许特定IP段的用户登录
重启SSH服务
sudo systemctl restart sshd
四、防火墙与网络防护
启用firewalld
sudo systemctl enable firewalld
sudo systemctl start firewalld
配置防火墙规则
sudo firewall-cmd --permanent --add-port=2222/tcp # 放行SSH端口
sudo firewall-cmd --permanent --remove-service=ssh # 删除默认SSH端口
sudo firewall-cmd --reload
禁用ICMP重定向
编辑 /etc/sysctl.conf:
net.ipv4.conf.all.accept_redirects = 0
net.ipv4.conf.default.accept_redirects = 0
net.ipv6.conf.all.accept_redirects = 0
net.ipv6.conf.default.accept_redirects = 0
sudo sysctl -p # 生效配置
五、SELinux 强化
启用SELinux
编辑 /etc/selinux/config:
SELINUX=enforcing
SELINUXTYPE=targeted
sudo setenforce 1 # 临时生效
管理SELinux策略
sudo yum install setroubleshoot setools -y # 安装管理工具
sudo audit2allow -a -M mypolicy # 根据日志生成自定义策略
六、服务与进程管理
关闭无用服务
sudo systemctl stop bluetooth cups avahi-daemon
sudo systemctl disable bluetooth cups avahi-daemon
使用最小化安装
sudo yum install @minimal # 仅安装必需软件包
监控进程与端口
sudo netstat -tulnp | grep LISTEN # 检查开放端口
sudo ps aux | grep可疑进程名
七、文件系统与权限加固
关键文件权限设置
sudo chmod 600 /etc/passwd /etc/shadow # 仅root可读写
sudo chattr +i /etc/passwd /etc/shadow # 防止文件被修改
禁用SUID/SGID
find / -perm /4000 -exec ls -l {} \; # 查找SUID文件
find / -perm /2000 -exec ls -l {} \; # 查找SGID文件
# 移除不必要的SUID/SGID权限(如chmod u-s /path/to/file)
挂载选项加固
编辑 /etc/fstab,为分区添加 noexec,nosuid 选项:
/dev/sda1 /boot xfs defaults,noexec,nosuid 0 0
八、日志与审计
启用审计服务
sudo systemctl enable auditd
sudo systemctl start auditd
配置审计规则
编辑 /etc/audit/rules.d/audit.rules,添加以下规则:
-a always,exit -F arch=b64 -S execve -k process_trace # 跟踪进程执行
-w /etc/passwd -p wa -k user_accounts # 监控用户账户变更
日志轮转与备份
配置 /etc/logrotate.conf,确保日志定期压缩和清理。
九、入侵检测与防护
安装Fail2ban防暴力破解
sudo yum install fail2ban
sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
编辑 /etc/fail2ban/jail.local,设置SSH防护:
[sshd]
enabled = true
port = 2222 # 与SSH端口一致
maxretry = 3
使用Rootkit检测工具
sudo yum install rkhunter
sudo rkhunter --check --sk
十、其他高级防护
内核参数调优
编辑 /etc/sysctl.conf,添加以下内容:
net.ipv4.tcp_syncookies = 1
net.ipv4.conf.all.rp_filter = 1
kernel.kptr_restrict = 1
kernel.dmesg_restrict = 1
配置历史命令安全
echo 'export HISTTIMEFORMAT="%F %T "' >> ~/.bashrc # 记录时间戳
echo 'export HISTSIZE=10000' >> ~/.bashrc # 保留更多历史记录
echo 'export HISTCONTROL=ignoreboth' >> ~/.bashrc # 忽略重复命令和空格开头的命令
十一、验证与监控
安全扫描工具
使用 Lynis 进行系统审计:
sudo yum install lynis
sudo lynis audit system
使用 OpenSCAP 扫描合规性:
sudo yum install openscap-scanner scap-security-guide
sudo oscap xccdf eval --profile stig-rhel7-disa --results scan.xml /usr/share/xml/scap/ssg/content/ssg-centos7-ds.xml
定期备份与恢复测试
sudo tar -czvf /backup/system_backup_$(date +%F).tar.gz /etc /var/log
注意事项
测试环境验证:所有配置先在测试环境验证,避免影响生产服务。
备份配置文件:修改关键文件前备份(如 cp /etc/ssh/sshd_config{,.bak})。
监控与告警:部署监控工具(如Prometheus + Grafana)实时跟踪系统状态。