环境介绍:http是一个tomcat 的js程序 ,设置的路径为/opt/tomcat5/logs/localhost_access_log.txt
OS:centos 5.3  fail2ban版本:fail2ban-0.8.2-3.el5.rf.noarch.rpm
官方网站:http://www.fail2ban.org/wiki/index.php/Main_Page

背景:及时发现别人的恶意请求并禁止

步骤:

1.安装fail2ban
这里我走了弯路,下源码包安装报错,大家可以这个网址下载:http://packages.sw.be/fail2ban/

 

 
  
  1. #rpm -ivh fail2ban-0.8.23.el5.rf.noarch.rpm 

 

2.配置fail2ban的自定义过滤规则
分析/opt/tomcat5/logs/localhost_access_log.txt  日志的恶意请求如下 :

 

 
  
  1. 192.168.32.41 - - [10/Sep/2010:18:11:27 +0800] "GET 12345678.txt HTTP/1.1" 404 1063  
  2. 192.168.32.41 - - [10/Sep/2010:18:11:27 +0800] "GET 12345678.txt HTTP/1.1" 404 1063  
  3. 192.168.32.41 - - [10/Sep/2010:18:11:29 +0800] "GET 12345678.txt HTTP/1.1" 404 1063  
  4. 192.168.32.41 - - [10/Sep/2010:18:11:29 +0800] "GET 12345678.txt HTTP/1.1" 404 1063  
  5. 192.168.32.41 - - [10/Sep/2010:18:11:29 +0800] "GET 12345678.txt HTTP/1.1" 404 1063  
  6. 192.168.32.41 - - [10/Sep/2010:18:11:29 +0800] "GET 12345678.txt HTTP/1.1" 404 1063  

从***行为特征来看, 这是短时间连续导致服务器发送HTTP 404文件未找到错误码, 下面是用于发现上述***的fail2ban filter规则,
在/etc/fail2ban/filter.d/目录下建立tomcat.conf文件保存下面的内容:

 

 
  
  1. [Definition]  
  2. failregex = <HOST> -.*- .*HTTP/1.* 404 .*$  
  3. ignoreregex = 

3.测试fail2ban的过滤规则

 

 
  
  1. # fail2ban-regex /opt/tomcat5/logs/localhost_access_log.txt /etc/fail2ban/filter.d/tomcat.conf 

结果如下:

 

 
  
  1. Running tests 
  2. =============  
  3.  
  4. Use regex file : /etc/fail2ban/filter.d/tomcat.conf  
  5. Use log file   : /opt/tomcat5/logs/localhost_access_log.txt  
  6.  
  7.  
  8. Results 
  9. =======  
  10.  
  11. Failregex  
  12. |- Regular expressions:  
  13. |  [1]  -.*- .*HTTP/1.* 404 .*$  
  14. |  
  15. `- Number of matches:  
  16.    [1] 13 match(es)  
  17.  
  18. Ignoreregex  
  19. |- Regular expressions:  
  20. |  
  21. `- Number of matches:  
  22.  
  23. Summary 
  24. =======  
  25.  
  26. Addresses found:  
  27. [1]  
  28.     192.168.32.41 (Fri Sep 10 18:10:59 2010)  
  29.     192.168.32.41 (Fri Sep 10 18:11:27 2010)  
  30.     192.168.32.41 (Fri Sep 10 18:11:27 2010)  
  31.     192.168.32.41 (Fri Sep 10 18:11:29 2010)  
  32.     192.168.32.41 (Fri Sep 10 18:11:29 2010)  
  33.     192.168.32.41 (Fri Sep 10 18:11:29 2010)  
  34.     192.168.32.41 (Fri Sep 10 18:11:29 2010)  
  35.     192.168.32.41 (Fri Sep 10 18:11:30 2010)  
  36.     192.168.32.41 (Fri Sep 10 18:11:30 2010)  
  37.     192.168.32.41 (Fri Sep 10 18:27:44 2010)  
  38.     192.168.32.41 (Fri Sep 10 18:27:47 2010)  
  39.     192.168.32.41 (Fri Sep 10 18:27:50 2010)  
  40.     192.168.32.41 (Fri Sep 10 18:27:53 2010)  
  41.  
  42. Date template hits:  
  43. 0 hit(s): Month Day Hour:Minute:Second  
  44. 0 hit(s): Weekday Month Day Hour:Minute:Second Year  
  45. 0 hit(s): Weekday Month Day Hour:Minute:Second  
  46. 0 hit(s): Year/Month/Day Hour:Minute:Second  
  47. 130 hit(s): Day/Month/Year:Hour:Minute:Second  
  48. 0 hit(s): Year-Month-Day Hour:Minute:Second  
  49. 0 hit(s): Day-Month-Year Hour:Minute:Second[.Millisecond]  
  50. 0 hit(s): TAI64N  
  51. 0 hit(s): Epoch  
  52.  
  53. Success, the total number of match is 13  
  54.  
  55. However, look at the above section 'Running tests' which could contain important  
  56. information. 

4.激活fail2ban的规则
从测试结果可以看出, 恶意***节点的IP地址和***时间都能够正确发现, 因此可以进一步修改fail2ban的配置文件激活上述规则.
下面是我的/etc/fail2ban/jail.local配置文件内容:

 

 
  
  1. [tomcat]  
  2. enabled = true 
  3. port = http,https  
  4. filter = tomcat 
  5. action = iptables[name=tomcatport=8080protocol=tcp]   
  6.          sendmail-whois[name=tomcatdest=abc@mail.com]  
  7. maxretry = 2 
  8. logpath = /opt/tomcat5/logs/localhost_access_log.txt  
  9. bantime  = 1800 

5.测试效果
生成2个错误的链接,查看fail2ban日志 如下:

 

 
  
  1. 2010-09-10 18:33:30,156 fail2ban.actions.action: INFO   Set actionStart = printf %b "Subject: [Fail2Ban] : started  
  2. From: Fail2Ban <> 
  3. To: \n  
  4. Hi,\n  
  5. The jail  has been started successfully.\n  
  6. Regards,\n  
  7. Fail2Ban" | /usr/sbin/sendmail -f    
  8. 2010-09-10 18:33:30,157 fail2ban.actions.action: INFO   Set actionUnban =   
  9. 2010-09-10 18:33:30,158 fail2ban.actions.action: INFO   Set actionCheck =   
  10. 2010-09-10 18:33:31,546 fail2ban.actions: WARNING [tomcat] Ban 192.168.32.41 

 

并查看管理员邮箱 ,已经收到邮件了,内容大概如下:
 

 
  
  1. Hi,  
  2.  
  3. The IP 192.168.32.41 has just been banned by Fail2Ban after  
  4. 4 attempts against tomcat.  
  5.  
  6.  
  7. Here are more information about 192.168.32.41:  
  8.  
  9. [Querying whois.arin.net]  
  10. [whois.arin.net]  
  11. #  
  12. # Query terms are ambiguous.  The query is assumed to be:  
  13. #     "n 192.168.32.41"  
  14. #  
  15. # Use "?" to get help.  

 

6.写完收工。
上面只是根据我的需求,写的一点东西,其他很功能大家自己可以去研究 。