力保密碼安全 fail2ban防暴力破解實戰
安全在線,一路隨行。話說作為網管需要隨時監控系統運行狀況,更要對異常情況作出有力的反擊。此次網管員和黑客之間的戰爭,起源是這樣的:一天下午,網管員突然收到Nagios的報警郵件,說郵件服務器的進程數超過閥值。警覺的網管員于是趕緊登錄上去查看。
這里說下分析的過程:
1.既然說進程數超過閥值,肯定先查看進程:ps -ef;
2.如果不能即時看到問題,那就動態顯示:top,看看究竟是哪個程序占用這么多進程;
3.最后確定了應該是courier-imap,但還不知道是什么原因導致;
4.查看ip連接,確認是否是其存在問題:netstat -ant,發現有大量的110連接;
5.既然是收信服務,那就趕緊追蹤查看郵件日志:tail -f /var/log/maillog;
6.發現問題:日志里有大量的登錄錯誤信息,發現是同一ip,并在用不同的用戶名密碼來暴力破解
7.稍等一會,確定目標IP后,將其ip的包丟棄:iptables -I INPUT -s 176.61.143.41 -j DROP #此ip為真實攻擊ip,所以在此曝光
8.稍等一會,再次查看進程,進程數有明顯下降,故障解決。原文地址:http://safe.zol.com.cn/318/3189977.html
#p#
介于這種安全隱患的存在,我們以后可以利用fail2ban來實現防暴力破解,防止惡意攻擊。
下面就來說說fail2ban具體是什么。
簡介:
fail2ban可以監視你的系統日志,然后匹配日志的錯誤信息(正則式匹配)執行相應的屏蔽動作(一般情況下是調用防火墻屏蔽),如:當有人在試探你的SSH、SMTP、FTP密碼,只要達到你預設的次數,fail2ban就會調用防火墻屏蔽這個IP,而且可以發送e-mail通知系統管理員,是一款很實用、很強大的軟件!
功能和特性:
1、支持大量服務。如sshd,apache,qmail,proftpd,sasl等等
2、支持多種動作。如iptables,tcp-wrapper,shorewall(iptables第三方工具),mail notifications(郵件通知)等等。
3、在logpath選項中支持通配符
4、需要Gamin支持(注:Gamin是用于監視文件和目錄是否更改的服務工具)
5、需要安裝python,iptables,tcp-wrapper,shorewall,Gamin。如果想要發郵件,那必需安裝postfix或sendmail
核心原理:
其實fail2ban就是用來監控,具體是調用iptables來實現動作!
好了,那下面來說說具體怎么安裝、部署吧。
一、首先是服務安裝
首先配置yum源,這里采用的是yum直接裝(也可源碼安裝)
vim /etc/yum.repos.d/CentOS-Base.repo
在最后新增:
01.[atrpms]
02.name=Red Hat Enterprise Linux \$releasever - \$basearch - ATrpms
03.baseurl=http://dl.atrpms.net/el\$releasever-\$basearch/atrpms/stable
04.gpgkey=http://ATrpms.net/RPM-GPG-KEY.atrpms
05.gpgcheck=1
06.enabled=1
然后直接就yum裝:yum -y install fail2ban
安裝完成后,服務配置目錄為:/etc/fail2ban
/etc/fail2ban/action.d #動作文件夾,內含默認文件。iptables以及mail等動作配置
/etc/fail2ban/fail2ban.conf #定義了fai2ban日志級別、日志位置及sock文件位置
/etc/fail2ban/filter.d #條件文件夾,內含默認文件。過濾日志關鍵內容設置
/etc/fail2ban/jail.conf #主要配置文件,模塊化。主要設置啟用ban動作的服務及動作閥值
/etc/rc.d/init.d/fail2ban #啟動腳本文件原文地址:http://safe.zol.com.cn/319/3190008.html
#p#
安裝后配置
首先來看看日志文件的默認定義:
cat /etc/fail2ban/fail2ban.conf |grep -v ^#
01.[Definition]
02.loglevel = 3
03.logtarget = SYSLOG #我們需要做的就是把這行改成/var/log/fail2ban.log,方便用來記錄日志信息
04.socket = /var/run/fail2ban/fail2ban.sock
再來看看主配置默認生效的配置:
cat /etc/fail2ban/jail.conf |grep -v ^# |less
01.[DEFAULT] #全局設置
02.ignoreip = 127.0.0.1 #忽略的IP列表,不受設置限制(白名單)
03.bantime = 600 #屏蔽時間,單位:秒
04.findtime = 600 #這個時間段內超過規定次數會被ban掉
05.maxretry = 3 #最大嘗試次數
06.backend = auto #日志修改檢測機制(gamin、polling和auto這三種)
07.
08.[ssh-iptables] #針對各服務的檢查配置,如設置bantime、findtime、maxretry和全局沖突,服務優先級大于全局設置
09.enabled = true #是否激活此項(true/false)
10.filter = sshd #過濾規則filter的名字,對應filter.d目錄下的sshd.conf
11.action = iptables[name=SSH, port=ssh, protocol=tcp] #動作的相關參數
12. sendmail-whois[name=SSH, dest=root, sender=fail2ban@example.com] #觸發報警的收件人
13.logpath = /var/log/secure #檢測的系統的登陸日志文件
14.maxretry = 5 #最大嘗試次數
PS:logpath(Centos5和Rhel5中)要寫成/var/log/secure,這個是系統登陸日志,不能隨意設置
service fail2ban start #啟動服務即可(就用默認的主配置文件里定義的)
service iptables start #fail2ban依賴預iptables
#之前改過日志路徑,不行的話就再重啟fail2ban
三、測試功能
測試機:192.168.30.251
fail2ban:192.168.29.253
在測試機上ssh 192.168.29.253,并且連續輸入超過5次密碼不對(經測試有延遲,多試幾次),就會出現下圖,連接不上
fail2ban上會產生日志記錄:阻擋了此ip的續連