Fail2ban

提供: ArchWiki
2014年12月26日 (金) 02:06時点におけるKusakata (トーク | 投稿記録)による版 (Created page with "Category:Secure Shell en:Fail2ban ro:Fail2ban {{Related articles start}} {{Related2|Sshguard|Sshguard}} {{Related articles end}...")
(差分) ← 古い版 | 最新版 (差分) | 新しい版 → (差分)
ナビゲーションに移動 検索に移動

関連記事

警告: IP ブラックリストを使えば取るに足らない攻撃を防ぐことはできますが、別にデーモンを使う必要がありログは残ります (特に攻撃者が何度もサーバーにアタックした場合 /var を含むパーティションが一杯になってしまう可能性もあります)。さらに、攻撃者が IP アドレスを知っている場合、ソースヘッダーを偽装したパケットを送りつけてサーバーからロックアウトさせるよう仕向けてくるかもしれません。SSH keys はこれらの問題に煩わされることなくブルートフォースの問題を解決する方法を提供します。

Fail2ban は様々なテキストのログファイルをスキャンして、何度もパスワード認証を失敗している IP アドレスを拒否するようファイアウォールのルールを更新して ban します。Sshguard に似ています。

警告: 正しく機能させるためにログの IP アドレスを正確にパースさせることが重要です。保護したいアプリケーションごとにログフィルターがちゃんと動くかどうかテストするようにしてください。

インストール

公式リポジトリから fail2ban をインストールしてください。

誰かが ban されたときに Fail2ban にメールを送って欲しいときは、SSMTP (など) をセットアップする必要があります。

systemd

fail2ban.service サービスユニットを使って下さい。使い方は systemd を参照。

ハードニング

現在、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_ADMINCAP_NET_RAWiptables によるファイアウォールのルールの設定を許可しています。fail2ban の設定によっては、ケイパビリティを追加する必要があるでしょう。詳しくは man capabilities を見て下さい。

ファイルシステムのアクセス

[Service] セクションで、ReadOnlyDirectoriesReadWriteDirectories を使うことで、ファイルシステムの読み書きアクセスを制限することができます。例えば:

ReadOnlyDirectories=/
ReadWriteDirectories=/var/run/fail2ban /var/lib/fail2ban /var/spool/postfix/maildrop /tmp

上の例では、pid やソケットファイルの /var/run/fail2ban と、postfix sendmail の /var/spool/postfix/maildrop を除いて、ファイルシステムを読み取り専用に制限しています。ケイパビリティと同じく、システム設定や fail2ban の設定によって変える必要が出てきます。fail2ban の動作の中には /tmp ディレクトリが必要になるものもあります。fail2ban の行動記録を保存して欲しい場合は /var/log を追加してください。

SSH jail

/etc/fail2ban/jail.conf を編集して ssh-iptables セクションを修正して ssh-iptables を有効化してアクションを設定します。

ノート: ディストリビューションのアップデートで jail.conf ファイルは上書きされてしまう可能性があるので、jail.local ファイルや jail.d/ ディレクトリ下の .conf ファイル (例: jail.d/ssh-iptables.conf) に修正を加えるのが推奨されます。

使っているファイアウォールが iptables の場合:

[ssh-iptables]
enabled  = true
filter   = sshd
action   = iptables[name=SSH, port=ssh, protocol=tcp]                                         
           sendmail-whois[name=SSH, dest=your@mail.org, sender=fail2ban@mail.com]
logpath  = /var/log/auth.log                                                                    
maxretry = 5

Fail2Ban はバージョン 0.9 から backend = systemd を設定することで systemd の journal から直接読み取ることができるようになっています。

使っているファイアウォールが shorewall の場合:

[ssh-shorewall]
enabled  = true
filter   = sshd
action   = shorewall
           sendmail-whois[name=SSH, dest=your@mail.org, sender=fail2ban@mail.com]
logpath  = /var/log/auth.log                                                                    
maxretry = 5
ノート: /etc/shorewall/shorewall.confBLACKLISTALL に設定することができます。この設定を行わないと IP アドレスを ban するルールは新しい接続にしか適用されません。

また、/etc/ssh/sshd_config に次を追加/変更してください:

LogLevel VERBOSE

そうしないとパスワード認証の失敗が正しく記録されません。