Linux服务器安全加固实战:SSH防护配置与入侵检测部署方案

服务器安全加固是IDC数据中心运维的基础工作。一台未经过加固的Linux服务器暴露在公网上,平均存活时间不超过30分钟就会遭遇首次扫描攻击。本文从SSH防护、防火墙部署、文件权限审计、入侵检测等维度,提供一套完整的服务器安全加固操作流程。

SSH服务安全配置与密钥认证

SSH是服务器最常见的攻击入口。默认端口22、密码认证、root直接登录这三项配置构成了主要安全风险。

# 修改SSH配置
vim /etc/ssh/sshd_config

# 关键配置项
Port 22022                    # 修改默认端口
PermitRootLogin no            # 禁止root直接登录
PasswordAuthentication no     # 禁用密码认证
PubkeyAuthentication yes      # 启用密钥认证
MaxAuthTries 3                # 最大认证尝试次数
LoginGraceTime 30             # 认证超时时间(秒)
AllowUsers deploy ops         # 白名单用户
ClientAliveInterval 300       # 空闲超时断开
ClientAliveCountMax 2         # 超时重试次数

# 重启SSH服务
systemctl restart sshd

禁用密码认证前,务必确认密钥登录正常工作,否则会导致无法远程登录。生成ED25519密钥对:

# 客户端生成密钥
ssh-keygen -t ed25519 -b 256 -C "deploy@prod-server"

# 推送公钥到服务器
ssh-copy-id -p 22022 deploy@server-ip

# 验证密钥登录成功后再禁用密码认证

iptables防火墙规则部署与端口管控

防火墙是服务器安全的第一道防线,遵循最小开放原则,默认拒绝所有入站流量,仅放行必要端口。

# 清空现有规则
iptables -F
iptables -X

# 默认策略:拒绝入站,允许出站
iptables -P INPUT DROP
iptables -P FORWARD DROP
iptables -P OUTPUT ACCEPT

# 允许回环接口
iptables -A INPUT -i lo -j ACCEPT

# 允许已建立连接
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

# 开放SSH端口(限制来源IP)
iptables -A INPUT -s 10.0.0.0/24 -p tcp --dport 22022 -j ACCEPT

# 开放Web服务端口
iptables -A INPUT -p tcp --dport 80 -j ACCEPT
iptables -A INPUT -p tcp --dport 443 -j ACCEPT

# 防SYN Flood攻击
iptables -A INPUT -p tcp --syn -m limit --limit 20/s --limit-burst 40 -j ACCEPT
iptables -A INPUT -p tcp --syn -j DROP

# 防端口扫描
iptables -A INPUT -p tcp --tcp-flags SYN,ACK,FIN,RST RST -m limit --limit 1/s -j ACCEPT
iptables -A INPUT -p tcp --tcp-flags SYN,ACK,FIN,RST RST -j DROP

# 保存规则
iptables-save > /etc/sysconfig/iptables
systemctl enable iptables

文件系统权限审计与基线检查

系统关键文件和目录的权限配置直接影响安全基线。以下为CIS Benchmark推荐的核心权限配置:

# 关键系统文件权限
chmod 600 /etc/passwd-
chmod 600 /etc/shadow
chmod 600 /etc/shadow-
chmod 644 /etc/passwd
chmod 644 /etc/group
chmod 600 /boot/grub2/grub.cfg

# 查找SUID/SGID文件(潜在提权风险)
find / -perm -4000 -type f 2>/dev/null
find / -perm -2000 -type f 2>/dev/null

# 移除不必要的SUID权限
chmod u-s /usr/bin/chage
chmod u-s /usr/bin/chfn
chmod u-s /usr/bin/chsh
chmod u-s /usr/bin/mount
chmod u-s /usr/bin/umount

# 查找全局可写目录
find / -writable -type d 2>/dev/null | grep -v -E "^/proc|^/sys|^/dev|^/tmp|^/var/tmp"

# 设置关键目录粘滞位
chmod +t /tmp /var/tmp

系统服务最小化与端口收敛

每多运行一个服务就多一个攻击面。关闭不必要的服务和端口是安全加固的基本要求。

# 查看所有启用的服务
systemctl list-unit-files --state=enabled

# 关闭常见不必要服务
systemctl disable --now avahi-daemon
systemctl disable --now cups
systemctl disable --now rpcbind
systemctl disable --now nfs-server
systemctl disable --now postfix

# 查看监听端口
ss -tlnp
# 确认每个端口对应的服务都是必要的

# 内核参数加固
cat >> /etc/sysctl.conf << EOF
# 禁用IP转发
net.ipv4.ip_forward = 0
# 禁用源路由
net.ipv4.conf.all.accept_source_route = 0
# 启用反向路径过滤
net.ipv4.conf.all.rp_filter = 1
# 禁用ICMP重定向
net.ipv4.conf.all.accept_redirects = 0
# 忽略ICMP广播请求
net.ipv4.icmp_echo_ignore_broadcasts = 1
# 记录可疑数据包
net.ipv4.conf.all.log_martians = 1
EOF

sysctl -p

AIDE文件完整性监控部署

AIDE(Advanced Intrusion Detection Environment)通过对比文件哈希值检测系统文件是否被篡改,是入侵后的重要发现手段。

# 安装AIDE
yum install aide -y

# 初始化数据库(首次运行,需较长时间)
aide --init

# 将初始化数据库复制为生产数据库
cp /var/lib/aide/aide.db.new.gz /var/lib/aide/aide.db.gz

# 手动检查文件完整性
aide --check

# 配置定时任务,每日检查并发送告警
echo "0 3 * * * root /usr/sbin/aide --check | mail -s 'AIDE Report' admin@yunthe.com" >> /etc/crontab

AIDE检查报告会列出新增、修改、删除的文件。重点关注/usr/bin/usr/sbin/etc目录下的文件变动,这些目录下的异常修改通常是入侵迹象。

审计日志配置与异常告警

auditd是Linux内核级审计框架,可记录系统调用级别的操作行为,为安全事件溯源提供数据支撑。

# 安装并启动auditd
yum install audit -y
systemctl enable --now auditd

# 配置审计规则
cat >> /etc/audit/rules.d/hardening.rules << EOF
# 监控passwd文件修改
-w /etc/passwd -p wa -k identity
-w /etc/shadow -p wa -k identity
-w /etc/group -p wa -k identity

# 监控SSH配置修改
-w /etc/ssh/sshd_config -p wa -k ssh_config

# 监控sudo使用
-w /usr/bin/sudo -p x -k sudo_usage

# 监控crontab修改
-w /etc/crontab -p wa -k cron
-w /var/spool/cron/ -p wa -k cron

# 监控用户创建删除
-w /usr/sbin/useradd -p x -k user_modification
-w /usr/sbin/userdel -p x -k user_modification
EOF

# 重新加载审计规则
augenrules --load

# 查看审计日志
ausearch -k identity
ausearch -k sudo_usage

配合日志集中收集方案(如ELK或Loki),将auditd日志实时传输到中心化日志平台,设置异常行为告警规则。当检测到非工作时间段的sudo使用、passwd文件修改、新用户创建等高危操作时,自动触发告警通知。

服务器安全加固不是一次性工作,需要定期复查基线配置、更新安全补丁、审查开放端口和服务列表。建议每月执行一次完整的基线检查,每季度进行一次渗透测试验证加固效果。

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

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

相关推荐