如何防範服務器入侵

Vitaliy Kolesov 原做,受權 LeanCloud 翻譯。html

加固服務器並不難,但有不少例行操做須要進行時,有可能會遺忘。以我爲例,剛買的服務器就在兩週內被人入侵了。有天早上我收到幾封來自第三方的郵件,說我服務器上有東西在嘗試入侵他們的服務器。因此,我須要快速解決這個問題。bash

如何查找漏洞

我碰到的狀況比較簡單,我執行了如下命令:服務器

cat /var/log/auth.log |  grep Accepted
複製代碼

該命令返回了個人服務器上的成功認證記錄,其中有一個 IP 不是個人。因此,是 SSH 服務被入侵了。ssh

別忘了還有一個命令 last,這個命令返回最近成功登陸的用戶。tcp

如何加固服務器

購買服務器後須要馬上進行的操做:工具

  • 安裝 ufw,簡單易用的防火牆軟件;
  • 關閉除 SSH、HTTP(s) 外的全部端口;
  • 安裝配置 fail2ban 工具。這個工具基於 /var/log/auth.log 識別惡意行爲並封禁 IP;
  • 修改 sshd 配置,只使用密鑰認證。

具體怎麼作?

若是發生了入侵,你須要知道如何調查和清掃。最好的方式是從新建立 VPS。我就是這麼作的。我在 hetzner 買了服務器,它的控制檯提供了從新建立(移除舊 VPS,新建一個)VPS 並保留原 IP 的功能。 因此我從新建立了一個 VPS。以後我在本地計算機上使用 ssh-keygen 工具(標準 OpenSSH 包的一部分)生成了 SSH 密鑰:(下面的命令同時適用於 Linux 和 macOS)ui

ssh-keygen
複製代碼

該命令在 ~/.ssh 目錄中建立了一對密鑰。以後運行如下命令:spa

ssh-copy-id you_user@your_server_id
複製代碼

該命令會將新建立的公鑰上傳到服務器。接下來,登陸服務器並修改 sshd 配置:翻譯

nano /etc/ssh/sshd_config
複製代碼

修改配置文件中的 PasswordAuthentication 配置:code

PasswordAuthentication no
複製代碼

這一配置禁用了使用密碼登陸(只能使用密鑰登陸)。

安裝配置 ufw 和 fail2ban

服務器上我用的系統是 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           
複製代碼

能夠配置 fail2ban,若是有 IP 被封,給你發一封電子郵件。

相關文章
相關標籤/搜索