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安全配置检查清单

检查项推荐值说明
Protocol2仅使用SSH v2
PermitRootLoginno禁止root直接登录
PasswordAuthenticationno禁用密码登录
Port非22避开自动扫描
MaxAuthTries3限制认证尝试
ClientAliveInterval3005分钟超时检测
X11Forwardingno禁用图形转发
PermitEmptyPasswordsno禁止空密码

入侵检测系统

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加固只是第一步。结合入侵检测系统、实时监控和定期审计,才能构建完整的安全防线。记住,安全配置不是一劳永逸的,需要随着威胁形势的变化持续更新。