linux pamベースのユーザー認証


ユーザーに特権を付与するプログラムは、ユーザー認証を行うことができます.システムにログインする場合は、ユーザー名とパスワードを指定し、ログインプロセスに基づいてログインの正当性を確認する必要があります.つまり、ユーザーであることを確認します.パスワード認証以外の認証形式もあり、パスワードの格納方法もそれぞれ異なります.PAM(挿抜可能認証モジュール)方式により、システム管理者は認証を行うプログラムを再コンパイルすることなく、多様な認証措置を設定することができる.PAMを使用して、プロファイルを編集して、認証モジュールをプログラムに挿入する方法を決定します.ほとんどの赤い帽子LINUXユーザーは、このプロファイルを変更する必要はありません.RPMを使用してプログラムをインストールすると、自動的に変更されるからです.ただし、認証モジュールをカスタマイズするには、プロファイルの内容を理解する必要があります.PAMモジュールPAMは4種類のモジュールを定義する.authモジュールは実際の認証プロセスを提供し、パスワードの入力を要求し、入力したパスワードをチェックし、ユーザーグループやKERBEROSパスポートなどの秘密語を設定する可能性があります.Accountモジュールは、認証が可能かどうかを確認します(たとえば、アカウントが期限切れになったかどうか、ユーザーが今ログインできるかどうかなど).passwordモジュールはパスワードを設定するために使用されます.ユーザ認証が合格すると、セッションモジュールは、ユーザのHOMEディレクトリのインストールや、ユーザの電子メールボックスのインストールなど、ユーザがアカウントを使用する前の初期化作業に使用されます.これらのモジュールは積み重ねられ、複数回使用できます.例えば、rloginは通常、少なくとも2つの認証方法を使用し、「rhosts」認証が成功すれば、接続の確立を許可し、そうでなければ標準的なパスワード認証を行う.いつでも新しいモジュールを追加することができ、PAMが感知するプログラムはそれを使用するように構成することができる.たとえば、使い捨てパスワード計算システムがある場合は、モジュール(モジュールをどのように書くかのドキュメント資料が含まれている)を書くことができます.PAM感知プログラムは、この新しい使い捨てパスワード計算機を再コンパイルする必要はありません.サービスは、PAMを使用するプログラムごとに独自のサービス名を定義します.loginプログラムは、そのサービスタイプをlogin、ftpdプログラムは、そのサービスタイプをftpと定義するなどします.一般的に、サービスタイプは、サービスを提供するプログラムではなく、そのサービスにアクセスするプログラムの名前である.プロファイルディレクトリ/etc/pam.dはすべてのPAMアプリケーションを構成するために使用される.(初期のPAMバージョンでは/etc/pam.confを使用していましたが、/etc/pam.dが存在しなければ/etc/pam.confを探していましたが、これは古いファイルであることを覚えておいてください).各アプリケーション(正確にはサービス)には、独自のプロファイルがあります.実際のファイルは次のようになります.

#%PAM-1.0
auth      required  /lib/security/pam_securetty.so
auth      required  /lib/security/pam_pwdb.so shadow nullok
auth      required  /lib/security/pam_nologin.so
account   required  /lib/security/pam_pwdb.so
password  required  /lib/security/pam_cracklib.so
password  required  /lib/security/pam_pwdb.so shadow
nullok use_authtok
session   required  /lib/security/pam_pwdb.so

最初の行はコメントです.#で始まる行はすべてコメントです.以下の3行には、login認証のための3つのモジュールが並べられています.1行目は、ユーザーがrootでログインしているかどうかを確認するために使用され、ログインを許可するttyがファイル/etc/securettyにリストされます(ファイルが存在する場合)、2行目は、ユーザーにパスワードの入力とパスワードの検証を求められます.3行目は、ファイル/etc/nologinが存在するかどうかを調べ、存在する場合はコンテンツを表示し、ユーザーがrootでない場合はログインを禁止します.最初のモジュールが失敗しても、3つのモジュールの検証を完了します.これは安全上の考慮です.このような設計は、ユーザーに彼や彼女たちがなぜ拒否されたのかを知らせないでください.そうしないと、認証を突破しやすくなります.この認証方法は、「required」を「requisite」に変更して変更できます.すなわち、失敗して戻ってくる「requisite」モジュールがある場合、PAM認証全体が他のモジュールの再呼び出しを終了し、失敗して戻ってくる.5行目は、必要な記帳情報が記載されることを示します.たとえば、シャドウパスワードの使用を設定するとpam_db.soモジュールは、アカウントが無効になったか、またはユーザーパスワードが期限切れになったかを確認するために変更する必要があるかどうかを確認するために実行されます.6行目(行を折り曲げて書く必要がある)は、loginプログラムがユーザーのパスワードを変更した場合にpam_を使用することを指定するために使用されます.pwdb.soで完成します.(これは、authモジュールがパスワードを変更する必要があることを検出した場合にのみ使用されます.例えば、影のパスワードが期限切れになった場合にのみ使用されます)最後の行はpam_を表します.pwdb.soモジュールは、現在のセッションプロセスを管理するために使用されます.現在、このモジュールは何もしていません.他の必要なモジュールに置き換えることができます.プロファイルの各ローの順序は任意ではないことに注意してください.requiredモジュールがどのような順序で呼び出されるかはあまり関係ありませんが、optionalは赤い帽子LINUXではあまり使用されませんが、sufficientとrequisiteは行の順序を逆転させないことを要求します.
 
rloginの認証構成を見てみましょう.

auth  required    /lib/security/pam_securetty.so
auth  sufficient  /lib/security/pam_rhosts_auth.so
auth  required    /lib/security/pam_pwdb.so shadow nullok
auth  required    /lib/security/pam_nologin.so

これはloginの記述と極めて似ているが、loginの1行以上のモジュール記述よりも多く、モジュールの順序も異なる.まず、pam_securetty.soモジュールはrootで安全でない端末へのログインを禁止します.これにより、root方式のリモート・ログインが効果的に阻止されます.禁止したくない場合は(この場合、インターネットに接続していないか、構成の良いファイアウォールの後ろにいることをお勧めします)、この行を削除すればいいです.次にpam_nologin.soモジュールは、上記のように/etc/nologinをチェックします.3つ目はpam_rhosts_auth.soモジュール認証に合格すると、PAMはすぐにパスワード検証を行わずに正常に戻ります.pam_rhosts_auth.so認証に失敗しました.この失敗は無視され、pam_を呼び出し続けます.pwdb.soモジュールは正常なパスワード認証を行います.securetty認証に失敗した後、システムにパスワードで問い合わせを継続させたくない場合はpam_securetty.soモジュールのrequiredをrequisiteに変更しました.
本文は“私のmenを共に成長させます”のブログから出て、転載をお断りします!