如何限制单IP10个并发连接

限制新连接数(预防性控制)

通过防火墙规则限制单个IP的连接数,防止资源滥用:

# 使用更现代的nftables(示例:限制SSH连接)
sudo nft add table inet filter
sudo nft add chain inet filter input { type filter hook input priority 0; }
sudo nft add rule inet filter input tcp dport 22 ct count over 5 reject

适用场景:防御DDoS攻击或防止单个IP耗尽资源。


通过Web服务器配置限制连接

针对Nginx/Apache等服务的连接控制:

  • Nginx配置(修改nginx.conf):

    http {
        limit_conn_zone $binary_remote_addr zone=perip:10m;
        server {
            location / {
                limit_conn perip 5;  # 每个IP最多5个连接
            }
        }
    }

    重启服务:sudo systemctl restart nginx

  • Apache配置(需启用mod_ratelimit):

    <IfModule mod_ratelimit.c>
        <Location "/">
            SetOutputFilter RATE_LIMIT
            MaxRate 100   # 每秒最多100个连接
        </Location>
    </IfModule>

强制关闭现有连接

使用网络工具断开已建立的连接:

  1. 查找目标连接(以SSH为例):
    sudo ss -tpn dst :22  # 查看所有SSH连接(含PID和IP)
  2. 关闭连接
    • 通过进程ID终止:
      sudo kill -9 <PID>   # 结束对应进程
    • 使用tcpkill(需安装dsniff包):
      sudo tcpkill -i eth0 host 192.168.1.100  # 断开指定IP的所有连接

调整系统级连接参数

修改内核参数优化连接管理:

# 降低TIME_WAIT状态连接的回收时间(秒)
sudo sysctl -w net.ipv4.tcp_fin_timeout=15
# 限制半连接队列大小(防御SYN Flood)
sudo sysctl -w net.ipv4.tcp_max_syn_backlog=2048
# 持久化配置:将参数写入/etc/sysctl.conf
echo "net.ipv4.tcp_fin_timeout=15" | sudo tee -a /etc/sysctl.conf
sudo sysctl -p

注意事项

  1. 操作风险:强制断开连接可能导致用户数据丢失,生产环境需谨慎。
  2. 性能影响:过度限制连接数可能误伤正常流量,建议监控后调整(工具:netstat, ss, nload)。
  3. 安全原则:优先通过防火墙或服务配置预防问题,而非事后处理。
  4. 备份配置:修改关键文件前备份(如cp /etc/nginx/nginx.conf ~/nginx.conf.bak)。

引用说明

  • Linux内核参数文档:man tcp(终端查看)
  • iptables官方指南:netfilter.org
  • Nginx连接限制模块:nginx.org/docs
  • 系统工具手册页:man ss, man sysctl, man tcpkill

重要提示:本文方法需root权限操作,建议在测试环境验证后再部署到生产服务器,对于复杂攻击场景,建议结合专业防火墙(如Cloudflare)或安全团队协作处理。

原创文章,发布者:酷番叔,转转请注明出处:https://cloud.kd.cn/ask/5411.html

(0)
酷番叔酷番叔
上一篇 2025年6月23日 13:02
下一篇 2025年6月23日 13:33

相关推荐

  • linux如何查看性能资源

    Linux 中,可使用 top、htop 命令查看系统性能资源,还能用 free

    2025年8月10日
    1500
  • Linux如何高效安全移动多个文件夹?

    核心命令:mvmv(move)是Linux移动文件/目录的基础命令,语法为:mv [选项] 源目录1 源目录2 … 目标路径高效移动多个文件夹的方法方法1:通配符匹配通过通配符批量选择名称匹配的文件夹:mv dir_* /target/path/ # 移动所有以"dir_"开头的文件夹m……

    2025年8月8日
    1600
  • linux如何查看组内成员

    Linux中,可以使用groups或getent group 命令查看

    2025年8月10日
    1200
  • Linux ping如何强制结束?

    常规退出方法:使用快捷键按下 Ctrl + C在终端中执行ping命令时(ping example.com),只需按下键盘组合键 Ctrl + C(Control键 + C键),效果:立即终止ping进程,显示统计信息(如发送/接收包数量、丢包率、响应时间),原理:Ctrl + C 向当前前台进程发送 SIGI……

    2025年6月28日
    4000
  • 虚拟机linux如何全屏

    虚拟机中,通常可通过安装 VMware Tools 等工具后,使用快捷键(如

    2025年8月17日
    1100

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

联系我们

400-880-8834

在线咨询: QQ交谈

邮件:HI@E.KD.CN

关注微信