2018年2月22日木曜日

Samba 4のADでOU作成

Samba 4 で Active Directoryドメインを構築した際、samba-toolコマンドなどでOUを作成することができません。

Windows端末が無い場合に、OUの作成をコマンド経由で実施するには、次の方法で行います。

1. 作成するOUのLDIFを準備します。

dn: ou=sample,dc=example,dc=com
changetype: add
objectClass: top
objectClass: organizationalunit

dn: ou=Users,ou=sample,dc=example,dc=com
changetype: add
objectClass: top
objectClass: organizationalUnit

2. ldbmodifyコマンドで準備したOU作成用のLDIFを適用します。

# ldbmodify --url=/opt/osstech/var/lib/samba/private/sam.ldb /root/example_ou.ldif

以上で、OUの作成は完了です。

2015年6月8日月曜日

Azure AD Graph APIのexpire

Azure ADのGraphAPIを利用して、Access Tokenを取得すると、次のようなレスポンスが得られる。


resource: 00000002-xxxx-xxxx-xxxx-000000000000 
access_token: eyJ0eXAi....
expires_in: 3599
token_type: Bearer
not_before: 1433747097
expires_on: 1433750997

各値の意味は下記を参照
https://msdn.microsoft.com/en-us/library/azure/dn645538.aspx

expires_in : トークンの有効期間(秒数) (通常 1時間)
expires_on : トークンの有効時刻 1970-01-01T0:0:0Z UTCからの秒数
not_before : トークンの発行時刻 1970-01-01T0:0:0Z UTCからの秒数



2015年5月25日月曜日

OpenLDAPのパスワードハッシュ化

OpenLDAPでSHA2やPBKDF2方式のパスワードの生成方法のメモ

PBKDF2-SHA1方式
# slappasswd -h '{PBKDF2}' -o module-path=openldapモジュールのパス -o module-load=pw-pbkdf2 -s secret

PBKDF2-SHA256方式
# slappasswd -h '{PBKDF2-SHA256}' -o module-path=openldapモジュールのパス -o module-load=pw-pbkdf2 -s secret

PBKDF2-SHA512方式
# slappasswd -h '{PBKDF2-SHA512}' -o module-path=openldapモジュールのパス -o module-load=pw-pbkdf2 -s secret


SSHA512方式
# slappasswd -h '{SSHA512}' -o module-path=openldapモジュールのパス -o module-load=pw-sha2 -s secret

SSHA256方式
# slappasswd -h '{SSHA256}' -o module-path=openldapモジュールのパス -o module-load=pw-sha2 -s secret

Pythonのpasslibモジュールを使うと、簡単にPBKDF2-SHA512形式のパスワードを生成できる。

Cent6でのpasslibモジュールの利用準備
# yum install python-setuptools
# easy_install pip
# pip install passlib

passlibモジュールによるPBKDF2-SHA512形式パスワード文字列の生成スクリプト。
#!/usr/bin/env python
from passlib.hash import ldap_pbkdf2_sha512
def main():
password="secret"
hash = ldap_pbkdf2_sha512.encrypt(password, rounds=60000, salt_size=4)
print hash
return
main()



2014年9月25日木曜日

OpenLDAPのパスワードハッシュ形式

OpenLDAPにパスワードを格納する際に平文パスワードのままではセキュリティ上の懸念があるため、ハッシュ化した形式でパスワードを格納することが推奨されます。

OpenLDAPのデフォルトのパスワードハッシュ形式は SSHA (ソルト付きSHA1)ですが、SHA1の暗号強度が今日のコンピューターにとって十分とは言えない時代がやってきました。
このような状況に合わせて、MicrosoftやGoogleなどではSHA1の利用の中止が決まっています。

http://www.digicert.ne.jp/howto/basis/transitioning-to-sha-2.html
http://www.itmedia.co.jp/enterprise/articles/1409/08/news043.html


このような状況のため、OpenLDAPのパスワード格納に関してもSHA1の利用を中止し、SHA2へ移行する流れとなってきています。

OpenLDAPでSHA2形式でパスワードを格納する方法は2つあります。

1. pw-sha2オーバーレイによりSHA2形式のパスワード利用します。
  • OpenLDAP 2.4.32以降で実質的なSHA2サポートが始まり、利用が可能となりました。
  • 利用のためには、pw-sha2オーバーレイを有効にする必要があります。
  • {SHA256}、{SSHA256}、{SHA384}、{SSHA384}、{SHA512}、{SSHA512}に対応しています。
  • ハッシュ化パスワードのラウンドは行われません。
2. OSのcrypt(3)機能を利用し、{CRYPT}形式でSHA2ハッシュを利用します。
  • OpenLDAPでは、パスワードの形式として{CRYPT}を指定すると、OSのcrypt(3)機能を利用したハッシュ化が行われます。

    ハッシュできる形式は、OSのcrypt(3)が提供する形式に限られますが、RHEL6などの最近のOSであればSHA2に対応済みです。
  • 利用のためには、password-hashパラメーターと、password-crypt-salt-formatパラメーターの指定が必要です。
    password-hash "{CRYPT}"
    password-crypt-salt-format "$5$%.8s"

    $5$はSHA256形式のハッシュ化を意味し、"%.8s"の部分が8文字のランダムなソルトを付与することを意味します。SHA512を利用したい場合は、$5$の代わりに$6$を指定します。
  • {CRYPT}形式で指定したパスワードは、glibcのcrypt(3)によってSHA256/SHA512のハッシュ化が行われますが、この際、5000回のラウンド処理が行われます。ラウンド回数は salt-formatにroundsパラメーターで指定することが可能で、1000回以上を指定可能です。(1000回以下を指定すると、1000に設定されます)

    8000回のラウンドを指定する場合は、password-crypt-salt-formatに"rounds=8000$"をソルト文字列の前に付与します。
    password-crypt-salt-format "$5$rounds=8000$%.8s"
  • LDIFでパスワードを登録する際にSHA256などで{CRYPT}形式のハッシュ化パスワード文字列を得たいときは、slappasswdコマンドで生成します。
    $ slappasswd -c "$5$rounds=8000$%.8s" -s



2014年9月17日水曜日

OpenLDAP 全角半角問題

OpenLDAPでは、LDAPデータとして、UTF-8の文字列を登録することができる。

このときに、全角Aと半角Aは、同じ文字として扱われる。

たとえば、認証時のユーザー名に全角英数字を使っていても半角英数字と同じユーザー名として扱われるため、認証に成功する。

これは、Unicodeの正規化の処理によって同一文字とみなされるという仕様に従ったもので、設定などで変更することはできない。

OpenLDAPのUnicodeの正規化の処理は、openldap/libraries/liblunicode 配下のコードで行われている。

正規化に用いられるマッピング情報などは、Unicodeコンソーシアムの提供する情報をもとにしており、openldap/libraries/liblunicode/ucdata/uctable.hに定義されており、ビルド時にOpenLDAPに組み込まれている。

2014年8月25日月曜日

Ubuntu + dconf-editorでキーボードショットカット

Ubuntu14.04を入れて、Gnome-Classic環境で利用できるようになったので次はキーボードショットカットの設定。

昔から使い続けていたショートカットを設定したかったので、dconf-editorでショートカットを設定

$ sudo apt-get install dconf-editor
$ dconf-editor

dconf-editorが起動したら、次の場所にショートカットの設定がある。

「org」-「gnome」-「desktop」-「wm」-「keybindings」

設定したいアクションに、キーを割り当てることでショートカットが設定される。

ちなみに私はターミナルを任意のタイミングで縦に最大にしたいので、いつもF3キーをmaximize-verticallyに割り当てている。

2014年8月21日木曜日

VirtualBox + Ubuntu14.04

Windows上でLinuxを利用する際に、VirtualBoxのゲストOSとしてUbuntu14.04をインストールし、シームレスモードで動作させると、WindowsとUbunutの両方の利用に便利になる。

Ubuntu14.04をシームレスモードで利用するには、いくつかポイントがある。

1. Virtual BoxのGuest Additionsをインストールする
デスクトップ画面にログイン後、Virtual Boxのメニューから「デバイス」-「Guest AdditionsのCDイメージを挿入」を選択すると、ウィンドが立ち上がり、Guest Additionsのインストールが行われる。
インストールが完了したら、いったんログアウトし、再ログインしておく。

2. デスクトップをUnityから、Gnome ClassicのMetacityに変更する
Guest Additionsの適用が完了すると、Virtual Boxのシームレスモードを利用可能となるが、Ubuntu14.04のデフォルト状態では、メニューバーやウィンドウが表示されないため、そのままシームレスモードで利用することができない。

そこで、デスクトップをUnityからMetacityに変更する。

$ sudo apt-get install synaptic
$ sudo synaptic

synapticの検索メニューで、gnome-session-flashbackを検索し、
gnome-session-flashbackとgnome-session-fallbackをインストールする。

インストール後、いったんログアウトすると、ログイン画面のユーザー名の横の丸いアイコンで、デスクトップを選択可能となる。
ここで、「GNOME Flashback(Metacity)」を選択することで、Gnome Classicでのログインが可能となる。


デスクトップ画面にログインして、「右CTRL+L」をシームレスモードに切り替わることを確認する。

Metacityでは画面の上下にパネルが設定されるが、このパネルへアプレットを追加するなどの設定変更を行いたい場合は、ALTキーを押しながら、右クリックを押すことでメニューが表示される。