安裝 Linux 服務器後要做的 12 件事

雲計算徹底改變了服務器格局。 許多平台都提供免費的 Linux 雲服務器,您可以通過這些雲平台在幾分鐘內部署您的 Linux 服務器。

當您激活一個新服務器時,特別是如果它在 Internet 上可見時,它會立即可供犯罪分子通過其自動機器人腳本在暴露的服務器中尋找錯誤配置和漏洞。

安裝 Linux 服務器後,您應該做幾件事,以確保您的服務器不受損害。

這是什麼的截圖fail2ban最近在我的一台服務器上看到。

212 次失敗的登錄嘗試和 6 個被阻止的 IP 地址。 來自試圖登錄我的服務器的未經授權的人或腳本的所有流量。

一些關鍵的第一步將幫助您保護新服務器構建免受風險。

我在這裡考慮了兩個最流行的 Linux 服務器發行版:Ubuntu CentOS /紅帽。 檢查您正在運行的 Linux。

此處的大部分建議都是通用的,除非特別提及,否則應適用於其他 Linux。

這些是我建議您檢查的內容,以確保您的 Linux 服務器的安全。 我提供了單獨的步驟,但如果你想快速完成,我還創建了一個腳本,您可以在部署的任何新服務器上快速運行該腳本.

1.確保設置非root用戶

Root 非常強大,您不需要一直擁有 root 權限。

root 也是幾乎所有 Linux 系統上的有效用戶名。 這意味著如果您啟用了遠程身份驗證,攻擊者的一半工作就完成了,獲得了一個有效的用戶名。

此外,如果攻擊者可以以 root 身份登錄,則無需進一步的權限即可在系統上執行任何操作。

由於這些原因,最好以非 root 用戶身份登錄並禁用 root 登錄以通過 SSH 進行遠程訪問(稍後解釋)。

怎麼做?

我假設您在您的系統上以 root 身份登錄。

使用 useradd 命令添加新用戶。 代替 使用您選擇的用戶名。

                      
                        useradd <username>
                      
                    

使用 passwd 命令為新添加的用戶設置密碼:

                      
                        passwd <username>
                      
                    

2.確保非root用戶有sudo權限

由於您將使用 Secure Shell (SSH) 遠程登錄此帳戶,因此您將希望能夠執行需要 root 訪問權限的特權活動。 這意味著該帳戶必須具有 sudo 權限

怎麼做?

創建sudo用戶的過程Ubuntu CentOS 相似,但您要將用戶添加到的組不同。

您必須以 root 身份登錄才能執行此步驟。

CentOS 和 RedHat wheel group 是用來給用戶sudo權限的標準組,使用usermod命令將用戶添加到這個組:

                      
                        usermod -aG wheel <username>
                      
                    

Ubuntu使用 sudo 管理 sudo 用戶的組

                      
                        usermod -aG sudo <username>
                      
                    

3.啟用基於密鑰的SSH認證

為 SSH 啟用基於密鑰的身份驗證很重要,這樣當我們禁用基於密碼的身份驗證時它也能正常工作。

破解、暴力破解或洩露的密碼是不良行為者獲取系統訪問權限的一種非常常見的方式。 魚叉式網絡釣魚是一種極具針對性的垃圾郵件,可以說服毫無戒心的用戶提供憑據,這只是獲取憑據的一種常見方法。

如果有人在啟用了基於密鑰的身份驗證並且禁用了基於密碼的身份驗證以通過 SSH 進行遠程訪問的系統上獲取了您的用戶名和密碼,則該被盜密碼將不再允許您訪問該服務器。

通過啟用基於密鑰的身份驗證,並在稍後的步驟中禁用基於密碼的身份驗證,您已經大大降低了 SSH 被用來對付您的機會。 這是保護 SSH 服務器的基本方法之一。

怎麼做?

我假設您已經在您的服務器上啟用了 SSH。 您需要做的是在您的個人計算機上生成 SSH 密鑰(您將從那裡登錄服務器)。

獲得 SSH 密鑰後,您需要將公鑰添加到我們服務器上的非 root 用戶的 authorized_keys 中。

注意力! 不要丟失個人計算機的 ssh 密鑰。 備份這些密鑰。 如果您稍後禁用基於密碼的身份驗證並丟失了 SSH 密鑰,您將無法訪問自己的服務器。

4.確保允許SSH通過ufw防火牆

在您的系統上啟用防火牆之前,您必須確保 SSH 被允許。 否則,如果您遠程訪問系統,您可能會被鎖定在系統之外。

怎麼做?

Ubuntu 使用簡單的防火牆() 和 CentOS/Red Hat 使用防火牆.

CentOS/紅帽使用防火牆命令:

                      
                        sudo firewall-cmd --zone=public --add-service=ssh --permanent
                      
                    

在 Ubuntu 上,像這樣使用 ufw 命令:

                      
                        sudo ufw allow ssh
                      
                    

5.啟用防火牆(僅允許SSH後)

防火牆確保只有您明確允許的流量才能流向您的服務器。 如果壞人在您的服務器上收到惡意軟件並試圖讓它通過不允許的端口進行通信,或者如果意外啟用了服務,則它不能用來危害您的服務器或進一步危害它。

怎麼做?

在 CentOS/Red Hat 系統上,啟用 firewalld systemd 服務:

                      
                        sudo systemctl start firewalld
sudo systemctl enable firewalld
                      
                    

在 Ubuntu 上,使用這個命令:

                      
                        sudo ufw enable
                      
                    

6.配置SSH不顯示banner

攻擊者破壞您的服務器的方法之一是通過運行您的服務的軟件中的錯誤。 橫幅可以顯示有關您正在運行的 OpenSSH 或操作系統版本的信息。 向壞人提供信息是沒有意義的。 讓他們為之努力!

怎麼做?

CentOS/Red Hat 中的默認行為是不顯示橫幅,因此無需任何操作。

在 Ubuntu 上,您可以使用:

                      
                        sudo echo "DebianBanner no" >> /etc/ssh/sshd_config.d/10-my-sshd-settings.conf
                      
                    

7.禁用所有SSH轉發

雖然管理員使用 SSH 轉發來加密本應以明文形式傳遞的流量的情況並不少見,但如果您不使用它,則應該禁用它。 不良行為者可能會使用轉發來加密流量,使您更難看到它,或者獲取原本會被阻止使用授權端口和服務傳遞的流量。

怎麼做?

CentOS/紅帽,一個將以下內容添加到 /etc/ssh/sshd_config :

                      
                        DisableForwarding yes
                      
                    

Ubuntu,添加 DisableForwarding yes 10-my-sshd-settings.conf 程序:

                      
                        sudo echo "DisableForwarding yes" >> /etc/ssh/sshd_config.d/10-my-sshd-settings.conf
                      
                    

8.禁用通過SSH的root登錄

幾乎每個 Linux 系統上都有一個 root 用戶。 允許該帳戶使用 SSH 的風險是雙重的。

  1. 用戶名是眾所周知的,並且經常被壞人測試。
  2. 如果攻擊者以 root 身份登錄,他們將擁有對系統的完全訪問權限。

禁止使用 root 帳戶進行 SSH 連接可以消除這兩種風險。

怎麼做?

CentOS/紅帽找到線 PermitRootLogin yes /etc/ssh/sshd_config 並將其更改為:

                      
                        PermitRootLogin no
                      
                    

在 Ubuntu 上,添加 PermitRootLogin no 10-my-sshd-settings.conf 程序:

                      
                        sudo echo "PermitRootLogin no" >> /etc/ssh/sshd_config.d/10-my-sshd-settings.conf
                      
                    

9. 禁用基於密碼的 SSH 身份驗證

在 SSH 中禁用密碼身份驗證之前,請確保已按照步驟 3 中所述配置和測試基於密鑰的身份驗證。

禁用基於密碼的身份驗證可防止惡意行為者嘗試猜測您的密碼或通過社交方式操縱您輸入您的憑據或以任何方式竊取它們,通過 SSH 登錄您的服務器。

攻擊者必須擁有您的公鑰和私鑰才能訪問您的服務器。

怎麼做?

CentOS/紅帽找到線 PasswordAuthentication yes /etc/ssh/sshd_config 並將其更改為:

                      
                        PasswordAuthentication no
                      
                    

Ubuntu添加 PasswordAuthentication no 10-my-sshd-settings.conf 程序:

                      
                        sudo echo "PasswordAuthentication no" >> /etc/ssh/sshd_config.d/10-my-sshd-settings.conf
                      
                    

10.忽略鬼魂

rhosts 它與 rsh 相關聯,rsh 是一種被安全 shell 取代的遺留協議。 如果用戶試圖創建惡意 rhosts 文件,此設置明確忽略它。

怎麼做?

CentOS/紅帽找到線 #IgnoreRhosts yes /etc/ssh/sshd_config 並將其更改為:

                      
                        IgnoreRhosts yes
                      
                    

Ubuntu添加 IgnoreRhosts yes 10-my-sshd-settings.conf 程序:

                      
                        sudo echo "IgnoreRhosts yes" >> /etc/ssh/sshd_config.d/10-my-sshd-settings.conf
                      
                    

11.安裝fail2ban並配置它保護SSH

fail2ban它監視配置為 SSH 的服務的日誌文件,並在一段時間內嘗試一定次數後阻止惡意用戶的 IP 地址連接到您的服務器。

如果攻擊者在三小時內嘗試失敗超過 5 次,您的 IP 地址將被封鎖 12 小時,例如。

Fail2ban 可以配置為還保護其他服務,例如由nginx網絡服務器或 Apache 網絡服務器。

怎麼做?

您可以按照我們關於使用 Fail2Ban 的詳細指南進行操作。

12. 配置自動安全更新(適用於 Red Hat 和 CentOS)

如上所述,如果漏洞足夠嚴重,具有漏洞利用的過時服務可能允許攻擊者在無需登錄的情況下闖入您的服務器。 快速應用安全更新以降低這種風險至關重要。

怎麼做?

默認Ubuntu 服務器安裝後,將啟用自動安全更新,因此您無需對更新採取任何操作。

要在 CentOS/Red Hat 上設置自動更新,您將安裝一個名為dnf-自動並使用以下命令為其啟用計時器:

                      
                        sudo dnf upgrade
sudo dnf install dnf-automatic -y
sudo systemctl enable --now dnf-automatic.timer
                      
                    

您可以通過運行以下命令來檢查計時器:

                      
                        sudo systemctl status dnf-automatic.timer
                      
                    

在 Loaded: 行中查找“loaded”,在 Active: 行中查找“active”。

可能會有更多或更少的步驟,具體取決於您的個人喜好以及您通常配置服務器的目的。

附加腳本:Linux 服務器上的前 10 秒

按照承諾,這是腳本我寫道,在為基於密鑰的身份驗證設置和配置非 root 用戶後,它會執行我提到的所有上述步驟。

該腳本可以在 Ubuntu 20.04 和 CentOS/Red Hat 8 上運行。

請注意,無論您多麼信任腳本的來源,都不應盲目地運行從 Internet 下載的隨機 shell 腳本。 您必須閱讀腳本並嘗試理解它的作用。

完整的腳本是開源的,所有人都可以使用,可以查看這裡. 能釋放閱讀然後執行 bash 文本。

這是在 Ubuntu 20.04 服務器上運行後的屏幕截圖。

看看您如何輕鬆地完成一些基本步驟來保護您在 CentOS 上構建的新服務器,紅帽或者只運行一個腳本的 Ubuntu。

您還可以發送有關腳本的反饋或請求功能。

結論

這些只是一些最基本的安全檢查,但這是您在安裝 Linux 服務器後應該做的事情。

在許多服務器上手動執行這些操作可能會很痛苦,而且速度會不必要地慢。 在這裡您可以利用腳本並使用我的“Linux 服務器上的前 10 秒”腳本或創建您自己的腳本。

這些是我的一些建議。 你呢? 你有什麼要添加到這個列表中的嗎? 在評論部分提供您的建議。

作者泰德勒羅伊是為企業提供各種物理安全信息和指導的企業安全架構師。

相關文章