Tag: fail2ban

不良访问的封禁

最近有产品说有个搜索被调用得很厉害,已经影响了java 容器的性能了。去看了一下,似乎是有那么一回事,同一个ip 不断地搜同一个关键词。不过我想说。。。这些应该可以做缓存的阿,走缓存的话,刷一下就过去了,哪会影响性能。。。

用 fail2ban 封一下吧

debian 源里已经有 fail2ban 了,redhat 貌似还没有,下个源码安装吧,也挺快的。

wget “http://downloads.sourceforge.net/project/fail2ban/fail2ban-stable/fail2ban-0.8.4/fail2ban-0.8.4.tar.bz2?r=http%3A%2F%2Fsourceforge.net%2Fprojects%2Ffail2ban%2Ffiles%2F&ts=1285615174&use_mirror=cdnetworks-kr-2″

tar jxf fail2ban-0.8.4.tar.bz2

cd fail2ban-0.8.4

python setup.py install

cp files/redhat-initd /etc/init.d/fail2ban

chmod +x /etc/init.d/fail2ban

算是安装完毕了。

修改配置文件,/etc/fail2ban/fail2ban.conf 这个不用改,主要改这个 /etc/fail2ban/jail.conf

[DEFAULT]

ignoreip = 127.0.0.1  #这里最好加上办公区的ip ,呵呵,把自己封了就太傻B 了

bantime  = 600 #ban 它多久

findtime  = 600 #检查多长时间内的日志

maxretry = 3 #在监控的日志中,出现了多少次就要ban 了

backend = auto #好像是说读取日志文件的算法,这里让它自动吧

全局变量,下面可以覆盖的

有很多模块,定义一个自己的吧

[nginx-iptables]

enabled = true  # 启用模块的意思

filter = nginx  # filter.d/nginx.conf , 必须在这里面写点东西

action = iptables[name=NGINX, port=80, protocol=tcp]  # iptables 的设置

mail-whois[name=nginx, dest=you@admin.com]  # 报警设置,写自己的邮箱吧,要起sendmail 噢

logpath = /data/nginx/logs/t.access.log  # 监控的log

maxretry = 100 #10 分钟使用100 次,ban 了你!

添加 /etc/fail2ban/filter.d/nginx.conf

[Definition]

failregex = ^<HOST> -.*”(GET|POST) \/search\.json.* HTTP\/.*$  # 写自己的正则吧,符合这个正则的,就算一次fail ,10分钟内100 次(我的设置),就ban 了,<HOST> 可以指代ip 或 hostname 什么的

ignoreregex =

配置完成,启动服务:/etc/init.d/fail2ban start

启动后,mail-whois 这个action 会发一个邮件去你的邮箱,成功 ban 了ip 后,也会发过去,还可以定义 unban 也发的。这个邮件,还真的会帮你 whois 那个 ip 呢,很好很强大,呵呵

希望封了以后就世界安静了吧。。。