UNIX システムへのブルートフォース攻撃を避けるために Privileged Identity Manager ( 以下、 PIM) ではログインの失敗の検知とそれに応じてユーザ ID の無効化を行う機能を提供します。
PIM では ユーザ ID の無効化、有効化を行うモジュールは serevu となります。
本文書では SSH のログイン失敗を検知し処理を行う設定について説明します。
また、この文書は SSH、PAM、 seosd および serevu の動作の流れを理解するのに有効と考えています。
Privileged Identity Manager: UNIX 系の全バージョン
Privileged Access Manager Server Control: UNIX 系の全バージョン
モジュール serevu は 最近の UNIX 系の認証サブシステム PAM (Pluggable Authentication Modules) を使用してログインの失敗を検知します。
serevu がログイン失敗の検知に PAM を利用するためには seos.ini 内で以下のように設定します。
[pam_seos]
serevu_use_pam_seos = yes
また、 sshd が PAM 認証システムを利用するためには /etc/opt/ssh/sshd_config で以下の設定が必要です。
UsePAM yes
これで、sshd はログイン失敗を PAM を介して通知することができるようになります。
続いて PIM が PAM からの通知を受信するために PAM モジュールを組み込むために /etc/pam.conf に以下の行を追加します。
(本文書では HP-UX 上での記載例になっています。)
sshd auth optional /usr/lib/security/pam_seos.sl
(注: PAM の設定については OS やバージョン毎で異なります。詳細はOSの設定についてご確認ください。
また、対応する pam_seos モジュールも OS ごとで異なります。)
sshd に関するLOGINAPPL が存在しない場合は下記のように追加します。
AC> nr loginappl SSH loginpath(/usr/sbin/sshd) loginflags(PAMLOGIN) loginseq(SGRP SUID) defaccess(x)
これらの設定が正しく動作すれば、ログインが失敗した場合に情報が /opt/CA/AccessControl/log/pam_seos_failed_logins.log ファイルに書き込まれます。
大まかな流れを以下に記載します。
各ユーザが失敗できる回数は seos.ini の以下のトークンで設定されます。
[serevu]
def_fail_count = 3
serevu を seload で自動起動するためには seos.ini を以下の設定にします。
[daemons]
serevu = yes
全部の設定が正しければ以下のように syslog ( 例として 'test1' ユーザを使用します ) に記録されます。
Jul 5 15:15:32 PIMServerOnHP sshd[18058]: Failed keyboard-interactive/pam for test1 from XX.XX.XX.XX port 1615 ssh2
Jul 5 15:15:57 PIMServerOnHP above message repeats 3 times
Jul 5 15:15:57 PIMServerOnHP serevu[17997]: serevu: User test1 Revoked. (3 failed password attempts)
...
Jul 5 15:22:02 PIMServerOnHP serevu[17997]: serevu: User test1 re-enabled
また、PIM の監査ログでは以下のように記録されます。
05 Jul 2006 15:15:35 A LOGIN test1 17 8 XX.XX.XX.XX sshd
...
05 Jul 2006 15:15:56 A LOGIN test1 0 5 XX.XX.XX.XX serevu
...
05 Jul 2006 15:15:57 I LOGINDISABLE test1 0 5 XX.XX.XX.XX serevu
...
05 Jul 2006 15:22:02 E LOGINENABLE test1 0 5 XX.XX.XX.XX serevu
本KBは以下の英文 KB を翻訳し補足しました。
Article ID: 27529: How to configure detection and handling of failed logins through SSH.