Skip to content
WONGCW 網誌
  • 首頁
  • 論壇
  • 微博
  • 壁紙下載
  • 免費圖床
  • 視頻下載
  • 聊天室
  • SEO工具
  • 支援中心
  • 表格製作
  • More
    • 在線名片
    • 網頁搜索
    • 天氣預報
    • 二維碼生成器
  • Search Icon

WONGCW 網誌

記錄生活經驗與點滴

如何在 Linux 上用 Fail2Ban 保护服务器免受暴力攻击

如何在 Linux 上用 Fail2Ban 保护服务器免受暴力攻击

2018-10-19 Comments 0 Comment

Linux 管理员的一个重要任务是保护服务器免受非法攻击或访问。 默认情况下,Linux 系统带有配置良好的防火墙,比如iptables、Uncomplicated Firewall(UFW),ConfigServer Security Firewall(CSF)等,可以防止多种攻击。

任何连接到互联网的机器都是恶意攻击的潜在目标。 有一个名为 Fail2Ban 的工具可用来缓解服务器上的非法访问。

什么是 Fail2Ban?

Fail2Ban 是一款入侵防御软件,可以保护服务器免受暴力攻击。 它是用 Python 编程语言编写的。 Fail2Ban 基于auth 日志文件工作,默认情况下它会扫描所有 auth 日志文件,如 /var/log/auth.log、/var/log/apache/access.log 等,并禁止带有恶意标志的IP,比如密码失败太多,寻找漏洞等等标志。

通常,Fail2Ban 用于更新防火墙规则,用于在指定的时间内拒绝 IP 地址。 它也会发送邮件通知。 Fail2Ban 为各种服务提供了许多过滤器,如 ssh、apache、nginx、squid、named、mysql、nagios 等。

Fail2Ban 能够降低错误认证尝试的速度,但是它不能消除弱认证带来的风险。 这只是服务器防止暴力攻击的安全手段之一。

如何在 Linux 中安装 Fail2Ban

Fail2Ban 已经与大部分 Linux 发行版打包在一起了,所以只需使用你的发行包版的包管理器来安装它。

对于 Debian / Ubuntu,使用 APT-GET 命令或 APT 命令安装。

  1. $ sudo apt install fail2ban

对于 Fedora,使用 DNF 命令安装。

  1. $ sudo dnf install fail2ban

对于 CentOS/RHEL,启用 EPEL 库或 RPMForge 库,使用 YUM 命令安装。

  1. $ sudo yum install fail2ban

对于 Arch Linux,使用 Pacman 命令安装。

  1. $ sudo pacman -S fail2ban

对于 openSUSE , 使用 Zypper命令安装。

  1. $ sudo zypper in fail2ban

如何配置 Fail2Ban

默认情况下,Fail2Ban 将所有配置文件保存在 /etc/fail2ban/ 目录中。 主配置文件是 jail.conf,它包含一组预定义的过滤器。 所以,不要编辑该文件,这是不可取的,因为只要有新的更新,配置就会重置为默认值。

只需在同一目录下创建一个名为 jail.local 的新配置文件,并根据您的意愿进行修改。

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

默认情况下,大多数选项都已经配置的很完美了,如果要启用对任何特定 IP 的访问,则可以将 IP 地址添加到 ignoreip 区域,对于多个 IP 的情况,用空格隔开 IP 地址。

配置文件中的 DEFAULT 部分包含 Fail2Ban 遵循的基本规则集,您可以根据自己的意愿调整任何参数。

  1. # nano /etc/fail2ban/jail.local
  2. [DEFAULT]
  3. ignoreip = 127.0.0.1/8 192.168.1.100/24
  4. bantime = 600
  5. findtime = 600
  6. maxretry = 3
  7. destemail = 2daygeek@gmail.com
  • ignoreip:本部分允许我们列出 IP 地址列表,Fail2Ban 不会禁止与列表中的地址匹配的主机
  • bantime:主机被禁止的秒数
  • findtime:如果在最近 findtime 秒期间已经发生了 maxretry 次重试,则主机会被禁止
  • maxretry:是主机被禁止之前的失败次数

如何配置服务

Fail2Ban 带有一组预定义的过滤器,用于各种服务,如 ssh、apache、nginx、squid、named、mysql、nagios 等。 我们不希望对配置文件进行任何更改,只需在服务区域中添加 enabled = true 这一行就可以启用任何服务。 禁用服务时将 true 改为 false 即可。

  1. # SSH servers
  2. [sshd]
  3. enabled = true
  4. port = ssh
  5. logpath = %(sshd_log)s
  6. backend = %(sshd_backend)s
  • enabled: 确定服务是打开还是关闭。
  • port:指明特定的服务。 如果使用默认端口,则服务名称可以放在这里。 如果使用非传统端口,则应该是端口号。
  • logpath:提供服务日志的位置
  • backend:指定用于获取文件修改的后端。

重启 Fail2Ban

进行更改后,重新启动 Fail2Ban 才能生效。

  1. [For SysVinit Systems]
  2. # service fail2ban restart
  3. [For systemd Systems]
  4. # systemctl restart fail2ban.service

验证 Fail2Ban iptables 规则

你可以使用下面的命令来确认是否在防火墙中成功添加了Fail2Ban iptables 规则。

  1. # iptables -L
  2. Chain INPUT (policy ACCEPT)
  3. target prot opt source destination
  4. f2b-apache-auth tcp -- anywhere anywhere multiport dports http,https
  5. f2b-sshd tcp -- anywhere anywhere multiport dports 1234
  6. ACCEPT tcp -- anywhere anywhere tcp dpt:1234
  7. Chain FORWARD (policy ACCEPT)
  8. target prot opt source destination
  9. Chain OUTPUT (policy ACCEPT)
  10. target prot opt source destination
  11. Chain f2b-apache-auth (1 references)
  12. target prot opt source destination
  13. RETURN all -- anywhere anywhere
  14. Chain f2b-sshd (1 references)
  15. target prot opt source destination
  16. RETURN all -- anywhere anywhere

如何测试 Fail2Ban

我做了一些失败的尝试来测试这个。 为了证实这一点,我要验证 /var/log/fail2ban.log 文件。

  1. 2017-11-05 14:43:22,901 fail2ban.server [7141]: INFO Changed logging target to /var/log/fail2ban.log for Fail2ban v0.9.6
  2. 2017-11-05 14:43:22,987 fail2ban.database [7141]: INFO Connected to fail2ban persistent database '/var/lib/fail2ban/fail2ban.sqlite3'
  3. 2017-11-05 14:43:22,996 fail2ban.database [7141]: WARNING New database created. Version '2'
  4. 2017-11-05 14:43:22,998 fail2ban.jail [7141]: INFO Creating new jail 'sshd'
  5. 2017-11-05 14:43:23,002 fail2ban.jail [7141]: INFO Jail 'sshd' uses poller {}
  6. 2017-11-05 14:43:23,019 fail2ban.jail [7141]: INFO Initiated 'polling' backend
  7. 2017-11-05 14:43:23,019 fail2ban.filter [7141]: INFO Set maxRetry = 5
  8. 2017-11-05 14:43:23,020 fail2ban.filter [7141]: INFO Set jail log file encoding to UTF-8
  9. 2017-11-05 14:43:23,020 fail2ban.filter [7141]: INFO Added logfile = /var/log/auth.log
  10. 2017-11-05 14:43:23,021 fail2ban.actions [7141]: INFO Set banTime = 600
  11. 2017-11-05 14:43:23,021 fail2ban.filter [7141]: INFO Set findtime = 600
  12. 2017-11-05 14:43:23,022 fail2ban.filter [7141]: INFO Set maxlines = 10
  13. 2017-11-05 14:43:23,070 fail2ban.server [7141]: INFO Jail sshd is not a JournalFilter instance
  14. 2017-11-05 14:43:23,081 fail2ban.jail [7141]: INFO Jail 'sshd' started
  15. 2017-11-05 14:43:23,763 fail2ban.filter [7141]: INFO [sshd] Found 103.5.134.167
  16. 2017-11-05 14:43:23,763 fail2ban.filter [7141]: INFO [sshd] Found 103.5.134.167
  17. 2017-11-05 14:43:23,764 fail2ban.filter [7141]: INFO [sshd] Found 181.129.54.170
  18. 2017-11-05 14:43:23,764 fail2ban.filter [7141]: INFO [sshd] Found 181.129.54.170
  19. 2017-11-05 14:43:23,765 fail2ban.filter [7141]: INFO [sshd] Found 181.129.54.170
  20. 2017-11-05 14:43:23,765 fail2ban.filter [7141]: INFO [sshd] Found 181.129.54.170
  21. 2017-11-05 15:19:06,192 fail2ban.server [7141]: INFO Stopping all jails
  22. 2017-11-05 15:19:06,874 fail2ban.jail [7141]: INFO Jail 'sshd' stopped
  23. 2017-11-05 15:19:06,879 fail2ban.server [7141]: INFO Exiting Fail2ban
  24. 2017-11-05 15:19:07,123 fail2ban.server [8528]: INFO Changed logging target to /var/log/fail2ban.log for Fail2ban v0.9.6
  25. 2017-11-05 15:19:07,123 fail2ban.database [8528]: INFO Connected to fail2ban persistent database '/var/lib/fail2ban/fail2ban.sqlite3'
  26. 2017-11-05 15:19:07,126 fail2ban.jail [8528]: INFO Creating new jail 'sshd'
  27. 2017-11-05 15:19:07,129 fail2ban.jail [8528]: INFO Jail 'sshd' uses poller {}
  28. 2017-11-05 15:19:07,141 fail2ban.jail [8528]: INFO Initiated 'polling' backend
  29. 2017-11-05 15:19:07,142 fail2ban.actions [8528]: INFO Set banTime = 60
  30. 2017-11-05 15:19:07,142 fail2ban.filter [8528]: INFO Set findtime = 60
  31. 2017-11-05 15:19:07,142 fail2ban.filter [8528]: INFO Set jail log file encoding to UTF-8
  32. 2017-11-05 15:19:07,143 fail2ban.filter [8528]: INFO Set maxRetry = 3
  33. 2017-11-05 15:19:07,144 fail2ban.filter [8528]: INFO Added logfile = /var/log/auth.log
  34. 2017-11-05 15:19:07,144 fail2ban.filter [8528]: INFO Set maxlines = 10
  35. 2017-11-05 15:19:07,189 fail2ban.server [8528]: INFO Jail sshd is not a JournalFilter instance
  36. 2017-11-05 15:19:07,195 fail2ban.jail [8528]: INFO Jail 'sshd' started
  37. 2017-11-05 15:20:03,263 fail2ban.filter [8528]: INFO [sshd] Found 103.5.134.167
  38. 2017-11-05 15:20:05,267 fail2ban.filter [8528]: INFO [sshd] Found 103.5.134.167
  39. 2017-11-05 15:20:12,276 fail2ban.filter [8528]: INFO [sshd] Found 103.5.134.167
  40. 2017-11-05 15:20:12,380 fail2ban.actions [8528]: NOTICE [sshd] Ban 103.5.134.167
  41. 2017-11-05 15:21:12,659 fail2ban.actions [8528]: NOTICE [sshd] Unban 103.5.134.167

要查看启用的监狱列表,请运行以下命令。

  1. # fail2ban-client status
  2. Status
  3. |- Number of jail: 2
  4. `- Jail list: apache-auth, sshd

通过运行以下命令来获取禁止的 IP 地址。

  1. # fail2ban-client status ssh
  2. Status for the jail: ssh
  3. |- filter
  4. | |- File list: /var/log/auth.log
  5. | |- Currently failed: 1
  6. | `- Total failed: 3
  7. `- action
  8. |- Currently banned: 1
  9. | `- IP list: 192.168.1.115
  10. `- Total banned: 1

要从 Fail2Ban 中删除禁止的 IP 地址,请运行以下命令。

  1. # fail2ban-client set ssh unbanip 192.168.1.115

分享此文:

  • 按一下即可分享至 X(在新視窗中開啟) X
  • 按一下以分享至 Facebook(在新視窗中開啟) Facebook
  • 分享到 WhatsApp(在新視窗中開啟) WhatsApp
  • 按一下以分享到 Telegram(在新視窗中開啟) Telegram
  • 分享到 Pinterest(在新視窗中開啟) Pinterest
  • 分享到 Reddit(在新視窗中開啟) Reddit
  • 按一下即可以電子郵件傳送連結給朋友(在新視窗中開啟) 電子郵件
  • 點這裡列印(在新視窗中開啟) 列印

相關


Linux資訊, 教學資源

Post navigation

PREVIOUS
centos 7 安裝fail2ban
NEXT
宝塔Linux面板 – 10月17日更新 – 6.1正式版

發表迴響取消回覆

這個網站採用 Akismet 服務減少垃圾留言。進一步了解 Akismet 如何處理網站訪客的留言資料。

More results...

Generic filters
Exact matches only
Search in title
Search in content
Search in excerpt
Filter by 分類
網站公告
Featured
赫思醫美
限時免費
Windows 軟件下載
系統軟件
辦公軟件
圖像處理
影音媒體
網絡軟件
應用軟件
Mac 軟件下載
安卓軟件下載
網絡資訊
Mac資訊
Linux資訊
VPS資訊
NASA資訊
WordPress資訊
WeChat資訊
PHP資訊
教學資源
開源程序
網頁工具
SEO工具
醫療健康
其他資訊
Content from
Content to
2018 年 10 月
一 二 三 四 五 六 日
1234567
891011121314
15161718192021
22232425262728
293031  
« 9 月   11 月 »

分類

  • 網站公告
  • 赫思醫美
  • 限時免費
  • Windows 軟件下載
  • 系統軟件
  • 辦公軟件
  • 圖像處理
  • 影音媒體
  • 網絡軟件
  • 應用軟件
  • Mac 軟件下載
  • 安卓軟件下載
  • 網絡資訊
  • Mac資訊
  • Linux資訊
  • VPS資訊
  • NASA資訊
  • WordPress資訊
  • WeChat資訊
  • PHP資訊
  • 教學資源
  • 開源程序
  • 網頁工具
  • SEO工具
  • 醫療健康
  • 其他資訊

彙整

近期文章

  • 嬰兒肌的祕密!三型膠原蛋白:25歲後每年流失1.5%的青春『彈簧網』 2025-07-08
  • 美光加入三大廠GDDR7記憶體齊聚RTX 50系列 2025-07-08
  • iPhone 17 Air新配色曝光:接替遠峰藍淡雅藍色調或成主打 2025-07-08
  • 《史密斯夫婦》第二季卡司公佈:不是黑人了 2025-07-08
  • 雌性黑猩猩會尋找親密的社會關係確保幼崽在野外存活 2025-07-08
  • 虎鯨在世界各地向人類投餵漁獲魚類這是怎麼回事? 2025-07-08
  • 中國AI Agent新貴Manus將總部遷至新加坡 2025-07-08
  • 科學家解釋貓咪為何總是左側臥睡覺 2025-07-08
  • 微軟Copilot+可能會在今年稍後登陸桌上型電腦 2025-07-08
  • 一級複用30+次引力二號中大型可回收火箭三合一聯合試車圓滿成功 2025-07-08

熱門文章與頁面︰

  • 無3C行動電源禁止登機一文看懂到底什麼是3C認證、如何分辨真偽
  • 您可以在Windows 11 24H2 中找回WordPad
  • YouTube By Click 2.2.86(含:註冊機序列號)
  • Photon Matrix:針對蚊子的“防空系統”
  • 鳥寶寶有多內捲?為了讓父母投餵自己長出恐怖的嘴巴
  • 嬰兒肌的祕密!三型膠原蛋白:25歲後每年流失1.5%的青春『彈簧網』
  • 日本川崎重工確認開發氫能飛機部件計劃2040年投用
  • 美國力推車聯網(V2X)技術以降低交通事故率
  • 為什麼越來越多的人都開始用“夜間模式”?
  • Perl 5.42 發布新增運算子、Unicode 16 支援和安全性修復

投遞稿件

歡迎各界人士投遞稿件到admin@wongcw.com

請提供以下資料:

1.你的名字

2.你的電郵

3.分類目錄

4.文章標題

5.文章摘要

6.文章內容

7.文章來源

 

聯繫我們

查詢,投稿,商務合作:
​admin@wongcw.com
​技術支援:
​support@wongcw.com
​客户服務:
​cs@wongcw.com

QQ群:833641851

赫思醫美

快帆

MALUS

極度掃描

DMCA.com Protection Status

WONGCW 網誌

  • 免責聲明
  • 捐助我們
  • ThemeNcode PDF Viewer
  • ThemeNcode PDF Viewer SC
  • Events

服務器提供

本站使用之服務器由ikoula提供。

聯繫我們

查詢,投稿,商務合作:
​admin@wongcw.com
​技術支援:
​support@wongcw.com
​客户服務:
​cs@wongcw.com

QQ群:833641851

© 2025   All Rights Reserved.