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的配置和優化