今天最後一天,我們回歸基本和常見的服務-SSH
相較於其他可能常見的服務來說,例如 HTTP 或是 SMB
SSH 也比較能夠在一篇先簡易的探討完 XD
希望各位做為一個守護 Linux 的安全人員
當被問及保護 SSH,可以做些甚麼?可以怎麼做?會稍微有一些些概念
接著稍微補充一些其他的藍隊開源工具
畢竟這個系列實際上提到的不是很全面
還有很多不同面向沒有分享到
大家可以搭配參考前面介紹的 SOC Visibility Triad 和 Cyber Defense Matrix
來去更完善組織內部的藍隊防護網
以下的項目都是可以針對 SSH(Secure Shell)伺服器的安全性而採取的措施,當然還有更多的後面有外部資補充。
以下是對每個項目的簡單介紹:
從安全角度來說,使用 Key 是一種更安全的登入方式,可以選擇改使用 SSH 金鑰對而不是密碼進行身份驗證。
TCP Wrapper 是一個基於主機的網路存取控制列表系統,用於過濾對類Unix系統的網路訪問。這是一種基於 IP 地址的 SSH 存取控制防禦,允許或禁止特定 IP 地址訪問 SSH 伺服器。
可以設定設定 /etc/hosts.allow,寫入允許的來源
sshd: 192.168.1.1,192.168.8.*
設定 /etc/hosts.deny,寫入禁止的來源
sshd: ALL
allow的優先級會高於deny的
iptables是Linux上的防火牆工具,可以用於設置進出 SSH 流量的規則,以確保只有授權的 IP 地址可以訪問 SSH 服務。
例如以下的寫法
允許 192.168.0.0/24 連上 22 port
其他 IP 連到 22 port 的封包則 drop
iptables -A INPUT -p tcp --dport 22 --source 192.168.0.0/24 -j ACCEPT
iptables -A INPUT -p tcp --dport 22 -j DROP
注意 iptables 只適用於 ipv4
ipv6 應該要用 ip6tables
通過調整 SSH 伺服器(sshd)的設定檔(通常在 /etc/ssh/sshd_config)中的參數,可以實施各種安全策略。
以限制來源來說,tcp_wrapper 跟 iptables 都是對於來源 IP 跟服務(即Port),可以當成是類似於防火牆的安全設定,是沒辦法做到使用者級別的設定
如果需要依照不同的使用者來限制來源IP,或限制不同的來源使用不同的驗證方式,則可以考慮使用此方法
範例: SSH Daemon 使用 Allowuser
注意,這種方式也是預設禁止的
沒有明確定義 Allowuser 則表示禁止
例如以下會限制 johndoe 跟 admin 只能從 192.168.1.0/24 來源連入
而 otherid1 跟 otherid2 這兩個使用者則可以從任何地方連入
AllowUsers johndoe@192.168.1.* admin2@192.168.1.* otherid1 otherid2
範例: SSH Daemon 使用 Match
或是可以用Match,來限制一些特例
限制特定來源的驗證方式與設定
Match Address 127.0.0.*
PubkeyAuthentication yes
限制特定使用者的驗證方式與設定
Match User anoncvs
X11Forwarding no
AllowTcpForwarding no
PermitTTY no
ForceCommand cvs server
也可以 IP 加 USER 限制
Match User zabbix Address 192.168.1.0/24
PasswordAuthentication yes
Pluggable Authentication Module(PAM)是一個用於Linux的身份驗證框架,pam_access是一個PAM模塊,可以用於限制帳戶的存取。
Fail2Ban是一個工具,它監視伺服器的日誌文件,並暫時封鎖 IP 地址,以防止暴力破解SSH密碼。#
上面提到多數都是限制IP來源或防止暴力破解,當然也別忘了要停用Root。關閉 SSH 的 Root 用戶登入,這樣即使攻擊者知道 Root 密碼,也無法直接登入伺服器。
配置 SSH 伺服器,僅允許使用安全的加密演算法,以確保傳輸的安全性。通常使用弱點評估工具例如前面提到的OpenVAS(Greenbone),都可以檢測到此風險。
使用沒有存在漏洞的 SSH 類型跟版本,一定是最基本重要的。確保SSH伺服器軟體及其相關組件都是最新的,以修補已知的漏洞。
引入雙因素驗證,使登入需要更多的身份驗證因素,提高安全性。
改 Port 實際上並不是甚麼有效的或推薦的方式,也滿雞肋的,還作為一種選擇還是提供參考,可以修改 SSH 伺服器的預設連接埠號碼,這也許可以增加一點點安全性(可能也會造成更多不便利性),但不應僅依賴於此來保護伺服器。
以上這些措施可以根據具體情況組合使用,以確保 SSH 伺服器的安全性。請注意,安全性是一個持續的過程,需要不斷更新和改進。
還記得我們提到的 Complance as Code 的 InSepc 嗎?
它也有針對於 SSH Baseline 的檢查
https://dev-sec.io/baselines/ssh/
如果想要了解一下它對於 SSH 的檢查有哪些規則
或是還有甚麼其他服務,可以直接查看官方頁面
DevSec SSH Baseline
https://dev-sec.io/baselines/ssh/
以下是安全防護跟響應過程中可以參考的一些開源或免費的平台、軟體、工具,清單可能不是完整,但都算是知名有用的。包含了這個系列有提到的,也有一些沒有提到過的,提供給大家一些常見的開源參考:
弱點評估和管理
SIEM & EDR
網路流量偵測
Linux 安全稽核
Windows Events 的記錄
WAF
Firewall
資源監控
Log 紀錄
威脅情資
資安事件響應
雲端安全稽核
容器安全
其他應用程式相關的 AST(AST/DAST/SCA)
上述的工具(甚至是不包含在上面清單的),許多藍隊工具彼此也能相互整合使用,讓彼此之間的協作跟運作更流暢和便利。例如我們前面介紹的 Wazuh,就可以整合各式各樣產生LOG的服務,或是整合 TheHive、MISP 其他安全平台。
圖片來源:https://arnaudloos.com/2019/open-source-sirp-overview/
這系列的文章就到這邊了,鐵人賽終於結束啦!!!
今年年底真的是忙翻,可以順利(進度跟品質有符合預期)完成鐵人賽,滿開心的 :D
雖然今年還沒時間好好仔細看別人的文章
但是有稍微翻閱了一下,覺得鐵人賽真的是可以產出很多優質的分享內容
等明年初(如果有時間)再開始消化各種有趣跟豐富的文章
(不過今年因為多了 AI 輔助,也是挺妙的。好像疑似也有看到內容跟 AI 有個九成像的 XD)
總之滿感謝 iThome 這個活動,可以引出更多人分享,
也可以讓自己(讓大家)挑戰自己,可以分享也能夠進修。
當然也希望自己的文章內容,能夠對別人有些幫助。
還有希望大家,可以繼續支持我的 Youtube 跟 Facebook XDD