CentOS系统上部署LVS(Linux Virtual Server)负载均衡时,安全参数配置直接关系到整个集群的稳定性和抗攻击能力。许多管理员只关注转发规则和性能调优,却忽略了LVS与CentOS系统层安全联动的重要性,导致DDoS攻击、IP欺骗或未经授权的访问轻易穿透集群。核心问题在于:LVS本身仅提供负载均衡功能,不具备完整的安全防护机制,必须依赖CentOS系统的防火墙、内核参数、网络配置及后端服务器协同防御。本文将详细解析如何通过系统层参数、iptables/firewalld规则、LVS自身安全配置及监控手段,构建一个既高效又安全的负载均衡环境。

一、CentOS系统内核安全参数调优

LVS运行在Linux内核层面,因此必须优先调整CentOS的内核网络参数,以抵御泛洪攻击并提升连接处理能力。关键参数位于/etc/sysctl.conf文件中,修改后需执行sysctl -p生效。

首先,防御SYN Flood攻击:LVS的DR/TUN模式会转发大量连接,需启用SYN Cookie并调整TCP队列。设置net.ipv4.tcp_syncookies = 1,确保在队列满时仍能处理合法连接;同时,增大半连接队列:net.ipv4.tcp_max_syn_backlog = 65536,并调整net.core.somaxconn = 65536以提升并发。

其次,防止IP欺骗和恶意重定向:严格限制内核的ICMP重定向和源路由功能。设置net.ipv4.conf.all.accept_redirects = 0和net.ipv4.conf.all.secure_redirects = 0,禁止接受ICMP重定向;设置net.ipv4.conf.all.accept_source_route = 0,关闭源路由验证。对于LVS节点,需特别关闭arp转发误导:在真实服务器上,设置net.ipv4.conf.lo.arp_ignore = 1和net.ipv4.conf.lo.arp_announce = 2,确保VIP响应仅通过LVS调度器。

最后,优化连接状态跟踪:LVS结合iptables时,需调整nf_conntrack参数。增大跟踪表大小:net.nf_conntrack_max = 1000000,并设置net.netfilter.nf_conntrack_tcp_timeout_established = 7200,避免过早超时导致连接中断。

二、防火墙配置:iptables与firewalld精准控制

CentOS的防火墙是保护LVS的第一道防线。建议使用iptables(CentOS 7/8也兼容)进行细粒度控制,或利用firewalld的rich rules实现动态管理。

对于LVS调度器,需严格限制访问端口:仅开放VIP的对外服务端口(如80、443),并屏蔽对后端真实服务器的直接访问。示例iptables规则如下:

# 清空现有规则
iptables -F
iptables -X
# 允许本地回环
iptables -A INPUT -i lo -j ACCEPT
# 允许已建立连接
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
# 开放VIP端口(假设VIP为192.168.1.100,服务端口80)
iptables -A INPUT -d 192.168.1.100 -p tcp --dport 80 -j ACCEPT
# 禁止其他所有输入
iptables -P INPUT DROP
# 保存规则(CentOS 7+使用yum install iptables-services)
service iptables save

若使用firewalld,可创建区域并添加富规则:firewall-cmd --permanent --zone=public --add-rich-rule='rule family="ipv4" destination address="192.168.1.100" port protocol="tcp" port="80" accept',然后重载生效。

对于真实服务器,同样需限制仅接受来自LVS调度器的流量。通过iptables设置源IP白名单:iptables -A INPUT -s-j ACCEPT,并对其他来源DROP。此外,关闭所有非必要服务端口,减少攻击面。

三、LVS自身安全配置与算法选择

LVS的调度算法和持久化连接设置直接影响安全性和稳定性。在CentOS中,常用ipvsadm工具管理LVS规则。

首先,选择抗攻击性强的调度算法:对于Web集群,建议使用加权最小连接(wlc)或加权轮询(wrr),避免使用简单的轮询(rr),以平衡负载并防止单一服务器过载。配置示例:

# 添加虚拟服务(VIP端口80,使用wlc算法)
ipvsadm -A -t 192.168.1.100:80 -s wlc
# 添加真实服务器(RIP为192.168.1.10,权重为2)
ipvsadm -a -t 192.168.1.100:80 -r 192.168.1.10:80 -g -w 2

其次,谨慎配置持久化连接:虽然持久化(-p参数)有助于会话保持,但可能被攻击者利用维持恶意连接。建议设置较短超时时间,如ipvsadm -E -t 192.168.1.100:80 -s wlc -p 300,限制为5分钟,并监控异常持久会话。

最后,启用LVS的防御选项:通过ipvsadm --set tcp tcpfin udp调整超时参数,加快无效连接释放。同时,结合CentOS的selinux(设置为enforcing模式),限制ipvsadm进程权限,防止越权操作。

四、网络隔离与后端服务器安全加固

LVS集群的网络架构需分层隔离,以限制攻击传播。建议将LVS调度器、真实服务器分别置于不同子网,并通过VLAN或防火墙划分区域。

在CentOS真实服务器上,除防火墙规则外,还需禁用不必要的网络服务:使用systemctl disable命令关闭httpd、nginx以外的服务,并定期更新系统补丁(yum update -y)。对于数据库等后端,应仅允许内网访问,避免暴露在VIP下。

此外,启用CentOS的日志监控(如rsyslog)和入侵检测工具(如fail2ban),实时记录LVS连接。通过ipvsadm -Ln --stats查看流量统计,结合awk脚本分析异常IP,自动加入黑名单。

五、监控与应急响应策略

安全参数配置后,持续监控是保障LVS集群稳定的关键。在CentOS上部署Prometheus + Grafana监控ipvs连接数和系统负载,或使用自定义脚本检查内核参数状态。

制定应急响应流程:一旦检测到DDoS攻击,立即启用iptables限速(如iptables -A INPUT -p tcp --dport 80 -m limit --limit 100/s -j ACCEPT)或临时切换LVS调度算法。对于严重攻击,可快速隔离故障节点,并通过ipvsadm -d命令从集群移除。

最后,定期审计安全配置:每月检查一次sysctl参数、防火墙规则及LVS规则,确保与安全策略一致。备份重要配置文件(如/etc/sysctl.conf、/etc/sysconfig/ipvsadm),以便快速恢复。

总之,CentOS系统LVS负载均衡的安全是一个系统工程,需从内核、防火墙、LVS配置及网络架构多层防护。通过上述硬核参数调优和主动监控,可显著提升集群的抗攻击能力,确保服务高可用。