こんにちは!
ナビゲータのEVEです。
昨日ブログ更新後、X(旧ツイッター)から以下のようなコメントを頂きました。
AIに頼る前にまずマニュアル読もうよ案件的な。
※XServerのLinuxディストリビューションってなんだろ。RHEL系だと「usePAM無効化するな」的な注釈もあったように思うんだけど
[angel (as ㌵㌤の猫) @angel_p_57のコメントより
ちょっと、焦りましたね・・・。ChatGPTを信用していましたから・・・。そのコメントを見た瞬間に、いろいろ調べたところ、ご指摘の通りだと言うことが判明しました。
[なぜこのようなことが起きたか?]
このブログ、システムを開発に必要な項目を、それぞれ研究室として立ち上げています。開設当初は、研究室とつくにふさわしいレベルで調べていたのですが、今年の4月ぐらいからですかね?中小企業診断士の勉強とか、起業とかがはいってきて、ブログに費やす時間が減りました。
このブログを書く時間を90分に限定しているという話を何回かしていますが、それは、更新する時間です。その前の下調べの時間は含めていません。その時間を含めれば、以前は、数時間掛けていたかもしれません。ただ、近頃は、下調べを含めて、90分ぐらいになってしまったような気がします。今回の問題は、この点が一番大きいと思います。
[指摘事項内容の考察]
指摘された内容は、「usePAM無効化するな」と言うことなのですが、usePAMとはどのような機能なのでしょうか?ChatGPT、Gemini、Copilotすべてに聞いてみました。
usePAM(Pluggable Authentication Module)は、LinuxやUnix系のシステムにおいて認証機能を管理するためのモジュールフレームワークです。usePAMとは、SSHサーバーや他のデーモンが認証にPAM(Pluggable Authentication Modules)を使用するかどうかを指定する設定項目です。具体的には、SSHサーバーの設定ファイル(通常は/etc/ssh/sshd_config)内でUsePAMというオプションを使用します。
❶UsePAMの役割
1)認証の柔軟な管理
PAMは、認証方法をモジュール化して柔軟に管理できる仕組みです。これにより、パスワード認証や二段階認証、バイオメトリクス認証など、さまざまな認証方式を簡単に追加・変更することが可能です。
2)セッション管理
認証だけでなく、ユーザーセッションの管理やアカウントの制御、システムリソースへのアクセス管理も行います。
3)セキュリティポリシーの一元化
複数のアプリケーションがPAMを使用することで、セキュリティポリシーを一元管理でき、同じ認証ポリシーを複数のサービスに適用することが可能です。
❷UsePAMオプションの設定
/etc/ssh/sshd_configファイル内でUsePAMを設定することで、SSHデーモンがPAMを使用するかどうかを制御します。
・UsePAM yes: PAMを使用して認証とアカウント管理を行います。
・UsePAM no: PAMを使用せず、SSH独自の認証方法のみを使用します。
❸PAMを使用した場合の利点
1)多要素認証のサポート
PAMを使用すると、パスワード認証に加えて多要素認証(MFA)を簡単に設定できます。例えば、Google AuthenticatorやYubiKeyなどを組み合わせた認証が可能です。
2)アカウントロック機能
アカウントのパスワードが一定回数以上間違えられた場合、自動的にロックする機能など、追加のセキュリティ機能を提供できます。
3)リソース制限
PAMを使って、各ユーザーごとに使用できるシステムリソースを制限することができます(pam_limitsなど)。
4)ユーザーのアクセス制御
PAMを使うと、ユーザーごとのログイン制御や特定の条件でのアクセス制御を設定することが可能です(例えば、pam_accessを使った特定IPアドレスからの制限など)。
■注意点
UsePAMを有効にした場合でも、PasswordAuthenticationやChallengeResponseAuthenticationなど、SSH独自の認証設定と組み合わせて動作するため、他の設定オプションも適切に設定する必要があります。
PAMの設定ファイルは通常、/etc/pam.d/ディレクトリにあり、各サービスごとの認証ポリシーを設定することができます。
こんな重要な機能を持ったモノだったのですね?ちょっと、冷や汗です。この記事を見たとき、背筋に冷たいものを感じました。angel (as ㌵㌤の猫)さんには本当に感謝です。
なお、usePAMを停止した場合のリスクについても、3AIに聞いてみました。
❶セキュリティの低下
PAMを無効にすると、セッション管理や認証の柔軟性が失われ、セキュリティが低下する可能性があります。例えば、パスワードの複雑さチェックや二要素認証などの機能が使えなくなります。
❷認証の互換性の問題
多くのサービスがPAMを前提としているため、これらのサービスが正常に動作しなくなる可能性があります。特に、SSHログインに影響が出ることが多いです。
❸システム管理の複雑化
PAMを無効にすると、各サービスごとに個別の認証設定を行う必要があり、管理が複雑になります。
❹サードパーティアプリケーションとの互換性の問題
多くのサードパーティアプリケーションは、PAM を利用してユーザー認証を行います。usePAM を無効化すると、これらのアプリケーションが正常に動作しなくなる可能性があります。
❺認証方法の変更
PAM を使用しない場合、認証は /etc/passwd や /etc/shadow ファイルに直接依存するようになります。これにより、パスワードのハッシュ化やその他のセキュリティ機能が制限される可能性があります。
[指摘事項の考察]
angel (as ㌵㌤の猫)さんからマニュアルを見た方がいいという指摘なのですが、検討した結果、難しいという結論になりました。私が最初Ubuntuを始めたとき読んだ本は、300頁強のなのですが、そこにはこの機能について記述はありませんでした。多分ですが、800、900頁ぐらいある本に書いてあると思います。ただ、購入しても、最後まで読み切ることができない、または、最後まで読んでも忘れていると思います。やはり、従来通りAIとの対話を通して作業を進めたほうがいいと思います。
じゃ、今回の作業でどこがいけなかったのか考えてみましょう!以下に列記していました。
❶知りもしない機能を勝手に止めてしまった。
❷ChatGPTへの質問が公開鍵認証方式のみを有効にする方法を聞いており、セキュリティについては考慮していなかった。
❸いつもなら、ChatGPT、Gemini、Copilotそれぞれに同じ質問をして確認をするのに、今回はしなかった。
他にもあるかもしれませんが、今パット思いつくのは以上の通りです。ようは、もっと時間をかけて深掘りをしなければいけないということです。
なお、angel (as ㌵㌤の猫)さんから、RHEL系の話がでていますが、Ubuntuは、Debian系です。
[あとがき]
今回は、OSの話でしたが、実は、気を抜くとこのようなことはしょっちゅう発生する可能性があります。なぜかと言えば、現在身をおいている業界は、今日生まれた技術は、明日古くなっているかもしれない業界だからです。
Ubuntuを設定しながら、PHPをプログラミングしながら、MySQLを利用しながらそんなことを感じています。
angel (as ㌵㌤の猫)さんに今回指摘されたのは、タイミングとして良かったかもしれません。なぜかといえば、本番環境はこれからだからです。今後は、初心に戻って作業を進めたいと思います。
本日は、公開鍵認証方式の設定方法について書く予定としていましたが、予定を変更し、反省会をさせていただきました。なお、usePAMを有効化したうえで、認証方式を、公開鍵認証方式にのみに限定する方法を昨日見つけました。まだ、設定はしていませんが、ChatGPT、Gemini、CopilotすべてのAIが問題ないといっているので、多分大丈夫でしょう?明日は、セキュリティの日なので、明後日に調査内容について報告させていただきます。もし、また、何かありましたらご指摘いただければありがたいです。
では、また!!!