LVS 基线检查与安全加固指南(附案例)

一、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 安全黄金法则

  1. 纵深防御:前端防火墙 -> LVS -> 后端RS多层防护

  2. 隐形原则:Real Server 不暴露公网,VIP限制最小访问范围

  3. 协议优化:SYNPROXY+TCP半连接优化抗DDoS

  4. 物理隔离:管理流量与业务流量完全分离

  5. 自动弹性:基于流量阈值自动启用防护规则

推荐安全工具

  • hping3:压力测试工具

  • vnstat:实时流量监控

  • conntrack-tools:连接跟踪分析

  • keepalived:故障切换管理

  • Grafana+Prometheus:可视化监控


关键配置说明

  1. 防火墙层:入口UDP/DNS全部丢弃,仅放行TCP 80/443

  2. LVS层:启用SYN Cookies+连接数限制

  3. RS层:启用内核级ARP隐藏,关闭ICMP响应

  4. 监控层:基于BGP Anycast实现流量清洗

相关推荐
ん贤1 小时前
手敲Linux命令
linux·运维·服务器
sun0077002 小时前
android的qos
网络
爱学习的小囧2 小时前
SXi LAG 链路聚合负载均衡配置全教程 | LACP 协议 + 交换机联动,新手也能落地
运维·服务器·php·负载均衡·esxi
花间相见2 小时前
【Linux进阶01】—— tmux原理与实战教程
linux·运维·服务器
有谁看见我的剑了?2 小时前
新服务器上线优化调整
linux·运维·服务器
极客范儿2 小时前
华为HCIP网络工程师认证—设备管理和路由基础
网络·华为
凤年徐2 小时前
【Linux从入门到进阶】打包压缩、跨平台互传、内核版本、热键历史、关机与Shell原理一篇全搞定
linux·运维·服务器
木井巳2 小时前
【网络原理】初识相关概念
网络·网络协议·tcp/ip·http·https·udp
郝学胜-神的一滴2 小时前
[系统设计] 新鲜事系统:写扩散与读扩散的实现与对比
java·设计模式·php·软件构建·需求分析·软件设计·系统设计