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