CentOS學習筆記--SSH

來源:互聯網
上載者:User

標籤:des   style   blog   http   io   ar   color   os   使用   

配置SSH

有了網路SSH服務預設是開啟的,可以用用戶端測試一下,如果沒有開啟使用以下的命令:

[[email protected] ~]# /etc/init.d/sshd restart正在停止 sshd:                         [  確定  ]正在啟用 sshd:                         [  確定  ]#也可以使用service sshd restart

 

(以下取自鳥哥的 Linux 私房菜 -- 伺服器架設篇目錄  第十一章、遠程線上服務器SSH / XDMCP / VNC / RDP)

sshd 伺服器細部設定

基本上,所有的 sshd 伺服器詳細設定都放在 /etc/ssh/sshd_config 裡面!不過,每個 Linux distribution 的預設設定都不太相同,所以我們有必要來瞭解一下整個設定值的意義為何才好! 同時請注意,在預設的檔案內,只要是預設有出現且被批註的設定值 (設定值前面加 #),即為『預設值!』,你可以依據它來修改的哩。

[[email protected] ~]# vim /etc/ssh/sshd_config# 1. 關於 SSH Server 的整體設定,包含使用的 port 啦,以及使用的密碼演算方式# Port 22# SSH 預設使用 22 這個port,也可以使用多個port,即重複使用 port 這個設定項目!# 例如想要開放 sshd 在 22 與 443 ,則多加一行內容為:『 Port 443 』# 然後重新啟動 sshd 這樣就好了!不過,不建議修改 port number 啦!Protocol 2# 選擇的 SSH 協議版本,可以是 1 也可以是 2 ,CentOS 5.x 預設是僅支援 V2。# 如果想要支援舊版 V1 ,就得要使用『 Protocol 2,1 』才行。# ListenAddress 0.0.0.0# 監聽的主機介面卡!舉個例子來說,如果你有兩個 IP,分別是 192.168.1.100 及 # 192.168.100.254,假設你只想要讓 192.168.1.100 可以監聽 sshd ,那就這樣寫:# 『 ListenAddress 192.168.1.100 』預設值是監聽所有介面的 SSH 要求# PidFile /var/run/sshd.pid# 可以放置 SSHD 這個 PID 的檔案!上述為預設值# LoginGraceTime 2m# 當使用者連上 SSH server 之後,會出現輸入密碼的畫面,在該畫面中,# 在多久時間內沒有成功連上 SSH server 就強迫斷線!若無單位則預設時間為秒!# Compression delayed# 指定何時開始使用壓縮資料模式進行傳輸。有 yes, no 與登入後才將資料壓縮 (delayed)# 2. 說明主機的 Private Key 放置的檔案,預設使用下面的檔案即可!# 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 私密金鑰# 還記得我們在主機的 SSH 聯機流程裡面談到的,這裡就是 Host Key ~# 3. 關於登入檔案的訊息資料放置與 daemon 的名稱!SyslogFacility AUTHPRIV# 當有人使用 SSH 登入系統的時候,SSH 會記錄資訊,這個資訊要記錄在什麼 daemon name# 底下?預設是以 AUTH 來設定的,即是 /var/log/secure 裡面!什嗎?忘記了!# 回到 Linux 基礎去翻一下。其他可用的 daemon name 為:DAEMON,USER,AUTH,# LOCAL0,LOCAL1,LOCAL2,LOCAL3,LOCAL4,LOCAL5,# LogLevel INFO# 登入記錄的等級!嘿嘿!任何訊息!同樣的,忘記了就回去參考!# 4. 安全設定項目!極重要!# 4.1 登入設定部分# PermitRootLogin yes# 是否允許 root 登入!預設是允許的,但是建議設定成 no!# StrictModes yes# 是否讓 sshd 去檢查使用者家目錄或相關檔案的許可權資料,# 這是為了擔心使用者將某些重要檔案的許可權設錯,可能會導致一些問題所致。# 例如使用者的 ~.ssh/ 許可權設錯時,某些特殊情況下會不許使用者登入# PubkeyAuthentication yes# AuthorizedKeysFile      .ssh/authorized_keys# 是否允許使用者自行使用成對的密鑰系統進行登入行為,僅針對 version 2。# 至於自製的公開金鑰資料就放置於使用者家目錄下的 .ssh/authorized_keys 內PasswordAuthentication yes# 密碼驗證當然是需要的!所以這裡寫 yes 囉!# PermitEmptyPasswords no# 若上面那一項如果設定為 yes 的話,這一項就最好設定為 no ,# 這個項目在是否允許以空的密碼登入!當然不許!# 4.2 認證部分# RhostsAuthentication no# 本機系統不使用 .rhosts,因為僅使用 .rhosts太不安全了,所以這裡一定要設定為 no# IgnoreRhosts yes# 是否取消使用 ~/.ssh/.rhosts 來做為認證!當然是!# RhostsRSAAuthentication no ## 這個選項是專門給 version 1 用的,使用 rhosts 檔案在 /etc/hosts.equiv# 配合 RSA 演算方式來進行認證!不要使用啊!# HostbasedAuthentication no# 這個項目與上面的項目類似,不過是給 version 2 使用的!# IgnoreUserKnownHosts no# 是否忽略家目錄內的 ~/.ssh/known_hosts 這個檔案所記錄的主機內容?# 當然不要忽略,所以這裡就是 no 啦!ChallengeResponseAuthentication no# 允許任何的密碼認證!所以,任何 login.conf 規定的認證方式,均可適用!# 但目前我們比較喜歡使用 PAM 模組幫忙管理認證,因此這個選項可以設定為 no 喔!UsePAM yes# 利用 PAM 管理使用者認證有很多好處,可以記錄與管理。# 所以這裡我們建議你使用 UsePAM 且 ChallengeResponseAuthentication 設定為 no  # 4.3 與 Kerberos 有關的參數設定!因為我們沒有 Kerberos 主機,所以底下不用設定!# KerberosAuthentication no# KerberosOrLocalPasswd yes# KerberosTicketCleanup yes# KerberosTgtPassing no # 4.4 底下是有關在 X-Window 底下使用的相關設定!X11Forwarding yes# X11DisplayOffset 10# X11UseLocalhost yes# 比較重要的是 X11Forwarding 項目,他可以讓視窗的資料透過 ssh 通道來傳送喔!# 在本章後面比較進階的 ssh 使用方法中會談到。# 4.5 登入後的項目:# PrintMotd yes# 登入後是否顯示出一些資訊呢?例如上次登入的時間、地點等等,預設是 yes# 亦即是列印出 /etc/motd 這個檔案的內容。但是,如果為了安全,可以考慮改為 no !# PrintLastLog yes# 顯示上次登入的資訊!可以啊!預設也是 yes !# TCPKeepAlive yes# 當達成聯機後,伺服器會一直傳送 TCP 封包給用戶端藉以判斷對方式否一直存在聯機。# 不過,如果聯機時中間的路由器暫時停止服務幾秒鐘,也會讓聯機中斷喔!# 在這個情況下,任何一端死掉後,SSH可以立刻知道!而不會有殭屍程式的發生!# 但如果你的網路或路由器常常不穩定,那麼可以設定為 no 的啦!UsePrivilegeSeparation yes# 是否許可權較低的程式來提供使用者操作。我們知道 sshd 啟動在 port 22 ,# 因此啟動的程式是屬於 root 的身份。那麼當 student 登入後,這個設定值# 會讓 sshd 產生一個屬於 sutdent 的 sshd 程式來使用,對系統較安全MaxStartups 10# 同時允許幾個尚未登入的聯機畫面?當我們連上 SSH ,但是尚未輸入密碼時,# 這個時候就是我們所謂的聯機畫面啦!在這個聯機畫面中,為了保護主機,# 所以需要設定最大值,預設最多十個聯機畫面,而已經建立聯機的不計算在這十個當中# 4.6 關於使用者抵擋的設定項目:DenyUsers *# 設定受抵擋的使用者名稱,如果是全部的使用者,那就是全部擋吧!# 若是部分使用者,可以將該帳號填入!例如下列!DenyUsers testDenyGroups test# 與 DenyUsers 相同!僅抵擋幾個群組而已!# 5. 關於 SFTP 服務與其他的設定項目!Subsystem       sftp    /usr/lib/ssh/sftp-server# UseDNS yes# 一般來說,為了要判斷用戶端來源是正常合法的,因此會使用 DNS 去反查用戶端的主機名稱# 不過如果是在內網互連,這項目設定為 no 會讓聯機達成速度比較快。

基本上,CentOS 預設的 sshd 服務已經算是挺安全的了,不過還不夠!建議你 (1)將 root 的登入許可權取消; (2)將 ssh 版本設定為 2 。其他的設定值就請你依照自己的喜好來設定了。 通常不建議進行隨便修改啦!另外,如果你修改過上面這個檔案(/etc/ssh/sshd_config),那麼就必需要重新啟動一次 sshd 這個 daemon 才行!

簡易安全設定

老實說,大家都被『SSH 是個安全的服務』所欺騙了!其實 sshd 並不怎麼安全的!翻開 openssh 的過去曆史來看,確實有很多人是利用 ssh 的程式漏洞來取得遠程主機 root 的許可權,進一步黑掉對方的主機!所以這玩意兒說實話,也不是很安全的啦!

sshd 之所謂的『安全』其實指的是『 sshd 的資料是加密過的,所以他的資料在 Internet 上面傳遞時是比較安全的。至於 sshd 這個服務本身就不是那樣安全了!所以說:『非必要,不要將 sshd 對 Internet 開放可登入的許可權,盡量局限在幾個小範圍內的 IP 或主機名稱即可!這很重要的喔!

好了,那麼關於安全的設定方面,有沒有什麼值得注意的呢?當然是有啦!我們可以先建議幾個項目吧!分別可以由底下這三方面來進行:

  • 伺服器軟體本身的設定強化:/etc/ssh/sshd_config
  • TCP wrapper 的使用:/etc/hosts.allow, /etc/hosts.deny
  • iptables 的使用: iptables.rule, iptables.allow

伺服器軟體本身的設定強化:/etc/ssh/sshd_config

一般而言,這個檔案的預設項目就已經很完備了!所以,事實上是不太需要更動他的! 但是,如果你有些使用者方面的顧慮,那麼可以這樣修正一些問題呢!

  • 禁止 root 這個帳號使用 sshd 的服務;
  • 禁止 nossh 這個群組的使用者使用 sshd 的服務;
  • 禁止 testssh 這個使用者使用 sshd 的服務;

除了上述的帳號之外,其他的使用者則可以正常的使用系統。現在鳥哥假設你的系統裡面已經有 sshnot1, sshnot2, sshnot3 加入 nossh 群組, 同時系統還有 testssh, student 等帳號。相關的帳號處理請自行參考基礎篇來設定,底下僅是列出觀察的重點:

# 1. 先觀察一下所需要的帳號是否存在呢?[[email protected] ~]# 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)# 若上述帳號並不存在你的系統,請自己建置出來!UID/GID 與鳥哥的不同也沒關係!# 2. 修改 sshd_config 並且重新啟動 sshd 吧![[email protected] ~]# vim /etc/ssh/sshd_configPermitRootLogin no  <==約在第 39 行,請拿掉批註且修改成這樣DenyGroups  nossh   <==底下這兩行可以加在檔案的最後面DenyUsers   testssh[[email protected] ~]# /etc/init.d/sshd restart# 3. 測試與觀察相關的帳號登入情況吧![[email protected] ~]# ssh [email protected]  <==並請輸入正確的密碼[[email protected] ~]# 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# 你會發現出現這個錯誤訊息,而不是密碼輸入錯誤而已。[[email protected] ~]# ssh [email protected]  <==並請輸入正確的密碼[[email protected] ~]# tail /var/log/secureJul 25 13:15:53 www sshd[2061]: User sshnot1 from localhost not allowed becausea group is listed in DenyGroups[[email protected] ~]# ssh [email protected]  <==並請輸入正確的密碼[[email protected] ~]# tail /var/log/secureJul 25 13:17:16 www sshd[2074]: User testssh from localhost not allowed because listed in DenyUsers

從上面的結果來看,你就會發現到,不同的登入帳號會產生不一樣的登入檔結果。因此,當你老是無法順利使用 ssh 登入某一部主機時,記得到該伺服器上去檢查看看登入檔,說不定就會順利的讓你解決問題囉!在我們的測試機上面,請還是允許存取 root 的登入喔!

/etc/hosts.allow 及 /etc/hosts.deny

舉例來說,你的 sshd 只想讓本機以及區網內的主機來源能夠登入的話,那就這樣作:

[[email protected] ~]# vim /etc/hosts.allowsshd: 127.0.0.1 192.168.1.0/255.255.255.0 192.168.100.0/255.255.255.0[[email protected] ~]# vim /etc/hosts.denysshd : ALL 

iptables 封包過濾防火牆

多幾層保護也很好的!所以也可以使用 iptables 喔! 參考:第九章、防火牆與 NAT 伺服器內的實際指令碼程式,你應該在 iptables.rule 內將 port 22 的允許存取功能取消,然後再到 iptables.allow 裡面新增這行:

[[email protected] ~]# 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[[email protected] ~]# /usr/local/virus/iptables/iptables.rule

上述的方法處理完畢後,如果你還是一部測試機,那麼記得要將設定值還原回來呦!最後, 『鳥哥呼籲大家,不要開放 SSH 的登入許可權給所有 Internet 上面的主機~』 這很重要喔~因為如果對方可以 ssh 進入你的主機,那麼...太危險了~

來源: <http://vbird.dic.ksu.edu.tw/linux_server/0310telnetssh_2.php>

CentOS學習筆記--SSH

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.