ipset和iptables配合来自动封闭和解封有问题的IP

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
时间: 2025-01-31 06:49:21

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

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

首先介绍软件,Youtube-dl可以下载网页的视频,功能很强大. 但遇到分段视频不能合并,遇到视频音频分开播放的网站也没办法合并视频音频,所以 需要用ffmpeg来配合的合并视频.合并过程是无损的,不用担心.自动操作,不用自己动手. 但Youtube-dl还有个缺点,就是下载时单线程.简直就是龟速,下载视频往往还比较大,单线程是不可能使用的. 所以需要aria2来使用多线程. 一.安装python环境,官网 https://www.python.org/,下载最新版本. 安装时记得添加环境.

配合mybatis-generator 自动生成dao、model、mapper层

generator  properties: # 数据库驱动jar 路径 drive.class.path=E:\\develop_softs\\.m2\\repository\\mysql\\mysql-connector-java\\5.1.30\\mysql-connector-java-5.1.30.jar # 数据库连接参数 jdbc.driver=com.mysql.jdbc.Driver jdbc.url=jdbc:mysql://localhost:3306/quick4j?us

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

2013年的脚本,今天拿出来备份一下. vim /root/secure_ssh.sh #!/bin/bash cat /var/log/auth.log|awk '/Failed/{print $(NF-3)}'|sort|uniq -c|awk '{print $2"="$1;}' > /tmp/blackIP.txt TRYCOUNT="5" for i in `cat /tmp/blackIP.txt` do IP=`echo $i |awk -F=

iptables自动屏蔽恶意高流量ip

问题描述: 最近公司的nginx代理服务器,半夜都流量很高,可能是恶意用户开挂刷新网站页面. 如前段时间新闻上所说的黄牛党开挂刷新火车票网站一样,刷得网站几乎近似瘫了.因为我们公司网站是彩票开奖系统,也怕这样子恶意被刷,亟待解决. 解决办法: 这台服务器就是个nginx代理服务器,因此可以借助nginx的日志查看 cat /opt/webapps/log_nginx/518.access.log|awk -F'?' '{print $1}'|awk '{print $1}'|sort -r| u

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

ipset是什么? ipset是iptables的扩展,它允许你创建 匹配整个地址集合的规则.而不像普通的iptables链只能单IP匹配, ip集合存储在带索引的数据结构中,这种结构即时集合比较大也可以进行高效的查找,除了一些常用的情况,比如阻止一些危险主机访问本机,从而减少系统资源占用或网络拥塞,IPsets也具备一些新防火墙设计方法,并简化了配置.官网:http://ipset.netfilter.org/ 1.ipset安装 yum安装: yum install ipset 源代码安装:

ubuntu开机自动加载iptables配置(转)

原文:http://www.xuebuyuan.com/730127.html iptables的使用参见http://wiki.ubuntu.org.cn/IptablesHowTo iptables配置完成后,规则是自动立即生效的,但是机器重启动后,规则会丢失 ubuntu下可以通过以下步骤保存iptables设置,并实现开机自动加载 1.iptables配置完成后手动保存 执行iptables-save > /etc/iptables.up.rules ,将当前配置保存再iptables.

Linux使用iptables设置黑白名单使用ipset工具

1,下面我先说下iptables的基本配置规则,然后再说ipset以下使用C7 x86_64为实验环境CentOS7默认的防火墙不是iptables,而是firewalle.如果你没有安装iptables的话,你可以使用以下命令进行安装systemctl stop firewalldsystemctl disable firewalldsystemctl mask firewalld上面的意思是先屏蔽掉原有的firewall防火墙,下面我们就开始安装iptables,至于为什么要安装IPtabl

iptables 防火墙实现

防火墙是什么?: 我们要讲防火墙,首先要了解什么是防火墙,其实防火墙就是设定一些规则来管制过滤进入到我们网 络内的主机IP数据包的一种机制!它可以限制你的文件传输服务 (FTP)可以限制主机可以通过的服务:还可以限制主机对外联等等...防火墙分为硬件防火墙和软件防火墙.我们下边说的为软件防火墙. 我们要知道,防火墙的规则是建立在内核上的,内核有提供Netfilter包过滤机制,netfilter的机制内核自建的,那我们又该如何操纵它呢?Linux6.x上为我们提供了iptables这个工具来实现

防火墙之 iptables软件(Netfilter机制)(读鸟哥笔记)欢迎指出错误

kernel版本不同 防火墙机制不同--2004年以后的distributions 已经都为2.6的kernel Version 2.0:使用 ipfwadm 这个防火墙机制: Version 2.2:使用的是 ipchains 这个防火墙机制: Version 2.4 与 2.6 :主要是使用 Netfilet机制的iptables 这个软件,不过在某些早期的 Version 2.4 版本也同时支持 ipchains (编译成为模块).不过,不建议在 2.4 之后的核心版本使用 ipchain