「Fail2ban」の版間の差分
(項目を整理) |
Kusanaginoturugi (トーク | 投稿記録) |
||
1行目: | 1行目: | ||
[[Category:ファイアウォール]] |
[[Category:ファイアウォール]] |
||
− | [[Category: |
+ | [[Category:セキュアシェル]] |
[[en:Fail2ban]] |
[[en:Fail2ban]] |
||
[[ro:Fail2ban]] |
[[ro:Fail2ban]] |
2024年8月16日 (金) 18:36時点における最新版
Fail2ban は、ログファイル (例:/var/log/httpd/error_log
) をスキャンし、認証の試行回数が多すぎる、脆弱性のスキャンなど、悪意のある兆候を示す IP を禁止します。一般に、Fail2ban は、次に、次の IP アドレスを拒否するように ファイアウォール ルールを更新するために使用されます。指定された時間だけですが、他の任意のアクション (電子メールの送信など) も設定できます。
目次
インストール
次のパッケージのいずれかを インストール して下さい:
- fail2ban - 最新の安定バージョン。
- fail2ban-gitAUR - マスターからの最新のコミット。
使い方
Fail2ban を 設定 し fail2ban.service
を 起動/有効化 します:
fail2ban-client
failed2ban-client を使用すると、jail (リロード、再起動、ステータスなど) を監視して、使用可能なすべてのコマンドを表示できます:
$ fail2ban-client
有効なジェイルをすべて表示するには:
# fail2ban-client status
たとえば sshd などの jail のステータスを確認するには:
# fail2ban-client status sshd
Status for the jail: sshd |- Filter | |- Currently failed: 1 | |- Total failed: 9 | `- Journal matches: _SYSTEMD_UNIT=sshd.service + _COMM=sshd `- Actions |- Currently banned: 1 |- Total banned: 1 `- Banned IP list: 0.0.0.0
禁止された IP を含むすべての jail のコンパクトバージョンの場合:
# fail2ban-client banned
[{'sshd': ['192.168.100.50']}, {'apache-auth': []}]
設定
アップグレード 中に /etc/fail2ban/jail.conf
に対して pacman/Pacnew と Pacsave が作成される可能性があるため、jail.conf(5) § CONFIGURATION FILES FORMAT では、アップグレードを容易にする ために、ユーザーが /etc/fail2ban/jail.local
ファイルを 作成 することをお勧めします。
たとえば、デフォルトの禁止期間を 1 日に変更するには、次のようにします:
/etc/fail2ban/jail.local
[DEFAULT] bantime = 1d
または、/etc/fail2ban/jail.d
ディレクトリの下に別の name.local
ファイルを作成します (例:/etc/fail2ban/jail.d/sshd.local
fail2ban.service
を 再起動 して設定の変更を適用します。
jails を有効にする
デフォルトでは、すべての jails は無効になっています。enabled = true
を使用したい jails に 追加 します。たとえば、OpenSSH jails を有効にする場合:
/etc/fail2ban/jail.local
[sshd] enabled = true
警告メールを受信する
誰かが禁止されたときに電子メールを受信したい場合は、SMTP クライアント (例:msmtp) を設定し、以下に示すようにデフォルトのアクションを変更する必要があります。
/etc/fail2ban/jail.local
[DEFAULT] destemail = yourname@example.com sender = yourname@example.com # to ban & send an e-mail with whois report to the destemail. action = %(action_mw)s # same as action_mw but also send relevant log lines #action = %(action_mwl)s
ファイアウォールとサービス
デフォルトでは、Fail2ban は iptables を使用します。ただし、ほとんどの ファイアウォール とサービスの設定は簡単です。たとえば、nftables を使用するには:
/etc/fail2ban/jail.local
[DEFAULT] banaction = nftables banaction_allports = nftables[type=allports]
他の例については、/etc/fail2ban/action.d/
を参照してください。例:ufw.conf
ヒントとテクニック
カスタム SSH jail
/etc/fail2ban/jail.d/sshd.local
を編集し、このセクションを追加して、ignoreip
の信頼できる IP アドレスのリストを更新します:
/etc/fail2ban/jail.d/sshd.local
[sshd] enabled = true filter = sshd banaction = iptables backend = systemd maxretry = 5 findtime = 1d bantime = 2w ignoreip = 127.0.0.1/8
Systemd バックエンド: ジャーナルフィルタリング
パフォーマンスを向上させるために systemd バックエンドを使用する場合は、journalmatch
を使用してフィルターを設定します。たとえば、カーネルレベルのログメッセージのみを解析するには、次のようにします。
/etc/fail2ban/filter.d/fwdrop.local
[Definition] failregex = ^.*DROP_.*SRC=<ADDR> DST=.*$ journalmatch = _TRANSPORT=kernel
こちらも参照 systemd.journal-fields(7)
サービスの強化
現在、Fail2ban は root として実行する必要があります。したがって、systemd を使用してプロセスを強化することを検討することをお勧めします。
fail2ban.service
の ドロップイン 設定ファイルを 作成:
/etc/systemd/system/fail2ban.service.d/override.conf
[Service] PrivateDevices=yes PrivateTmp=yes ProtectHome=read-only ProtectSystem=strict ReadWritePaths=-/var/run/fail2ban ReadWritePaths=-/var/lib/fail2ban ReadWritePaths=-/var/log/fail2ban ReadWritePaths=-/var/spool/postfix/maildrop ReadWritePaths=-/run/xtables.lock CapabilityBoundingSet=CAP_AUDIT_READ CAP_DAC_READ_SEARCH CAP_NET_ADMIN CAP_NET_RAW
CapabilityBoundingSet
パラメータ CAP_DAC_READ_SEARCH
を使用すると、Fail2ban にすべてのディレクトリとファイルへの完全な読み取りアクセスが許可されます。CAP_NET_ADMIN
と CAP_NET_RAW
により、コマンドラインシェル インターフェイスを持つファイアウォール上で Fail2ban を動作させることができます。詳細については、capabilities(7) を参照してください。
ProtectSystem=strict
を使用すると、ファイルシステム 階層は読み取り専用になり、ReadWritePaths
は Fail2ban に必要なパスへの書き込みアクセスを許可します。
Create /etc/fail2ban/fail2ban.local
with the correct logtarget
path:
/etc/fail2ban/fail2ban.local
[Definition] logtarget = /var/log/fail2ban/fail2ban.log
root として /var/log/fail2ban/
ディレクトリを作成します。
最後に、systemd デーモンを 再起動 して実行しユニットの変更を適用し、fail2ban.service
を実行します。