作者:京東物流 羅旅帆
現在伺服器在網路暴露一段時間就會有人不停的進行掃描各種埠,nginx的80,443,ssh的22等。進行嘗試滲透,並且現在有大量框架進行全自動掃描滲透。
為了最大化的阻止掃描,可以利用fail2ban這個框架來把頻繁掃描的源IP直接丟進黑名單。讓伺服器在一定時間內拒絕連線。
1.安裝fail2ban:
# Ubuntu sudo apt update && sudo apt install fail2ban
# CentOS yum install fail2ban
我們已經完成了fail2ban的安裝, 接下來就是fail2ban的配置
2.配置fail2ban
首先使用vi或者vim開啟fail2ban的規則配置檔案
vi /etc/fail2ban/jail.conf
按i鍵插入,複製以下內容:
[DEFAULT]
bantime = 86400
maxretry = 5
findtime = 600
banaction = firewallcmd-allports
[sshd]
enabled = true
filter = sshd
logpath = /var/log/secure
maxretry = 3
enable = ture filter =sshd # CentOS logpath = /var/log/secure # Ubuntu # logpath = /var/log/auth.log maxretry = 5 # 最大嘗試次數 bantime = 86400 #封禁時間,單位s。-1為永久封禁
3.啟用fail2ban
在配置完成後, 當然是選擇啟用它啦
對於CentOS7/8,Fedora
sudo systemctl restart fail2ban
對於Debian, Ubuntu或CentOS6:
sudo service fail2ban restart
如果是第一次啟動的話建議把命令中的restart換成start
CentOS7設定fail2ban自啟
systemctl enable fail2ban.service
4.檢驗fail2ban
如果要檢驗fail2ban有沒有正確啟動, 可以使用這個命令
sudo fail2ban-client ping
如果正確啟動的話fail2ban會以pong作為回應(Server replied: pong), 其他情況就需要看看配置檔案的格式正確以及是不是用start命令啟動fail2ban什麼的…
如果要檢視fail2ban目前啟用的規則的話
fail2ban-client status
檢視某個規則下被封禁的次數以及ip(以[sshd]規則為例)
fail2ban-client status sshd
如果想看iptables的 ban策略生效狀態
可以透過
sudo iptables -L INPUT -v -n | less
總結:
透過以上操作可以看到過去24小時內一共被ban了 很多IP。如下圖所示,透過這個策略。可以大幅度緩解ssh 賬號密碼被暴力破解的進度