通過設(shè)定OpenSSH賬戶登錄避免惡意攻擊

字號:

前面我們討論了如何《保護(hù)SSH免受強(qiáng)力口令*攻擊》。今天繼續(xù)討論如何限制用戶的登錄。OpenSSH包括許多用途廣泛的并且十分流行的程序。無論是作為客戶端或服務(wù)器,其廣泛性和SSH的實(shí)用性,無疑都使SSH成為一些公共的攻擊目標(biāo)。由此導(dǎo)致的結(jié)果是,人們開發(fā)了許多工具用以對付一些常見的強(qiáng)力攻擊企圖。
    然而,這些攻擊不僅僅會轉(zhuǎn)換為一種惱人的東西,更是一種對日志文件空間的浪費(fèi)。對于剛開始對付這種攻擊的人員來說,明確地設(shè)置誰能夠通過OpenSSH登錄到系統(tǒng)中將有助于擊潰大約99%的強(qiáng)力攻擊,而不管你的系統(tǒng)真實(shí)的安全程度如何。
    首先,千萬不要準(zhǔn)許以根用戶身份通過SSH登錄進(jìn)入,除非你絕對有必要這樣做,而且需要采用SSH密鑰。千萬不要允許在不需要口令(空口令)的情況下以根據(jù)用戶登錄到系統(tǒng)中。為此,編輯/etc/ssh/sshd_config(在某些系統(tǒng)中即為/etc/sshd_config),并增加:
    PermitRootLogin without-password
    這就會容許根用戶身份登錄,不過只能采用一個恰當(dāng)?shù)腟SH密鑰才可以登錄,其對應(yīng)的公共部分必須在/root/.ssh/authorized_keys中設(shè)置。
    其次,明確地定義哪些用戶能夠登錄。因此需要再次編輯sshd_config文件,并增加:
    AllowUsers root
    AllowUsers freedom
    上述的命令僅允許用戶root和freedom通過ssh登錄。在這里需要注意,一旦你啟用了AllowUsers選項(xiàng),任何沒有被列示的用戶將不能登錄。換句話說,雖然進(jìn)行了PermitRootLogin設(shè)置,如果我們沒有設(shè)置PermitRootLogin,并將“AllowUsers freedom”放置在配置文件中,即使用了一個正確的口令,根用戶也不能登錄。因此,隨著時間的推移,需要不斷地關(guān)注這個列表,并確保不再需要訪問系統(tǒng)的用戶要從列表中清除。
    實(shí)際上,你不但可以通過指定所允許的用戶來強(qiáng)化安全,還可以通過設(shè)定一個“用戶@主機(jī)”模式指定用戶可以從哪臺主機(jī)登錄。
    讓我們舉個例子,如果你設(shè)置了freedom@192.168.2.18,那么授與給用戶賬戶“freedom”的訪問權(quán)將只能源自IP地址為192.168.2.18的計算機(jī)。在這里我們可以指定多種模式,如freedom@192.168.2.*,就會允許用戶freedom可以從網(wǎng)絡(luò)192.168.2.0的所有主機(jī)登錄。
    OpenBSD的Manual Pages列示了可允許模式的更祥細(xì)信息(網(wǎng)址為:http://www.openbsd.org/cgi-bin/man.cgi?query=ssh_config),您不妨一看。
    最后一點(diǎn),如果你不需要基于PAM驗(yàn)證,就要設(shè)置:
    UsePAM no
    這本來是默認(rèn)的選項(xiàng),如果你需要基于PAM的身份驗(yàn)證(sshd自身不能實(shí)現(xiàn))時,就應(yīng)當(dāng)啟用之。例如,如果擁有一個通過LDAP驗(yàn)證的用戶賬戶時,就需要啟用。如果不啟用UsePAM,此用戶將永遠(yuǎn)不能登錄。不過,一旦你啟用了UsePAM,其它選項(xiàng)并不會象你所期望的那樣工作。例如,“PermitRootLogin without-password”就不會正常工作,而且如果沒有提供一個合法的ssh密鑰,就會退回到這樣一種情況:對根用戶的口令,需要根據(jù)身份驗(yàn)證的提示才得以實(shí)現(xiàn)。
    在這一點(diǎn)上,僅通過采用AllowUsers關(guān)鍵字,就可以減輕多數(shù)的強(qiáng)力攻擊企圖,因?yàn)楣舨坏枰聹y正確的口令,還需要猜測正確的賬戶。
    任何通過其他用戶(即不在被準(zhǔn)許用戶列表中的用戶)的登錄企圖都會導(dǎo)致失敗,即使提供了正確的口令也是如此。