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

SSHGUARDを使用してSSHブルートフォース攻撃をブロックする方法

SSHGuardは、ブルートフォース攻撃からホストを保護するオープンソースデーモンです。これは、システムログの監視と集約、攻撃の検出、Linuxファイアウォールバックエンドの1つ(iptables、FirewallD、pf、ipfw)を使用した攻撃者のブロックを通じて実現されます。

SSHGuardは、当初、OpenSSHサービスに追加の保護レイヤーを提供するように設計されていましたが、VsftpdやPostfixなどの幅広いサービスも保護します。 Syslog、Syslog-ng、rawログファイルなど、いくつかのログ形式を認識します。

SSHGuardはFail2banと非常に似ていますが、Cで記述されており(Fail2banはPythonで記述されています)、軽量で、提供される機能が少なくなっています。

このガイドでは、LinuxサーバーでSSHブルートフォース攻撃をブロックするようにSSHGuardをインストールおよび構成する方法を示します。

ステップ1:LinuxにSSHGuardをインストールする

LinuxへのSSHGuardのインストールから始めます。

Debian/UbuntuにSSHGuardをインストールする

まず、パッケージリストを更新してから、aptパッケージマネージャーを使用してデフォルトのリポジトリからSSHGuardをインストールします。

$ sudo apt update
$ sudo apt install sshguard

インストールすると、SSHGuardサービスが自動的に開始され、次のコマンドを使用してこれを確認できます。

$ sudo systemctl status sshguard

Yum/RHELシステムにSSHGuardをインストールする

CentOSなどのRHELベースのディストリビューションの場合は、以下のコマンドで提供されるようにEPELリポジトリをインストールすることから始めます。

$ sudo yum install epel-release

または

$ sudo dnf install epel-release

EPELを配置したら、先に進み、dnfパッケージマネージャーを使用してSSHGuardをインストールします。

$ sudo dnf install sshguard

インストールしたら、SSHGuardを起動して、システムの起動時または再起動時に起動するように設定します。

$ sudo systemctl start sshguard
$ sudo systemctl enable sshguard

SSHGuardが期待どおりに実行されていることを確認してください。

$ sudo systemctl status sshguard

ステップ2:LinuxでのSSHGuard構成

SSHGuardは、/ var / log / auth.log、/ var / log / secure systemdジャーナル、およびsyslog-ngログファイルをアクティブに監視して、ログイン試行の失敗を確認します。

ログインに失敗するたびに、リモートホストは限られた時間だけ禁止されます。この時間は、デフォルトで120秒に設定されています。その後、ログイン試行が連続して失敗するたびに、禁止時間は1.5倍になります。

他のパラメータに加えて、問題のあるホストが禁止される時間は、sshguard.confファイルで指定されます。図のようにvimエディターを使用して構成ファイルにアクセスできます。

$ sudo vim /etc/sshguard/sshguard.conf

RHELベースのディストリビューションでは、設定ファイルは次のパスにあります。

$ sudo vim /etc/sshguard.conf

これは、Ubuntu/Debianから見た場合の構成ファイルのサンプルです。

主なオプションに焦点を当てる:

  • バックエンド ディレクティブは、バックエンド実行可能ファイルのフルパスを指します。この例では、IPtablesがデフォルトのファイアウォールバックエンドとして設定されていることがわかります。
  • THRESHOLD ディレクティブは、攻撃スコアが指定された値を超えると、攻撃者をブロックします。
  • BLOCK_TIME オプションは、ログイン試行が連続して失敗するたびに攻撃者がブロックされる秒数です。デフォルトでは、これは最初の試行後に120に設定されます。これは、ログイン試行が連続して失敗するたびに増加します。
  • DETECTION_TIME オプションとは、攻撃者がスコアをリセットする前に、攻撃者がシステムに登録または記憶されている時間を秒単位で示します。
  • WHITELIST_file オプションは、ブラックリストに登録されていないホストを含​​むホワイトリストファイルのフルパスを指します。

ステップ3:SSHブルートフォース攻撃をブロックするようにSSHGuardを構成する

ブルートフォース攻撃を防ぐには、sshguardと連携するように次のファイアウォールを構成する必要があります。

UFWを使用してSSH攻撃をブロックする

Ubuntu / DebianシステムにUFWをインストールして有効にしている場合は、/ etc / ufw/before.rulesファイルを変更します。

$ sudo vim etc / ufw / before.rules

$ sudo vim etc/ufw/before.rules

「ループバックですべてを許可する」セクションの直後に次の行を追加します。

# allow all on loopback
-A ufw-before-input -i lo -j ACCEPT
-A ufw-before-output -o lo -j ACCEPT

# hand off control for sshd to sshguard
:sshguard - [0:0]
-A ufw-before-input -p tcp --dport 22 -j sshguard

ファイルを保存してUFWを再起動します。

$ sudo systemctl restart ufw

次に、間違った資格情報を使用して別のシステムからサーバーにログインしようとすると、最初に失敗したログイン試行から120秒間ロックアウトされることに注意してください。

これは、auth.logログファイルを確認することで確認できます。

$ sudo tail -f  /var/log/auth.log

次に失敗したログの試行後、ブロック時間は240秒、次に480秒、次に960秒というように増加します。

Firewalldを使用してSSH攻撃をブロックする

Firewalldを実行している場合は、firewalldが設定され有効になっていることを確認してください。次に、次のコマンドを実行して、優先ゾーンでsshguardを有効にします。

$ sudo firewall-cmd --permanent --zone=public --add-rich-rule="rule source ipset=sshguard4 drop"

変更を適用するには、Firewalldとsshguardをリロードします。

$ sudo firewall-cmd --reload
$ sudo systemctl restart sshguard

次に、次のようにルールを確認します。

$ sudo firewall-cmd —-info-ipset=sshguard4

Iptablesを使用してSSH攻撃をブロックする

まだIptablesを使用している場合は、まず、Iptablesでsshguardの新しいチェーンルールを作成して、不要なゲストのブロックを開始します。

# iptables -N sshguard

次に、INPUTチェーンを更新して、トラフィックをsshguardに転送し、悪意のあるパーティからのすべてのトラフィックをブロックします。

# iptables -A INPUT -j sshguard

SSH、POP、IMAPなどの特定のポートを悪用者からブロックするには、次のコマンドを実行します。

# iptables -A INPUT -m multiport -p tcp --destination-ports 22,110,143 -j sshguard

最後に、変更を有効にするためのルールを保存します。

# iptables-save > /etc/iptables/iptables.rules

ステップ4:SSHでブロックされたホストをホワイトリストに登録する方法

ブロックされたホストをホワイトリストに登録するには、次の場所にあるホワイトリストファイルでホスト名またはIPアドレスを指定するだけです。

/etc/sshguard/whitelist - Ubuntu/Debian 
/etc/sshguard.whitelist - RHEL-based distros

その後、変更を適用するために、必ずsshguardデーモンとファイアウォールバックエンドを再起動してください。

このガイドでは、LinuxシステムでSSHGuardを使用してSSHブルートフォース攻撃をブロックする方法を示しました。

詳細なガイドについては、当社のホームページを参照してください。


Linux
  1. Ssh – Sshを使用して別のPCを介してPCに接続する方法は?

  2. SSHを使用してサーバーからファイルをダウンロードするには?

  3. ssh を使用して初めてログインするときに、ユーザーにパスワードの変更を強制するにはどうすればよいですか?

  1. Ssh –遅すぎるSshログインを高速化する方法は?

  2. 別のサーバーを使用してサーバーにSSH接続する方法は??

  3. LinuxサーバーでSSHを使用してPlesk管理者パスワードをリセットするにはどうすればよいですか?

  1. SSHのコマンドを使用してMySQLデータベースを復元するにはどうすればよいですか?

  2. ssh コマンドを使用してリモート ホストに接続する方法

  3. Screen を別の SSH セッションから強制的に切り離すにはどうすればよいですか?