Samba で複雑なパスワードを強制させる方法のソースを表示
提供:Samba-JP
←
Samba で複雑なパスワードを強制させる方法
ナビゲーションに移動
検索に移動
あなたには「このページの編集」を行う権限がありません。理由は以下の通りです:
この操作は、以下のグループに属する利用者のみが実行できます:
登録利用者
。
ページ
名前空間にあるページを編集する権限がありません。
このページのソースの閲覧やコピーができます。
Samba 3.0.8 以降では、 check password script パラメータと、Sambaのソースアーカイブに同梱されているcrackcheckというプログラムを用いることで、Windows のグループポリシーやローカルポリシーなどで「パスワードは要求する複雑さを満たす」というポリシーと同様の機能を実現することが可能です。 Windows でこのポリシーを有効にすると、パスワードに大文字、小文字、数字、記号のうち、最低3種類を含むことが求められる他、いくつかの制限事項が発生します。詳細は「[http://support.microsoft.com/default.aspx?scid=kb;ja;821425 複雑なパスワードを要求するメッセージで、パスワードに対する文字グループの要件が明示されない]」などを参照してください。 == check password scriptパラメータの設定 == check password scriptパラメータには、パスワードの強度をチェックするプログラムやスクリプトのフルパスを指定します。 指定されたプログラムはチェック対象のパスワードを標準入力から受けとり、パスワードが適切な場合は0を、不適切な場合は0以外を返却する必要があります。以下、パスワードの文字列が7文字以上なら0を、それ未満なら1を返却する以下のような簡単なスクリプト例に説明を行います。 <pre> #!/bin/sh # 最小パスワード長を7バイトに設定 MIN_PASSLENGTH=7 # 最大128バイトまでの長さでパスワードを読み込む read -n 128 -s new_pass # パスワード(改行文字を含むため、受けとった文字列の長さは実際のパスワード長より1バイト長い)が最小パスワード長以上なら0を、それ以外なら1を返却 if [ `echo $new_pass | wc -m` -gt ${MIN_PASSLENGTH} ] ; then exit 0 else exit 1 fi </pre> ※このスクリプトはパラメータの説明のためのスクリプト例で、実用的なものではありません。 説明の便宜上、このスクリプトを「/usr/local/sbin/smb-passchk」というフルパスで保存したものとします。スクリプトを作成したら以下のようにして動作を確認しておきましょう。 <pre> # echo dameda | /usr/local/samba/sbin/crackcheck ; echo $? 1 # echo damedam | /usr/local/samba/sbin/crackcheck ; echo $? 0 ※6バイトの文字列「dameda」の時に1、7バイトの「damedam」の時には0が返却されることを確認しています。なお、上記は、シェルがbashなどsh系の場合の実行例になります。tcshなどcsh系の場合は「echo $?」の代わりに「echo $status」を用いて確認を行ないます。 </pre> 動作確認ができたら、smb.confに以下のような設定を行なうことで、パスワードのチェックが有効になります。 <pre> [global] ... check password script = /usr/local/sbin/smb-passchk </pre> この設定後、制限に違反するパスワードを設定しようとすると以下のようなエラーが出力されます。 <pre> $ smbpasswd Old SMB password: New SMB password: Retype new SMB password: machine 127.0.0.1 rejected the (anonymous) password change: Error was : Password restriction. Failed to change password for monyo ※「Password restriction(パスワードの制限)」により変更に失敗したことが確認できます。 </pre> この時smbdのログファイルには、以下のようなメッセージが各々ログレベル5と1で出力されます。 <pre> [..., 5] smbd/chgpasswd.c:change_oem_password(1053) change_oem_password: check password script (/usr/local/samba/bin/smb-passchk) returned [1] [..., 1] smbd/chgpasswd.c:change_oem_password(1056) change_oem_password: check password script said new password is not good enough! </pre> == Samba付属のcrackcheckをインストールする == 上記ではパラメータの説明のために簡単なスクリプトを紹介しましたが、実運用に耐える機能を持ったプログラムを作るのはそれなりに大変です。実はSambaにはcrackcheckというプログラムが同梱されていますので、まずはこのプログラムを使ってみることをお勧めします。 このプログラムは Samba のソースアーカイブの examples/auth/crackcheck にソースファイルの形で存在しています。使うには、コンパイルが必要ですが、特に難しいことはありません。gccを始めとする開発環境がインストールされており、cracklibのパッケージがインストールされていれば、以下のようにSambaのソースアーカイブを展開後、crackcheckディレクトリでmakeと入力するだけで、crackcheckプログラムがコンパイルされます。確認した限り、Fedora Core 5ではcracklibパッケージ、Debian GNU/Linux 3.1(sarge)ではcracklib2-devパッケージが必要です。 <pre> # tar xzf samba-3.0.XX.tar.gz ← ソースアーカイブの展開。「XX」の部分は、自分が取得したバージョンのSambaのソースアーカイブのバージョン番号 # cd samba-3.0.XX/example/auth/crackcheck # ls crackcheck.c Makefile ← crachcheckは存在していない # make gcc -O2 -c -o crackcheck.o crackcheck.c crackcheck.c: In functionn': crackcheck.c:132: warning: assignment discards qualifiers from pointer target type gcc -O2 -lcrack -o crackcheck crackcheck.o # ls crackcheck crackcheck.c crackcheck.o Makefile ← crackcheckが生成されている。 </pre> このcrachcheckを/usr/sbinなどの適切なディレクトリにコピーすることでインストールは完了ですが、実際にcrackcheckを使うには、オプションの設定が必要です。以下のように単に実行するとオプションの一覧が表示されます。 <pre> # /usr/sbin/crackcheck ERR - Missing cracklib dictionary Usage: crackcheck [-c] [-s] [-d <dictionary>] -c enables NT like complexity checks -d <dictionary file> for cracklib -s simple check use NT like checks ONLY The password is read via stdin. </pre> -dはcracklibが単純なパスワードかどうかを判定する辞書ファイルのフルパス名を指定します。フルパス名はディストリビューションにより異なりますが、Fedora Core 5では/usr/share/cracklib/pw_dictを指定します。Debian GNU/Linux 3.1(sarge)では /var/cache/cracklib/cracklib_dict を指定しますが、あらかじめ/usr/sbin/crack_mkdictコマンドにより辞書ファイルを作成しておく必要がありますので注意してください。 -cと-sオプションにより、実際に行なわれるチェックの内容が以下のように制御されます。「Windows相当のチェック」とは、大文字、小文字、数字、記号のうち3種類以上が含まれていることのチェックです。「cracklibチェック」とは、cracklibに内蔵された機能や-dオプションで指定された辞書を用いたチェックになります。辞書ファイルが使えない場合は、-sオプションによるWindows相当のチェックのみが可能です。 <pre> 表xx11: crackcheckが行なうチェックの種類 オプション, Windows相当のチェック, cracklibチェック (なし), ×, ○ -c, ○, ○ -c -s / -s, ○, × </pre> 必要とする機能に応じたオプションを付加した形でsmb.confに設定を行なってください。Fedora Core 5の場合の設定例を以下に示します。 <pre> [global] ... check password script = /usr/sbin/crackcheck -c -d /usr/share/cracklib/pw_dict </pre> なお、どのようなパスワードが禁止されるかは、あらかじめ以下のようにして確認しておくとよいでしょう。 <pre> $ echo PaSsW0rd | /usr/sbin/crackcheck -c -d /usr/share/cracklib/pw_dict; echo $? ERR - it is based on a dictionary word 253 $ echo "DameDame-1" | /usr/sbin/crackcheck -c -d /usr/share/cracklib/pw_dict; echo $? 0 </pre>
Samba で複雑なパスワードを強制させる方法
に戻る。
案内メニュー
ページ操作
ページ
議論
閲覧
ソースを閲覧
履歴
ページ操作
ページ
議論
その他
ツール
個人用ツール
ログイン
案内
メインページ
Sambaとは
メーリングリスト
Samba技術情報
マニュアル(4.20.4対応)
マニュアル(旧ver)
マニュアル(3.6.22対応)
公式のSamba3-HOWTO(β版:4.6.6対応)
公式のSamba3-HOWTO(β版:3.6まで)
Samba3開発者ガイド(β版)
プロジェクト
イベント
リンク
有料サポート等
ユーザー会
本家
お問い合わせ
ご支援&ご協力
最近の更新
ヘルプ
検索
ツール
リンク元
関連ページの更新状況
特別ページ
ページ情報