ssh 是訪問遠程服務器最常用的方法之一,同時,其也是 Linux 服務器受到攻擊的最常見的原因之一。
不過別誤會... 我們并不是說 ssh 有什么安全漏洞,相反,它在設計上是一個非常安全的協議。 但是安全起見,我們在配置 ssh 的時候,作為一個好習慣,不應該使用它的默認配置。 畢竟,默認配置是大家都知道的。
今天我們分享幾個可以提高 ssh 安全性的實用方法。 不過需要注意,下面提到的方法,大家選取適合自己的,不需要全部都用,其中某些方法可能會與其他的不兼容。
例如,如果禁用基于密碼的 ssh 登錄,則無需使用 Fail2Ban 方案。
如果你了解 ssh 基礎知識,那么就會知道 ssh 配置文件位于 /etc/ssh/sshd_config,下面我們提到的大多數操作都需要編輯此配置文件,在真正動手修改配置文件之前,最好做一下備份。 另外,對于 ssh 配置文件所作的任何更改,都需要重啟 ssh 服務才能生效。
接下來我們詳細看一下。
1,禁用空密碼
在 Linux 中,用戶賬戶可以不設置任何密碼(或者為空密碼)。 這些用戶嘗試使用 ssh,也不需要密碼。
這是一個極大的安全隱患,我們應該禁止使用空密碼。 方法是在配置文件 /etc/ssh/sshd_config 中,將 PermitEmptyPasswords 選項配置為 no:
PermitEmptyPasswords no
2,修改 ssh 的默認端口
ssh 的默認端口為 22,大多數攻擊腳本都是圍繞這個端口寫的。 更改這個默認端口會增加 ssh 的安全性,因為會極大的減少攻擊者的數量。
在配置文件中搜索端口信息,并將其更改為其他值:
Port 567
修改完成后需要記住你修改的端口(畢竟你還需要使用這個端口來登錄的)。
3,禁止 ssh 使用 root 用戶登錄
老實說,Linux 系統應該禁止 root 用戶登錄,因為這是有風險的,其不會留下審計信息。 這就是 sudo 機制存在的原因。
如果系統添加了 sudo 用戶,最好使用 sudo 用戶通過 ssh 連接,而不是 root 用戶。
要禁止 root 用戶通過 ssh 訪問,可以修改 PermitRootLogin 選項為 no:
PermitRootLogin no
4,禁用 ssh 協議 1
如果你使用的是比較舊的 Linux 版本,在某些低版本的 ssh 可能仍然有 ssh 協議 1 可用,該協議存在已知的漏洞,不能再使用。
較新版本的 ssh 會自動啟用 ssh 協議 2,可以檢查一下該配置:
Protocol 2
5,配置空閑超時間隔
空閑超時間隔是 ssh 連接可以在沒有任何活動的情況下保持活動狀態的時間。 這種空閑會話也是一種安全風險,所以需要配置合適的空閑超時時間間隔。
超時間隔以秒為單位,默認值是0。 我們可以將其更改為300,即保持 5 分鐘的超時間隔。
ClientAliveInterval 300
在此間隔之后,ssh 服務器將向客戶端發送一條活動消息。 如果沒有得到響應,連接將關閉,最終用戶將注銷。
還可以配置在斷開連接之前,發送活動消息的次數:
ClientAliveCountMax 2
6,僅允許特定用戶進行 ssh 訪問
當涉及到安全時,我們應該遵循最低特權原則,不要在不需要的時候給予權利。
比如,我們在 Linux 系統上可能會有若干個用戶,但并不是所有用戶都需要通過 ssh 訪問系統。 所以我們可以設置只有少數用戶可以通過 ssh 訪問系統,從而限制所有其他用戶。 如下配置所示:
AllowUsers User1 User2
另外,還可以配置某個用戶組可訪問 ssh:
AllowGroups ssh_group
此外,也可以配置 DenyUsers 和 DenyGroups 來拒絕某些用戶和組來通過 ssh 訪問。
7,禁用 X11 轉發
X11 或 X 顯示服務器是圖形環境的基本框架。 X11 轉發允許您通過 ssh 使用 GUI 應用程序。
基本上,客戶機在服務器上運行 GUI 應用程序,但由于 X11 轉發,機器之間打開了一個通道,GUI 應用程序舊顯示在了客戶機上。
基于此,X11 協議是有安全隱患的。 所以如果不需要它,應該禁用 ssh 中的 X11 轉發。
X11Forwarding no
8,自動減輕暴力攻擊
為防止 ssh 暴力攻擊,可以使用比如 Fail2Ban 這樣的安全工具。
Fail2Ban 可檢查來自不同 IP 地址的失敗登錄嘗試。如果這些錯誤嘗試在設置的時間間隔內超過閾值,它將禁止該 IP 在特定時間段內訪問 SSH。
我們可以根據自己的需求來配置這些需求。
9,禁用基于密碼的 ssh 登錄
無論做了怎樣的配置,你都會在 Linux 服務器上看到通過 ssh 進行的失敗登錄嘗試。攻擊者很聰明,他們使用的腳本通常都會處理類似 Fail2Ban 工具的默認設置。
為了避免某些持續的暴力攻擊,我們可以選擇基于密鑰的 ssh 登錄。即將遠程客戶端系統的公鑰添加到 ssh 服務器上的已知密鑰列表中。通過這種方式,這些客戶端機器可以訪問ssh,而無需輸入用戶帳戶密碼。
完成此設置后,就可以禁用基于密碼的 ssh 登錄。然后只有具有指定 ssh 密鑰的客戶機才可以通過 ssh 訪問服務器。
在使用這種方法之前,請確保已將自己的公鑰添加到服務器,并且該方法有效。否則,如果你使用的是 Linode 這樣的云服務器,而沒有對服務器的物理訪問權限,那么就可能失去對遠程服務器的訪問權限。
關于如何禁止使用密碼進行 ssh 連接,我們在之后會專門寫篇文章介紹。
10,使用 ssh 的雙因素身份驗證
要將 ssh 安全提升一個級別,還可以啟用雙因素身份驗證。比如可以通過手機、電子郵件或第三方阿姨應用程序接收一次性密碼。
其他
可以使用以下命令查看 ssh 服務器的所有參數:
sshd -T
通過這種方式,我們可以查看目前的參數配置,來檢查是否需要更改,參數來增強 ssh 服務器的安全性。
另外,還需要保持 ssh 的系統更新,以修復一些可能的已知漏洞。
-
Linux
+關注
關注
87文章
11292瀏覽量
209328 -
服務器
+關注
關注
12文章
9123瀏覽量
85324 -
安全性
+關注
關注
0文章
93瀏覽量
19143 -
文件
+關注
關注
1文章
565瀏覽量
24727 -
SSH
+關注
關注
0文章
188瀏覽量
16335
發布評論請先 登錄
相關推薦
評論