插件窝 干货文章 如何配置CentOS系统以限制并发连接和防止拒绝服务攻击

如何配置CentOS系统以限制并发连接和防止拒绝服务攻击

sudo 连接 限制 iptables 115    来源:    2025-04-15

CentOS系统限制并发连接与防止DoS攻击配置指南

1. 使用iptables限制并发连接

基本配置

# 安装iptables服务
sudo yum install iptables-services -y

# 限制单个IP的并发连接数(例如限制为50)
sudo iptables -A INPUT -p tcp --syn --dport 80 -m connlimit --connlimit-above 50 --connlimit-mask 32 -j REJECT --reject-with tcp-reset

# 限制同一IP对SSH的并发连接(例如限制为3)
sudo iptables -A INPUT -p tcp --syn --dport 22 -m connlimit --connlimit-above 3 -j REJECT

保存iptables规则

sudo service iptables save
sudo systemctl enable iptables
sudo systemctl start iptables

2. 使用firewalld限制连接(适用于CentOS 7+)

# 启用firewalld
sudo systemctl enable firewalld
sudo systemctl start firewalld

# 限制HTTP服务的连接数(例如每秒20个新连接)
sudo firewall-cmd --add-rich-rule='rule service name="http" limit value="20/s" accept'

# 限制SSH连接数(例如每分钟5个新连接)
sudo firewall-cmd --add-rich-rule='rule service name="ssh" limit value="5/m" accept'

3. 内核参数调优

编辑/etc/sysctl.conf文件,添加或修改以下参数:

# 启用SYN cookies防护SYN洪水攻击
net.ipv4.tcp_syncookies = 1

# 减少SYN+ACK重试次数
net.ipv4.tcp_synack_retries = 2

# 增加积压队列大小
net.ipv4.tcp_max_syn_backlog = 2048

# 缩短TIME_WAIT状态的超时时间
net.ipv4.tcp_fin_timeout = 30

# 限制系统范围内所有端口的半连接数
net.ipv4.tcp_max_orphans = 65536

# 限制系统接受新TCP连接的速度
net.ipv4.tcp_max_syn_backlog = 2048
net.core.somaxconn = 2048

# 防止ICMP洪水攻击
net.ipv4.icmp_echo_ignore_broadcasts = 1
net.ipv4.icmp_ignore_bogus_error_responses = 1

应用修改:

sudo sysctl -p

4. 使用Fail2Ban防止暴力破解

# 安装Fail2Ban
sudo yum install epel-release -y
sudo yum install fail2ban -y

# 配置SSH防护
sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
sudo nano /etc/fail2ban/jail.local

# 修改[sshd]部分如下:
[sshd]
enabled = true
port = ssh
filter = sshd
logpath = /var/log/secure
maxretry = 3
bantime = 3600
findtime = 600

# 启动Fail2Ban
sudo systemctl enable fail2ban
sudo systemctl start fail2ban

5. 使用Nginx/Apache限制连接(如果使用Web服务器)

Nginx配置示例

http {
    limit_conn_zone $binary_remote_addr zone=addr:10m;
    limit_req_zone $binary_remote_addr zone=one:10m rate=10r/s;

    server {
        limit_conn addr 10;  # 每个IP最多10个连接
        limit_req zone=one burst=20 nodelay;  # 限制请求速率
    }
}

Apache配置示例

# 安装mod_evasive
sudo yum install mod_evasive -y

# 配置/etc/httpd/conf.d/mod_evasive.conf
<IfModule mod_evasive20.c>
    DOSHashTableSize 3097
    DOSPageCount 2
    DOSSiteCount 50
    DOSPageInterval 1
    DOSSiteInterval 1
    DOSBlockingPeriod 10
</IfModule>

6. 监控与日志分析

# 查看当前连接数统计
netstat -ntu | awk '{print $5}' | cut -d: -f1 | sort | uniq -c | sort -n

# 使用iftop监控网络流量
sudo yum install iftop -y
sudo iftop -P

# 使用nethogs监控进程带宽
sudo yum install nethogs -y
sudo nethogs

7. 定期更新系统

sudo yum update -y

以上配置可根据实际业务需求进行调整。在生产环境中实施前,建议先在测试环境验证配置效果,避免影响正常业务流量。