加固伺服器並不難,但有許多例行作業需要進行時,很容易遺忘。所以在這裡和大家談談如何防範他人入侵伺服器同時也讓自己加深印象,希望你看完後能有所幫助。
我碰到的情況比較簡單,我執行了以下命令:
cat /var/log/auth.log | grep Accepted
該命令返回了我的伺服器上的成功認證記錄,其中有一個IP 不是我的。所以,是 SSH 服務被入侵了。
別忘了還有一個指令 last
,這個指令回傳最近成功登入的使用者。
購買伺服器後需要立刻進行的操作:
/var/log/auth.log
識別惡意行為並封鎖 IP;如果發生了入侵,你需要知道如何調查和清潔。最好的方式是重新建立 VPS。我就是這麼做的。我在 hetzner 買了伺服器,它的控制台提供了重新建立(移除舊 VPS,新建一個)VPS 並保留原始 IP 的功能。所以我重新建立了一個 VPS。之後我在本機上使用ssh-keygen
工具(標準OpenSSH 套件的一部分)產生了SSH 金鑰:(下面的命令同時適用於Linux 和macOS)
ssh-keygen
該指令在~/.ssh
目錄中建立了一對金鑰。之後執行以下命令:
ssh-copy-id you_user@your_server_id
該命令會將新建立的公鑰上傳到伺服器。接下來,登入伺服器並修改 sshd 配置:
nano /etc/ssh/sshd_config
修改設定檔中的 PasswordAuthentication 配置:
PasswordAuthentication no
此配置停用了使用密碼登入(只能使用金鑰登入)。
伺服器上我用的系統是Ubuntu,所以透過以下指令可以安裝這兩個工具:
apt install ufw fail2ban
只開ssh 和http( s) 連接埠:
ufw allow ssh ufw allow 80 ufw allow 443
啟用ufw:
ufw enable
接下來設定fail2ban 工具:
# 备份默认配置 cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local nano /etc/fail2ban/jail.local
在設定檔中尋找banaction =
,將其設為ufw
。然後重新載入 fail2ban 設定:
fail2ban-client reload
這樣簡單設定之後,來自相同 IP 的三次錯誤登入嘗試將封鎖該 IP 10 分鐘。我個人將封鎖期限調成了 7 天。以下指令可以查看 fail2ban 的狀態:
fail2ban-client status sshd
我的設定是這樣的:
Status for the jail: sshd |- Filter | |- Currently failed: 1 | |- Total failed: 6 | `- File list: /var/log/auth.log `- Actions |- Currently banned: 1 |- Total banned: 2 `- Banned IP list: 187.109.168.150
如你所見,有一個 IP 已經被防火牆封鎖了。我們也可以透過 ufw 的報告確認這一點:
ufw status Status: active To Action From -- ------ ---- Anywhere REJECT 187.109.168.150 80/tcp ALLOW Anywhere 22 ALLOW Anywhere 443 ALLOW Anywhere
想了解更多技術教程,請關注PHP中文網的其他內容。
以上是怎麼防範伺服器被他人入侵的詳細內容。更多資訊請關注PHP中文網其他相關文章!