#norelated
#topicpath
#contents

*予定 [#e58221b9]
#memo(Jan 14 18:45:00 sen-ins01 jpcagtu[27113]: nss_ldap: could not search\nLDAP server - Server is unavailable\nJan 14 18:50:00 sen-ins01 last message repeated 5 times\n\n★この施策で変更になる保守手順について「06_引き継ぎ資料作成\【施策名】運用引継ぎ事項_yyyymmdd.ppt」に記述する。\n\n○DL先 jT4SJosH\nhttps://sfss.yrl.com/filex/guest/login.flx?pid=y%2BNkxyUB2i8%3D%0D%0A&bid=%2FaWX1Yei2a8%3D%0D%0A\nhttp://arinux.net/?eid=48\n\n# ldappasswd -x -w kuraesig -D "cn=Manager,dc=esight,dc=ntt-east,dc=co,dc=jp" "uid=okazaki,ou=People,dc=esight,dc=ntt-east,dc=co,dc=jp" -S\nNew password: \nRe-enter new password: \nResult: Success (0)\n\n# vi ppolicy_ou.ldif\ndn: ou=Policies,dc=examples,dc=com\nobjectClass: top\nobjectClass: organizationalUnit\nou: Policies\n\n# vi ppolicy_default.ldif\ndn: cn=Standard Policy,ou=Policies,dc=examples,dc=com\nobjectClass: top\nobjectClass: device\nobjectClass: pwdPolicy\ncn: Standard Policy\npwdAttribute: userPassword\npwdMustChange: TRUE\npwdCheckQuality: 1\npwdInHistory: 2\npwdMinLength: 8\npwdReset: TRUE\n\n★LDAPサーバへの接続を確認する方法\nldapsearch -h 10.159.213.14 -vx -b "dc=esight,dc=ntt-east,dc=co,dc=jp" -D "cn=Manager,dc=esight,dc=ntt-east,dc=co,dc=jp" "(uid=akiyama)" -w kuraesig\nldapsearch -h 10.159.213.14 -vx -b "dc=esight,dc=ntt-east,dc=co,dc=jp" -D "cn=Manager,dc=esight,dc=ntt-east,dc=co,dc=jp" -w kuraesig)
#memo(○DL先 jT4SJosH\nhttps://sfss.yrl.com/filex/guest/login.flx?pid=y%2BNkxyUB2i8%3D%0D%0A&bid=%2FaWX1Yei2a8%3D%0D%0A\nhttp://arinux.net/?eid=48\n\n# ldappasswd -x -w kuraesig -D &#x22;cn=Manager&#x2c;dc=esight&#x2c;dc=ntt-east&#x2c;dc=co&#x2c;dc=jp&#x22; &#x22;uid=okazaki&#x2c;ou=People&#x2c;dc=esight&#x2c;dc=ntt-east&#x2c;dc=co&#x2c;dc=jp&#x22; -S\nNew password: \nRe-enter new password: \nResult: Success (0)\n\n# vi ppolicy_ou.ldif\ndn: ou=Policies&#x2c;dc=examples&#x2c;dc=com\nobjectClass: top\nobjectClass: organizationalUnit\nou: Policies\n\n# vi ppolicy_default.ldif\ndn: cn=Standard Policy&#x2c;ou=Policies&#x2c;dc=examples&#x2c;dc=com\nobjectClass: top\nobjectClass: device\nobjectClass: pwdPolicy\ncn: Standard Policy\npwdAttribute: userPassword\npwdMustChange: TRUE\npwdCheckQuality: 1\npwdInHistory: 2\npwdMinLength: 8\npwdReset: TRUE\n\n★LDAPサーバへの接続を確認する方法\nldapsearch -h 10.159.213.14 -vx -b &#x22;dc=esight&#x2c;dc=ntt-east&#x2c;dc=co&#x2c;dc=jp&#x22; -D &#x22;cn=Manager&#x2c;dc=esight&#x2c;dc=ntt-east&#x2c;dc=co&#x2c;dc=jp&#x22; &#x22;(uid=akiyama)&#x22; -w kuraesig\nldapsearch -h 10.159.213.14 -vx -b &#x22;dc=esight&#x2c;dc=ntt-east&#x2c;dc=co&#x2c;dc=jp&#x22; -D &#x22;cn=Manager&#x2c;dc=esight&#x2c;dc=ntt-east&#x2c;dc=co&#x2c;dc=jp&#x22; -w kuraesig\n\n* DVDのパッケージのコピー手順\nmount -t iso9660 /dev/sr0 /mnt/dvd/\nmkdir -p /mnt/nas/Packages/Packages_7.4\ncp -pr /mnt/dvd/Packages /mnt/nas/Packages/Packages_7.4\n\n\n* 検証環境のRHEL7.3のsssd.confの内容\n[sssd]\ndebug_level = 9\nconfig_file_version = 2\nservices            = nss&#x2c; pam&#x2c; ssh&#x2c; sudo&#x2c; autofs&#x2c; pac\ndomains             = ldap\n[domain/ldap]\nautofs_provider = ldap\nid_provider     = ldap\nauth_provider   = ldap\nchpass_provider = ldap\nldap_uri              = ldap://10.159.213.14&#x2c;ldap://10.159.215.14\nldap_search_base      = dc=esight&#x2c;dc=ntt-east&#x2c;dc=co&#x2c;dc=jp\nldap_id_use_start_tls = True\nldap_tls_reqcert = never\nldap_search_timeout              = 3\nldap_network_timeout             = 3\nldap_opt_timeout                 = 3\nldap_connection_expire_timeout   = 30\nldap_sudo_smart_refresh_interval = 600\nldap_sudo_full_refresh_interval  = 10800\nentry_cache_timeout = 40\n[nss]\nentry_negative_timeout        = 3\n[pam]\n[sudo]\n[autofs]\n[ssh]\n[pac]\n[ifp]\n\n** RHEL73のpam.d配下\n  [ password-auth-ac.org ]\nauth        required      pam_env.so\nauth        [default=1 success=ok] pam_localuser.so\nauth        [success=done ignore=ignore default=die] pam_unix.so nullok try_first_pass\nauth        requisite     pam_succeed_if.so uid >= 1000 quiet_success\nauth        sufficient    pam_sss.so forward_pass\nauth        required      pam_deny.so\naccount     required      pam_unix.so\naccount     sufficient    pam_localuser.so\naccount     sufficient    pam_succeed_if.so uid < 1000 quiet\naccount     [default=bad success=ok user_unknown=ignore] pam_sss.so\naccount     required      pam_permit.so\npassword    requisite     pam_pwquality.so try_first_pass local_users_only retry=3 authtok_type=\npassword    sufficient    pam_unix.so sha512 shadow nullok try_first_pass use_authtok\npassword    sufficient    pam_sss.so use_authtok\npassword    required      pam_deny.so\nsession     optional      pam_keyinit.so revoke\nsession     required      pam_limits.so\n-session     optional      pam_systemd.so\nsession     optional      pam_oddjob_mkhomedir.so umask=0077\nsession     [success=1 default=ignore] pam_succeed_if.so service in crond quiet use_uid\nsession     required      pam_unix.so\nsession     optional      pam_sss.so\n\n[root@rhel73_gui pam.d]# show system-auth-ac\n  [ system-auth-ac ]\nauth        required      pam_env.so\nauth        sufficient    pam_fprintd.so\nauth        [default=1 success=ok] pam_localuser.so\nauth        [success=done ignore=ignore default=die] pam_unix.so nullok try_first_pass\nauth        requisite     pam_succeed_if.so uid >= 1000 quiet_success\nauth        sufficient    pam_sss.so forward_pass\nauth        required      pam_deny.so\naccount     required      pam_unix.so\naccount     sufficient    pam_localuser.so\naccount     sufficient    pam_succeed_if.so uid < 1000 quiet\naccount     [default=bad success=ok user_unknown=ignore] pam_sss.so\naccount     required      pam_permit.so\npassword    requisite     pam_pwquality.so try_first_pass local_users_only retry=3 authtok_type=\npassword    sufficient    pam_unix.so sha512 shadow nullok try_first_pass use_authtok\npassword    sufficient    pam_sss.so use_authtok\npassword    required      pam_deny.so\nsession     optional      pam_keyinit.so revoke\nsession     required      pam_limits.so\n-session     optional      pam_systemd.so\nsession     optional      pam_oddjob_mkhomedir.so umask=0077\nsession     [success=1 default=ignore] pam_succeed_if.so service in crond quiet use_uid\nsession     required      pam_unix.so\nsession     optional      pam_sss.so\n)

*実機確認 [#la2b9149]

**基本構成を組む [#s2397f3c]
-実機のコンフィグでslapdを起動する。まずは片系のみ。
-検索
--slapcatでデータが確認できること。OK
--ldapsearchでデータが確認できること。設定データなどは見えないこと。OK

**基本機能を確認する [#u1c5ef2b]
-追加・変更・削除
---要素追加ができること。OK
---要素変更ができること。OK
---要素削除ができること。OK
---データ(エントリごと)追加ができること。OK
---データ(エントリごと)削除ができること。OK
-権限
---権限のないdnでは検索できないこと。OK
---権限のないdnでは追加できないこと。OK
---権限のないdnでは変更できないこと。OK
---権限のないdnでは削除できないこと。OK
-ログイン認証
--そのLDAPを利用して、ログイン認証できるようにする。OK
---正しく設定できていればgetent passwd(各種キーワード)でLDAPから情報が取得できるはず。OK
---nas0(端末)から、srv0(LDAPサーバ自身)へsshログインする。OK
---nas0(端末)から、srv1(LDAPサーバでない)へsshログインする。OK
-二重化
--srv0をプロバイダ、srv1をコンシューマに設定し、同期されることを確認する。OK
---srv0で追加したデータが、コンシューマにコピーされる事を確認する。OK
---srv1で追加しようとするとエラーになる事を確認する。OK
--プロバイダとの同期不可(通信障害)の状態で確認する。
---やはりsrv1でデータ追加しようとしてもエラーになることを確認する。OK
---この状態でLDAPユーザに対してpasswdコマンドを投入したらどうなるか。齟齬が出るのか。OK
---srv0で追加したデータが、通信回復後にコンシューマにコピーされることを確認する。
--プロバイダとの同期不可(プロセス障害)の状態で確認する。
---srv1でデータ追加しようとしてもエラーになることを確認する。OK
---srv0のプロセス再起動後に、再同期されるか確認する。OK
--nsswitch.confの挙動を確認する。
---LDAP優先設定時、プロバイダとの通信が出来ない状態でログイン認証すると、タイムアウトしてコンシューマとの認証に移るのか。OK(即時に次のLDAPサーバに振り返られた。プロセス刺さったときのタイムアウト時間だと思われる)
---files優先設定時、LDAPサーバに無用な問い合わせをしない挙動か確認。OK

***メモ [#wcc31433]
-/etc/nsswitch.confはfiles ldapの順で正しい。逆順だとrootのときにlsするだけでLDAP検索が走ってしまう。両方に問い合わせてしまって問題なのは、ローカルとLDAPの両方に同名ユーザがいる場合。これをしなければよい。
-二重化しても何もなければ何の問い合わせも飛ばない。
-/etc/ldap.confと/etc/openldap.confの違いに注意すること。pamやnsは/etc/ldap.confを見ている。ldap系コマンドだけが/etc/openldap/ldap.confを見る。

**拡張機能を確認する [#rd6b09d6]

***TLS暗号化通信を確認する [#ob2cc062]
-サーバ証明書を作成する。
--オレオレ証明書の作成。
--証明書の設定。
-LDAP通信にTLSを利用するよう設定する。
--ローカルクライアントとの通信の暗号化を確認。
--ネットワーククライアントとの通信の暗号化を確認。
--コンシューマLDAPサーバとの同期通信の暗号化を確認。
---データを追加して、コンシューマに伝播するパケットをキャプチャする。

***拡張認証機能を確認する [#f39bdfad]
-ppolicyスキーマを導入する。
--ログイン認証の再確認
---nas0(端末)から、srv0(LDAPサーバ自身)へsshログインする。
---nas0(端末)から、srv1(LDAPサーバでない)へsshログインする。
--拡張機能の確認
---ログイン失敗回数超過で一定時間ロックされるか。
---期限超過で警告が出るか。
---猶予期間超過でもロックされない様にできるか。
---ログイン失敗でパスワード再設定を強制することができるか。
--ユーザ操作の確認
---パスワード変更が可能か(LDAPサーバ内から)
---パスワード変更が可能か(LDAPサーバ外から)
---パスワード文字数制限が有効になっているか。
---%%passwdコマンドはやはりppolicyと連携できないのか。%%passwdコマンドはppolicyと連携できた。OK
--ローカルアカウントへの影響
--LDAP登録していないアカウントにはppolicyが適用されず普通にログインできること。
--ローカルアカウントの追加で、LDAPにデータ追加されないこと。
--無用にLDAPに問い合わせを行わないこと。
-shadowスキーマ関連の削除
--shadow系が残っていた場合にppolicyの値だけが適用されているか。例えばアカウント期限など。
--削除用のLDIFファイルを作成する。
---shadow系データはLDAPサーバから削除する方針とする。誤認しやすくなったり、管理が混乱するので。

***連携機能を確認する [#y585b89a]
-ホームdirの自動作成の設定を行う。OK
--追加したアカウントで初ログインする際に、自動的にホームdirが作成されること。OK
-オートマウントの設定を行う。OK
--/export/home配下にNFSv3で、ログインユーザ毎のホームdirがオートマウントされること。OK
---一定時間経過後(ログアウト後)にumountされること。OK
---複数アカウントでログインし、それぞれのホームdirがマウントされること。OK

***その他の問題の検証 [#ed3cfa68]
-スラブメモリ増大問題
--オートマウント設定状態で、ログイン(オートマウント)ログアウトして、スラブメモリが増えるか確認する。
--連続ログイン・ログアウトを設定し、スラブメモリが増えるか確認する。
---増え続ける場合、最終的にハングアップまで行くか、挙動を確認する。
---増大する場合、一定周期にフラッシュすればハングアップしないか確認する。
--NFSv4だと問題が発生しないか確認する。
---その場合、オートマント設定の方法を調べなおし、再確認する。

* コメント [#t540dc23]
- note_ldap.txtをアップロード -- 俺 &new{2014-12-08 13:32:17};
- auto.txt -- 俺 &new{2014-12-08 16:46:43};
- autoexpect使え! -- 俺 &new{2014-12-12 17:16:02};
- autoexpect使え! -- 俺 &new{2014-12-15 13:45:52};
- for_tejun.tgzをうp -- 俺 &new{2015-01-13 14:53:28};
- script.txt -- 俺 &new{2015-01-14 12:19:52};
- auto.export_home -- 俺 &new{2015-01-15 15:31:32};
- 20150122.tgz -- 俺 &new{2015-01-26 21:17:55};

#comment

* メモ [#fe8605b7]
#memo(* 認証の設定\nhttp://funini.com/kei/unix/ldap.shtml\nhttp://funini.com/kei/unix/ldap-debian.shtml\nhttp://unixlife.jp/linux/centos-6/openldap-pam-ce6.html\nhttp://www.server-world.info/query?os=CentOS_5&p=ldap&f=3\n\n* PAM\nhttp://yukiten.com/blog/info-tec/ldap-linux-account-notes/\nhttp://www.wakaue.info/2dowiki/centos64-pam-passwordpolicy/\n\n* ppolicy\nhttp://www.wakaue.info/2dowiki/ldap-password-policy/\nhttp://raymonmon.blog38.fc2.com/blog-entry-16.html\nhttp://arinux.net/?eid=48\n\n* autofs\nhttp://d.hatena.ne.jp/tksmashiw/20080323\nhttps://fumiyas.github.io/linux/autofs.html\nhttp://masahir0y.blogspot.jp/2012/12/autofs-rhelcentosubuntu.html\nhttp://raymonmon.blog38.fc2.com/blog-entry-15.html\nhttp://d.hatena.ne.jp/hidde/20100113/1263351902\nhttp://d.hatena.ne.jp/hogem/20100906/1283789476\n\nhttp://kayanomori.net/memo/index.php?NIS%A5%B5%A1%BC%A5%D0%20%A1%F5%20NFS%A5%B5%A1%BC%A5%D0\nhttp://d.hatena.ne.jp/kirifue/20090606/1245142663\nhttp://www.maruko2.com/mw/automount_%E3%81%AE%E8%A8%AD%E5%AE%9A\n\n* NFSv4\nhttp://www.ftnk.jp/~fumi/cl/2008-12-18-3.html\nhttp://www.snia-j.org/tech/WH/NFSv4/files/NFSv4.pdf\nhttp://masahir0y.blogspot.jp/2012/12/nfs-v3-v4-rhelcentosubuntu.html\n\n* メモ\n** 2つのldap.conf\n- /etc/ldap.confは、pam_ldap、nss_ldap から利用されるファイルです。nsswitch.conf で 「ldap」 を設定すると、このファイルの内容に従って処理が行われます。\n- /etc/openldap/ldap.confは、OpenLDAPに付いている、LDAPコマンドを実行するときに参照されるファイルです。例えば、ldapsearch コマンドを実行する際に -x のみを指定すると、他に必要なパラメータはこのファイルから読みこまれます。ldapsearch はLDAPサーバとの接続性を確認するものであって、正しくLDAPの情報が参照できても、PAM認証が正常に働くといったものではありません。\n- 実験結果\n-- /etc/openldap/ldap.confにBASEを設定すると、一般ユーザも ldapsearch -x だけで検索ができるようになる(なってしまう)。\n--- ただしuserPasswordなどのへのACLはちゃんと効いてて表示されない。\n\n\n-ldappasswdコマンドだと、一般ユーザには敷居が高く、面倒くさがって更新しれくれない可能性がある。\n% ldappasswd -x -D &#x22;uid=ldapuser&#x2c;ou=People&#x2c;dc=private&#x2c;dc=jp&#x22; -S -w <ldapuserのパスワード> \\n&#x22;uid=ldapuser&#x2c;ou=People&#x2c;dc=private&#x2c;dc=jp&#x22;\n\nNew password: ← 新しいパスワード\nRe-enter new password: ← 新しいパスワード\nResult: Success (0)\n\npwdExpireWarningのメッセージが出ない。このあたりか。。\nhttp://www.slideshare.net/ldapcon/manage-password-policy-in-openldap\n\n* 有明LDAPサーバ停止手順\n\n/etc/init.d/ldap stop\n/etc/init.d/ldap status\n→「slapd は停止しています」と表示されること。\nchkconfig ldap off\nchkconfig --list ldap\n→全てのランレベルでoffになっていること。\n\n)

#pre{{
* 実施したコマンド
rpm -ivh pam_ldap-185-11.el6.x86_64.rpm nss-pam-ldapd-0.7.5-18.2.el6_4.x86_64.rpm
authconfig --enableldap --enableldapauth --ldapserver=10.159.213.14 --ldapbasedn="dc=esight,dc=ntt-east,dc=co,dc=jp" --enablemkhomedir --update

/etc/openldap/ldap.confの編集
/etc/nslcd.confの編集
/etc/pam_ldap.confの編集

authconfig --enableldaptls --update

/etc/init.d/nslcd restart

/etc/sssd/sssd.conf の [domain/default] セクションの最下行に以下を追加。
ldap_tls_reqcert = never
enumerate = True


* 検証用に特別に
- sen-mnetm01には検証用にldapsearch使いたいので、以下のパッケージも投入。
-- rpm -ivh openldap-clients-2.4.39-8.el6.x86_64.rpm
-- このrpmにはldapxxx系のコマンド群が入っているだけなので、一般のサーバにはインストールしなくてよいと思う。

- ldapserchコマンドで確認
-- ldapsearch -x -w kuraesig -D "cn=Manager,dc=esight,dc=ntt-east,dc=co,dc=jp" -b "dc=esight,dc=ntt-east,dc=co,dc=jp" "uid=hasegawa"


* メモ
- キャプチャする方法(IPも指定)
tcpdump -i eth1 -s 0 -A "host 10.159.215.9 and port ldap or port ldaps"
- LDAP認証でsshログインしてきたユーザの時刻とユーザ名を表示
grep "sshd.*user=" /var/log/secure | awk '{print $3, $NF}'



* 結論としての手順
** LDAPクライアント設定の編集
+ LDAPコンフィグの設定
++ /etc/openldap.confに以下を設定する。
 ★後で書く
+ システム認証設定の変更
++ /etc/nsswitchに以下を設定する。
passwd:     files sss
shadow:     files
group:      files sss

automount:  files sss
++ /etc/sysconfig/authconfigに以下を設定する。
USEMKHOMEDIR=yes     #yesにする

USESSSDAUTH=yes      #yesにする
USESSSD=yes          #yesにする

ちなみにLDAP関連はデフォ(no)のままで問題ない。
USELDAPAUTH=no
USELDAP=no
また、yesでも問題ない。

++ /etc/pam.d/system-auth-acに以下を設定する。
account     [default=bad success=ok user_unknown=ignore] pam_sss.so
#既存のaccount [default〜pam_sss.soの行をコメントアウトして書き換える。
account     [default=bad success=ok user_unknown=ignore service_err=ignore system_err=ignore authinfo_unavail=ignore] pam_ldap.so


++ /etc/pam.d/password-auth-acも上記と同じ。



★ところでsssdはどっからもってきた? sssd-common-1.11.6-30.el6.x86_64.rpmらしいが。


/etc/init.d/sssd restart; /etc/init.d/nslcd restart
}}

* PAM解析ノウハウ [#kb13bf7c]

認証中(前)なら
auth optional pam_echo.so [ファイル名:%s:%u] before_xxx とか
認証後なら、
session optional pam_echo.so [ファイル名:%s:%u] before_xxx とか

ただし、本当の最初の認証が済まないと、画面表示はされない。
その場合は、syslogには出せるかも。
session optional pam_succeed_if.so uid < 30001
session optional pam_succeed_if.so uid < 30002とか入れて行く

#counter


トップ   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS