zoukankan      html  css  js  c++  java
  • iptables一次性封多个ip,使用ipset 工具

    ipset是什么?

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

    1、ipset安装

    yum安装: yum install ipset

    源代码安装:进官网下载ipset-6.30.tar.bz2 ,

    yum -y install libmnl-devel libmnl

    tar -jxvf ipset-6.30.tar.bz2  && cd ipset-6.30 && ./configure --prefix=/usr/local/ipset && make && make install   完成安装

    2、创建一个ipset
    ipset create allset hash:net (也可以是hash:ip ,这指的是单个ip)
    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
     
    参考文章:http://www.cnblogs.com/harlanzhang/p/6190674.html
  • 相关阅读:
    HDU 2844 Coins(多重背包)
    HDU 4540 威威猫系列故事——打地鼠(DP)
    Codeforces Round #236 (Div. 2)
    FZU 2140 Forever 0.5
    HDU 1171 Big Event in HDU(DP)
    HDU 1160 FatMouse's Speed(DP)
    ZOJ 3490 String Successor
    ZOJ 3609 Modular Inverse
    ZOJ 3603 Draw Something Cheat
    ZOJ 3705 Applications
  • 原文地址:https://www.cnblogs.com/weifeng1463/p/6823969.html
Copyright © 2011-2022 走看看