fail2ban使用教程
介紹
- fail2ban用於監視系統日誌,通過正則表達式匹配錯誤錯誤信息,設置一定的條件觸發相應的屏蔽動作。
在筆者的vps裏,主要是用於ssh的保護,ssh登錄錯誤的時候會記錄到 /var/log/secure,fail2ban通過 gamin檢測到新增日誌,10min內同一ip連續登陸5次就會封禁30min。
安裝
- 這裏有兩種安裝方式,使用yum安裝或者通過rpm安裝。筆者的系統版本是CentOS-6.7
yum安裝
- #首先安裝epel源,如果已經安裝可以跳過此步
yum install -y epel-release
#然後安裝fail2ban:yum install -y fail2ban
rpm安裝
- fail2ban依賴下面四個安裝包:
- ed: Linux 操作系統下最簡單的文本編輯器,以行爲單位對文件進行編輯
- gamin-python: python調用gamin的一個模塊,gamin實現了一套監控文件變化的機制
- ipset: 管理 ip地址/端口/mac地址 的模塊,一般用於輔助提高iptables的性能
- python-inotify: python的一個模塊,實現了文件變化通知機制
配置文件說明
配置文件位於:
- /etc/fail2ban/action.d/ //採取相對應措施的目錄
- /etc/fail2ban/fail2ban.conf //fail2ban的配置文件
- /etc/fail2ban/fail2ban.d/ //fail2ban的配置文件目錄
- /etc/fail2ban/filter.d/ //具體過濾規則文件目錄
- /etc/fail2ban/jail.conf //阻擋設定文件
- /etc/fail2ban/jail.d/ //阻擋設定文件的目錄
- /etc/fail2ban/paths-*.conf //不同linux發行版下路徑的相關設置,在jail.conf的[INCLUDES]裏指定
fail2ban.conf是針對fail2ban程序運行本身的一些設置。
jail.conf 是fail2ban的業務功能設置,裏面設置了需要監控那些服務以及如何保護等,裏邊已經針對常用的服務提供了監控方案,比如sshd、apache、3proxy等,筆者只啓用了sshd的保護。有一個[DEFAULT]部分適用於所有其他部分,除非默認選項在其他部分中覆蓋。
基本配置解析
- ignoreip :這是一個空格分隔的IP地址列表,不能被fail2ban阻止。 例如,如果連接到服務器的計算機具有靜態IP地址,則可能需要在此處列出。
- bantime :如果被fail2ban(600秒= 10分鐘)捕獲,主機被阻止的時間(秒)》
- maxretry :最大 主機被fail2ban阻止之前失敗的登錄嘗試次數。
- 過濾器 :指在/etc/fail2ban/filter.d中的相應過濾器文件。
- logpath :fail2ban檢查失敗的登錄嘗試的日誌文件。
如/etc/fail2ban/jail.conf頂部的註釋所示 ,我們不會修改/etc/fail2ban/jail.conf本身來將其調整爲我們的需要,而是通過創建新的配置文件來覆蓋/ etc / fail2ban / jail.local 。
啓用sshd的保護
-
在jail.conf的[sshd]中加上一行enabled = true就可以:
# SSH servers
[sshd]
port = ssh
logpath = %(sshd_log)s
enabled = true