「Fail2ban」の版間の差分
(同期) |
|||
6行目: | 6行目: | ||
{{Related|Sshguard}} |
{{Related|Sshguard}} |
||
{{Related articles end}} |
{{Related articles end}} |
||
− | {{warning|IP ブラックリストを使えば取るに足らない攻撃を防ぐことはできますが、 |
+ | {{warning|IP ブラックリストを使えば取るに足らない攻撃を防ぐことはできますが、デーモンを使う必要がある上に攻撃時のログは残ります (特に攻撃者が何度もサーバーにアタックした場合 {{ic|/var}} を含むパーティションが一杯になってしまう可能性もあります)。さらに、攻撃者があなたの IP アドレスを知っている場合、ソースヘッダーを偽装したパケットを送りつけてあなたがサーバーにアクセスできないように仕向けてくるかもしれません。[[SSH 鍵]]はこれらの問題に煩わされることなくブルートフォースの問題を解決する方法を提供します。}} |
[http://www.fail2ban.org/wiki/index.php/Main_Page Fail2ban] は様々なテキストのログファイルをスキャンして、何度もパスワード認証を失敗している IP アドレスを拒否するようファイアウォールのルールを更新して ban します。[[Sshguard]] に似ています。 |
[http://www.fail2ban.org/wiki/index.php/Main_Page Fail2ban] は様々なテキストのログファイルをスキャンして、何度もパスワード認証を失敗している IP アドレスを拒否するようファイアウォールのルールを更新して ban します。[[Sshguard]] に似ています。 |
||
15行目: | 15行目: | ||
[[公式リポジトリ]]から {{Pkg|fail2ban}} をインストールしてください。 |
[[公式リポジトリ]]から {{Pkg|fail2ban}} をインストールしてください。 |
||
− | 誰かが ban されたときに Fail2ban |
+ | 誰かが ban されたときに Fail2ban からメールを送信したい場合、[[SSMTP]] などをセットアップする必要があります。 |
=== systemd === |
=== systemd === |
||
− | {{ic|fail2ban.service}} |
+ | {{ic|fail2ban.service}} ユニットを[[有効化]]してください。 |
== ハードニング == |
== ハードニング == |
||
27行目: | 27行目: | ||
=== ケイパビリティ === |
=== ケイパビリティ === |
||
− | セキュリティを強化するために既存の {{ic|fail2ban.service}} の[[Systemd#ユニットファイルの編集|ドロップイン設定ファイル]]で {{ic|CapabilityBoundingSet}} を指定することで fail2ban のケイパビリティを制限できます: |
+ | セキュリティを強化するために既存の {{ic|fail2ban.service}} の[[Systemd#ユニットファイルの編集|ドロップイン設定ファイル]]で {{ic|CapabilityBoundingSet}} を指定することで fail2ban の[[ケイパビリティ]]を制限できます: |
{{hc|/etc/systemd/system/fail2ban.service.d/capabilities.conf|2= |
{{hc|/etc/systemd/system/fail2ban.service.d/capabilities.conf|2= |
||
37行目: | 37行目: | ||
=== ファイルシステムのアクセス === |
=== ファイルシステムのアクセス === |
||
+ | |||
+ | {{Note|環境によっては以下の設定で fail2ban が使えなくなる可能性があります。最初は以下の設定を使わないで fail2ban を試してください。}} |
||
{{ic|[Service]}} セクションで、''ReadOnlyDirectories'' や ''ReadWriteDirectories'' を使うことで、ファイルシステムの読み書きアクセスを制限することができます。例えば: |
{{ic|[Service]}} セクションで、''ReadOnlyDirectories'' や ''ReadWriteDirectories'' を使うことで、ファイルシステムの読み書きアクセスを制限することができます。例えば: |
||
ReadOnlyDirectories=/ |
ReadOnlyDirectories=/ |
||
− | ReadWriteDirectories=/var/run/fail2ban /var/lib/fail2ban /var/spool/postfix/maildrop /tmp |
+ | ReadWriteDirectories=/var/run/fail2ban /var/lib/fail2ban /var/spool/postfix/maildrop /tmp /var/log/fail2ban |
上の例では、pid やソケットファイルの {{ic|/var/run/fail2ban}} と、[[postfix]] sendmail の {{ic|/var/spool/postfix/maildrop}} を除いて、ファイルシステムを読み取り専用に制限しています。ケイパビリティと同じく、システム設定や fail2ban の設定によって変える必要が出てきます。fail2ban の動作の中には {{ic|/tmp}} ディレクトリが必要になるものもあります。fail2ban の行動記録を保存して欲しい場合は {{ic|/var/log}} を追加してください。 |
上の例では、pid やソケットファイルの {{ic|/var/run/fail2ban}} と、[[postfix]] sendmail の {{ic|/var/spool/postfix/maildrop}} を除いて、ファイルシステムを読み取り専用に制限しています。ケイパビリティと同じく、システム設定や fail2ban の設定によって変える必要が出てきます。fail2ban の動作の中には {{ic|/tmp}} ディレクトリが必要になるものもあります。fail2ban の行動記録を保存して欲しい場合は {{ic|/var/log}} を追加してください。 |
||
− | == |
+ | == 設定 == |
− | |||
− | {{ic|/etc/fail2ban/jail.conf}} を編集して ssh-iptables セクションを修正して ssh-iptables を有効化してアクションを設定します。 |
||
{{Note|ディストリビューションのアップデートで {{ic|jail.conf}} ファイルは上書きされてしまう可能性があるので、{{ic|jail.local}} ファイルや {{ic|jail.d/}} ディレクトリ下の ''.conf'' ファイル (例: {{ic|jail.d/ssh-iptables.conf}}) に修正を加えるのが推奨されます。}} |
{{Note|ディストリビューションのアップデートで {{ic|jail.conf}} ファイルは上書きされてしまう可能性があるので、{{ic|jail.local}} ファイルや {{ic|jail.d/}} ディレクトリ下の ''.conf'' ファイル (例: {{ic|jail.d/ssh-iptables.conf}}) に修正を加えるのが推奨されます。}} |
||
+ | === デフォルト jail === |
||
− | 使っているファイアウォールが iptables の場合: |
||
+ | |||
− | [ssh-iptables] |
||
+ | 多数のサービスに対応しているデフォルトの jail は {{ic|/etc/fail2ban/jail.conf}} に存在していますが、デフォルトでは有効になっていません。セクションヘッダーを適当な {{ic|.local}} ファイルにコピーすることで有効にできます。 |
||
+ | |||
+ | === パス === |
||
+ | |||
+ | Arch Linux で最初から使える path は存在しませんが、Fedora のデフォルト設定を使うことができます: |
||
+ | # cp /etc/fail2ban/paths-fedora.conf /etc/fail2ban/paths-archlinux.conf |
||
+ | |||
+ | 設定を有効にするには、{{ic|jail.local}} ファイルに以下のセクションを追加・変更: |
||
+ | [INCLUDES] |
||
+ | before = paths-archlinux.conf |
||
+ | |||
+ | {{ic|fail2ban.service}} を[[再起動]]して設定をテストしてください。fail2ban サービスが起動に失敗すると ''fail2ban-client'' から "file not found errors" が出力されます。{{ic|paths-archlinux.conf}} や {{ic|jail.local}} を必要に応じて調整してください。デフォルトの jail は設定を変更しないと動作しない場合があります。 |
||
+ | |||
+ | === カスタム SSH jail === |
||
+ | |||
+ | {{ic|/etc/fail2ban/jail.d/jail.conf}} を編集して、以下のセクションを追加して信頼する IP アドレスのリストを更新します。 |
||
+ | |||
+ | 使っているファイアウォールが [[iptables]] の場合: |
||
+ | [DEFAULT] |
||
+ | bantime = 864000 |
||
+ | ignoreip = 127.0.0.1/8 111.111.111.111 222.222.222.222 |
||
+ | |||
+ | [sshd] |
||
enabled = true |
enabled = true |
||
filter = sshd |
filter = sshd |
||
− | action = iptables[name=SSH, port=ssh, protocol=tcp] |
+ | action = iptables[name=SSH, port=ssh, protocol=tcp] |
sendmail-whois[name=SSH, dest=your@mail.org, sender=fail2ban@mail.com] |
sendmail-whois[name=SSH, dest=your@mail.org, sender=fail2ban@mail.com] |
||
+ | backend = systemd |
||
− | logpath = /var/log/auth.log |
||
maxretry = 5 |
maxretry = 5 |
||
− | Fail2Ban はバージョン 0.9 から {{ic|1=backend = systemd}} を設定することで systemd の journal から直接読み取ることができるようになっています。 |
+ | Fail2Ban はバージョン 0.9 から {{ic|1=backend = systemd}} を設定することで systemd の journal から直接情報を読み取ることができるようになっています。 |
− | 使っているファイアウォールが shorewall の場合: |
+ | 使っているファイアウォールが [[shorewall]] の場合: |
+ | [DEFAULT] |
||
+ | bantime = 864000 |
||
+ | ignoreip = 127.0.0.1/8 111.111.111.111 222.222.222.222 |
||
+ | |||
[ssh-shorewall] |
[ssh-shorewall] |
||
enabled = true |
enabled = true |
||
66行目: | 93行目: | ||
action = shorewall |
action = shorewall |
||
sendmail-whois[name=SSH, dest=your@mail.org, sender=fail2ban@mail.com] |
sendmail-whois[name=SSH, dest=your@mail.org, sender=fail2ban@mail.com] |
||
+ | backend = systemd |
||
− | logpath = /var/log/auth.log |
||
maxretry = 5 |
maxretry = 5 |
||
2016年12月20日 (火) 22:14時点における版
関連記事
Fail2ban は様々なテキストのログファイルをスキャンして、何度もパスワード認証を失敗している IP アドレスを拒否するようファイアウォールのルールを更新して ban します。Sshguard に似ています。
目次
インストール
公式リポジトリから fail2ban をインストールしてください。
誰かが 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 の設定によっては、ケイパビリティを追加する必要があるでしょう。詳しくは man capabilities
を見て下さい。
ファイルシステムのアクセス
[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
を追加してください。
設定
デフォルト jail
多数のサービスに対応しているデフォルトの jail は /etc/fail2ban/jail.conf
に存在していますが、デフォルトでは有効になっていません。セクションヘッダーを適当な .local
ファイルにコピーすることで有効にできます。
パス
Arch Linux で最初から使える path は存在しませんが、Fedora のデフォルト設定を使うことができます:
# cp /etc/fail2ban/paths-fedora.conf /etc/fail2ban/paths-archlinux.conf
設定を有効にするには、jail.local
ファイルに以下のセクションを追加・変更:
[INCLUDES] before = paths-archlinux.conf
fail2ban.service
を再起動して設定をテストしてください。fail2ban サービスが起動に失敗すると fail2ban-client から "file not found errors" が出力されます。paths-archlinux.conf
や jail.local
を必要に応じて調整してください。デフォルトの jail は設定を変更しないと動作しない場合があります。
カスタム SSH jail
/etc/fail2ban/jail.d/jail.conf
を編集して、以下のセクションを追加して信頼する IP アドレスのリストを更新します。
使っているファイアウォールが iptables の場合:
[DEFAULT] bantime = 864000 ignoreip = 127.0.0.1/8 111.111.111.111 222.222.222.222 [sshd] enabled = true filter = sshd action = iptables[name=SSH, port=ssh, protocol=tcp] sendmail-whois[name=SSH, dest=your@mail.org, sender=fail2ban@mail.com] backend = systemd maxretry = 5
Fail2Ban はバージョン 0.9 から backend = systemd
を設定することで systemd の journal から直接情報を読み取ることができるようになっています。
使っているファイアウォールが shorewall の場合:
[DEFAULT] bantime = 864000 ignoreip = 127.0.0.1/8 111.111.111.111 222.222.222.222 [ssh-shorewall] enabled = true filter = sshd action = shorewall sendmail-whois[name=SSH, dest=your@mail.org, sender=fail2ban@mail.com] backend = systemd maxretry = 5
また、/etc/ssh/sshd_config
に次を追加/変更してください:
LogLevel VERBOSE
そうしないとパスワード認証の失敗が正しく記録されません。