Openssh 服務端檔案sshd_config參數設定

對於資訊相關從事人員來說,SSH(Secure shell)應該一點都不會陌生,使用簡易又快速的指令或腳本進行排程、觸發、檢測或備份等工作,非常便利。
當我剛開始轉職做資訊相關工作的時候,我總覺得沒有GUI的話究竟要如何使用指令去處理或檢視電腦的相關問題或設定,然後慢慢的我理解到所有的東西都是由指令開始,GUI只是讓不習慣CLI的人可快速了解跟使用,但會增加風險跟主機負載。
在網路發展的早期使用終端機是明碼傳輸,就是說只要在網路上截取到你的傳輸資料就可以知道你的帳號密碼等等資訊,然而跟著網路的使用越來越普及,資料保密就越來越重要,於是開始了加密傳輸,所以SSH(Secure shell)就因此誕生。
使用ssh的使用因為不需要開啟太多不必要的圖形介面程式所以也相對快速、安全跟減少主機負載,但也並非沒有缺點,就是要知道的指令夠多夠熟才行,比如要使用ssh去命令伺服器去建立新的VM或CT,那指令長度就真的滿恐怖的@@,不過也可以寫好腳本之後使用漸進式的問答來完成,所以我認為SSH跟GUI並沒有絕對的好壞,而是看如何應用。
以下是將會陸續完成的關於SSH的介紹,如果有想知道但我這邊沒有說明到的也可以跟我說喔(聯結),也歡迎糾正錯誤跟討論。
-
sshd登入的方式。(密碼、憑證跟TOTP)(待補)
-
登入通知。(待補)
-
登入失敗通知與鎖定(fail2ban)(待補)
-
使用sshpass做腳本給遠端電腦下指令(待補)
-
使用ssh通道做資料備份:Rsync(待補)
-
使用ssh通道做資料備份:scp(待補)
-
使用ssh_config設定快速連線(待補)
之前有大概說明了關於openssh 客戶端設定檔ssh_config的設定相關參數,如果沒有看過請參閱本篇(Openssh 客戶端檔案ssh_config參數設定。),
而本編將會說明openssh的服務端程式設定檔sshd_config等設定參數做說明,還有如何安裝等等。
在Ubuntu16.04之前,我都會使用apt安裝openssh後在進行設定sshd_config,從Ubuntu18.04開始,安裝系統時我就會直接安裝openssh,如果沒有安裝的人可以輸入
#sudo apt install openssh-server

安裝好後到/etc/ssh/資料夾中會看到一些憑證跟設定檔,
#ls /etc/ssh

在使用vi近檢視sshd_config的設定檔。
#vi /etc/ssh/sshd_config
sshd_config的相關設定參數非常多,但並不會都用到,如果有任何疑問或想法歡迎提出討論,有錯誤的部份也請告知,感謝︿︿
sshd_config(伺服端)的設定參數如下:
- Port 22
監聽的埠位,預設為22。
- AddressFamily any
選擇IP類型,any是都可以,inet是指IPV4,inet6是指IPV6。
- ListenAddress 0.0.0.0
可以連線IP位置。
- HostKey /etc/ssh/ssh_host_rsa_key
主機金鑰使用路徑。
- RekeyLimit default none
重新建立密鑰之前的最大資料傳輸量或時間。
- SyslogFacility AUTH
是否要將sshd 的訊息使用facility code做紀錄。
- LogLevel Info
設定紀錄的類型,有QUIET、FATAL、ERROR、INFO、VERBOSE、DEBUG、DEBUG1、DEBUG2 跟DEBUG3,預設info。
- LoginGraceTime 2m
設定連上ssh後使用者若沒有完成登入會斷線。
- PermitRootLogin prohibit-password
是否允許ROOT帳號登入。
- StrictModes Yes
連線時檢查使用端電腦相關資料夾或檔案權限設定是否安全。
- MaxAuthtries 6
每次連線的登入測試次數。
- MaxSession 10
ssh同時最多的連線數。
- PubkeyAuthentication yes
允許使用證書登入。
- AuthorizedKeysFile .ssh/authorized_keys .ssh/authorized_keys2
證書檔案路徑。
- HostbasedAuthentication no
指定rhosts或/etc/hosts.equiv是否與金鑰認證一起允許。
- IgnoreUserKnownHosts no
是否忽略~/.ssh/known_hosts檔案。
- IgnoreRhosts yes
是否忽略使用者的~/.rhosts跟~/.shosts檔案。
- PasswordAuthentication yes
是否使用密碼認證。
- PermitEmptyPasswords no
是否可以使用空白密碼。
- ChallengeResponseAuthentication no
是否啟用互動式登入,TOTP需要開啟。
- KerberosAuthentication no
是否使用Kerberos協定登入。 - KerberosOrLocalPasswd yes
是否同時使用Kerberos或本地密碼登入。
- KerberosTicketCleanup yes
是否在登出時清除使用者登入的暫存票證。
- KerberosGetAFSToken no
是否要取得AFS憑證。
- GSSAPIAuthentication no
是否開啟使用GSSAPI認證。
- GSSAPICleanupCredentials yes
是否在登出時清除到登入時的暫存憑證。
- GSSAPIStrictAcceptorCheck yes
開啟後除了驗證身份以外還會認證主機名稱,預設開啟。
- GSSAPIKeyExchange no
開啟使用GSSAPI金鑰交換。
- UsePAM yes
使否使用PAM文件。
- AllowAgentForwarding yes
是否允許轉發代理。
- AllowTcpForwarding yes
是否開啟TCP轉發。
- GatewayPorts no
是否開啟遠程轉發。
- X11Forwarding yes
是否開啟X11轉發。 - X11DisplayOffset 10
選擇X11顯示術。
- X11UseLocalhost yes
X11是否使用本機顯示。
- PermitTTY yes
是否允取終端機。
- PrintMotd no
是否在螢幕顯示Motd檔案。
- PrintLastLog yes
顯示上次最後一次登入。
- TCPKeepAlive yes
TCP要一直保持連線。
- PermitUserEnvironment no
是否使用可戶端環境設定參數。
- Compression delayed
是否啟用壓縮以節省頻寬,有yes、delay跟no。
- ClientAliveInterval 0
設定閒置斷線時間。
- ClientAliveCountMax 3
設定用戶端閒置斷線計算次數。
- UseDNS no
如果啟用就可以用主機名稱或IP進行連線。
- PidFile /var/run/sshd.pid
程序處理檔案位置路徑。
- MaxStartups 10:30:100
未完成認證的最大連線量比例設定。
- PermitTunnel no
是否允許使用tun device。
- ChrootDirectory none
允許使用代幣%%、%h、%U跟%u.
- VersionAddendum none
是否需要顯示版本目錄。
- Banner none
是否開啟登入顯示訊息
- AcceptEnv LANG LC_*
是否允許使用客戶端環境設定參數。
- Subsystem sftp /usr/lib/openssh/sftp-server
開啟衍伸系統。
- ForceCommand cvs server
本篇與上一篇介紹了sshd_config跟ssh_config的參數之後,下一篇開始將開始說明ssh的實務操作,如果有希望可以了解或知道什麼訊息的也歡迎告訴我喔^^(連結)