xt_connlimit(别名ipt_connlimit)

一.Centos5.8系统

需要手动的执行modprobe ipt_connlimit命令把模板加入内核中去.
先查看

#lsmod |grep xt
如未找到xt_connlimit

则执行
#modprobe ipt_connlimit

查看xt_connlimit信息:

#modinfo xt_connlimit

二.Centos6.X

已经包含到了内核中,不需要手动添加了.

三.规则配置示例:

1.connlimit:

connlimit参数:
  --connlimit-above n    #限制为多少个
  --connlimit-mask n     #这组主机的掩码,默认是connlimit-mask 32 ,即每个IP.

限制同一IP同时最多100个http连接(默认是B类IP)
iptables -I INPUT -p tcp --syn --dport 80 -m connlimit --connlimit-above 100 -j REJECT

iptables -I INPUT -p tcp --syn --dport 80 -m connlimit ! --connlimit-above 100 -j ACCEPT

只允许每组C类IP同时100个http连接
iptables -p tcp --syn --dport 80 -m connlimit --connlimit-above 100 --connlimit-mask 24 -j REJECT

限制某IP最多同时100个http连接
iptables -A INPUT -s 222.222.222.222 -p tcp --syn --dport 80 -m connlimit --connlimit-above 100 -j REJECT

2.recent(需要的模块是xt_recent)

限制每IP在一定的时间(比如60秒)内允许新建立最多100个http连接数

iptables -A INPUT -p tcp --dport 80 --syn -m recent --name BAD_HTTP_ACCESS --rcheck --seconds 60 --hitcount 100 -j LOG --log-prefix 'DDOS:' --log-ip-options
iptables -A INPUT -p tcp --dport 80 -m recent --name BAD_HTTP_ACCESS --update --seconds 60 --hitcount 100 -j REJECT
iptables -A INPUT -p tcp --dport 80 -m recent --name BAD_HTTP_ACCESS --set -j ACCEPT

这个意思是建立一个的区块BAD_HTTP_ACCESS,60秒内允许100个请求;超过这个请求的拒绝;第一行是将超过请求的写入系统日志;

  
ps:上面recent规则只适用于默认规则为DROP中,如果要适用默认ACCEPT的规则,需要--set放前面 并且无-j ACCEPT

解决hitcount超出的错误

xt_recent: hitcount (100) is larger than packets to be remembered (20)

hitcount的值由/sys/module/xt_recent/parameters下的ip_pkt_list_tot做了限制,但是该文件是个只读文件.

处理办法如下:

在/etc/modprobe.d下新建xt_recent.conf,输入以下内容保存:

options xt_recent ip_list_tot=1024 ip_pkt_list_tot=200

移除xt_recent模块:

modprobe -r xt_recent

再加载该模块

modprobe xt_recent

再次查看

/sys/module/xt_recent/parameters下的ip_pkt_list_tot,发现已经更改为200,需要注意该值不要大于255,否则可能有问题;

附录:

modprobe命令用于智能地向内核中加载模块或者从内核中移除模块。 modprobe可载入指定的个别模块,或是载入一组相依的模块。modprobe会根据depmod所产生的相依关系,决定要载入哪些模块。若在载入过程中发生错误,在modprobe会卸载整组的模块。

-a或--all:载入全部的模块;

-c或--show-conf:显示所有模块的设置信息;

-d或--debug:使用排错模式;

-l或--list:显示可用的模块;

-r或--remove:模块闲置不用时,即自动卸载模块;

-t或--type:指定模块类型;

-v或--verbose:执行时显示详细的信息;

-V或--version:显示版本信息;

-help:显示帮助。

lsmod 可以查看挂载的模块

ipt_connlimit限制并发,ipt_recent限制单位时间内的请求数目的更多相关文章

  1. 使用redis计数来控制单位时间内对某接口的访问量,防止刷验证码接口之类的

    使用自定义注解的方式,在需要被限制访问频率的方法上加注解即可控制. 看实现方式,基于springboot,aop,redis. 新建Springboot工程,引入redis,aop. 创建注解 pac ...

  2. 解决蓝牙鼠标在 Ubuntu 中单位时间内断开的问题

    1 查询你的鼠标的蓝牙地址 1.1 如:E1:DE:02:05:5E:F5 2 将查询到的设备地址写入配置文件 /etc/bluetooth/main.conf # Use vendor id sou ...

  3. tomcat并发优化之三种接收处理请求方式(BIO、NIO、APR)介绍

    原文链接:http://blog.csdn.net/xyang81/article/details/51502766 Tomcat支持三种接收请求的处理方式:BIO.NIO.APR 1>.BIO ...

  4. 并发测试JMeter及发送Json请求

    1.下载 提前安装好jdk1.8 官网下载地址:http://jmeter.apache.org/download_jmeter.cgi 2.解压,双击bin/jmeter.bat 3.jmeter配 ...

  5. 【高并发】面试官问我如何使用Nginx实现限流,我如此回答轻松拿到了Offer!

    写在前面 最近,有不少读者说看了我的文章后,学到了很多知识,其实我本人听到后是非常开心的,自己写的东西能够为大家带来帮助,确实是一件值得高兴的事情.最近,也有不少小伙伴,看了我的文章后,顺利拿到了大厂 ...

  6. [Java并发编程之美]第2章 并发编程的其他基础知识 补充知识

    基本概念 并行与并发 并行:单位时间内多个任务同时执行(多核CPU). 并发:同一时间段内多个任务同时都在执行(CPU时间片轮转). 线程安全性问题 线程安全问题:指多个线程同时读写一个共享资源而没有 ...

  7. PHP高并发商城秒杀

    1.什么是秒杀 秒杀活动是一些购物平台推出的集中人气的活动,一般商品数量很少,价格很便宜,限定开始购买的时间,会在以秒为单位的时间内被购买一空.比如原价千元甚至万元的商品以一元的价格出售,但数量只有一 ...

  8. Nginx限制访问速率和最大并发连接数模块--limit (防止DDOS攻击)

    Tengine版本采用http_limit_req_module进行限制 具体连接请参考 http://tengine.taobao.org/document_cn/http_limit_req_cn ...

  9. nginx应用总结(1)--基础认识和应用配置

    在linux系统下使用nginx作为web应用服务,用来提升网站访问速度的经验已五年多了,今天在此对nginx的使用做一简单总结. 一.nginx服务简介Nginx是一个高性能的HTTP和反向代理服务 ...

随机推荐

  1. thinkphp5.0配置nginx重写规则

    我的centeros7.3系统,单主机实例: vi /usr/local/nginx/conf/nginx.conf 在如图红框位置加入以下代码(图片是截取的,截取部分上方还有其他的默认配置代码,代码 ...

  2. 【转】如何只用CSS做到完全居中

    英文原版链接:http://codepen.io/shshaw/full/gEiDt 我们都知道 margin:0 auto; 的样式能让元素水平居中,而 margin: auto; 却不能做到垂直居 ...

  3. magento 开启模板路径提示

    1.进入后台system->configuration->,选择main Website 2.advanced->developer中,将Debug中的Template Path H ...

  4. ASP.NET Core 2.2 基础知识(八) 主机 (未完待续)

    主机负责应用程序启动和生存期管理.共有两个主机 API : 1.Web 主机 : 适用于托管 Web 应用,基于 IWebHostBuilder ; 2.通用主机 : 适用于托管非 Web 应用. 基 ...

  5. AOJ 2266 Cache Strategy(费用流)

    [题目链接] http://judge.u-aizu.ac.jp/onlinejudge/description.jsp?id=2266 [题目大意] 有M个桶,N个球,球编号为1到N,每个球都有重量 ...

  6. 【贪心】Codeforces Round #402 (Div. 2) C. Dishonest Sellers

    按照b[i]-a[i],对物品从大到小排序,如果这个值大于零,肯定要立刻购买,倘若小于0了,但是没买够K个的话,也得立刻购买. #include<cstdio> #include<a ...

  7. Exercise01_07

    public class Outcome{ public static void main(String[] args){ double x, y; x=4*(1.0-1.0/3+1.0/5-1.0/ ...

  8. Java多线程——AQS框架源码阅读

    AQS,全称AbstractQueuedSynchronizer,是Concurrent包锁的核心,没有AQS就没有Java的Concurrent包.它到底是个什么,我们来看看源码的第一段注解是怎么说 ...

  9. 【R笔记】日期处理

    R语言学习笔记:日期处理 1.取出当前日期 Sys.Date() [1] "2014-10-29" date() #注意:这种方法返回的是字符串类型 [1] "Wed O ...

  10. 读取SequenceFile中自定义Writable类型值

    1)hadoop允许程序员创建自定义的数据类型,如果是key则必须要继承WritableComparable,因为key要参与排序,而value只需要继承Writable就可以了.以下定义一个Doub ...