1.2、如何在 Linux 上使用 Fail2Ban 保護(hù)服務(wù)器免受暴力攻擊

Linux 管理員的一個(gè)重要任務(wù)是保護(hù)服務(wù)器免受非法攻擊或訪問柱彻。 默認(rèn)情況下豪娜,Linux 系統(tǒng)帶有配置良好的防火墻,比如iptables哟楷、Uncomplicated Firewall(UFW)瘤载,ConfigServer Security Firewall(CSF)等,可以防止多種攻擊卖擅。

任何連接到互聯(lián)網(wǎng)的機(jī)器都是惡意攻擊的潛在目標(biāo)鸣奔。 有一個(gè)名為 Fail2Ban 的工具可用來緩解服務(wù)器上的非法訪問墨技。

1、什么是 Fail2Ban 挎狸?

Fail2Ban 是一款入侵防御軟件扣汪,可以保護(hù)服務(wù)器免受暴力攻擊。 它是用 Python 編程語言編寫的锨匆。 Fail2Ban 基于auth 日志文件工作崭别,默認(rèn)情況下它會(huì)掃描所有 auth 日志文件,如 /var/log/auth.log恐锣、/var/log/apache/access.log 等茅主,并禁止帶有惡意標(biāo)志的IP,比如密碼失敗太多土榴,尋找漏洞等等標(biāo)志诀姚。

通常,F(xiàn)ail2Ban 用于更新防火墻規(guī)則玷禽,用于在觸發(fā)安全策略條件的情況下與在指定的時(shí)間內(nèi)拒絕 IP 地址赫段。 它也會(huì)發(fā)送郵件通知。 Fail2Ban 為各種服務(wù)提供了許多過濾器论衍,如 ssh瑞佩、apache、nginx坯台、squid炬丸、named、mysql蜒蕾、nagios 等稠炬。

Fail2Ban 能夠降低錯(cuò)誤認(rèn)證嘗試的速度,但是它不能消除弱認(rèn)證帶來的風(fēng)險(xiǎn)咪啡。 這只是服務(wù)器防止暴力攻擊的安全手段之一首启。

2、如何在 Linux 上安裝 Fail2Ban

Fail2Ban 已經(jīng)與大部分 Linux 發(fā)行版打包在一起了撤摸,所以只需使用你的發(fā)行包版的包管理器來安裝它毅桃。

對(duì)于 Debian / Ubuntu,使用 APT-GET 命令或 APT 命令安裝准夷。

sudo apt install fail2ban

對(duì)于 Fedora钥飞,使用 DNF 命令安裝。

sudo dnf install fail2ban

對(duì)于 CentOS/RHEL衫嵌,啟用 EPEL 庫RPMForge 庫读宙,使用 YUM 命令安裝。
對(duì)于 Arch Linux楔绞,使用 Pacman 命令安裝结闸。

sudo pacman -S fail2ban

對(duì)于 openSUSE , 使用 Zypper命令安裝唇兑。

sudo zypper in fail2ban

3、如何配置 Fail2Ban 桦锄?

默認(rèn)情況下扎附,F(xiàn)ail2Ban 將所有配置文件保存在 /etc/fail2ban/ 目錄中。 主配置文件是 jail.conf察纯,它包含一組預(yù)定義的過濾器帕棉。 所以针肥,不要編輯該文件饼记,這是不可取的,因?yàn)橹灰行碌母挛空恚渲镁蜁?huì)重置為默認(rèn)值具则。

只需在同一目錄下創(chuàng)建一個(gè)名為 jail.local 的新配置文件,并根據(jù)您的意愿進(jìn)行修改具帮。

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

此時(shí)在使用 CenotOS 7.x 操作時(shí)出現(xiàn)一些錯(cuò)誤博肋,比如當(dāng)你啟動(dòng)后你會(huì)看到加載不到 httpd 服務(wù)的 error 日志等錯(cuò)誤。你可以將 jail.local 中沒有必要的配置給刪除蜂厅,因?yàn)槲募信渲昧艘恍┪覀儾恍枰姆?wù)》朔玻現(xiàn)在我們只以 sshd 服務(wù)舉例所以只需要保留 [DEFAUL]部分和 sshd 服務(wù)部分。再次重啟還會(huì)發(fā)現(xiàn)在 /var/log/message 日志文件中出現(xiàn) Jul 14 10:32:37 root84 systemd: start request repeated too quickly for fail2ban.service 錯(cuò)誤掘猿〔∮危可以使用以下命令進(jìn)行排查問題,在啟動(dòng) fail2ban 時(shí)打印出詳細(xì)日志信息:

[root@root84 fail2ban]# /usr/bin/fail2ban-client -v -v start

從輸出的信息中你可以看到他依然在加載 /etc/fail2ban/jail.conf 配置文件中的內(nèi)容并使用配置項(xiàng)稠通,最后所發(fā)生的 ERROR 依然是表示加載不到 httpd 服務(wù)的 error 日志文件衬衬。所以我們將 /etc/fail2ban/jail.conf 備份并刪除,只使用 /etc/fail2ban/jail.local 中的配置改橘。注意:這里所描述的錯(cuò)誤是因?yàn)槲以?/etc/fail2ban/jail.local 文件中將 [DEFAUL] 部分中的 enable 設(shè)置為 true 狀態(tài)滋尉,開啟了所有服務(wù)的 jail,在配置文件中的此配置項(xiàng)附近有描述信息:

[DEFAUL]
...
# "enabled" enables the jails.
#  By default all jails are disabled, and it should stay this way.
#  Enable only relevant to your setup jails in your .local or jail.d/*.conf
#
# true:  jail will be enabled and log files will get monitored for changes
# false: jail is not enabled
enabled = false
...

默認(rèn)情況下,大多數(shù)選項(xiàng)都已經(jīng)配置的很完美了飞主,如果要啟用對(duì)任何特定 IP 的訪問狮惜,則可以將 IP 地址添加到 ignoreip 區(qū)域,對(duì)于多個(gè) IP 的情況碌识,用空格隔開 IP 地址碾篡。

配置文件中的 DEFAULT 部分包含 Fail2Ban 遵循的基本規(guī)則集,您可以根據(jù)自己的意愿調(diào)整任何參數(shù)丸冕。

# nano /etc/fail2ban/jail.local
[DEFAULT]
ignoreip = 127.0.0.1/8 192.168.1.100/24
bantime = 600
findtime = 600
maxretry = 3
destemail = 2daygeek@gmail.com
  • ignoreip:本部分允許我們列出 IP 地址列表耽梅,F(xiàn)ail2Ban 不會(huì)禁止與列表中的地址匹配的主機(jī)
  • bantime:主機(jī)被禁止的秒數(shù)
  • findtime:如果在最近 findtime 秒期間已經(jīng)發(fā)生了 maxretry 次重試,則主機(jī)會(huì)被禁止
  • maxretry:是主機(jī)被禁止之前的失敗次數(shù)

4胖烛、如何配置服務(wù)眼姐?

Fail2Ban 帶有一組預(yù)定義的過濾器诅迷,用于各種服務(wù),如 ssh众旗、apache罢杉、nginx、squid贡歧、named滩租、mysql、nagios 等利朵。 我們不希望對(duì)配置文件進(jìn)行任何更改律想,只需在服務(wù)區(qū)域中添加 enabled = true 這一行就可以啟用任何服務(wù)。 禁用服務(wù)時(shí)將 true 改為 false 即可绍弟。

# SSH servers
[sshd]
enabled = true
port = ssh
logpath = %(sshd_log)s
backend = %(sshd_backend)s
  • enabled: 確定服務(wù)是打開還是關(guān)閉技即。
  • port:指明特定的服務(wù)。 如果使用默認(rèn)端口樟遣,則服務(wù)名稱可以放在這里而叼。 如果使用非傳統(tǒng)端口,則應(yīng)該是端口號(hào)豹悬。
  • logpath:提供服務(wù)日志的位置
  • backend:指定用于獲取文件修改的后端葵陵。

5、重啟 Fail2Ban

[For SysVinit Systems]
# service fail2ban restart
[For systemd Systems]
# systemctl restart fail2ban.service

6瞻佛、驗(yàn)證 Fail2Ban iptables 規(guī)則

你可以使用下面的命令來確認(rèn)是否在防火墻中成功添加了Fail2Ban iptables 規(guī)則脱篙。

# iptables -L
Chain INPUT (policy ACCEPT)
target prot opt source destination
f2b-apache-auth tcp -- anywhere anywhere multiport dports http,https
f2b-sshd tcp -- anywhere anywhere multiport dports 1234
ACCEPT tcp -- anywhere anywhere tcp dpt:1234
Chain FORWARD (policy ACCEPT)
target prot opt source destination
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
Chain f2b-apache-auth (1 references)
target prot opt source destination
RETURN all -- anywhere anywhere
Chain f2b-sshd (1 references)
target prot opt source destination
RETURN all -- anywhere anywhere

CentOS 7.X

[root@root84 fail2ban]# iptables -L
Chain INPUT (policy ACCEPT)
target     prot opt source               destination         
f2b-sshd-ddos  tcp  --  anywhere             anywhere             multiport dports ssh
f2b-sshd   tcp  --  anywhere             anywhere             multiport dports ssh
ACCEPT     all  --  anywhere             anywhere             ctstate RELATED,ESTABLISHED
ACCEPT     all  --  anywhere             anywhere            
INPUT_direct  all  --  anywhere             anywhere            
INPUT_ZONES_SOURCE  all  --  anywhere             anywhere            
INPUT_ZONES  all  --  anywhere             anywhere            
DROP       all  --  anywhere             anywhere             ctstate INVALID
REJECT     all  --  anywhere             anywhere             reject-with icmp-host-prohibited

7、如何測試 Fail2Ban 涤久?

使用 sshd 為例:使用一臺(tái)服務(wù)器(表示為A)鏈接設(shè)置好并開啟 Fail2Ban 的服務(wù)器(表示為B)涡尘,在多次鏈接失敗之后 B服務(wù)器 的 Fail2Ban 將動(dòng)態(tài)更改防火墻規(guī)則禁止 A服務(wù)器 訪問。

Last login: Sun Jul 14 22:17:16 on ttys001
jinxiaozhang@YDdeMacBook-Pro:~$ ssh root@192.168.0.84
root@192.168.0.84's password: 
Permission denied, please try again.
root@192.168.0.84's password: 
asdfPermission denied, please try again.
root@192.168.0.84's password: 
root@192.168.0.84: Permission denied (publickey,gssapi-keyex,gssapi-with-mic,password).
jinxiaozhang@YDdeMacBook-Pro:~$ ssh root@192.168.0.84
root@192.168.0.84's password: 
Permission denied, please try again.
root@192.168.0.84's password: 


asdf
^C
jinxiaozhang@YDdeMacBook-Pro:~$ 
jinxiaozhang@YDdeMacBook-Pro:~$ telnet 192.168.0.84 22
Trying 192.168.0.84...
telnet: connect to address 192.168.0.84: Connection refused
telnet: Unable to connect to remote host
jinxiaozhang@YDdeMacBook-Pro:~$

查看 Fail2Ban 的日志

2019-07-14 10:55:12,096 fail2ban.filter         [3835]: INFO    [sshd] Found 192.168.0.212
2019-07-14 10:55:13,998 fail2ban.filter         [3835]: INFO    [sshd] Found 192.168.0.212
2019-07-14 10:55:17,802 fail2ban.filter         [3835]: INFO    [sshd] Found 192.168.0.212
2019-07-14 10:55:22,652 fail2ban.filter         [3835]: INFO    [sshd] Found 192.168.0.212
2019-07-14 10:55:24,926 fail2ban.filter         [3835]: INFO    [sshd] Found 192.168.0.212
2019-07-14 10:55:25,150 fail2ban.actions        [3835]: NOTICE  [sshd] Ban 192.168.0.212

當(dāng)經(jīng)過我們?cè)O(shè)置的 bantime 配置項(xiàng)的秒數(shù)之后將開啟 B服務(wù)器對(duì) A服務(wù)器 ssh 的訪問响迂。

8考抄、Fail2Ban 的一些使用操作

查看啟用的監(jiān)獄列表,請(qǐng)運(yùn)行以下命令蔗彤。

fail2ban-client status

通過運(yùn)行以下命令來獲取禁止的 IP 地址川梅。

fail2ban-client status ssh

要從 Fail2Ban 中刪除禁止的 IP 地址,請(qǐng)運(yùn)行以下命令然遏。

fail2ban-client set ssh unbanip 192.168.0.254

摘抄于 linux.cn 并使用 CentOS 7.X 通過實(shí)際測試贫途,添加其他內(nèi)容。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末待侵,一起剝皮案震驚了整個(gè)濱河市丢早,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖怨酝,帶你破解...
    沈念sama閱讀 217,084評(píng)論 6 503
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件傀缩,死亡現(xiàn)場離奇詭異,居然都是意外死亡农猬,警方通過查閱死者的電腦和手機(jī)赡艰,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,623評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來斤葱,“玉大人慷垮,你說我怎么就攤上這事∽岫椋” “怎么了料身?”我有些...
    開封第一講書人閱讀 163,450評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵瘩蚪,是天一觀的道長。 經(jīng)常有香客問我证逻,道長族扰,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,322評(píng)論 1 293
  • 正文 為了忘掉前任千所,我火速辦了婚禮,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘抖部。我一直安慰自己,他們只是感情好议惰,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,370評(píng)論 6 390
  • 文/花漫 我一把揭開白布慎颗。 她就那樣靜靜地躺著,像睡著了一般言询。 火紅的嫁衣襯著肌膚如雪俯萎。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,274評(píng)論 1 300
  • 那天运杭,我揣著相機(jī)與錄音夫啊,去河邊找鬼。 笑死辆憔,一個(gè)胖子當(dāng)著我的面吹牛撇眯,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播虱咧,決...
    沈念sama閱讀 40,126評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼熊榛,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了腕巡?” 一聲冷哼從身側(cè)響起玄坦,我...
    開封第一講書人閱讀 38,980評(píng)論 0 275
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎绘沉,沒想到半個(gè)月后煎楣,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體云挟,經(jīng)...
    沈念sama閱讀 45,414評(píng)論 1 313
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,599評(píng)論 3 334
  • 正文 我和宋清朗相戀三年转质,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了园欣。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,773評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡休蟹,死狀恐怖沸枯,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情赂弓,我是刑警寧澤绑榴,帶...
    沈念sama閱讀 35,470評(píng)論 5 344
  • 正文 年R本政府宣布,位于F島的核電站盈魁,受9級(jí)特大地震影響翔怎,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜杨耙,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,080評(píng)論 3 327
  • 文/蒙蒙 一赤套、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧珊膜,春花似錦容握、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,713評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至竹祷,卻和暖如春谈跛,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背塑陵。 一陣腳步聲響...
    開封第一講書人閱讀 32,852評(píng)論 1 269
  • 我被黑心中介騙來泰國打工感憾, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人猿妈。 一個(gè)月前我還...
    沈念sama閱讀 47,865評(píng)論 2 370
  • 正文 我出身青樓吹菱,卻偏偏與公主長得像,于是被迫代替她去往敵國和親彭则。 傳聞我的和親對(duì)象是個(gè)殘疾皇子鳍刷,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,689評(píng)論 2 354