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

服务器安全加固的整体思路

服务器安全加固不是安装几个工具就能完成的,而是从网络层、系统层、应用层逐级设防的体系工程。IDC数据中心中暴露在公网的服务器,每天承受数千次扫描和暴力破解尝试,仅靠防火墙白名单远远不够。服务器运维中,安全加固必须覆盖SSH访问控制、内核网络参数、文件完整性监控、进程审计四个层面。

SSH暴力破解防护配置

SSH是服务器被攻击的首要入口。默认22端口、root直接登录、密码认证三重风险叠加,是入侵事件的主要诱因。完整加固步骤如下:

# 1. 修改SSH默认端口(降低扫描命中率)
Port 29722

# 2. 禁止root直接登录
PermitRootLogin no

# 3. 仅允许密钥认证,关闭密码登录
PasswordAuthentication no
PubkeyAuthentication yes

# 4. 限制可登录用户
AllowUsers deploy ops

# 5. 登录超时与重试限制
LoginGraceTime 30
MaxAuthTries 3
MaxSessions 5

# 6. 禁用空密码和无用认证方式
PermitEmptyPasswords no
ChallengeResponseAuthentication no
KerberosAuthentication no
GSSAPIAuthentication no

配置完成后重启sshd服务前务必保留一个已连接的会话,防止配置错误锁死服务器:

# 检查配置语法
sshd -t

# 仅在语法检查通过后重启
systemctl restart sshd

Fail2Ban自动封禁配置

SSH端口修改只能降低扫描频率,无法阻止针对性攻击。Fail2Ban通过分析认证日志自动封禁异常IP,是服务器故障排查和安全加固的标配工具:

# 安装Fail2Ban
apt install fail2ban -y   # Debian/Ubuntu
yum install fail2ban -y   # CentOS

# 创建本地配置
cat > /etc/fail2ban/jail.local << 'EOF'
[DEFAULT]
bantime = 86400
findtime = 600
maxretry = 3
banaction = iptables-multiport

[sshd]
enabled = true
port = 29722
filter = sshd
logpath = /var/log/auth.log
maxretry = 3
bantime = 86400
EOF

systemctl enable fail2ban
systemctl start fail2ban

内核网络参数加固

Linux内核默认网络参数面向通用场景,对公网服务器存在多项安全隐患。以下参数需写入/etc/sysctl.conf并执行sysctl -p生效:

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

# 禁用ICMP重定向(防中间人攻击)
net.ipv4.conf.all.accept_redirects = 0
net.ipv4.conf.all.send_redirects = 0
net.ipv6.conf.all.accept_redirects = 0

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

# 反向路径过滤(防IP欺骗)
net.ipv4.conf.all.rp_filter = 1
net.ipv4.conf.default.rp_filter = 1

# 连接跟踪优化
net.netfilter.nf_conntrack_max = 1048576
net.netfilter.nf_conntrack_tcp_timeout_established = 7200

# TIME_WAIT优化
net.ipv4.tcp_max_tw_buckets = 32768
net.ipv4.tcp_tw_reuse = 1

文件完整性监控:AIDE部署

入侵者获取root权限后通常会替换系统二进制文件植入后门。AIDE(Advanced Intrusion Detection Environment)通过数据库比对检测文件篡改:

# 安装AIDE
apt install aide -y

# 初始化数据库
aideinit

# 将初始数据库复制为比对基准
cp /var/lib/aide/aide.db.new /var/lib/aide/aide.db

# 执行完整性检查
aide --check

# 日常检查后更新数据库(确认变更合法后)
aide --update
cp /var/lib/aide/aide.db.new /var/lib/aide/aide.db

将AIDE检查加入cron定时任务,每日凌晨执行并将差异报告邮件发送给运维人员:

# /etc/cron.d/aide-check
0 3 * * * root /usr/bin/aide --check | /usr/bin/mail -s "AIDE Report" ops@company.com

进程与用户审计

高可用集群环境中,异常进程和权限提升是常见入侵痕迹。开启auditd审计守护进程记录关键操作:

# 安装并启用auditd
apt install auditd -y
systemctl enable auditd
systemctl start auditd

# 审计规则配置 /etc/audit/rules.d/audit.rules
# 监控sudoers文件变更
-w /etc/sudoers -p wa -k sudoers_changes

# 监控passwd和shadow文件
-w /etc/passwd -p wa -k passwd_changes
-w /etc/shadow -p wa -k shadow_changes

# 监控内核模块加载
-a always,exit -F arch=b64 -S init_module -S delete_module -k kernel_modules

# 监控网络配置变更
-a always,exit -F arch=b64 -S sethostname -S setdomainname -k network_config

# 重新加载规则
augenrules --load

算力资源规划中的安全考量

GPU服务器安全加固有特殊要点。算力资源规划时需限制容器对GPU设备的直接访问权限,防止逃逸攻击:

# NVIDIA Container Runtime配置
# /etc/nvidia-container-runtime/config.toml
[nvidia-container-cli]
# 限制容器仅可见指定GPU
devices = "0,1"
# 禁止容器修改GPU驱动
no-cgroups = false

# Docker运行时限制示例
docker run --runtime=nvidia --gpus '"device=0,1"' \
    -e NVIDIA_VISIBLE_DEVICES=0,1 \
    -e NVIDIA_DRIVER_CAPABILITIES=compute,utility \
    training-image:latest

服务器安全加固是持续过程而非一次性动作。SSH防护降低入口攻击面,内核参数阻断协议层攻击,AIDE和auditd分别从文件和进程维度检测入侵痕迹。定期检查Fail2Ban封禁日志、AIDE差异报告和auditd审计记录,及时响应异常事件,才能维持服务器的长期安全态势。

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

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

相关推荐