シリーズの一般的なインデックス: SME向けのコンピュータネットワーク:はじめに
こんにちは友達と友達!
この記事では、認証のトピックの概要を提供する予定です。 PAM。 Linux / UNIXオペレーティングシステムでワークステーションを日常的に使用することに慣れており、セッションを開始するたびに認証メカニズムがどのように発生するかを調べるのをやめることはめったにありません。 アーカイブの存在を知っていますか /etc/passwd、そして、 / etc / shadow これは、ローカルユーザーの認証資格情報のメインデータベースを構成します。 この投稿を読んだ後、少なくともPAMがどのように機能するかについて明確なアイデアが得られることを願っています。
認証
認証(実用的な目的)は、ユーザーがシステムに対して検証される方法です。 認証プロセスでは、データベースに保存されている情報と比較される一連のIDと資格情報(ユーザー名とパスワード)が存在する必要があります。 提示された資格情報が保存されている資格情報と同じであり、ユーザーのアカウントがアクティブである場合、ユーザーは 本物 正常または正常に合格 認証.
ユーザーが認証されると、その情報はに渡されます アクセス制御サービス そのユーザーがシステムで何ができるか、そしてどのようなリソースが必要かを判断する オートリザシオン それらにアクセスします。
ユーザーを確認するための情報は、システム上のローカルデータベースに保存できます。または、ローカルシステムは、LDAP、Kerberos、NISデータベースなどのリモートシステム上の既存のデータベースを参照できます。
ほとんどのUNIX®/ Linuxオペレーティングシステムには、最も一般的なタイプのユーザーデータベース用にクライアント/サーバー認証サービスを構成するために必要なツールがあります。 これらのシステムの一部には、Red Hat / CentOS、SUSE / openSUSE、およびその他のディストリビューションなどの非常に完全なグラフィカルツールがあります。
PAM:プラガブル認証モジュール
たくさん 認証のために挿入されるモジュール Linux / UNIXベースのオペレーティングシステムでデスクトップにログオンするときや、特定のローカルPAMモジュールを持つローカルまたはリモートサービスにアクセスするときに、これらを毎日使用します。 挿入された そのサービスに対する認証用。
PAMモジュールがどのように挿入されるかについての実用的なアイデアは、状態シーケンスを通じて取得できます 認証の en Debianとのチームと en CentOSを使用した別の 次に開発すること.
Debianの
ドキュメンテーション
パッケージをインストールする場合 libpam-doc ディレクトリに非常に優れたドキュメントがあります / usr / share / doc / libpam-doc / html.
root @ linuxbox:〜#aptitude install libpam-doc root @ linuxbox:〜#ls -l / usr / share / doc / libpam-doc /
ディレクトリには、PAMに関するその他のドキュメントもあります。
root @ linuxbox:〜#ls -l / usr / share / doc / | grep pam drwxr-xr-x 2 root root 4096 Apr 5 21:11 libpam0g drwxr-xr-x 4 root root 4096 Apr 7 16:31 libpam-doc drwxr-xr-x 2 root root 4096 Apr 5 21:30 libpam-gnome-キーリングdrwxr-xr-x3 root root 4096 Apr 5 21:11 libpam-modules drwxr-xr-x 2 root root 4096 Apr 5 21:11 libpam-modules-bin drwxr-xr-x 2 root root 4096 Apr 5 21: 11 libpam-runtime drwxr-xr-x 2 root root 4096 Apr 5 21:26 libpam-systemd drwxr-xr-x 3 root root 4096 Apr 5 21:31 python-pam
インターネットでドキュメントを探す前に、すでにインストールされているもの、または何かのために存在するプログラムリポジトリから直接インストールできるものを確認し、多くの場合、それらをハードドライブにコピーする必要があると考えています。 このサンプルは次のとおりです。
root @ linuxbox:〜#less / usr / share / doc / libpam-gnome-keyring / README gnome-keyringは、ユーザーのパスワードやその他の秘密を保持するプログラムです。 ssh-agentと同様に、セッション内でデーモンとして実行され、他のアプリケーションは環境変数またはD-Busを介してそれを見つけます。 プログラムは、それぞれが独自のマスターパスワードを持つ複数のキーリングを管理できます。また、ディスクに保存されることはないが、セッションの終了時に忘れられるセッションキーリングもあります。 ライブラリlibgnome-keyringは、アプリケーションがGNOMEキーリングシステムと統合するために使用します。
非常に自由に翻訳されたものは、次のように表現したいと考えています。
- gnome-keyringは、ユーザーのパスワードやその他の秘密を保持するプログラムです。 各セッションでは、ssh-agentと同様にデーモンとして実行され、環境変数(environment)またはD-Busを介して配置される他のアプリケーションに対して実行されます。 プログラムは、それぞれが独自のマスターパスワードを持つ複数のキーリングを処理できます。 ハードディスクに保存されることはなく、セッションが終了すると忘れられるキーリングセッションもあります。 アプリケーションは、libgnome-keyringライブラリを使用してGNOMEキーリングシステムと統合します.
基本オペレーティングシステムを搭載したDebian
オペレーティングシステムとしてDebian8「Jessie」をインストールしたばかりのコンピュータから開始し、そのインストールプロセスでは、タスクをインストールする他のオプションをマークせずに、「基本システムユーティリティ」のみを選択します。 タスク またはOpenSSHサーバーのような事前定義されたパッケージ。 最初のセッションを開始した後に実行する場合:
ルート@マスター:〜#pam-auth-update
次の出力が得られます。
これは、その時点までに使用されている唯一のPAMモジュールがUNIX認証であることを示しています。 ユーティリティ pam 認証更新 PAMモジュールによって提供される事前定義されたプロファイルを使用するときに、システムの中央認証ポリシーを構成できます。 詳細については、を参照してください。 man pam-auth-update.
OpenSSHサーバーをまだインストールしていないため、ディレクトリにそのPAMモジュールが見つかりません。 /etc/pam.d/、これらの瞬間までにロードされたPAMモジュールとプロファイルが含まれます。
ルート@マスター:〜#ls -l /etc/pam.d/ 合計76-rw-r --r--1ルートルート235 30年2014月1日atd-rw-r --r--1208ルートルート6月22日06:1共通アカウント-rw-r--r--1221ルートルート6 22月06日1:1440common-auth -rw-r --r--6ルートルート22月06日1:1156common-password -rw-r --r--6ルートルート22月06日1:1154common-session -rw -r --r--6ルートルート22月06日1:606common-session-noninteractive -rw-r --r--11ルートルート2015 1年384月19日cron-rw-r --r-2014ルートルート1 92年19月2014日chfn -rw-r --r--1ルートルート581 19年2014月1日chpasswd-rw-r --r--4756ルートルート19 2014年1月92日chsh-rw-r-- r--19ルートルート2014 1年520月6日ログイン-rw-r --r--2016ルートルート1 92年19月2014日newusers-rw-r --r--1ルートルート143 29年2015月1日その他-rw-r--r--138ルートルート29 2015年1月2257日passwd- rw-r --r--19ルートルート2014 1年220月2日runuser-rw-r --r--2016ルートルートXNUMX XNUMX年XNUMX月XNUMX日runuser-l-rw -r --r--XNUMXルートルートXNUMX XNUMX年XNUMX月XNUMX日su- rw-r --r--XNUMXルートルートXNUMX XNUMX年XNUMX月XNUMX日systemd-user
たとえば、PAMモジュールを使用する /etc/pam.d/chfn システムがサービスを構成します 影、通過中 /etc/pam.d/cron デーモンが構成されている cron。 もう少し学ぶために、これらの各ファイルの内容を読むことができます。これは非常に有益です。 サンプルとして、モジュールの内容を以下に示します /etc/pam.d/cron:
ルート@マスター:〜#少ない/etc/pam.d/cron #cronデーモンのPAM構成ファイル @include 共通認証 #loginuidプロセス属性セッションが必要なpam_loginuid.soを設定します#pam_envのデフォルトファイル/ etc / environment#および/etc/security/pam_env.confから環境変数を読み取ります。 session required pam_env.so#さらに、システムロケール情報を読み取りますsession required pam_env.so envfile = / etc / default / locale @共通アカウントを含む @include 共通セッション非インタラクティブ #ユーザー制限を設定します。cronタスクの制限を定義してください#/ etc / security /limits.confセッションを介して必要なpam_limits.so
各ファイル内のステートメントの順序は重要です。 一般的に、私たちが何をしているのかよくわかっていない限り、それらのいずれかを変更することはお勧めしません。
ベースOS + OpenSSHを備えたDebian
root @ master:〜#aptitude install task-ssh-server 次の新しいパッケージがインストールされます:openssh-server {a} openssh-sftp-server {a} task-ssh-server
PAMモジュールが正しく追加および構成されていることを確認します sshd:
ルート@マスター:〜#ls -l /etc/pam.d/sshd -rw-r --r--1ルートルート2133 22年2016月XNUMX日/etc/pam.d/sshd
そのプロファイルの内容を知りたい場合:
ルート@マスター:〜#少ない/etc/pam.d/sshd
つまり、を使用して別のコンピューターからリモートセッションを開始しようとすると ssh、ローカルコンピューターでの認証はPAMモジュールを介して行われます sshd 主に、sshサービス自体に関連する他の承認およびセキュリティの側面を忘れることなく。
ちなみに、このサービスの主な構成ファイルは /etc/ssh/sshd_config、そして少なくともDebianでは、インタラクティブなユーザーログインを許可せずにデフォルトでインストールされます ルート。 それを許可するには、ファイルを変更する必要があります /etc/ssh/sshd_config 行を変更します:
パスワードなしのPermitRootLogin
によって
PermitRootLoginはい
次に、再起動して、次の方法でサービスのステータスを確認します。
ルート@マスター:〜#systemctl restart ssh ルート@マスター:〜#systemctl status ssh
LXDEデスクトップを搭載したDebian
私たちは同じチームを続けます-私たちは彼らの名前を変更するか、 hostname 沿って "リナックスボックス»将来の使用のために-LXDEデスクトップのインストールを完了しました。 走りましょう pam 認証更新 次の出力が得られます。
システムは、LXDEデスクトップのインストール中に正しい認証に必要なすべてのプロファイル-モジュール-をすでに有効にしています。これらは次のとおりです。
- UNIX認証モジュール。
- の階層制御グループにユーザーセッションを記録するモジュール systemd.
- GNOMEキーリングデーモンモジュール
- この機会に、すべての場合において、「有効にするPAMプロファイル」を求められたら、オプションを選択することをお勧めします。 私たちが何をしているのかよくわかっていない限り。 オペレーティングシステム自体によって自動的に作成されるPAM構成を変更すると、コンピューターでのログインを簡単に無効にできます。.
上記の場合、私たちは話している ローカル認証 または、を介してリモートセッションを開始したときに発生するローカルコンピュータに対する認証 ssh.
のメソッドを実装する場合 リモート認証 ローカルチームで リモートOpenLDAPサーバーまたはActiveDirectoryに保存されている資格情報を持つユーザーの場合、システムは新しい形式の認証を考慮し、必要なPAMモジュールを追加します。
メインファイル
- /etc/passwd:ユーザーアカウント情報
- / etc / shadow:ユーザーアカウントの安全な情報
- /etc/pam.conf:ディレクトリが存在しない場合にのみ使用する必要があるファイル /etc/pam.d/
- /etc/pam.d/:プログラムとサービスがPAMモジュールをインストールするディレクトリ
- /etc/pam.d/passwd:のPAM構成 passwd.
- /etc/pam.d/共通アカウント:すべてのサービスに共通の認証パラメータ
- /etc/pam.d/common-auth:すべてのサービスに共通の認証パラメータ
- /etc/pam.d/共通パスワード:パスワードに関連するすべてのサービスに共通のPAMモジュール- パスワード
- /etc/pam.d/common-session:ユーザーセッションに関連するすべてのサービスに共通のPAMモジュール
- /etc/pam.d/common-session-noninteractive:非対話型セッションに関連する、または非対話型セッションの開始時と終了時に実行されるタスクなど、ユーザーの介入を必要としないすべてのサービスに共通のPAMモジュール。
- / usr / share / doc / passwd /:ドキュメントディレクトリ。
のマニュアルページを読むことをお勧めします passwd y 影 介して 男のパスワード y 男の影。 ファイルの内容を読むことも健康的です common-account、common-auth、common-passwrod、common-session y 共通セッション-非対話型.
利用可能なPAMモジュール
利用可能なPAMモジュールのアイデアを得るには アプリオリ 標準のDebianリポジトリでは、次のコマンドを実行します。
buzz @ linuxbox:〜$ aptitude search libpam
リストは長く、その広さを示すモジュールのみを反映します。
libpam-afs-session - PAM module to set up a PAG and obtain AFS tokens libpam-alreadyloggedin - PAM module to skip password authentication for logged users libpam-apparmor - changehat AppArmor library as a PAM module libpam-barada - PAM module to provide two-factor authentication based on HOTP libpam-blue - PAM module for local authenticaction with bluetooth devices libpam-ca - POSIX 1003.1e capabilities (PAM module) libpam-ccreds - Pam module to cache authentication credentials libpam-cgrou - control and monitor control groups (PAM) libpam-chroot - Chroot Pluggable Authentication Module for PAM libpam-ck-connector - ConsoleKit PAM module libpam-cracklib - PAM module to enable cracklib support libpam-dbus - A PAM module which asks the logged in user for confirmation libpam-duo - PAM module for Duo Security two-factor authentication libpam-dynalogin - two-factor HOTP/TOTP authentication - implementation libs libpam-encfs - PAM module to automatically mount encfs filesystems on login libpam-fprintd - PAM module for fingerprint authentication trough fprintd libpam-geo - PAM module checking access of source IPs with a GeoIP database libpam-gnome-keyring - PAM module to unlock the GNOME keyring upon login libpam-google-authenticator - Two-step verification libpam-heimdal - PAM module for Heimdal Kerberos libpam-krb5 - PAM module for MIT Kerberos libpam-krb5-migrate-heimdal - PAM module for migrating to Kerberos libpam-lda - Pluggable Authentication Module for LDA libpam-ldapd - PAM module for using LDAP as an authentication service libpam-mkhomedir - libpam-mklocaluser - Configure PAM to create a local user if it do not exist already libpam-modules - Pluggable Authentication Modules for PAM libpam-modules-bin - Pluggable Authentication Modules for PAM - helper binaries libpam-mount - PAM module that can mount volumes for a user session libpam-mysql - PAM module allowing authentication from a MySQL server libpam-nufw - The authenticating firewall [PAM module] libpam-oath - OATH Toolkit libpam_oath PAM module libpam-ocaml - OCaml bindings for the PAM library (runtime) libpam-openafs-kaserver - AFS distributed filesystem kaserver PAM module libpam-otpw - Use OTPW for PAM authentication libpam-p11 - PAM module for using PKCS#11 smart cards libpam-passwdqc - PAM module for password strength policy enforcement libpam-pgsql - PAM module to authenticate using a PostgreSQL database libpam-pkcs11 - Fully featured PAM module for using PKCS#11 smart cards libpam-pold - PAM module allowing authentication using a OpenPGP smartcard libpam-pwdfile - PAM module allowing authentication via an /etc/passwd-like file libpam-pwquality - PAM module to check password strength libpam-python - Enables PAM modules to be written in Python libpam-python-doc - Documentation for the bindings provided by libpam-python libpam-radius-auth - The PAM RADIUS authentication module libpam-runtime - Runtime support for the PAM library libpam-script - PAM module which allows executing a script libpam-shield - locks out remote attackers trying password guessing libpam-shish - PAM module for Shishi Kerberos v5 libpam-slurm - PAM module to authenticate using the SLURM resource manager libpam-smbpass - pluggable authentication module for Samba libpam-snapper - PAM module for Linux filesystem snapshot management tool libpam-ssh - Authenticate using SSH keys libpam-sshauth - authenticate using an SSH server libpam-sss - Pam module for the System Security Services Daemon libpam-systemd - system and service manager - PAM module libpam-tacplus - PAM module for using TACACS+ as an authentication service libpam-tmpdir - automatic per-user temporary directories libpam-usb - PAM module for authentication with removable USB block devices libpam-winbind - Windows domain authentication integration plugin libpam-yubico - two-factor password and YubiKey OTP PAM module libpam0g - Pluggable Authentication Modules library libpam0g-dev - Development files for PAM libpam4j-java - Java binding for libpam.so libpam4j-java-doc - Documentation for Java binding for libpam.so
あなた自身の結論を引き出してください。
CentOSの
インストールプロセス中にオプション«を選択した場合GUIを備えたサーバー«、SMEネットワークにさまざまなサービスを実装するための優れたプラットフォームを取得します。 Debianとは異なり、CentOS /RedHat®は、システム管理者またはネットワーク管理者の作業を容易にする一連のコンソールおよびグラフィカルツールを提供します。
ドキュメンテーション
デフォルトでインストールされ、次のディレクトリにあります。
[root @ linuxbox〜] #ls -l /usr/share/doc/pam-1.1.8/ 合計256-rw-r-r--。 1ルートルート2045 18年2013月2日著作権drwxr-xr-x。 4096ルートルート9月06日28:XNUMX HTML -rw-r-r--。 1ルートルート175382月5日19:13Linux-PAM_SAG.txt-rw-r-r--。 1ルートルート67948 18年2013月86.0日rfc2.txtdrwxr-xr-x。 4096ルートルート9月06日28:XNUMX txt
[root @ linuxbox〜] #ls /usr/share/doc/pam-1.1.8/txts/ README.pam_access README.pam_exec README.pam_lastlog README.pam_namespace README.pam_selinux README.pam_timestamp README.pam_console README.pam_faildelay README.pam_limits README.pam_ME.libME.pam_nologin README.pam_sepermit README.pam_tty pam_shells README.pam_umask README.pam_chroot README.pam_filter README.pam_localuser README.pam_postgresok README.pam_stress README.pam_unix README.pam_debug README.pam_ftp README.pam_user_ README.pam_ftp README.pam_loginuid README.pam_pwhistory READ .pam_rhosts README.pam_tally README.pam_warn README.pam_echo README.pam_issue README.pam_mkhomedir README.pam_rootok README.pam_tally2 README.pam_wheel README.pam_ADMEADME_automeditREADME.pam_ADMEADME。
はい、Debianと同様にCentOSチームを「linuxbox」と呼んでいます。これはSMBネットワークに関する今後の記事に役立ちます。
GNOME3GUIを備えたCentOS
オプション«を選択するとGUIを備えたサーバー«、GNOME3デスクトップおよびその他のユーティリティと基本プログラムは、サーバーを開発するためにインストールされます。 コンソールレベルでは、実行する認証のステータスを知るために、次のことを行います。
[root @ linuxbox〜]#authconfig-tui
現在のサーバー構成に必要なPAMモジュールのみが有効になっていることを確認します。指紋を読み取るモジュールも、ラップトップの一部のモデルに見られる認証システムです。
GNOME3GUIを備えたCentOSがMicrosoftActiveDirectoryに参加しました
ご覧のとおり、必要なモジュールが追加され、有効になっています-ウィンバインド--Active Directoryに対する認証用ですが、必要がないため、モジュールがフィンガープリントを読み取ることを意図的に無効にします。
今後の記事では、CentOS7クライアントをMicrosoftActiveDirectoryに参加させる方法について詳しく説明します。 私たちは、ツールを使用することだけを期待しています authconfig-gtk 必要なパッケージのインストール、ローカルで認証するドメインのユーザーのディレクトリの自動作成の構成、およびクライアントをActiveDirectoryのドメインに参加させるプロセス自体が大幅に自動化されています。 おそらく、結合後は、コンピューターを再起動するだけで済みます。
メインファイル
CentOS認証に関連するファイルはディレクトリにあります /etc/pam.d/:
[root @ linuxbox〜] #ls /etc/pam.d/ atd liveinst smartcard-auth-ac authconfig login smtp authconfig-gtk other smtp.postfix authconfig-tui passwd sshd config-util password-auth su crond password-auth-ac sudo cups pluto sudo-i chfn polkit-1 su-l chsh postlogin system-auth Fingerprint-auth postlogin-ac system-auth-ac finger-auth-ac ppp system-config-authentication gdm-autologin remote systemd-user gdm-fingerprint runuser vlock gdm-launch-environment runuser-l vmtoolsd gdm-password samba xserver gdm-pin setup gdm-smartcard smartcard-auth
利用可能なPAMモジュール
リポジトリがあります base、centosplus、epel、 y アップデート。 それらの中には、コマンドを使用して次のモジュールがあります。 yum 検索 pam-, yum 検索 pam_、そして、 yum 検索 libpam:
nss-pam-ldapd.i686:ディレクトリサーバーを使用するnsswitchモジュールnss-pam-ldapd.x86_64:ディレクトリサーバーを使用するnsswitchモジュールovirt-guest-agent-pam-module.x86_64:oVirtゲストエージェントpam用のPAMモジュール-kwallet.x86_64:KWallet用のPAMモジュールpam_afs_session.x86_64:ログイン時のAFS PAGおよびAFSトークンpam_krb5.i686:Kerberos 5用のプラガブル認証モジュールpam_krb5.x86_64:Kerberos5用のプラガブル認証モジュールKerberos86pam用のpam_ma64モジュール:Zarafaサーバーに対するMAPI経由pam_oath.x86_64:OATHのプラガブルログイン認証用のPAMモジュールpam_pkcs11.i686:PKCS#11 / NSS PAMログインモジュールpam_pkcs11.x86_64:PKCS#11 / NSS PAMログインモジュールpam_radius.x86_64:PAMモジュールRADIUS認証用pam_script.x86_64:スクリプトを実行するためのPAMモジュールpam_snapper.i686:スナッパーを呼び出すためのPAMモジュールpam_snapper.x86_64:スナッパーを呼び出すためのPAMモジュールpam_ssh.x86_64:SSHキーおよびssh-agentで使用するためのPAMモジュールpam_ssh_agent_686 86:ssh-agentで認証するためのPAMモジュールpam_ssh_agent_auth.x64_86:ssh-agentで認証するためのPAMモジュールpam_url.x64_86:HTTPサーバーで認証するためのPAMモジュールpam_wrapper.x64_86:PAMアプリケーションとPAMモジュールをテストするツールpam_yubico.x64_86: yubikeys用のプラグ可能な認証モジュールlibpamtest-doc.x64_86:libpamtest APIドキュメントpython-libpamtest.x64_86:libpamtest用のpythonラッパーlibpamtest.x64_86:PAMアプリケーションとPAMモジュールをテストするツールlibpamtest-devel.x64_XNUMX:テストするツールPAMアプリケーションとPAMモジュール
要約
Linux / UNIXコンピューターにログインするたびに認証がどのように実行されるかを一般的な方法で理解したい場合は、PAMに関する最低限の知識を持っていることが重要です。 また、ローカル認証を使用した場合にのみ、プロキシ、メール、FTPなどの小規模なSMEネットワーク内の他のコンピューターにサービスを提供できることを知っておくことも重要です。これらはすべて単一のサーバーに集中しています。 以前のすべてのサービス(および以前に見たようにさらに多くのサービス)には、PAMモジュールがあります。
相談した情報源
- コマンドマニュアル- マニュアルページ.
- 認証:スペイン語のウィキペディアページ
- プラグ可能な認証モジュール
- Red_Hat_Enterprise_Linux-6-Deployment_Guide-en-US
PDF版
PDF版をダウンロードする ここで.
次の記事まで!
著者:Federico A. Valdes Toujague
federicotoujague@gmail.com
https://blog.desdelinux.net/author/fico
PAMを使用した認証に関する非常に詳細な記事ですが、認証の操作と、提供できるより詳細で安全なアプリケーションの数が無限にあることを詳しく知りませんでした。 これは、中小企業で複数の目的を持つことができるPAM認証の範囲を確認できる優れた記事です。
あなたの大きな貢献のもう一つ、そのような良いフィコ素材をありがとうございました
コメントありがとうございます、Luigys様。 この記事の目的は、PAMとそのモジュールに関する読者の心を開くことです。 投稿は成功したと思います。
ちなみに、コメントがメールで届いていないことをお知らせします。
笑、前のコメントにメールアドレスを書くのを忘れてしまいました。 だからアノニマスが出てきます。 😉
いつものように素晴らしい記事。
非常に有益なFederico、私はPAMを複数回処理する必要があり、デザインを賞賛しています。フックに機能を挿入できると非常に便利です。たとえば、最後に行ったのはPythonのRESTAPIでした。 /私のドメインのユーザーのログインとログオフを収集するFlask(兄貴のスタイル、すべてを知るため)、APIに通知するためにcurlを呼び出す場所を推測しないためですか? はい、PAMで。
投稿を評価してくれたHO2GIに感謝します。
ダンター:また挨拶します。 いつものように、あなたは非常に興味深いことをしています。 何も、この投稿は私が「心を開くために」カタログ化したもののXNUMXつです。