Linux のログを読んでいると、パスワードクラックの試みがあったことがわかりました。SSH パスワードクラックとは、攻撃者が暴力的な解読技術を使用して SSH のユーザー名とパスワードを推測するプロセスを指します。これには通常、専用のツールやスクリプトを使用して、辞書ファイルから可能なパスワードのリストを推測し、SSH アカウントのパスワードを推測する試みが含まれます。
攻撃者はこの技術を使用して、許可されていないアクセス権を取得し、機密データにアクセスしたり、システムで悪意のある活動を実行したりすることがあります。
強力なパスワードが設定されていたため、攻撃者は一時的に成功しませんでした。
SSH パスワードクラック攻撃に対処するためには、以下の対策を取ることができます:
- 侵入検知システム fail2ban を使用し、暴力的な解読行為を検出し、攻撃者の IP アドレスをファイアウォールでブロックする。
- SSH で公開鍵認証を使用し、パスワードを無効にする。
fail2ban#
概要#
fail2ban は、コンピュータシステムへの悪意のある攻撃を検出して対応するためのオープンソースの侵入防御ツールです。ログファイルを監視して可能な攻撃行為を検索し、事前に定義されたルールに基づいて攻撃者の IP アドレスやホスト名へのアクセスをブロックします。
fail2ban の主な機能は次のとおりです:
- ブルートフォース攻撃の防止:fail2ban は、SSH、FTP、SMTP、POP3 などのサービスのログファイルを監視し、ブルートフォース攻撃を検出します。このような行動が検出されると、ファイアウォールで攻撃者の IP アドレスをブロックしようとします。
- サービス拒否攻撃の防止:fail2ban は、ネットワークトラフィックを監視し、DDoS 攻撃を検出します。このような攻撃が検出されると、ファイアウォールで攻撃者の IP アドレスをブロックしようとします。
- リアルタイムモニタリング:fail2ban は、システムのログファイルをリアルタイムで監視し、ルールに基づいて警告やブロックのアクションをトリガーします。これにより、新しい攻撃行為をタイムリーに検出して対処することができます。
- ログ分析:fail2ban は、システムのログファイルを分析し、潜在的なセキュリティの脅威を特定し、適切な対策を取るのに役立ちます。
fail2ban は、システムを悪意のある攻撃や許可されていないアクセスから保護するのに役立ちます。
操作方法#
fail2ban を使用することで、以下の手順で実行できます:
- fail2ban をインストールします。CentOS を例にします:
sudo yum install epel-release -y
sudo yum install fail2ban -y
- fail2ban の設定ファイルを編集します:
sudo vi /etc/fail2ban/jail.local
以下の内容を追加します:
[sshd]
enabled = true
port = ssh
filter = sshd
logpath = /var/log/secure
maxretry = 3
bantime = 86400
この設定は、fail2ban が SSH ログイン試行を監視し、同じ IP アドレスが 3 回のログイン試行でパスワードを間違えた場合、その IP アドレスを 1 日(24 時間)ブロックするようにします。
- fail2ban サービスを起動します:
sudo systemctl enable fail2ban
sudo systemctl start fail2ban
これで、同じ IP アドレスが 3 回のログイン試行でパスワードを間違えた場合、その IP アドレスを 1 日(24 時間)ブロックするようになります。最大試行回数やブロック時間などの設定を変更したい場合は、上記の設定ファイルを変更して fail2ban サービスを再起動してください。
SSH 公開鍵認証#
パスワードベースの認証から公開鍵ベースの認証に変更することで、以下の利点があります:
- より安全:パスワードベースの認証は、攻撃者がユーザーのパスワードを推測するために暴力的な解読技術を使用できるリスクがあります。一方、公開鍵ベースの認証は非対称暗号技術を使用しており、パスワードよりも推測が難しいため、より安全です。
- より便利:SSH 公開鍵を設定すると、ログイン時にパスワードを入力する必要がなくなり、ログインがより迅速かつ便利になります。また、複数のリモートサーバー間でアクセスする必要がある場合でも、複数のパスワードを覚える必要がなくなり、認証が容易になります。
SSH 認証をパスワードから公開鍵ベースの認証に変更する#
CentOS で SSH 認証をパスワードから公開鍵ベースの認証に変更するには、以下の手順を実行する必要があります:
- 公開鍵 / 秘密鍵ペアを生成する
まず、ローカルコンピュータ上で公開鍵 / 秘密鍵ペアを生成します。次のコマンドを使用して公開鍵 / 秘密鍵ペアを生成できます:
ssh-keygen
このコマンドは、生成されたキーファイルの名前と場所を入力するように求め、キーペアにランダムな暗号化パスワードを生成します。デフォルトでは、これにより~/.ssh/
ディレクトリにid_rsa.pub
とid_rsa
という名前のファイルが作成されます。公開鍵ファイル(id_rsa.pub
)をターゲットの CentOS サーバーにコピーすることを確認してください。
- ターゲットサーバーで公開鍵認証が有効になっていることを確認する
次に、ターゲットサーバーで公開鍵認証が有効になっていることを確認する必要があります。/etc/ssh/sshd_config
ファイルを開き、以下の行がコメントアウトされていないことを確認してください:
PubkeyAuthentication yes
この行がコメントアウトされていない場合は、この手順をスキップしてください。
- 公開鍵をターゲットサーバーの認証キーファイルに追加する
公開鍵ファイルをターゲットサーバーの認証キーファイルに追加します。~/.ssh/authorized_keys
ファイルを開き、公開鍵ファイルの内容(つまり、id_rsa.pub
ファイルのすべてのテキスト)をこのファイルにコピーします。
~/.ssh/authorized_keys
ファイルが存在しない場合は、作成してください。
- SSH サービスを再起動する
上記の手順を完了したら、SSH サービスを再起動して変更を有効にします。次のコマンドを使用して SSH サービスを再起動できます:
sudo systemctl restart sshd
これで、パスワードを使用せずにターゲットの CentOS サーバーに公開鍵認証で接続できるはずです。
SSH パスワード認証を無効にし、公開鍵認証のみを許可する#
- 公開鍵認証が有効になっていることを確認する
まず、公開鍵認証が有効になっていることを確認してください。/etc/ssh/sshd_config
ファイルを開き、以下の行がコメントアウトされていないことを確認してください:
PubkeyAuthentication yes
この行がコメントアウトされていない場合は、この手順をスキップしてください。
- パスワード認証を無効にする
パスワード認証を無効にするには、/etc/ssh/sshd_config
ファイルに以下の行を追加します:
PasswordAuthentication no
これにより、パスワードによる認証が無効になります。なお、公開鍵認証を使用しない場合、SSH サーバーに接続することはできません。
- SSH サービスを再起動する
上記の手順を完了したら、SSH サービスを再起動して変更を有効にします。次のコマンドを使用して SSH サービスを再起動できます:
sudo systemctl restart sshd
これで、SSH サーバーはパスワード認証ではなく公開鍵認証のみを許可するようになります。
その他の sshd_config#
ChallengeResponseAuthentication#
パスワード認証を無効にすると、パスワードでの接続を試みると、システムは他の認証方法を使用するようにユーザーに促すメッセージを表示します。このメッセージを表示したくない場合は、次の手順に従ってください:
ChallengeResponseAuthentication no
MaxAuthTries#
MaxAuthTries
は、sshd_config ファイルのパラメータで、認証プロセス中に許可される最大試行回数を指定します。デフォルトでは、この値は 6 であり、ユーザーが 6 回以上の失敗をした場合に接続が中断されます。
このパラメータの主な目的は、システムのセキュリティを向上させ、暴力的なパスワードクラックなどの手法による悪意のある攻撃を防ぐことです。MaxAuthTries
の値を小さく設定すると、ユーザーが入力ミスによってロックアウトされる可能性があります。逆に、値を大きく設定すると、システムが攻撃を受けやすくなる可能性があります。
MaxAuthTries
の値を実際のニーズに合わせて変更できます。たとえば、システムが暴力攻撃を受ける可能性がある場合は、値を 3 または 4 に設定することができます。強力なパスワードポリシーを持っており、ユーザーが入力ミスによってロックアウトされることを望まない場合は、10 以上に設定することもできます。
MaxAuthTries
の値を変更した後は、ssh サービスを再起動する必要があることに注意してください。次のコマンドを使用できます:
sudo systemctl restart sshd