在Linux系统中配置高可用的DDoS防御方案,需要从内核参数调优、防火墙规则配置、服务限流等多个维度共同入手,构建多层次的防护体系,确保服务器在遭受攻击时仍能正常提供服务。

内核参数优化
首先需要通过sysctl调整内核网络相关参数,提升系统抗DDoS攻击的基础能力,避免内核资源被攻击流量快速耗尽。编辑/etc/sysctl.conf文件添加以下配置:
# 开启SYN Cookie防护,抵御SYN洪水攻击 net.ipv4.tcp_syncookies = 1 # 增大半连接队列长度 net.ipv4.tcp_max_syn_backlog = 8192 # 减少SYN重试次数 net.ipv4.tcp_synack_retries = 2 # 开启ICMP广播防护 net.ipv4.icmp_echo_ignore_broadcasts = 1 # 忽略错误的ICMP响应 net.ipv4.icmp_ignore_bogus_error_responses = 1 # 限制单个源IP的并发连接数 net.ipv4.tcp_max_tw_buckets = 5000 # 开启反向路径过滤,防止IP伪造 net.ipv4.conf.all.rp_filter = 1
配置完成后执行sysctl -p命令让参数生效。
iptables防火墙规则配置
使用iptables设置流量过滤规则,拦截异常攻击流量,同时保证正常业务流量可以正常通过。以下是常用的防御规则:
# 清除现有规则 iptables -F iptables -X # 设置默认策略,INPUT链默认丢弃,OUTPUT链默认允许 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 # 限制单个源IP每秒的新连接数,超过10个则丢弃,抵御连接洪水攻击 iptables -A INPUT -p tcp --dport 80 -m state --state NEW -m limit --limit 10/second --limit-burst 20 -j ACCEPT iptables -A INPUT -p tcp --dport 443 -m state --state NEW -m limit --limit 10/second --limit-burst 20 -j ACCEPT # 限制ICMP请求频率,每秒最多1个,防止ICMP洪水 iptables -A INPUT -p icmp -m limit --limit 1/second -j ACCEPT # 拦截异常长度的TCP包 iptables -A INPUT -p tcp -m length --length 0:64 -j DROP # 保存规则,不同系统保存命令可能有差异,以下为CentOS示例 service iptables save
高可用架构补充配置
单台服务器的防御能力有限,结合高可用架构可以进一步提升整体防护效果。可以使用Keepalived实现多节点冗余,当主节点遭受攻击失效时自动切换到备用节点。
首先需要安装Keepalived,然后配置主备节点的健康检查规则,示例主节点配置如下:
global_defs {
router_id LVS_DEVEL_1
}
vrrp_instance VI_1 {
state MASTER
interface eth0
virtual_router_id 51
priority 100
advert_int 1
authentication {
auth_type PASS
auth_pass 1234
}
virtual_ipaddress {
192.168.0.100
}
# 健康检查,检测iptables服务和业务端口是否正常
track_script {
chk_iptables
chk_service
}
}
# 定义健康检查脚本
vrrp_script chk_iptables {
script "/usr/bin/systemctl is-active iptables > /dev/null"
interval 2
weight -20
}
vrrp_script chk_service {
script "/usr/bin/nc -z 127.0.0.1 80 > /dev/null"
interval 2
weight -20
}
规则验证与维护
配置完成后需要验证规则是否生效,可以使用hping3等工具模拟攻击流量测试防御效果:
# 模拟SYN洪水攻击测试,仅在授权环境下使用 hping3 -S -p 80 --flood 192.168.0.1
日常需要定期查看iptables的流量计数和内核日志,根据实际攻击情况调整规则参数,比如调整连接限制阈值、补充新的过滤规则等,确保防御方案持续有效。