服务器安全加固是运维工作的基础环节。未经过安全配置的Linux服务器面临SSH暴力破解、权限提升、数据泄露等多重风险。本文整理了一套完整的Linux服务器安全加固清单,涵盖SSH配置、防火墙规则、用户权限管理、内核参数调优和日志审计五个维度,可直接用于生产环境基线检查。
SSH服务安全配置
SSH是服务器远程管理的核心通道,默认配置存在多个安全隐患。生产环境中必须对sshd_config进行加固,关闭不安全的认证方式,限制root直接登录。
修改/etc/ssh/sshd_config,应用以下配置:
# 禁止root直接登录
PermitRootLogin no
# 禁止密码认证,仅允许密钥登录
PasswordAuthentication no
PubkeyAuthentication yes
# 修改默认端口
Port 22022
# 限制登录用户
AllowUsers deploy admin
# 空闲超时自动断开
ClientAliveInterval 300
ClientAliveCountMax 0
# 限制最大认证尝试次数
MaxAuthTries 3
# 禁止X11转发
X11Forwarding no
配置完成后执行systemctl restart sshd使配置生效。修改SSH端口后,需要同步更新防火墙规则,避免管理连接中断。建议在修改SSH配置前保持一个已登录的会话,防止配置错误导致无法远程连接。
防火墙规则与端口管控
firewalld是CentOS/RHEL系统的默认防火墙管理工具,相比直接操作iptables,提供了更便捷的区域管理能力。服务器安全加固的核心原则是最小端口开放——仅暴露业务必需端口。
# 查看当前开放端口
firewall-cmd --list-all
# 放行业务端口(如Web服务)
firewall-cmd --permanent --add-port=80/tcp
firewall-cmd --permanent --add-port=443/tcp
# 限制SSH端口仅允许管理网段访问
firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="10.0.1.0/24" port port="22022" protocol="tcp" accept'
# 移除默认的SSH服务(防止端口22被扫描)
firewall-cmd --permanent --remove-service=ssh
# 重新加载防火墙
firewall-cmd --reload
对于UDP端口,同样使用–add-port参数指定protocol为udp。建议定期执行firewall-cmd –list-all审计防火墙规则,清理不再使用的端口放行规则。
用户权限与sudo管理
系统默认的权限分配往往过于宽松。安全加固要求遵循最小权限原则,普通用户仅授予完成工作所需的最低权限。sudo权限的分配需要精确到命令级别。
# 创建专用部署用户
useradd -m -s /bin/bash deploy
passwd deploy
# 配置sudo权限(仅允许特定命令)
visudo
# 添加以下内容
deploy ALL=(ALL) /usr/bin/systemctl restart nginx
deploy ALL=(ALL) /usr/bin/systemctl reload nginx
deploy ALL=(ALL) /bin/journalctl -u nginx
关键目录权限设置:
# 设置关键系统目录权限
chmod 700 /root
chmod 700 /etc/ssh
chmod 644 /etc/passwd
chmod 640 /etc/shadow
chmod 750 /home/deploy
# 查找SUID/SGID文件(潜在提权风险)
find / -perm -4000 -type f 2>/dev/null
find / -perm -2000 -type f 2>/dev/null
# 移除不必要的SUID权限
chmod u-s /usr/bin/chage
chmod u-s /usr/bin/chfn
chmod u-s /usr/bin/chsh
内核参数安全调优
Linux内核默认参数针对通用场景优化,服务器安全加固需要调整部分网络相关参数,增强对SYN Flood、IP欺骗等网络攻击的防护能力。
# 编辑/etc/sysctl.conf,添加以下参数
# 开启SYN Cookie防护
net.ipv4.tcp_syncookies = 1
# 减少SYN-ACK重试次数
net.ipv4.tcp_synack_retries = 2
# 增加SYN队列长度
net.ipv4.tcp_max_syn_backlog = 65535
# 开启反向路径过滤
net.ipv4.conf.all.rp_filter = 1
# 禁止ICMP重定向
net.ipv4.conf.all.accept_redirects = 0
net.ipv4.conf.all.send_redirects = 0
# 禁止源路由
net.ipv4.conf.all.accept_source_route = 0
# 忽略ICMP广播请求(防止Smurf攻击)
net.ipv4.icmp_echo_ignore_broadcasts = 1
# 应用配置
sysctl -p
日志审计与入侵检测
auditd是Linux内核级的审计框架,能够记录系统调用级别的操作行为。合理配置审计规则,可以在安全事件发生后快速定位攻击路径。
# 安装auditd
yum install audit -y
systemctl enable auditd
systemctl start auditd
# 添加审计规则
# 监控/etc/passwd文件修改
auditctl -w /etc/passwd -p wa -k identity
# 监控sudoers文件修改
auditctl -w /etc/sudoers -p wa -k sudoers
# 监控SSH配置文件修改
auditctl -w /etc/ssh/sshd_config -p wa -k ssh_config
# 监控登录相关命令执行
auditctl -w /bin/login -p x -k login
auditctl -w /bin/su -p x -k privilege
# 查看审计日志
ausearch -k identity
aureport --summary
对于关键业务服务器,建议部署AIDE(Advanced Intrusion Detection Environment)进行文件完整性监控。AIDE通过计算文件哈希值建立基线数据库,定期比对检测文件篡改行为。
# 安装AIDE
yum install aide -y
# 初始化数据库
aide --init
# 将生成的数据库设为基线
mv /var/lib/aide/aide.db.new.gz /var/lib/aide/aide.db.gz
# 执行完整性检查
aide --check
安全加固不是一次性工作,需要定期执行基线检查、更新审计规则、review防火墙策略。建议将安全检查脚本加入crontab,每周自动执行并生成报告,对异常变更及时告警处理。
原创文章,作者:小编,如若转载,请注明出处:https://www.yunthe.com/linux-fu-wu-qi-an-quan-jia-gu-shi-zhan-ji-xian-jian-cha-yu/