iT邦幫忙

2023 iThome 鐵人賽

DAY 30
0
Security

一個人的藍隊系列 第 30

SSH 的防禦:以及藍隊開源工具補充

  • 分享至 

  • xImage
  •  

今天最後一天,我們回歸基本和常見的服務-SSH
相較於其他可能常見的服務來說,例如 HTTP 或是 SMB
SSH 也比較能夠在一篇先簡易的探討完 XD
希望各位做為一個守護 Linux 的安全人員
當被問及保護 SSH,可以做些甚麼?可以怎麼做?會稍微有一些些概念

接著稍微補充一些其他的藍隊開源工具
畢竟這個系列實際上提到的不是很全面
還有很多不同面向沒有分享到
大家可以搭配參考前面介紹的 SOC Visibility TriadCyber Defense Matrix
來去更完善組織內部的藍隊防護網

SSH 的防禦

以下的項目都是可以針對 SSH(Secure Shell)伺服器的安全性而採取的措施,當然還有更多的後面有外部資補充。

  • 使用 KEY 來取代密碼
  • 使用 sshd_config 限制來源帳號存取
  • 以 hosts.allow 與 hosts.deny 限制連線來源 IP
  • 利用 iptables
  • 利用 SSH Daemon 設定檔
  • pam_access
  • Fail2Ban
  • 禁用 Root 登入
  • 密碼學演算法
  • 定期更新 SSH 軟體
  • 使用 Two-Factor Authentication (2FA)
  • 改 Port 號

以下是對每個項目的簡單介紹:

使用 KEY 來取代密碼

從安全角度來說,使用 Key 是一種更安全的登入方式,可以選擇改使用 SSH 金鑰對而不是密碼進行身份驗證。

以 hosts.allow 與 hosts.deny 限制連線來源 IP

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

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 Daemon設定檔限制來源

通過調整 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

pam_access

Pluggable Authentication Module(PAM)是一個用於Linux的身份驗證框架,pam_access是一個PAM模塊,可以用於限制帳戶的存取。

Fail2Ban

Fail2Ban是一個工具,它監視伺服器的日誌文件,並暫時封鎖 IP 地址,以防止暴力破解SSH密碼。#

禁用 Root 登入

上面提到多數都是限制IP來源或防止暴力破解,當然也別忘了要停用Root。關閉 SSH 的 Root 用戶登入,這樣即使攻擊者知道 Root 密碼,也無法直接登入伺服器。

使用高強度密碼學演算法:

配置 SSH 伺服器,僅允許使用安全的加密演算法,以確保傳輸的安全性。通常使用弱點評估工具例如前面提到的OpenVAS(Greenbone),都可以檢測到此風險。

定期更新 SSH 軟體

使用沒有存在漏洞的 SSH 類型跟版本,一定是最基本重要的。確保SSH伺服器軟體及其相關組件都是最新的,以修補已知的漏洞。

使用 Two-Factor Authentication (2FA)

引入雙因素驗證,使登入需要更多的身份驗證因素,提高安全性。

改 Port 號

改 Port 實際上並不是甚麼有效的或推薦的方式,也滿雞肋的,還作為一種選擇還是提供參考,可以修改 SSH 伺服器的預設連接埠號碼,這也許可以增加一點點安全性(可能也會造成更多不便利性),但不應僅依賴於此來保護伺服器。

以上這些措施可以根據具體情況組合使用,以確保 SSH 伺服器的安全性。請注意,安全性是一個持續的過程,需要不斷更新和改進。

DevSec SSH Baseline

還記得我們提到的 Complance as Code 的 InSepc 嗎?
它也有針對於 SSH Baseline 的檢查

https://dev-sec.io/baselines/ssh/
如果想要了解一下它對於 SSH 的檢查有哪些規則
或是還有甚麼其他服務,可以直接查看官方頁面

DevSec SSH Baseline
https://dev-sec.io/baselines/ssh/

https://ithelp.ithome.com.tw/upload/images/20231015/20114110gcZTWFpayx.png

https://ithelp.ithome.com.tw/upload/images/20231015/20114110jAt8J5VIxU.png

藍隊開源工具補充

以下是安全防護跟響應過程中可以參考的一些開源或免費的平台、軟體、工具,清單可能不是完整,但都算是知名有用的。包含了這個系列有提到的,也有一些沒有提到過的,提供給大家一些常見的開源參考:

弱點評估和管理

  • OpenVAS(Greenbone)
  • OpenCVE

SIEM & EDR

  • Wazuh

網路流量偵測

  • ZEEK(前身為 Bro-IDS)
  • Snort
  • Suricata

Linux 安全稽核

  • Lynis

Windows Events 的記錄

  • Sysmon

WAF

  • ModSecurity

Firewall

  • pfsense

資源監控

  • Prometheus
  • Zabbix
  • LibreNMS
  • Grafana

Log 紀錄

  • ELK
  • Graylog

威脅情資

  • OpenCTI
  • MISP

資安事件響應

  • TheHive

雲端安全稽核

  • Prowler
  • ScoutSuite

容器安全

  • Docker Bench for Security(就是我們容器文章中介紹的工具)

其他應用程式相關的 AST(AST/DAST/SCA)

  • SonarQube
  • OWASP ZAP
  • OWASP Dependency-Check
  • RetireJS

上述的工具(甚至是不包含在上面清單的),許多藍隊工具彼此也能相互整合使用,讓彼此之間的協作跟運作更流暢和便利。例如我們前面介紹的 Wazuh,就可以整合各式各樣產生LOG的服務,或是整合 TheHive、MISP 其他安全平台。

https://ithelp.ithome.com.tw/upload/images/20231015/201141104moS4Nf4mv.png
圖片來源:https://arnaudloos.com/2019/open-source-sirp-overview/

心得

這系列的文章就到這邊了,鐵人賽終於結束啦!!!
今年年底真的是忙翻,可以順利(進度跟品質有符合預期)完成鐵人賽,滿開心的 :D
雖然今年還沒時間好好仔細看別人的文章
但是有稍微翻閱了一下,覺得鐵人賽真的是可以產出很多優質的分享內容
等明年初(如果有時間)再開始消化各種有趣跟豐富的文章
(不過今年因為多了 AI 輔助,也是挺妙的。好像疑似也有看到內容跟 AI 有個九成像的 XD)

總之滿感謝 iThome 這個活動,可以引出更多人分享,
也可以讓自己(讓大家)挑戰自己,可以分享也能夠進修。
當然也希望自己的文章內容,能夠對別人有些幫助。

還有希望大家,可以繼續支持我的 YoutubeFacebook XDD


上一篇
容器安全:CIS Docker Benchmark 實踐
系列文
一個人的藍隊30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言