如何限制单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如何安装m4?详细步骤与方法说明

    m4是GNU提供的一个强大的宏处理器,广泛用于文本处理、代码生成以及构建系统(如autoconf)中,在Linux系统中,m4通常作为基础工具被预装,但某些精简版系统或特定场景下可能需要手动安装,本文将详细介绍在不同Linux发行版中安装m4的方法,包括使用包管理器安装、从源码编译安装,以及安装后的验证和基本使……

    2025年8月22日
    16000
  • Linux系统如何启动网页版服务?

    在Linux系统中启动网页版服务通常指搭建一个Web服务器环境,使本地或远程设备能通过浏览器访问网页内容,无论是临时测试、个人项目还是小型网站部署,Linux都提供了多种灵活的方式,本文将详细介绍几种常见方法,涵盖从轻量级临时服务到专业级服务器的搭建步骤,并附上注意事项和常见问题解答,准备工作:环境与权限检查在……

    2025年9月18日
    15900
  • Linux 如何查看系统大小端模式?

    在计算机体系结构中,字节序(Byte Order)是指多字节数据在内存中的存储顺序,主要分为大端序(Big-Endian)和小端序(Little-Endian),大端序是指高位字节存储在低地址,低位字节存储在高地址,符合人类阅读习惯(如数字“0x12345678”在内存中存储为12 34 56 78);小端序则……

    2025年10月4日
    11600
  • Ubuntu比Windows快吗

    Telnet基础概念Telnet协议:用于在本地主机与远程服务器之间建立明文通信(TCP协议),默认端口为23,适用场景:测试服务器端口连通性(如HTTP 80、SMTP 25),临时管理不支持SSH的旧设备,安全警告:Telnet传输数据未加密,严禁用于生产环境敏感操作(推荐使用SSH替代),安装Telnet……

    2025年7月1日
    14900
  • Linux如何解压bin文件?

    在Linux系统中,bin文件并非标准压缩格式,其内容可能因来源不同而差异较大,可能是二进制可执行文件、自解压脚本、光盘镜像(如ISO)或经过特定工具压缩的数据,解压bin文件需先明确其类型,再选择对应方法,本文将详细讲解不同类型bin文件的识别与解压步骤,帮助用户高效处理此类文件,判断bin文件类型:关键第一……

    2025年9月10日
    14900

发表回复

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

联系我们

400-880-8834

在线咨询: QQ交谈

邮件:HI@E.KD.CN

关注微信