Fail2ban 能夠監控系統日誌,匹配日誌中的錯誤信息(使用正則表達式),執行相應的屏蔽動作(支持多種,一般爲調用 iptables ),是一款很實用、強大的軟件。
如:攻擊者不斷嘗試窮舉 SSH 、SMTP 、FTP 密碼等,只要達到預設值,fail2ban 就會調用防火牆屏蔽此 IP ,並且可以發送郵件通知系統管理員。
安裝
#CentOS內置源並未包含fail2ban,需要先安裝epel源
yum -y install epel-release
#安裝fial2ban
yum -y install fail2ban
安裝成功後fail2ban配置文件位於/etc/fail2ban,其中jail.conf爲主配置文件,相關的匹配規則位於filter.d目錄,其它目錄/文件一般很少用到,如果需要詳細瞭解可自行搜索。
在jail.d文件夾下新增 jail.local文件,編輯內容如下:
vim /etc/fail2ban/jail.d/jail.local
- centos6.8 所使用環境 新增內容如下:
#defalut這裏是設定全局設置,如果下面的監控沒有設置就以全局設置的值設置。
[DEFAULT]
# 用於指定哪些地址ip可以忽略 fail2ban 防禦,以空格間隔。
ignoreip = 127.0.0.1/8
# 客戶端主機被禁止的時長(默認單位爲秒)
bantime = -l
# 過濾的時長(秒)
findtime = 600
# 匹配到的閾值(次數)
maxretry = 3
[ssh-iptables] # 策略 釋放時可用
# 是否開啓
enabled = true
# 過濾規則
filter = sshd
# 動作 發送郵件一定要加在action 後面,一定要注意位置
action = iptables[name=SSH, port=2222, protocol=tcp]
mail-whois[name=SSH,[email protected]]
# 日誌文件的路徑
logpath = /var/log/secure
# 匹配到的閾值(次數)
maxretry = 2
- 若 是firewall 防火牆, 使用如下配置(配置說明:是如果同一個IP,在10分鐘內,如果連續超過5次錯誤,則使用Firewalld將他IP ban了。輸入systemctl start fail2ban啓動fail2ban來試試效果。):
[DEFAULT]
ignoreip = 127.0.0.1/8
bantime = 86400
findtime = 600
maxretry = 5
#這裏banaction必須用firewallcmd-ipset,這是fiewalll支持的關鍵,如果是用Iptables請不要這樣填寫
banaction = firewallcmd-ipset
action = %(action_mwl)s
[sshd]
enabled = true
filter = sshd
port = 22
action = %(action_mwl)s
logpath = /var/log/secure
- 參數說明
ignoreip:IP白名單,白名單中的IP不會屏蔽,可填寫多個以(,)分隔
bantime:屏蔽時間,單位爲秒(s)
findtime:時間範圍
maxretry:最大次數
banaction:屏蔽IP所使用的方法,上面使用firewalld屏蔽端口
[sshd]:名稱,可以隨便填寫
filter:規則名稱,必須填寫位於filter.d目錄裏面的規則,sshd是fail2ban內置規則
port:對應的端口
action:採取的行動
logpath:需要監視的日誌路徑
查看當前被禁止登陸的ip:
fail2ban-client status ssh-iptables
根據策略釋放禁止的ip
fail2ban-client set ssh-iptables unbanip 14.120.90.183
其他命令
start 啓動fail2ban server和監獄
reload 重新加載配置文件
stop 暫停fail2ban和監獄
status 查看運行的監控服務數量和列表
set loglevel 設置日誌等級,有 CRITICAL, ERROR, WARNING,NOTICE, INFO, DEBUG
get loglevel 獲取當前日誌的等級
set <JAIL> idle on|off 設置某個監控(監獄)的狀態。
set <JAIL> addignoreip <IP> 設置某個監控(監獄)可以忽略的ip
set <JAIL> delignoreip <IP> 刪除某個監控(監獄)可以忽略的ip
set <JAIL> banip <IP> 將ip加入 監控(監獄)
set <JAIL> unbanip <IP> 將ip從監控(監獄)移除
相關鏈接
-
CentOS 7安裝fail2ban+Firewalld防止SSH爆破與CC攻擊(nginx防cc攻擊、防止wordpress爆破)
-
mail centos6.8發送郵件配置,查看Linux常用命令