Linux服务器安全加固实战:SSH防护、内核调优与入侵检测全流程

服务器安全加固为什么是上线前必做项

裸机或云服务器交付后默认配置几乎无法抵抗自动化扫描攻击。2026年公开威胁情报显示,一台暴露SSH 22端口的Linux服务器平均在4分钟内就会被暴力破解工具锁定。安全加固不是可选项,是上线前的硬性要求。下面按攻击面顺序,从网络层到内核层逐项加固。

SSH访问防护:禁用密码登录与密钥管理

SSH暴力破解占服务器入侵事件的67%。加固的第一步:

# /etc/ssh/sshd_config 修改以下配置
Port 29722                          # 改掉默认端口
PermitRootLogin no                  # 禁止root直接登录
PasswordAuthentication no           # 禁用密码认证
PubkeyAuthentication yes            # 仅允许密钥登录
MaxAuthTries 3                      # 最多3次认证尝试
LoginGraceTime 30                   # 30秒内完成认证
AllowUsers deploy admin@10.0.0.0/8  # 限制用户和来源IP

密钥生成与分发:

# 本地生成Ed25519密钥(比RSA更短更安全)
ssh-keygen -t ed25519 -C "deploy@prod-01" -f ~/.ssh/prod_ed25519

# 将公钥推送到服务器
ssh-copy-id -i ~/.ssh/prod_ed25519.pub -p 29722 deploy@1.2.3.4

Ed25519密钥仅68字符,比3072位RSA的544字符短很多,认证速度也快3倍。

防火墙配置:只放行必要端口

用iptables或nftables做白名单策略:

# nftables规则示例
nft flush ruleset

table inet filter {
    chain input {
        type filter hook input priority 0; policy drop;
        
        # 已建立连接放行
        ct state established,related accept
        
        # 回环接口
        iif lo accept
        
        # SSH只允许办公网段
        ip saddr 10.0.0.0/8 tcp dport 29722 accept
        
        # HTTP/HTTPS
        tcp dport { 80, 443 } accept
        
        # ICMP限速放行
        icmp type echo-request limit rate 5/second accept
        
        # 记录丢弃包
        log prefix "nft-drop: " drop
    }
}

所有未明确放行的流量默认DROP。SSH端口只对管理网段开放,公网完全不可达。

内核参数安全调优

sysctl内核参数调整,防SYN Flood、IP欺骗等网络层攻击:

# /etc/sysctl.d/99-security.conf

# SYN Flood防护
net.ipv4.tcp_syncookies = 1
net.ipv4.tcp_max_syn_backlog = 8192
net.ipv4.tcp_synack_retries = 2

# 禁用IP转发和源路由
net.ipv4.ip_forward = 0
net.ipv4.conf.all.accept_source_route = 0
net.ipv4.conf.default.accept_source_route = 0

# 反向路径过滤
net.ipv4.conf.all.rp_filter = 1
net.ipv4.conf.default.rp_filter = 1

# 禁用ICMP重定向
net.ipv4.conf.all.accept_redirects = 0
net.ipv4.conf.default.accept_redirects = 0
net.ipv4.conf.all.send_redirects = 0

# 连接跟踪调优
net.netfilter.nf_conntrack_max = 524288
net.netfilter.nf_conntrack_tcp_timeout_established = 7200

生效:sysctl --system

文件系统与权限加固

关键目录权限收紧:

# /etc/passwd /etc/shadow 权限
chmod 644 /etc/passwd
chmod 600 /etc/shadow

# 禁止SUID滥用,查找所有SUID文件
find / -perm -4000 -type f 2>/dev/null

# 移除不必要的SUID权限
chmod u-s /usr/bin/chsh /usr/bin/chfn /usr/bin/gpasswd
chmod u-s /usr/bin/newgrp /usr/bin/passwd

# /tmp分区noexec选项(编辑/etc/fstab)
# /tmp ext4 defaults,nosuid,nodev,noexec 0 0

攻击者提权时经常利用SUID二进制文件。去掉chshchfn等非必要SUID后,即使拿到普通用户shell也无法通过这些路径提权。

入侵检测:AIDE文件完整性监控

AIDE(Advanced Intrusion Detection Environment)定期扫描文件系统,对比哈希值发现篡改:

# 安装
apt install aide   # Debian/Ubuntu
yum install aide   # CentOS

# 初始化数据库
aideinit
cp /var/lib/aide/aide.db.new /var/lib/aide/aide.db

# 每日检查cron
cat > /etc/cron.daily/aide-check << 'EOF'
#!/bin/bash
aide --update > /var/log/aide/diff-$(date +%Y%m%d).log 2>&1
cp /var/lib/aide/aide.db.new /var/lib/aide/aide.db
# 发现变更发告警
grep -q "changed entries" /var/log/aide/diff-$(date +%Y%m%d).log &&   mail -s "AIDE Alert" admin@example.com < /var/log/aide/diff-$(date +%Y%m%d).log
EOF
chmod +x /etc/cron.daily/aide-check

Fail2Ban自动封禁暴力破解IP

# /etc/fail2ban/jail.local
[sshd]
enabled = true
port = 29722
filter = sshd
logpath = /var/log/auth.log
maxretry = 3
findtime = 600
bantime = 86400
action = iptables-multiport[name=sshd, port="29722", protocol=tcp]

3次失败尝试即封IP 24小时。配合修改过的SSH端口,暴力破解流量基本被拦截。

自动安全审计与合规检查

lynis做一键安全审计:

apt install lynis
lynis audit system --quick

Lynis输出100+检查项的评分和修复建议。重点关注BOOT-5122(GRUB密码)、AUTH-9228(密码强度策略)、FIRE-4512(防火墙状态)。每次加固后跑一遍,确认关键项全部通过。

安全加固没有终点,定期更新内核补丁、审计异常登录、review防火墙规则,形成闭环运维习惯。

原创文章,作者:小编,如若转载,请注明出处:https://www.yunthe.com/linux-fu-wu-qi-an-quan-jia-gu-shi-zhan-ssh-fang-hu-nei-he/

(0)
小编小编
上一篇 7小时前
下一篇 7小时前

相关推荐