メインコンテンツへスキップ
検索

最近、SSHを使っているときに新しく登録したユーザがログインする問題が報告されています。SysAdmin はアリスを登録し、アリスに SSH 経由でログインを試みさせます。アリスは認証エラーを報告します。

syserr_logメッセージは、Aliceが登録されていないことを示しているようです。

05:04:02 プロセス 1111812D、root.root (sshd) を作成しました。 
05:04:02 root (sshd) : [AUTH] [INFO] sshd [PID=0x1111812D]。 無効なユーザーアリス
+ 127.0.0.0.1 から 
05:04:02 root (sshd) : [AUTH] [INFO] sshd [PID=0x1111812D]: input_userauth_req 
+ust. 無効利用者アリス
05:04:02 root (sshd) : [AUTH] [INFO] sshd [PID=0x1111812D]。失敗しました。 
127.0.0.0.1 ポート 54869 からの +valid user alice ssh2 
05:04:06 root (sshd) : [AUTH] [ERR] sshd [PID=0x1111812D]: エラーです。ジオできませんでした。 
NOUSERの+tシャドウ情報 
05:04:06 root (sshd) : [AUTH] [INFO] sshd [PID=0x1111812D]。パスワード fo に失敗しました。 
+r invalid user alice from 127.0.0.0.1 port 54869 ssh2

 

しかし、アリスがSSHクライアントの代わりにTelnetクライアントを使えば、問題なくログインできます。

05:04:23 プロセス 1111812E, PreLogin.System (pre-login) を作成しました。 
05:04:38 プロセス 1111812E alice.CAC(ログイン)に切り替えました。

 

また、アリスが登録されてすぐにログインしようとする代わりに、アリスが数分待っていれば問題なくログインできます。

05:12:51 プロセス 11118130 root.root (sshd) を作成しました。 
05:12:55 root (sshd) : [AUTH] [INFO] sshd [PID=0x11118130]。 承認されたパスワード 
+アリスのためにfrom 127.0.0.0.1 ポート 54909 ssh2 
05:12:55 プロセス 11118131 root.root (sshd) を作成しました。 
05:12:55 プロセス 11118131 alice.CACに切り替えました。(ログイン)しました。

 

本当にイライラするのは、最初に新しく登録したユーザはSSHでの認証に問題がないのに、2番目のユーザはSSHで認証してしまうことがあることです。

で、どうなってるの?

SSH のような POSIX プログラムが登録データベースを直接参照することには、いくつかの問題があります。その代わりに、認証コールは posix_regdb_server プロセスによって処理されます。posix_regdb_server プロセスは、ユーザが有効かどうかを判断するために参照する登録データベースのコピーを保持しています。posix_regdb_serverがユーザIDを検索するたびに、現在の時刻と最後に登録データベースを読み込んだ時刻を比較し、その時刻が過去に5分以上経過している場合は、データベースを再読込します。そのため、新しく登録されたユーザが SSH でログインできるようになるまで最大 5 分間待たなければならない可能性があります。

最初に新しく登録されたユーザには問題がなく、2番目のユーザには問題があるというシナリオでは、SysAdminがBobを登録し、Bobにログインを試みさせます。最後の認証要求から5分以上経過しているため、posix_regdb_serverはデータベースのコピーを更新し、Bobを有効なユーザとして認識し、Bobはログインできるようになりました。これでSysAdminはAliceを登録し、Aliceにログインを試みさせます。しかし、Bobがログインしてからまだ1~2分しか経っていないので、posix_regdb_serviceはデータベースのコピーを更新せず、Aliceが見つからないため、ログインが許可されません。

5分ウィンドウを変更する方法はありません。posix_regdb_serverプロセスを停止すると、再起動時に登録データベースのコピーが更新されます。通常、1分以内に自動的に再起動されますが、最大で2分かかることもあるので、スピードを上げることはできても、あまりスピードを上げることはできません。

より良い方法は、新しいユーザをすべて同時に登録してから、そのユーザを試してみることです。また、誰もSSH経由でログインしようとしない時に登録しておくと、最初の新しいユーザがログインしようとした時にposix_regdb_serverがデータベースを更新して、すべての新しいユーザを同時に取得することができます。

もちろん、誰も SSH 経由でログインしようとしていない時間帯を見つけるのは難しいかもしれません。

 

メニューを閉じる

© 2020ストラタステクノロジー.