有了網(wǎng)絡(luò)SSH服務(wù)默認(rèn)是打開的,可以用客戶端測(cè)試一下,如果沒有打開使用以下的命令:
[root@www ~]# /etc/init.d/sshd restart正在停止 sshd: [ 確定 ]正在激活 sshd: [ 確定 ]#也可以使用service sshd restart
(以下取自鳥哥的 linux 私房菜 -- 服務(wù)器架設(shè)篇目錄 第十一章、遠(yuǎn)程聯(lián)機(jī)服務(wù)器SSH / XDMCP / VNC / RDP)
sshd 服務(wù)器細(xì)部設(shè)定基本上,所有的 sshd 服務(wù)器詳細(xì)設(shè)定都放在 /etc/ssh/sshd_config 里面!不過,每個(gè) Linux distribution 的預(yù)設(shè)設(shè)定都不太相同,所以我們有必要來了解一下整個(gè)設(shè)定值的意義為何才好! 同時(shí)請(qǐng)注意,在預(yù)設(shè)的檔案內(nèi),只要是預(yù)設(shè)有出現(xiàn)且被批注的設(shè)定值 (設(shè)定值前面加 #),即為『默認(rèn)值!』,你可以依據(jù)它來修改的哩。
[root@www ~]# vim /etc/ssh/sshd_config# 1. 關(guān)于 SSH Server 的整體設(shè)定,包含使用的 port 啦,以及使用的密碼演算方式# Port 22# SSH 預(yù)設(shè)使用 22 這個(gè)port,也可以使用多個(gè)port,即重復(fù)使用 port 這個(gè)設(shè)定項(xiàng)目!# 例如想要開放 sshd 在 22 與 443 ,則多加一行內(nèi)容為:『 Port 443 』# 然后重新啟動(dòng) sshd 這樣就好了!不過,不建議修改 port number 啦!PRotocol 2# 選擇的 SSH 協(xié)議版本,可以是 1 也可以是 2 ,CentOS 5.x 預(yù)設(shè)是僅支援 V2。# 如果想要支持舊版 V1 ,就得要使用『 Protocol 2,1 』才行。# ListenAddress 0.0.0.0# 監(jiān)聽的主機(jī)適配器!舉個(gè)例子來說,如果你有兩個(gè) ip,分別是 192.168.1.100 及 # 192.168.100.254,假設(shè)你只想要讓 192.168.1.100 可以監(jiān)聽 sshd ,那就這樣寫:# 『 ListenAddress 192.168.1.100 』默認(rèn)值是監(jiān)聽所有接口的 SSH 要求# PidFile /var/run/sshd.pid# 可以放置 SSHD 這個(gè) PID 的檔案!上述為默認(rèn)值# LoginGraceTime 2m# 當(dāng)使用者連上 SSH server 之后,會(huì)出現(xiàn)輸入密碼的畫面,在該畫面中,# 在多久時(shí)間內(nèi)沒有成功連上 SSH server 就強(qiáng)迫斷線!若無單位則默認(rèn)時(shí)間為秒!# Compression delayed# 指定何時(shí)開始使用壓縮數(shù)據(jù)模式進(jìn)行傳輸。有 yes, no 與登入后才將數(shù)據(jù)壓縮 (delayed)# 2. 說明主機(jī)的 Private Key 放置的檔案,預(yù)設(shè)使用下面的檔案即可!# HostKey /etc/ssh/ssh_host_key # SSH version 1 使用的私鑰# HostKey /etc/ssh/ssh_host_rsa_key # SSH version 2 使用的 RSA 私鑰# HostKey /etc/ssh/ssh_host_dsa_key # SSH version 2 使用的 DSA 私鑰# 還記得我們?cè)谥鳈C(jī)的 SSH 聯(lián)機(jī)流程里面談到的,這里就是 Host Key ~# 3. 關(guān)于登錄文件的訊息數(shù)據(jù)放置與 daemon 的名稱!SyslogFacility AUTHPRIV# 當(dāng)有人使用 SSH 登入系統(tǒng)的時(shí)候,SSH 會(huì)記錄信息,這個(gè)信息要記錄在什么 daemon name# 底下?預(yù)設(shè)是以 AUTH 來設(shè)定的,即是 /var/log/secure 里面!什么?忘記了!# 回到 Linux 基礎(chǔ)去翻一下。其他可用的 daemon name 為:DAEMON,USER,AUTH,# LOCAL0,LOCAL1,LOCAL2,LOCAL3,LOCAL4,LOCAL5,# LogLevel INFO# 登錄記錄的等級(jí)!嘿嘿!任何訊息!同樣的,忘記了就回去參考!# 4. 安全設(shè)定項(xiàng)目!極重要!# 4.1 登入設(shè)定部分# PermitRootLogin yes# 是否允許 root 登入!預(yù)設(shè)是允許的,但是建議設(shè)定成 no!# StrictModes yes# 是否讓 sshd 去檢查用戶家目錄或相關(guān)檔案的權(quán)限數(shù)據(jù),# 這是為了擔(dān)心使用者將某些重要檔案的權(quán)限設(shè)錯(cuò),可能會(huì)導(dǎo)致一些問題所致。# 例如使用者的 ~.ssh/ 權(quán)限設(shè)錯(cuò)時(shí),某些特殊情況下會(huì)不許用戶登入# PubkeyAuthentication yes# AuthorizedKeysFile .ssh/authorized_keys# 是否允許用戶自行使用成對(duì)的密鑰系統(tǒng)進(jìn)行登入行為,僅針對(duì) version 2。# 至于自制的公鑰數(shù)據(jù)就放置于用戶家目錄下的 .ssh/authorized_keys 內(nèi)PassWordAuthentication yes# 密碼驗(yàn)證當(dāng)然是需要的!所以這里寫 yes 啰!# PermitEmptyPasswords no# 若上面那一項(xiàng)如果設(shè)定為 yes 的話,這一項(xiàng)就最好設(shè)定為 no ,# 這個(gè)項(xiàng)目在是否允許以空的密碼登入!當(dāng)然不許!# 4.2 認(rèn)證部分# RhostsAuthentication no# 本機(jī)系統(tǒng)不使用 .rhosts,因?yàn)閮H使用 .rhosts太不安全了,所以這里一定要設(shè)定為 no# IgnoreRhosts yes# 是否取消使用 ~/.ssh/.rhosts 來做為認(rèn)證!當(dāng)然是!# RhostsRSAAuthentication no ## 這個(gè)選項(xiàng)是專門給 version 1 用的,使用 rhosts 檔案在 /etc/hosts.equiv# 配合 RSA 演算方式來進(jìn)行認(rèn)證!不要使用啊!# HostbasedAuthentication no# 這個(gè)項(xiàng)目與上面的項(xiàng)目類似,不過是給 version 2 使用的!# IgnoreUserKnownHosts no# 是否忽略家目錄內(nèi)的 ~/.ssh/known_hosts 這個(gè)檔案所記錄的主機(jī)內(nèi)容?# 當(dāng)然不要忽略,所以這里就是 no 啦!ChallengeResponseAuthentication no# 允許任何的密碼認(rèn)證!所以,任何 login.conf 規(guī)定的認(rèn)證方式,均可適用!# 但目前我們比較喜歡使用 PAM 模塊幫忙管理認(rèn)證,因此這個(gè)選項(xiàng)可以設(shè)定為 no 喔!UsePAM yes# 利用 PAM 管理使用者認(rèn)證有很多好處,可以記錄與管理。# 所以這里我們建議你使用 UsePAM 且 ChallengeResponseAuthentication 設(shè)定為 no # 4.3 與 Kerberos 有關(guān)的參數(shù)設(shè)定!因?yàn)槲覀儧]有 Kerberos 主機(jī),所以底下不用設(shè)定!# KerberosAuthentication no# KerberosOrLocalPasswd yes# KerberosTicketCleanup yes# KerberosTgtPassing no # 4.4 底下是有關(guān)在 X-Window 底下使用的相關(guān)設(shè)定!X11Forwarding yes# X11DisplayOffset 10# X11UseLocalhost yes# 比較重要的是 X11Forwarding 項(xiàng)目,他可以讓窗口的數(shù)據(jù)透過 ssh 信道來傳送喔!# 在本章后面比較進(jìn)階的 ssh 使用方法中會(huì)談到。# 4.5 登入后的項(xiàng)目:# PrintMotd yes# 登入后是否顯示出一些信息呢?例如上次登入的時(shí)間、地點(diǎn)等等,預(yù)設(shè)是 yes# 亦即是打印出 /etc/motd 這個(gè)檔案的內(nèi)容。但是,如果為了安全,可以考慮改為 no !# PrintLastLog yes# 顯示上次登入的信息!可以啊!預(yù)設(shè)也是 yes !# TCPKeepAlive yes# 當(dāng)達(dá)成聯(lián)機(jī)后,服務(wù)器會(huì)一直傳送 TCP 封包給客戶端藉以判斷對(duì)方式否一直存在聯(lián)機(jī)。# 不過,如果聯(lián)機(jī)時(shí)中間的路由器暫時(shí)停止服務(wù)幾秒鐘,也會(huì)讓聯(lián)機(jī)中斷喔!# 在這個(gè)情況下,任何一端死掉后,SSH可以立刻知道!而不會(huì)有僵尸程序的發(fā)生!# 但如果你的網(wǎng)絡(luò)或路由器常常不穩(wěn)定,那么可以設(shè)定為 no 的啦!UsePrivilegeSeparation yes# 是否權(quán)限較低的程序來提供用戶操作。我們知道 sshd 啟動(dòng)在 port 22 ,# 因此啟動(dòng)的程序是屬于 root 的身份。那么當(dāng) student 登入后,這個(gè)設(shè)定值# 會(huì)讓 sshd 產(chǎn)生一個(gè)屬于 sutdent 的 sshd 程序來使用,對(duì)系統(tǒng)較安全MaxStartups 10# 同時(shí)允許幾個(gè)尚未登入的聯(lián)機(jī)畫面?當(dāng)我們連上 SSH ,但是尚未輸入密碼時(shí),# 這個(gè)時(shí)候就是我們所謂的聯(lián)機(jī)畫面啦!在這個(gè)聯(lián)機(jī)畫面中,為了保護(hù)主機(jī),# 所以需要設(shè)定最大值,預(yù)設(shè)最多十個(gè)聯(lián)機(jī)畫面,而已經(jīng)建立聯(lián)機(jī)的不計(jì)算在這十個(gè)當(dāng)中# 4.6 關(guān)于用戶抵擋的設(shè)定項(xiàng)目:DenyUsers *# 設(shè)定受抵擋的使用者名稱,如果是全部的使用者,那就是全部擋吧!# 若是部分使用者,可以將該賬號(hào)填入!例如下列!DenyUsers testDenyGroups test# 與 DenyUsers 相同!僅抵擋幾個(gè)群組而已!# 5. 關(guān)于 SFTP 服務(wù)與其他的設(shè)定項(xiàng)目!Subsystem sftp /usr/lib/ssh/sftp-server# UseDNS yes# 一般來說,為了要判斷客戶端來源是正常合法的,因此會(huì)使用 DNS 去反查客戶端的主機(jī)名# 不過如果是在內(nèi)網(wǎng)互連,這項(xiàng)目設(shè)定為 no 會(huì)讓聯(lián)機(jī)達(dá)成速度比較快。
基本上,CentOS 預(yù)設(shè)的 sshd 服務(wù)已經(jīng)算是挺安全的了,不過還不夠!建議你 (1)將 root 的登入權(quán)限取消; (2)將 ssh 版本設(shè)定為 2 。其他的設(shè)定值就請(qǐng)你依照自己的喜好來設(shè)定了。 通常不建議進(jìn)行隨便修改啦!另外,如果你修改過上面這個(gè)檔案(/etc/ssh/sshd_config),那么就必需要重新啟動(dòng)一次 sshd 這個(gè) daemon 才行!
簡(jiǎn)易安全設(shè)定老實(shí)說,大家都被『SSH 是個(gè)安全的服務(wù)』所欺騙了!其實(shí) sshd 并不怎么安全的!翻開 openssh 的過去歷史來看,確實(shí)有很多人是利用 ssh 的程序漏洞來取得遠(yuǎn)程主機(jī) root 的權(quán)限,進(jìn)一步黑掉對(duì)方的主機(jī)!所以這玩意兒說實(shí)話,也不是很安全的啦!
sshd 之所謂的『安全』其實(shí)指的是『 sshd 的數(shù)據(jù)是加密過的,所以他的數(shù)據(jù)在 Internet 上面?zhèn)鬟f時(shí)是比較安全的。至于 sshd 這個(gè)服務(wù)本身就不是那樣安全了!所以說:『非必要,不要將 sshd 對(duì) Internet 開放可登入的權(quán)限,盡量局限在幾個(gè)小范圍內(nèi)的 IP 或主機(jī)名即可!這很重要的喔!
好了,那么關(guān)于安全的設(shè)定方面,有沒有什么值得注意的呢?當(dāng)然是有啦!我們可以先建議幾個(gè)項(xiàng)目吧!分別可以由底下這三方面來進(jìn)行:
一般而言,這個(gè)檔案的默認(rèn)項(xiàng)目就已經(jīng)很完備了!所以,事實(shí)上是不太需要更動(dòng)他的! 但是,如果你有些使用者方面的顧慮,那么可以這樣修正一些問題呢!
除了上述的賬號(hào)之外,其他的用戶則可以正常的使用系統(tǒng)。現(xiàn)在鳥哥假設(shè)你的系統(tǒng)里面已經(jīng)有 sshnot1, sshnot2, sshnot3 加入 nossh 群組, 同時(shí)系統(tǒng)還有 testssh, student 等賬號(hào)。相關(guān)的賬號(hào)處理請(qǐng)自行參考基礎(chǔ)篇來設(shè)定,底下僅是列出觀察的重點(diǎn):
# 1. 先觀察一下所需要的賬號(hào)是否存在呢?[root@www ~]# for user in sshnot1 sshnot2 sshnot3 testssh student; do /> id $user | cut -d ' ' -f1-3 ; doneuid=507(sshnot1) gid=509(sshnot1) groups=509(sshnot1),508(nossh)uid=508(sshnot2) gid=510(sshnot2) groups=510(sshnot2),508(nossh)uid=509(sshnot3) gid=511(sshnot3) groups=511(sshnot3),508(nossh)uid=511(testssh) gid=513(testssh) groups=513(testssh)uid=505(student) gid=506(student) groups=506(student)# 若上述賬號(hào)并不存在你的系統(tǒng),請(qǐng)自己建置出來!UID/GID 與鳥哥的不同也沒關(guān)系!# 2. 修改 sshd_config 并且重新啟動(dòng) sshd 吧![root@www ~]# vim /etc/ssh/sshd_configPermitRootLogin no <==約在第 39 行,請(qǐng)拿掉批注且修改成這樣DenyGroups nossh <==底下這兩行可以加在檔案的最后面DenyUsers testssh[root@www ~]# /etc/init.d/sshd restart# 3. 測(cè)試與觀察相關(guān)的賬號(hào)登入情況吧![root@www ~]# ssh root@localhost <==并請(qǐng)輸入正確的密碼[root@www ~]# tail /var/log/secureJul 25 13:14:05 www sshd[2039]: pam_unix(sshd:auth): authentication failure; logname= uid=0 euid=0 tty=ssh ruser= rhost=localhost user=root# 你會(huì)發(fā)現(xiàn)出現(xiàn)這個(gè)錯(cuò)誤訊息,而不是密碼輸入錯(cuò)誤而已。[root@www ~]# ssh sshnot1@localhost <==并請(qǐng)輸入正確的密碼[root@www ~]# tail /var/log/secureJul 25 13:15:53 www sshd[2061]: User sshnot1 from localhost not allowed becausea group is listed in DenyGroups[root@www ~]# ssh testssh@localhost <==并請(qǐng)輸入正確的密碼[root@www ~]# tail /var/log/secureJul 25 13:17:16 www sshd[2074]: User testssh from localhost not allowed because listed in DenyUsers
從上面的結(jié)果來看,你就會(huì)發(fā)現(xiàn)到,不同的登入賬號(hào)會(huì)產(chǎn)生不一樣的登錄檔結(jié)果。因此,當(dāng)你老是無法順利使用 ssh 登入某一部主機(jī)時(shí),記得到該服務(wù)器上去檢查看看登錄檔,說不定就會(huì)順利的讓你解決問題啰!在我們的測(cè)試機(jī)上面,請(qǐng)還是放行 root 的登入喔!
舉例來說,你的 sshd 只想讓本機(jī)以及區(qū)網(wǎng)內(nèi)的主機(jī)來源能夠登入的話,那就這樣作:
[root@www ~]# vim /etc/hosts.allowsshd: 127.0.0.1 192.168.1.0/255.255.255.0 192.168.100.0/255.255.255.0[root@www ~]# vim /etc/hosts.denysshd : ALL
多幾層保護(hù)也很好的!所以也可以使用 iptables 喔! 參考:第九章、防火墻與 NAT 服務(wù)器內(nèi)的實(shí)際腳本程序,你應(yīng)該在 iptables.rule 內(nèi)將 port 22 的放行功能取消,然后再到 iptables.allow 里面新增這行:
[root@www ~]# vim /usr/local/virus/iptables/iptables.allowiptables -A INPUT -i $EXTIF -s 192.168.1.0/24 -p tcp --dport 22 -j ACCEPTiptables -A INPUT -i $EXTIF -s 192.168.100.0/24 -p tcp --dport 22 -j ACCEPT[root@www ~]# /usr/local/virus/iptables/iptables.rule
上述的方法處理完畢后,如果你還是一部測(cè)試機(jī),那么記得要將設(shè)定值還原回來呦!最后, 『鳥哥呼吁大家,不要開放 SSH 的登入權(quán)限給所有 Internet 上面的主機(jī)~』 這很重要喔~因?yàn)槿绻麑?duì)方可以 ssh 進(jìn)入你的主機(jī),那么...太危險(xiǎn)了~
來源: <http://vbird.dic.ksu.edu.tw/linux_server/0310telnetssh_2.php>
新聞熱點(diǎn)
疑難解答
圖片精選