Linux服务器面临的安全威胁
Linux服务器是互联网基础设施的基石,全球超过96%的Web服务器运行在Linux上。然而,这也使其成为攻击者的首要目标。Crowdstrike的报告显示,2025年针对Linux系统的恶意软件数量增长了35%,其中SSH暴力破解和权限提升攻击最为普遍。
CVE-2024-6387(regreSSHion)是一个影响OpenSSH的严重漏洞,允许未经认证的远程代码执行。这类漏洞的出现再次提醒我们,SSH安全配置和系统加固的重要性。
SSH深度加固
基础配置
编辑 /etc/ssh/sshd_config:
# === 基础安全 ===
# 使用SSH协议v2
Protocol 2
# 更改默认端口
Port 58222
# 禁用root登录
PermitRootLogin no
# 禁用密码认证
PasswordAuthentication no
ChallengeResponseAuthentication no
# 启用公钥认证
PubkeyAuthentication yes
AuthorizedKeysFile .ssh/authorized_keys
# === 访问控制 ===
# 仅允许特定用户
AllowUsers admin deployer
# 或按组限制
# AllowGroups ssh-users
# 最大认证尝试次数
MaxAuthTries 3
# 最大并发未认证连接
MaxStartups 10:30:60
# === 会话安全 ===
# 客户端活动检测
ClientAliveInterval 300
ClientAliveCountMax 2
# 登录超时
LoginGraceTime 60
# 禁用X11转发
X11Forwarding no
# 禁用Agent转发
AllowAgentForwarding no
# 禁用TCP转发(除非需要SSH隧道)
AllowTcpForwarding no
# === 加密算法 ===
KexAlgorithms curve25519-sha256,[email protected]
Ciphers [email protected],[email protected],[email protected]
MACs [email protected],[email protected]
HostKeyAlgorithms ssh-ed25519,rsa-sha2-512,rsa-sha2-256
SSH密钥管理
# 生成Ed25519密钥(推荐)
ssh-keygen -t ed25519 -C "admin@server" -f ~/.ssh/id_ed25519
# 如需RSA密钥,至少4096位
ssh-keygen -t rsa -b 4096 -C "admin@server"
# 设置正确的权限
chmod 700 ~/.ssh
chmod 600 ~/.ssh/id_ed25519
chmod 644 ~/.ssh/id_ed25519.pub
chmod 600 ~/.ssh/authorized_keys
SSH安全配置检查清单
| 检查项 | 推荐值 | 说明 |
|---|---|---|
| Protocol | 2 | 仅使用SSH v2 |
| PermitRootLogin | no | 禁止root直接登录 |
| PasswordAuthentication | no | 禁用密码登录 |
| Port | 非22 | 避开自动扫描 |
| MaxAuthTries | 3 | 限制认证尝试 |
| ClientAliveInterval | 300 | 5分钟超时检测 |
| X11Forwarding | no | 禁用图形转发 |
| PermitEmptyPasswords | no | 禁止空密码 |
入侵检测系统
AIDE(高级入侵检测环境)
AIDE通过监控文件系统的完整性来检测入侵:
# 安装AIDE
sudo apt install aide -y
# 初始化数据库
sudo aideinit
sudo cp /var/lib/aide/aide.db.new /var/lib/aide/aide.db
# 运行检查
sudo aide --check
# 设置每日检查的定时任务
echo "0 4 * * * root /usr/bin/aide --check | mail -s 'AIDE Report' [email protected]" | sudo tee /etc/cron.d/aide-check
OSSEC(开源安全事件关联引擎)
OSSEC是一个功能强大的主机入侵检测系统:
# 安装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" 安装模式
# 启动OSSEC
sudo /var/ossec/bin/ossec-control start
# 检查状态
sudo /var/ossec/bin/ossec-control status
OSSEC配置关键监控项:
<!-- /var/ossec/etc/ossec.conf -->
<ossec_config>
<syscheck>
<!-- 监控关键目录 -->
<directories check_all="yes">/etc,/usr/bin,/usr/sbin</directories>
<directories check_all="yes">/bin,/sbin</directories>
<!-- 忽略频繁变化的文件 -->
<ignore>/etc/mtab</ignore>
<ignore>/etc/resolv.conf</ignore>
<!-- 检查间隔(秒) -->
<frequency>7200</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>
</ossec_config>
实时安全监控
使用auditd监控系统调用
# 安装auditd
sudo apt install auditd audispd-plugins -y
# 监控规则 /etc/audit/rules.d/security.rules
# 监控用户认证相关文件
-w /etc/passwd -p wa -k identity
-w /etc/group -p wa -k identity
-w /etc/shadow -p wa -k identity
-w /etc/sudoers -p wa -k actions
# 监控SSH配置
-w /etc/ssh/sshd_config -p wa -k sshd_config
# 监控可执行文件权限变更
-a always,exit -F arch=b64 -S chmod -S fchmod -S fchmodat -k perm_mod
# 监控网络连接
-a always,exit -F arch=b64 -S connect -k network
# 重载规则
sudo augenrules --load
# 查看审计日志
sudo ausearch -k identity --start today
sudo aureport --auth --start today
应急响应脚本
当怀疑服务器被入侵时,可以运行以下检查脚本:
#!/bin/bash
# security-check.sh - 快速安全检查脚本
echo "=== 最近登录的用户 ==="
last -n 20
echo -e "\n=== 当前登录用户 ==="
who
echo -e "\n=== 可疑的SUID文件 ==="
find / -perm -4000 -type f 2>/dev/null
echo -e "\n=== 异常的cron任务 ==="
for user in $(cut -f1 -d: /etc/passwd); do
crontab -l -u $user 2>/dev/null
done
echo -e "\n=== 异常的网络连接 ==="
ss -tlnp
echo -e "\n=== 最近修改的系统文件 ==="
find /etc -mtime -1 -type f 2>/dev/null
echo -e "\n=== 可疑进程 ==="
ps auxf | head -50
更多关于日志分析的内容请参考服务器日志审计,完整的加固清单请参考服务器安全加固清单。
总结
Linux服务器安全是一个系统工程,SSH加固只是第一步。结合入侵检测系统、实时监控和定期审计,才能构建完整的安全防线。记住,安全配置不是一劳永逸的,需要随着威胁形势的变化持续更新。