CentOS 7安裝fail2ban+Firewalld防止SSH爆破與CC攻擊
CentOS 7安裝fail2ban+Firewalld防止SSH爆破與CC攻擊說明:差不多很多博主都會遇到被CC攻擊和SSH爆破的情況,這個時(shí)候就需要做下防御措施了,這里針對CentOS 7再分享個簡單防CC攻擊和SSH爆破的方法。 前言 fail2ban可以監(jiān)視你的系統(tǒng)日志,
CentOS 7安裝fail2ban+Firewalld防止SSH爆破與CC攻擊說明:差不多很多博主都會遇到被CC攻擊和SSH爆破的情況,這個時(shí)候就需要做下防御措施了,這里針對CentOS 7再分享個簡單防CC攻擊和SSH爆破的方法。 前言 fail2ban可以監(jiān)視你的系統(tǒng)日志,
說明:差不多很多博主都會遇到被CC
攻擊和SSH
爆破的情況,這個時(shí)候就需要做下防御措施了,這里針對CentOS 7
再分享個簡單防CC
攻擊和SSH
爆破的方法。
fail2ban
可以監(jiān)視你的系統(tǒng)日志,然后匹配日志的錯誤信息執(zhí)行相應(yīng)的屏蔽動作。網(wǎng)上大部分教程都是關(guān)于fail2ban
+iptables
組合,考慮到CentOS 7
已經(jīng)自帶Firewalld
,所以這里我們也可以利用fail2ban
+Firewalld
來防CC
攻擊和SSH
爆破。
本教程編輯文件使用vi
命令,如果不會用的,可以使用比較簡單的nano
,或者編輯好使用FTP
工具,如WinSCP
登錄VPS
操作。
1、檢查Firewalld是否啟用
#如果您已經(jīng)安裝iptables建議先關(guān)閉
service iptables stop
#查看Firewalld狀態(tài)
firewall-cmd --state
#啟動firewalld
systemctl start firewalld
#設(shè)置開機(jī)啟動
systemctl enable firewalld.service
啟用Firewalld
后會禁止所有端口連接,因此請務(wù)必放行常用的端口,以免被阻擋在外,以下是放行SSH
端口(22
)示例,供參考:
#放行22端口
firewall-cmd --zone=public --add-port=80/tcp --permanent
#重載配置
firewall-cmd --reload
#查看已放行端口
firewall-cmd --zone=public --list-ports
2、安裝fail2ban
fail2ban
可以監(jiān)控系統(tǒng)日志,并且根據(jù)一定規(guī)則匹配異常IP
后使用Firewalld
將其屏蔽,尤其是針對一些爆破/掃描等非常有效。
#CentOS內(nèi)置源并未包含fail2ban,需要先安裝epel源
yum -y install epel-release
#安裝fial2ban
yum -y install fail2ban
安裝成功后fail2ban
配置文件位于/etc/fail2ban
,其中jail.conf
為主配置文件,相關(guān)的匹配規(guī)則位于filter.d
目錄,其它目錄/文件一般很少用到,如果需要詳細(xì)了解可自行搜索。
3、配置規(guī)則
新建jail.local
來覆蓋fail2ban
的一些默認(rèn)規(guī)則:
#新建配置
vi /etc/fail2ban/jail.local
#默認(rèn)配置
[DEFAULT]
ignoreip = 127.0.0.1/8
bantime = 86400
findtime = 600
maxretry = 5
#這里banaction必須用firewallcmd-ipset,這是fiewalll支持的關(guān)鍵,如果是用Iptables請不要這樣填寫
banaction = firewallcmd-ipset
action = %(action_mwl)s
參數(shù)說明:
ignoreip:IP白名單,白名單中的IP不會屏蔽,可填寫多個以(,)分隔
bantime:屏蔽時(shí)間,單位為秒(s)
findtime:時(shí)間范圍
maxretry:最大次數(shù)
banaction:屏蔽IP所使用的方法,上面使用firewalld屏蔽端口
如果您還在使用默認(rèn)SSH
端口(22
),可能每天都會被掃描,我們可以修改端口盡量避免被掃。直接輸入命令:vi /etc/ssh/sshd_config
編輯配置文件,然找到#Port22
這一行,將#
號去掉,并將22
修改為您想設(shè)置的其它端口號,最后保存退出,CentOS7最后再輸入命令systemctl restart sshd.service
重啟sshd
即可。當(dāng)然你也可以使用fail2ban
將惡意IP
屏蔽。
繼續(xù)修改jail.local
這個配置文件,在后面追加如下內(nèi)容:
[sshd]
enabled = true
filter = sshd
port = 22
action = %(action_mwl)s
logpath = /var/log/secure
參數(shù)說明:
[sshd]:名稱,可以隨便填寫
filter:規(guī)則名稱,必須填寫位于filter.d目錄里面的規(guī)則,sshd是fail2ban內(nèi)置規(guī)則
port:對應(yīng)的端口
action:采取的行動
logpath:需要監(jiān)視的日志路徑
到這一步,我們jail.local
的規(guī)則看起來可能像下面這樣子:
[DEFAULT]
ignoreip = 127.0.0.1/8
bantime = 86400
findtime = 600
maxretry = 5
banaction = firewallcmd-ipset
action = %(action_mwl)s
[sshd]
enabled = true
filter = sshd
port = 22
action = %(action_mwl)s
logpath = /var/log/secure
上面的配置意思是如果同一個IP
,在10
分鐘內(nèi),如果連續(xù)超過5
次錯誤,則使用Firewalld
將他IP ban
了。輸入systemctl start fail2ban
啟動fail2ban
來試試效果。
使用另一臺服務(wù)器不斷嘗試連接SSH
,并且不斷的將密碼輸入錯誤,你會發(fā)現(xiàn)連續(xù)超過5
次后直接連不上,說明IP
被ban
了,可以輸入:fail2ban-client status sshd
查看被ban
的IP
,如下截圖。
這里僅以Nginx
為例,使用fail2ban
來監(jiān)視nginx
日志,匹配短時(shí)間內(nèi)頻繁請求的IP
,并使用firewalld
將其IP
屏蔽,達(dá)到CC
防護(hù)的作用。
#需要先新建一個nginx日志匹配規(guī)則
vi /etc/fail2ban/filter.d/nginx-cc.conf
#填寫如下內(nèi)容
[Definition]
failregex = <HOST> -.*- .*HTTP/1.* .* .*$
ignoreregex =
繼續(xù)修改jail.local
追加如下內(nèi)容:
[nginx-cc]
enabled = true
port = http,https
filter = nginx-cc
action = %(action_mwl)s
maxretry = 20
findtime = 60
bantime = 3600
logpath = /usr/local/nginx/logs/access.log
上面的配置意思是如果在60s
內(nèi),同一IP
達(dá)到20
次請求,則將其IP ban 1
小時(shí),上面只是為了測試,請根據(jù)自己的實(shí)際情況修改。logpath
為nginx
日志路徑。
如果您經(jīng)常分析日志會發(fā)現(xiàn)有大量機(jī)器人在掃描wordpress
登錄頁面wp-login.php
,雖然對方可能沒成功,但是為了避免萬一還是將他IP
干掉為好。
#需要先新建一個nginx日志匹配規(guī)則
vi /etc/fail2ban/filter.d/wordpress.conf
#填寫如下內(nèi)容
[Definition]
failregex = ^ -.* /wp-login.php.* HTTP/1.."
ignoreregex =
繼續(xù)修改jail.local
追加如下內(nèi)容:
[wordpress]
enabled = true
port = http,https
filter = wordpress
action = %(action_mwl)s
maxretry = 20
findtime = 60
bantime = 3600
logpath = /usr/local/nginx/logs/access.log
當(dāng)然,別忘記輸入systemctl restart fail2ban
重啟fail2ban
使其生效。
#啟動
systemctl start fail2ban
#停止
systemctl stop fail2ban
#開機(jī)啟動
systemctl enable fail2ban
#查看被ban IP,其中sshd為名稱,比如上面的[wordpress]
fail2ban-client status sshd
#刪除被ban IP
fail2ban-client set sshd delignoreip 192.168.111.111
#查看日志
tail /var/log/fail2ban.log
fail2ban
已經(jīng)內(nèi)置很多匹配規(guī)則,位于filter.d
目錄下,包含了常見的SSH/FTP/Nginx/Apache
等日志匹配,如果都還無法滿足您的需求,您也可以自行新建規(guī)則來匹配異常IP
。使用fail2ban
+Firewalld
來阻止惡意IP
是行之有效的辦法,可極大提高服務(wù)器安全。
版權(quán)所有:深圳市網(wǎng)商在線科技有限公司