通過SSH訪問遠程Linux服務器的四個安全策


本文以CentOS爲例總結了配置SSH安全訪問中需要注意的四個事項,包括關閉不用的端口,更改SSH端口,限制IP登陸,以及使用證書登陸。


本文轉載自程序員小輝的博客。原文標題:《配置 Linux 服務器 SSH  安全訪問的四個小技巧》(http://www.xiaohui.com/dev/server/centos-security-for-ssh.htm)。

越來越多的站長,開始使用獨立主機(Dedicated Host)和 VPS。而爲了節省成本或提高性能,不少人的獨機和 VPS,都是基於 unmanaged  的裸機,一切都要自己 DIY。這時候,安全策略的實施,就猶爲重要。下面這篇文章,我以 CentOS 爲例,簡單地總結一下如何配置 SSH 安全訪問。

Linux SSH 安全策略一:關閉無關端口

網絡上被攻陷的大多數主機,是***用掃描工具大範圍進行掃描而被瞄準上的。所以,爲了避免被掃描到,除了必要的端口,例如 Web、FTP、SSH  等,其他的都應關閉。值得一提的是,我強烈建議關閉 icmp 端口,並設置規則,丟棄 icmp 包。這樣別人 Ping 不到你的服務器,威脅就自然減小大半了。丟棄  icmp 包可在 iptables 中, 加入下面這樣一條:

  1. -A INPUT -p icmp -j DROP


Linux SSH 安全策略二:更改 SSH 端口

默認的 SSH 端口是 22。強烈建議改成 10000 以上。這樣別人掃描到端口的機率也大大下降。修改方法:

  1. # 編輯 /etc/ssh/ssh_config

  2. vi /etc/ssh/ssh_config

  3. # 在 Host * 下 ,加入新的 Port 值。以 18439 爲例(下同):

  4. Port 22

  5. Port 18439


  6. # 編輯 /etc/ssh/sshd_config

  7. vi /etc/ssh/sshd_config

  8. #加入新的 Port 值

  9. Port 22

  10. Port 18439


  11. # 保存後,重啓 SSH 服務:

  12. service sshd restart


這裏我設置了兩個端口,主要是爲了防止修改出錯導致 SSH 再也登不上。更改你的 SSH  客戶端(例如:Putty)的連接端口,測試連接,如果新端口能連接成功,則再編輯上面兩個文件,刪除 Port 22 的配置。如果連接失敗,而用 Port 22  連接後再重新配置。

端口設置成功後,注意同時應該從 iptables 中, 刪除22端口,添加新配置的 18439,並重啓 iptables。

如果 SSH 登錄密碼是弱密碼,應該設置一個複雜的密碼。Google Blog 上有一篇強調密碼安全的文章:Does your password pass  the test?

Linux SSH 安全策略三:限制 IP 登錄

如果你能以固定 IP 方式連接你的服務器,那麼,你可以設置只允許某個特定的 IP 登錄服務器。例如我是通過自己的 *** 登錄到服務器。設置如下:

# 編輯 /etc/hosts.allow vi /etc/hosts.allow# 例如只允許 123.45.67.89 登錄 sshd:123.45.67.89

Linux SSH 安全策略四: 使用證書登錄 SSH

相對於使用密碼登錄來說,使用證書更爲安全。自來水衝咖啡有寫過一篇詳細的教程,徵得其同意,轉載如下:

爲CentOS配置SSH證書登錄驗證

來源:自來水衝咖啡

下午幫公司網管遠程檢測一下郵件服務器,一臺CentOS 5.1,使用OpenSSH遠程管理。

檢查安全日誌時,發現這幾天幾乎每天都有一堆IP過來猜密碼。看來得修改一下登錄驗證方式,改爲證書驗證爲好。

爲防萬一,臨時啓了個VNC,免得沒配置完,一高興順手重啓了sshd就麻煩了。(後來發現是多餘的,只要事先開個putty別關閉就行了)

以下是簡單的操作步驟:

1)先添加一個維護賬號:msa

2)然後su - msa

3)ssh-keygen -t rsa

指定密鑰路徑和輸入口令之後,即在/home/msa/.ssh/中生成公鑰和私鑰:id_rsa id_rsa.pub

4)cat id_rsa.pub >> authorized_keys

至於爲什麼要生成這個文件,因爲sshd_config裏面寫的就是這個。然後chmod 400 authorized_keys,稍微保護一下。

5)用psftp把把id_rsa拉回本地,然後把服務器上的id_rsa和id_rsa.pub幹掉

6)配置/etc/ssh/sshd_config

  1. Protocol 2

  2. ServerKeyBits 1024

  3. PermitRootLogin no  #禁止root登錄而已,與本文無關,加上安全些


  4. #以下三行沒什麼要改的,把默認的#註釋去掉就行了

  5. RSAAuthentication yes

  6. PubkeyAuthentication yes

  7. AuthorizedKeysFile    .ssh/authorized_keys


  8. PasswordAuthentication no

  9. PermitEmptyPasswords no


7)重啓sshd

  1. /sbin/service sshd restart


8)轉換證書格式,遷就一下putty

運行puttygen,轉換id_rsa爲putty的ppk證書文件

9)配置putty登錄

在connection--SSH--Auth中,點擊Browse,選擇剛剛轉換好的證書。然後在connection-Data填寫一下auto login  username,例如我的是msa。在session中填寫服務器的IP地址,高興的話可以save一下

10)解決一點小麻煩

做到這一步的時候,很可能會空歡喜一場,此時就興沖沖的登錄,沒準登不進去:

  1. No supported authentication methods available


這時可以修改一下sshd_config,把

PasswordAuthentication no

臨時改爲:

PasswordAuthentication yes

並重啓sshd。

這樣可以登錄成功,退出登錄後,再重新把PasswordAuthentication的值改爲no,重啓sshd。以後登錄就會正常的詢問你密鑰文件的密碼了,答對了就能高高興興的登進去。

至於psftp命令,加上個-i參數,指定證書文件路徑就行了。

如果你是遠程操作服務器修改上述配置,切記每一步都應慎重,不可出錯。如果配置錯誤,導致 SSH 連接不上,那就杯具了。

基本上,按上述四點配置好後,Linux 下的 SSH 訪問,是比較安全的了。當然,安全與不安全都是相對的,你應該定期檢查服務器的  log,及時發現隱患並排除。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章