【學習筆記】Linux系統中SSH服務安全配置

一、背景知識

以ubuntu為例,查看ssh服務是否安全并配置,執行

ssh -V

ssh的配置文件路徑:/etc/ssh/sshd_config

二、SSH服務配置文件

1.端口和監聽設置

  • Port?22??

    • 含義:指定SSH服務監聽的端口號(默認是22)。 ?

    • 解釋:從安全角度,默認端口22容易成為攻擊目標,建議改為非標準端口以減少掃描風險。從功能角度,如果啟用(如Port 2222),則會改變連接端口。

  • AddressFamily any??

    • 含義:控制SSH服務支持的網絡地址族(如IPv4或IPv6)。any表示同時支持IPv4和IPv6。 ?

    • 解釋:從兼容性角度,啟用該配置可以確保服務在現代網絡中正常工作。從安全角度,如果只使用IPv4,可以設為inet以減少潛在攻擊面。

  • ListenAddress 0.0.0.0 ?

    • 含義:指定SSH服務監聽的IPv4地址(0.0.0.0表示所有可用IPv4接口)。 ?

    • 解釋:從安全角度,綁定到特定IP(如192.168.1.100)可以減少暴露面。從功能角度,默認設置方便多網卡環境。

  • ListenAddress?: :

    • 含義:指定SSH服務監聽的IPv6地址(::表示所有可用IPv6接口)。 ?

    • 解釋:類似IPv4設置,默認啟用所有接口便于訪問,但從安全角度,建議根據網絡需求定制。


2.主機密鑰設置

  • HostKey /etc/ssh/ssh_host_rsa_key ?

    • 含義:指定RSA算法的主機密鑰文件路徑,用于服務器身份驗證。 ?

    • 解釋:從安全角度,RSA密鑰提供強加密,是現代SSH的推薦設置。默認路徑確保密鑰存儲可靠。

  • HostKey /etc/ssh/ssh_host_dsa_key ?

    • 含義:指定DSA算法的主機密鑰文件路徑。 ?

    • 解釋:從安全角度,DSA已過時且易受攻擊,不建議啟用。功能角度,兼容舊系統,但默認禁用是好的做法。

  • HostKey /etc/ssh/ssh_host_ecdsa_key ?

    • 含義:指定ECDSA算法的主機密鑰文件路徑,提供更強的安全性和效率。 ? ?

    • 解釋:從性能角度,ECDSA比RSA更快速;從安全角度,它基于橢圓曲線密碼學,推薦用于現代系統。

  • HostKey /etc/ssh/ssh_host_ed25519_key ?

    • 含義:指定Ed25519算法的主機密鑰文件路徑,這是一種高性能且安全的密鑰類型。 ?

    • 解釋:從安全角度,Ed25519提供頂級保護;從功能角度,它適合高安全環境,如云服務器。


3.加密和密鑰設置(Ciphers and Keying)

  • RekeyLimit default none ?

    • 含義:定義會話密鑰重新生成的限制(如數據量或時間),default表示使用系統默認值,none表示不限制。 ?

    • 解釋:從安全角度,定期重新密鑰可防止長期攻擊;從性能角度,限制過多可能影響連接速度。默認值通常在安全性和效率間平衡。


4.日志設置

  • SyslogFacility AUTH ?

    • 含義:指定日志消息的Syslog工具(facility),AUTH用于認證相關消息。 ? ?

    • 解釋:從審計角度,啟用此配置可幫助記錄認證事件,但默認未設置,需結合其他配置。

  • SyslogFacility AUTHPRIV??

    • 含義:指定日志消息的Syslog工具為AUTHPRIV(私有認證消息),提供更安全的日志記錄。 ? ?

    • 解釋:從安全角度,AUTHPRIV比AUTH更安全,因為它限制日志訪問權限;從功能角度,便于管理員審計SSH事件。

  • LogLevel INFO??

    • 含義:設置日志詳細級別,INFO顯示常規信息(如連接和認證)。 ??

    • 解釋:從監控角度,INFO級足夠日常使用;從性能角度,更高級別(如DEBUG)可能產生大量日志,影響磁盤空間。


5.認證設置(Authentication)

  • LoginGraceTime 2m??

    • 含義:定義用戶登錄嘗試的超時時間(默認2分鐘),超時后連接關閉。 ?

    • 解釋:從安全角度,短超時(如1分鐘)可防暴力攻擊;從可用性角度,默認值避免合法用戶因延遲被踢出。

  • PermitRootLogin yes ?

    • 含義:控制是否允許root用戶直接登錄。yes表示允許。 ?

    • 解釋:從安全角度,設為no或without-password(僅密鑰登錄)可大幅降低風險;從管理角度,默認可能允許root登錄,但不推薦。

  • StrictModes yes ?

    • 含義:檢查用戶密鑰文件的權限(如.ssh目錄必須為700),防止未授權訪問。 ?

    • 解釋:從安全角度,啟用此選項可防止密鑰泄露;功能角度,確保文件權限正確。

  • MaxAuthTries 6 ?

    • 含義:設置每個連接允許的最大認證嘗試次數(默認6次)。 ?

    • 解釋:從安全角度,減少此值(如3次)可防暴力破解;從誤操作角度,默認值避免合法用戶被鎖出。

  • MaxSessions 10??

    • 含義:限制每個網絡連接允許的并發會話數(默認10)。 ?

    • 解釋:從資源角度,控制會話數可防DoS攻擊;從功能性角度,默認值適合多數場景。

  • PubkeyAuthentication yes??

    • 含義:啟用公鑰認證(基于密鑰對登錄)。 ?

    • 解釋:從安全角度,公鑰認證比密碼更安全;功能角度,它是SSH的主要登錄方式。

  • AuthorizedKeysFile .ssh/authorized_keys ?

    • 含義:指定用戶公鑰存儲文件的位置(默認.ssh/authorized_keys)。 ?

    • 解釋:從安全角度,固定路徑便于管理;功能角度,簡化密鑰部署。

  • AuthorizedPrincipalsFile none ?

    • 含義:定義基于角色的認證文件(如用于多用戶管理),none表示禁用。 ?

    • 解釋:從管理角度,此配置適用于復雜環境;安全角度,默認禁用減少攻擊面。

  • AuthorizedKeysCommand none ?

    • 含義:指定外部命令來獲取授權密鑰,none表示禁用。 ? ?

    • 解釋:功能角度,啟用此選項可實現動態密鑰管理;安全角度,外部命令可能引入風險。

  • AuthorizedKeysCommandUser nobody??

    • 含義:設置運行AuthorizedKeysCommand的用戶(默認nobody)。 ?

    • 解釋:從權限角度,指定低權限用戶可增強安全;默認未啟用,因為主命令未啟用。

  • HostbasedAuthentication no??

    • 含義:控制基于主機的認證(信任其他主機),no表示禁用。 ?

    • 解釋:從安全角度,此方法風險高(易受IP欺騙),不建議啟用;功能角度,僅用于特殊信任環境。

  • IgnoreUserKnownHosts no??

    • 含義:是否忽略用戶的~/.ssh/known_hosts文件(用于主機驗證),no表示不忽略。 ?

    • 解釋:從安全角度,啟用此選項(設為yes)可防某些攻擊,但會降低便利性;功能角度,默認保持主機驗證。

  • IgnoreRhosts yes ?

    • 含義:是否忽略用戶的.rhosts和.shosts文件(舊式認證),yes表示忽略。 ? ?

    • 解釋:從安全角度,這些文件易被濫用,默認忽略是好的;歷史兼容角度,僅在舊系統可能啟用。

  • PasswordAuthentication yes??

    • 含義:啟用密碼認證(用戶輸入密碼登錄)。 ?

    • 解釋:冗余行,實際設置由未注釋行控制。

  • PasswordAuthentication yes ?

    • 含義:啟用密碼認證。 ?

    • 解釋:從安全角度,密碼認證易受暴力破解,建議禁用(設為no)并改用密鑰;從可用性角度,啟用便于用戶初始登錄。

  • PermitEmptyPasswords no ?

    • 含義:禁止空密碼登錄,no表示不允許。 ?

    • 解釋:從安全角度,空密碼是嚴重漏洞,默認禁用是必須的。

  • ChallengeResponseAuthentication yes??

    • 含義:啟用挑戰-響應認證(如一次性密碼)。 ?

    • 解釋:冗余行,實際設置由未注釋行控制。

  • ChallengeResponseAuthentication no??

    • 含義:禁用挑戰-響應認證。 ? ?

    • 解釋:從安全角度,禁用此選項可簡化認證流程;功能角度,如果啟用,需額外配置(如PAM)。

  • GSSAPIAuthentication yes??

    • 含義:啟用GSSAPI認證(基于Kerberos或類似協議)。 ??

    • 解釋:從安全角度,GSSAPI提供強企業級認證;從集成角度,適用于Active Directory環境。

  • GSSAPICleanupCredentials no??

    • 含義:控制是否在會話結束時清理GSSAPI憑據,no表示不清理。 ? ?

    • 解釋:從安全角度,清理憑據可防泄露;功能角度,設為no可能提高便利性(如保持單點登錄)。

  • GSSAPIStrictAcceptorCheck yes??

    • 含義:嚴格檢查GSSAPI服務名稱,yes表示啟用嚴格模式。 ?

    • 解釋:從安全角度,啟用可防中間人攻擊;性能角度,嚴格檢查可能增加開銷。

  • GSSAPIKeyExchange no 和 GSSAPIEnablek5users no ?

    • 含義:控制GSSAPI在密鑰交換或用戶映射中的使用,no表示禁用。 ? ?

    • 解釋:功能角度,僅在需要Kerberos集成時啟用;安全角度,默認禁用避免復雜配置錯誤。


6.PAM設置

  • UsePAM yes ?

    • 含義:啟用PAM認證框架,允許集成系統級認證策略。 ?

    • 解釋:從安全角度,PAM支持多因子認證和賬戶鎖定;從功能性角度,它覆蓋密碼和挑戰響應認證(如文本中警告所述),并處理賬戶與會話管理。警告提到在Red Hat系統中禁用PAM可能導致問題,因此啟用是推薦的。


7.轉發和X11設置

  • AllowAgentForwarding yes ?

    • 含義:允許SSH代理轉發(轉發本地密鑰到遠程主機)。 ?

    • 解釋:從便利角度,轉發便于跳板機訪問;安全角度,可能被濫用,建議在受控環境啟用。

  • AllowTcpForwarding yes??

    • 含義:允許TCP端口轉發(創建隧道)。 ?

    • 解釋:功能角度,啟用便于VPN-like功能;安全角度,轉發可能被用于繞過防火墻。

  • GatewayPorts no??

    • 含義:控制轉發端口是否綁定到所有接口(no表示僅本地)。 ?

    • 解釋:從安全角度,設為no可防止外部訪問轉發端口;功能角度,設為yes允許遠程共享端口。

  • X11Forwarding yes??

    • 含義:啟用X11圖形界面轉發(顯示遠程GUI應用)。 ?

    • 解釋:從功能性角度,便于遠程桌面;安全角度,X11轉發有歷史漏洞,建議僅在需要時啟用。

  • X11DisplayOffset 10??

    • 含義:設置X11顯示端口的偏移量(默認10)。 ?

    • 解釋:功能角度,偏移防止端口沖突;性能角度,默認值通常足夠。

  • X11UseLocalhost yes??

    • 含義:綁定X11轉發到localhost(僅本地訪問)。 ?

    • 解釋:安全角度,綁定localhost可減少網絡暴露;默認啟用是好的。

  • PermitTTY yes??

    • 含義:允許分配TTY(終端)


三、SSH服務安全配置

1.基礎安全配置

(1)修改默認端口
將默認 22 端口改為高位端口(如 1024 以上),降低掃描攻擊風險

Port 2222 ?# 在 /etc/ssh/sshd_config 中修改?

(2)強制使用 SSH-2 協議

禁用不安全的 SSH-1,僅保留最新協議版本:Protocol 2?

(3)限制監聽地址

僅綁定必要的內網或特定 IP,減少暴露面:

ListenAddress 192.168.1.100 ?# 非必要不監聽 0.0.0.0

2.認證機制強化

(1)禁用密碼認證
全面啟用密鑰認證,規避暴力破解風險

PasswordAuthentication no?

PubkeyAuthentication yes?

(2)雙因素認證(2FA)

結合 Google Authenticator 等工具實現動態驗證碼+密鑰的雙重驗證

安裝 libpam-google-authenticator 后配置
ChallengeResponseAuthentication yes?AuthenticationMethods publickey,keyboard-interactive?

(3)禁止 root 直接登錄
強制使用普通用戶登錄后提權:

PermitRootLogin no

3.訪問控制策略

(1)用戶/IP 白名單
僅允許指定用戶或 IP 段訪問,例如:

AllowUsers user1 user2@192.168.*.* ?# 支持通配符

(2)防火墻規則
使用云平臺安全組或?ufw/iptables?限制 SSH 端口的來源 IP:

sudo ufw allow from 192.168.1.0/24 to any port 2222

(3)登錄頻率限制

通過 Fail2ban 自動封禁異常 IP(如 30 秒內 3 次失敗嘗試)

4.高級安全參數

(1)會話超時控制
自動斷開無響應連接,防止閑置會話占用資源:

ClientAliveInterval 300 ?# 300 秒檢測一次?
ClientAliveCountMax 3

(2)權限分離與日志監控

UsePrivilegeSeparation yes ?# 隔離特權操作?
LogLevel VERBOSE ?# 記錄詳細日志

(3)禁用非必要功能
關閉圖形轉發和空密碼登錄:

X11Forwarding no?

PermitEmptyPasswords no

5.密鑰管理與維護

(1)密鑰生成規范

使用高強度算法生成密鑰對:

ssh-keygen -t ed25519 -a 100 ?# 或 RSA-4096

(2)密鑰定期輪換

建議每 6-12 個月更換一次密鑰,并清理廢棄公鑰。

(3)文件權限控制

chmod 600 ~/.ssh/authorized_keys ?# 用戶密鑰嚴格權限

(4)補充工具推薦

SSH 客戶端安全配置:在 ~/.ssh/config 中指定私鑰路徑和保活參數:

ServerAliveInterval 60 ?# 防止 NAT 超時

SELinux/AppArmor:啟用強制訪問控制框架限制 SSH 進程權限

---

參考文獻:

Linux系統中的SSH服務配置詳解與安全配置

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/pingmian/87963.shtml
繁體地址,請注明出處:http://hk.pswp.cn/pingmian/87963.shtml
英文地址,請注明出處:http://en.pswp.cn/pingmian/87963.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

FastAPI + Tortoise-ORM + Aerich 實現數據庫遷移管理(MySQL 實踐)

在 FastAPI 項目中,Tortoise-ORM 是一個輕量的異步 ORM 框架,適用于 async/await 場景。結合數據庫遷移工具 Aerich,可以優雅地管理數據庫表結構演進,本文將通過完整流程演示如何在 MySQL 環境下使用。📦 一、環境準備…

7.7日 實驗03-Spark批處理開發(2)

使用Spark處理數據文件檢查數據檢查$DATA_EXERCISE/activations里的數據&#xff0c;每個XML文件包含了客戶在指定月份活躍的設備數據。拷貝數據到HDFS的/dw目錄樣本數據示例&#xff1a;<activations><activation timestamp"1225499258" type"phone&q…

C語言可變參數感悟

#include <stdio.h> #include <stdarg.h> #if 1 /* *在C語言中&#xff0c;可變參函數是指參數數量不固定的函數&#xff0c;比如printf\scanf *可變參函數的語法&#xff1a; *返回類型 函數名&#xff08;固定函數&#xff0c;.....) { //函數體 } *1、包含頭文件…

LeetCode 1248.統計優美子數組

給你一個整數數組 nums 和一個整數 k。如果某個連續子數組中恰好有 k 個奇數數字&#xff0c;我們就認為這個子數組是「優美子數組」。 請返回這個數組中 「優美子數組」 的數目。 示例 1&#xff1a; 輸入&#xff1a;nums [1,1,2,1,1], k 3 輸出&#xff1a;2 解釋&#xf…

FastAPI Docker環境管理腳本使用指南

作者: 源滾滾AI編程 創建時間: 2025年07月08日 版本: v1.0.0 文檔狀態: 完成 版權聲明 本文檔由源滾滾AI編程創作,版權所有。未經作者書面許可,不得復制、分發或用于商業用途。 免責聲明 本文檔僅用于技術交流和學習目的。作者不對使用本文檔內容導致的任何問題承擔責任。…

前端常見 HTTP 狀態碼

作為前端開發者&#xff0c;與后端 API 交互時&#xff0c;HTTP 狀態碼是判斷請求成敗的關鍵信號。理解常見狀態碼的含義、責任歸屬及應對策略&#xff0c;能極大提升調試效率和團隊協作。以下是關鍵狀態碼的詳細解析&#xff1a; 首先說一下如何查看狀態碼&#xff1a; 如上圖…

深度解析C語言內存函數(小米面試題)

目錄 一、memcpy1.1 代碼演示1.2 memcpy的模擬實現 二、memmove2.1 代碼演示2.2 模擬實現&#xff08;小米面試題&#xff09; 三、memset3.1 代碼演示3.2 總結 四、memcmp4.1 代碼演示4.2 總結 總結 一、memcpy &#xff08;memory copy 內存復制&#xff09; 之前文章中寫的…

DK124反激式開關電源芯片

18W 高性能交直流轉換芯片 特性 DK124 是一款離線式開關電源芯片&#xff0c;最大輸出功率達到 24W。內部集成了 PWM 控制器、700V 功率管和初級峰值電流檢測電路&#xff0c;并采用了可以省略輔助供電繞組的專利自供電技術&#xff0c;極大簡化了外圍應用電路&#xff0c;減…

商品銷售數據分析實驗

進入虛擬機&#xff0c;啟動HDFS和Yarn1.創建表 hive show databases; use test;銷售訂單表create table t_dml (detail_id bigint,sale_date date, province string,city string,product_id bigint,cnt bigint,amt double )row format delimited fields terminated by ,;商品…

PH熱榜 | 2025-07-08

1. TensorBlock Forge 標語&#xff1a;人工智能模型的API 介紹&#xff1a;Forge是一個快速且安全的工具&#xff0c;讓你可以跨不同供應商連接和運行AI模型 產品網站&#xff1a; 立即訪問 Product Hunt&#xff1a; View on Product Hunt 票數&#xff1a; &#x1f53a…

2025-01)electronjs-v11.2.0升級到新版本electronjs-v37.2.0記錄,node版本記錄,淘寶鏡像配置記錄,升級記錄

背景:由于22年使用electronjs開發的自助機客戶端幾年沒去維護,現在有需求要修改,電腦也換新了,node環境也沒,直接把electron從 之前的 11.2.0 版本 升級到了37.2.0版本,升級最主要的目的是升級谷歌瀏覽器內核,升級后谷歌瀏覽器內核直接從87升級到了138,可以支持谷歌最新…

iQOO手機怎樣相互遠程控制?其他手機可以遠程控制iQOO嗎?

iQOO是Vivo同一品牌下的產品&#xff0c;它們兩款手機都可以使用手機內置的遠程控制功能。具體做法是&#xff0c;打開控制端的iQOO手機的【設置】【快捷與輔助】、【遠程協助】&#xff0c;然后輸入被控端的電話號碼&#xff0c;等被控端的手機接受遠程協助后&#xff0c;就可…

【入門級-C++程序設計:3、程序基本語句-多層循環語句】

1、定義&#xff1a; 在 C 中&#xff0c;多層循環&#xff08;嵌套循環&#xff09;是指在一個循環體內包含另一個或多個循環語句。它常用于處理多維數據結構&#xff08;如二維數組&#xff09;、復雜的迭代邏輯&#xff08;如矩陣運算、圖形打印、組合遍歷等&#xff09;。多…

四、jenkins自動構建和設置郵箱

一、jenkins自動構建什么自動構建、有啥用&#xff1a;觸發方式代碼提交&#xff08;Git push&#xff09;定時任務&#xff08;如每天凌晨構建&#xff09;手動點擊等方式&#xff08;立即執行&#xff09;執行內容從 Git/SVN 拉取最新代碼運行編譯&#xff08;如 Maven/Gradl…

【深度學習新浪潮】深入解析LLM關鍵概念:架構、優化與最新研究進展

1. Transformer架構與注意力機制 概念解析 Transformer是LLM的核心架構,由編碼器和解碼器組成,其核心創新是自注意力機制,通過計算輸入序列中每個位置的關聯權重,動態聚焦關鍵信息。自注意力機制的計算復雜度為O(n),在處理長序列時成為性能瓶頸。 代碼示例:基礎Transfo…

RAGflow圖像解析與向量化分析

RAGflow圖像解析與向量化分析 注:需要提前部署好ragflow,才方便一 一對應代碼,部署教程:rag部署教程,這樣才會方便后續更改 1. 圖像解析流程 RAGflow通過多種解析器處理不同類型的文檔,其中圖像解析是一個重要組成部分。以下是RAGflow處理圖像的主要流程: 1.1 PDF文…

千翼破界,百景賦能 | 2025深圳eVTOL展無人機場景應用專場即將啟幕

在技術革新、應用深化、產業鏈協同升級及低空空域管理改革等多重政策紅利驅動下&#xff0c;我國工業級無人機產業正邁入爆發式增長新階段&#xff0c;持續引領民用無人機市場繁榮。數據顯示&#xff0c;2019 至2024年&#xff0c;我國民用無人機市場規模從435.1億元躍升至1108…

Go語言標識符命名規則詳解:工程化實踐

引言 Go語言的命名規則是其簡潔哲學和工程實用性的集中體現。下面從語法規范、最佳實踐到實際應用進行全面解析&#xff1a; 一、基礎命名規則 1. 變量命名 // 小駝峰式&#xff08;lowerCamelCase&#xff09; var userName string var maxRetryCount 3 var isConnected bool…

RISC-V:開源芯浪潮下的技術突圍與職業新賽道 (一)為什么RISC-V是顛覆性創新?

第一篇&#xff1a;開篇&#xff1a;為什么RISC-V是顛覆性創新&#xff1f; 打破70年架構壟斷&#xff0c;開源硬件如何重塑芯片產業規則&#xff1f;一、傳統架構的“圍城之困”&#xff08;痛點切入&#xff09; ARM/X86的統治代價 授權費暴利模型 &#xff1a; ARM指令集授權…

【機器學習筆記 Ⅱ】7 多類分類

1. 多類分類&#xff08;Multi-class Classification&#xff09; 定義 多類分類是指目標變量&#xff08;標簽&#xff09;有超過兩個類別的分類任務。例如&#xff1a; 手寫數字識別&#xff1a;10個類別&#xff08;0~9&#xff09;。圖像分類&#xff1a;區分貓、狗、鳥等。…