一、LVS 安全基线检查表
| 类别 | 检查项 | 安全要求 | 检查方法 |
|---|---|---|---|
| 主机安全 | 操作系统补丁 | 最新安全补丁 | yum check-update | grep kernel |
| SSH 安全加固 | 密钥认证+非标准端口 | netstat -tuln | grep ssh |
|
| 网络配置 | VIP 绑定限制 | 绑定特定内网接口 | ip addr show |
| ARP 抑制启用 | 禁用 arp_announce/arp_ignore | sysctl -a | grep arp |
|
| ICMP 响应限制 | 仅允许管理网段 | iptables -L -n -v |
|
| 服务防护 | SYNPROXY 启用 | 开启防 SYN Flood | ipvsadm -ln | grep SYNPROXY |
| 连接超时优化 | EST 120s/FIN_WAIT 60s | sysctl -a | grep timeout |
|
| 访问控制 | 防火墙白名单 | 仅放行业务 IP 访问 VIP | iptables -L -n -v | grep :80 |
| RS 隐藏设计 | Real Server 不暴露公网 IP | ip route show |
|
| 审计监控 | IPVS 连接日志 | 关键业务流量监控 | journalctl -u ipvs |
| 异常流量检测 | DDoS 防护阈值监控 | vnstat -l |
二、LVS 安全加固方案
1. 操作系统加固
# 关闭不必要服务
systemctl stop rpcbind && systemctl disable rpcbind
# 内核参数优化(/etc/sysctl.conf)
net.ipv4.conf.all.arp_ignore = 1
net.ipv4.conf.all.arp_announce = 2
net.ipv4.tcp_syncookies = 1
net.ipv4.tcp_max_syn_backlog = 4096
net.ipv4.tcp_syn_retries = 2
# 加载SYNPROXY模块
modprobe nf_conntrack_ipv4
echo "nf_conntrack_ipv4" >> /etc/modules-load.d/lvs.conf
2. LVS 部署加固(DR 模式)
# 配置VIP(示例VIP:192.168.100.100)
ip addr add 192.168.100.100/32 dev lo label lo:lvs
# 启用IP转发
echo 1 > /proc/sys/net/ipv4/ip_forward
# 配置IPVS规则(TCP 80服务)
ipvsadm -A -t 192.168.100.100:80 -s wrr
ipvsadm -a -t 192.168.100.100:80 -r 10.1.1.10:80 -g -w 3 # RS1
ipvsadm -a -t 192.168.100.100:80 -r 10.1.1.11:80 -g -w 2 # RS2
# 开启SYNPROXY防护
ipvsadm --set 0 1 1 # 启用conn重用的SYNPROXY
3. 防火墙策略(iptables)
# 清空默认规则
iptables -F && iptables -t nat -F
# 限制VIP访问(仅允许业务网段)
iptables -A INPUT -d 192.168.100.100 -p tcp --dport 80 -s 10.0.0.0/8 -j ACCEPT
iptables -A INPUT -d 192.168.100.100 -p tcp --dport 80 -j DROP
# ICMP访问控制
iptables -A INPUT -p icmp --icmp-type echo-request -s 10.0.0.0/8 -j ACCEPT
iptables -A INPUT -p icmp --icmp-type echo-request -j DROP
# 防止MAC欺骗
iptables -A INPUT -m mac ! --mac-source 00:50:56:xx:xx:xx -j DROP
# 保存配置
service iptables save
4. Real Server 加固(后端节点)
# 隐藏ARP响应(/etc/sysctl.conf)
net.ipv4.conf.lo.arp_ignore = 1
net.ipv4.conf.lo.arp_announce = 2
net.ipv4.conf.all.arp_ignore = 1
net.ipv4.conf.all.arp_announce = 2
# 绑定VIP到本地回环
ip addr add 192.168.100.100/32 dev lo
三、安全案例:DDoS 攻击防护
场景描述
某电商平台遭受大规模SYN Flood攻击:
-
攻击流量峰值:80Gbps
-
源IP伪造随机地址
-
源端口均为80
-
LVS未启用SYNPROXY
-
RS服务器连接数耗尽
攻击特征
攻击包特征示例:
源IP:201.32.56.78 -> 目标VIP:192.168.100.100
Flags [S] # 仅有SYN标记
Window size: 0 # 异常窗口大小
TTL: 255 # 恒定TTL值
加固解决方案
# 紧急启用SYNPROXY
ipvsadm --set 1 1 1 # 开启SYN cookies代理
# 配置防火墙限流
iptables -N SYNFLOOD
iptables -A INPUT -p tcp --syn -j SYNFLOOD
iptables -A SYNFLOOD -m limit --limit 1000/s --limit-burst 2000 -j RETURN
iptables -A SYNFLOOD -j DROP
# 启用黑洞路由(针对超大规模攻击)
ip route add blackhole 192.168.100.100/32
# 后端服务防护(在RS节点)
sysctl -w net.netfilter.nf_conntrack_tcp_timeout_syn_recv=30
sysctl -w net.netfilter.nf_conntrack_max=2000000
自动化防护脚本
#!/bin/bash
# LVS DDoS 防护脚本
threshold=10000 # 每秒SYN包阈值
while true; do
syn_count=$(netstat -nap | grep SYN_RECV | wc -l)
if [ $syn_count -gt $threshold ]; then
echo "$(date) SYN攻击检测: $syn_count连接" >> /var/log/lvs_attack.log
# 1级防护:启用SYNPROXY
ipvsadm --set 1 1 1
# 2级防护:启动限流规则
iptables -F SYNFLOOD
iptables -A SYNFLOOD -m limit --limit 500/s -j RETURN
iptables -A SYNFLOOD -j DROP
# 短信告警
curl -X POST https://sms-api/alert -d "LVS遭受DDoS攻击!"
fi
sleep 5
done
四、加固效果验证
1. 安全状态检测
# 检查ARP抑制
sysctl net.ipv4.conf.all.arp_ignore
--> net.ipv4.conf.all.arp_ignore = 1
# 验证SYNPROXY
ipvsadm -ln | grep Flags
--> 显示 SYNPROXY=1
# 防火墙规则验证
iptables -L -n -v | grep 192.168.100.100
--> ACCEPT tcp -- 10.0.0.0/8 192.168.100.100 tcp dpt:80
2. 攻击模拟测试
# 启动SYN洪水攻击(测试环境)
hping3 -S -p 80 --flood --rand-source 192.168.100.100
# 观察防护效果
ipvsadm -ln --connection | grep SYN_RECV
--> SYN_RECV连接数稳定在阈值范围内
3. 流量监控面板
# 实时连接监控
watch -n 1 "ipvsadm -ln --sort -c | grep TCP"
# 流量统计报表
vnstat -l -i eth0 -tr 60
--> 显示入站流量被限制在安全阈值
LVS 安全黄金法则
纵深防御:前端防火墙 -> LVS -> 后端RS多层防护
隐形原则:Real Server 不暴露公网,VIP限制最小访问范围
协议优化:SYNPROXY+TCP半连接优化抗DDoS
物理隔离:管理流量与业务流量完全分离
自动弹性:基于流量阈值自动启用防护规则
推荐安全工具:
-
hping3:压力测试工具 -
vnstat:实时流量监控 -
conntrack-tools:连接跟踪分析 -
keepalived:故障切换管理 -
Grafana+Prometheus:可视化监控
关键配置说明:
-
防火墙层:入口UDP/DNS全部丢弃,仅放行TCP 80/443
-
LVS层:启用SYN Cookies+连接数限制
-
RS层:启用内核级ARP隐藏,关闭ICMP响应
-
监控层:基于BGP Anycast实现流量清洗