當你檢視你的 SSH 服務日誌,可能你會發現充斥著一些不懷好意的嘗試性登入。這裏有 5 條常規建議(和一些個別特殊策略)可以讓你的 OpenSSH 會話更加安全。
強化密碼登入
密碼登入很方便,因為你可以從任何地方的任何機器上登入。但是它們在暴力攻擊面前也是脆弱的。嘗試以下策略來強化你的密碼登入。
使用一個密碼生成工具,例如 pwgen 。 pwgen 有幾個選項,最有用的就是密碼長度的選項(例如,pwgen 12 產生一個 12 位字元的密碼)
不要重複使用密碼。忽略所有那些不要寫下你的密碼的建議,然後將你的所有登入資訊都記在一個本子上。如果你不相信我的建議,那總可以相信安全權威 Bruce Schneier 吧。如果你足夠細心,沒有人能夠發現你的筆記本,那麼這樣能夠不受到互聯網上的那些攻擊。
你可以為你的登入記事本增加一些額外的保護措施,例如用字元替換或者增加新的字元來掩蓋筆記本上的登入密碼。使用一個簡單而且好記的規則,比如説給你的密碼增加兩個額外的隨機字元,或者使用單個簡單的字元替換,例如 “#” 替換成 “*” 。
為你的 SSH 服務開啓一個非預設的監聽埠。是的,這是很老套的建議,但是它確實很有效。檢查你的登入;很有可能 22 埠是被普遍攻擊的埠,其他埠則很少被攻擊。
使用 Fail2ban 來動態保護你的站羣服務器,是站羣服務器免於被暴力攻擊。
使用不常用的使用者名稱。絕不能讓 root 可以遠端登入,並避免使用者名稱為 “admin” 。
解決 Too Many Authentication Failures 報錯
當我的 ssh 登入失敗,並顯示 “Too many authentication failures for carla” 的報錯資訊時,我很難過。我知道我應該不介意,但是這報錯確實很礙眼。而且,正如我聰慧的奶奶曾經説過,傷痛之感並不能解決問題。解決辦法就是在你的(客户端的)
~/.ssh/config
檔案設定強制密碼登入。如果這個檔案不存在,首先創個
~/.ssh/
目錄。
$ mkdir ~/.ssh
$ chmod 700 ~/.ssh
然後在一個文字編輯器建立
~/.ssh/confg
檔案,輸入以下行,使用你自己的遠端域名替換 HostName 。
HostName remote.site.com
PubkeyAuthentication=no
(LCTT 譯註:這種錯誤發生在你使用一台 Linux 機器使用 ssh 登入另外一台站羣服務器時,你的 .ssh 目錄中儲存了過多的私鑰檔案,而 ssh 客户端在你沒有指定 -i 選項時,會預設逐一嘗試使用這些私鑰來登入遠端站羣服務器後才會提示密碼登入,如果這些私鑰並不能匹配遠端 WordPress 主機,顯然會觸發這樣的報錯,甚至拒絕連線。因此本條是通過禁用本地私鑰的方式來強制使用密碼登入——顯然這並不可取,如果你確實要避免用私鑰登入,那你應該用 -o PubkeyAuthentication=no 選項登入。顯然這條和下兩條是互相矛盾的,所以請無視本條即可。)
使用公鑰認證
公鑰認證比密碼登入安全多了,因為它不受暴力密碼攻擊的影響,但是並不方便因為它依賴於 RSA 金鑰對。首先,你要建立一個公鑰/私鑰對。下一步,私鑰放於你的客户端電腦,並且複製公鑰到你想登入的遠端站羣服務器。你只能從擁有私鑰的電腦登入才能登入到遠端站羣服務器。你的私鑰就和你的家門鑰匙一樣敏感;任何人獲取到了私鑰就可以獲取你的賬號。你可以給你的私鑰加上密碼來增加一些強化保護規則。
使用 RSA 金鑰對管理多個使用者是一種好的方法。當一個使用者離開了,只要從站羣服務器刪了他的公鑰就能取消他的登入。
以下例子建立一個新的 3072 位長度的金鑰對,它比預設的 2048 位更安全,而且為它起一個獨一無二的名字,這樣你就可以知道它屬於哪個站羣服務器。
$ ssh-keygen -t rsa -b 3072 -f id_mailserver
以下建立兩個新的金鑰,
id_mailserver
和
id_mailserver.pub
id_mailserver
是你的私鑰–不要傳播它!現在用
ssh-copy-id
命令安全地複製你的公鑰到你的遠端站羣服務器。你必須確保在遠端站羣服務器上有可用的 SSH 登入方式。
$ ssh-copy-id -i id_rsa.pub user@remoteserver
/usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed
user@remoteserver’s password:
Number of key(s) added: 1
Now try logging into the machine, with: “ssh ‘user@remoteserver'”
and check to make sure that only the key(s) you wanted were added.
ssh-copy-id 會確保你不會無意間複製了你的私鑰。從上述輸出中複製登入命令,記得帶上其中的單引號,以測試你的新的金鑰登入。
$ ssh ‘user@remoteserver’
它將用你的新金鑰登入,如果你為你的私鑰設定了密碼,它會提示你輸入。
取消密碼登入
一旦你已經測試並且驗證了你的公鑰可以登入,就可以取消密碼登入,這樣你的遠端站羣服務器就不會被暴力密碼攻擊。如下設定你的遠端站羣服務器的
/etc/sshd_config
檔案。
PasswordAuthentication no
然後重啓站羣服務器上的 SSH 守護程序。
設定別名 — 這很快捷而且很酷
你可以為你的遠端登入設定常用的別名,來替代登入時輸入的命令,例如
ssh -u username -p 2222 remote.site.with.long-name
你可以使用
ssh remote1
你的客户端機器上的 ~/.ssh/config 檔案可以參照如下設定
Host remote1
HostName remote.site.with.long-name
Port 2222
User username
PubkeyAuthentication no
如果你正在使用公鑰登入,可以參照這個:
Host remote1
HostName remote.site.with.long-name
Port 2222
User username
IdentityFile ~/.ssh/id_remoteserver
OpenSSH 文件 很長而且詳細,但是當你掌握了基礎的 SSH 使用規則之後,你會發現它非常的有用,而且包含很多可以通過 OpenSSH 來實現的炫酷效果。
原文來自:https://linux.cn:443/article-7683-1.html
本文地址:http://www.linuxprobe.com/five-safety-advice.html