免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 4501 | 回复: 9
打印 上一主题 下一主题

fail2ban 如何手动设置封ip 求知道的解答 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2011-12-21 10:21 |只看该作者 |倒序浏览
我使用fail2ban可以自动封ip (当然,这是正常的)
自动封ip的时候iptables例如是这样:

iptables -L

Chain fail2ban-httpd (2 references)
target     prot opt source               destination         
DROP       all  --  192.168.2.137        anywhere            
RETURN     all  --  anywhere             anywhere            
RETURN     all  --  anywhere             anywhere

我现在需要手动添加封锁的ip
我查看fail2ban-client的帮助,有这样两条:
    set <JAIL> bantime <TIME>                sets the number of seconds <TIME>
                                             a host will be banned for <JAIL>
    set <JAIL> banip <IP>                    manually Ban <IP> for <JAIL>

fail2ban-client set apache-access-2 banip 192.168.2.137 bantime 10  或者 fail2ban-client set apache-access-2 banip 192.168.2.137

执行以上命令iptables并没有规则,没有生效,还是可以访问。

(命令中的apache-access-2是fail.conf内的一个规则,已经确定可以使用没有问题)

求解答,谢谢

论坛徽章:
381
CU十二周年纪念徽章
日期:2014-01-04 22:46:58CU大牛徽章
日期:2013-03-13 15:32:35CU大牛徽章
日期:2013-03-13 15:38:15CU大牛徽章
日期:2013-03-13 15:38:52CU大牛徽章
日期:2013-03-14 14:08:55CU大牛徽章
日期:2013-04-17 11:17:19CU大牛徽章
日期:2013-04-17 11:17:32CU大牛徽章
日期:2013-04-17 11:17:37CU大牛徽章
日期:2013-04-17 11:17:42CU大牛徽章
日期:2013-04-17 11:17:47CU大牛徽章
日期:2013-04-17 11:17:52CU大牛徽章
日期:2013-04-17 11:17:56
2 [报告]
发表于 2011-12-21 10:24 |只看该作者
DROP       all  --  192.168.2.137        anywhere  
这个不是已经生效了吗,怎么还能访问呢

论坛徽章:
0
3 [报告]
发表于 2011-12-21 10:29 |只看该作者
抱歉我没说明白,我复制出来的iptables -L 是自动封的。我意思只是让大家看的更明白些,封锁后应该在iptables里面有规则。

可是手动的其实没有

论坛徽章:
381
CU十二周年纪念徽章
日期:2014-01-04 22:46:58CU大牛徽章
日期:2013-03-13 15:32:35CU大牛徽章
日期:2013-03-13 15:38:15CU大牛徽章
日期:2013-03-13 15:38:52CU大牛徽章
日期:2013-03-14 14:08:55CU大牛徽章
日期:2013-04-17 11:17:19CU大牛徽章
日期:2013-04-17 11:17:32CU大牛徽章
日期:2013-04-17 11:17:37CU大牛徽章
日期:2013-04-17 11:17:42CU大牛徽章
日期:2013-04-17 11:17:47CU大牛徽章
日期:2013-04-17 11:17:52CU大牛徽章
日期:2013-04-17 11:17:56
4 [报告]
发表于 2011-12-21 10:32 |只看该作者
手工用iptables添加规则呢

论坛徽章:
0
5 [报告]
发表于 2011-12-21 10:34 |只看该作者
那肯定可以呀,但是就缺少了fail2ban的bantime的功能了。现在的需求就是能够封锁一定的时间

论坛徽章:
0
6 [报告]
发表于 2011-12-23 21:53 |只看该作者
本帖最后由 可可火山 于 2011-12-23 21:54 编辑

我也一直用fail2ban,虽然手动加banip不怎么用到,不过我这里有个错误的。
  1. [root@centos action.d]# fail2ban-client -V
  2. Fail2Ban v0.8.4

  3. Copyright (c) 2004-2008 Cyril Jaquier
  4. Copyright of modifications held by their respective authors.
  5. Licensed under the GNU General Public License v2 (GPL).

  6. Written by Cyril Jaquier <[email]cyril.jaquier@fail2ban.org[/email]>.
  7. Many contributions by Yaroslav O. Halchenko <[email]debian@onerussian.com[/email]>.
  8. [root@centos action.d]# fail2ban-client set ssh-iptables banip 192.168.1.137 bantime 300
  9. global name 'time' is not defined
  10. [root@centos action.d]# fail2ban-client set ssh-iptables banip 192.168.1.137
  11. global name 'time' is not defined
  12. [root@centos action.d]#
复制代码

论坛徽章:
0
7 [报告]
发表于 2011-12-26 16:05 |只看该作者
回复 6# 可可火山


    我用你的命令的时候就不会报错。但是没有效果。
    后来自己写了单独的规则,配合一个shell脚本基本满足需求了

论坛徽章:
0
8 [报告]
发表于 2011-12-26 16:12 |只看该作者
回复 7# louyuguang


    能发下你的解决方法么?

论坛徽章:
0
9 [报告]
发表于 2011-12-27 10:01 |只看该作者
本帖最后由 louyuguang 于 2011-12-27 10:03 编辑

回复 8# 可可火山


    是一个蠢的办法,主要是通过fail2ban添加新规则,满足的需求,我们的需求是只要能按1小时或者1天禁止就可以了。所以下面脚本只有1天和1小时,当然这个方法可以改的更灵活
     我们的需求中还要可以对网段进行禁止访问功能。




添加一个新action:
cp  /action.d/iptables.conf /action.d/iptables-subnet.conf

修改/action.d/iptables-subnet.conf
actionban = iptables -I fail2ban-<name> 1 -s <ip>/24 -j DROP
actionunban = iptables -D fail2ban-<name> -s <ip>/24 -j DROP

在ip选项的后面加上/24
这样添加iptables规则时候就会对网段进行封锁

创建一个新filter.d
[root@CentOS6-78 fail2ban]# cat filter.d/manually.conf
[Definition]
failregex = <HOST>

在jail.conf添加一个规则:
[manually-ip]
enabled  = true
filter   = manually
action   = iptables[name=httpd, port=80, protocol=tcp]
logpath  = /etc/fail2ban/manually-ip
maxretry = 1

[manually-subnet]
enabled  = true
filter   = manually
action   = iptables-subnet[name=httpd, port=80, protocol=tcp]
logpath  = /etc/fail2ban/manually-subnet
maxretry = 1

需要创建这两个空文件,/etc/fail2ban/manually-ip     /etc/fail2ban/manually-subnet

新建一个脚本:
[root@CentOS6-78 fail2ban]# cat fail2ban
#!/bin/bash

ip=$1
value=$2
time=$3

fail2ban()
{
if [ $value == "ip" ];then
        if [ $time = "day" ];then
                /usr/bin/fail2ban-client set manually-ip bantime 86400 >/dev/null
                echo $ip `date` >> /etc/fail2ban/manually-ip
                exit 0
        elif [ $time = "hour" ];then
                /usr/bin/fail2ban-client set manually-ip bantime 3600 >/dev/null
                echo $ip `date` >> /etc/fail2ban/manually-ip
                exit 0
        else
                echo "The 3rd parameter must be "day" or "hour""
                exit 1
        fi
elif [ $value == "subnet" ];then
        if [ $time = "day" ];then
                /usr/bin/fail2ban-client set manually-subnet bantime 86400 >/dev/null
                echo $ip `date` >> /etc/fail2ban/manually-subnet
                exit 0
        elif [ $time = "hour" ];then
                /usr/bin/fail2ban-client set manually-subnet bantime 3600 >/dev/null
                echo $ip `date` >> /etc/fail2ban/manually-subnet
                exit 0
        else
                echo "The 3rd parameter must be "day" or "hour""
                exit 1
        fi
else
        echo "The 2nd parameter must be "ip" or "subnet""
        exit 1
fi
}

case "$#" in
        3 ) fail2ban
        ;;
        * ) echo printf "Usage: \nfail2ban 192.168.2.137 ip day\nfail2ban 192.168.2.0 subnet hour\n";;
esac
exit 0


论坛徽章:
0
10 [报告]
发表于 2011-12-27 15:01 |只看该作者
回复 9# louyuguang


    挺不错的方案哈,有时间可以看看fail2ban源代码看原来的思路哪里出问题了,python的代码应该还容易懂
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP