汪穎
【摘要】虛擬服務器(VPS)是一種服務器分割技術(shù),它是將一個服務器分割成多個虛擬的服務器,而每個虛擬服務器有自己單獨的IP地址,其在節(jié)約帶寬,提高訪問速度,降低管理成本方面有著較大的優(yōu)勢,但是VPS的安全性還是面臨著較大的考驗,本文通過VPS在實際運行中遭遇的一次SSH暴力攻擊來解析相應的防范措施。
【關鍵詞】虛擬服務器SSH攻擊
在VPS的日常維護中,查看系統(tǒng)日志是一個非常好的習慣,通過日志我們可以了解到VPS的運行狀態(tài),尤其對于VPS安全狀態(tài),我們更可以通過查看日志來獲取信息,以下通過一次SSH的暴力攻擊來探討VPS的防范措施。
1修改SSH端口,禁止root登陸
修改/etc/ssh/sshd_config文件$sudovi/etc/ssh/sshd_config Port4484#一個別人猜不到的端口號 PermitRootLoginno $sudo/etc/init.d/sshrestart
2禁用密碼登陸,使用RSA私鑰登錄
AmazonEC2服務器原本就是只可以使用私鑰登錄,但如果想在其它的計算機臨時通過SSH登陸,又沒帶私鑰文件的情況下,就很麻煩。所以需要手動開啟密碼驗證登錄。
#在客戶端生成密鑰
$ssh-keygen-trsa #把公鑰拷貝至服務器 $ssh-copy-id-i.ssh/id_rsa.pubserver
#也可以手動將.shh/id_rsa.pub拷貝至服務器用戶目錄的.ssh中,修改訪問權(quán)限
#$scp.shh/id_rsa.pubserver:~/.ssh #在服務器中 $cd./.ssh/
$mvid_rsa.pubauthorized_keys $chmod400authorized_keys $vi/etc/ssh/sshd_config
RSAAuthenticationyes#RSA認證 PubkeyAuthenticationyes#開啟公鑰驗證
AuthorizedKeysFile.ssh/authorized_keys#驗證文件路徑 PasswordAuthenticationno#禁止密碼認證 PermitEmptyPasswordsno#禁止空密碼 UsePAMno#禁用PAM #最后保存,重啟 $sudo/etc/init.d/sshrestart
3安裝Denyhosts
這個方法比較省時省力。denyhosts是Python語言寫的一個程序,它會分析sshd的日志文件,當發(fā)現(xiàn)重復的失敗登錄時就會記錄IP到/etc/hosts.deny文件,從而達到自動屏IP的功能。這和我之前介紹的自動屏蔽掃描的腳本是一個思路。如果靠人工手動添加的話工作量非常巨大?,F(xiàn)今denyhosts在各個發(fā)行版軟件倉庫里都有,而且不需要過多配置,簡單易用。安裝:
#Debian/Ubuntu:$sudoapt-getinstalldenyhosts
#RedHat/CentOS $yuminstalldenyhosts
#Archlinux $yaourtdenyhosts
#Gentoo $emerge-avdenyhosts
默認配置就能很好的工作,如要個性化設置可以修改/etc/denyhosts.conf:
$vi/etc/denyhosts.conf
SECURE_LOG=/var/log/auth.log#ssh日志文件,根據(jù)此文件來判斷。
HOSTS_DENY=/etc/hosts.deny#控制用戶登陸的文件
PURGE_DENY=#過多久后清除已經(jīng)禁止的,空表示永遠不解禁
BLOCK_SERVICE=sshd#禁止的服務名,如還要添加其他服務,只需添加逗號跟上相應的服務即可
DENY_THRESHOLD_INVALID=5#允許無效用戶失敗的次數(shù)
DENY_THRESHOLD_VALID=10#允許普通用戶登陸失敗的次數(shù)
DENY_THRESHOLD_ROOT=1#允許root登陸失敗的次數(shù)
DENY_THRESHOLD_RESTRICTED=1
WORK_DIR=/var/lib/denyhosts#運行目錄
SUSPICIOUS_LOGIN_REPORT_ALLOWED_HOSTS=YES
HOSTNAME_LOOKUP=YES#是否進行域名反解析
LOCK_FILE=/var/run/denyhosts.pid#程序的進程ID
ADMIN_EMAIL=root@localhost#管理員郵件地址,它會給管理員發(fā)郵件
SMTP_HOST=localhost
SMTP_PORT=25
SMTP_FROM=DenyHosts
SMTP_SUBJECT=DenyHostsReport
AGE_RESET_VALID=5d#用戶的登錄失敗計數(shù)會在多久以后重置為0,(h表示小時,d表示天,m表示月,w表示周,y表示年)
AGE_RESET_ROOT=25d
AGE_RESET_RESTRICTED=25d
AGE_RESET_INVALID=10d
RESET_ON_SUCCESS=yes#如果一個ip登陸成功后,失敗的登陸計數(shù)是否重置為0
DAEMON_LOG=/var/log/denyhosts#自己的日志文件
DAEMON_SLEEP=30s#當以后臺方式運行時,每讀一次日志文件的時間間隔。
DAEMON_PURGE=1h#當以后臺方式運行時,清除機制在HOSTS_DENY中終止舊條目的時間間隔,這個會影響PURGE_DENY的間隔。
查看我的/etc/hosts.deny文件發(fā)現(xiàn)里面已經(jīng)有8條記錄。
總結(jié):通過之后運行監(jiān)測,以上的配置能夠抵御SSH暴力登陸,提升了虛擬服務器的安全性。