この記事では、主に Apache サーバーを保護するために IP アドレスをフィルタリングする方法を紹介します。必要な場合は、Apache サーバーを参照してください。本番環境はさまざまな攻撃の影響を受ける可能性があります。攻撃者は、ブルート フォース攻撃や悪意のあるスクリプトの実行を通じて、未承認または禁止されているディレクトリへのアクセスを試みる可能性があります。一部の悪意のあるクローラーは、Web サイトをスキャンしてさまざまなセキュリティの脆弱性を探したり、電子メール アドレスや Web フォームを収集してスパムを送信したりすることがあります。
Apache サーバーには、さまざまな攻撃に反映される異常なイベントをキャプチャできる包括的なログ機能があります。ただし、特定の Apache ログを体系的に解析したり、潜在的な攻撃 (IP アドレスの禁止/禁止解除など) に迅速に対応したりすることはまだできません。現時点では、fail2ban によってこれらすべてが保存され、システム管理者の作業が解放されます。
fail2ban は、システム ログに基づいてさまざまなツールを検出し、iptables による IP の禁止、/etc/hosts.deny による接続のブロック、電子メールによる通知の送信などの保護措置を自動的に講じることができる侵入防止ツールです。 ail2ban には、特定のプログラム ログ フィルターを使用して一般的な攻撃を検出する一連の事前定義された「ジェイル」があります。任意のプログラムからの攻撃を検出するカスタム ルールを作成することもできます。
このチュートリアルでは、Apache サーバーを保護するためにfail2banを設定する方法を説明します。すでにApacheとfail2banがインストールされていると思います。
Fail2ban 刑務所とは
fail2ban 刑務所について詳しく見てみましょう。 Jail は、指定されたプログラムの保護措置をトリガーする特定のアプリケーション ポリシーを定義します。 ail2ban には、Apache、Dovecot、Lighttpd、MySQL、Postfix、SSH などのいくつかの一般的なプログラム用に、/etc/fail2ban/jail.conf の下に事前定義されたjail があります。各刑務所は、特定のプログラム ログ フィルター (/etc/fail2ban/filter.d の下) を通じて一般的な攻撃を検出します。刑務所の例、SSH 刑務所を見てみましょう。
[ssh] enabled = true port = ssh filter = sshd logpath = /var/log/auth.log maxretry = 6 banaction = iptables-multiport
[ssh]: プリズンの名前は角括弧内にあります。
有効: ジェイルを有効にするかどうか ポート: ポート番号 (または対応するサービス名) フィルター: 攻撃を検出するためのログ解析ルール
logpath: 検出されたログ ファイル maxretry: 失敗の最大数
banaction: 実行された禁止された操作
定義された任意のパラメーターjail 設定では、fail2ban-wide の対応するデフォルト設定パラメータがオーバーライドされます。代わりに、不足しているパラメータには、[DEFAULT] フィールドで定義されたデフォルト値が使用されます。
事前定義されたログフィルターは /etc/fail2ban/filter.d に配置され、実行可能な禁止アクションは /etc/fail2ban/action.d に配置されます。
事前定義された Apache ジェイルを有効にする
fail2ban のデフォルトのインストールでは、Apache サービス用の事前定義されたジェイルとフィルターがいくつか提供されます。これらの組み込みの Apache ジェイルを有効にしたいと考えています。 Debian と RedHat の構成は若干異なるため、構成ファイルを個別に提供します。 Debian または Ubuntu で Apache Jail を有効にする
Debian ベースのシステムで事前定義された Apache Jail を有効にするには、次のように /etc/fail2ban/jail.local を作成します。 $ sudo vi /etc/fail2ban/jail.local
コードは次のとおりです:
# 检测密码认证失败 [apache] enabled = true port = http,https filter = apache-auth logpath = /var/log/apache*/*error.log maxretry = 6 # 检测漏洞和 PHP 脆弱性扫描 [apache-noscript] enabled = true port = http,https filter = apache-noscript logpath = /var/log/apache*/*error.log maxretry = 6 # 检测 Apache 溢出攻击 [apache-overflows] enabled = true port = http,https filter = apache-overflows logpath = /var/log/apache*/*error.log maxretry = 2 # 检测在服务器寻找主目录的尝试 [apache-nohome] enabled = true port = http,https filter = apache-nohome logpath = /var/log/apache*/*error.log maxretry = 2
上記の刑務所には指定された措置がないため、これらの刑務所はデフォルトの措置をトリガーします。デフォルトのアクションを確認するには、/etc/fail2ban/jail.conf の [DEFAULT] で「banaction」を見つけます。
コードは次のとおりです:
banaction = iptables-multiport
この例では、デフォルトの操作は iptables-multiport (/etc/fail2ban/action.d/iptables-multiport.conf で定義) です。この措置では、iptable のマルチポート モジュールを使用して IP アドレスを禁止します。
jail を有効にした後、fail2ban を再起動して、jail をロードする必要があります。
$ sudo service fail2ban restartCentOS/RHEL または Fedora での Apache Jail の有効化
Red Hat ベースのシステムで事前定義された Jail を有効にするには、次のように /etc/fail2ban/jail.local を作成します。 $ sudo vi /etc/fail2ban/jail.local
コードは次のとおりです:
# 检测密码认证失败 [apache] enabled = true port = http,https filter = apache-auth logpath = /var/log/httpd/*error_log maxretry = 6 # 检测抓取邮件地址的爬虫 [apache-badbots] enabled = true port = http,https filter = apache-badbots logpath = /var/log/httpd/*access_log bantime = 172800 maxretry = 1 # 检测漏洞和 PHP 脆弱性扫描 [apache-noscript] enabled = true port = http,https filter = apache-noscript logpath = /var/log/httpd/*error_log maxretry = 6 # 检测 Apache 溢出攻击 [apache-overflows] enabled = true port = http,https filter = apache-overflows logpath = /var/log/httpd/*error_log maxretry = 2 # 检测在服务器寻找主目录的尝试 [apache-nohome] enabled = true port = http,https filter = apache-nohome logpath = /var/log/httpd/*error_log maxretry = 2 # 检测执行不存在的脚本的企图 # 这些都是流行的网站服务程序 # 如:webmail, phpMyAdmin,WordPress port = http,https filter = apache-botsearch logpath = /var/log/httpd/*error_log maxretry = 2
これらのjailファイルのデフォルトの操作はiptables-multiport (/etc/fail2ban/jail.confの[DEFAULT]フィールドの「banaction」で定義されています)であることに注意してください。この措置では、iptable のマルチポート モジュールを使用して IP アドレスを禁止します。
jail を有効にした後、fail2ban を再起動して、jail をロードする必要があります。
Fedora または CentOS/RHEL 7 の場合:
$ sudo systemctl restart fail2ban
CentOS/RHEL 6 の場合:
$ sudo service fail2ban restartフェイル 2 バンの禁止ステータスを確認および管理する
ジェイルがアクティブ化されたら、fail2ban クライアント コマンド ライン ツールを使用して現在の状態を監視できます。禁止ステータス。 アクティブな刑務所のリストを表示します:
$ sudo fail2ban-client status
特定の刑務所のステータスを表示します (禁止された IP のリスト付き):
$ sudo fail2ban-client status [监狱名]
你也可以手动禁止或者解禁IP地址:
要用制定监狱禁止IP:
$ sudo fail2ban-client set [name-of-jail] banip [ip-address]
要解禁指定监狱屏蔽的IP:
$ sudo fail2ban-client set [name-of-jail] unbanip [ip-address]
总结
本篇教程解释了fail2ban监狱如何工作以及如何使用内置的监狱来保护Apache服务器。依赖于你的环境以及要保护的web服务器类型,你或许要调整已有的监狱或者编写自定义监狱和日志过滤器。查看outfail2ban的官方Github页面来获取最新的监狱和过滤器示例。
以上がApache サーバーを保護するためにfail2banを設定する方法を教えますの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。