fail2ban 防止暴力破

0x6g1k8T發表於2020-11-30

本測試需要的環境:

1)系統: centos7

2) python 版本大於2.4

具體操作步驟:

1. 編譯安裝fail2ban需要從官網下載包,解壓安裝即可

2.使用yum安裝fail2ban

[root@zmedu63 ~]# yum -y install epel-release

[root@zmedu63 ~]# yum -y install fail2ban

3.相關主要檔案說明

/etc/fail2ban/action.d           

#動作資料夾,內含預設檔案。iptables以及mail等動作配置。

/etc/fail2ban/fail2ban.conf    

#定義了fai2ban日誌級別、日誌位置及sock檔案位置。

/etc/fail2ban/filter.d               

#條件資料夾,內含預設檔案。過濾日誌關鍵內容設定。

/etc/fail2ban/jail.conf          

#主要配置檔案,模組化。主要設定啟用ban動作的服務及動作閥值。

4. fail2ban測試

一般情況下對於10分鐘內120次單個IP對伺服器密碼登入驗證失敗,我們就認為是機器所謂,也就是暴力破解。

但為了測試方便,我們按照下面的測試條件來進行測試:

設定條件:SSH遠端登入5分鐘內3次密碼驗證失敗,禁止使用者IP訪問主機1小時,1小時該限制自動解除,使用者可重新登入。

因為動作檔案(action.d/iptables.conf)以及日誌匹配條件檔案(filter.d/sshd.conf )安裝後是預設存在的。基本不用做任何修改。所有主要需要設定的就只有jail.conf檔案。啟用SSHD服務的日誌分析,指定動作閥值即可。

例項檔案/etc/fail2ban/jail.conf及說明如下:

[root@zmedu63 ~]# vim /etc/fail2ban/jail.conf

[DEFAULT]               

#全域性設定。

ignoreip = 127.0.0.1/8       

#忽略的IP列表,不受設定限制。

bantime  = 600             

#遮蔽時間,單位:秒。

findtime  = 600             

#這個時間段內超過規定次數會被ban掉。

maxretry = 60                

#最大嘗試次數。

backend = auto            

#日誌修改檢測機制(gamin、polling和auto這三種)。

[sshd]               

#單個服務檢查設定,如設定bantime、findtime、maxretry和全域性衝突,服務優先順序大於全域性設定。

port    = ssh

logpath = %(sshd_log)s

backend = %(sshd_backend)s

#加入如下內容

enabled  = true             

#是否啟用此項(true/false)修改成 true。

filter = sshd                   

#過濾規則filter的名字,對應filter.d目錄下的sshd.conf。

action = iptables[name=SSH, port=ssh, protocol=tcp]             #動作的相關引數,對應action.d/iptables.conf檔案。

sendmail-whois[name=SSH, 

dest=you@example.com, 

sender=fail2ban@example.com, sendername="Fail2Ban"]                    

#觸發報警的收件人。

logpath = /var/log/secure          

#檢測的系統的登陸日誌檔案。這裡要寫sshd服務日誌檔案。 預設為logpath = /var/log/sshd.log 。

#5分鐘內3次密碼驗證失敗,禁止使用者IP訪問主機1小時。 配置如下。

bantime = 3600   

#禁止使用者IP訪問主機1小時。

findtime = 300    

#在5分鐘內內出現規定次數就開始工作。

maxretry = 3       

#3次密碼驗證失敗。

5. 啟動服務

[root@zmedu63 ~]# systemctl start fail2ban           

#啟動fail2ban服務。

[root@zmedu63 ~]# systemctl enable fail2ban  

#設定開機自動啟動。

6.測試

[root@zmedu63 ~]# > /var/log/secure            

#清空日誌內容。

[root@zmedu63 fail2ban]# systemctl restart fail2ban                    

#重啟fail2ban服務。

[root@zmedu63 ~]# iptables -L –n    

#在fail2ban服務啟動後,iptables會多生成一個規則鏈

7.測試:故意輸入錯誤密碼3次,再進行登入時,會拒絕登入。

[root@zmedu64 ~]# ssh 192.168.1.63

root@192.168.1.63's password:                

#故意輸入錯誤密碼。

Permission denied, please try again.

root@192.168.1.63's password:                

#故意輸入錯誤密碼。

Permission denied, please try again.

root@192.168.1.63's password:                

#故意輸入錯誤密碼。

Permission denied (publickey,gssapi-keyex,gssapi-with-mic,password).

[root@zmedu64 ~]# ssh 192.168.1.63

ssh: connect to host 192.168.1.63 port 22: Connection refused

[root@zmedu63 ~]#  iptables -L |tail -4           

#可以檢視到192.168.1.64該IP被iptables禁止所有訪問。

Chain fail2ban-SSH (1 references)

target     prot opt source               destination

REJECT      all  --  192.168.1.64        anywhere

RETURN     all  --  anywhere           anywhere

[root@zmedu63 ~]# fail2ban-client status             

 #配置好之後我們檢測下fail2ban是否工作。

Status

|- Number of jail:    1

`- Jail list:        sshd              

#具體看某一項的狀態也可以看,如果顯示被ban的ip和數目就表示成功了,如果都是0,說明沒有成功。

[root@zmedu63 ~]# fail2ban-client status sshd

Status for the jail: sshd

|- Filter

|  |- Currently failed:    0

|  |- Total failed:    0

|  `- Journal matches:   _SYSTEMD_UNIT=sshd.service + _COMM=sshd

`- Actions

|- Currently banned: 1

|- Total banned: 1

`- Banned IP list:       192.168.1.64

8. 檢視fail2ban的日誌能夠看到相關的資訊。

[root@zmedu63 ~]# tail /var/log/fail2ban.log

2019-4-07 16:11:01,476 fail2ban.actions        [27932]: NOTICE  [sshd] Ban 192.168.1.64

需要注意的2點:

(1)另外如果後期需要把iptables清空後或iptables重啟後,也需要把fail2ban重啟一下

(2)如果修改ssh預設埠22為2015後,配置fail2ban來監控SSHD服務需要修改配置檔案

例:

[root@zmedu63 ~]# vim /etc/ssh/sshd_config

改 17 #Port 22

為 17 Port 2015

[root@zmedu63 ~]# systemctl restart sshd

[root@zmedu63 ~]# vim /etc/fail2ban/jail.conf

#修改iptables動作中的埠號,預設為SSH,如圖 1-11 所示。

改:port=ssh

為 port=2015

修改fail2ban監聽SSH埠

重啟服務即可

[root@zmedu63 ~]# systemctl restart fail2ban

 

相關文章