Linux服务器安全加固实战:SSH防护、防火墙策略与入侵检测全流程配置

服务器安全加固为什么不能只靠防火墙

服务器上线第一天就遭遇SSH暴力破解,这种事在公网环境里每分钟都在发生。防火墙只是第一道门,真正的安全加固是从SSH访问控制、系统内核参数、文件权限到入侵检测的多层防御体系。一台暴露在公网的Linux服务器,如果只配了防火墙规则而忽略SSH和内核层面的加固,等于大门上了锁但窗户敞着。

这篇指南覆盖Linux服务器安全加固的核心环节,每个配置项附带实际操作命令和验证方法。

SSH防护:从默认配置到强制密钥认证

SSH是服务器最常用的远程管理通道,也是攻击者最常尝试的入口。默认配置下SSH允许密码登录、允许root直接登录、使用默认22端口——三个风险点同时暴露。

修改SSH配置/etc/ssh/sshd_config

# 禁用密码认证,强制密钥登录
PasswordAuthentication no
PubkeyAuthentication yes

# 禁止root直接登录
PermitRootLogin no

# 修改默认端口(减少自动化扫描命中概率)
Port 29722

# 限制登录尝试次数
MaxAuthTries 3

# 设置登录超时
LoginGraceTime 30

# 禁用空密码
PermitEmptyPasswords no

# 只允许特定用户组登录
AllowGroups ssh-users

生成密钥对并部署公钥:

# 客户端生成4096位RSA密钥
ssh-keygen -t rsa -b 4096 -C "admin@yunthe.com"

# 将公钥部署到服务器
ssh-copy-id -i ~/.ssh/id_rsa.pub -p 29722 deploy@server-ip

# 验证密钥登录生效后再禁用密码认证
# 重要:先测试密钥登录能成功,再重启sshd
sudo systemctl restart sshd

fail2ban配置防止暴力破解:

sudo apt install fail2ban -y

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

3次失败尝试后封禁IP 1小时,findtime窗口10分钟。封禁记录在/var/log/fail2ban.log中查看,fail2ban-client status sshd查看当前封禁列表。

防火墙策略:iptables/nftables最小化暴露面

防火墙的核心原则是最小化暴露——只开放业务必需的端口,其余全DROP。不要用REJECTDROP不回包,攻击者无法探测端口存活状态。

nftables配置示例(Ubuntu 22.04+推荐):

#!/sbin/nft -f

table inet firewall {
  chain input {
    type filter hook input priority 0; policy drop;

    # 允许已建立的连接
    ct state established,related accept

    # 允许loopback
    iif lo accept

    # 允许ICMP(限制速率)
    icmp type echo-request limit rate 5/second accept

    # SSH端口
    tcp dport 29722 accept

    # HTTP/HTTPS
    tcp dport {80, 443} accept

    # 内网管理端口(仅允许管理网段)
    ip saddr 10.0.0.0/8 tcp dport 9090 accept
  }

  chain forward {
    type filter hook forward priority 0; policy drop;
  }

  chain output {
    type filter hook output priority 0; policy accept;
  }
}

加载并持久化规则:

sudo nft -f /etc/nftables/firewall.nft
sudo nft list ruleset  # 验证规则已加载

# 持久化
sudo systemctl enable nftables

内核参数加固:sysctl安全调优

内核参数直接影响网络栈行为,是防火墙之外的第二层防护。

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

# 禁用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

# SYN flood防护
net.ipv4.tcp_syncookies = 1
net.ipv4.tcp_max_syn_backlog = 2048
net.ipv4.tcp_synack_retries = 2

# 禁用SUID和core dump
fs.suid_dumpable = 0

# 限制ptrace(反调试)
kernel.yama.ptrace_scope = 2

# 隐藏内核指针
kernel.kptr_restrict = 2

应用配置:sudo sysctl --system

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

安全加固不是一次性动作,需要持续监控。OSSEC是一款开源的主机入侵检测系统(HIDS),核心能力是文件完整性校验和日志分析。

安装OSSEC:

wget https://github.com/ossec/ossec-hids/archive/3.7.0.tar.gz
tar -xzf 3.7.0.tar.gz
cd ossec-hids-3.7.0
sudo ./install.sh
# 选择local安装模式

关键文件监控配置/var/ossec/etc/ossec.conf

<syscheck>
  # 系统二进制文件监控
  <directories check_all="yes">/usr/bin,/usr/sbin,/bin,/sbin</directories>

  # 配置文件监控
  <directories check_all="yes">/etc</directories>

  # Web目录监控
  <directories check_all="yes">/var/www/html</directories>

  # 忽略临时文件
  <ignore>/etc/mtab</ignore>
  <ignore>/etc/mnttab</ignore>
  <ignore>/var/log</ignore>

  # 每小时扫描一次
  <frequency>3600</frequency>
</syscheck>

根用户监控配置:

<rootcheck>
  <rootkit_files>/var/ossec/etc/shared/rootkit_files.txt</rootkit_files>
  <rootkit_trojans>/var/ossec/etc/shared/rootkit_trojans.txt</rootkit_trojans>
</rootcheck>

服务器安全加固审计与验证

加固完成后需要系统化验证,不是手工逐项核对,而是用自动化审计工具。

Lynis是最常用的Linux安全审计工具:

sudo apt install lynis -y
sudo lynis audit system

# 输出报告在 /var/log/lynis.log
# 关注 [WARNING] 和 [SUGGESTION] 条目
# 评分在 /var/log/lynis-report.dat 的 audit_score 字段

CIS Benchmark是行业公认的安全基线标准,针对不同Linux发行版提供详细配置清单。加固结果对标CIS Benchmark,确保覆盖面不遗漏。

服务器安全加固是持续性工作——系统上线前做一遍基线加固,运行中定期审计和漏洞扫描,收到告警及时响应。三层防御(SSH访问控制+防火墙+入侵检测)的思路不变,具体配置随业务场景调整。

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

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

相关推荐