如何限制单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

相关推荐

  • 如何查看SD卡设备标识?

    准备工作硬件需求SD卡(建议Class 10以上,容量≥16GB)SD卡读卡器目标设备(如树莓派、笔记本电脑)软件与资源Linux镜像:从官方渠道下载(如Ubuntu、Raspberry Pi OS)烧录工具(任选其一):Windows/macOS:BalenaEtcher(图形化,推荐新手)Windows:R……

    2025年7月5日
    11700
  • 如何快速更新系统并安装Subversion和Apache模块?

    在Linux系统上搭建SVN(Subversion)服务器是管理代码版本控制的可靠方案,以下为详细操作流程,基于Ubuntu/CentOS等主流发行版(以Ubuntu为例),所有步骤需root权限执行:安装必要组件sudo apt install subversion libapache2-mod-svn ap……

    2025年7月7日
    9100
  • 那么,Linux内核具体做哪些重要工作呢?我们可以从几个关键方面来看

    Linux内核核心工作包括:管理进程调度与资源分配、控制内存使用、通过驱动程序与硬件交互、实现文件系统管理数据存储、提供网络通信支持。

    2025年7月27日
    9100
  • 如何在Linux中编译C语言程序?

    在Linux系统中,编译C程序主要依赖GNU Compiler Collection(GCC),这是Linux下最常用的C语言编译器,本文将从安装编译器、编写代码到编译、链接、调试等步骤,详细说明如何在Linux环境下完成C程序的编译与运行,安装GCC编译器大多数Linux发行版默认未安装GCC,需手动安装,以……

    2025年9月16日
    8700
  • linux下如何搭建bt

    在Linux操作系统下搭建BitTorrent(BT)服务,无论是用于个人文件共享还是搭建私有种子服务器,都是一项实用的技能,Linux凭借其稳定性、灵活性和丰富的开源工具,成为搭建BT服务的理想平台,本文将以主流的BT客户端工具Transmission为例,详细讲解在Linux环境下搭建BT服务器的完整步骤……

    2025年10月6日
    5700

发表回复

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

联系我们

400-880-8834

在线咨询: QQ交谈

邮件:HI@E.KD.CN

关注微信