LinuxPAMアカウントの検証の間に安全スイッチ

 CentOSの - PAM認証機構システム

 

LinuxのPAMモジュール名は、Linuxでは、PAMは、ローカルのシステム管理者がどのようにユーザアプリケーションを自由に選択することが、動的に構成されているSunが提供するLinux用のプラグイン可能な認証モジュール(プラグ可能な認証管理モジュール)であり、認証。PAMは、PAM認証(パスワード認証、ログオンの制限)のようにログインプログラム(ログイン、SU)として、多くのプログラムやサービスで使用される、passwdのパスワードを強制する、ユーザプロセスのリアルタイム管理、システムリソースがユーザーに割り当てられています。

 

プロファイル

 

PAMファイルの場所/etc/pam.confの設定、別のファイルフォルダ/etc/pam.d/の中に配置することができる、フォルダが/etc/pam.dにする場合、Linuxの-PAMは、/ etcを使用します。 /etc/pam.confの構成ファイル/pam.dフォルダの設定ファイルを無視して。

 pam.conf構成ファイルの1行に書かれた設定内容は、また、複数の行で記述されたコネクタを構成する内容として「\」であることができる。分割フラグとして空間へのpam.conf、#はラベル情報を表し、「 - 」の場合シンボルが先行する構成ステートメントは、モジュールが正しくロードされていない場合は、システムにログインしたときに、システムログにイベントを記録しない、または「 - 」オプションを示しています。

 コンフィギュレーション・ファイルは/etc/pam.dにフォルダに配置されている場合は、いないプロファイルサービスオプション、およびサービス名の設定ファイルの名前には、ファイル名は小文字でなければなりません、設定構文は、大文字と小文字を区別し、構成規則の形式であります:

サービスタイプ制御モジュールパスモジュールの引数

サービス名を入力コントロールモジュールパスモジュールパラメータ 

 

 

 

型タイプ

 

アカウントマネージャ(アカウント):サービスアカウントを提供するかどうか、有効期限が切れたようなアカウントのパスワードとアカウントの検証サービスを提供

 

認証マネージャ(認証):ユーザーを認証するための責任とユーザーの資格情報を設定し、認証のための対話型の方法による通常のモジュールは、例えば、あなたはあなたがしているが、すべてのタイプの認証ではないことを証明するためにパスワードを入力する必要があります  

 

パスワードマネージャ(パスワード):、パスワードの変更などの更新に認可と認証機構、

 

そのようなユーザのホームディレクトリをアンロードなど、新しいセッションのオープン、モジュールは準備タスクのセッションを処理し、クローズドセッション、改善作業を担当するモジュール、:セッションマネージャ(セッション)

 

制御コントロール

 

コントロールは、2つの構文シンプルかつ複雑な構造、単純なキーワード構文、文法に分かれて、[]導入[値=アクション]オプションによって複雑になります

 

1、コントロールの簡単な構文は次の値が含まれます。

 

必要:このキーワードを使用するときはPAMモジュールの検証が失敗し、最終的にはPAM-APIにつながる失敗を返しますが、後続のすべてのモジュールが故障するまで戻りませんした後にそれが検証されます

 

必須:キーワードは同様の方法を使用する必要はなく、PAM認証が失敗したときに、必要なすぐに呼び出し元のプログラムまたは親PAM占にエラー値を返すされ、通常は、ユーザ情報が既に存在している得るためにシステムを防ぐ***キーワードシステム環境で使用される重要なキーワード

 

十分な:モジュールの認証が成功しないと、何のモジュールモジュールの検証が失敗する前に、必要な場合には、十分なキーワードが呼び出しプログラムまたはPAMはスタックとその後の検証モジュールを呼び出しません親に成功値を返します。お問い合わせの際、十分なモジュールは、PAMを失敗しましたモジュールは、十分なモジュールの障害の影響はありませんが、我々は検証を実行していきます。

 

オプション:このルールの設定ファイル、オプションモジュールが動作するときにのみサービス+オプション

 

含める:指定された設定ファイルこの中に含まれるパラメータの制御文など、すべての種類のタイプを

 

substack:指定された設定ファイルの種類は、この文の制御パラメータとして含まれ、異なるタスクを完了するかsubstackに死ぬことです含め、substack制御コマンド内の唯一の影響は、スタック占の整合性には影響を与えません。

 

 

2、複雑な文法を制御します

 

[VALUE1 =アクション1値2 =アクション2 ...]

 

valueN代表对应模块中控制语句的返回值,可以是下面的值:success,open_err,symbol_err,service_err,system_err,buf_err,perm_denied,deault等,其中default表示所有未被显式提到的所有值

 

PAM所有的错误信息列表在 /usr/include/security/_pam_types.h 目录中

 

actionN可以使下列值中的某一个:

ignore:当在模块桟中使用该参数时,该模块桟的返回值不会影响应用程序获得返回值

 

bad:当使用bad关键字,证明模块栈的返回值代表失败;当该模块式PAM桟中第一个模块时,该模块的状态将会在整个PAM桟中使用

 

die:和bad关键字作用相同,当使用该动作关键时,会立刻终止模块桟,PAM会立刻返回到调用的应用程序中

 

ok:该动作指示将PAM的返回值直接用于所有的模块桟中,即如果前一个桟返回的状态是PAM_SUCCESS,'OK‘中的值会重写返回值;如果返回的是失败,则此'OK'的值不会重写返回值。

 

done:和'OK'动作基本相同,但是PAM会立刻返回到应用程序当中

 

reset:清空所有模块桟的状态值并以下一个模块进行验证

 

N:和'OK'副作用相同,但是会跳过接下来的N个模块桟,不允许使用'0'(在某些情况是使用'0'和'OK'作用类似)

 

四个关键字required;requisite;sufficient;optional和以下语句有相同作用

 

required

[success=ok new_authtok_reqd=ok ignore=ignore default=bad]

 

requisite

[success=ok new_authtok_reqd=ok ignore=ignore default=die]

 

sufficient

[success=done new_authtok_reqd=done default=ignore]

 

optional

[success=ok new_authtok_reqd=ok default=ignore]

module-path

 

模块路径可以使应用程序使用的PAM模块的文件名,也可是是默认模块的相对路径名:/lib/security 或者/lib64/security

 

module-arguments

 

模块参数是以空格作为分隔符的列表,可以用来指定PAM特殊的动作,如果需要在参数中包含空格,需要使用"[ ]",当需要在语法中使用[]时,需使用"\",如 [..[..\]..]->..[..]..;语法中的任何一个错误都会导致验证失败,而且会被记录到系统日志中


        在没有利用centos的PAM模块之前,普通用户可以随意的切换到root账户(前提是知道root账户的密码),即使知道root密码随意登陆root账户也会造成一些不安全的因素

        现在在我的系统上可以登陆系统shell环境的有root,zhangsan,wangwu三个账户

image.png


        现在我就利用这个两个账户试着跟root账户切换看一看,发现现在这两个普通账户可以跟root(管理员账户)之间来回切换.  这样有着很多的安全隐患,现在要实现的目标是禁用这些账户对root账户随意切换的功能

 image.png

        为了实现这个功能就要利用了CentOS的PAM验证机制,而这个PAM验证机制的配置文件救灾在/etc/pam.d/目录下面. 打开一看已经发现这个su的命令就在里面

image.png


        现在使用vim /etc/pam.d/su命令对这个su命令的配置文件进行设置. 请注意看下图的用框框起来的地方. 这是一个验证模块,因为前面有一个#号相当于被注释了,也就是这个模块没有被开启. 如果想开启这个验证模块就要把之前的注释符号"#"给删除就可以了

image.png


        现在这边把#删除了,然后按"wq"保存退出  就代表已经启用了这个su命令的验证模块

 image.png


        然后切换到zhangsan的普通账户,看看能不能再切回到root账户,这边发现普通用户已经不能再切换回root账户了,是因为刚才启用了刚才的PAM验证模块

image.png


        这边还有一个wheel(安全组)的概念,也就说被添加到这个组的成员可以执行跟root账户来回的切换以及使用root账户的命令.  现在使用gpasswd -a zhangsan wheel命令把zhangsan用户添加到wheel(安全组)当中去看看能不能切换到root用户

image.png


         切换到zhangsan用户后再切换root账户,发现已经成功的切换了,为什么了?因为刚刚把zhangsan用户添加到了wheel(安全组)当中去了 ,然后再试着切换到wangwu账户,再切换到root账户发现已经切换不了,因为wangwu账户没有被添加到wheel(安全组)当中去 

        这边就利用PAM验证模块实现了账户之间的一个安全切换的问题

image.png




 


 

おすすめ

転載: blog.51cto.com/14451009/2432807