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

評(píng)論