Linux 如何使用 fail2ban 防止 SSH 暴力破解
如果你堅(jiān)持使用帶密碼的 SSH 登錄, 業(yè)內(nèi)公認(rèn)的, 防止SSH爆破的最有效且成本最低的方法是利用Fail2ban. 不需要加之一, 而且, 幾乎沒有副作用.
Fail2ban還能結(jié)合 wordpress 防止暴力登錄, 今天只說最小可用方式, 也是最實(shí)用的方式, 在你使用 ssh 賬戶和密碼登錄的情況下, 如何防止別人暴力破解.
Centos 下安裝 faile2ban
yum -y install epel-release
yum -y install fail2ban
配置 Fail2Ban
編輯其配置文件 /etc/fail2ban/jail.conf。在配置文件的“[DEFAULT]”區(qū),你可以在此定義所有受監(jiān)控的服務(wù)的默認(rèn)參數(shù),另外在特定服務(wù)的配置部分,你可以為每個(gè)服務(wù)(例如SSH,Apache等)設(shè)置特定的配置來覆蓋默認(rèn)的參數(shù)配置。
在針對(duì)服務(wù)的監(jiān)獄區(qū)(在[DEFAULT]區(qū)后面的地方),你需要定義一個(gè)[ssh-iptables]區(qū),這里用來定義SSH相關(guān)的監(jiān)獄配置。真正的禁止IP地址的操作是通過iptables完成的。
下面是一個(gè)包含“ssh-iptables”監(jiān)獄配置的/etc/fail2ban/jail.conf的文件樣例。當(dāng)然根據(jù)你的需要,你也可以指定其他的應(yīng)用監(jiān)獄
[DEFAULT] #全局設(shè)置
ignoreip = 127.0.0.1/8 #忽略的IP列表,不受設(shè)置限制
bantime = 600 #屏蔽時(shí)間,單位:秒
findtime = 600 #這個(gè)時(shí)間段內(nèi)超過規(guī)定次數(shù)會(huì)被ban掉
maxretry = 3 #最大嘗試次數(shù)
backend = auto #日志修改檢測(cè)機(jī)制(gamin、polling和auto這三種)
[ssh-iptables] #單個(gè)服務(wù)檢查設(shè)置,如設(shè)置bantime、findtime、maxretry和全局沖突,服務(wù)優(yōu)先級(jí)大于全局設(shè)置。
enabled = true #是否激活此項(xiàng)(true/false)修改成 true
filter = sshd #過濾規(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訪問主機(jī)1小時(shí)。配置如下
bantime = 3600 #禁止用戶IP訪問主機(jī)1小時(shí)
findtime = 300 #在5分鐘內(nèi)內(nèi)出現(xiàn)規(guī)定次數(shù)就開始工作
maxretry = 3 #3次密碼驗(yàn)證失敗

重啟Fail2Ban
systemctl restart fail2ban
測(cè)試
密碼輸入錯(cuò)誤三次之后ssh服務(wù)斷開

查看防火墻規(guī)則,我們的IP已經(jīng)被禁止端口訪問
