ステータス:非推奨

この記事では、サポートされなくなったバージョンのCentOSについて説明します。 現在CentOS6を実行しているサーバーを運用している場合は、サポートされているバージョンのCentOSにアップグレードまたは移行することを強くお勧めします。

理由: CentOS 6は2020年11月30日に保守終了(EOL)に達し、セキュリティパッチまたはアップデートを受信しなくなりました。 このため、このガイドは維持されなくなりました。

代わりに参照してください:
このガイドは参照として役立つ場合がありますが、他のCentOSリリースでは機能しない場合があります。 可能な場合は、使用しているCentOSのバージョン用に作成されたガイドを使用することを強くお勧めします。

次のDigitalOceanチュートリアルは、CentOS 7サーバーでfail2banを使用してSSHサービスデーモンを保護する方法の概要を示しているため、すぐに役立つ可能性があります。

Fail2Banについて

サーバーは孤立して存在するわけではなく、最も基本的なSSH構成しかないサーバーは、ブルートフォース攻撃に対して脆弱である可能性があります。 fail2banは、悪意のある兆候からサーバーを自動的に保護する方法を提供します。 このプログラムは、ログファイルをスキャンし、ログイン試行の繰り返しの失敗などの問題のあるアクションに対応することで機能します。

ステップ1-Fail2Banをインストールする

fail2banはCentOSから利用できないため、EPELリポジトリをダウンロードすることから始める必要があります。

rpm -Uvh http://dl.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm

fail2banをインストールしてフォローアップします。

yum install fail2ban

ステップ2—構成ファイルをコピーします

デフォルトのfail2ban構成ファイルは、/ etc / fail2ban/jail.confにあります。 ただし、そのファイルで構成作業を行うべきではなく、代わりにそのファイルのローカルコピーを作成する必要があります。

cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local

ファイルがコピーされた後、新しいjail.localファイル内ですべての変更を行うことができます。 保護が必要な可能性のあるサービスの多くは、すでにファイルに含まれています。 それぞれが独自のセクションにあり、構成され、オフになっています。

ステップ3—Jail.Localでデフォルトを構成する

新しいfail2ban構成ファイルを開きます。

vi /etc/fail2ban/jail.local

デフォルトの最初のセクションでは、fail2banが従う基本的なルールについて説明します。 仮想プライベートサーバーにさらに微妙な保護を設定する場合は、各セクションの詳細をカスタマイズできます。

以下のデフォルトのセクションをご覧ください。

[DEFAULT]

# "ignoreip" can be an IP address, a CIDR mask or a DNS host. Fail2ban will not
# ban a host which matches an address in this list. Several addresses can be
# defined using space separator.
ignoreip = 127.0.0.1

# "bantime" is the number of seconds that a host is banned.
bantime  = 3600

# A host is banned if it has generated "maxretry" during the last "findtime"
# seconds.
findtime  = 600

# "maxretry" is the number of failures before a host get banned.
maxretry = 3

個人のIPアドレスをignoreip行に書き込みます。 各アドレスはスペースで区切ることができます。 IgnoreIPを使用すると、特定のIPアドレスをホワイトリストに登録し、それらがVPSからロックアウトされていないことを確認できます。 あなたの住所を含めることはあなたがあなた自身の仮想プライベートサーバーからあなた自身を誤って禁止しないことを保証するでしょう。

次のステップは、 bantime を決定することです。これは、ホストがいずれかのルールに違反していることが判明した場合に、ホストがサーバーからブロックされる秒数です。 これは、ボットが禁止されると次のターゲットに移動する場合に特に便利です。 デフォルトは10分に設定されています。必要に応じて、これを1時間(またはそれ以上)に上げることができます。

Maxretry は、ホストが禁止時間の長さにわたって禁止される前に、ホストが行う可能性のある誤ったログイン試行の量です。

Findtime は、ホストがログインする必要がある時間を指します。 デフォルト設定は10分です。 これは、ホストが指定された10分間に最大回数を超えてログインしようとして失敗した場合、そのホストは禁止されることを意味します。

ステップ4(オプション)-Jail.Localでssh-iptablesセクションを設定します

SSHの詳細セクションは、構成の少し下にあり、すでにセットアップされてオンになっています。 このセクション内で変更を加える必要はありませんが、各行の詳細は以下にあります。

[ssh-iptables]

enabled  = true
filter   = sshd
action   = iptables[name=SSH, port=ssh, protocol=tcp]
           sendmail-whois[name=SSH, dest=root, [email protected]]
logpath  = /var/log/secure
maxretry = 5

Enabled は、SSH保護がオンになっていることを意味します。 「false」という単語でオフにすることができます。

filter は、デフォルトでsshdに設定されており、fail2banusesが一致を見つけるために使用するルールを含む構成ファイルを参照します。 名前はファイル拡張子の短縮版です。 たとえば、sshdは/etc/fail2ban/filter.d/sshd.confを参照します。

アクションは、fail2banが一致するIPアドレスを禁止するために実行する手順を説明しています。 フィルタエントリと同様に、各アクションはaction.dディレクトリ内のファイルを参照します。 デフォルトの禁止アクション「iptables」は、/ etc / fail2ban / action.d/iptables.confにあります。

「iptables」の詳細で、fail2banをさらにカスタマイズできます。 たとえば、非標準のポートを使用している場合は、角かっこ内のポート番号を一致するように変更して、行を次のように見せることができます。

 eg. iptables[name=SSH, port=30000, protocol=tcp]

この行でも、fail2banで監視するプロトコルに応じて、プロトコルをTCPからUDPに変更できます。

仮想プライベートサーバーにメールサーバーを設定している場合、Fail2BanはIPアドレスを禁止するときにメールで通知することができます。 デフォルトの場合、sendmail-whoisは、/ etc / fail2ban / action.d/sendmail-whois.confにあるアクションを参照します。

ログパスは、fail2banが追跡するログの場所を指します。

SSHセクション内のmaxtry 行には、デフォルトオプションと同じ定義があります。 ただし、複数のサービスを有効にしていて、それぞれに特定の値を設定する場合は、ここでSSHの新しい最大再試行回数を設定できます。

ステップ5—Fail2Banを再起動します

fail2ban構成に変更を加えた後は、必ずFail2Banを再起動してください。

sudo service fail2ban restart

fail2banがIPテーブル内で有効にするルールを確認できます。

iptables -L
EtelSverdlov著