服务器安全加固的核心策略
服务器安全加固是运维工作的底线要求。暴露在公网的服务器每天承受数千次扫描和暴力破解尝试,默认配置的Linux系统几乎无法抵御自动化攻击。这篇文章从SSH防护、防火墙配置、内核参数和安全审计四个层面,给出一套可直接执行的加固方案。所有命令在CentOS 8/Ubuntu 22.04上验证通过。
SSH访问控制:禁用密码认证与端口混淆
SSH暴力破解是最常见的入侵方式。第一步是彻底禁用密码登录,只允许密钥认证。编辑/etc/ssh/sshd_config:
# SSH安全加固配置
Port 2222 # 修改默认端口,减少扫描命中
PermitRootLogin no # 禁止root直接登录
PasswordAuthentication no # 禁用密码认证
PubkeyAuthentication yes # 启用密钥认证
MaxAuthTries 3 # 最大认证尝试次数
LoginGraceTime 30 # 登录超时30秒
AllowUsers deploy admin # 白名单用户
ClientAliveInterval 300 # 空闲检测间隔
ClientAliveCountMax 2 # 最大空闲检测次数
修改前务必先确认密钥登录可用,否则配置生效后无法连接。生成密钥对:
ssh-keygen -t ed25519 -C "deploy@prod-server-01"
ssh-copy-id -i ~/.ssh/id_ed25519.pub -p 2222 deploy@your-server
fail2ban对未修改端口仍被扫描的情况提供额外保护,自动封禁多次失败的IP:
# /etc/fail2ban/jail.local
[sshd]
enabled = true
port = 2222
filter = sshd
logpath = /var/log/auth.log
maxretry = 3
findtime = 600
bantime = 3600
防火墙配置:iptables/nftables最小开放原则
只开放业务必需端口,其余全部DROP。使用nftables(CentOS 8+/Ubuntu 22.04+默认):
#!/usr/sbin/nft -f
table inet firewall {
chain input {
type filter hook input priority 0; policy drop;
ct state established,related accept
ct state invalid drop
iif lo accept
tcp dport 2222 accept # SSH
tcp dport {80, 443} accept # HTTP/HTTPS
icmp type echo-request limit rate 5/second accept
}
chain forward {
type filter hook forward priority 0; policy drop;
}
chain output {
type filter hook output priority 0; policy accept;
}
}
验证规则生效:nft list ruleset。策略设为drop后,任何未明确放行的入站流量都被拒绝,包括ICMP ping(已限速放行5次/秒)。
内核参数调优:网络与安全相关参数
内核/etc/sysctl.conf中的网络参数直接影响服务器抵御DDoS和网络扫描的能力:
# SYN Flood防护
net.ipv4.tcp_syncookies = 1
net.ipv4.tcp_max_syn_backlog = 8192
net.ipv4.tcp_synack_retries = 2
# 禁用ICMP重定向
net.ipv4.conf.all.accept_redirects = 0
net.ipv4.conf.all.send_redirects = 0
# 反IP欺骗
net.ipv4.conf.all.rp_filter = 1
net.ipv4.conf.default.rp_filter = 1
# 连接追踪优化
net.netfilter.nf_conntrack_max = 655360
net.netfilter.nf_conntrack_tcp_timeout_established = 7200
# 内核安全参数
kernel.kptr_restrict = 2
kernel.dmesg_restrict = 1
fs.suid_dumpable = 0
执行sysctl -p立即生效。其中tcp_syncookies在SYN队列满时启用cookie机制,避免合法连接被SYN Flood挤占。rp_filter开启反向路径过滤,丢弃源地址伪造的数据包。
安全审计与入侵检测
加固后需要持续监控。安装AIDE(Advanced Intrusion Detection Environment)建立文件完整性基线:
# 初始化AIDE数据库
aide --init
cp /var/lib/aide/aide.db.new.gz /var/lib/aide/aide.db.gz
# 每日检查脚本 /etc/cron.daily/aide-check
aide --check | mail -s "AIDE Report $(hostname)" admin@example.com
AIDE监控所有关键系统文件(/etc、/bin、/sbin、/usr)的权限、大小、哈希变化。任何被篡改的文件都会在报告中高亮。
日志方面,配置rsyslog将auth日志远程转发到日志服务器,防止入侵者清除本地日志。定期审查/var/log/secure和/var/log/auth.log中的异常登录记录,配合auditd监控系统调用级别的关键操作。
原创文章,作者:小编,如若转载,请注明出处:https://www.yunthe.com/linux-fu-wu-qi-an-quan-jia-gu-shi-cao-cong-ssh-fang-hu-dao/