Linux服务器安全加固实战:SSH防护、防火墙规则与账户策略配置

暴露在公网的Linux服务器,上线后数小时内就会开始收到端口扫描和SSH爆破请求。多数入侵事件不是因为攻击手段高明,而是默认配置留下的口子:root直接登录、密码认证开着、防火墙全放行。服务器安全加固的核心思路是收缩攻击面,按SSH服务、防火墙、账户策略三个层面逐一收紧。

SSH服务安全加固:密钥登录与fail2ban防爆破

编辑 /etc/ssh/sshd_config,做以下修改:

Port 58222                          # 改用高位非默认端口,避开批量扫描
PermitRootLogin no                  # 禁止root远程登录
PasswordAuthentication no           # 仅允许密钥认证
PubkeyAuthentication yes
MaxAuthTries 3
AllowUsers deploy                   # 白名单限定可登录账户

修改前先确认密钥登录可用,另开一个终端保持连接测试新会话,避免把自己锁在门外。确认无误后重载配置:

sudo systemctl reload sshd

密钥认证之外,配合fail2ban处理残余的爆破尝试, jail.local中配置:

[sshd]
enabled = true
maxretry = 5
findtime = 600
bantime = 3600

防火墙最小开放原则:ufw与firewalld配置

Ubuntu/Debian用ufw:

sudo ufw default deny incoming
sudo ufw default allow outgoing
sudo ufw allow 58222/tcp    # SSH新端口
sudo ufw allow 80,443/tcp   # Web端口
sudo ufw enable

CentOS/RHEL用firewalld:

sudo firewall-cmd --permanent --add-service=http
sudo firewall-cmd --permanent --add-service=https
sudo firewall-cmd --permanent --add-port=58222/tcp
sudo firewall-cmd --reload

云服务器还要检查安全组规则,主机防火墙与云安全组叠加生效,只改一处不等于收口。数据库、缓存、消息队列端口一律不对公网开放,跨机访问走内网或VPN。

账户与口令策略:从源头消除弱口令

先清理账户:锁定长期不用的系统账户,检查uid为0的非root账户:

sudo usermod -L olduser                  # 锁定账户
awk -F: '$3==0 {print $1}' /etc/passwd   # 检查root等价账户

口令复杂度通过pam_pwquality强制,编辑 /etc/security/pwquality.conf:

minlen = 12
minclass = 3
maxrepeat = 2

日常管理权限统一收敛到sudo,只给指定账户授予白名单命令,避免直接共享root密码;离职和转岗账户当天回收,纳入交接清单。

登录审计与入侵痕迹排查

定期检查登录记录:

last          # 成功登录历史
lastb         # 失败登录记录(爆破痕迹)
grep "Failed password" /var/log/auth.log | wc -l

关键文件变动用auditd监控,例如审计 /etc/passwd 的写操作:

sudo auditctl -w /etc/passwd -p wa -k identity_change
sudo ausearch -k identity_change | tail -20

发现异常登录IP后,按进程、计划任务(crontab -l、/etc/cron.*)、SSH authorized_keys三处排查,多数入侵会在这三处留下持久化后门。

自动化基线检查:lynis定期体检

手工加固完成后,用lynis做一次基线扫描,输出按警告级别排序的改进项:

sudo apt install lynis    # 或 yum install lynis
sudo lynis audit system

关注输出中的warning和suggestion,逐项处理。安全加固不是一次性任务,新开端口、新增账户、升级组件时都要同步更新防火墙规则和审计范围,把基线检查纳入月度例行。

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

(0)
小编小编
上一篇 2026年9月2日
下一篇 2026年9月2日

相关推荐

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)
小编小编
上一篇 2026年7月28日
下一篇 2026年7月28日

相关推荐