GNU/Linux >> Linux の 問題 >  >> Cent OS

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

Fail2banは、ブルートフォース攻撃からサーバーを保護するための最新のセキュリティツールです。サーバーをハッカーから自動的に保護します。これは、ログファイルを監視し、ログイン試行の繰り返しの失敗などの問題のあるアクションに対応することで機能します。このプロセスは、ファイアウォールチェーンに新しいルールを追加し、電子メール通知を送信することで構成されます。この簡単なドキュメントを使用して、fail2banを簡単にインストールおよび構成できます。

インストールを続行する前に、システムがアプリケーションのコンパイルとインストールに必要なすべてのソフトウェア要件を満たしていることを確認する必要があります。また、静的IPアドレスを使用して構成する必要があります。最初のステップで、CentOSで以下のコマンドを発行して、システムリポジトリとソフトウェアパッケージを更新します。

# yum update

CentOSへのFail2banのインストール

CentOS 7サーバーにFail2Banをインストールするには、最初にEPEL(Enterprise Linux用の追加パッケージ)リポジトリをインストールする必要があります。 EPELには、すべてのCentOSバージョン用の追加パッケージが含まれています。ルートから次のコマンドを実行して、このパッケージをインストールできます。

# yum install epel-release -y
# yum install fail2ban fail2ban-systemd

Fail2banにはいくつかの依存関係が必要です。これらはリポジトリから自動的にダウンロードされます。

fail2ban-firewalld
fail2ban-sendmail
fail2ban-server
systemd-python

CentOSでのFail2banの設定の構成

fail2banのデフォルト設定ファイルは/etc/fail2ban/jail.confにあります。
fail2banのすべての構成は、ローカルファイルで実行されます。 /etc/fail2ban/jail.conf をコピーする必要があります /etc/fail2ban/jail.local

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

コピー後、jail.local を使用してソフトウェアを構成およびカスタマイズする必要があります 構成ファイル。 jail.localファイルはjail.confファイルをオーバーライドし、カスタム構成の更新を安全にするために使用されます。

デフォルトのjail.localの主な構成

ファイルコードは、1つまたは複数のIPアドレスをホワイトリストまたは禁止し、禁止期間、失敗の試行回数などを設定するために実行されるコードの多くの行で構成されます。サービスをアクティブ化するために、有効ステータスをfalseからtrueに設定できます。構成ファイルで使用されているいくつかの用語を知っておく必要があります。

  • ignoreip :IPアドレス、CIDRマスク、またはDNSホストにすることができます。このリストに追加することで、任意のIPアドレスをホワイトリストに登録できます。スペースセパレータを使用して、複数のアドレスを定義できます。
  • bantime :ホストが禁止される秒数です。
  • Findtime :ホストを禁止する必要があるかどうかを確認するために使用されるパラメータです。ホストが最後の検索時にmaxretryを生成すると、禁止されます。
  • Maxretry :これは、ホストによる再試行回数の制限を設定するために使用されるパラメーターです。この制限を超えると、ホストは禁止されます。

CentOS 7サーバーでは、jail.localのバックエンドオプションをautoからsystemdに変更する必要があります。

# "backend" specifies the backend used to get files modification.
# Available options are "pyinotify", "gamin", "polling", "systemd" and "auto".
# This option can be overridden in each jail as well.
#
# pyinotify: requires pyinotify (a file alteration monitor) to be installed.
# If pyinotify is not installed, Fail2ban will use auto.
# gamin: requires Gamin (a file alteration monitor) to be installed.
# If Gamin is not installed, Fail2ban will use auto.
# polling: uses a polling algorithm which does not require external libraries.
# systemd: uses systemd python library to access the systemd journal.
# Specifying "logpath" is not valid for this backend.
# See "journalmatch" in the jails associated filter config
# auto: will try to use the following backends, in order:
# pyinotify, gamin, polling.
#
# Note: if systemd backend is chosen as the default but you enable a jail
# for which logs are present only in its own log files, specify some other
# backend for that jail (e.g. polling) and provide empty value for
# journalmatch. See https://github.com/fail2ban/fail2ban/issues/959#issuecomment-74901200
backend = systemd

SSH保護のためのfail2banの設定

CentOS 7では、デフォルトでjailは有効になっていません。SSH保護を有効にするには、jail.local の次の行のコメントを解除する必要があります。 以下のファイル:

# JAILS
# SSH servers
#

[sshd]

enabled =true#より積極的なsshdフィルター(sshd-ddos failregexを含む)を使用するには:#filter =sshd-aggressiveport =sshlogpath =%(sshd_log)sbackend =%(sshd_backend)s

有効なパラメータはtrueに設定され、保護を提供するために、保護を無効にするために、falseに設定できます。 filterパラメーターは、パス/etc/fail2ban/filter.d/sshd.confにあるfail2bansshd構成ファイルをチェックします。 。

パラメータactionは、/ etc / fail2ban / action.d/firewallcmd-ipset.confから入手可能なフィルタを使用して禁止する必要があるIPアドレスを導出するために使用されます。

  • Port :ポートをデフォルトのポートではなく2222に移動した場合、このパラメーターはport=2222などの新しい値に変更される可能性があります。デフォルトのポート22では、このパラメータを変更する必要はありません。
  • Logpath :ログファイルが保存されるパスを提供します。このログファイルはFail2Banによってスキャンされます。
  • Maxretry :失敗したログインエントリの上限を設定するために使用されます。
  • bantime :これは、ホストを禁止する必要がある秒数を設定するために使用されます。
  • filter/etc/fail2ban/filter.dにあるファイルの名前 これには、ログファイルを適切に解析するために使用されるfailregex情報が含まれています。

Fail2banサービスの有効化

このソフトウェアを実行するには、CentOSfirewalldサービスを有効にして開始する必要があります。

# systemctl enable firewalld
Created symlink from /etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service to /usr/lib/systemd/system/firewalld.service.
Created symlink from /etc/systemd/system/multi-user.target.wants/firewalld.service to /usr/lib/systemd/system/firewalld.service.
# systemctl start firewalld
# systemctl status firewalld
● firewalld.service - firewalld - dynamic firewall daemon
Loaded: loaded (/usr/lib/systemd/system/firewalld.service; enabled; vendor preset: enabled)
Active: active (running) since Sun 2018-01-14 10:57:34 UTC; 9s ago
Docs: man:firewalld(1)
Main PID: 19493 (firewalld)
CGroup: /system.slice/firewalld.service
└─19493 /usr/bin/python -Es /usr/sbin/firewalld --nofork --nopid

Now we can enable and start our fail2ban service by executing these commands below:

#systemctl enable fail2ban
#systemctl start fail2ban

構成を変更する場合は、必ずサービスを再起動して、以下のコマンドでそれらの変更を追加してください。

#systemctl restart fail2ban

Fail2banクライアントを使用する

Fail2banは、コマンドfail2ban-clientを提供します これは、コマンドラインからFail2banを実行するために使用できます。以下のさまざまなコマンドラインオプションを確認してください。

fail2ban-client COMMAND
  • start :サーバーと刑務所を起動します
  • reload :構成をリロードします
  • reload <JAIL> :刑務所をリロードします
  • stop :すべての刑務所を停止し、サーバーを終了します
  • status :サーバーの現在のステータスを取得します
  • ping :サーバーが稼働しているかどうかをテストします
  • help :この出力を返す
  • version :サーバーのバージョンを返す

たとえば、Fail2Banが実行されているかどうかを確認し、SSHd jailが有効になっている場合は、次のコマンドを実行します。

# fail2ban-client status
Status
|- Number of jail: 1
`- Jail list: sshd

このコマンドの詳細については、man fail2ban-clientを実行できます。 。

失敗したログイン試行の追跡

次のコマンドを使用してSSHログを確認し、sshポートを介してサーバーにログインしようとして失敗したかどうかを確認できます。この出力と同様に、さまざまなIPアドレスから失敗したルートパスワードの試行のリストを取得できます。

Jan 14 05:08:58 li226-12 sshd[14786]: Failed password for root from 67.171.30.161 port 43374 ssh2
Jan 14 05:09:00 li226-12 sshd[14786]: Failed password for root from 67.171.30.161 port 43374 ssh2
Jan 14 05:09:02 li226-12 sshd[14786]: Failed password for root from 67.171.30.161 port 43374 ssh2
Jan 14 05:09:04 li226-12 sshd[14786]: Failed password for root from 67.171.30.161 port 43374 ssh2
Jan 14 05:09:06 li226-12 sshd[14786]: Failed password for root from 67.171.30.161 port 43374 ssh2
Jan 14 05:09:08 li226-12 sshd[14786]: Failed password for root from 67.171.30.161 port 43374 ssh2

以下のコマンドで、失敗の最大試行回数に達した禁止IPのリストを表示できます。

#iptables -L -n

IPアドレスの禁止を解除する

禁止リストからIPアドレスを削除するために、パラメーターIPADDRESSは、ホワイトリストに登録する必要のある適切なIPに設定されます。 「sshd」という名前は刑務所の名前です。この場合は、上記で構成した「sshd」刑務所です。同じコマンドに対して次のコマンドを実行できます。

#fail2ban-client set sshd unbanip IPADDR

まとめ

Fail2banはバックグラウンドで動作し、ログファイルを継続的にスキャンして、異常なログインパターンやセキュリティ違反の試みがないか調べます。この記事では、このトピックの簡単な紹介を提供します。これについての詳細は、このFail2banwikiで入手できます。これがお役に立てば幸いです。これに関する貴重なコメントや提案を投稿してください。


Cent OS
  1. CentOS7にFail2Banをインストールする方法

  2. Centos8でSaltを使用する方法

  3. CentOSでSSHポートを変更する方法

  1. CentOS8でSSHキーを設定する方法

  2. CentOS8でSSHキーを設定する方法

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

  1. CentOS7でSSHキーを設定する方法

  2. CentOS8にCurlをインストールして使用する方法

  3. CentOS8にTerraformをインストールして使用する方法