整理一份 sshd_config 說明
[root@shenfeng ssh]# ssh -V
OpenSSH_7.4p1, OpenSSL 1.0.2k-fips 26 Jan 2017
路徑:/etc/ssh/sshd_config
配置后需要重啟服務
完整配置如下:
1 # $OpenBSD: sshd_config,v 1.93 2014/01/10 05:59:19 djm Exp $
2
3 # This is the sshd server system-wide configuration file. See
4 # sshd_config(5) for more information.
5
6 # This sshd was compiled with PATH=/usr/local/bin:/usr/bin
7
8 # The strategy used for options in the default sshd_config shipped with
9 # OpenSSH is to specify options with their default value where
10 # possible, but leave them commented. Uncommented options override the
11 # default value.
12
ssh 默認使用 Port 22界牡,也可以使用多個 Port,如果需要使用多個 Port 另起一行 Port 443
即可瞒津,然后重啟 sshd
13 # If you want to change the port on a SELinux system, you have to tell
14 # SELinux about this change.
15 # semanage port -a -t ssh_port_t -p tcp #PORTNUMBER
16 #
17 #Port 22
監(jiān)聽 ip
eg:有兩個 IP潮饱,分別是 192.168.1.123 及 192.168.2.123来氧,假設只想要讓 192.168.1.123 可以監(jiān)聽 sshd ,ListenAddress 192.168.1.100
默認值是監(jiān)聽所有接口的 ssh 請求
18 #ListenAddress 0.0.0.0
19 #ListenAddress ::
20
ssh 的協(xié)議版本,如果需要支持舊版: Protocol 2,1
21 # The default requires explicit activation of protocol 1
22 #Protocol 2
23
私鑰存放的位置
24 # HostKey for protocol version 1
25 #HostKey /etc/ssh/ssh_host_key
26 # HostKeys for protocol version 2
27 HostKey /etc/ssh/ssh_host_rsa_key
28 #HostKey /etc/ssh/ssh_host_dsa_key
29 HostKey /etc/ssh/ssh_host_ecdsa_key
30 HostKey /etc/ssh/ssh_host_ed25519_key
31
在SSH-1協(xié)議下啦扬,短命的服務器密鑰將以此指令設置的時間為周期(秒)中狂,不斷重新生成
這個機制可以盡量減小密鑰丟失或者黑客攻擊造成的損失
設為 0 表示永不重新生成,默認為 3600(秒)
32 # Lifetime and size of ephemeral version 1 server key
33 #KeyRegenerationInterval 1h
指定臨時服務器密鑰的長度扑毡,僅用于SSH-1
34 #ServerKeyBits 1024
35
36 # Ciphers and keying
37 #RekeyLimit default none
38
登錄記錄的等級
39 # Logging
40 # obsoletes QuietMode and FascistLogging
41 #LogLevel INFO
42
當使用者連接到 ssh server 后 會提示輸入密碼胃榕,在這個時候,在設置值內(nèi)沒有成功連上 ssh server 時候就會自動斷線瞄摊,如果沒有單位 默認為 s
43 # Authentication:
44
45 #LoginGraceTime 2m
是否讓 sshd 去檢查 用戶家目錄 或 相關檔案 的權限
如果使用者將某些重要檔案的權限設錯 可能會導致一些問題
eg:使用者的~.ssh/
權限設錯時 某些特殊情況下會不許用戶登入
46 #StrictModes yes
指定每個連接最大允許的認證次數(shù)勋又,默認值是 6
如果失敗認證的次數(shù)超過這個數(shù)值的一半,連接將被強制斷開换帜,且會生成額外的失敗日志消息
47 #MaxAuthTries 6
限制同時登錄的數(shù)量
48 #MaxSessions 10
49
是否允許使用純 RSA 公鑰認證楔壤,僅用于SSH-1
50 #RSAAuthentication yes
是否允許用戶自行使用成對的密鑰進行登入系統(tǒng)行為 僅針對 version 2
自制的公鑰數(shù)據(jù)就放置于用戶家目錄下的 .ssh/authorized_keys
51 #PubkeyAuthentication yes
52
53 # The default is to check both .ssh/authorized_keys and .ssh/authorized_keys2
54 # but this is overridden so installations will only check .ssh/authorized_keys
55 AuthorizedKeysFile .ssh/authorized_keys
56
57 #AuthorizedPrincipalsFile none
58
是否允許authorized_keys中使用command項
59 #AuthorizedKeysCommand none
限制能夠在authorized_keys中使用command項的用戶
60 #AuthorizedKeysCommandUser nobody
61
這個選項是專門給 version 1 用的 使用 rhosts 檔案在 /etc/hosts.equiv
配合 RSA 演算方式來進行認證
no
62 # For this to work you will also need host keys in /etc/ssh/ssh_known_hosts
63 #RhostsRSAAuthentication no
是否允許 host_based 驗證,no
64 # similar for protocol version 2
65 #HostbasedAuthentication no
是否忽略家目錄內(nèi)的 ~/.ssh/known_hosts 這個檔案所記錄的主機內(nèi)容
no
66 # Change to yes if you don't trust ~/.ssh/known_hosts for
67 # RhostsRSAAuthentication and HostbasedAuthentication
68 #IgnoreUserKnownHosts no
是否取消使用 ~/.ssh/.rhosts 來做為認證 yes
69 # Don't read the user's ~/.rhosts and ~/.shosts files
70 #IgnoreRhosts yes
71
是否允許空密碼登錄 no
72 # To disable tunneled clear text passwords, change to no here!
73 #PermitEmptyPasswords no
74
允許任何的密碼認證惯驼,所以蹲嚣,任何 login.conf 規(guī)定的認證方式,均可適用
但目前通常使用 PAM 模塊幫忙管理認證祟牲,因此這個選項可以設定為 no
75 # Change to no to disable s/key passwords
76 #ChallengeResponseAuthentication yes
77 ChallengeResponseAuthentication no
78
Kerberos 是一種計算機網(wǎng)絡授權協(xié)議隙畜,用來在非安全網(wǎng)絡中,對個人通信以安全的手段進行身份認證说贝。這個詞又指麻省理工學院為這個協(xié)議開發(fā)的一套計算機軟件议惰。軟件設計上采用客戶端/服務器結構,并且能夠進行相互認證乡恕,即客戶端和服務器端均可對對方進行身份認證换淆。可以用于防止竊聽几颜、防止重放攻擊倍试、保護數(shù)據(jù)完整性等場合,是一種應用對稱密鑰體制進行密鑰管理的系統(tǒng)蛋哭。Kerberos的擴展產(chǎn)品也使用公開密鑰加密方法進行認證县习。
要使用Kerberos認證,服務器需要一個可以校驗 KDC identity 的 Kerberos servtab
(三頭地獄犬)
79 # Kerberos options
80 #KerberosAuthentication no # 是否允許使用基于 Kerberos的用戶認證
81 #KerberosOrLocalPasswd yes # 如果 Kerberos 密碼認證失敗谆趾,那么該密碼還將要通過其它的認證機制(比如 /etc/passwd)
82 #KerberosTicketCleanup yes # 是否在用戶退出登錄后自動銷毀用戶的 ticket
83 #KerberosGetAFSToken no # 如果使用了 AFS 并且該用戶有一個 Kerberos 5 TGT躁愿,那么開啟該指令后,將會在訪問用戶的家目錄前嘗試獲取一個 AFS token
84 #KerberosUseKuserok yes
85
86 # GSSAPI options
87 GSSAPIAuthentication yes # 是否允許使用基于 GSSAPI 的用戶認證沪蓬。默認值為”no”彤钟。僅用于SSH-2。
88 GSSAPICleanupCredentials no # 是否在用戶退出登錄后自動銷毀用戶憑證緩存
89 #GSSAPIStrictAcceptorCheck yes # 是否對接收到的用戶憑證嚴格校驗
90 #GSSAPIKeyExchange no # 是否開啟密鑰交換
91 #GSSAPIEnablek5users no
92
利用 PAM 管理使用者認證跷叉,可以記錄與管理等
UsePAM yes
&& ChallengeResponseAuthentication no
93 # Set this to 'yes' to enable PAM authentication, account processing,
94 # and session processing. If this is enabled, PAM authentication will
95 # be allowed through the ChallengeResponseAuthentication and
96 # PAM authentication via ChallengeResponseAuthentication may bypass
97 # If you just want the PAM account and session checks to run without
98 # and ChallengeResponseAuthentication to 'no'.
99 # WARNING: 'UsePAM no' is not supported in Red Hat Enterprise Linux and may cause several
100 # problems.
101 UsePAM yes
102
103 #AllowAgentForwarding yes
104 #AllowTcpForwarding yes # 允許TCP轉發(fā)
105 #GatewayPorts no # 轉發(fā)路徑端口
X11Forwarding 項目 可以讓窗口的數(shù)據(jù)透過 ssh 通道來傳送
106 X11Forwarding yes # 是否開啟X11轉發(fā)
107 #X11DisplayOffset 10 # 設置轉發(fā)的可顯示區(qū)數(shù)字為10
108 #X11UseLocalhost yes # 是否將X11的轉發(fā)服務器地址保存到loopback地址
109 #PermitTTY yes
登入后是否顯示出一些信息 預設是 yes
eg:上次登入的時間逸雹、地點等等
即輸出 /etc/motd
這個檔案的內(nèi)容
出于安全考慮 可改為 no
110 #PrintMotd yes
顯示上次登入的時間
111 #PrintLastLog yes
當成功登入后营搅,服務器會一直傳送 TCP 封包給客戶端以判斷對方是否一直存在聯(lián)機。
不過梆砸,如果聯(lián)機時中間的路由器暫時停止服務幾秒鐘转质,也會讓聯(lián)機中斷
在這種情況下,任何一端死掉后帖世,SSH可以立刻知道休蟹,而不會有僵尸程序的發(fā)生
但如果你的網(wǎng)絡或路由器常常不穩(wěn)定,那么可以設定為 no
112 #TCPKeepAlive yes
是否在交互式登錄時啟用login
113 #UseLogin no
是否讓 sshd 通過創(chuàng)建非特權子進程處理接入請求的方法來進行權限分離 默認值是 yes
認證成功后日矫,將以該認證用戶的身份創(chuàng)建另一個子進程赂弓。
這樣做的目的是為了防止通過有缺陷的子進程提升權限,從而使系統(tǒng)更加安全
eg:sshd 啟動在 port 22 哪轿,因此啟動的程序是屬于 root 的身份拣展。那么當 student 登入后,這個設定值會讓 sshd 產(chǎn)生一個屬于 sutdent 的 sshd 程序來使用缔逛,對系統(tǒng)較安全
114 UsePrivilegeSeparation sandbox # Default for new installations.
115 #PermitUserEnvironment no
指定何時開始使用壓縮數(shù)據(jù)模式進行傳輸,選項 yes
no
delayed(登錄后將數(shù)據(jù)壓縮)
116 #Compression delayed
117 #ClientAliveInterval 0 # 設置空閑登錄的最大時長
118 #ClientAliveCountMax 3 # 在沒收到任何數(shù)據(jù)的時候姓惑,最多向3個客戶端進行keepalive檢測
顯示補丁級別
119 #ShowPatchLevel no
放置 sshd 這個 PID 的檔案褐奴,默認值
120 #PidFile /var/run/sshd.pid
同時允許幾個尚未登入的聯(lián)機畫面
當連上 SSH 但是尚未輸入密碼時 這個時候就是 聯(lián)機畫面
在這個聯(lián)機畫面中,為了保護主機于毙,所以需要設定最大值敦冬,預設最多十個聯(lián)機畫面,而已經(jīng)建立聯(lián)機的不計算在這十個當中
121 #MaxStartups 10:30:100
允許tun設備轉發(fā)
122 #PermitTunnel no
是否允許切換目錄
123 #ChrootDirectory none
配置附加版本
124 #VersionAddendum none
125
不設置歡迎詞
126 # no default banner path
127 #Banner none
128
接受本地相關的環(huán)境變量類型
指定客戶端發(fā)送的哪些環(huán)境變量將會被傳遞到會話環(huán)境中
129 # Accept locale-related environment variables
130 AcceptEnv LANG LC_CTYPE LC_NUMERIC LC_TIME LC_COLLATE LC_MONETARY LC_MESSAGES
131 AcceptEnv LC_PAPER LC_NAME LC_ADDRESS LC_TELEPHONE LC_MEASUREMENT
132 AcceptEnv LC_IDENTIFICATION LC_ALL LANGUAGE
133 AcceptEnv XMODIFIERS
134
是否開啟sftp服務
135 # override default of no subsystems
136 Subsystem sftp /usr/libexec/openssh/sftp-server
137
限制只允許某個用戶登錄
138 # Example of overriding settings on a per-user basis
139 #Match User anoncvs
是否開啟X11轉發(fā)
140 # X11Forwarding no
允許TCP轉發(fā)
141 # AllowTcpForwarding no
142 # PermitTTY no
限制命令
143 # ForceCommand cvs server
一般來說唯沮,為了要判斷客戶端來源是正常合法的脖旱,會使用 DNS 去反查客戶端的主機名
不過如果是在內(nèi)網(wǎng)互連,設定為 no 會讓聯(lián)機達成速度更快
144 UseDNS no
145 AddressFamily inet
登入設定介蛉,是否允許 root 用戶登錄以任何認證方式登錄
yes
# 允許 root用戶 以任何認證方式登錄(用戶名密碼認證萌庆,公鑰認證)
no
# 不允許 root用戶 以任何認證方式登錄
without-password
# 只允許 root用戶 public key 認證方式登錄
146 PermitRootLogin yes
Linux Daemon(守護進程)是運行在后臺的一種特殊進程。它獨立于控制終端并且周期性地執(zhí)行某種任務或等待處理某些發(fā)生的事件币旧。它不需要用戶輸入就能運行而且提供某種服務践险,不是對整個系統(tǒng)就是對某個用戶程序提供服務。Linux系統(tǒng)的大多數(shù)服務器就是通過守護進程實現(xiàn)的吹菱。常見的守護進程包括系統(tǒng)日志進程syslogd巍虫、 web服務器httpd、郵件服務器sendmail和數(shù)據(jù)庫服務器mysqld等鳍刷。
守護進程一般在系統(tǒng)啟動時開始運行占遥,除非強行終止,否則直到系統(tǒng)關機都保持運行输瓜。守護進程經(jīng)常以超級用戶(root)權限運行瓦胎,因為它們要使用特殊的端口(1-1024)或訪問某些特殊的資源芬萍。
一個守護進程的父進程是init進程,因為它真正的父進程在fork出子進程后就先于子進程exit退出了凛捏,所以它是一個由init繼承的孤兒進程担忧。守護進程是非交互式程序,沒有控制終端坯癣,所以任何輸出瓶盛,無論是向標準輸出設備stdout還是標準出錯設備stderr的輸出都需要特殊處理。
守護進程的名稱通常以d結尾示罗,比如sshd惩猫、xinetd、crond等
有關登錄的文件信息 和 daemon
當使用 SSH 登入系統(tǒng)的時候蚜点,SSH 會記錄信息
預設是以 AUTH 來設定的轧房,即是 /var/log/secure
147 SyslogFacility AUTHPRIV
是否可以使用密碼登錄
148 PasswordAuthentication yes
不定期更新 不合適的地方 還請指點~ 感激不盡