「Fail2ban」の版間の差分

提供: ArchWiki
ナビゲーションに移動 検索に移動
(同期)
6行目: 6行目:
 
{{Related|Sshguard}}
 
{{Related|Sshguard}}
 
{{Related articles end}}
 
{{Related articles end}}
{{warning|IP ブラックリストを使えば取るに足らない攻撃を防ぐことはできますが、別にデーモンを使う必要があログは残ります (特に攻撃者が何度もサーバーにアタックした場合 {{ic|/var}} を含むパーティションが一杯になってしまう可能性もあります)。さらに、攻撃者が IP アドレスを知っている場合、ソースヘッダーを偽装したパケットを送りつけてサーバーからロックウトさせるよう仕向けてくるかもしれません。[[SSH 鍵]]はこれらの問題に煩わされることなくブルートフォースの問題を解決する方法を提供します。}}
+
{{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 メールを送って欲しいときは、[[SSMTP]] (など) をセットアップする必要があります。
+
誰かが ban されたときに Fail2ban からメールを送場合、[[SSMTP]] などをセットアップする必要があります。
   
 
=== systemd ===
 
=== systemd ===
   
{{ic|fail2ban.service}} サービスユニットを使って下さい。使い方は [[systemd]] を参照
+
{{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}} を追加してください。
   
== SSH jail ==
+
== 設定 ==
 
{{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時点における版

関連記事

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

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

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

インストール

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

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

ノート: 環境によっては以下の設定で fail2ban が使えなくなる可能性があります。最初は以下の設定を使わないで fail2ban を試してください。

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

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.conf ファイルは上書きされてしまう可能性があるので、jail.local ファイルや jail.d/ ディレクトリ下の .conf ファイル (例: jail.d/ssh-iptables.conf) に修正を加えるのが推奨されます。

デフォルト 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.confjail.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/shorewall/shorewall.confBLACKLISTALL に設定することができます。この設定を行わないと IP アドレスを ban するルールは新しい接続にしか適用されません。

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

LogLevel VERBOSE

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