SSH-Server配置指南
一、SSH簡(jiǎn)介
SSH (Secure Shell)是一個(gè)應(yīng)用程序中提供安全通信的協(xié)議,通過(guò)SSH協(xié)議可以安全地訪問(wèn)服務(wù)器,因?yàn)镾SH 具有成熟的公鑰加密體系,在數(shù)據(jù)進(jìn)行傳輸時(shí)進(jìn)行加密,保證數(shù)據(jù)在傳輸時(shí)不被惡意篡改、破壞和泄露,能有效防止網(wǎng)絡(luò)嗅探和IP欺騙等攻擊。
二、服務(wù)器端Ubuntu平臺(tái)下OpenSSH server的安裝
SSH是由芬蘭的一家公司開(kāi)發(fā)的,但是因?yàn)槭馨鏅?quán)和加密算法的限制,現(xiàn)在很多人都轉(zhuǎn)而使用OpenSSH。OpenSSH是SSH的替代軟件,而且是免費(fèi)的。
下以命令均是以管理員身份登錄使用
1. 在Ubuntu終端使用apt命令
如果下載失敗,可能是由于系統(tǒng)需要更新的緣故,嘗試更新一下,就可以了。使用一下命令:
2. 配置openssh server,可以按照需求修改配置文件
3. 重啟服務(wù)器
配置“/etc/ssh/ssh_config”文件
“/etc/ssh/ssh_config” 文件是OpenSSH系統(tǒng)范圍的配置文件,允許你通過(guò)設(shè)置不同的選項(xiàng)來(lái)改變客戶端程序的運(yùn)行方式。這個(gè)文件的每一行
包含“關(guān)鍵詞-值”的匹配,其中“關(guān)鍵詞”是忽略大小寫(xiě)的。下面列出來(lái)的是最重要的關(guān)鍵詞,用man命令查看幫助頁(yè)(ssh (1))可以得到
詳細(xì)的列表。
編輯“ssh_config”文件(vi /etc/ssh/ssh_config),添加或改變下面的參數(shù):
下面逐行說(shuō)明上面的選項(xiàng)設(shè)置:
Host *
選項(xiàng)“Host”只對(duì)能夠匹配后面字串的計(jì)算機(jī)有效。“*”表示所有的計(jì)算機(jī)。
ForwardAgent no
“ForwardAgent”設(shè)置連接是否經(jīng)過(guò)驗(yàn)證代理(如果存在)轉(zhuǎn)發(fā)給遠(yuǎn)程計(jì)算機(jī)。
ForwardX11 no
“ForwardX11”設(shè)置X11連接是否被自動(dòng)重定向到安全的通道和顯示集(DISPLAY set)。
RhostsAuthentication no
“RhostsAuthentication”設(shè)置是否使用基于rhosts的安全驗(yàn)證。
RhostsRSAAuthentication no
“RhostsRSAAuthentication”設(shè)置是否使用用RSA算法的基于rhosts的安全驗(yàn)證。
RSAAuthentication yes
“RSAAuthentication”設(shè)置是否使用RSA算法進(jìn)行安全驗(yàn)證。
PasswordAuthentication yes
“PasswordAuthentication”設(shè)置是否使用口令驗(yàn)證。
FallBackToRsh no
“FallBackToRsh”設(shè)置如果用ssh連接出現(xiàn)錯(cuò)誤是否自動(dòng)使用rsh。
UseRsh no
“UseRsh”設(shè)置是否在這臺(tái)計(jì)算機(jī)上使用“rlogin/rsh”。
BatchMode no
“BatchMode”如果設(shè)為“yes”,passphrase/password(交互式輸入口令)的提示將被禁止。當(dāng)不能交互式輸入口令的時(shí)候,這個(gè)選項(xiàng)對(duì)腳本
文件和批處理任務(wù)十分有用。
CheckHostIP yes
“CheckHostIP”設(shè)置ssh是否查看連接到服務(wù)器的主機(jī)的IP地址以防止DNS欺騙。建議設(shè)置為“yes”。
StrictHostKeyChecking no
“StrictHostKeyChecking”如果設(shè)置成“yes”,ssh就不會(huì)自動(dòng)把計(jì)算機(jī)的密匙加入“$HOME/.ssh/known_hosts”文件,并且一旦計(jì)算機(jī)的密
匙發(fā)生了變化,就拒絕連接。
IdentityFile ~/.ssh/identity
“IdentityFile”設(shè)置從哪個(gè)文件讀取用戶的RSA安全驗(yàn)證標(biāo)識(shí)。
Port 22
“Port”設(shè)置連接到遠(yuǎn)程主機(jī)的端口。
Cipher blowfish
“Cipher”設(shè)置加密用的密碼。
EscapeChar ~
“EscapeChar”設(shè)置escape字符。
配置“/etc/ssh/sshd_config”文件
“/etc/ssh/sshd_config”是OpenSSH的配置文件,允許設(shè)置選項(xiàng)改變這個(gè)daemon的運(yùn)行。這個(gè)文件的每一行包含“關(guān)鍵詞-值”的匹配,其中
“關(guān)鍵詞”是忽略大小寫(xiě)的。下面列出來(lái)的是最重要的關(guān)鍵詞,用man命令查看幫助頁(yè)(sshd (8))可以得到詳細(xì)的列表。
編輯“sshd_config”文件(vi /etc/ssh/sshd_config),加入或改變下面的參數(shù):
下面逐行說(shuō)明上面的選項(xiàng)設(shè)置:
Port 22
“Port”設(shè)置sshd監(jiān)聽(tīng)的端口號(hào)。
ListenAddress 192.168.1.1
“ListenAddress”設(shè)置sshd服務(wù)器綁定的IP地址。
HostKey /etc/ssh/ssh_host_key
“HostKey”設(shè)置包含計(jì)算機(jī)私人密匙的文件。
ServerKeyBits 1024
“ServerKeyBits”定義服務(wù)器密匙的位數(shù)。
LoginGraceTime 600
“LoginGraceTime”設(shè)置如果用戶不能成功登錄,在切斷連接之前服務(wù)器需要等待的時(shí)間(以秒為單位)。
KeyRegenerationInterval 3600
“KeyRegenerationInterval”設(shè)置在多少秒之后自動(dòng)重新生成服務(wù)器的密匙(如果使用密匙)。重新生成密匙是為了防止用盜用的密匙解密被
截獲的信息。
PermitRootLogin no
“PermitRootLogin”設(shè)置root能不能用ssh登錄。這個(gè)選項(xiàng)一定不要設(shè)成“yes”。
IgnoreRhosts yes
“IgnoreRhosts”設(shè)置驗(yàn)證的時(shí)候是否使用“rhosts”和“shosts”文件。
IgnoreUserKnownHosts yes
“IgnoreUserKnownHosts”設(shè)置ssh daemon是否在進(jìn)行RhostsRSAAuthentication安全驗(yàn)證的時(shí)候忽略用戶的“$HOME/.ssh/known_hosts”
StrictModes yes
“StrictModes”設(shè)置ssh在接收登錄請(qǐng)求之前是否檢查用戶家目錄和rhosts文件的權(quán)限和所有權(quán)。這通常是必要的,因?yàn)樾率纸?jīng)常會(huì)把自己的
目錄和文件設(shè)成任何人都有寫(xiě)權(quán)限。
X11Forwarding no
“X11Forwarding”設(shè)置是否允許X11轉(zhuǎn)發(fā)。
PrintMotd yes
“PrintMotd”設(shè)置sshd是否在用戶登錄的時(shí)候顯示“/etc/motd”中的信息。
SyslogFacility AUTH
“SyslogFacility”設(shè)置在記錄來(lái)自sshd的消息的時(shí)候,是否給出“facility code”。
LogLevel INFO
“LogLevel”設(shè)置記錄sshd日志消息的層次。INFO是一個(gè)好的選擇。查看sshd的man幫助頁(yè),已獲取更多的信息。
RhostsAuthentication no
“RhostsAuthentication”設(shè)置只用rhosts或“/etc/hosts.equiv”進(jìn)行安全驗(yàn)證是否已經(jīng)足夠了。
RhostsRSAAuthentication no
“RhostsRSA”設(shè)置是否允許用rhosts或“/etc/hosts.equiv”加上RSA進(jìn)行安全驗(yàn)證。
RSAAuthentication yes
“RSAAuthentication”設(shè)置是否允許只有RSA安全驗(yàn)證。
PasswordAuthentication yes
“PasswordAuthentication”設(shè)置是否允許口令驗(yàn)證。
PermitEmptyPasswords no
“PermitEmptyPasswords”設(shè)置是否允許用口令為空的帳號(hào)登錄。
AllowUsers admin
“AllowUsers”的后面可以跟著任意的數(shù)量的用戶名的匹配串(patterns)或user@host這樣的匹配串,這些字符串用空格隔開(kāi)。主機(jī)名可以是
DNS名或IP地址。
使用SFTP代替FTP傳輸文件
FTP(文件傳輸協(xié)議)是一種使用非常廣泛的在網(wǎng)絡(luò)中傳輸文件的方式,但是,它也同樣存在被網(wǎng)絡(luò)竊聽(tīng)的危險(xiǎn),因?yàn)樗彩且悦魑膫魉陀脩粽J(rèn)證信息。其實(shí)在SSH軟件包中,已經(jīng)包含了一個(gè)叫作SFTP(Secure FTP)的安全文件傳輸子系統(tǒng),SFTP本身沒(méi)有單獨(dú)的守護(hù)進(jìn)程,它必須使用sshd守護(hù)進(jìn)程(端口號(hào)默認(rèn)是22)來(lái)完成相應(yīng)的連接操作,所以從某種意義上來(lái)說(shuō),SFTP并不像一個(gè)服務(wù)器程序,而更像是一個(gè)客戶端程序。SFTP同樣是使用加密傳輸認(rèn)證信息和傳輸?shù)臄?shù)據(jù),所以,使用SFTP是非常安全的。但是,由于這種傳輸方式使用了加密/解密技術(shù),所以傳輸效率比普通的FTP要低得多,如果您對(duì)網(wǎng)絡(luò)安全性要求更高時(shí),可以使用SFTP代替FTP。若要開(kāi)啟 SFTP功能可以修改sshd2_config文件的下列內(nèi)容:
去掉行首的“#”,然后重新啟動(dòng)SSH服務(wù)器,這樣在進(jìn)行SSH連接時(shí)就可以同時(shí)使用SFTP傳輸文件。
關(guān)于客戶端設(shè)置
以上是對(duì)服務(wù)器的設(shè)置,其實(shí)在SSH服務(wù)器中已經(jīng)包含了一些客戶端工具(如SSH,SFTP工具)。但是,更多的客戶端用戶使用Windows系統(tǒng),下
面就對(duì)Windows上的客戶端系統(tǒng)設(shè)置加以說(shuō)明。
首先從上文給出的網(wǎng)址下載“SSHSecureShellClient-3.2.3.exe”文件并安裝。安裝完成后,在桌面上會(huì)產(chǎn)成兩個(gè)快捷方式,一個(gè)是“SSH
Secure Shell Client”,用于遠(yuǎn)程管理,另一個(gè)是“SSH Secure File Transfer Client”,用于和服務(wù)器進(jìn)行文件傳輸。在工具欄中點(diǎn)擊
“quick connnect”,輸入正確的主機(jī)名和用戶名,然后在彈出的對(duì)話框中輸入密碼完成登錄,即可開(kāi)始執(zhí)行命令或者傳輸文件。在使用SFTP
時(shí),默認(rèn)只能顯示用戶的宿主目錄的內(nèi)容和非隱藏文件。但是,有時(shí)候您可能還要查看其它目錄或者隱藏文件,這時(shí)只需要在菜單“eidt-
>setting-> file transfer”的選項(xiàng)中選中“show root directory”和“show hidden file”兩個(gè)選項(xiàng)即可。
使普通用戶僅使用SFTP而沒(méi)有使用Shell的權(quán)限
默認(rèn)情況下管理員給系統(tǒng)添加的賬號(hào)將同時(shí)具有SFTP和SSH的權(quán)限。讓普通用戶使用shell執(zhí)行命令也是有很大的安全隱患的,如果能夠禁止用
戶使用shell執(zhí)行命令而僅使用SFTP傳輸文件,就能消除這種安全隱患,完全實(shí)現(xiàn)FTP的功能,
正如上文所述,SFTP沒(méi)有單獨(dú)的守護(hù)進(jìn)程,只能借助于sshd守護(hù)進(jìn)程,所以我們?nèi)匀恍枰褂肧SH服務(wù)器,要保證sshd守護(hù)進(jìn)程處于運(yùn)行狀態(tài)。
具體實(shí)現(xiàn)方法如下:
首先,在編譯安裝時(shí),編譯中一定要有“–enable-static” 選項(xiàng)。安裝成功后,在安裝目錄下的bin目錄中執(zhí)行下面的命令:
將看到下列輸出內(nèi)容:
其中帶“static”后綴名,且比較大的兩個(gè)文件就是加上“–enable-static”選項(xiàng)后生成的,后面我們將用到這里兩個(gè)文件。
下面以添加普通賬號(hào)test為例講述具體操作步驟。
1.在“/home”目錄(或者將要存放普通用戶宿主目錄的目錄)下創(chuàng)建“bin”子目錄,并將兩個(gè)static文件復(fù)制到此目錄下(復(fù)制后改名去掉static后綴),執(zhí)行如下命令:
2.添加一個(gè)組,使以后所有禁止使用shell的用戶都屬于這個(gè)組,這樣便于管理更多的用戶:
[root@localhost bin]#groupadd template
3.在添加系統(tǒng)賬號(hào)時(shí)使用如下命令:
3.用戶添加成功后,還需要修改/etc/ssh2/sshd2_config文件,將下列內(nèi)容:
#ChRootGroups sftp,guest
改為:
ChRootGroups sftp,guest,template
修改上面這行內(nèi)容,主要是為了禁止普通用戶查看系統(tǒng)的其它目錄,把其權(quán)限限制在自己的主目錄下。重新啟動(dòng)SSH服務(wù)器程序,在客戶端使用SSH Secure File Transfer Client登錄,即使選擇顯示根目錄,普通用戶也看不到其它的任何目錄,而是把自己的主目錄當(dāng)作根目錄。注意,這里使用的是按用戶所屬組限制,這樣可以使包含在template組內(nèi)的所有用戶都可以實(shí)現(xiàn)此功能。若您只要限制個(gè)別用戶的話,可以修改下面的內(nèi)容:
事實(shí)證明SSH是一種非常好的網(wǎng)絡(luò)安全解決方案,但是,目前仍有很多管理員使用Telnet或FTP這種非常不安全的工具,希望盡快轉(zhuǎn)移到SSH上來(lái),以減少網(wǎng)絡(luò)安全隱患。
|
新聞熱點(diǎn)
疑難解答
圖片精選