許多伺服器時不時被黑客攻擊。所以我決定寫一個簡短的教程,向您展示如何輕鬆保護您的 Linux 伺服器。
這並不是一本全面的安全指南。
但是,它可以幫助您防止幾乎90%的流行後端攻擊,例如暴力登入嘗試和 DDoS。
最好的部分是你可以在一兩個小時內實現它們。
開始之前
- 你需要一臺 Linux 伺服器。
- 您需要對命令列有基本的瞭解。這是一張你可以使用的備忘單。
如果您已滿足上述要求,請轉到第一步。
1.配置SSH金鑰
要訪問遠端伺服器,您必須使用密碼登入或使用 SSH 金鑰。
密碼的問題在於它們很容易暴力破解(您將在下面學習如何進一步防止這種情況)。此外,您還必須在需要訪問伺服器時隨時鍵入它們。
要避免上述缺點,您必須設定 SSH 金鑰身份驗證。它比密碼更安全,因為黑客不能暴力破解它們。
連線到伺服器也更容易,更快,因為您不需要輸入密碼。
以下是如何為伺服器設定SSH身份驗證。
-
在本地計算機上,鍵入以下內容生成SSH金鑰對:
ssh-keygen 複製程式碼
上面的命令將指導您完成幾個步驟來生成SSH金鑰。記下要儲存金鑰的檔案。
-
使用以下命令將公鑰新增到伺服器:
ssh-copy-id username@remote_host 複製程式碼
請務必使用您的真實使用者名稱和伺服器的IP地址替換 username 和 remote_host 。系統將提示您輸入密碼。
-
嘗試使用以下命令登入伺服器:
ssh username@remote_host 複製程式碼
不要忘記將 username 和 remote_host 替換為伺服器的詳細資訊。您應該注意到,這次不會提示您輸入密碼。
如果 ssh-copy-id 命令無法使用,請使用以下命令將公鑰(這裡是 id_rsa.pub)拷貝到伺服器:
scp -P port id_rsa.pub username@remote_host:~/.ssh
複製程式碼
port 是埠號
然後在伺服器執行
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
複製程式碼
2.保持系統時間最新
許多安全協議利用您的系統時間來執行 cron 作業,日期日誌和執行其他關鍵任務。
如果您的系統時間不正確,可能會對您的伺服器產生負面影響。為防止這種情況發生,您可以安裝 NTP 客戶端。此客戶端將使您的系統時間與全球 NTP 伺服器保持同步。
使用以下命令安裝 NTP 客戶端:
sudo apt install ntp
複製程式碼
您不再需要擔心再次設定系統日期。
3.檢視活動埠
伺服器上的應用程式會公開某些埠,以便網路中的其他應用程式可以訪問它們。
黑客還可以在您的伺服器上安裝後門,並公開一個埠,通過它可以控制伺服器。
出於這個原因,我們不希望您的伺服器在我們不知道的埠上偵聽請求。
要檢視活動埠,請使用以下命令:
sudo ss -lntup
複製程式碼
檢視輸出並調查您似乎並不熟悉的任何埠或程式。
嘗試發現並追蹤可能有害的服務和程式。
要開始前,請檢視 “bad” TCP/UDP ports。
4.設定防火牆
防火牆允許您停止/允許來自/來自伺服器上特定埠的流量。為此,我通常使用 UFW(簡單的防火牆)。
UFW 的工作原理是讓您配置以下規則:
- 允許或否認
- 傳入或傳出的流量
- to or from
- 特定或所有埠
在本節中,您將阻止除明確允許的網路流量之外的所有網路流量。在安裝其他程式時,請記住啟用執行所需的必要埠。
設定 UFW
-
Install ufw.
sudo apt-get install ufw 複製程式碼
-
您可以拒絕所有傳出流量...
sudo ufw default deny outgoing comment 'deny all outgoing traffic' 複製程式碼
-
...或允許所有傳出流量。
sudo ufw default allow outgoing comment 'allow all outgoing traffic' 複製程式碼
-
接下來,我們要拒絕所有傳入的流量......
sudo ufw default deny incoming comment 'deny all incoming traffic' 複製程式碼
-
...除了SSH連線,以便我們可以訪問系統。
sudo ufw limit in ssh comment 'allow SSH connections in' 複製程式碼
-
如果您將UFW配置為拒絕所有傳出流量,請不要忘記根據您的需要允許特定流量。以下是一些例子:
# 允許埠 53 上的流量 -- DNS sudo ufw allow out 53 comment 'allow DNS calls out' # 允許在 123 埠輸出流量-- NTP sudo ufw allow out 123 comment 'allow NTP out' # 允許 HTTP,HTTPS 或 FTP 的流量輸出 apt 可能需要這些,具體取決於您使用的是哪些來源 sudo ufw allow out http comment 'allow HTTP traffic out' sudo ufw allow out https comment 'allow HTTPS traffic out' sudo ufw allow out ftp comment 'allow FTP traffic out' # allow whois sudo ufw allow out whois comment 'allow whois' # 允許埠 68 上的流量輸出 -- the DHCP client # you only need this if you're using DHCP sudo ufw allow out 68 comment 'allow the DHCP client to update' 複製程式碼
-
要拒絕埠 99 上的任何流量,請使用以下命令:
sudo ufw deny 99 複製程式碼
-
最後,使用以下命令啟動 UFW:
sudo ufw enable 複製程式碼
-
您還可以使用以下命令檢視 UFW 狀態:
sudo ufw status 複製程式碼
5.防止自動攻擊
您可以使用兩個實用程式來阻止大多數自動攻擊:
PSAD 和 Fail2Ban 之間的區別
我們瞭解到埠可以訪問伺服器上的應用程式。
攻擊者可能決定掃描您的伺服器以獲取他們可能用於訪問伺服器的開放埠。
PSAD 監視網路活動以檢測並可選地阻止此類掃描和其他型別的可疑流量,例如 DDoS 或 OS 指紋識別嘗試。
另一方面,Fail2Ban 掃描各種應用程式(如 FTP )的日誌檔案,並自動禁止顯示惡意標誌(如自動登入嘗試)的 IP。
6.安裝 logwatch
伺服器上的應用程式通常會將日誌訊息儲存到日誌檔案中。除非您打算手動監視日誌檔案,否則需要安裝 logwatch。
logwatch 掃描系統日誌檔案並對其進行彙總。
您可以直接從命令列執行它,也可以將其安排在定期計劃中執行。例如,您可以配置 logwatch 以通過電子郵件向您傳送日誌檔案的每日摘要。請注意,您的伺服器需要能夠傳送電子郵件才能正常工作。
logwatch使用服務檔案來了解如何讀取和彙總日誌檔案。您可以在 /usr/share/logwatch/scripts/services
中檢視所有庫存服務檔案。
logwatch的配置檔案 /usr/share/logwatch/default.conf/logwatch.conf
指定預設選項。您可以通過命令列引數覆蓋它們。
要在 Ubuntu 或 Debian 上安裝 logwatch,請執行以下命令:
apt-get install logwatch
複製程式碼
對於其他 Linux 發行版的使用者,請檢視 Linode 的這篇史詩指南。
您可以嘗試直接執行 logwatch,以防需要檢視收集的樣本。
sudo /usr/sbin/logwatch --output stdout --format text --range yesterday --service all
複製程式碼
最後,告訴 logwatch 每天傳送一封電子郵件,其中包含我們日誌檔案的摘要。要執行此操作,請開啟檔案 /etc/cron.daily/00logwatch
並找到執行行,然後將其更改為以下內容:
/usr/sbin/logwatch --output mail --format html --mailto root --range yesterday --service all
複製程式碼
7.執行安全稽核
保護 Linux 伺服器後,您應該執行安全稽核,以發現您可能錯過的任何安全漏洞。
為此,您可以使用 Lynis,這是一個可以執行以下操作的開源軟體:
- 安全稽核。
- 一致性測試(例如PCI,HIPAA,SOx)。
- 滲透測試。
- 漏洞檢測。
- 系統強化。
How to use Lynis
首先,通過克隆他們的 Github 儲存庫來安裝 Lynis。這可確保您安裝最新版本的Lynis。
git clone https://github.com/CISOfy/lynis
複製程式碼
切換到我們克隆Lynis的目錄:
cd lynis
複製程式碼
最後,使用下面的命令來執行你的第一次稽核:
./lynis audit system
複製程式碼
您可以在他們的官方網站上了解有關 Lynis 的更多資訊。
最後
歡迎您閱讀有關加強 Linux 伺服器的其他操作指南。我希望你能學到新東西。