1. 程式人生 > >sshd的配置和優化

sshd的配置和優化

sshd服務 vim listen ash 客戶 tdi 黑名單 thead 禁用

sshd的配置和優化

sshd服務器端的配置文件為/etc/ssh_config

配置文件中的一些常用參數

常用參數 說明
port 監聽端口號
ListenAddress ip 監聽的IP地址
LoginGraceTime 發起連接後多少時間內必須登錄超時斷開連接
PermitRootLogin 是否允許root登錄
StrictModes 檢查.ssh/文件的所有者,權限等
MaxAuthTries 最大密碼嘗試次數
MaxSessions 同一連接的最大繪會話數
PubkeyAuthentication 基於Key驗證
PermitEmptyPasswords 是否使用空口令登錄
PasswordAuthentication 基於口令驗證
GatewayPorts ssh服務監聽所使用的端口當網關使用
ClientAliveInterval 間隔多久客戶端和服務器端沒有操作就斷開連接
ClientAliveCountMax 和上面那項一起使用為檢查的次數
UseDNS 是否使用名稱解析
GSSAPIAuthentication GSSAPI的認證
MaxStartups 未驗證的最大連接數
Banner 登錄前提示
AllowUsers 允許哪些用戶登錄(白名單)
DenyUsers 不允許哪些用戶登錄(黑名單)
AllowGroups 允許哪些組登錄(白名單)
DenyGroups 不允許哪些組登錄(黑名單)

詳細用法:
1.port
在生產環境中建議將此端口改為非標準端口,防止被人惡意猜測密碼。

[[email protected] ~]# vim /etc/ssh/sshd_config
Port 2222
[[email protected] ~]# service sshd restart
Stopping sshd:                                             [  OK  ]
Starting sshd:                                             [  OK  ]

#此時sshd服務已經監聽在2222端口上
[[email protected] ~]# lsof -i:2222
COMMAND  PID USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
sshd    2424 root    3u  IPv4  13945      0t0  TCP *:EtherNet/IP-1 (LISTEN)
sshd    2424 root    4u  IPv6  13947      0t0  TCP *:EtherNet/IP-1 (LISTEN)

2.LinstenAddress
若本機有多個ip地址,可以指定用哪個地址提供sshd服務

vim /etc/ssh/sshd_config
Port 2222
ListenAddress 172.22.27.12
[[email protected] ~]# service sshd restart
Stopping sshd:                                             [  OK  ]
Starting sshd:                                             [  OK  ]

#此時sshd服務監聽在172.22.27.124的2222端口上
[[email protected] ~]# ss -tnl |grep 2222
LISTEN     0      128           172.22.27.124:2222                     *:*  

3.LoginGraceTime
此項表示有多少用戶發起ssh連接後多少時間內必須輸入密碼登錄,否則斷開連接默認為2分鐘

#LoginGraceTime 2m

4.PermitRootLogin
是否允許root用戶登錄,在生產環境中,最好禁止root用戶直接登錄

[[email protected] ~]# vim /etc/ssh/sshd_config
Port 2222
ListenAddress 172.22.27.12
PermitRootLogin no 

重啟sshd服務
[[email protected] ~]# service sshd restart
Stopping sshd:                                             [  OK  ]
Starting sshd:                                             [  OK  ]

#此時使用root賬戶已經無法登錄
[[email protected] ~]# ssh -p 2222 [email protected]
The authenticity of host ‘[172.22.27.124]:2222 ([172.22.27.124]:2222)‘ can‘t be established.
RSA key fingerprint is 46:d8:67:07:f3:51:87:95:2c:d7:4b:27:ce:85:a2:ed.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added ‘[172.22.27.124]:2222‘ (RSA) to the list of known hosts.
[email protected]‘s password: 
Permission denied, please try again.
[email protected]‘s password: 
Permission denied, please try again.
[email protected]‘s password: 
Permission denied (publickey,password).

5.MaxAuthTries
最大密碼嘗試次數默認為3次,嘗試次數為此項後的值的一半

[[email protected] ~]# vim /etc/ssh/sshd_config
#MaxAuthTries 6

6.MaxSessions
同一連接的最大會話個數,默認為10個

[[email protected] ~]# vim /etc/ssh/sshd_config
MaxSessions 3

重啟服務
[[email protected] ~]# service sshd restart
Stopping sshd:                                             [  OK  ]
Starting sshd:                                             [  OK  ]
此時克隆會話時最多只能克隆3個在多就會拒絕

7.PubkeyAuthentication
基於Key驗證,登錄時使用密鑰驗證,此項默認開啟生產環境中最好使用key驗證。

[[email protected] ~]# vim /etc/ssh/sshd_config
#PubkeyAuthentication yes

8.PermitEmptyPasswords
是否使用空口令登錄,生產環境中使用空口令登錄是非常危險的,所以此處默認也是禁止的

[[email protected] ~]# vim /etc/ssh/sshd_config
#PermitEmptyPasswords no

9.PasswordAuthentication
基於口令驗證,默認為開啟。生產環境中建議禁用口令登錄。只開啟密鑰登陸

[[email protected] ~]# vim /etc/ssh/sshd_config
PasswordAuthentication yes

10.GatewayPorts
ssh服務監聽所使用的端口當網關使用
此項用法可參考端口轉發
11.ClientAliveInterval和ClientAliveCountMax
ClientAliveInterval:連接後多久沒有操作則斷開
ClientAliveCountMax:檢測幾次後發現沒有操作斷開,此項和上一項結合一起使用

[[email protected] ~]# vim /etc/ssh/sshd_config
#ClientAliveInterval 0             #0表示不限制時間
#ClientAliveCountMax 3

11.UseDNS和GSSAPIAuthentication
此處2項建議關閉,能加速ssh的連接速度
12.MaxStartups
未驗證的最大連接數,默認的10:30:100表示,ssh連接進入前10個鏈接能全部連接上,當連接數大於10個就以30%的紀律隨機拒絕登陸,連接數超過100個全部拒絕

[[email protected] ~]# vim /etc/ssh/sshd_config
MaxStartups 10:30:100

12.Banner
登錄前提示,在選項後跟上路徑

[[email protected] ~]# vim /etc/ssh/sshd_config
Banner /data/hello
[[email protected] ~]# echo hello > /data/hello    #創建一個hello的文件
#重啟服務
[[email protected] ~]# service sshd restart
Stopping sshd:                                             [  OK  ]
Starting sshd:                                             [  OK  ]
[[email protected] ~]# ssh -p 2222 [email protected]
hello                                       #所創建的登錄前提示
[email protected]‘s password: 

13、AllowUsers、DenyUsers、AllowGroups、DenyGroups
此處4項為用戶和組的黑白名單

[[email protected] ~]# vim /etc/ssh/sshd_config 
DenyUsers wang                      #將wang用戶加入黑名單
#重啟服務
[[email protected] ~]# service sshd restart
Stopping sshd:                                             [  OK  ]
Starting sshd:                                             [  OK  ]

[[email protected] ~]# useradd wang
[[email protected] ~]# echo 111111 | passwd --stdin wang
Changing password for user wang.
passwd: all authentication tokens updated successfully.
#此時wang用戶無法登陸
[[email protected] ~]# ssh -p 2222  [email protected]
hello
[email protected]‘s password: 
Permission denied, please try again.
[email protected]‘s password: 
Permission denied, please try again.
[email protected]‘s password: 
Permission denied (publickey,password).

生產環境中ssh服務最佳實踐

1.建議使用非默認端口
修改port
2.禁止使用protocol version 1
Protocol 2
3.限制可登錄用戶
AllowUsers、DenyUsers、AllowGroups、DenyGroups
4.設定空閑會話超時時長
ClientAliveInterval和ClientAliveCountMax
5.利用防火墻設置ssh訪問策略
設置iptables策略
6.僅監聽特定的IP地址
修改Listen
7.基於口令認證時,使用強密碼策略
使用難以猜測的隨機口令,長度越長約好,並定期修改。
8.使用基於密鑰的認證
使用密鑰登陸,不使用口令
9.禁止使用空密碼
PermitEmptyPasswords no
10.禁止root用戶直接登錄
PermitRootLogin
11.限制ssh的訪問頻度和並發在線數
MaxStartups
12.經常分析日誌
sshd的日誌文件為/var/log/secure

sshd的配置和優化