iptables封掉少量ip处理是没什么问题的,但是当有大量ip攻击的时候性能就跟不上了,iptables是O(N)的性能。而ipset就像一个集合,把需要封闭的ip地址放入这个集合中,ipset 是O(1)的性能,用的hash方式所以特别快。

一、软件及安装

1、iptables(一般linux都已经安装好的)

2、ipset:

ubuntu:apt-get install ipset

二、ipset的使用

1、查看ip集的列表信息

ipset list

2、创建ip集

ipset create XXXX hash:ip maxelem 100000 timeout 3600

XXXX:ip集的名字

hash:ip :为指定类型,还有其他好些类型,比如hash:net,hash:net,net等,具体可以man ipset

100000:为最大保存ip的数量

timeout: 为封闭ip的默认时间,这个参数可以不写,这样就永不解封,除非手动解封

3、增加ip地址到ip集

ipset add xxxx 1.1.1.1

增加网段

ipset add xxxx 1.1.1.0/24

4、删除指定的ip或网段

ipset del xxxx 1.1.1.1

ipset del xxxx 1.1.1.0/24

5、保存ip集到文件

ipset save xxxx>ipset_list.txt

6、还原ip集

ipset restore <ipset_list.txt

三、自动封禁和解封

1、创建ip集

ipset create forbidip hash:ip timeout 172800

2、创建iptables条目

iptables -A INPUT -p tcp -m set --match-set forbidip src -m multiport --dports 443,80 -j DROP

或者

iptables -A INPUT -p tcp -m set --match-set forbidip src -m multiport -j DROP

3、根据条件判断需要封闭的ip

条件:在上一分钟的nginx的请求中,单一ip请求数超过1000及request_uri中包含passwd字符串的ip都直接封禁,1小时后自动解禁。脚本如下

#!/bin/bash

FILES="/data/nginx_log/xxxxx/access.log"

DATE=`date -d '1 minutes ago' +%Y:%H:%M`

grep ${DATE} ${FILES}|awk -F'|' '{print $3}'|sort -n|uniq -c |sort -nr|head -1>/tmp/ips

grep ${DATE} ${FILES}|grep -i passwd|awk -F'|' '{print $3}'|sort -n|uniq>/tmp/ippwd

NUM=`awk '{print $1}' /tmp/ips`

IP=`awk '{print $2}' /tmp/ips`

IP2=`cat /tmp/ippwd`

threshold=1000

if [[ $NUM -gt $threshold ]];then

/sbin/ipset -! add forbidip $IP timeout 3600

fi

if [ -s /tmp/ippwd ];then

for i in $IP2

do

/sbin/ipset -! add forbidip $i

done

fi

4、脚本自动运行

在crontab中添加此脚本的自动运行

*/1 * * * * bash /path/to/script.sh

ipset和iptables配合来自动封闭和解封有问题的IP的更多相关文章

  1. iptables+ipset自动封闭和解封频繁访问web服务的恶意IP

    转载于互联网     iptables直接针对ip进行封禁,在ip数量不大的时候是没什么问题的,但当有大量ip的时候性能会严重下降,iptables是O(N)的性能.而ipset就像一个集合,把需要封 ...

  2. Iptables DDOS/CC 自动屏蔽脚本

    Iptables DDOS/CC 自动屏蔽脚本 May 20, 2013 最近不停地被 CC (DDOS的一种)频繁干扰,分享一个 iptables 屏蔽 DDOS 的脚本.让 crond 每分钟运行 ...

  3. Youtube-dl 配置 使用方法 + 配合aria2 多线程 下载 + 配合 ffmpeg 自动合并分段视频

    首先介绍软件,Youtube-dl可以下载网页的视频,功能很强大. 但遇到分段视频不能合并,遇到视频音频分开播放的网站也没办法合并视频音频,所以 需要用ffmpeg来配合的合并视频.合并过程是无损的, ...

  4. iptables自动屏蔽访问网站最频繁的IP

    iptables自动屏蔽访问网站频繁的IP 屏蔽每分钟访问超过200的IP 方法1:根据访问日志(Nginx为例 #!/bin/bash DATE=$(date +%d/%b/%Y:%H:%M) AB ...

  5. CentOS 配置 iptables 配合 ss

    转自:http://www.jianshu.com/p/28b8536a6c8a 环境: CentOS 6 shadowsocks iptables 在安装了ss-bash后,ss-bash每添加一次 ...

  6. Windows环境下安装配置Teamcity配合git自动发布mvc,webapi站点

    以下是本人配置Teamcity具体环境和步骤,只实现了项目发布,打包.Nodejs npm gulp没有配置成功,后期补上. 1 环境安装 本人使用的是windows7 sp1 64位系统,(.net ...

  7. ubuntu自动拉黑破解ssh服务的IP

    2013年的脚本,今天拿出来备份一下. vim /root/secure_ssh.sh #!/bin/bash cat /var/log/auth.log|awk '/Failed/{print $( ...

  8. iptables一次性封多个ip,使用ipset 工具

    ipset是什么? ipset是iptables的扩展,它允许你创建 匹配整个地址集合的规则.而不像普通的iptables链只能单IP匹配, ip集合存储在带索引的数据结构中,这种结构即时集合比较大也 ...

  9. ipset批量配置iptables

    简介: ipset是iptables的扩展,允许你创建匹配整个地址sets(地址集合)的规则.而不像普通的iptables链是线性的存储和过滤,ip集合存储在带索引的数据结构中,这种集合比较大也可以进 ...

随机推荐

  1. requests使用retry策略

    在urllib3中使用retry 在requests中使用retry 网络请求往往会有很多不受控制的意外情况发生,有时候我们要让它let it crash,有时候我们想多尝试几次. 以前,使用retr ...

  2. certificate & encryption

    openssl commonly used commands before use Configure to generate Makefile, should notice follow optio ...

  3. Ubuntu VMware workstation虚拟机清理缓存文件获得更大硬盘空间

    1 前言 VMware workstation 15 Player经常使用拖拉复制文件到虚拟机,从而导致了drag_and_drop特别大,占用了很多硬盘空间. fanbi@ubuntu:~/.cac ...

  4. unity中加载场景不销毁以及切换场景重复实例化

    问题描述 游戏开发中会有多个场景,有时会有这样的需求,我们需要保证场景跳转但是需要保持某个游戏对象不被销毁,比如:音乐 实现思路 unity中提供了DontDestroyOnLoad(),这个API ...

  5. Day04.a(对象类型的转换,多态)

    对象类型的转换 Dog dog = new Dog(); 通常情况下,对象(new Dog())类型和引用(dog)类型是相同的,当引用类型和对象类型不一致时,就需要类型转换. 向上转型:将较具体的类 ...

  6. Nginx负载-nginx转发到Swoole服务器(nginx配置文件变更)

  7. Map,HashMap,LinkedHashMap,TreeMap比较和理解

    /* * 获取功能: * V get(Object key):根据键获取值 * Set<K> keySet():获取集合中所有键的集合 * Collection<V> valu ...

  8. vim的简单使用以及一些常用的命令

    对于第一次用vi,有几点注意要提醒一下:1.用vi打开文件后,是处于「命令行模式(command mode)」,您要切换到「插入模式(Insert mode)」才能够输入文字.切换方法:在「命令行模式 ...

  9. sql server实现简繁转换

    /*--调用示例 gb_to_big和big_to_gb表存放着常用的简繁字 --可以百度到常用的简体汉字,然后用excel转换成繁体  再导入数据库. --转换为繁体 select dbo.f_GB ...

  10. Metaphor of quotient space

    In James Munkres "Topology" Section 22, the quotient space is defined as below. Definition ...