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

摘要:
iptables可以阻止少量的IP处理,但当存在大量IP攻击时,性能无法跟上。iptables是O性能。ipset就像一个集合。需要关闭的IP地址被放入此集合。ipset是O的性能,因此哈希方法非常快。

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》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇Linux自带神器logrotate详解Linux服务器,服务管理--systemctl命令详解,设置开机自启动下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

CentOS7下Firewall防火墙配置用法详解

centos 7中防火墙是一个非常的强大的功能了,但对于centos 7中在防火墙中进行了升级了,下面我们一起来详细的看看关于centos 7中防火墙使用方法。 FirewallD 提供了支持网络/防火墙区域(zone)定义网络链接以及接口安全等级的动态防火墙管理工具。它支持 IPv4, IPv6 防火墙设置以及以太网桥接,并且拥有运行时配置和永久配置选项...

IPTABLES详解(10):IPTABLES自定义链

前提基础: 当主机收到一个数据包后,数据包先在内核空间中处理,若发现目的地址是自身,则传到用户空间中交给对应的应用程序处理,若发现目的不是自身,则会将包丢弃或进行转发。 iptables实现防火墙功能的原理是:在数据包经过内核的过程中有五处关键地方,分别是PREROUTING、INPUT、OUTPUT、FORWARD、POSTROUTING,称为钩子函数,...

iptables禁止端口和开放端口

1、关闭所有的 INPUT FORWARD OUTPUT 只对某些端口开放。 下面是命令实现: iptables -P INPUT DROP iptables -P FORWARD DROP iptables -P OUTPUT DROP 再用命令 iptables -L -n 查看 是否设置好, 好看到全部 DROP 了 这样的设置好了,我们只是...

Linux下防御DDOS攻击的操作梳理

DDOS的全称是Distributed Denial of Service,即"分布式拒绝服务攻击",是指击者利用大量“肉鸡”对攻击目标发动大量的正常或非正常请求、耗尽目标主机资源或网络资源,从而使被攻击的主机不能为合法用户提供服务。 DDOS攻击的本质是:利用木桶原理,寻找利用系统应用的瓶颈;阻塞和耗尽;当前问题:用户的带宽小于攻击的规模,噪声访问带宽成...

iptables详解之filter

iptables详解之filter iptables令很多小伙伴脑阔疼,下面我们来说说如何使用iptables。 一、iptables格式 1.1、iptables 帮助 通过iptables --help查看一下iptables用法 [root@note1 ~]# iptables --help iptables v1.4.21 Usage: ipta...

1.iptables概念

常见的攻击手段 拒绝服务 口令破解 欺骗用户(社工) 已知漏洞 常见的安全防御手段 基础类防火墙设备 IDS类,入侵检测系统 IPS类,入侵防御系统 主动安全类设备 防火墙有关概念 1.防火墙定义 防火墙是工作在"主机边缘"处或在"网络边缘"处对数据报文进行检测,并且能够根据事先定义好的规则,对数据报文进行"相关处理"的模块。 2.防火墙的分类 (1)根据...