功能:linux
fail2ban是linux下一款安全工具。經過監視系統日誌,匹配日誌的錯誤信息(正則式匹配),而後執行相應的屏蔽動做(通常狀況下是調用防火牆屏蔽)。如:當有人在試探你的SSH、SMTP、FTP密碼,只要達到你預設的次數,fail2ban就會調用防火牆屏蔽這個IP,並且能夠發送e-mail通知系統管理員,是一款很實用、很強大的軟件!vim
安裝fail2ban:安全
yum install epel-release -y yum install fail2ban -y
備份配置文件:bash
cp /etc/fail2ban/fail2ban.conf /etc/fail2ban/fail2ban.local
編輯配置文件:ssh
相關主要文件說明:socket
/etc/fail2ban/action.d #動做文件夾,內含默認文件。iptables以及mail等動做配置ide
/etc/fail2ban/action.d #動做文件夾,內含默認文件。iptables以及mail等動做配置模塊化
vim /etc/fail2ban/jail.conf loglevel = 3 #默認日誌的級別 logtarget = /var/log/fail2ban.log #日誌的目的 socket = /tmp/fail2ban.sock #socket的位置
/etc/fail2ban/filter.d #條件文件夾,內含默認文件。過濾日誌關鍵內容設置工具
/etc/fail2ban/paths-*.conf #定義一些系統文件路徑,像日誌路徑編碼
#/etc/fail2ban/jail.conf #主要配置文件,模塊化。主要設置啓用ban動做的服務及動做閥值
# jail [del] 監獄
vim /etc/fail2ban/jail.conf ignoreip = 127.0.0.1 #忽略IP,在這個清單裏的IP不會被屏蔽 bantime = 600 #屏蔽時間,該bantime將被[ssh-iptables]中bantime覆蓋; findtime = 600 #發現時間,在此期間內重試超過規定次數,會激活fail2ban maxretry = 3 #默認嘗試次數 backend = auto #日誌修改檢測機制
啓用sshd服務的日誌分析,指定動做閥值便可。實例文件/etc/fail2ban/jail.conf及說明以下:
[DEFAULT] #全局設置 ignoreip = 127.0.0.1/8 #忽略的IP列表,不受設置限制(多個ip或ip段用空格隔開) bantime = 3600 #屏蔽時間,單位:秒 findtime = 300 #這個時間段內超過規定次數會被ban掉 maxretry = 3 #最大嘗試次數 usedns = warn #指定當日誌中遇到主機名時候是否反向解析,warn進行解析,但會記錄爲warning logencoding = auto #指定日誌文件的編碼,auto就是使用系統本地的編碼 enabled = false #全局開關 backend = auto #日誌修改檢測機制("pyinotify", "gamin", "polling", "systemd" 和"auto"這幾種) destemail = xflm_xx@163.com #郵件接收人 sender = fail2ban@localhost #郵件發送人 mta = mail [sshd] #單個服務檢查設置,如設置bantime、findtime、maxretry和全局衝突,服務優先級大於全局設置 enabled = true #是否激活此項(true/false) port = ssh #端口爲ssh logpath = %(sshd_log)s #安全日誌路徑 backend = %(sshd_backend)s #日誌修改檢測機制 action = %(action_mwl)s #檢測到非法登陸,進行的動做
配置Fail2ban
Fail2ban服務的配置文件在/etc/fail2ban目錄。在其中能夠找到jail.conf配置文件,我不會直接編輯這個文件,由於在升級軟件包時,會覆蓋這個文件,使配置失效。咱們應該建立一個新文件jail.local,在jail.local定義的值會覆蓋jail.conf中的值。
咱們來建立一個jail.local文件:
vim /etc/fail2ban/jail.local 寫入以下代碼: [DEFAULT] ignoreip = 127.0.0.1/8, 123.58.249.0/24 bantime = 3600 findtime = 300 maxretry = 3 #destemail = xxxxxxx@xxx.com # 覆寫 /etc/fail2ban/jail.d/00-firewalld.conf: banaction = iptables-multiport [sshd] enabled = true action = %(action_mwl)s [sshd-ddos] enabled = true
完成配置後,啓動fail2ban
systemctl start fail2ban && systemctl enable fail2ban
查詢fail2ban服務狀態
fail2ban-client status
# jail [del] 監獄
/etc/fail2ban/paths-*.conf #定義一些系統文件路徑,像日誌路徑
實用命令
最近一次啓動,fail2ban日誌:
journalctl -b -u fail2ban
實時跟蹤顯示fail2ban日誌:
tail -f /var/log/fail2ban.log
顯示防火牆規則:
iptables –L –n
移除禁止的ip
iptables -D f2b-sshd 1