1. 程式人生 > >Centos7中sshd服務介紹及優化

Centos7中sshd服務介紹及優化

CentOS7自帶的SSH服務是OpenSSH中的一個獨立守護程序SSHD。由於使用telnet在網路中是明文傳輸所以用其管理伺服器是非常不安全的不安全,SSH協議族可以用來對伺服器的管理以及在計算機之間傳送檔案。
一、-配置檔案
1、伺服器配置檔案 /etc/ssh/sshd_config
2、日誌檔案 /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驗證即可六、日誌分析

檢視方式
手動檢視日誌檔案 /var/log/secure
systemctl檢視日誌檔案systemctl suts sshd
常見警告
提示:Authentication refused:bad ownership or modes for diectory
ssh連線的使用者的家目錄下.ssh目錄所有者或者許可權不正確(正確為700),sshd會發出警告但依然允許登入

七、安全相關- DOS
SSH也可能成為DOS攻擊的物件,例如惡意使用者連線SSH但不輸入密碼進行驗證,由於設定了MaxStartups會導致正常使用者無法進行登入。針對此情況建議:
* 修改預設埠
* MaxStartups調大一些例如 MaxStartups 100:30:1000
* LoginGraceTime 10 調整連線超時未10秒
* MaxSessions 10 設定連線但未登入的使用者最大值為10

  • 其他優化
    • 限制可登入使用者
    • 設定空閒會話超時時長
    • 充分利用防火牆設定ssh訪問策略
    • 僅監聽指定IP的ssh
    • 禁止使用空口令登入
    • 禁止使用root直接進行登入
    • 做好日誌分析
    • 加強使用者登入的密碼口令