zoukankan      html  css  js  c++  java
  • 【转】Linux防火墙(iptables)之黑名单

    原文:https://www.jianshu.com/p/b221b790cb1e

    https://linux-audit.com/blocking-ip-addresses-in-linux-with-iptables/

    iptables删除规则

    So if you would like to delete second rule :

    iptables -D INPUT 2

    ------------------------------

    如果你愿意,你可以保存特定的IP集到一个文件中,以后可以从文件中还原:

    ipset save banlist -f banlist.txt

    ipset destroy banlist
    ipset restore -f banlist.txt
     

    -------------------------------------------------

    再来说说今天的主题,黑名单。

    第一阶段:发现

    有一天发现 服务器的 /var/log/btmp文件有点大,所以搜索了一下

    /var/log/btmp这个文件记录错误的登录尝试,执行lastb命令就可以查看到最后一个不成功的登录尝试.
    如果文件太大可删除了再重新生成一个新的空文件。
    

    得到了一个lastb命令,发现大量的ssh登录信息,多的令人发指。好吧,让我来分析一下哪些IP次数最多

    #存文件便于以下的操作
    lastb >> lastb.log                                                 
    #过滤其它字段,只保留ip数据
    cat lastb.log|awk -F " " '{print $3}' >> ips.log  
    #记录ip的出现次数
    cat ips.log | sort | uniq -c >> ip_uniq.log          
    #最终形成列表
    cat ip_uniq.log|sort -k1,1nr  >> output.log
    

    有些同学说分段的命令完全可以合成一个嘛,使用高大上的管道符号。是的,形成一条命令即:
    lastb | awk -F " " '{print $3}' | sort | uniq -c | sort -k1,1nr >> output.log
    现在output.log的内容如下图

     
    暴光它

    到此第一阶段完成,我知道了哪些IP曾对我的服务器进行过疯狂的访问。下一部就是写到iptables的黑名单中。

    第二阶段:处理

    挑选请求次数超过5次的,大概有1000来条。
    问题来了,我需要一条一条加到iptables吗? 答案是肯定的,肯定不是了。 今天我所遇到的问题,所能想到的方案,几乎前辈们已经都已经实践过了。

    神器登场: ipset,非自带,请用yum install ipset安装
    简单讲一下 ipset 的使用

    #创建一个名称为 blacklist 的IP集合,最大容量为10000
    ipset create blacklist hash:ip maxelem 100000
    #查看你的IP集
    ipset list
    #增加ip
    ipset add blacklist 1.1.1.1
    #再次查看IP集
    ipset list
    
     
    ipset list结果

    好的, ipset基本使用已经初见。现在将刚才的恶意IP导入到ipset中

    #方法有点蹩脚
    grep -o '[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}' output.log | awk '{print "ipset add blacklist",$0}'|sh
    

    最后呢,将ipset与iptables关联即可

    iptables -I INPUT -m set --match-set banthis src -p tcp --destination-port 80 -j DROP
    /etc/init.d/iptables save
    

    屏蔽后再尝试ssh连接服务器,结果就如下图,嗯 ,是的,结束。

     
    ssh尝试登录

    第三阶段:扩展

    好文共享:linux大量屏蔽恶意IP地址

    比本文针对性强,同时给出了iblocklist,这个网站已搜集了大量的恶意IP,可以拿使用来,这才是生产生。

     


    ---------------------------------------------------------------------------补充------------

    自动IP地址禁用

    现在你应该看到了IP集合的强大了。维护IP黑名单是一件繁琐和费时的工作。实际上,有很多免费或者收费的服务可以来帮你完成这个。一个额外的好处是,让我们看看如何自动将IP黑名单加到IP集中。

    首先让我们从iblocklist.com得到免费的黑名单,这个网站有不同的免费和收费的名单。免费的版本是P2P格式。

    接下来我要使用一个名为iblocklist2ipset的开源Python工具来将P2P格式的黑名单转化成IP集。

    使用的下面命令安装iblocklist2ipset:

    pip是python管理包的工具,一般服务器自带,无需安装。

    在一些发行版如Fedora,你可能需要运行:

    现在到iblocklist.com,抓取任何一个P2P列表的URL(比如"level1"列表)。

    网站维护:利用iptables和ipset屏蔽恶意IP的访问

    粘帖URL到下面的命令中。

    上面的命令运行之后,你会得到一个名为banlist.txt的文件。如果查看它的内容,你会看到像这些:

    你可以用下面的ipset命令来加载这个文件:

    现在可以查看自动创建的IP集:

    在写这篇文章时候,“level1”类表包含了237,000个屏蔽的IP列表。你可以看到很多IP地址已经加入到IP集中了。

    最后,创建一条iptables命令来屏蔽这些坏蛋!

    总结

    屏蔽IP难免带来误伤,所以可以周期性释放,比如定期把已经加入关黑名单一周的IP释放出来,再犯规再给送进去。

    我的网站,攻击者IP大部分都是河南郑州的,一看服务器都是景安网络的服务器,也是醉醉的。

  • 相关阅读:
    我的2015年ccf的解答
    VS中出现“链接器工具错误,XXX工具模块对于SAFESEH映像是不安全的”的解决方法
    记录每次运行的时刻的小程序
    c语言中strcpy与strlen函数对字符串最后的''的处理
    windows8.1的启动目录的路径
    使用feof()判断文件结束时会多输出内容的原因
    [转]android sqlite db-journal文件产生原因及说明
    安卓备份 To Do(待办事项)的数据库
    下载YouTube视频的方法
    Firefox及我使用的firefox扩展
  • 原文地址:https://www.cnblogs.com/oxspirt/p/10272384.html
Copyright © 2011-2022 走看看