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キーを押しながら、右クリックを押すことでメニューが表示される。

2013年5月10日金曜日

Ubuntu 13.04 で VMware workstation 8を動作させる

Ubuntu13.04では、VMware Workstation 8 for Linuxを動作させる場合に、
vmciモジュールがビルドできないため、動作しない。

vmciのパッチがこちらにあるので、この手順に従ってvmciを作り直すことで
動作するようになる。

http://communities.vmware.com/message/2235951#2235951

2013年4月11日木曜日

OpenLDAPのuniqueオーバーレイ

OpenLDAPを利用するときに、LDAPのエントリの重複を禁止したい場合があります。

このような場合に、uniqueオーバーレイを利用することができます。


例えば、uid属性の値の重複を dc=example,dc=com配下で禁止したい場合、slapd.confに次のような設定を行います。
overlay unique
unique_uri ldap:///dc=example,dc=com?uid?sub

重複を禁止する範囲をベースDNとscope(上記の場合 sub)で調整することができます。

また、適用範囲をフィルタで制限することも可能です。

詳細は、slapo-uniqueのmanページを参照してください。

uniqueオーバーレイのman

2012年11月20日火曜日

Solaris10のldapclient設定時の認証失敗

OpenLDAPをLDAPサーバーとして、Solaris10をLDAPクライアントとした場合、sshログインなどを試した場合に、次のメッセージが出力されて認証に失敗する場合がある。

Nov 20 22:12:14 yasuma73 sshd[3958]: [ID 316739 auth.error] pam_ldap: no legal authentication method configured

これは、LDAPサーバーに平文パスワードを登録している場合に出力される警告で、CRYPT形式でパスワードを格納すれば問題なく認証可能となる。

2012年10月19日金曜日

Samba4 RC3をDCとしてセットアップ

環境

CentOS6.3環境にSamba4をAD DCとしてセットアップする手順をまとめる。

SNTP対応xntpdの設定


CentOS6のxntpdは、sntpに対応していないため、CentOS6のxntpdパッケージをもとに、xntpd-4.2.6をsntp対応のxntpdパッケージとして再ビルドする。

パッケージングの手順は省略...

作成したxntpのパッケージをインストールする。
# rpm -Uhv ntp*rpm

/etc/ntp.confに以下を追加

server 127.127.1.1
fudge 127.127.1.1  stratum 12
ntpsigndsocket /var/run/ntp_signd/
restrict default mssntp

ntpdを再起動
# /sbin/service ntpd restart

Bind9.8のインストール

DLZに対応したbind-9.8.3-P2パッケージをインストール
  • bind-9.8.3-P2.el6.x86_64.rpm
  • bind-libs-9.8.3-P2.el6.x86_64.rpm
  • bind-license-9.8.3-P2.el6.noarch.rpm
  • bind-utils-9.8.3-P2.el6.x86_64.rpm

Samba4のセットアップ

samba4パッケージに必要な次のパッケージをインストール

# yum install xinetd  

最初にsamba3パッケージ関連を削除

# rpm -e samba-client samba-common samba-winbind-clients libsmbclient --nodeps

samba4パッケージ一式をインストール。

Samba4のprovisioning


# /usr/bin/samba-tool domain provision
Realm [EXAMPLE.COM]: 
Domain [EXAMPLE]: 
Server Role (dc, member, standalone) [dc]: 
DNS backend (SAMBA_INTERNAL, BIND9_FLATFILE, BIND9_DLZ, NONE) [SAMBA_INTERNAL]: BIND9_DLZ
Administrator password: 
Retype password: 
Looking up IPv4 addresses
More than one IPv4 address found. Using 192.168.2.8
Looking up IPv6 addresses
No IPv6 address will be assigned
Setting up share.ldb
Setting up secrets.ldb
Setting up the registry
Setting up the privileges database
Setting up idmap db
Setting up SAM db
Setting up sam.ldb partitions and settings
Setting up sam.ldb rootDSE
Pre-loading the Samba 4 and AD schema
Adding DomainDN: DC=example,DC=com
Adding configuration container
Setting up sam.ldb schema
Setting up sam.ldb configuration data
Setting up display specifiers
Adding users container
Modifying users container
Adding computers container
Modifying computers container
Setting up sam.ldb data
Setting up well known security principals
Setting up sam.ldb users and groups
Setting up self join
Adding DNS accounts
Creating CN=MicrosoftDNS,CN=System,DC=example,DC=com
Creating DomainDnsZones and ForestDnsZones partitions
Populating DomainDnsZones and ForestDnsZones partitions
See /etc/samba/named.conf for an example configuration include file for BIND
and /etc/samba/named.txt for further documentation required for secure DNS updates
Setting up sam.ldb rootDSE marking as synchronized
Fixing provision GUIDs
A Kerberos configuration suitable for Samba 4 has been generated at /etc/samba/krb5.conf
Once the above files are installed, your Samba4 server will be ready to use
Server Role:           active directory domain controller
Hostname:              samba4
NetBIOS Domain:        EXAMPLE
DNS Domain:            example.com
DOMAIN SID:            S-1-5-21-858491299-1320590862-3958657269
A phpLDAPadmin configuration file suitable for administering the Samba 4 LDAP server has been created in /etc/samba/phpldapadmin-config.php.

Bindの設定

/etc/samba/named.txtに記載されている設定などをDNSに行う。

DLZ機能を利用可能とするための設定を /etc/named.confに追加する。
include "/etc/samba/named.conf";

Bind9.8.3を利用しているので、 /etc/named.confのoptionsセクションに、以下の設定を追加。

tkey-gssapi-keytab "/etc/samba/dns.keytab";

namedがファイルを読み込めるように、次のコマンドを実行

# chgrp named /etc/samba/dns.keytab
# chmod g+r /etc/samba/dns.keytab


namedが127.0.0.1以外のインターフェースもLISTENする用に、次の設定を /etc/named.confから削除
listen-on port 53 { 127.0.0.1; };
listen-on-v6 port 53 { ::1; };

namedを再起動
# /sbin/service named start

/var/log/messagesに次のように、DLZドライバの読み込みが行われている。

Oct 19 21:03:09 samba4 named[27126]: Loading 'AD DNS Zone' using driver dlopen
Oct 19 21:03:10 samba4 named[27126]: samba_dlz: started for DN DC=example,DC=com
Oct 19 21:03:10 samba4 named[27126]: samba_dlz: starting configure
Oct 19 21:03:10 samba4 named[27126]: samba_dlz: configured writeable zone 'example.com'
Oct 19 21:03:10 samba4 named[27126]: samba_dlz: configured writeable zone '_msdcs.example.com'

samba4を起動

sambaサービスを起動する。

# /sbin/service samba start

確認のため、別サーバーからアクセスしてみる。

$ smbclient -L samba4
Enter yasuma's password: 
Anonymous login successful
Domain=[EXAMPLE] OS=[Unix] Server=[Samba 4.0.0rc3]

Sharename       Type      Comment
---------       ----      -------
netlogon        Disk      
sysvol          Disk      
IPC$            IPC       IPC Service (Samba 4.0.0rc3)
Anonymous login successful
Domain=[EXAMPLE] OS=[Unix] Server=[Samba 4.0.0rc3]

Server               Comment
---------            -------

Workgroup            Master
---------            -------

DNSの確認のため、SRVレコードを確認してみる。

# dig @127.0.0.1 _ldap._tcp.example.com SRV

/etc/resolv.confを次の設定に変更する。

domain example.com
nameserver 192.168.2.8 (DCのIPアドレス)

Kerberosの設定

provisioning時に作成された/etc/samba/krb5.confをOSの/etc/krb5.confにコピーする。

# cp /etc/samba/krb5.conf /etc/krb5.conf

Kerberosの設定が正しいか次のコマンドで確認する。
  • レルム(EXAMPLE.COM)の部分は、大文字
  • パスワードはsamba4のprovisioning時に設定したものを入力する。

# kinit administrator@EXAMPLE.COM
Password for administrator@EXAMPLE.COM: 
Warning: Your password will expire in 41 days on Fri Nov 30 20:52:00 2012

正常にチケットが取得できていれば、次のklistコマンドでチケットが表示される。
# klist
Ticket cache: FILE:/tmp/krb5cc_0
Default principal: administrator@EXAMPLE.COM

Valid starting     Expires            Service principal
10/19/12 21:17:22  10/20/12 07:17:22  krbtgt/EXAMPLE.COM@EXAMPLE.COM
renew until 10/20/12 21:17:18

DNSの動的更新の確認

DNSのTSIG/GSSを利用した動的更新が動作することを確認するため、次のコマンドを実行して、正常にDNSの更新が行われることを確認する。

# /usr/sbin/samba_dnsupdate --verbose --all-names 
IPs: ['fe80::a00:27ff:fe8d:c1f0%eth1', 'fe80::a00:27ff:fea2:fee8%eth0', '192.168.2.8', '10.0.2.15']
Calling nsupdate for A example.com 192.168.2.8
Outgoing update query:

以上で、Samba4が正常にドメインコントローラーとしてセットアップ完了しているはず。

Samba4に必要なパッケージ

Bind 9.8以降(DLZ対応)

http://wiki.samba.org/index.php/Samba4/HOWTO#Step_7:_Configure_DNS

SNTP対応xntpd

MS-SNTP対応が必要とのこと。
http://www.whitemiceconsulting.com/2010/12/configuration-of-ntp-for-samba4.html

パッケージを用意する方法はこちら。
http://wiki.samba.org/index.php/Samba4/HOWTO#Step_10:_Configure_NTP_.28Optional.29


2012年5月11日金曜日

RHEL6のsudoのLDAP対応

RHEL6になって、LDAPクライアントの設定がnslcd.confなどに変更になった影響を受けて
sudoのLDAP連携が動作しなくなっていた。

この問題がRHEL6.3に含まれる sudo-1.7.4p5-8 で解決されていることを確認した。

RHEL6.3からのsudoでは、/etc/sudo-ldap.confにLDAP連携の設定を記載することで、
LDAPからsudo用エントリを参照することが可能になった。

/etc/sudo-ldap.conf
uri ldap://ldap1.example.com
sudoers_base ou=SUDOers,dc=example,dc=com

2012年3月14日水曜日

LightWorksインストール

オープンソースで公開される予定と噂の動画編集ソフトのLightWorksを使ってみたいと思って、
インストールなどの手順を調査中。

現在はベータ版ということで、ユーザー登録をすればこちらからダウンロード可能。
http://www.lightworksbeta.com/

ただし、標準ではコーデックがほとんど入っていないので、インストール前に次の2つをあらかじめインストールしておく必要あり。

-Matrox VFW codecs
- QuickTime
http://www.apple.com/quicktime/download/

オープンソース化されるにあたり、商用コーデックが含まれなくなるので、コンバーターツールもインストールしておくことがお勧めの様子。
http://lightworks.wikidot.com/formats

とりあえず、こちらのサイトで紹介されているMediaCoder2011をインストールしてみた。
インストール時にレジストリスキャンソフトのインストールも促されるが、不要なので、インストールしませんを選択しておいた。



2012年3月12日月曜日

python-ldapでmodifyTimeStampをsearch

通常のsearchでは取得できないmodifyTimeStampなどの属性を取得したいときは、attrslistに'+'を追加

rt = conn.search_s(base, ldap.SCOPE_SUBTREE, filter, ['*','+'])

2012年3月2日金曜日

OpenLDAPのschemaファイル

OpenLDAP用のschemaファイルを作成したところ、slaptestコマンドで確認すると次のエラーが表示された。
line 19: old format not supported

attributetype(1.3.6.1.4.1.xxx.xxx.xxx
              NAME 'example'

正解はこちら。 attributetypeの直後に空白が無いと上記のエラーになる。

attributetype (1.3.6.1.4.1.xxx.xxx.xxx
              NAME 'example'

2012年2月26日日曜日

winexeの返値

winexeを使って、Windows上のコマンドを実行する場合、CMD /Cを使うと、Windows上で実行したスクリプトの返値を受け取ることができる。

$ winexe -U DOMAIN\Administrator --system //192.168.0.1 CMD /C C:\script\test1

test1.batの内容が次のようなものであればexitに指定した返値をwinexeのコマンドの返値として受け取ることができる。
echo test1
exit 3
この場合、コマンドが正常終了するとwinexeの返値は3。




2012年2月23日木曜日

Google Appsの更新

1年に1回、Google Appsのライセンス料の支払いがやってきて、アカウント数に応じて料金が決まる。

しかし、アカウント数を減らしたいときは注意が必要。

デフォルトの設定だと、「すべてのライセンスを更新」になっていて、現在支払い済みのアカウント数で自動更新されてしまう。

ユーザーを削除して、減らしたアカウント数で更新したい場合は、
「ドメインの設定」の「支払い情報」で、「すべてのユーザーを自動更新する」に
切り替えておかないと、契約済みのアカウント数のまま自動更新されるので注意。

2012年2月22日水曜日

winexeで外部サーバーの共有にアクセス

Linuxなどでwinexeコマンドを使うと、Windowsサーバー上でコマンドを実行することができます。

$ winexe -U 'DOMAIN\Administrator%password' //servername

このとき、Windowsサーバー側で別サーバーのNASなどの共有をX:などにマッピングしていても、そのままではwinexe経由ではX:ドライブは見えません。

winexe経由で外部サーバーの共有を使いたい場合、winexeのコマンドの中でnet useを使って共有をドライブに割り当てる必要があります。

例えば、ファイルサーバー 192.168.0.100の共有 shareを利用したい場合、次のようなファイル(share.bat)を用意します。
net use X: \\192.168.0.100\share
X:
dir X:
exit
このコマンドをwinexe経由で実行したい場合、次のようにコマンドを実行します。

$ cat share.bat | winexe -U 'DOMAIN\Administrator%password' --runas='DOMAIN\Administrator%password' //servername cmd

このようにして、winexeを使って、Windows上で外部ファイルサーバーなどの共有にアクセスするコマンドを実行することが可能です。

2010年11月10日水曜日

Ubuntu 10.10 + mozc

Ubuntu 10.10では日本語入力はiBus経由なので、デフォルトではiBus + Anthyという
組み合わせになっています。

ちょっと使ってみたところ、いまいち安定してないなぁという印象だったので、
mozc(Google 日本語入力のOSS版)をいれてみることにしました。

パッケージはUbuntu標準で用意されているので、簡単にインストールできますが、
ひとつだけ罠がありました。

このリリースノートの一番最後に書いてありますが、mozcにすると、1つのCPUを
100%消費するというバグがあります。
http://www.ubuntulinux.jp/News/ubuntu1010-desktop-ja-remix

 私のマシンでも再現しましたが、幸いにもCore 2 Duoだったので、もうひとつのCPUで
作業することができましたが、シングルコアのマシンだと大変だったかもしれません。

対策は、上記にも記載されていますが、パッチを当てると良いようです。
/usr/share/ibus/ui/gtk/panel.pyの66行目と67行目を直接修正しておけば
とりあえずは大丈夫でした。

参考までに。