設(shè)置Linux sshd確保遠(yuǎn)程服務(wù)器訪問(wèn)安全
雖然SSH的設(shè)計(jì)目的在于安全訪問(wèn),但它有的功能確實(shí)為入侵敞開(kāi)了大門(mén)。不過(guò)只要稍作修改,Linux管理員就可以讓sshd更加安全。
多數(shù)Linux服務(wù)器在默認(rèn)下通過(guò)SSH運(yùn)行Secure Shell Daemon (sshd)進(jìn)程以便進(jìn)行遠(yuǎn)程訪問(wèn)。Linux sshd是一種簡(jiǎn)單的方式,允許遠(yuǎn)程用戶與管理員登錄。遠(yuǎn)程用戶可以在你的服務(wù)器上打開(kāi)shell會(huì)話。
腳本會(huì)持續(xù)掃描互聯(lián)網(wǎng),確定服務(wù)器是否提供SSH訪問(wèn)。幾分鐘內(nèi),這些腳本能發(fā)現(xiàn)你的服務(wù)器,同時(shí)入侵者可以發(fā)動(dòng)暴力攻擊。
在暴力攻擊中,入侵者試圖作為服務(wù)器上現(xiàn)有用戶賬號(hào)登錄。通常他不知道存在的用戶賬戶有哪些。但是根用戶賬戶存在于所有Linux服務(wù)器上。如果根用戶可以訪問(wèn)你的服務(wù)器,那么入侵者所需的只是其密碼而已。
入侵者也會(huì)嘗試猜測(cè)用戶賬號(hào),常用名字如“jsmith”或部門(mén)與功能,如“helpdesk”或“finance”這樣的名字太危險(xiǎn),因?yàn)樗麄兇嬖谟诙鄶?shù)組織中。
多數(shù)自動(dòng)攻擊會(huì)查看你的服務(wù)器是否在默認(rèn)的TCP端口22上提供sshd。當(dāng)Linux服務(wù)器提供SSH服務(wù),就不應(yīng)該監(jiān)聽(tīng)端口22,就該在其他地方運(yùn)行sshd。如果你沒(méi)有提供HTTPS服務(wù),那么就將端口443用于sshd。
當(dāng)在端口443運(yùn)行sshd時(shí),即時(shí)有很多代理服務(wù)器也可以訪問(wèn)。同樣,如果端口掃描程序發(fā)現(xiàn)端口443是打開(kāi)的,入侵者可能試圖發(fā)起HTTPS攻擊,而不是SSH攻擊。如果端口443已經(jīng)在用,那就關(guān)閉另一個(gè)端口。
sshd還有個(gè)問(wèn)題是默認(rèn)下是允許根訪問(wèn)的。要進(jìn)行安全啟動(dòng),就得關(guān)閉該功能:打開(kāi)sshd配置文件(通常是/etc/ssh/sshd_config),將PermitRootLogin這一行設(shè)置為“no”。更好的是,包括“AllowUsers”這一行,可以挑選哪些用戶可以通過(guò)SSH進(jìn)行訪問(wèn)。如果某位需要SSH訪問(wèn)服務(wù)器的用戶的名字太常見(jiàn),那就該得更復(fù)雜一些,讓入侵者難以猜測(cè)出來(lái)。
要想確保安全,在服務(wù)器上將PasswordAuthentication設(shè)置為“no”,因?yàn)槿肭终邿o(wú)法通過(guò)猜測(cè)密碼獲得訪問(wèn)權(quán)限。合法用戶使用公用或私有的鑰匙對(duì)訪問(wèn)服務(wù)器。ssh-keygen命令可以生產(chǎn)公用與私有鑰匙。公用鑰匙必須復(fù)制到Linux服務(wù)器,通過(guò)使用ssh-copy-id即可?,F(xiàn)在用戶能夠通過(guò)由私有鑰匙簽名產(chǎn)生的認(rèn)證令牌登錄。如果服務(wù)器使用用戶的公用鑰匙驗(yàn)證簽名,那么就可以獲得訪問(wèn)。
這種額外的安全有個(gè)缺點(diǎn)。用于SSH認(rèn)證的鑰匙對(duì)只能用于有私有鑰匙的用戶。如果用戶想要從酒店計(jì)算機(jī)登錄,或者你在度假時(shí)想要進(jìn)行管理更變,那就不好辦了。因?yàn)槿肭终哧P(guān)閉大門(mén),這也可能同時(shí)鎖定你自己與授權(quán)用戶。