CentOSでFail2Banをセットアップする方法

Fail2Banの概要

デフォルトでは、クライアントはポート22を使用してSSHに接続します。これは既知のポートであるため、デフォルト構成は多くのブルートフォース攻撃に対して脆弱です。Fail2Banは、これらの攻撃からサーバーを自動的に保護するソリューションです。プログラムはバックグラウンドで実行され、ログファイルをスキャンして攻撃しているIPを検出し、SSHへのアクセスを自動的に禁止します。

Fail2Banのインストール

このチュートリアルでは、EPELリポジトリを介してCentOS 6にFail2Banをインストールします。次のコマンドを実行します。

yum install epel-release
yum install fail2ban

説明

  • yum install epel-release:EPELリポジトリー(Enterprise Linuxの追加パッケージ)をインストールします。
  • yum install fail2ban:EPELリポジトリーからFail2Banをインストールします。

Fail2Ban設定の構成

Fail2Ban構成ファイルを開きます。

nano /etc/fail2ban/jail.conf

ファイルには、以下に示すようないくつかのパラメーターが表示されます。必要に応じて値を調整します。

[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 = 600

# 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

説明

  • ignoreip:このリストのアドレスに一致するホストを禁止しません。スペース区切りを使用して、いくつかのアドレスを定義できます。この行に個人のIPを記述します。
  • bantime:ホストが禁止されている秒数。
  • findtimemaxretry最後に生成されたホストは禁止されfindtimeます。
  • maxretry:ホストが禁止されるまでの失敗の数。

SSHを保護するためのFail2Banの構成

まず、構成ファイルを作成する必要があります。

nano /etc/fail2ban/jail.local

以下の行をコピーして、ファイルに貼り付けます。

[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:保護を有効にします。オフにする場合は、値をfalseに変更します。
  • filter:デフォルトでは、ファイルを参照するsshdに設定されています/etc/fail2ban/filter.d/sshd.conf
  • action:Fail2Banは、フィルターに一致するIPを禁止します/etc/fail2ban/action.d/iptables.conf。以前にSSHポートを変更したことがある場合はport=ssh、新しいポートに変更しport=2222ます。ポート22を使用している場合、値を変更する必要はありません。
  • logpath:Fail2Banが使用するログファイルのパス。
  • maxretry:失敗したログイン試行の最大数。

Fail2Banサービスの開始

以下の2つのコマンドを実行して、Fail2Banサービスを開始します。

chkconfig --level 23 fail2ban on
service fail2ban start

最後に、iptablesFail2Banによって追加されたルールがあるかどうかを確認します。

iptables -L

結果はこの出力のようになります。

Chain INPUT (policy ACCEPT)
target prot opt source destination
f2b-SSH tcp -- anywhere anywhere tcp dpt:EtherNet/IP-1

Chain FORWARD (policy ACCEPT)
target prot opt source destination

Chain OUTPUT (policy ACCEPT)
target prot opt source destination

Chain f2b-SSH (1 references)
target prot opt source destination
RETURN all -- anywhere anywhere

失敗したログイン試行を追跡する方法

このコマンドを使用して、サーバーでログイン試行が失敗したかどうかを確認できます(攻撃の可能性があります)。

cat /var/log/secure | grep 'Failed password'

結果は次の行のようになります。

Dec  6 22:47:12 vultr sshd[7942]: Failed password for root from 43.229.53.67 port 23021 ssh2
Dec  6 22:47:15 vultr sshd[7944]: Failed password for root from 43.229.53.67 port 40996 ssh2
Dec  6 22:47:16 vultr sshd[7944]: Failed password for root from 43.229.53.67 port 40996 ssh2
Dec  6 22:47:18 vultr sshd[7944]: Failed password for root from 43.229.53.67 port 40996 ssh2
Dec  6 22:47:31 vultr sshd[7948]: Failed password for root from 43.229.53.67 port 29907 ssh2
Dec  6 22:47:34 vultr sshd[7948]: Failed password for root from 43.229.53.67 port 29907 ssh2
Dec  6 22:47:36 vultr sshd[7948]: Failed password for root from 43.229.53.67 port 29907 ssh2
Dec  6 22:47:39 vultr sshd[7950]: Failed password for root from 43.229.53.67 port 48386 ssh2
Dec  6 22:47:41 vultr sshd[7950]: Failed password for root from 43.229.53.67 port 48386 ssh2
Dec  6 22:47:43 vultr sshd[7950]: Failed password for root from 43.229.53.67 port 48386 ssh2
Dec  6 22:47:47 vultr sshd[7952]: Failed password for root from 43.229.53.67 port 62846 ssh2
Dec  6 22:47:49 vultr sshd[7952]: Failed password for root from 43.229.53.67 port 62846 ssh2

禁止されているIPを表示するには、次のコマンドを使用します。

iptables -L -n

禁止リストからIPアドレスを削除するには、次のコマンドを実行します。banned_ip禁止を解除するIPに変更します。

iptables -D f2b-SSH -s banned_ip -j DROP


Leave a Comment

CentOS 7にApacheをインストールする方法

CentOS 7にApacheをインストールする方法

CentOS 7サーバーにApache 2.4をインストールする方法を説明します。安定したウェブサーバーを構築するための前提条件と手順を解説します。

FreeBSD 11.1にBlacklistdをインストールする方法

FreeBSD 11.1にBlacklistdをインストールする方法

FreeBSD 11.1におけるBlacklistdのインストール方法について詳しく解説します。この方法を通じて、強力なセキュリティ対策を実装できます。

Windows Serverのサーバーマネージャーを使用した複数サーバーの管理

Windows Serverのサーバーマネージャーを使用した複数サーバーの管理

サーバーマネージャーを使用して、Windows Serverの管理が向上します。セキュリティリスクを軽減し、効率的な管理を実現します。

CentOS 7にSeafileサーバーをインストールする方法

CentOS 7にSeafileサーバーをインストールする方法

CentOS 7にSeafileサーバーをインストールする方法。Seafile(コミュニティバージョン)は、ownCloudに似た無料のオープンソースファイル同期および共有ソリューションです。

DebianでSnortを設定する方法

DebianでSnortを設定する方法

Snortは無料のネットワーク侵入検知システムです。最新の方法で、SnortをDebianにインストールし、設定する手順を紹介します。ネットワークのセキュリティを強化しましょう。

CentOS 7にGraylogサーバーをインストールする方法

CentOS 7にGraylogサーバーをインストールする方法

CentOS 7にGraylogサーバーをインストールし、ログ管理を行う方法を学びます。

WindowsでhMailServerを使用してメールサーバーを構築する

WindowsでhMailServerを使用してメールサーバーを構築する

WindowsサーバーでWebサイトを実行している場合、電子メールも受信できるようにするためにhMailServerを使用する方法を解説します。

Ubuntu 19.04にFiveMサーバーをインストールする方法

Ubuntu 19.04にFiveMサーバーをインストールする方法

FiveMサーバーをUbuntu 19.04にインストールするための詳細なガイド。必要条件からインストール、起動、トラブルシューティングまで、すべてのステップを含みます。

WsgiDAVを使用してDebian 10にWebDAVをデプロイする

WsgiDAVを使用してDebian 10にWebDAVをデプロイする

Debian 10にWebDAVをデプロイする方法を学び、WsgiDAVとSSL証明書で安全な接続を実現しましょう。

ヘルスケア2021における人工知能の影響

ヘルスケア2021における人工知能の影響

ヘルスケアにおけるAIは、過去数十年から大きな飛躍を遂げました。したがって、ヘルスケアにおけるAIの未来は、日々成長を続けています。