
CentOS7自帶的SSH服務是OpenSSH中的一個獨立守護程序SSHD。由于使用telnet在網絡中是明文傳輸是以用其管理伺服器是非常不安全的不安全,SSH協定族可以用來對伺服器的管理以及在計算機之間傳送檔案。
一、配置檔案
- 伺服器配置檔案 /etc/ssh/sshd_config
- 日志檔案 /var/log/secure
二、配置檔案詳解
Port 22 #預設端口
ListenAddress IP #監聽伺服器端的IP,ss -ntl 檢視22端口綁定的iP位址
LoginGraceTime 2m #登入時不輸入密碼時逾時時間
HostKey # HostKey本地服務端的公鑰路徑
UseDNS no #禁止将IP逆向解析為主機名,然後比對正向解析的結果,防止用戶端欺騙
PermitRootLogin yes #是否允許root使用SSH遠端登入
MaxAuthTries 6 #密碼錯誤的次數6/2=3(MAN幫助中寫明要除2)次後斷開連接配接
MaxSessions 10 #最大的會話連接配接數(連接配接未登入的會話最大值,預設拒絕舊的連接配接未登入的會話)
StrictModes yes #檢查使用者家目錄中ssh相關的配置檔案是否正确
PubkeyAuthentication yes #是否使用基于key驗證登入
AuthorizedKeysFile .ssh/authorized_keys #key驗證登入的用戶端公鑰路徑
PasswordAuthentication yes #是否允許使用密碼登入
PermitEmptyPasswords no #使用者使用空密碼登入
GatewayPorts no #啟用網關功能,開啟後可以将建立的SSH隧道(端口轉發)共享出去
ClientAliveCountMax 3 #探測3次用戶端是否為空閑會話,↓3*10分鐘後斷開連接配接
ClientAliveInterval 10 #空閑會話時長,每10分鐘探測一次
MaxStartups 10:30:100 #start:rate:full;當連接配接但為進行認證的使用者超過10個,drop30%(rate/full)的連接配接當連接配接但未登入的連接配接達到100個後,建立立的連接配接将被拒絕
Banner /path/file #認證前輸出的登入提示資訊,指定檔案路徑
GSSAPIAuthentication no
AllowUsers username #白名單,如果白名單有使用者隻有白名單的使用者可以登陸
DenyUsers #黑名單,被拒絕的使用者,如果即允許又拒絕則拒絕生效
AllowGroups #組白名單
DenyGroups #組黑名單
三、免密登入(基于KEY驗證登入)
在用戶端成功密鑰對,然後将公鑰複制到要免密登入的伺服器即可。
注:名稱隻能為 authorized_keys ,添加多個公鑰資訊可以直接追加>> .ssh/authorized_keys
ssh-keygen -t rsa -p “1234” #建立密鑰對,-t類型為rsa,-p私鑰密碼為1234
ssh-copy-id -i ~/.ssh/id_rsa.pub IP #-i指定公鑰路徑後将公鑰複制到遠端IP ~/.ssh/authorized_keys
四、常見故障
-
提示 ssh_exchange_identification: Connection closed by remote host
多數情況為配置檔案出錯,可以使用
對配置檔案進行逐一檢查sshd -T
-
提示:server refused our key 免密登入被拒絕
使用免密登入 公鑰檔案的權限不正确是以會拒絕登入,檢查用戶端複制到服務端的公鑰資訊檔案權限是否正确
五、優化加速
伺服器端修改配置檔案中一下兩項進行修改
vim /etc/ssh/sshd_conf
UseDNS no
GSSAPIAuthentication no
UseDNS 會對用戶端進行DNS反向解析,然後在比對正向解析的結果檢視是否一緻。
GSSAPIAuthentication大多數情況下使用密碼驗證或者秘鑰驗證是以關閉GSSAPI驗證即可
六、日志分析
-
檢視方式
手動檢視日志檔案
systemctl檢視日志檔案/var/log/secure
systemctl suts sshd
-
常見警告
提示:
ssh連接配接的使用者的家目錄下.ssh目錄所有者或者權限不正确(正确為700),sshd會發出警告但依然允許登入Authentication refused:bad ownership or modes for diectory
七、安全相關
- DOS
SSH也可能成為DOS攻擊的對象,例如惡意使用者連接配接SSH但不輸入密碼進行驗證,由于設定了MaxStartups會導緻正常使用者無法進行登入。針對此情況建議:
- 修改預設端口
- MaxStartups調大一些例如
MaxStartups 100:30:1000
- LoginGraceTime 10 調整連接配接逾時未10秒
- MaxSessions 10 設定連接配接但未登入的使用者最大值為10
- 其他優化
- 限制可登入使用者
- 設定空閑會話逾時時長
- 充分利用防火牆設定ssh通路政策
- 僅監聽指定IP的ssh
- 禁止使用空密碼登入
- 禁止使用root直接進行登入
- 做好日志分析
- 加強使用者登入的密碼密碼