fail2ban防止暴力破解

功能:linux

fail2ban是linux下一款安全工具。經過監視系統日誌,匹配日誌的錯誤信息(正則式匹配),而後執行相應的屏蔽動做(通常狀況下是調用防火牆屏蔽)。如:當有人在試探你的SSH、SMTP、FTP密碼,只要達到你預設的次數,fail2ban就會調用防火牆屏蔽這個IP,並且能夠發送e-mail通知系統管理員,是一款很實用、很強大的軟件!vim


安裝fail2ban:安全

yum install epel-release -y
yum install fail2ban -y

備份配置文件:bash

cp /etc/fail2ban/fail2ban.conf /etc/fail2ban/fail2ban.local

編輯配置文件:ssh

相關主要文件說明:socket

/etc/fail2ban/action.d        #動做文件夾,內含默認文件。iptables以及mail等動做配置ide


/etc/fail2ban/action.d        #動做文件夾,內含默認文件。iptables以及mail等動做配置模塊化

vim /etc/fail2ban/jail.conf
loglevel = 3     #默認日誌的級別
logtarget = /var/log/fail2ban.log     #日誌的目的
socket = /tmp/fail2ban.sock     #socket的位置

/etc/fail2ban/filter.d         #條件文件夾,內含默認文件。過濾日誌關鍵內容設置工具

/etc/fail2ban/paths-*.conf    #定義一些系統文件路徑,像日誌路徑編碼

#/etc/fail2ban/jail.conf   #主要配置文件,模塊化。主要設置啓用ban動做的服務及動做閥值

# jail   [del]  監獄

vim /etc/fail2ban/jail.conf
ignoreip = 127.0.0.1       #忽略IP,在這個清單裏的IP不會被屏蔽
bantime = 600      #屏蔽時間,該bantime將被[ssh-iptables]中bantime覆蓋;
findtime = 600      #發現時間,在此期間內重試超過規定次數,會激活fail2ban
maxretry = 3      #默認嘗試次數
backend = auto      #日誌修改檢測機制

啓用sshd服務的日誌分析,指定動做閥值便可。實例文件/etc/fail2ban/jail.conf及說明以下:

[DEFAULT]               #全局設置
ignoreip = 127.0.0.1/8       #忽略的IP列表,不受設置限制(多個ip或ip段用空格隔開)
bantime  = 3600             #屏蔽時間,單位:秒
findtime  = 300             #這個時間段內超過規定次數會被ban掉
maxretry = 3                #最大嘗試次數
usedns = warn         #指定當日誌中遇到主機名時候是否反向解析,warn進行解析,但會記錄爲warning
logencoding = auto      #指定日誌文件的編碼,auto就是使用系統本地的編碼
enabled = false        #全局開關
backend = auto            #日誌修改檢測機制("pyinotify", "gamin", "polling", "systemd" 和"auto"這幾種)

destemail = xflm_xx@163.com  #郵件接收人
sender = fail2ban@localhost  #郵件發送人
mta = mail
        
[sshd]  #單個服務檢查設置,如設置bantime、findtime、maxretry和全局衝突,服務優先級大於全局設置
enabled = true    #是否激活此項(true/false)
port    = ssh     #端口爲ssh
logpath = %(sshd_log)s  #安全日誌路徑
backend = %(sshd_backend)s     #日誌修改檢測機制
action = %(action_mwl)s      #檢測到非法登陸,進行的動做



配置Fail2ban

Fail2ban服務的配置文件在/etc/fail2ban目錄。在其中能夠找到jail.conf配置文件,我不會直接編輯這個文件,由於在升級軟件包時,會覆蓋這個文件,使配置失效。咱們應該建立一個新文件jail.local,在jail.local定義的值會覆蓋jail.conf中的值。


咱們來建立一個jail.local文件:

vim /etc/fail2ban/jail.local
寫入以下代碼:
[DEFAULT]
ignoreip = 127.0.0.1/8, 123.58.249.0/24
bantime  = 3600
findtime  = 300
maxretry = 3

#destemail = xxxxxxx@xxx.com

# 覆寫 /etc/fail2ban/jail.d/00-firewalld.conf:
banaction = iptables-multiport

[sshd]
enabled = true
action = %(action_mwl)s

[sshd-ddos]
enabled = true


完成配置後,啓動fail2ban

systemctl start fail2ban && systemctl enable fail2ban

查詢fail2ban服務狀態

fail2ban-client status

# jail   [del]  監獄

/etc/fail2ban/paths-*.conf    #定義一些系統文件路徑,像日誌路徑


實用命令


最近一次啓動,fail2ban日誌:

journalctl -b -u fail2ban


實時跟蹤顯示fail2ban日誌:

tail -f /var/log/fail2ban.log


顯示防火牆規則:

iptables –L –n

移除禁止的ip

iptables -D f2b-sshd 1
相關文章
相關標籤/搜索