linux下高級SSH安全技巧有哪些

本篇文章給大家分享的是有關(guān)linux下高級SSH安全技巧有哪些,小編覺得挺實用的,因此分享給大家學(xué)習(xí),希望大家閱讀完這篇文章后可以有所收獲,話不多說,跟著小編一起來看看吧。

創(chuàng)新互聯(lián)公司專業(yè)為企業(yè)提供云和網(wǎng)站建設(shè)、云和做網(wǎng)站、云和網(wǎng)站設(shè)計、云和網(wǎng)站制作等企業(yè)網(wǎng)站建設(shè)、網(wǎng)頁設(shè)計與制作、云和企業(yè)網(wǎng)站模板建站服務(wù),十年云和做網(wǎng)站經(jīng)驗,不只是建網(wǎng)站,更提供有價值的思路和整體網(wǎng)絡(luò)服務(wù)。

SSH服務(wù)器配置文件是/etc/ssh/sshd_conf。在你對它進(jìn)行每一次改動后都需要重新啟動SSH服務(wù),以便讓改動生效。

1、修改SSH監(jiān)聽端口

默認(rèn)情況下,SSH監(jiān)聽連接端口22,攻擊者使用端口掃描軟件就可以看到主機是否運行有SSH服務(wù),將SSH端口修改為大于1024的端口是一個明智的選擇,因為大多數(shù)端口掃描軟件(包括nmap)默認(rèn)情況都不掃描高位端口。

打開/etc/ssh/sshd_config文件并查找下面這樣的行:
Port 22

修改端口號并重新啟動SSH服務(wù):
/etc/init.d/ssh restart

2、僅允許SSH協(xié)議版本2

有兩個SSH協(xié)議版本,僅使用SSH協(xié)議版本2會更安全,SSH協(xié)議版本1有安全問題,包括中間人攻擊(man-in-the-middle)和注入(insertion)攻擊。編輯/etc/ssh/sshd_config文件并查找下面這樣的行:
Protocol 2,1
修改為
Protocol 2

3、僅允許特定的用戶通過SSH登陸

你不一個允許root用戶通過SSH登陸,因為這是一個巨大的不必要的安全風(fēng)險,如果一個攻擊者獲得root權(quán)限登陸到你的系統(tǒng),相對他獲得一個普通用戶權(quán)限能造成更大的破壞,配置SSH服務(wù)器不允許root用戶通過SSH登陸,查找下面這樣的行:
PermitRootLogin yes

將yes修改為no,然后重新啟動服務(wù)?,F(xiàn)在,如果你想使用特權(quán)用戶,你可以先以其他用戶登陸,然后再轉(zhuǎn)換到root。

創(chuàng)建一個沒有實際權(quán)限的虛擬用戶是一個明智的選擇,用這個用戶登陸SSH,即使這個用戶遭到破解也不會引起什么破壞,當(dāng)創(chuàng)建這個用戶時,確保它屬于wheel組,因為那樣你才能切換到特權(quán)用戶。

如果你想讓一列用戶都能通過SSH登陸,你可以在sshd_config文件中指定它們,例如:我想讓用戶anze、dasa、kimy能通過SSH登陸,在sshd_config文件的末尾我添加下面這樣一行:
AllowUsers anze dasa kimy

4、創(chuàng)建一個自定義SSH banner

如果你想讓任何連接到你SSH服務(wù)的用戶看到一條特殊的消息,你可以創(chuàng)建一個自定義SSH banner,只需要創(chuàng)建一個文本文件(我的是/etc/ssh-banner.txt),然后輸入你想的任何文本消息,如:
*This is a private SSH service. You are not supposed to be here.*
*Please leave immediately. *

編輯好后,保存這個文件,在sshd_config中查找下面這樣一行:
#Banner /etc/issue.net

取消掉注釋【將#去掉】,然后將路徑修改為你自定義的SSH banner文本文件。

5、使用DSA公鑰認(rèn)證

代替使用用戶名和密碼對SSH進(jìn)行認(rèn)證,你可以使用DSA公鑰進(jìn)行認(rèn)證,注意你既可以使用登陸名,也可以使用DSA公鑰進(jìn)行認(rèn)證,使用DSA公鑰認(rèn)證可以預(yù)防你的系統(tǒng)遭受字典攻擊,因為你不需要用登陸名和密碼登陸SSH服務(wù),而是需要一對DSA密鑰,一個公鑰和一個私鑰,在你本地機器上保存私鑰,將公鑰放在服務(wù)器上。當(dāng)你發(fā)起一個SSH登陸會話時,服務(wù)器檢查密鑰,如果它們匹配的話,你就可以直接進(jìn)入shell,如果它們不匹配,你的連接將被自動斷開。

在本例中的私人計算機叫‘工作站1’,服務(wù)器叫‘服務(wù)器1’。在兩個機器上我有相同的home目錄,如果服務(wù)器和客戶端上的home目錄不同將不能工作,實現(xiàn),你需要在你的私人計算機上創(chuàng)建一對密鑰,命令:~$ ssh-keygen -t dsa,它將要求你為私鑰輸入一個密語,但是你可以保留為空,因為這不是一個推薦的做法。密鑰對創(chuàng)建好了:你的私鑰在~/.ssh/id_dsa,你的公鑰在.ssh/id_dsa.pub。


接下來,拷貝~/.ssh/id_dsa.pub中的內(nèi)容到‘服務(wù)器1’的~/.ssh/authorized_keys文件中,~/.ssh/id_dsa.pub的內(nèi)容看起來象下面這樣:

~$ cat .ssh/id_dsa.pub ssh-dss AAAAB3NzaC1kc3MAAACBAM7K7vkK5C90RsvOhiHDUROvYbNgr7YEqtrdfFCUVwMWc JYDusNGAIC0oZkBWLnmDu+y6ZOjNPOTtPnpEX0kRoH79maX8NZbBD4aUV91lbG7z604ZTdr LZVSFhCI/Fm4yROHGe0FO7FV4lGCUIlqa55+QP9Vvco7qyBdIpDuNV0LAAAAFQC/9ILjqII7n M7aKxIBPDrQwKNyPQAAAIEAq+OJC8+OYIOeXcW8qcB6LDIBXJV0UT0rrUtFVo1BN39cAWz5pu Fe7eplmr6t7Ljl7JdkfEA5De0k3WDs 9/rD1tJ6UfqSRc2qPzbn0p0j89LPIjdMMSISQqaKO4m2fO2VJcgCWvsghIoD0AMRC7ngIe6bta NIhBbqri10RGL5gh5AAACAJj1/rV7iktOYuVyqV3BAz3JHoaf+H/dUDtX+wuTuJpl+tfDf61rb WOqrARuHFRF0Tu/Rx4oOZzadLQovafqrDnU/No0Zge+WVXdd4ol1YmUlRkqp8vc20ws5mLVP 34fST1amc0YNeBp28EQi0xPEFUD0IXzZtXtHVLziA1/NuzY= anze@station1.example.com

如果文件~/.ssh/authorized_keys已經(jīng)存在,請將上面的內(nèi)容附加在該文件的后面。剩下的只是給該文件設(shè)置正確的權(quán)限了:

~$ chmod 600 ~/.ssh/authorized_keys

現(xiàn)在,配置sshd_config文件使用DSA密鑰認(rèn)證,確保你將下面三行前的注釋去掉了:
RSAAuthentication yes
PubkeyAuthentication yes
AuthorizedKeysFile %h/.ssh/authorized_keys

重新啟動服務(wù),如果你的配置沒有錯誤,現(xiàn)在你就可以SSH到你的服務(wù)器,而且無需任何交互動作(如輸入用戶名和密碼)就直接進(jìn)入你的home目錄了。
如果你只想使用DSA認(rèn)證登陸,確保你在sshd_config中取消掉注釋并修改PasswordAuthentication這一行,將yes改為no:
PasswordAuthentication no

任何在服務(wù)器上沒有公鑰的人試圖連接到你的SSH服務(wù),它就被拒絕,給它顯示如下一個拒絕提示信息:
Permission denied (publickey).

6、使用TCP wrappers僅允許指定的主機連接

如果你想在你的網(wǎng)絡(luò)上只允許特定的主機才能連接到你的SSH服務(wù),但又不想使用或弄亂你的iptables配置,那這個方法非常有用,你可以使用TCP wrappers。在這個例子中對sshd進(jìn)行TCP包裹,我將創(chuàng)建一條規(guī)則允許本地子網(wǎng)192.168.1.0/24和遠(yuǎn)程193.180.177.13的自己連接到我的SSH服務(wù)。
默認(rèn)情況下,TCP wrappers首先在/etc/hosts.deny中查找看主機是否允許訪問該服務(wù),接下來,TCP wrappers查找/etc/hosts.allow看是否有規(guī)則允許該主機服務(wù)指定的服務(wù),我將在/etc/hosts.deny中創(chuàng)建一個規(guī)則,如下:
sshd: ALL

這意味著默認(rèn)情況下所有主機被拒絕訪問SSH服務(wù),這是應(yīng)該的,否則所有主機都能訪問SSH服務(wù),因為TCP wrappers首先在hosts.deny中查找,如果這里沒有關(guān)于阻止SSH服務(wù)的規(guī)則,任何主機都可以連接。

接下來,在/etc/hosts.allow中創(chuàng)建一個規(guī)則允許指定的主機使用SSH服務(wù):
sshd: 192.168.1 193.180.177.13

現(xiàn)在,只有來自192.168.1.0/24和193.180.177.13的主機能夠訪問SSH服務(wù)了,其他主機在連接時還沒有到登陸提示符時就被斷開了,并收到錯誤提示,如下:
ssh_exchange_identification: Connection closed by remote host

7、使用iptables允許特定的主機連接

作為TCP wrappers的一個代替品,你可以使用iptables來限制SSH訪問(但可以同時使用這個兩個的),這里有一個簡單的例子,指出了如何允許一個特定的主機連接到你的SSH服務(wù):
~# iptables -A INPUT -p tcp -m state --state NEW --source 193.180.177.13 --dport 22 -j ACCEPT

并確保沒有其他的主機可以訪問SSH服務(wù):

~# iptables -A INPUT -p tcp --dport 22 -j DROP

保存你的新規(guī)則,你的任務(wù)就完成了,規(guī)則是立即生效的

8、SSH時間鎖定技巧

你可以使用不同的iptables參數(shù)來限制到SSH服務(wù)的連接,讓其在一個特定的時間范圍內(nèi)可以連接,其他時間不能連接。你可以在下面的任何例子中使用/second、/minute、/hour或/day開關(guān)。

第一個例子,如果一個用戶輸入了錯誤的密碼,鎖定一分鐘內(nèi)不允許在訪問SSH服務(wù),這樣每個用戶在一分鐘內(nèi)只能嘗試一次登陸:

~# iptables -A INPUT -p tcp -m state --syn --state NEW --dport 22 -m limit --limit 1/minute --limit-burst 1 -j ACCEPT
~# iptables -A INPUT -p tcp -m state --syn --state NEW --dport 22 -j DROP

第二個例子,設(shè)置iptables只允許主機193.180.177.13連接到SSH服務(wù),在嘗試三次失敗登陸后,iptables允許該主機每分鐘嘗試一次登陸:

~# iptables -A INPUT -p tcp -s 193.180.177.13 -m state --syn --state NEW --dport 22 -m limit --limit 1/minute --limit-burst 1 -j ACCEPT
~# iptables -A INPUT -p tcp -s 193.180.177.13 -m state --syn --state NEW --dport 22 -j DROP

這些技巧都不是很難掌握,但是它們對于保護你的SSH服務(wù)卻是很強勁的手段,花一點代價換來的是睡一個好覺。

以上就是linux下高級SSH安全技巧有哪些,小編相信有部分知識點可能是我們?nèi)粘9ぷ鲿姷交蛴玫降?。希望你能通過這篇文章學(xué)到更多知識。更多詳情敬請關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道。

分享標(biāo)題:linux下高級SSH安全技巧有哪些
網(wǎng)頁URL:http://muchs.cn/article16/jpijdg.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站排名、云服務(wù)器、建站公司、微信小程序、營銷型網(wǎng)站建設(shè)域名注冊

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

網(wǎng)站優(yōu)化排名