最近客戶的主機一直被入侵,後來發現是因為駭客用暴力破解法,去試 ftp 的帳號及密碼,有的客戶帳號密碼設的太簡單一下就被破解了,被放了後門程式及發廣告信程式,更糟的是放了攻擊程式去攻別人的主機,真的是很頭大
後來我上網找到一個不錯的工具程式 fail2ban ,他是利用 ftp 的 log 檔來偵測相同 ip 錯誤登入的次數,只要超過設定的次數(內定3次),就會自動用 iptable 或 ipfw 把那個 ip 封鎖掉,還可以設定封鎖的時間,內定是 600 秒
我是用 ports 安裝的,設定還算簡單
複製程式
cd /usr/ports/security/py-fail2ban
make install clean
安裝後到 rc.conf 加一下
fail2ban_enable="YES"
這樣下次開機才會自動啟動
設定放在 /usr/local/etc/fail2ban/jail.conf
這個檔已設定了很多模組,如果你用的是 iptable ,可以依自己的需求 把 enabled 改為 true
因為我的主機防火牆是用 ipfw ,所以要自己加
複製程式
[vsftpd-ipfw]
enabled = true
filter = vsftpd
action = ipfw[name=VSFTPD, localhost=any, port=ftp]
sendmail-whois[name=VSFTPD, dest=你的信箱]
logpath = /var/log/vsftpd.log
maxretry = 3
bantime = 86400
以上是用 ipfw 針對 vsftp 登入3次失敗的 ip 做封鎖
另外 fail2ban 還可以針對 dns 查詢做防護,不過 dns 是用 udp
我查了一下 /usr/local/etc/fail2ban/action.d 中的 ipfw.conf 只能擋 tcp
所以我複製了一份來改,另存為 ipfw-udp.conf
然後在 jail.conf 中加入
複製程式
[named-refused-ipfw]
enabled = true
filter = named-refused
action = ipfw-udp[name=Named, localhost=any, port=domain]
sendmail-whois[name=Named, dest=你的信箱]
logpath = /etc/namedb/working/security.log
bantime = 86400
ignoreip = 你不想擋的IP
另外 /etc/namedb/named.conf 中要開啟記祿才可以
複製程式
logging {
channel security_file {
file "/var/log/named/security.log" versions 3 size 30m;
severity dynamic;
print-time yes;
};
category security {
security_file;
};
};
設定後,可以先手動執行看看
/usr/local/etc/rc.d/fail2ban start
如果有什麼問題,可以查 /var/log/fail2ban.log
這樣就大功告成了,希望對有需要的人有幫助..