博主我新買的VPS建站沒幾天,心想應(yīng)該沒人動我的歪主意就一直沒太注意服務(wù)器安全。今天用iftop查看到有幾個IP一直連接中,而我的blog里的流量統(tǒng)計頁面訪問數(shù)量卻沒有新增,很明顯這不是在訪問blog。通過netstat -anp 可以查看到這幾個IP,尤其有個IP還不斷更換端口一直嘗試訪問我的22端口,能用22端口無非是ssh終端連接。心里一想百分百99%是嘗試暴力破解,事不宜遲趕緊封鎖。

一查烏克蘭的,還不能ping它,也就是說單向訪問

通過iftop能實(shí)時查看流量連接情況

tail -f /var/log/secure 可以查看ssh登陸失敗的信息,證實(shí)了193.201.224.199這家伙在嘗試暴力破解
利用denyhosts 防止暴力破解ssh
DenyHosts是Python語言寫的一個程序,它會分析sshd的日志文件(/var/log/secure),當(dāng)發(fā)現(xiàn)重 復(fù)的攻擊時就會記錄IP到/etc/hosts.deny文件,從而達(dá)到自動屏IP的功能。
思路:利用讀取到/var/log/secure登陸失敗的IP信息,我們可以設(shè)定一個規(guī)則,如果登陸失敗超過多少次,我們把這個IP寫到 /etc/hosts.deny中,拒絕訪問!
1、先把始終允許的IP填入 /etc/hosts.allow ,因?yàn)樽约涸L問超過了次數(shù)那就尷尬了。不過一般購買的VPS都有后臺可以更改ROOT登陸密碼,所以這個步驟也可以不設(shè)置。
# vim /etc/hosts.allow
# sshd:IP:allow
2、安裝DenyHosts 官方網(wǎng)站為:http://denyhosts.sourceforge.net
# tar -zxvf DenyHosts-2.6.tar.gz
# cd DenyHosts-2.6
# python setup.py install
3、配置
# cd /usr/share/denyhosts/
# cp denyhosts.cfg-dist denyhosts.cfg
# vi denyhosts.cfg
SECURE_LOG = /var/log/secure #要讀取安全日志路徑,默認(rèn)的不管它
HOSTS_DENY = /etc/hosts.deny #將阻止IP寫入到hosts.deny,默認(rèn)的不管它
PURGE_DENY = 1d #設(shè)定過多久后清除已阻止IP (m=分鐘,h=小時,d=天,w=周)
BLOCK_SERVICE = sshd #阻止服務(wù)名
DENY_THRESHOLD_INVALID = 5 #允許無效用戶登錄失敗的次數(shù)
DENY_THRESHOLD_VALID = 10 #允許普通用戶登錄失敗的次數(shù)
DENY_THRESHOLD_ROOT = 3 #允許root登錄失敗的次數(shù)
(上面3個登陸失敗的次數(shù)建議不要設(shè)定太苛刻,以免自己輸錯了被列入黑名單了)
DENY_THRESHOLD_RESTRICTED = 1 #設(shè)定 deny host 寫入到該資料夾
WORK_DIR = /usr/local/share/denyhosts/data #將deny的host或ip紀(jì)錄到Work_dir中
SUSPICIOUS_LOGIN_REPORT_ALLOWED_HOSTS=YES #假如設(shè)定為YES,那么已經(jīng)設(shè)為白名單中的IP登陸失敗也會被設(shè)為可疑,也會被列入黑名單中,設(shè)定NO的意思就相反。
HOSTNAME_LOOKUP=YES #如果可以的話記錄登陸失敗的hostname
LOCK_FILE = /var/lock/subsys/denyhosts #將DenyHOts啟動的pid紀(jì)錄到LOCK_FILE中,已確保服務(wù)正確啟動,防止同時啟動多個服務(wù)。
HOSTNAME_LOOKUP=NO #是否做域名反解
ADMIN_EMAIL = #設(shè)置管理員郵件地址
DAEMON_LOG = /var/log/denyhosts #自己的日志文件
DAEMON_PURGE = 10m #該項(xiàng)與PURGE_DENY 設(shè)置成一樣,也是清除hosts.deniedssh 用戶的時間。
4、設(shè)置啟動腳本
# cp daemon-control-dist daemon-control
# chown root daemon-control
# chmod 700 daemon-control
完了之后執(zhí)行daemon-contron start就可以了。
# ./daemon-control start
如果要使DenyHosts每次重起后自動啟動還需做如下設(shè)置:
# ln -s /usr/share/denyhosts/daemon-control /etc/init.d/denyhosts
# chkconfig –add denyhosts
# chkconfig denyhosts on
然后就可以啟動了:
# service denyhosts start
# ps -ef|grep denyhosts #檢查是否啟動

# vim /etc/hosts.deny #查看內(nèi)是否有禁止的IP,有的話說明已經(jīng)成功了。
