最近部門為了落實更高強度的資安政策,因此針對伺服器的管理多做了限制。
close(圖片來源: 每日頭條)
一般來說,若要連線至遠端的伺服器,可以使用 SSH 這個指令:
1 |
|
建立連線時,輸入相對應的密碼,以完成認證。
因為有些是開發用的伺服器,為了方便大家隨時使用,過往僅用密碼設置進行認證。不過根據這次的資安政策,需要針對伺服器最下列的設置:
- 限制登入網段
- 改用公開金鑰認證
- 禁止 root 管理者以 SSH 登入
當然不只這些限制啦,還有 Linux 系統的密碼策略要設定,不過我這個打算另外開一篇,這篇就只專注在與 SSH 連線設定的部分。
限制登入網段
適當的限制網段是有其必要性的,因此這邊來限制能夠登入伺服器的網段!
這邊我們是打算用設置白名單的方式,也就是除了明文允許的網段外,其他的一律禁止。
-
允許連線的網段(/etc/hosts.allow)
假設要放行的網段為192.168.1.0/24
與192.168.99.10/32
,則在/etc/hosts.allow
中新增1
sshd:192.168.1.0/24,192.168.99.10/32
-
禁止連線的網段(/etc/hosts.deny)
而除了上述放行的網段外,其他的網段則把他們擋下來。因此在/etc/hosts.deny
中設定1
sshd:ALL
正常情況下,allow 的優先權會高於 deny。所以如果在
hosts.allow
這個檔案中有允許放行,並不會被hosts.deny
的設定擋下來。這樣一來,就完成基本的防護設定了!
改用公開金鑰認證
關於改用公開金鑰認證這件事,之前在《設定 Linux 使用 SSH Key-based 登入驗證方式》,已經寫過了這邊就不再重複了,總之可以分成 4 個步驟:
- 本地端產生金鑰
- 將公開金鑰上傳至伺服器
- 啟用金鑰登入並停用密碼認證登入
- 最後重起 sshd
禁止 root 管理者以 SSH 登入
會禁止 root 的原因有幾個:
root
這個帳號名稱是眾所皆知的,在帳號已知的情況下,只要破解密碼即可登入了,如此一來很容易遭受暴力法嘗試破解。- 無法追蹤與稽核相關修改與操作,因為在系統紀錄上都是 root。
如果真有需要進行 root 的操作,最好的方法還是先使用其他帳號登入後,再以 sudo
等方式切換成 root
進行管理,此作法能多一道防線,也能對哪些帳號可以具備 sudo
權限進行管理。
Linux 伺服器的預設是允許 root 管理者帳號遠端登入的,若要關閉該設定,一樣是修改 /etc/ssh/sshd_config
,將其中的 PermitRootLogin 由 yes 改成 no:
1 |
|
在修改了 sshd_config
文件之後,一樣必須重起 sshd,以套用變更。
1 |
|
參考資料
- G. T. Wang (2018-02-03)。Linux 的 SSH 安全加密連線指令使用教學、設定檔配置範例。檢自 G. T. Wang (2021-01-08)。
- 奔騰兔 (2006-02-02)。SSH 連線設定 。檢自 奔騰兔的部落格 (2021-01-08)。
- 鳥哥 (2001/10/02)。限制連接上您 Linux 主機的電腦網域 。檢自 鳥哥的 Linux 私房菜 (2021-01-08)。
- (2018-07-07)。 Linux SSH 安全策略 限制 IP 登入方法。檢自 程式前沿 (2021-01-08)。
- Sam Tang (2019-03-12)。/etc/hosts.allow 及 /etc/hosts.deny 限制 IP 連線。檢自 LINUX 技術手札 (2021-01-08)。
- (2017-05-15)。免密碼登入 SSH Server。檢自 (2021-01-08)。
- G. T. Wang (2017-12-27)。Linux 禁止 root 管理者以 SSH 登入,強化系統安全性。檢自 G. T. Wang (2021-01-08)。
- Weithenn (2017-10-24)。CentOS 7.4 基礎設定 (6) - 禁止 Root 帳號本機及 SSH 遠端登入。檢自 不自量力 の Weithenn (2021-01-08)。
更新紀錄
最後更新日期:2021-01-18
- 2021-01-18 發布
- 2021-01-08 完稿
- 2021-01-08 起稿