GNU/Linux >> Linux の 問題 >  >> Linux

CentOS8でFail2Banを使用してApacheとSSHを保護する方法

システム管理者の場合、さまざまな種類の攻撃からサーバーを保護することは、仕事の重要な部分です。 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を今すぐ始めましょう!


Linux
  1. CentOS、Ubuntu、LinuxMintにHadoopを使用してApacheHiveをインストールする方法

  2. CentOS 8にFail2banをインストールして設定する方法は?

  3. Apache と PHP でメモリ リークを調査するにはどうすればよいですか?

  1. CentOS8にFail2banをインストールして設定する方法

  2. CentOS7でSSHを保護するためにFail2banを使用する方法

  3. SSL を使用して CentOS 6.2 にソースから Apache 2.4.2 をインストールする方法

  1. CentOS7でApacheを使用してphpMyAdminをインストールして保護する方法

  2. CentOS7でApacheを使用してNextcloudをインストールおよび構成する方法

  3. CentOS7にApacheを使用してWordPressをインストールする方法