一、修改參數來使得暴力破解變得幾乎不可能
1.密碼設定要足夠復雜
密碼的設定,盡可能要有大寫字母、小寫字母、特殊符號和數字,長度至少要大於8,當然越長越好,只要能記住。
2.修改默認端口號
nmap工具可以探測服務器開放的遠程端口:# nmap 192.168.12.11
StartingNmap 5.51 ( http://nmap.org ) at 2015-10-27 21:32 CST
Nmapscan report for 192.168.220.22
Hostis up (0.00017s latency).
Notshown: 998 closed ports
PORT STATE SERVICE
22/tcp open ssh
111/tcpopen rpcbind
MACAddress: 00:0C:29:9C:14:74 (VMware)
探測到22端口是開啟的,這樣就能用ssh來暴力破解root密碼了。
如果我們將22改為23,這樣顯示的結果變成下面:
23/tcp open telnet
其實並不是telnet開啟,而是我們的sshd服務。這樣雖然給黑客設了一個類似陷阱的東西,但是因為能探測到,這樣也是不***全的。那麼我們就修改成一個非常不常用的端口號,如233,這樣nmap甚至是探測不到的,如此就起到了防護作用。
3.禁掉默認管理員
我們知道,默認的管理員是root,uid和gid都是0。我們的操作是將root用戶的uid和gid改成其他,shell改為/sbin/nologin或者/bin/false,將我們建立的一個用戶(如lius)的uid和gid改成0。操作方法是編輯/etc/passwd文件:#vim /etc/passwd
root:x:22:22:root:/root:/sbin/nologin
lius:x:0:0::/home/lius/:/bin/bash## 部分配置
我們知道lius的命名千奇百怪,我們可以隨意自定義,所以,這就使得暴力破解變得幾乎是不可能的事情了。
二、使用fail2ban實現破解次數限制
如果網站一直被別人暴力破解sshd服務密碼,即使不成功,也會導致系統負載很高;原因是在暴力破解的時候,系統會不斷地認證用戶,增加了系統資源開銷,導致訪問網站速度變慢。
fail2ban可以監視系統日志,然後匹配日志的錯誤信息(正則匹配),執行相應的屏蔽動作(一般情況下是防火牆),而且可以發送e-mail通知系統管理員,很實用、很強大!fail2ban的官網fail2ban.org,可獲取stable版本的下載鏈接,安裝fail2ban。
習慣的安裝目錄為/usr/local/src, cd到這個目錄,用wget獲得.gz格式文件。
#tar zxvf fail2ban-0.9.3.tar.gz
#cd fail2ban-0.9.3
#python setup.py install # 源碼安裝的方法和以前不一樣,可以通過查看README.md來獲取安裝的步驟,python版本要在2.4以上,python-V可以查看版本。
#cd files
#cp redhat-initd /etc/init.d/fail2ban # 復制和重命名
#chkconfig --add fail2ban # 開機啟動
#/etc/init.d/fail2ban start # 啟動服務
如此,fail2ban啟動成功,但是我們還沒配置fail2ban,下面是配置過程:
fail2ban服務相關主要文件說明:
/etc/fail2ban/action.d#動作文件夾,內含默認文件。iptables以及mail等動作配置
/etc/fail2ban/fail2ban.conf#定義了fai2ban日志級別、日志位置及sock文件位置
/etc/fail2ban/filter.d#條件文件夾,內含默認文件。過濾日志關鍵內容設置
/etc/fail2ban/jail.conf#主要配置文件,模塊化。主要設置啟用ban動作的服務及動作閥值
應用實例:設置ssh遠程登錄5分鐘內3次密碼驗證失敗,禁止用戶IP訪問主機1小時,1小時該限制自動解除,此IP可以重新登錄。
#vim /etc/fail2ban/jail.conf
enabled= true
filter= sshd
action= iptables[name=SSH, port=ssh, protocol=tcp]
sendmail-whois[name=SSH,
[email protected],
[email protected],sendername="Fail2Ban"]
logpath= /var/log/secure
findtime= 300
maxretry= 3
bantime= 3600
注釋:
enabled= true # 是否激活此項(true/false)修改成true
logpath= /var/log/secure # 檢測的系統的登陸日志文件,這裡要寫sshd服務日志文件的路徑
findtime= 300 # 在5分鐘內內出現規定次數就實施動作,默認時間單位:秒
maxretry= 3 # 密碼驗證失敗次數最大值為3,超過實施操作
bantime= 3600 # 超過3次後,禁止此用戶IP訪問主機1小時
發郵件的配置可以設定管理員的郵箱。如此配置結束,打開新終端,故意輸錯3次,再登錄時可以看到禁止訪問的提示:ssh: connect to host192.168.1.63 port 22: Connection refused