限制 Linux 的 SSH 連線設定

最近部門為了落實更高強度的資安政策,因此針對伺服器的管理多做了限制。

close
close(圖片來源: 每日頭條


一般來說,若要連線至遠端的伺服器,可以使用 SSH 這個指令:

1
$ ssh 帳號@主機

建立連線時,輸入相對應的密碼,以完成認證。


因為有些是開發用的伺服器,為了方便大家隨時使用,過往僅用密碼設置進行認證。不過根據這次的資安政策,需要針對伺服器最下列的設置:

  1. 限制登入網段
  2. 改用公開金鑰認證
  3. 禁止 root 管理者以 SSH 登入

當然不只這些限制啦,還有 Linux 系統的密碼策略要設定,不過我這個打算另外開一篇,這篇就只專注在與 SSH 連線設定的部份。



限制登入網段

適當的限制網段是有其必要性的,因此這邊來限制能夠登入伺服器的網段!
這邊我們是打算用設置白名單的方式,也就是除了明文允許的網段外,其他的一律禁止。

  1. 允許連線的網段(/etc/hosts.allow)
    假設要放行的網段為 192.168.1.0/24192.168.99.10/32,則在 /etc/hosts.allow 中新增

    1
     sshd:192.168.1.0/24,192.168.99.10/32
    
  2. 禁止連線的網段(/etc/hosts.deny)
    而除了上述放行的網段外,其他的網段則把他們擋下來。因此在 /etc/hosts.deny 中設定

    1
     sshd:ALL
    

    正常情況下,allow 的優先權會高於 deny。所以如果在 hosts.allow 這個檔案中有允許放行,並不會被 hosts.deny 的設定擋下來。

    這樣一來,就完成基本的防護設定了!



改用公開金鑰認證

關於改用公開金鑰認證這件事,之前在《設定 Linux 使用 SSH Key-based 登入驗證方式》,已經寫過了這邊就不再重複了,總之可以分成 4 個步驟:

  1. 本地端產生金鑰
  2. 將公開金鑰上傳至伺服器
  3. 啟用金鑰登入並停用密碼認證登入
  4. 最後重起 sshd



禁止 root 管理者以 SSH 登入

會禁止 root 的原因有幾個:

  1. root 這個帳號名稱是眾所皆知的,在帳號已知的情況下,只要破解密碼即可登入了,如此一來很容易遭受暴力法嘗試破解。
  2. 無法追蹤與稽核相關修改與操作,因為在系統記錄上都是 root。

如果真有需要進行 root 的操作,最好的方法還是先使用其他帳號登入後,再以 sudo 等方式切換成 root 進行管理,此作法能多一道防線,也能對哪些帳號可以具備 sudo 權限進行管理。

Linux 伺服器的預設是允許 root 管理者帳號遠端登入的,若要關閉該設定,一樣是修改 /etc/ssh/sshd_config,將其中的 PermitRootLogin 由 yes 改成 no:

1
2
- PermitRootLogin yes
+ PermitRootLogin no


在修改了 sshd_config 文件之後,一樣必須重起 sshd,以套用變更。

1
$ systemctl restart sshd



參考資料

  1. G. T. Wang (2018-02-03)。Linux 的 SSH 安全加密連線指令使用教學、設定檔配置範例。檢自 G. T. Wang (2021-01-08)。
  2. 奔騰兔 (2006-02-02)。SSH 連線設定 。檢自 奔騰兔的部落格 (2021-01-08)。
  3. 鳥哥 (2001/10/02)。限制連接上您 Linux 主機的電腦網域 。檢自 鳥哥的 Linux 私房菜 (2021-01-08)。
  4. (2018-07-07)。 Linux SSH 安全策略 限制 IP 登入方法。檢自 程式前沿 (2021-01-08)。
  5. Sam Tang (2019-03-12)。/etc/hosts.allow 及 /etc/hosts.deny 限制 IP 連線。檢自 LINUX 技術手札 (2021-01-08)。
  6. (2017-05-15)。免密碼登入 SSH Server。檢自 (2021-01-08)。
  7. G. T. Wang (2017-12-27)。Linux 禁止 root 管理者以 SSH 登入,強化系統安全性。檢自 G. T. Wang (2021-01-08)。
  8. 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 起稿