セキュリティ · 2 min read · Dec 30, 2025

OpenSUSE 10.3でFail2banを使用してブルートフォース攻撃を防ぐ

OpenSUSE 10.3でFail2banを使用してブルートフォース攻撃を防ぐ

バージョン 1.0
著者: Falko Timme

この記事では、OpenSUSE 10.3システムにfail2banをインストールおよび構成する方法を示します。Fail2banは、SSH、FTP、SMTP、Apacheなどのさまざまなサービスへのログイン試行を監視するツールであり、同じIPアドレスまたはホストから何度も失敗したログイン試行が見つかった場合、fail2banはiptablesファイアウォールルールを使用してそのIPアドレス/ホストからのさらなるログイン試行を停止します。

この文書には、いかなる種類の保証もありません!これは、そのようなシステムを設定する唯一の方法ではないことを言いたいです。この目標を達成する方法はたくさんありますが、これが私が取る方法です。これがあなたにとって機能するという保証はありません!

1 予備ノート

Fail2banは、私がこのチュートリアルで取り上げたDenyHostsに似ています: https://www.howtoforge.com/preventing_ssh_dictionary_attacks_with_denyhosts。しかし、SSHに焦点を当てたDenyHostsとは異なり、fail2banはログイン試行をログファイルに書き込む任意のサービスを監視するように構成でき、IPアドレス/ホストをブロックするために/etc/hosts.denyのみを使用するのではなく、fail2banはiptablesと/etc/hosts.denyを使用できます。

この例では、fail2banをSSHサーバー、Proftpdサーバー、.htaccess/.htpasswdで保護されたウェブサイトへのログイン試行、Courier POP3およびCourier IMAP、SASL(メール送信用)を監視するように構成します。OpenSUSE 10.3用に利用可能なfail2banパッケージをインストールします。デフォルトの構成が付属していますが、残念ながらその構成は前述のほとんどのサービスにはうまく機能しません。したがって、私がテストして機能するカスタマイズされたfail2ban構成を作成します。

2 fail2banのインストール

Fail2banはPackmanリポジトリから入手可能なので、まずそれを有効にする必要があります:

yast2 

YaSTで、ソフトウェア > コミュニティリポジトリに移動します:

次に、Packmanリポジトリを有効にして[完了]をクリックします:

その後、YaSTを終了します:

その後、次のようにしてfail2banをインストールできます:

yast2 -i fail2ban

次に、fail2banのシステム起動リンクを作成し、起動する必要があります:

chkconfig –add fail2ban
/etc/init.d/fail2ban start

すべてのfail2ban構成ファイルは/etc/fail2banディレクトリにあります。

3 fail2banの構成

fail2banのデフォルトの動作は、/etc/fail2ban/jail.confファイルで構成されています。それを見てみましょう。理解するのは難しくありません。[DEFAULT]セクションがあり、他のセクションでデフォルトオプションがオーバーライドされない限り、すべての他のセクションに適用されます。

ここでは、いくつかの構成オプションを説明します:

  • ignoreip: fail2banによってブロックされないIPアドレスのスペース区切りリストです。たとえば、サーバーに接続しているコンピュータが静的IPアドレスを持っている場合、ここにリストすることをお勧めします。
  • bantime: fail2banによってキャッチされた場合にホストがブロックされる秒数(600秒 = 10分)。
  • maxretry: fail2banによってホストがブロックされる前の最大失敗ログイン試行回数。
  • filter: /etc/fail2ban/filter.d内の適切なフィルタファイルを指します。
  • action: /etc/fail2ban/action.d内の適切なアクションファイルを指します。
  • logpath: fail2banが失敗したログイン試行をチェックするログファイルです。

私の/etc/fail2ban/jail.confファイルは次のようになります:

vi /etc/fail2ban/jail.conf

| # Fail2Ban構成ファイル # # 著者: Cyril Jaquier # # $Revision: 611 $ # # DEFAULTはオプションのグローバル定義を許可します。これらはその後、各監獄でオーバーライドできます。 [DEFAULT] # "ignoreip"はIPアドレス、CIDRマスク、またはDNSホストである可能性があります。Fail2banは、このリスト内のアドレスに一致するホストを禁止しません。スペース区切りで複数のアドレスを定義できます。 ignoreip = 127.0.0.1 192.168.0.99 # "bantime"はホストが禁止される秒数です。 bantime = 600 # ホストが"maxretry"を生成した場合、禁止されます。 findtime = 600 # "maxretry"はホストが禁止される前の失敗の数です。 maxretry = 3 # "backend"はファイルの変更を取得するために使用されるバックエンドを指定します。利用可能なオプションは"gamin"、"polling"、および"auto"です。このオプションは、各監獄でもオーバーライドできます(ある監獄には"gamin"を、別の監獄には"polling"を使用します)。 # # gamin: Gamin(ファイル変更モニター)がインストールされている必要があります。Gaminがインストールされていない場合、Fail2banはポーリングを使用します。 # polling: 外部ライブラリを必要としないポーリングアルゴリズムを使用します。 # auto: 利用可能な場合はGaminを選択し、そうでない場合はポーリングを選択します。 backend = auto # この監獄はFail2ban 0.6の標準構成に対応しています。 # mail-whoisアクションは、本文にwhoisリクエストを含む通知メールを送信します。 [ssh-iptables] enabled = true filter = sshd action = iptables[name=SSH, port=ssh, protocol=tcp] sendmail-whois[name=SSH, [email protected], [email protected]] logpath = /var/log/messages maxretry = 5 [proftpd-iptables] enabled = true filter = proftpd action = iptables[name=ProFTPD, port=ftp, protocol=tcp] sendmail-whois[name=ProFTPD, [email protected]] logpath = /var/log/messages maxretry = 6 # この監獄はバックエンドを"polling"に強制します。 [sasl-iptables] enabled = true filter = sasl backend = polling action = iptables[name=sasl, port=smtp, protocol=tcp] sendmail-whois[name=sasl, [email protected]] logpath = /var/log/mail # ここでは、Netfilter/Iptablesの代わりにTCP-Wrappersを使用します。"ignoreregex"は、ユーザー"myuser"を禁止しないために使用されます。 [ssh-tcpwrapper] enabled = false filter = sshd action = hostsdeny sendmail-whois[name=SSH, [email protected]] ignoreregex = for myuser from logpath = /var/log/messages # この監獄は"logpath"のワイルドカードの使用を示しています。 # さらに、新しい行で他のファイルを指定することも可能です。 [apache-tcpwrapper] enabled = true filter = apache-auth action = hostsdeny logpath = /var/log/apache2/error_log maxretry = 6 # hosts.denyパスは、"file"引数で定義できます。 [postfix-tcpwrapper] enabled = true filter = postfix action = hostsdeny sendmail[name=Postfix, [email protected]] logpath = /var/log/mail bantime = 300 # 誰も禁止しません。ただし、リモートホストに関する情報を報告します。 # 通知は最大で600秒ごとに送信されます(bantime)。 [vsftpd-notification] enabled = false filter = vsftpd action = sendmail-whois[name=VSFTPD, [email protected]] logpath = /var/log/messages maxretry = 5 bantime = 1800 # 上記と同じですが、IPアドレスを禁止します。 [vsftpd-iptables] enabled = false filter = vsftpd action = iptables[name=VSFTPD, port=ftp, protocol=tcp] sendmail-whois[name=VSFTPD, [email protected]] logpath = /var/log/messages maxretry = 5 bantime = 1800 # エージェントがスパムロボットを特定しているホストを禁止します。 # メール出力はバッファリングされます。 [apache-badbots] enabled = true filter = apache-badbots action = iptables-multiport[name=BadBots, port="http,https"] sendmail-buffered[name=BadBots, lines=5, [email protected]] logpath = /var/log/apache2/access_log bantime = 172800 maxretry = 1 [courierpop3] enabled = true port = pop3 filter = courierlogin action = iptables[name=%(__name__)s, port=%(port)s] logpath = /var/log/mail maxretry = 5 [courierimap] enabled = true port = imap2 filter = courierlogin action = iptables[name=%(__name__)s, port=%(port)s] logpath = /var/log/mail maxretry = 5 |

私のクライアントコンピュータの静的IPアドレスは192.168.0.99であり、ロックアウトされたくないので、ignoreipリストに追加しました。

SSH、Apache、Proftpd、Courier-POP3、Courier-IMAP、およびSaslへのログイン試行を制御したいので、これらのサービスのenabledをtrueに設定し、他のすべてのサービスをfalseに設定しました。SSHなどの一部のサービスは、iptablesまたはTCPWrappers(/etc/hosts.deny)によってブロックできます。どの方法を好むかは自分で決めてください。

誰かがfail2banによってブロックされたときに通知を受け取るために、メールアドレス[email protected]を自分のメールアドレスに置き換えることを忘れないでください。

ファイルをデフォルトの/etc/fail2ban/jail.confと比較すると、OpenSUSE 10.3に対してデフォルトの/etc/fail2ban/jail.confのログファイルが正しくないため、いくつかのログファイルを変更したことにも気付くでしょう。

fail2ban構成を変更するたびに、fail2banを再起動する必要があるので、今からそれを行います:

/etc/init.d/fail2ban restart

これで完了です。Fail2banは/var/log/fail2ban.logにログを記録するので、そのファイルを確認して、どのホストがブロックされたかを確認できます。fail2banによってホストがブロックされた場合、次のようになります:

2007-10-07 17:49:09,466 fail2ban.actions: WARNING [apache-tcpwrapper] Ban 1.2.3.4
2007-10-07 18:08:33,213 fail2ban.actions: WARNING [sasl-iptables] Ban 1.2.3.4
2007-10-07 18:26:37,769 fail2ban.actions: WARNING [courierlogin] Ban 1.2.3.4
2007-10-07 18:39:06,765 fail2ban.actions: WARNING [courierimap] Ban 1.2.3.4

また、ファイアウォールを確認して、現在ブロックされているホストがあるかどうかを確認できます。単に実行します

iptables -L  

TCPWrappersを使用してホストをブロックするサービスについては、/etc/hosts.denyを確認してください。

リンク

Share: X/Twitter LinkedIn

新しい投稿を受信箱で受け取る

スパムはありません。いつでも購読を解除できます。