シングルサインオン(下)達成のNFSv4 + LDAP +ケルベロス

シングルサインオン(下)達成のNFSv4 + LDAP +ケルベロス

六.nfsクライアントがインストールされている
インストール、SSSDクライアントであるNFSクライアントをSSSDとNFS-共通

1.インストールSSSD
自動的にインストールlibsasl2-モジュール-GSSAPI-MIT(非依存)
libsasl2-GSSAPI-MIT-モジュールとlibsasl2-モジュール-GSSAPI-Heimdalの両方の競合、インストールlibsasl2-モジュール-GSSAPI-heimdalの月

ルートの@のdebian:〜#apt-getのSSSD SSSD-krb5のSSSD-LDAPのインストールlibsasl2-モジュールを-GSSAPI-heimdalの

インストール後sssd.confは変更されませんnsswitch.confの、空のファイルであります

root@debian:~# ls -l /etc/sssd/sssd.conf
-rw------- 1 root root 1938 Jun 10 11:18 /etc/sssd/sssd.conf   

読み込み可能な所有者のみ(SSSDの文書化要件sssd.confルートrootユーザーだけが読み取りと書き込み、またはSSSDを開始することはできません)

nsswitch.confファイル、設定ファイルを変更しますsssd.conf

1)チェックsssd.conf
root@debian:~# cat /etc/sssd/sssd.conf
[SSSD]
config_file_version = 2

サービス=のNSS、PAMの
ドメイン=インターン

[NSS]

[PAM]

[ドメイン/インターン]

# - v-- LDAPが提供するUNIXユーザ情報
LDAP id_provider =
# - ^ -

# - v--ケルベロスによって提供されるユーザ認証とパスワード変更
auth_provider =のkrb5
chpass_providerのkrb5の=
# - ^ -

ldap_uri = LDAP://192.168.1.101
ldap_search_base = OU = hdkrb5、DC = CTP、DC =ネット
ldap_tls_reqcert =許可

krb5_server = 192.168.1.101
krb5_realm = CTP.NET

# -認定することはできません何の全体的な環境がありませんv--、パスワード認証がタイムアウトより大きく設定する必要があり、長い時間を取る必要があります
krb5_auth_timeoutを= 60
# - ^ -
root@debian:~#

2)查看のnsswitch.conf
root@debian:~# cat /etc/nsswitch.conf
のpasswd:SSSファイル
グループ:SSSファイル
影:ファイルSSS

gshadowの:ファイル

ホスト:ファイルが[NOTFOUND =リターン]のDNS mdns4_minimal
ネットワーク:ファイル

プロトコル:DBファイル
サービス:SSS DBファイル
エーテル:DBファイルの
RPC:DBファイル

ネットグループ:NISがsssは
sudoersファイルを:SSSをファイル

root@debian:~#
即将原来的compat改为files sss

3)安装SSSD时自动设置/etc/pam.d/の
linlin@debian:~$ cat /etc/pam.d/common-session-noninteractive
セッション[デフォルト= 1] pam_permit.so
pam_deny.soセッションの必要な
セッションpam_permit.so必要
とpam_unix.so必要なセッション
のセッションオプションpam_umask.soのumask = 002

linlin@debian:~$
linlin@debian:~$ cat /etc/pam.d/common-session

セッション[デフォルト= 1] pam_permit.so
pam_deny.soセッションの必要な
セッションがpam_permit.so必要
とpam_unix.so必要なセッション
のセッションオプションpam_sss.soの
セッションオプションpam_systemd.soの
セッションオプションpam_umask.soのumask = 002

linlin@debian:~$
linlin@debian:~$ cat /etc/pam.d/common-password

= 3リトライpam_pwquality.soパスワードの必要な
あいまいなuse_authtokはtry_first_passのSHA512のとpam_unix.so [無視=成功= 2デフォルト]パスワードを
パスワード十分pam_sss.soのuse_authtokはの
pam_deny.soパスワードの必要な
pam_permit.so必要なパスワード
パスワードオプションpam_gnome_keyring.so

linlin@debian:~$
linlin@debian:~$ cat /etc/pam.d/common-auth

AUTH [成功= 2デフォルト=無視] pam_unix.so nullok_secure
AUTH [成功= 1デフォルト=無視] pam_sss.soたuse_first_pass
AUTH必要pam_deny.so
pam_permit.so必要AUTH
認証オプションpam_group.so

linlin@debian:~$
linlin@debian:~$ cat /etc/pam.d/common-account

アカウント[成功= 1 new_authtok_reqd =行なわデフォルト=無視]とpam_unix.so
アカウント必須pam_deny.so
アカウントpam_permit.so必要な
アカウントの十分なpam_localuser.soの
[無視=デフォルト=悪い成功= OK USER_UNKNOWN]アカウントをpam_sss.so
linlin@debian:~$

4)再起動SSSD

root@debian:~# /etc/init.d/sssd stop
root@debian:~# /etc/init.d/sssd start

5)测试
linlin@debian:~$ kpasswd krblinlin
[email protected]'sパスワード:
[email protected]の新しいパスワード:
パスワードの確認- [email protected]のための新しいパスワード:
成功:パスワードを変更します

linlin@debian:~$

linlin@debian:~$ su krblinlin
Password:
krblinlin@debian:/home/linlin$

krblinlin@debian:/home/linlin$ passwd

現在のパスワード:
新しいパスワード:
BAD PASSWORD:パスワードは8つの文字より短い
新しいパスワード:
新しいパスワードを再入力は:
passwdに:パスワードは要很正常に更新长时间
krblinlin@debian:/home/linlin$

ログインに成功し、パスワード変更コマンドのkpasswd、成功しPASSWD。Kerberosパスワードをメモには、非LDAPパスワードパスワードです

しかし、KDCサーバを再起動すると、SSSDクライアントがログオンできない場合他の人が他の正常な環境を試しながら、あなたは、あなたが原因を見つけることができません手動でデーモンheimdalの-KDC KDCサーバー上を再起動する必要があり、いくつかの状況に問題があります

2. NFS、共通のインストール
root@debian:~# apt-get install nfs-common

/ etc / default / nfs-共通のファイルが変更
されます
NEED_GSSD =
変更
= "yes"をNEED_GSSDを

root@debian:~# /etc/init.d/nfs-common stop
root@debian:~# /etc/init.d/nfs-common start

root@debian:~# ps -e |grep gss
1027年?午前0時00分○○秒rpc.gssd

1)ネットワークマウント
手動マウント

root@debian:~# mount -t nfs4 srvnf.ctp.net:/home/linlin/share /mnt -o sec=krb5

若しくは

の/ etc / fstabファイルに追加し、ブートは、ネットワークマウント
root@debian:~# cat /etc/fstab
UUID = c992cbf5-3eca-baf9-b5a3180acdbb-4434 / ext4のエラーを再マウント-RO = 0.1
#swap WAS中にONの/ dev / sda5ですインストール
UUID = 854aa36b-6ce5-436dをSW-50aa10e8338cスワップなし-91fa 0 0
0 0にnoautoは/ dev / SR0 /メディア/ cdrom0にUDF、ISO9660ユーザー、

#ネットワーク共有の追加
srvnf.ctp.net:/home/linlin/share / mntにNFS4 RW、秒= krb5のを
root@debian:~#

2)マウント情報の確認
linlin@debian:~$ mount|grep nfs
MNTタイプNFS4(RW /上srvnf.ctp.net:/home/linlin/share 、がrelatime、VERS = 4.0、RSIZE = 262144、wsizeの値= 262144、= 255 namlen、ハード、プロト= TCPをポート= 0、ティメオ= 600、 RETRANS = 2、秒= krb5の、CLIENTADDR = 192.168.1.102、local_lock =なし、ADDR = 192.168.1.103)

3)書き込みネットワーク共有をテスト

root@debian:~# ls -ld /mnt
drwxr-xr-x 2 krblinlin 4001 4096 Sep 18 09:13 /mnt
root@debian:~#

あなたはLDAPにユーザーをkrblinlin、表示LDAPユーザ情報を取得している見ることができます

通常のローカルユーザの下で
linlin@debian:~$ su krblinlin
パスワード:
またはコンソールに直接ログイン
krblinlin:Debianのログイン
パスワード:

krblinlin@debian:/home/linlin$ cd /mnt
krblinlin@debian:/mnt$ touch a.txt
krblinlin@debian:/mnt$ ls
a.txt
krblinlin@debian:/mnt$

成功を書きます

root@debian:~# ps -e |grep idmapd
  533 ?        00:00:00 rpc.idmapd

この時点で、認証として、SSSDクライアントが正常に共有NFSv4サーバのネットワークへのアクセスを読み書きしているのKerberosへのLDAPストアのユーザー情報として、

VII。あとがき
本稿の目的は、DNS、DHCPを必要とする同様のFreeIPAの、ADのActive Directory、Kerberosおよび完全なシステムを構築することですので、これは唯一の単なる実験です。

そしてsamba4を簡単に作成することができ、シングル・サインオンのプログラムを達成するためにも、Kerberosを設定しなくても、NFSv4のNFSv4のが弱い認証システムを使用して適用する必要がない場合は、LDAPのみシングルサインオンを満たすことができます.LDAP簡単なユーザー認証を数多く提供していますかLinuxでのActive Directory。

1.
Kerberosシステムは当初、マサチューセッツ工科大学、MIT Kerberosのすなわちプロジェクト(によって開発されたhttp://web.mit.edu/kerberos/で現在非常に活発、)
Heimdalのケルベロスプロジェクトペーパー(別のKerberosシステム// WWW:HTTP。 h5l.org/)。

なぜHeimdalのアンソロジーMITを選択し、以前に1がLDAPバックエンドとしてKerberosを使用し、そして第二に、平文のLDAPデータベース管理者のパスワードを格納しないようにすることです、言及されていない。
1)MITプラグインのサポートLDAPバックエンドとして、文書もサポートを示しEXTERNALが、私は、ソースコードが手掛かり見ることができない参照、サポートEXTERNALを構成する方法を量るしていない
ST = ldap_sasl_interactive_bind_s(サーバ- > ldap_handle、 NULL、ctx-> sasl_mech、NULL、NULL、LDAP_SASL_QUIET、対話、CTX)を、
設定ファイルでは、 「外部」ctx-に渡された> sasl_mech

情報の最初の使用は、MITがたldap_get_optionソースを持っているものの、LDAP_OPT_X_SASL_AUTHZIDについてEXTERNALをldap_sasl_interactive_bind_sように見える前たldap_get_optionを探すが、内部関係なく、認証の、いくつか書かれて死亡LDAP_OPT_xxxxあり、および関連SASLを見つけられませんでした

2)HeimdalのビルトインサポートLDAPバックエンド、デフォルトサポートEXTERNALは、参照ソースコード単純な
RC = ldap_sasl_bind_s(HDB2LDAP(DB) 、NULL、 "外部"、&BV、NULL、NULL、NULL);

3)プラグインOpenLDAPのパスワード同期はHeimdalのをサポートしています

パスワードを同期2.openldap
時々 Kerberosログインは、時々 、LDAPログインして、パスワードの二組を維持するために覚えているときは、面倒である。唯一の1つのパスワードを使用するための3つの方法があります。

方法1:
あなたが設定する必要がありますように、{} SASL方法を使用します

root@debian:~# cat /etc/sasl2/slapd.conf
pwcheck_method: saslauthd
root@debian:~#

userPasswordが一定値{SASL}を満たす属性
この方法は、インターネットを検索する方法であって、私は試していません。

方法2と方法3:同期コードプラグ設置のOpenLDAPのslapd-smbk5pwd

方法2:
のuserPasswordは固定値{K5KEY}塗りつぶし属性
userPassword属性の値を変更しないように注意する方法2と方法1、及びパスワードは方法Kerberosを変更することができ

方法3:
パスワードの変更のみLDAPの仕方ができ、唯一のコマンドものuserPassword、krb5Keyを変更し、同様の方法をldappasswd。
Ldappasswd Aツールはldappasswdが変更(RFC 3062を使用していますLDAPv3のLDAPユーザパスワードのパスワードを設定されているし。 )延長運転。
注ldappasswdはLDAP拡張操作の詳細で、RFC 3062.を参照してください
、私はldappasswdはLDAPデータベースに保存されているLDAPサーバ、自身が暗号文にハッシュLDAPサーバにハッシュせずに平文で送信する必要があります理解します。
通常のLDAPは、暗号文のパスワードハッシュ、LDAPサーバに独自のクライアント平文にパスワードを変更しないと、LDAPデータベース変換に保存されているもはや、LDAPのパスワード属性と他の属性を持っているであろうと違いはありません、パスワード通常のLDAPを変更しますそれは属性値を変更することで、他の方法と同じように。
方法3は、Kerberos、LDAP、サンバ3つのパスワード同期を達成することができます

この論文では、実施の形態2または実施の形態3
)インストール

root@debian:~# apt-get install slapd-smbk5pwd

slapdの-smbk5pwd:slapdの中に同期してSambaとKerberosのパスワードを保持します

2)ロード・モジュール

root@debian:~# cat smbk5pwd.ldif
dn: cn=module{0},cn=config
changetype: modify
add: olcModuleLoad
olcModuleLoad: smbk5pwd
root@debian:~#
root@debian:~# ldapadd -Y EXTERNAL -H ldapi:/// -f smbk5pwd.ldif

3)Heimdalの-KDCは以前にインストールされ、HeimdalのLDAPモードがあれば、同期の目的は、本明細書Heimdalのため、Sambaが同期していないように、モードサンバを追加する必要がなく、追加された追加しました

4)は/ var / libに/ heimdalの-KDC / MキーのOpenLDAPにユーザーがいる
M-キーは、プライマリ権威がルートであり、ルートのOpenLDAP OpenLDAPのユーザーが開始している間のみお読みください。
そうでない場合は最初の変更許可M-キー最初のステップ5)は、無権限により、ldapaddのエラーになりますしながら、

root@debian:~# chown openldap /var/lib/heimdal-kdc/m-key

5)同期を有効にします

root@debian:~# cat krb5.ldif
dn: olcOverlay=smbk5pwd,olcDatabase={1}mdb,cn=config
changetype: add
objectClass: olcOverlayConfig
objectClass: olcSmbK5PwdConfig
olcOverlay: smbk5pwd
olcSmbK5PwdEnable: krb5
root@debian:~#
root@debian:~# ldapadd -Y EXTERNAL -H ldapi:/// -f krb5.ldif

6)再起動のOpenLDAP
、それはすぐに効果的な通常のオンライン構成ですが、は/ var / libに/ heimdalの-KDC / Mキーファイルのパーミッションの問題なので、OpenLDAPのを再起動することはまだ良いです

7)試験
一般ローカルユーザログイン

linlin@debian:~$ ldappasswd  -h 192.168.1.101 -D "[email protected],ou=hdkrb5,dc=ctp,dc=net" -W -S
New password:
Re-enter new password:
Enter LDAP Password: 老密码(LDAP用户的密码,不是指Kerberos用户密码)
linlin@debian:~$

この改正LDAPユーザーのパスワードをしても、Kerberosパスワードを変更するには、ユーザのログイン・パスワードでのKerberosも正常です

なおは/ var / libに/ Heimdalの-KDC / Mキー正しい(ldappasswdそうでなければ成功を示すが、実際krb5Keyプロパティの値が破損しているが、ユーザがKerberosパスワードにログインすることができない)ことを保証するために、ファイルのパーミッションを

3. LDAPのインストールプロセスが自動的にuserPassword匿名を除く他の属性が読み込ま設定しますが、krb5Keyプロパティは、このkrb5Key?読んでから禁止されている非Kerberosユーザーを設定する必要があるかどうか、Kerberosパスワード情報が含まれている必要がありますので
、該当I Fucaiを情報は、明示的に禁止はしてもkrb5Key不正に取得されていません設定されていない、何の/ var / libに/ heimdalの-KDC / Mキーあなたがコードを解読することはできませんか?

4.設定を自動的に作成非ローカルユーザーのユーザーディレクトリがSSSDのログイン
クライアントにkrblinlinログ上の実験を、クライアントkrblinlinのユーザディレクトリが存在しませんが。
自動的にパッケージにユーザーディレクトリpam_mkhomedir.so、pam_mkhomedir.so libpamによる検索・モジュールを作成するために使用することができます中
1)インストール
root@debian:~# apt-get install libpam-modules

2)以下の線に沿って、ライン/etc/pam.d/common-sessionのpam_mkhomedir.soを追加する
...
セッションは、pam_unix.soを必要と

# - v--新しい行、自動的にユーザディレクトリ作成
のumask = 0077 pam_mkhomedir.so必要なセッション
#を- ^ -

セッション[成功= OK、デフォルト=無視] pam_ldap.so minimum_uid = 1000
...

3)ログイン
Debianのログイン:krblinlin
パスワード:
。ディレクトリ「/ホーム/ krblinlin」を作成すると、ユーザーのログインディレクトリを作成するには、最初に通常となっています

krblinlin@debian:~$
krblinlin@debian:~$ pwd
/home/krblinlin
krblinlin@debian:~$

ACL 5.ファイルシステム(アクセス制御リスト)
のNFSv4のNFSv4 ACLですが、しかし、この実験はまだPOSIX ACLでは、唯一のNFSv4 ACLをサポートする唯一のローカルファイルシステムをZFS場合のNFSv4 ACLローカルファイルシステムは、それをサポートする必要があるかもしれないと思います

6.ドメインの
LDAPドメインとKerberosドメインが異なる場合があります

Kerberos領域、すなわちCTP.NETある
実質的DN LDAPはDC = OLED、dc = comなどであってもよいです

7.その他
のDebian 9 OpenLDAPのインストール・プロセスは、バックエンドのMDB LDAPとして使用され、任意にLDAPバックエンド異なる選択された後、構成ディレクトリ、ファイル名とバックエンド名によって構成データベースエントリの内容HDBと他の
この実験で使用されるMDBました

root@debian:~# apt-get install tree
root@debian:~# tree /etc/ldap/slapd.d
/etc/ldap/slapd.d
|-- cn=config
|       |-- cn=module{0}.ldif
|       |-- cn=schema
|       |     |-- cn={0}core.ldif
|       |     |-- cn={1}cosine.ldif
|       |     |-- cn={2}nis.ldif
|       |     |-- cn={3}inetorgperson.ldif
|       |-- cn=schema.ldif
|       |-- olcBackend={0}mdb.ldif
|       |-- olcDatabase={-1}frontend.ldif
|       |-- olcDatabase={0}config.ldif
|       |-- olcDatabase={1}mdb.ldif
|-- cn=config.ldif

root@debian:~#
上面是刚安装完openldap后的

再作成するデータベースのLDAPへの
ルートの@のdebian:〜#dpkg-再構成のslapdの
設定プロセス選挙HDBバックエンドの場合、コンテンツがHDBです

ビューLDAPデータベース
ルートの@のdebian:〜#のslapcat

構成データベースチェック
〜#slapcat -b:ルートの@のdebianのcn = configのを

VIII。固定
実験はのDebianの9テストバージョンである環境
最初のセクション2)の設定ACLアクセス制御リスト、ライン「意志」の第三章では、

olcAccess: {2}to * by self write by dn="cn=admin,dc=ctp,dc=net" write by * read

私はそのライン「から」オリジナルもコピーし、インストールパッケージのOpenLDAPのスクリプト自体、または自分の間違いを設定覚えていないto * by self write
自己書き込みによって*これは.'to重大な欠陥や誤りである「LDAPは、ユーザーが自分のエントリを変更することができます任意の属性、
0のLDAPのLDAPクライアントのデフォルトの設定値が非uidNumber属性ルートをマッピングしているが、このようなLDAPユーザとして(すなわち、平均的なユーザーが自分の権利を提供することができ、非常に危険であり、0にUNIX uidNumber属性、すなわちルートを所有することができ)、または他のユーザーを偽装。
したがって、LDAPユーザーの原理はそれ自体のみを変更させ、唯一のパスワード属性を変更することができ、他の属性は、管理者のみが設定できます。

ライン「から」そのため、オリジナル
olcAccess: {2}to * by self write by dn="cn=admin,dc=ctp,dc=net" write by dn.exact=gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth manage by * read
実際に交換します
olcAccess: {2}to * by dn="cn=admin,dc=ctp,dc=net" write by dn.exact=gidNumber=0+uidNumber=0,cn=peercred,cn=external,cn=auth manage by * read

この記事は、改正されました。

元の完全な設定「に」プレートのOpenLDAPを搭載せずに添付のDebian 10試験olcAccess

olcSuffix: dc=ctp,dc=net
olcAccess: {0}to attrs=userPassword by self write by anonymous auth by * none
olcAccess: {1}to attrs=shadowLastChange by self write by * read
olcAccess: {2}to * by * read
olcLastMod: TRUE
olcRootDN: cn=admin,dc=ctp,dc=net

おすすめ

転載: blog.51cto.com/13752418/2443824