注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

itoedr的it学苑

记录从IT文盲学到专家的历程

 
 
 

日志

 
 

iptables+ipset一次性封多个ip  

2016-12-17 18:30:51|  分类: xtables应用 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

         netfilter是linux系统下运行中其核心库里的网络数据报文的处理组件,而运行于用户空间的接口工具目前已发展出两大工具iptables与netables。
iptables+ipset一次性封多个ip - itoedr - itoedr的it学苑
 
     

ipset是什么?

           ipset是iptables的扩展,它允许你创建 匹配整个地址集合的规则。当然iprange也是一个可以参考的工具。

          而不像普通的iptables链只能单IP匹配, ip集合存储在带索引的数据结构中,这种结构即时集合比较大也可以进行高效的查找,除了一些常用的情况,比如阻止一些危险主机访问本机,从而减少系统资源占用或网络拥塞,IPsets也具备一些新防火墙设计方法,并简化了配置.总之,ipset可以定义一个学地址池供iptables工具使用,结合iptables或是netables将指令传递给netfilter核心运进程,linux核心系统执行命令将网络报文进行处理。更多内容见官网:http://ipset.netfilter.org/

iptables+ipset一次性封多个ip - itoedr - itoedr的it学苑
 

           当然我们还可以使用iprange来管理ip地址段,而这些地址段则可以在一个文本文件中加以定义。

1、ipset安装

yum安装: yum install ipset,而在ubuntu下,使用apt工具可以这样安装:sudo apt install ipset.


2、创建一个ipset

ipset create allset hash:net (也可以是hash:ip ,这指的是单个ip)

ipset的帮助说明
  • In order to drop traffic to-from banned networks or IP addresses, use IP sets in the raw table of netfilter.
  • If you want to change a set without disturbing your existing iptables rules, simply swap it with the new set:
    # Create the new set and add the entries to it
    ipset -N new-set ....
    ipset -A new-set ....
    ...
    # Swap the old and new sets
    ipset -W old-set new-set
    # Get rid of the old set, which is now under new-set
    ipset -X new-set
        

2.1、查看已创建的ipset

2.2、ipset默认可以存储65536个元素,使用maxelem指定数量

ipset create openapi hash:net maxelem 1000000

ipset list

3、加入一个黑名单ip

ipset add allset 145.201.56.109

4、创建防火墙规则,与此同时,allset这个IP集里的ip都无法访问80端口(如:CC攻击可用)

iptables -I INPUT -m set --match-set allset src -p tcp --destination-port 80 -j DROP

service iptables save

5、去除黑名单,与此同时,又可以访问了

ipset del allset 145.201.56.109

6、将ipset规则保存到文件

ipset save allset -f allset.txt

7、删除ipset

ipset destroy allset

8、导入ipset规则

ipset restore -f allset.txt

注意:

1、ipset的一个优势是集合可以动态的修改,即使ipset的iptables规则目前已经启动,新加的入ipset的ip也生效

实例解释:

例:某服务器被CC攻击,经过抓包或者一序列手段发现有一批IP是源攻击ip,因此我们需要封掉这些IP,如果用iptables一条一条加就麻烦些了。

#对TIME_WAIT的外部ip以及此对ip出现的次数经行求重排序。

netstat -ptan | grep TIME_WAIT | awk '{print $5}' | awk -F: '{print $1}' |sort |uniq -c | sort -n -r

#tcpdump 抓取100个包,访问本机80的ip进行求重排序 只显示前20个,这些ip即为攻击源IP,我们需要封掉它

tcpdump -tnn dst port 80 -c 100 | awk -F"." '{print $1"."$2"."$3"."$4}' | sort | uniq -c | sort -n -r |head -20

#新建一个setname.txt文件,以如下格式加入这些ip (有多少个ip就多少行)

vim setname.txt

add setname xxx.xxx.xxx.xxx

#导入setname.txt文件到ipset集

ipset restore -f setname.txt

#查看是否导入成功 (成功的话会发现一个新ipset名为 sername,且Members里就是那些攻击IP)

ipset list

#建立一条iptables规则,拦截这些攻击ip访问服务器80,也可以直接禁止这些ip的所有访问

iptables -I INPUT -m set --match-set setname src -p tcp --destination-port 80 -j DROP

  评论这张
 
阅读(36)| 评论(0)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017