検索
ホームページシステムチュートリアルLinuxFail2Ban を使用してサーバーをブルート フォース攻撃から保護する方法

Fail2Ban を使用してサーバーをブルート フォース攻撃から保護する方法

Apr 27, 2024 am 08:34 AM
mysqllinuxpythoncentosapachenginxaccessLinuxチュートリアルレッドハットLinuxシステムLinuxコマンドLinux 認定レッドハットリナックスLinuxビデオ

Linux 管理者の重要なタスクは、サーバーを違法な攻撃やアクセスから保護することです。 デフォルトでは、Linux システムには、iptables、Uncomplicated Firewall (UFW)、ConfigServer Security Firewall (CSF) などの適切に構成されたファイアウォールが付属しており、さまざまな攻撃を防ぐことができます。

如何使用 Fail2Ban 保护服务器免受暴力攻击

インターネットに接続されているマシンはすべて、悪意のある攻撃のターゲットになる可能性があります。 サーバーへの不正アクセスを軽減するために使用できる Fail2Ban と呼ばれるツールがあります。

Fail2Ban とは何ですか?

Fail2Ban[1] は、ブルート フォース攻撃からサーバーを保護する侵入防止ソフトウェアです。 Python プログラミング言語で書かれています。 Fail2Ban は認証ログ ファイルに基づいて動作します。デフォルトでは、/var/log/auth.log/var/log/apache/access.log などのすべての認証ログ ファイルをスキャンし、悪意のあるログ ファイルを禁止します。失敗したパスワードが多すぎるなどの IP にフラグを立てて、脆弱性やその他の兆候を探します。

通常、Fail2Ban は、指定された期間 IP アドレスを拒否するファイアウォール ルールを更新するために使用されます。 また、電子メール通知も送信されます。 Fail2Ban は、ssh、Apache、nginx、squid、named、mysql、nagios などのさまざまなサービスに多数のフィルターを提供します。

Fail2Ban は、誤った認証試行の速度を減らすことができますが、弱い認証のリスクを排除することはできません。 これは、ブルート フォース攻撃を防ぐためにサーバーが使用するセキュリティ対策の 1 つにすぎません。

Linux に Fail2Ban をインストールする方法

Fail2Ban はほとんどの Linux ディストリビューションにすでにパッケージ化されているため、ディストリビューションのパッケージ マネージャーを使用してインストールするだけです。

Debian/Ubuntu の場合、APT-GET コマンド [2] または APT コマンド [3] を使用してインストールします。

リーリー

Fedora の場合は、DNF コマンド[4]を使用してインストールします。

リーリー

CentOS/RHEL の場合は、EPEL ライブラリ [5] または RPMForge [6] ライブラリを有効にし、YUM コマンド [7] を使用してインストールします。

リーリー

Arch Linux の場合は、Pacman コマンド[8]を使用してインストールします。

リーリー

openSUSE の場合は、Zypper コマンド [9] を使用してインストールします。

リーリー
Fail2Ban の設定方法

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

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

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

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

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

# 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 地址列表,Fail2Ban 不会禁止与列表中的地址匹配的主机
  • bantime:主机被禁止的秒数
  • findtime:如果在最近 findtime 秒期间已经发生了 maxretry 次重试,则主机会被禁止
  • maxretry:是主机被禁止之前的失败次数
如何配置服务

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

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

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

[For SysVinit Systems]
# service fail2ban restart

[For systemd Systems]
# systemctl restart fail2ban.service
验证 Fail2Ban iptables 规则

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

# 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
如何测试 Fail2Ban

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

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

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

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

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

# fail2ban-client status ssh
Status for the jail: ssh
|- filter
| |- File list: /var/log/auth.log
| |- Currently failed: 1
| `- Total failed: 3
`- action
 |- Currently banned: 1
 | `- IP list: 192.168.1.115
 `- Total banned: 1

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

# fail2ban-client set ssh unbanip 192.168.1.115

以上がFail2Ban を使用してサーバーをブルート フォース攻撃から保護する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明
この記事はLinux就该这么学で複製されています。侵害がある場合は、admin@php.cn までご連絡ください。
さまざまなタスクのLinuxとWindowsのパフォーマンスはどのように異なりますか?さまざまなタスクのLinuxとWindowsのパフォーマンスはどのように異なりますか?May 14, 2025 am 12:03 AM

Linuxはサーバーと開発環境でうまく機能しますが、Windowsはデスクトップやゲームでパフォーマンスが向上します。 1)Linuxのファイルシステムは、多数の小さなファイルを扱うときにうまく機能します。 2)Linuxは、高い並行性と高スループットネットワークシナリオで優れたパフォーマンスを発揮します。 3)Linuxメモリ管理は、サーバー環境でより多くの利点があります。 4)Linuxはコマンドラインとスクリプトタスクを実行するときに効率的ですが、Windowsはグラフィカルインターフェイスとマルチメディアアプリケーションでより良くパフォーマンスを発揮します。

Pygobjectを使用してLinuxでGUIアプリケーションを作成する方法Pygobjectを使用してLinuxでGUIアプリケーションを作成する方法May 13, 2025 am 11:09 AM

グラフィカルユーザーインターフェイス(GUI)アプリケーションの作成は、アイデアを実現し、プログラムをよりユーザーフレンドリーにする素晴らしい方法です。 Pygobjectは、開発者がLinuxデスクトップにGUIアプリケーションを作成できるようにするPythonライブラリです。

Arch LinuxにphpmyAdminを備えたランプスタックをインストールする方法Arch LinuxにphpmyAdminを備えたランプスタックをインストールする方法May 13, 2025 am 11:01 AM

Arch Linuxは柔軟な最先端のシステム環境を提供し、完全にオープンソースであり、カーネルで最新のリリースを提供するため、小さな非クリティカルシステムでWebアプリケーションを開発するための強力なソリューションです。

Arch LinuxにLEMP(Nginx、Php、Mariadb)をインストールする方法Arch LinuxにLEMP(Nginx、Php、Mariadb)をインストールする方法May 13, 2025 am 10:43 AM

最先端のソフトウェアArch Linuxを取り入れるローリングリリースモデルのため、メンテナンス、一定のアップグレード、および賢明なFIのための余分な時間が必要であるため、信頼できるネットワークサービスを提供するためにサーバーとして実行するように設計および開発されていません

12必要なLinuxコンソール[ターミナル]ファイルマネージャー12必要なLinuxコンソール[ターミナル]ファイルマネージャーMay 13, 2025 am 10:14 AM

Linuxコンソールファイルマネージャーは、ローカルマシンでファイルを管理する場合、またはリモートのファイルに接続する場合、日々のタスクで非常に役立ちます。ディレクトリのビジュアルコンソール表現は、ファイル/フォルダーの操作をすばやく実行して保存するのに役立ちます

QBITTORRENT:強力なオープンソースBitTorrentクライアントQBITTORRENT:強力なオープンソースBitTorrentクライアントMay 13, 2025 am 10:12 AM

Qbittorrentは、ユーザーがインターネット上でファイルをダウンロードして共有できる人気のオープンソースBittorrentクライアントです。最新バージョンのQbittorrent 5.0は最近リリースされ、新機能と改善が詰め込まれています。 この記事はそうします

Arch Linuxでnginx仮想ホスト、phpmyadmin、およびSSLをセットアップArch Linuxでnginx仮想ホスト、phpmyadmin、およびSSLをセットアップMay 13, 2025 am 10:03 AM

以前のArch Linux LEMPの記事では、ネットワークサービス(NGINX、PHP、MySQL、およびPHPMYADMIN)のインストールと、MySQL ServerとPHPMyAdminに必要な最小限のセキュリティの構成など、基本的なものを取り上げました。 このトピックは、フォームに厳密に関連しています

Zenity:シェルスクリプトにGTKダイアログを構築しますZenity:シェルスクリプトにGTKダイアログを構築しますMay 13, 2025 am 09:38 AM

Zenityは、コマンドラインを使用してLinuxでグラフィカルなダイアログボックスを作成できるツールです。グラフィカルユーザーインターフェイス(GUI)を作成するためのツールキットであるGTKを使用して、スクリプトに視覚要素を簡単に追加できます。 ゼニティは非常にuです

See all articles

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

Video Face Swap

Video Face Swap

完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

ホットツール

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

Dreamweaver Mac版

Dreamweaver Mac版

ビジュアル Web 開発ツール

SublimeText3 英語版

SublimeText3 英語版

推奨: Win バージョン、コードプロンプトをサポート!