12.8.3 系统与网络层安全加固要点
系统与网络层安全加固应以最小暴露面、最少权限和可审计为原则,保证 Keepalived 高可用环境在遭受攻击或异常时仍能稳定切换。本节给出加固原理草图、基线配置、关键命令示例、排错与练习。
原理草图(安全分区与心跳路径):
一、系统层基线加固与最小权限
1) 关闭不必要服务、限制登录与账号权限:
# 查看监听端口与服务
ss -lntup
systemctl list-unit-files --type=service | grep enabled
# 禁用不必要服务(示例)
systemctl disable --now postfix
# SSH 强化:禁用 root 远程,启用密钥
sed -i 's/^#\?PermitRootLogin.*/PermitRootLogin no/' /etc/ssh/sshd_config
sed -i 's/^#\?PasswordAuthentication.*/PasswordAuthentication no/' /etc/ssh/sshd_config
systemctl reload sshd
# 给 Keepalived 使用专用账号(如发行版默认已创建 keepalived 用户)
id keepalived || useradd -r -s /sbin/nologin keepalived
2) Keepalived 配置文件与脚本权限:
# 配置目录与文件权限
chown -R root:root /etc/keepalived
chmod 700 /etc/keepalived
chmod 600 /etc/keepalived/keepalived.conf
# 健康检查脚本权限
chown root:root /etc/keepalived/check_web.sh
chmod 700 /etc/keepalived/check_web.sh
3) 安全更新策略示例(以定期补丁窗口为例):
# RHEL/CentOS
yum -y update --security
# Ubuntu
apt-get update && apt-get -y upgrade
二、网络层隔离、白名单与防火墙策略
1) VRRP 心跳隔离:建议专用 VLAN/网卡,或设置单播 VRRP。
Keepalived 单播示例(/etc/keepalived/keepalived.conf):
vrrp_instance VI_1 {
state MASTER
interface eth1
virtual_router_id 51
priority 120
advert_int 1
authentication {
auth_type PASS
auth_pass 7f9a1b2c
}
unicast_src_ip 10.10.10.2
unicast_peer {
10.10.10.3
}
virtual_ipaddress {
10.10.10.100/24 dev eth0
}
}
2) 防火墙放行 VRRP(协议号 112)与单播端口,限制业务访问来源:
# firewalld:允许 VRRP
firewall-cmd --permanent --add-rich-rule='rule protocol value="vrrp" accept'
# 允许业务端口(示例仅允许内网段访问 80/443)
firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="10.0.0.0/8" port protocol="tcp" port="80-443" accept'
firewall-cmd --permanent --add-rich-rule='rule family="ipv4" port protocol="tcp" port="80-443" drop'
firewall-cmd --reload
三、ARP 与 DoS 防护的关键内核参数
1) ARP 防护参数(避免 VIP 争用与欺骗):
cat >/etc/sysctl.d/99-keepalived-hardening.conf <<'EOF'
net.ipv4.conf.all.rp_filter = 1
net.ipv4.conf.default.rp_filter = 1
net.ipv4.conf.all.arp_ignore = 1
net.ipv4.conf.all.arp_announce = 2
net.ipv4.conf.default.arp_ignore = 1
net.ipv4.conf.default.arp_announce = 2
net.ipv4.tcp_syncookies = 1
net.ipv4.tcp_max_syn_backlog = 4096
EOF
sysctl --system
2) VIP 绑定与 ARP 行为验证:
ip a show dev eth0 | grep 10.10.10.100
arp -an | grep 10.10.10.100
四、健康检查脚本白名单化与稳定性
示例脚本(/etc/keepalived/check_web.sh):
#!/usr/bin/env bash
# 说明:检查本机 Nginx 端口,失败则返回非 0 触发降级
curl -fsS --max-time 2 http://127.0.0.1:80/health >/dev/null
exit $?
Keepalived 配置引用:
vrrp_script chk_web {
script "/etc/keepalived/check_web.sh"
interval 2
weight -20
timeout 3
}
vrrp_instance VI_1 {
track_script {
chk_web
}
}
五、排错与验证流程
1) VRRP 被防火墙阻断的排错:
# 抓包验证 VRRP 心跳
tcpdump -i eth1 -nn proto 112
# 查看防火墙规则是否允许
firewall-cmd --list-rich-rules
2) VIP 不可访问或切换异常的排错:
# 检查 VIP 是否在主节点
ip addr show | grep 10.10.10.100
# 检查 Keepalived 日志
journalctl -u keepalived -f
六、练习
1) 演练最小权限:将 /etc/keepalived/keepalived.conf 权限改为 644,观察服务是否报错;再恢复到 600,并记录日志差异。
2) 演练防火墙规则:先阻断 VRRP(删除 rich-rule),观察 2 台节点状态变化;再恢复规则并验证稳定切换。
3) 演练 ARP 防护:关闭 arp_ignore/arp_announce,模拟双主冲突,记录现象并恢复内核参数。
通过以上加固与验证流程,可在不影响高可用切换的前提下提升系统与网络层安全性,并保障 Keepalived 在攻击或异常条件下的稳定可控。