1、密碼足夠復(fù)雜:
密碼的長(zhǎng)度要大于8位最好大于14位棠笑。密碼的復(fù)雜度是密碼要盡可能有數(shù)字镜悉、大小寫字母和特殊符號(hào)混合組成祟辟。
2、修改默認(rèn)端口號(hào)
3侣肄、不使用root用戶名登錄
是否可以禁止root身份登錄旧困?不行,因?yàn)橛行┏绦蛐枰褂胷oot身份登錄并運(yùn)行稼锅。
另外判斷一個(gè)用戶是不是超級(jí)管理員吼具,看的是用戶的ID是否為0。
[root@kaixincainiao~]# useradd test
改:test:x:500:500::/home/mk:/bin/bash
為:test:x:0:0::/home/mk:/bin/bash
[root@~]# vim /etc/passwd
改:root:x:0:0:root:/root:/bin/bash
為:root:x:0:0:root:/sbin/nologin
另外矩距,改下面內(nèi)容后拗盒,mk用戶也是登錄不上的。只判斷UID是否為0锥债,不查看用戶名的:
[root@kaixincainiao Packages]# vim/etc/ssh/sshd_config
改:
#PermitRootLogin yes
為:
PermitRootLogin no
[root@kaixincainiao ~]# service sshd restart
測(cè)試:
[root@kaixincainiao Packages]# sshmk@192.168.1.63
test@192.168.1.63's password:
Permission denied,please try again.
一般情況這個(gè)就可以解決了暴力破解的問(wèn)題了陡蝇。
情況2:暴力破解問(wèn)題比較嚴(yán)重。 需要把暴力破解的用的IP地址直接禁掉
[root@kaixincainiao log]#lastb
mkssh:nottykaixincainiao.cnTue Mar3 20:43 - 20:43(00:00)
roottty1Tue Dec 18 09:45 -09:45(00:00)
[root@kaixincainiao log]#ll -h /var/log/btmp
-rw-------. 1 rootutmp 76M Mar3 20:43 /var/log/btmp
案列:
最近公網(wǎng)網(wǎng)站一直被別人暴力破解sshd服務(wù)密碼哮肚。雖然沒(méi)有成功登夫,但會(huì)導(dǎo)致系統(tǒng)負(fù)載很高,原因是在暴力破解的時(shí)候绽左,系統(tǒng)會(huì)不斷地認(rèn)證用戶悼嫉,從而增加了系統(tǒng)資源額外開(kāi)銷艇潭,導(dǎo)致訪問(wèn)公司網(wǎng)站速度很慢拼窥。
fail2ban可以監(jiān)視你的系統(tǒng)日志,然后匹配日志的錯(cuò)誤信息(正則式匹配)執(zhí)行相應(yīng)的屏蔽動(dòng)作(一般情況下是防火墻)蹋凝,而且可以發(fā)送e-mail通知系統(tǒng)管理員鲁纠,很好、很實(shí)用鳍寂、很強(qiáng)大改含!
簡(jiǎn)單來(lái)說(shuō)其功能就是防止暴力破解。工作的原理是通過(guò)分析一定時(shí)間內(nèi)的相關(guān)服務(wù)日志迄汛,將滿足動(dòng)作的相關(guān)IP利用iptables加入到dorp列表一定時(shí)間捍壤。
下載軟件包:
官方地址:
http://www.fail2ban.org/wiki/index.php/Downloads
安裝:
解壓查看readme文件
[root@kaixincainiao ~]# tar-zxvf fail2ban-0.8.14.tar.gz
[root@kaixincainiao fail2ban-0.8.14]# vimREADME.md#查看以下內(nèi)容
需要安裝python開(kāi)發(fā)環(huán)境,并且版本要大于2.4
查看當(dāng)前系統(tǒng)中python的版本:
[root@kaixincainiaofail2ban-0.8.14]# python -V
Python 2.6.6
安裝:
[root@kaixincainiao ~]# cdfail2ban-0.8.14
[root@kaixincainiaofail2ban-0.8.14]#python setup.py install
生成服務(wù)啟動(dòng)腳本:
[root@kaixincainiaofail2ban-0.8.14]# pwd
/root/fail2ban-0.8.14
[root@kaixincainiaofail2ban-0.8.14]# cp files/redhat-initd /etc/init.d/fail2ban
[root@kaixincainiaofail2ban-0.8.14]#chkconfig --add fail2ban#開(kāi)機(jī)自動(dòng)啟動(dòng)
相關(guān)主要文件說(shuō)明:
/etc/fail2ban/action.d#動(dòng)作文件夾鞍爱,內(nèi)含默認(rèn)文件鹃觉。iptables以及mail等動(dòng)作配置
/etc/fail2ban/fail2ban.conf
#定義了fai2ban日志級(jí)別、日志位置及sock文件位置
/etc/fail2ban/filter.d
#條件文件夾睹逃,內(nèi)含默認(rèn)文件盗扇。過(guò)濾日志關(guān)鍵內(nèi)容設(shè)置
/etc/fail2ban/jail.conf
#主要配置文件祷肯,模塊化。主要設(shè)置啟用ban動(dòng)作的服務(wù)及動(dòng)作閥值
# jail[d?e?l]監(jiān)獄
1疗隶、應(yīng)用實(shí)例
設(shè)置條件:ssh遠(yuǎn)程登錄5分鐘內(nèi)3次密碼驗(yàn)證失敗佑笋,禁止用戶IP訪問(wèn)主機(jī)1小時(shí),1小時(shí)該限制自動(dòng)解除斑鼻,此IP可以重新登錄蒋纬。
[root@kaixincainiaofail2ban]# ls action.d/iptables.conf
action.d/iptables.conf
[root@kaixincainiaofail2ban]# ls filter.d/sshd.conf
filter.d/sshd.conf
[root@kaixincainiaofail2ban]# ls jail.conf
jail.conf
vim jail.conf
[DEFAULT]
#全局設(shè)置
ignoreip = 127.0.0.1/8
#忽略的IP列表,不受設(shè)置限制
bantime= 600#屏蔽時(shí)間,單位:秒
findtime= 500#這個(gè)時(shí)間段內(nèi)超過(guò)規(guī)定次數(shù)會(huì)被ban掉
maxretry =
3
#最大嘗試次數(shù)
backend =auto
[ssh-iptables]
#單個(gè)服務(wù)檢查設(shè)置坚弱,如設(shè)置bantime颠锉、findtime、maxretry和全局沖突史汗,服務(wù)優(yōu)先級(jí)大于全局設(shè)置睡雇。
enabled= false#是否激活此項(xiàng)(true/false)修改成true
filter= sshd#過(guò)濾規(guī)則filter的名字返奉,對(duì)應(yīng)filter.d目錄下的sshd.conf
action= iptables[name=SSH, port=ssh, protocol=tcp]#動(dòng)作的相關(guān)參數(shù),對(duì)應(yīng)action.d/iptables.conf文件
sendmail-whois[name=SSH,dest=you@example.com, sender=fail2ban@example.com,sendername="Fail2Ban"]#觸發(fā)報(bào)警的收件人
logpath= /var/log/secure #檢測(cè)的系統(tǒng)的登陸日志文件。這里要寫sshd服務(wù)日志文件土涝。 默認(rèn)為logpath= /var/log/sshd.log
#5分鐘內(nèi)3次密碼驗(yàn)證失敗,禁止用戶IP訪問(wèn)主機(jī)1小時(shí)袜刷。配置如下
bantime= 3600#禁止用戶IP訪問(wèn)主機(jī)1小時(shí)
findtime= 300#在5分鐘內(nèi)內(nèi)出現(xiàn)規(guī)定次數(shù)就開(kāi)始工作
#在5分鐘內(nèi)內(nèi)出現(xiàn)規(guī)定次數(shù)就開(kāi)始工作
maxretry = 3#3次密碼驗(yàn)證失敗
啟動(dòng)服務(wù):
[root@kaixincainiaofail2ban-0.8.14]#service fail2ban start
Startingfail2ban:[確定]
測(cè)試:
[root@kaixincainiaofail2ban-0.8.14]# > /var/log/secure
[root@kaixincainiaofail2ban-0.8.14]# /etc/init.d/fail2ban restart
Stopping fail2ban:[OK]
Startingfail2ban:[OK]
[root@kaixincainiaofail2ban-0.8.14]# iptables -L -n
測(cè)試:故意輸入錯(cuò)誤密碼3次议经,再進(jìn)行登錄時(shí),會(huì)拒絕登錄
[root@kaixincainiao ~]#ssh 192.168.1.63
root@192.168.1.63'spassword:
Permission denied,please try again.
root@192.168.1.63'spassword:
Permission denied,please try again.
root@192.168.1.63'spassword:
Permission denied(publickey,password).
[root@kaixincainiao ~]#ssh 192.168.1.63
ssh: connect to host192.168.1.63 port 22: Connection refused
[root@kaixincainiao ~]#
[root@kaixincainiao fail2ban]# fail2ban-client status#配置好之后我們檢測(cè)下fail2ban是否工作埋市。
Status
|- Number of jail:1
`- Jail list:ssh-iptables
#具體看某一項(xiàng)的狀態(tài)也可以看冠桃,如果顯示被ban的ip和數(shù)目就表示成功了,如果都是0道宅,說(shuō)明沒(méi)有成功食听。[root@kaixincainiao fail2ban]# fail2ban-client status ssh-iptables
Status for the jail:ssh-iptables
|- filter
||- File list:/var/log/secure
||- Currently failed:0
|`- Total failed:3
`- action
|- Currently banned:1
|`-IP list:192.168.1.64
`- Total banned:1
查看fail2ban的日志能夠看到相關(guān)的信息
[root@kaixincainiaofail2ban]# tail /var/log/fail2ban.log
2015-03-0319:43:59,233 fail2ban.actions[12132]: WARNING [ssh-iptables] Ban 192.168.1.64