如何在伺服器端自動ban掉掃描ssh的IP

京东云开发者發表於2024-11-06

作者:京東物流 羅旅帆

現在伺服器在網路暴露一段時間就會有人不停的進行掃描各種埠,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 賬號密碼被暴力破解的進度

相關文章