強化 SSH 讓你更加安心
導讀 | 為了讓我們的SSH服務更加安全,我們有必要對此做一些強化措施,使得我們在之後的工作過程中更加放心。當你檢視你的 SSH 服務日誌,可能你會發現充斥著一些不懷好意的嘗試性登入。這裡有 5 條常規建議(和一些個別特殊策略)可以讓你的 OpenSSH 會話更加安全。 |
密碼登入很方便,因為你可以從任何地方的任何機器上登入。但是它們在暴力攻擊面前也是脆弱的。嘗試以下策略來強化你的密碼登入:
- (1)使用一個密碼生成工具,例如 pwgen。pwgen 有幾個選項,最有用的就是密碼長度的選項(例如:產生一個12位字元的密碼pwgen 12)
- (2)不要重複使用密碼。忽略所有那些不要寫下你的密碼的建議,然後將你的所有登入資訊都記在一個本子上,如果你不相信我的建議,那總可以相信安全權威 Bruce Schneier 吧。如果你足夠細心,沒有人能夠發現你的筆記本,那麼這樣能夠不受到網路上的那些攻擊。
- (3)你可以為你的登入記事本增加一些額外的保護措施,例如用字元替換或者增加新的字元來掩蓋筆記本上的登入密碼。使用一個簡單而且好記的規則,比如說給你的密碼增加兩個額外的隨機字元,或者使用單個簡單的字元替換,例如 # 替換成 * 。
- (4)為你的 SSH 服務開啟一個非預設的監聽埠。雖然是很老套的建議,但是它確實很有效。檢查你的登入,很有可能 22 埠是被普遍攻擊的埠,其他埠則很少被攻擊。
- (5)使用 Fail2ban來動態保護你的伺服器,是伺服器免於被暴力攻擊。
- (6)使用不常用的使用者名稱。絕不能讓 root 可以遠端登入,並避免使用者名稱為“admin”。
當我的 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 譯註:這種錯誤發生在你使用一臺 機器使用 ssh 登入另外一臺伺服器時,你的 .ssh 目錄中儲存了過多的私鑰檔案,而 ssh 客戶端在你沒有指定 -i 選項時,會預設逐一嘗試使用這些私鑰來登入遠端伺服器後才會提示密碼登入,如果這些私鑰並不能匹配遠端主機,顯然會觸發這樣的報錯,甚至拒絕連線。因此本條是透過禁用本地私鑰的方式來強制使用密碼登入——顯然這並不可取,如果你確實要避免用私鑰登入,那你應該用 -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
原文來自:
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69955379/viewspace-2980416/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 使用防火牆讓你的 Linux 更加強大防火牆Linux
- 如何讓自己安心養老呢?
- DSL-讓你的 Ruby 程式碼更加優雅
- 這些 JavaScript函式讓你的工作更加 So Easy!JavaScript函式
- 想讓你的程式碼變得更加優雅嗎?
- 讓你的Mac更加乾淨整潔——App Cleaner & Uninstaller ProMacAPP
- Lombok - 使用註解讓你的JavaBean變得更加簡潔LombokJavaBean
- 僅需五步,讓你的個人資料更加安全!
- 「漫話網安」決賽時刻,安恆MSS讓你安心看世界盃!
- DeepL翻譯工具,讓你的跨語言交流更加順暢
- Path Finder for Mac:讓你的Mac檔案管理更加高效便捷!Mac
- 學會這些CSS技巧讓你寫樣式更加絲滑CSS
- 讓拖拽更加人性化?如何自定義dragover樣式Go
- 效能優化 | Go Ballast 讓記憶體控制更加絲滑優化GoAST記憶體
- SSH 埠轉發 - 你不讓我看,我也能看
- 聊一聊Java8 Optional,讓你的程式碼更加優雅Java
- PublishFolderCleaner 讓你的 dotnet 應用釋出資料夾更加整潔
- 『CDN』讓你的網站訪問起來更加柔順絲滑網站
- Android Annotation-讓你的程式碼和設計更加優雅(一)Android
- 推薦5款讓你的電腦更加有趣的小工具
- matplotlib設定顏色、標記、線條,讓你的影像更加豐富
- 科技創新讓工作更加清晰:這款工作計劃管理軟體如此強大!
- 情感計算:讓機器更加智慧
- 如何讓自己的程式碼更加安全?
- 讓遊戲世界更加真實可信遊戲
- Macs Fan Control Pro for Mac:讓你的Mac電腦散熱風扇更加智慧Mac
- 5款小巧好用的電腦軟體,讓你的工作生活更加高效!
- Affinity Photo:功能強大,操作簡單,讓圖片編輯更加高效 mac/win版Mac
- 安心+10000
- 通過Knockd隱藏SSH,讓黑客看不見你的伺服器黑客伺服器
- CodeRunner for Mac:讓程式設計更加簡單Mac程式設計
- 沉浸式互動讓遊戲更加迷人遊戲
- 讓你的ORM條件篩選更加的優雅[合理性的偷懶]ORM
- 其實這樣介紹專案經驗,會讓面試官更加中意你!面試
- Laravel-sluggable,讓你的專案 Url 更加友好,根據模型自動生成 slugLaravel模型
- 讓企業安心過年,騰訊安全上線新春服務
- Affinity Photo:功能強大,操作簡單,讓圖片編輯更加高效 mac/win啟用版Mac
- Go Ballast 讓記憶體控制更加絲滑GoAST記憶體