「Fail2ban」の版間の差分
Kusanaginoturugi (トーク | 投稿記録) (序文を修正) |
(序文を更新) |
||
8行目: | 8行目: | ||
{{Related|セキュリティ}} |
{{Related|セキュリティ}} |
||
{{Related articles end}} |
{{Related articles end}} |
||
− | [ |
+ | [https://www.fail2ban.org/wiki/index.php/Main_Page Fail2ban] は、ログファイル (例:{{ic|/var/log/httpd/error_log}}) をスキャンし、認証の試行回数が多すぎる、脆弱性のスキャンなど、悪意のある兆候を示す IP を禁止します。一般に、Fail2ban は、次に、次の IP アドレスを拒否するように [[ファイアウォール]] ルールを更新するために使用されます。指定された時間だけですが、他の任意のアクション (電子メールの送信など) も設定できます。 |
+ | {{Warning| |
||
− | {{warning|IP ブラックリストを使えば取るに足らない攻撃を防ぐことはできますが、デーモンを使う必要がある上に攻撃時のログは残ります (特に攻撃者が何度もサーバーにアタックした場合 {{ic|/var}} を含むパーティションが一杯になってしまう可能性もあります)。さらに、攻撃者があなたの IP アドレスを知っている場合、ソースヘッダーを偽装したパケットを送りつけてあなたがサーバーにアクセスできないように仕向けてくるかもしれません。[[SSH 鍵]]はこれらの問題に煩わされることなくブルートフォースの問題を解決する方法を提供します。}} |
||
+ | * IP を禁止するソフトウェアを使用することで、些細な攻撃は止めることができますが、追加のデーモンとロギングの成功に依存します。 |
||
+ | * fail2ban を [[sshd]] などと併用することは、公開鍵認証などが有効になっている場合 には、通常は意味がありません。 |
||
+ | * また、[[VPN]] の代わりにもなりません。必要な場合を除き、サービスをインターネットに公開しないでください。 |
||
+ | * さらに、攻撃者があなたの IP アドレスを知っている場合、送信元ヘッダーを偽装したパケットを送信し、あなたの IP アドレスを使用禁止にすることができます。必ず {{ic|ignoreip}} で IP を指定してください。 |
||
+ | }} |
||
== インストール == |
== インストール == |
2023年12月21日 (木) 06:23時点における版
Fail2ban は、ログファイル (例:/var/log/httpd/error_log
) をスキャンし、認証の試行回数が多すぎる、脆弱性のスキャンなど、悪意のある兆候を示す IP を禁止します。一般に、Fail2ban は、次に、次の IP アドレスを拒否するように ファイアウォール ルールを更新するために使用されます。指定された時間だけですが、他の任意のアクション (電子メールの送信など) も設定できます。
目次
インストール
誰かが ban されたときに Fail2ban からメールを送信したい場合、SSMTP などをセットアップする必要があります。
systemd
fail2ban.service
ユニットを有効化してください。
ハードニング
現在、fail2ban は root で実行する必要があり、systemd でプロセスをハードニングする余地があります。参照: systemd for Administrators, Part XII
ケイパビリティ
セキュリティを強化するために既存の fail2ban.service
のドロップイン設定ファイルで CapabilityBoundingSet
を指定することで fail2ban のケイパビリティを制限できます:
/etc/systemd/system/fail2ban.service.d/capabilities.conf
[Service] CapabilityBoundingSet=CAP_DAC_READ_SEARCH CAP_NET_ADMIN CAP_NET_RAW
上の例では、CAP_DAC_READ_SEARCH
で fail2ban に完全な読み取りアクセスを許可し、CAP_NET_ADMIN
と CAP_NET_RAW
で iptables によるファイアウォールのルールの設定を許可しています。fail2ban の設定によっては、ケイパビリティを追加する必要があるでしょう。詳しくは capabilities(7) を見て下さい。
ファイルシステムのアクセス
[Service]
セクションで、ReadOnlyDirectories や ReadWriteDirectories を使うことで、ファイルシステムの読み書きアクセスを制限することができます。例えば:
ReadOnlyDirectories=/ ReadWriteDirectories=/var/run/fail2ban /var/lib/fail2ban /var/spool/postfix/maildrop /tmp /var/log/fail2ban
上の例では、pid やソケットファイルの /var/run/fail2ban
と、postfix sendmail の /var/spool/postfix/maildrop
を除いて、ファイルシステムを読み取り専用に制限しています。ケイパビリティと同じく、システム設定や fail2ban の設定によって変える必要が出てきます。fail2ban の動作の中には /tmp
ディレクトリが必要になるものもあります。fail2ban の行動記録を保存して欲しい場合は /var/log/fail2ban
を追加してください。全てのディレクトリが存在していることを確認してください。存在しない場合、サービスの起動時にエラーコード 226 が表示されます。また、/etc/fail2ban/fail2ban.conf
の logtarget を修正してください:
logtarget = /var/log/fail2ban/fail2ban.log
設定
デフォルト jail
多数のサービスに対応しているデフォルトの jail は /etc/fail2ban/jail.conf
に存在していますが、デフォルトでは有効になっていません。セクションヘッダーを適当な .local
ファイルにコピーすることで有効にできます。
パス
Arch Linux の基本設定を有効にするには、jail.local
ファイルに以下のセクションを追加・変更:
[INCLUDES] before = paths-arch.conf
fail2ban.service
を再起動して設定をテストしてください。fail2ban サービスが起動に失敗すると fail2ban-client から "file not found errors" が出力されます。paths-arch.conf
や jail.local
を必要に応じて調整してください。デフォルトの jail は設定を変更しないと動作しない場合があります。
カスタム SSH jail
/etc/fail2ban/jail.d/jail.conf
を編集して、以下のセクションを追加して信頼する IP アドレスのリストを更新します。
使っているファイアウォールが iptables の場合:
[DEFAULT] bantime = 1d ignoreip = 127.0.0.1/8 [sshd] enabled = true filter = sshd action = iptables backend = systemd maxretry = 5 findtime = 1d bantime = 2w
fail2ban はバージョン 0.10 から IPv6 をサポートしています。使用しているファイアウォールに応じて、ip6tables.service
などを起動・有効化してください。
また、/etc/ssh/sshd_config
に次を追加/変更してください:
LogLevel VERBOSE
そうしないとパスワード認証の失敗が正しく記録されません。