引言:對于Linux來說,使用SSH連接可以實現(xiàn)遠程訪問。不過,這也成了黑客重點攻擊的目標。如果黑客破譯了連接密碼,就可以輕松地對SSH服務器進行滲透和破壞。因此,如何保護SSH服務的安全,是管理員必須重視的問題。
對于Linux來說,使用SSH連接可以實現(xiàn)遠程訪問。不過,這也成了黑客重點攻擊的目標。如果黑客破譯了連接密碼,就可以輕松的對SSH服務器進行滲透和破壞。因此,如何保護SSH服務的安全,是管理員必須重視的問題。當然,要想提高SSH的安全性,僅僅依靠單一的防護手段是遠遠不夠的。這就需要采取多種方法,從不同角度強化SSH的安全。
當通過SSH連接到Linux服務器后,默認會保存在“/var/log/secure”日志中。不過,很多經(jīng)過認證登錄的程序(例如vsFTPd等)都在在其中存儲日志信息,這給針對SSH日志的分析工作帶來了不便。
其實,利用TCP_Wraper機制,可以將SSH日志信息(例如登錄實現(xiàn),IP等)單獨記錄到指定的文件中,可以讓管理員準確分析SSH日志信息。
首先,需要確定當前系統(tǒng)的SSH是否支持TCP_Wraper,執(zhí)行“which sshd”命令,來定位“shd”的路徑,例如“/usr/sbin/sshd”。執(zhí)行“l(fā)dd /usr/sbin/sshd”命令,來查看其調(diào)用了庫文件信息。執(zhí)行“l(fā)dd /usr/sbin/sshd |grep warp”命令,如果出現(xiàn)“l(fā)ibwrap.so”開頭之類文件信息時,則說明SSH支持TCP_Wraper功能。
執(zhí) 行“vi /etc/hosts.allow”命令,在該文件中添加“sshd:192.168.2.0/25 5.255.255.0:spawn echo"`data` %a access this server %d on %A">>/var/ssh.log”行,表示運行指定的IP范圍訪問SSH服務,本例為“192.168.2.0/255.255.255.0”。執(zhí) 行“vi /etc/hosts.deny”命 令,在該文件中添加“all:all:spawn echo "`data` %a access this server %d on%A">>/var/ssh.log”行,表示禁止非上述IP范圍外的主機進行訪問。不管是否允許訪問,都將訪問時的時間,訪問者的IP,訪問的本機進程信息以及所訪問的本機的IP記錄到指定的文件中。這樣,管理員可以隨時執(zhí)行“cat /var/ssh.log”命令,來查看所記錄的信息。
也可以直接在“/etc/hosts.deny”文件中添加“sshd:ALL EXCEPT 192.168.2. spawn echo"`data` %a access this server %d on %A">>/var/ssh.log”行,而必須編輯“hosts.allow”文件,也可以實現(xiàn)同樣的效果。
當然,TCP_Wraper機制不能記錄訪問者的賬戶名信息,所需需要執(zhí)行“vi /var/log/secure”命令,在安全日志中查找相關用戶名信息。實際上,在SSH的配置文件中可以禁止指定的賬戶訪問,執(zhí)行“vi /etc/ssh/sshd_config”命令,在其中添加“DenyUser xxx”行,其中的“xxx”表示具體的賬戶名。執(zhí)行“service sshd restart”命令重啟SSH服務,這樣該賬戶就會被拒之門外了。注意,如果在該配置文件中只添加“AllowUsers xxx”行,那么則只允許該賬戶登錄SSH,其余的賬戶(包括Root)都將被拒之門外。而如果兩者都存在,則“DenyUser xxx”是優(yōu)先于“AllowUsers xxx”的。
使用PAM安全認證機制,可以最大限度的保護SSH的安全。對于PAM來說,實際上分為多個層面,第一個部分為應用程序?qū)用?,第二部分是名為“Libpam.so”模塊層面,第三部分為每個程序?qū)腜AM配置文件,最后一個層面是根據(jù)上述配置文件,來調(diào)用與之對應的安全模塊。執(zhí)行“l(fā)dd /usr/sbin/sshd |grep pam”命令,可以看到與SSH服務相關的PAM模塊文件。進入“/etc/pam.d”目 錄,執(zhí)行“vim sshd”命令,在其中 的“account required pam_nologin.so”行下添加“account required pam_access.so accessfile=/etc/sshaccessuser”行,其作用是使用“pam_access.so”模塊對SSH的登錄進行控制。
為了不影響其他程序,這里指定了專門的賬戶管理文件“/etc/sshaccessuser”。執(zhí)行“vi /etc/sshaccessuser”命令,在其中添加允許登錄的賬戶信息,例如添加“+:user1:ALL”以及“+:user2:ALL”等行,允許“user1”、“User2”賬戶正常登錄SSH服務,其中的“ALL”表示可以從任何地方登錄。添加完允許登錄的賬戶后,在最后一行輸入“-:ALL:ALL”行,其作用是禁止其他的賬戶從任何地方訪問SSH服務。
這樣,當非法的賬戶試圖登錄本機的SSWH服務時,系統(tǒng)會提示“Commection closed”信息,禁止其進行登錄。
當然,也可以使用“pam_listfile.so”模 塊,來 實現(xiàn)相同的功能。例如將上述語句替換為“auth reqiired pam_listfile.so iten=user sense=denyfile=/etc/sshlistonerr=succeed”一行,之后執(zhí) 行“vi /etc/sshlist”命令,在該列表文件中輸入對應的賬戶名。這樣,只要是該列表文件中的賬戶名,都禁止登錄SSH服務。對應的,如果將上述語句中的“sense=deny” 修改為“sense=allow”的話,則情況剛好相反,只有該列表文件中的所有賬戶才可以訪問SSH服務。
對于開啟了SSH服務的主機來說,一旦其密碼被黑客破解,系統(tǒng)就沒有安全性可言了。為了防止黑客暴力破解SSH密碼,可以采取多種措施加以應對。例如修改SSH登錄賬戶名稱,將其設置為很不常用的名稱,同時禁用Root賬戶。將SSH登錄帳號的密碼設置了足夠復雜,避免其被輕易猜測出來。對SSH服務的端口號進行修改,不再使用TCP 22,同時只使用SSH2而不使用SSH1。對SSH服務進行合理的配置,當用戶在規(guī)定的時間內(nèi)沒有正確連接的話,則自動斷開其連接。嚴格限制允許同時連接的SSH登錄數(shù)量,以防止黑客快速破解密碼。為SSH服務配置密鑰認證功能,讓無關用戶無法連接等。
例如執(zhí)行“useradd xxx”命令,創(chuàng)建一個不太常見的賬戶名, “xxx”為具體的賬戶名。執(zhí)行“password!$”命令,為其設置一個復雜的密碼。接著執(zhí)行“vi /etc/passwd”命令,在密碼文件中將該“xxx”賬戶的UID設置為0,同時可以根據(jù)需要修改其主目錄。執(zhí)行“passwd -l root”命令,將root賬戶鎖定。執(zhí)行“vi /etc/ssh/sshd_config”命令,在SSH配置文件中添加“Port 22219”行,將其連接端口設置為22219,當然可以自由定義該端口。這樣,在客戶機上執(zhí)行諸如“ssh xxx@192.168.1.100 -p 22219”之類的命令,才可以進行連接,假設SSH主機IP為192.168.1.100。
添 加“LoginGraceTime 120”行,其作用是在120秒時間內(nèi)客戶端沒有正確登錄,則斷開連接,您可以根據(jù)需要進行設定,默認為0表示無限制。添加“MaxStartups 3”行,其作用是設置同時發(fā)生的未驗證的并發(fā)量,即允許同時有幾個登錄連接,其默認值為10。添加“MaxAuthTries 3”行,其作用是最多允許嘗試3此密碼,超過該次數(shù)則斷開連接。添加“MaxSessions 3”行,表示最多允許3個連接會話。
執(zhí) 行“ssh-keygen -t rsa”命令,根據(jù)提示信息保持默認密鑰存儲路徑,確認后生成一對密鑰文件。進入當前用戶的主目錄,在其中的“.ssh”目錄中看到名為“id_rsa”的私鑰文件和名為“id_rsa.pub”的公鑰文件。執(zhí)行“scp id_rsa.pub xxx.xxx.xxx.xxx:~/.ssh/authorized_keys”之類的命令,將公鑰文件復制到別的主機的相應目錄中,并將其更名為“authorized_keys”。這樣,當本機使用ssh命令連接上述主機時,可以直接連接而無需密碼了。但是如果想希望指定的賬戶從別的主機上使用密鑰認證直接連接本機,則需要根據(jù)需要將上述“id_rsa.pub”文件復制到本機對應賬戶的主目錄下。
例如在本機上存在名為“sshuser1”的賬戶,將上述“id_rsa.pub”文件復制到該賬戶的主目錄下,并將其更名 為“authorized_keys”。之后將上述“id_rsa”的私鑰文件復制到U盤上,之后將其復制到目標主機當前賬戶主目錄。在該主機上SSH遠程訪問本主機,而無需輸入密碼就可以進行登錄。其他用戶因為沒有該私鑰文件,自然就無法順利本機的訪問SSH服務。
當然,前提是需要對“sshd_config” 文件進行編輯,將其中的“PaswordAuthentication”的值設置為“no”,以禁止使用密碼認證。當然,使用SecureCRT等連接工具,可以選擇密鑰認證的功能,選擇該私鑰文件,也可以實現(xiàn)和SSH服務器的直接連接操作。