システム管理者の場合、さまざまな種類の攻撃からサーバーを保護することは、仕事の重要な部分です。 Fail2Banファイアウォールは、これを実現するのに役立ちます。 Fail2Banは、システムのセキュリティを侵害しようとしている悪意のあるIPをブロックするために使用されるPython言語で記述された侵入防止システムです。これは、さまざまなログファイルをスキャンし、指定された禁止時間に頻繁にログインを試行しようとしているIPをブロックすることで機能します。また、攻撃の強度と頻度を監視することもできます。シンプルなため、DOS、DDOS、ブルートフォース攻撃からサーバーを保護するための推奨ソフトウェアと見なされています。
このチュートリアルでは、CentOS8でFail2Banを使用してSSHおよびApacheサーバーを保護する方法を示します。
前提条件
- Atlantic.netクラウドプラットフォーム上の新しいCentOS8VPS。
- サーバーで構成されているrootパスワード。
ステップ1-Atlantic.Netクラウドサーバーを作成する
まず、Atlantic.Netクラウドサーバーにログインします。 1GB以上のRAMを搭載したオペレーティングシステムとしてCentOS8を選択して、新しいサーバーを作成します。 SSH経由でクラウドサーバーに接続し、ページの上部で強調表示されているクレデンシャルを使用してログインします。
CentOS 8サーバーにログインしたら、次のコマンドを実行して、ベースシステムを最新の利用可能なパッケージで更新します。
dnf update -y
ステップ2–Fail2Banをインストールする
次のコマンドでインストールできます:
dnf install epel-release -y
EPELリポジトリをインストールした後、次のコマンドを使用してFail2Banをインストールできます。
dnf install fail2ban -y
インストールしたら、Fail2Banサービスを開始し、システムの再起動後に開始できるようにします。
systemctl start fail2ban systemctl enable fail2ban
ステップ3–Fail2BanでSSHを保護する
このセクションでは、Fail2Banを使用してSSHサーバーを保護する方法を学習します。
SSH用にFail2Banを構成する
次のコマンドを使用して、SSH用のjail.localファイルを作成できます。
nano /etc/fail2ban/jail.local
次の行を追加します:
[DEFAULT] ignoreip = your-server-ip bantime = 300 findtime = 300 maxretry = 3 banaction = iptables-multiport backend = systemd [sshd] enabled = true
終了したら、ファイルを保存して閉じます。次に、Fail2Banサービスを再起動して、変更を適用します。
systemctl restart fail2ban
次のコマンドを使用して、SSHjailのステータスを確認できるようになりました。
fail2ban-client status
SSHジェイルが有効になっていることを確認する必要があります:
Status |- Number of jail: 1 `- Jail list: sshd
各パラメータの簡単な説明を以下に示します:
- 無視する :無視するIPアドレスを定義するために使用されます。
- バンタイム :IPアドレスが禁止される秒数を定義するために使用されます。
- findtime :IPが禁止されるまでのログイン試行間の時間を定義するために使用されます。
- maxretry :IPアドレスが禁止されるまでに行われる試行回数を定義するために使用されます。
- 禁止 :禁止措置。
- 有効 :このオプションは、SSHサービスの保護を有効にします。
パスワード攻撃に対するSSHのテスト
この時点で、Fail2Banがインストールおよび構成されています。それが機能しているかどうかをテストする時が来ました。
これを行うには、リモートマシンに移動し、サーバーのIPアドレスにSSHで接続してみます。
ssh [email protected]
ルートパスワードの入力を求められます。間違ったパスワードを何度も入力してください。ログイン試行の制限に達すると、IPアドレスがブロックされます。
次のコマンドを使用して、ブロックされたIPアドレスを確認できます。
fail2ban-client status sshd
次の出力にブロックされたIPが表示されます。
Status for the jail: sshd |- Filter | |- Currently failed: 7 | |- Total failed: 39 | `- Journal matches: _SYSTEMD_UNIT=sshd.service + _COMM=sshd `- Actions |- Currently banned: 1 |- Total banned: 2 `- Banned IP list: 190.8.80.42
失敗したログインのSSHログを確認することもできます:
tail -5 /var/log/secure | grep 'Failed password'
次の出力が表示されます。
Mar 1 03:55:03 centos8 sshd[11196]: Failed password for invalid user bpadmin from 190.8.80.42 port 55738 ssh2
特定のIPアドレスを手動でブロックおよびブロック解除することもできます。
たとえば、IP 190.8.80.42のブロックを解除するには、次のコマンドを実行します。
fail2ban-client set sshd unbanip 190.8.80.42
IP 190.8.80.42をブロックするには、次のコマンドを実行します。
fail2ban-client set sshd banip 190.8.80.42
ステップ4–Fail2BanでApacheを保護する
さまざまな種類の攻撃からApacheWebサーバーを保護することもできます。以下に示すように、Apache用にjail.localファイルを構成する必要があります。
nano /etc/fail2ban/jail.local
ファイルの最後に次の行を追加します。
[apache-auth] enabled = true port = http,https logpath = %(apache_error_log)s [apache-badbots] enabled = true port = http,https logpath = %(apache_access_log)s bantime = 48h maxretry = 1 [apache-noscript] enabled = true port = http,https logpath = %(apache_error_log)s
終了したら、ファイルを保存して閉じます。次に、Fail2Banサービスを再起動して、変更を実装します。
systemctl restart fail2ban
次のコマンドを使用して、すべての刑務所のステータスを確認できるようになりました。
fail2ban-client status
次の出力が表示されます。
Status |- Number of jail: 5 `- Jail list: apache-auth, apache-badbots, apache-noscript, sshd
各刑務所の簡単な説明を以下に示します:
- apache-auth :このjailは、ログイン試行の失敗からApacheを保護するために使用されます。
- apache-badbots :この刑務所は、電子メールアドレスを求めてWebをクロールするスパマーロボットをエージェントが識別するホストを禁止するために使用されます。
- apache-noscript :実行するWebサイト上のスクリプトを検索しようとしているIPをブロックするために使用されます。
結論
上記のチュートリアルでは、Fail2Banを使用してSSHとApacheサーバーを保護する方法を学びました。これは、Linuxシステムにセキュリティを追加する非常に便利な侵入防止システムです。これで、特定のセキュリティニーズに合うFail2Banを設定できます。 Atlantic.NetのVPSホスティングでFail2Banを今すぐ始めましょう!