2010年7月14日水曜日

[C2U] 番外編:初回ログイン時にホームディレクトリを作成する

OSのユーザとして使えるようになったのは良いけれど、ホームディレクトリが無いのでいろいろ困る。かといって個別に作ってると発狂しそうになるので、何とかしてみる。

結論:初回ログイン時に無ければ作る

$ sudo vi /etc/pam.d/common-session
session required pam_unix.so
session required pam_mkhomedir.so skel=/etc/skel/
session optional pam_ldap.so
session optional pam_foreground.so

$ sudo vi /etc/pam.d/common-session
session required pam_mkhomedir.so skel=/etc/skel/ umask=0022
これだけで大丈夫でした

LDAP関係無いですね :P
あと、作成されるひな形は
/etc/skel/
となってます。

2010年7月4日日曜日

[C2U] LDAPサーバの構築(OSのユーザ認証へ統合する)

SSLで動かなかったので Ubuntu 8.10 LDAP Server with TLS を参照。

OSのユーザ認証へ統合する
※ xxx.xxx.xxx.xxx はIP or ホスト名 ※
$ sudo mkdir /etc/ldap/ssl
$ sudo cd /etc/ldap/ssl
$ sudo openssl req -new -nodes -out req.pem -keyout key.pem
$ sudo openssl rsa -in key.pem -out new.key.pem
$ sudo openssl x509 -in req.pem -out ca-cert -req -signkey new.key.pem -days 9999
$ sudo mv new.key.pem server.pem
$ sudo su
# ca-cert >> server.pem
# exit

$ sudo ldapmodify -Y EXTERNAL -H ldapi:///
dn: cn=config
add: olcTLSCACertificateFile
olcTLSCACertificateFile: /etc/ldap/ssl/server.pem
-
add: olcTLSCertificateFile
olcTLSCertificateFile: /etc/ldap/ssl/server.pem
-
add: olcTLSCertificateKeyFile
olcTLSCertificateKeyFile: /etc/ldap/ssl/server.pem
※入力後 Ctrl+D にて抜ける。

$ sudo /etc/init.d/slapd restart


OSのユーザ認証に利用する
※ 別のマシンからこのサーバのLDAPを利用する場合もこの流れでOK ※
※ IPADDRESS = サーバIP or ホスト名 ※
$ sudo apt-get install libnss-ldap
LDAP server Uniform Resource Identifier: ldap://IPADDRESS/
Distinguished name of the search base: dc=example,dc=com
LDAP version to use: 3
Make local root Database admin: No
Does the LDAP database require login? : No

SSLの場合はこんな感じ
uri ldaps://IPADDRESS/
port 636
ssl start_tls
ssl on
tls_checkpeer no
tls_cacertfile /etc/ldap/ssl/server.pem

続いて認証メカニズムの更新
$ sudo auth-client-config -t nss -p lac_ldap
$ sudo pam-auth-update
$ sudo apt-get install ldapscripts

[C2U] LDAPサーバの構築(ユーザ登録)

出来上がった入れ物にユーザを追加するテスト。
今回のターゲットはジョーンさん。

ユーザ登録
$ vi user.ldif
dn: uid=john,ou=people,dc=example,dc=com
objectClass: inetOrgPerson
objectClass: posixAccount
objectClass: shadowAccount
uid: john
sn: Doe
givenName: John
cn: John Doe
displayName: John Doe
uidNumber: 10001
gidNumber: 10001
userPassword: password
gecos: John Doe
loginShell: /bin/bash
homeDirectory: /home/john
shadowExpire: -1
shadowFlag: 0
shadowWarning: 7
shadowMin: 8
shadowMax: 999999
shadowLastChange: 10877
mail: john.doe@example.com
postalCode: 31000
l: Toulouse
o: Example
title: System Administrator
postalAddress:
initials: JD

dn: cn=example,ou=groups,dc=example,dc=com
objectClass: posixGroup
cn: example
gidNumber: 10001

$ sudo ldapadd -x -D cn=admin,dc=example,dc=com -W -f user.ldif

[C2U] LDAPサーバの構築(初期設定)

基本はここのまま
OpenLDAP Server

いつぞやのバージョンからインストールしただけだとスッカラカンな状態で動くので、面倒でも一つずつ設定を登録してやらなければならんのです。
※ドメイン名は必要に応じて置き換え※

インストール&おまけ
$ sudo apt-get install slapd ldap-utils
$ sudo apt-get install ssl-cert
$ sudo ufw allow ldap
$ sudo ufw allow ldaps

初期設定
$ sudo ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/ldap/schema/cosine.ldif
$ sudo ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/ldap/schema/nis.ldif
$ sudo ldapadd -Y EXTERNAL -H ldapi:/// -f /etc/ldap/schema/inetorgperson.ldif

初期設定2
$ sudo vi backend.example.com.ldif
# Load dynamic backend modules
dn: cn=module,cn=config
objectClass: olcModuleList
cn: module
olcModulepath: /usr/lib/ldap
olcModuleload: back_hdb

# Database settings
dn: olcDatabase=hdb,cn=config
objectClass: olcDatabaseConfig
objectClass: olcHdbConfig
olcDatabase: {1}hdb
olcSuffix: dc=example,dc=com
olcDbDirectory: /var/lib/ldap
olcRootDN: cn=admin,dc=example,dc=com
olcRootPW: secret
olcDbConfig: set_cachesize 0 2097152 0
olcDbConfig: set_lk_max_objects 1500
olcDbConfig: set_lk_max_locks 1500
olcDbConfig: set_lk_max_lockers 1500
olcDbIndex: objectClass eq
olcLastMod: TRUE
olcDbCheckpoint: 512 30
olcAccess: to attrs=userPassword by dn="cn=admin,dc=example,dc=com" write by anonymous auth by self write by * none
olcAccess: to attrs=shadowLastChange by self write by * read
olcAccess: to dn.base="" by * read
olcAccess: to * by dn="cn=admin,dc=example,dc=com" write by * read

$ sudo ldapadd -Y EXTERNAL -H ldapi:/// -f backend.example.com.ldif


初期設定3
$ sudo vi frontend.example.com.ldif
# Create top-level object in domain
dn: dc=example,dc=com
objectClass: top
objectClass: dcObject
objectclass: organization
o: Example Organization
#dc: Example
description: LDAP Example

# Admin user.
dn: cn=admin,dc=example,dc=com
objectClass: simpleSecurityObject
objectClass: organizationalRole
cn: admin
description: LDAP administrator
userPassword: secret

dn: ou=people,dc=example,dc=com
objectClass: organizationalUnit
ou: people

dn: ou=groups,dc=example,dc=com
objectClass: organizationalUnit
ou: groups

$ sudo ldapadd -x -D cn=admin,dc=example,dc=com -W -f frontend.example.com.ldif

動作確認
$ ldapsearch -xLLL -b "dc=example,dc=com"
登録した情報がズラズラ出てくれば成功

2010年7月3日土曜日

[C2U] Ubuntu Server 10.04 の導入

Ubuntu Server 10.04 をDLしてきてインストール。本当にそれだけ
tasksel ではOpenSSH Server だけ選ぶ。

IPアドレスの固定
サーバ用パッケージの割にIPがDHCPなので、まず変更
$ sudo vi /etc/network/interfaces
iface eth0 inet static
    address xxx.xxx.xxx.xxx
    network xxx.xxx.xxx.xxx
    netmask xxx.xxx.xxx.xxx
    broadcast xxx.xxx.xxx.xxx
    gateway xxx.xxx.xxx.xxx
    dns-servers xxx.xxx.xxx.xxx

dns-servers を記述しておくと、ネットワークを再起動した時に、 /etc/resolv.confを書き換えてくれるらしい。


後は開発ツールを入れたり VMware Tools を入れたりが第一段階

F/Wの設定
第二段階としてF/Wを設定。まぁ実験だから無くても良いとは思うんだけどね・・・。
$ sudo ufw enable
$ sudo ufw default DENY
$ sudo ufw allow OpenSSH

ここまで来たら、一度シャットダウンしてスナップショットを保存。
今後はこれをテンプレっぽく使う。

色々備忘録

CentOSが5.5にアップグレードされて以降、妙に調子が悪いのでリプレイスするための実験を開始。
それ以外にも、色々あったので色々と試す予定、やりたい事はだいたいこんな感じ

  1. CentOS -> Ubuntu Server
  2. OpenLDAPによるユーザ管理の統合
  3. 外部LDAPサーバを使ったユーザ認証


いきなり実機とか無茶なのでVMware Workstation上にチームを作って実践。