❶ 如何使用 fail2ban 防禦 SSH 伺服器的暴力破解攻擊
為了在CentOS 或 RHEL上安裝fail2ban,首先設置EPEL倉庫,然後運行以下命令。
$ sudo yum install fail2ban
在Fedora上安裝fail2ban,簡單地運行以下命令:
$ sudo yum install fail2ban
在Ubuntu,Debian 或 Linux Mint上安裝fail2ban:
$ sudo apt-get install fail2ban
為SSH伺服器配置Fail2ban
現在你已經准備好了通過配置 fail2ban 來加強你的SSH伺服器。你需要編輯其配置文件
/etc/fail2ban/jail.conf。
在配置文件的「[DEFAULT]」區,你可以在此定義所有受監控的服務的默認參數,另外在特定服務的配置部分,你可以為每個服務(例如SSH,Apache等)設置特定的配置來覆蓋默認的參數配置。
在針對服務的監獄區(在[DEFAULT]區後面的地方),你需要定義一個[ssh-iptables]區,這里用來定義SSH相關的監獄配置。真正的禁止IP地址的操作是通過iptables完成的。
下面是一個包含「ssh-iptables」監獄配置的/etc/fail2ban/jail.conf的文件樣例。當然根據你的需要,你也可以指定其他的應用監獄。
$ sudo vi /etc/fail2ban/jail.local
[DEFAULT]
# 以空格分隔的列表,可以是 IP 地址、CIDR 前綴或者 DNS 主機名
# 用於指定哪些地址可以忽略 fail2ban 防禦
ignoreip =127.0.0.1172.31.0.0/2410.10.0.0/24192.168.0.0/24
# 客戶端主機被禁止的時長(秒)
bantime =86400
# 客戶端主機被禁止前允許失敗的次數
maxretry =5
# 查找失敗次數的時長(秒)
findtime =600
mta = sendmail
[ssh-iptables]
enabled =true
filter = sshd
action = iptables[name=SSH, port=ssh, protocol=tcp]
sendmail-whois[name=SSH, [email protected], [email protected]]
# Debian 系的發行版
logpath =/var/log/auth.log
# Red Hat 系的發行版
logpath =/var/log/secure
# ssh 服務的最大嘗試次數
maxretry =3
根據上述配置,fail2ban會自動禁止在最近10分鍾內有超過3次訪問嘗試失敗的任意IP地址。一旦被禁,這個IP地址將會在24小時內一直被禁止訪問 SSH 服務。這個事件也會通過sendemail發送郵件通知。
一旦配置文件准備就緒,按照以下方式重啟fail2ban服務。
在 Debian, Ubuntu 或 CentOS/RHEL 6:
$ sudo service fail2ban restart
在 Fedora 或 CentOS/RHEL 7:
$ sudo systemctl restart fail2ban
為了驗證fail2ban成功運行,使用參數'ping'來運行fail2ban-client 命令。 如果fail2ban服務正常運行,你可以看到「pong(嘭)」作為響應。
$ sudo fail2ban-client ping
Server replied: pong
測試 fail2ban 保護SSH免遭暴力破解攻擊
為了測試fail2ban是否能正常工作,嘗試通過使用錯誤的密碼來用SSH連接到伺服器模擬一個暴力破解攻擊。與此同時,監控 /var/log/fail2ban.log,該文件記錄在fail2ban中發生的任何敏感事件。
$ sudo tail -f /var/log/fail2ban.log
根據上述的日誌文件,Fail2ban通過檢測IP地址的多次失敗登錄嘗試,禁止了一個IP地址192.168.1.8。
檢查fail2ban狀態並解禁被鎖住的IP地址
由於fail2ban的「ssh-iptables」監獄使用iptables來阻塞問題IP地址,你可以通過以下方式來檢測當前iptables來驗證禁止規則。
$ sudo iptables --list -n
Chain INPUT (policy ACCEPT)
target prot opt source destination
fail2ban-SSH tcp --0.0.0.0/00.0.0.0/0 tcp dpt:22
Chain FORWARD (policy ACCEPT)
target prot opt source destination
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
Chain fail2ban-SSH (1 references)
target prot opt source destination
DROP all --192.168.1.80.0.0.0/0
RETURN all --0.0.0.0/00.0.0.0/0
如果你想要從fail2ban中解鎖某個IP地址,你可以使用iptables命令:
$ sudo iptables -D fail2ban-SSH -s 192.168.1.8-j DROP
當然你可以使用上述的iptables命令手動地檢驗和管理fail2ban的IP阻塞列表,但實際上有一個適當的方法就是使用fail2ban-client命令行工具。這個命令不僅允許你對"ssh-iptables"監獄進行管理,同時也是一個標準的命令行介面,可以管理其他類型的fail2ban監獄。
為了檢驗fail2ban狀態(會顯示出當前活動的監獄列表):
$ sudo fail2ban-client status
為了檢驗一個特定監獄的狀態(例如ssh-iptables):
$ sudo fail2ban-client status ssh-iptables
上面的命令會顯示出被禁止IP地址列表。
為了解鎖特定的IP地址:
$ sudo fail2ban-client set ssh-iptables unbanip 192.168.1.8
注意,如果你停止了Fail2ban 服務,那麼所有的IP地址都會被解鎖。當你重啟
Fail2ban,它會從/etc/log/secure(或
/var/log/auth.log)中找到異常的IP地址列表,如果這些異常地址的發生時間仍然在禁止時間內,那麼Fail2ban會重新將這些IP地址禁止。
設置 Fail2ban 自動啟動
一旦你成功地測試了fail2ban之後,最後一個步驟就是在你的伺服器上讓其在開機時自動啟動。在基於Debian的發行版中,fail2ban已經默認讓自動啟動生效。在基於Red-Hat的發行版中,按照下面的方式讓自動啟動生效。
在 CentOS/RHEL 6中:
$ sudo chkconfig fail2ban on
在 Fedora 或 CentOS/RHEL 7:
$ sudo systemctl enable fail2ban
❷ securecrt怎麼過濾日誌
方法/步驟第一步,點擊桌面上的SecureCRT圖標第二步,打開後,進入SecureCRT主界面第三步,點擊菜單欄上的選項第四步,繼續點擊下拉中的全局選項第五步,進入全局選項的界面,點擊高級第六步,注意圖示的窗口透明度選項第七步,將不透明的方塊向左移動第八步,窗口成功設置為半透明
❸ 如何使用 DenyHosts 來阻止 SSH暴力攻擊
Denyhosts是一個Linux系統下阻止暴力破解SSH密碼的軟體,它的原理與DDoS Deflate類似,可以自動拒絕過多次數嘗試SSH登錄的IP地址,防止互聯網上某些機器常年破解密碼的行為,也可以防止黑客對SSH密碼進行窮舉。
眾所周知,暴露在互聯網上的計算機是非常危險的。並不要因為網站小,關注的人少或不惹眼就掉以輕心:互聯網中的大多數攻擊都是沒有目的性的,黑客們通過大范圍IP埠掃描探測到可能存在漏洞的主機,然後通過自動掃描工具進行窮舉破解。筆者的某台伺服器在修改SSH 22號埠之前,平均每天接受近百個來自不同IP的連接嘗試。而DenyHosts正是這樣一款工具。下文將對該工具的安裝與使用方法進行介紹。
DenyHosts阻止攻擊原理
DenyHosts會自動分析 /var/log/secure 等安全日誌文件,當發現異常的連接請求後,會自動將其IP加入到 /etc/hosts.deny 文件中,從而達到阻止此IP繼續暴力破解的可能。同時,Denyhosts還能自動在一定時間後對已經屏蔽的IP地址進行解封,非常智能。
官方網站
Denyhosts的官方網站為:http://denyhosts.sourceforge.net/ (杜絕Putty後門事件,謹記安全軟體官網)
安裝方法
1、下載DenyHosts源碼並解壓(目前最新版為2.6)
1 [root@www ~]# wget http://sourceforge.net/projects/denyhosts/files/denyhosts/2.6/DenyHosts-2.6.tar.gz
2 [root@www ~]# tar zxvf DenyHosts-2.6.tar.gz
3 [root@www ~]# cd DenyHosts-2.6
2、安裝部署
1 [root@www DenyHosts-2.6]# yum install python -y
2 [root@www DenyHosts-2.6]# python setup.py install
3、准備好默認的配置文件
1 [root@www DenyHosts-2.6]# cd /usr/share/denyhosts/
2 [root@www denyhosts]# cp denyhosts.cfg-dist denyhosts.cfg
3 [root@www denyhosts]# cp daemon-control-dist daemon-control
4、編輯配置文件denyhosts.cfg
1 [root@www denyhosts]# vi denyhosts.cfg
該配置文件結構比較簡單,簡要說明主要參數如下:
PURGE_DENY:當一個IP被阻止以後,過多長時間被自動解禁。可選如3m(三分鍾)、5h(5小時)、2d(兩天)、8w(8周)、1y(一年);
PURGE_THRESHOLD:定義了某一IP最多被解封多少次。即某一IP由於暴力破解SSH密碼被阻止/解封達到了PURGE_THRESHOLD次,則會被永久禁止;
BLOCK_SERVICE:需要阻止的服務名;
DENY_THRESHOLD_INVALID:某一無效用戶名(不存在的用戶)嘗試多少次登錄後被阻止;
DENY_THRESHOLD_VALID:某一有效用戶名嘗試多少次登陸後被阻止(比如賬號正確但密碼錯誤),root除外;
DENY_THRESHOLD_ROOT:root用戶嘗試登錄多少次後被阻止;
HOSTNAME_LOOKUP:是否嘗試解析源IP的域名;
大家可以根據上面的解釋,瀏覽一遍此配置文件,然後根據自己的需要稍微修改即可。
5、啟動Denyhosts
1 [root@www denyhosts]# ./daemon-control start
如果需要讓DenyHosts每次重啟後自動啟動,還需要:
6、設置自動啟動
設置自動啟動可以通過兩種方法進行。
第一種是將DenyHosts作為類似apache、mysql一樣的服務,這種方法可以通過 /etc/init.d/denyhosts 命令來控制其狀態。方法如下:
1 [root@www denyhosts]# cd /etc/init.d
2 [root@www init.d]# ln -s /usr/share/denyhosts/daemon-control denyhosts
3 [root@www init.d]# chkconfig --add denyhosts
4 [root@www init.d]# chkconfig -level 2345 denyhosts on
第二種是將Denyhosts直接加入rc.local中自動啟動(類似於Windows中的「啟動文件夾」):
1 [root@www denyhosts]# echo '/usr/share/denyhosts/daemon-control start' >> /etc/rc.local
如果想查看已經被阻止的IP,打開/etc/hosts.deny 文件即可。
❹ 幫忙分析/var/log/secure日誌,是否被攻擊
發布:獨自等待
上天查看了伺服器安全日誌,防火牆屏蔽了處理了一些暴力破解ssh密碼的ip(其中一個ip地址為北京一家有名的CDN服務提供商),然後刪除了所有的/var/log/secure* 日誌文件。
今天再來查看日誌的時候,發現/var/log/secure竟然沒有記錄,才想到直接刪除日誌文件的時候,對應的服務需要重啟。運行命令:service syslog restart ;service sshd restart 後正常。
順便復習下ssh在syslog中的設置的知識。
1、/etc/ssh/sshd_config 中的設置:(即:SyslogFacility 設為AUTHPRIV)
[root@mail ~]# more /etc/ssh/sshd_config
#Port 22
# Logging
# obsoletes QuietMode and FascistLogging
#SyslogFacility AUTH
<strong>SyslogFacility AUTHPRIV</strong>
#LogLevel INFO
#就是把sshd的日誌定義在authriv.info級別。
2、配合/etc/syslog.conf中的設置:
[root@mail ~]# more /etc/syslog.conf
# Log all kernel messages to the console.
# Logging much else clutters up the screen.
#kern.* /dev/console
# Log anything (except mail) of level info or higher.
# Dont log private authentication messages!
*.info;mail.none;authpriv.none;cron.none /var/log/messages
# The authpriv file has restricted access.
<strong>authpriv.* /var/log/secur</strong>e