LDAPを利用したFreeBSDでMySQLが起動しない

LDAPを利用したFreeBSDでMySQLが起動しない。


shell> /usr/local/etc/rc.d/mysql-server start
Starting mysql.
UID must be greater than 1000
su: Sorry

エラーメッセージの通り、ldapに登録されているmysqlユーザがuidNumberが88で1000以下になっている。なのでうまくうごかないみたい。


shell> more /usr/local/etc/ldap.conf


pam_min_uid 1000

となっていたので pam_min_uid をコメントアウト。うまくいった。

apache httpdでldapを用いてbasic認証を行うときにユーザとかを制限する

apacheで.htaccessを用いてbasic認証を行うとき、認証可能なユーザを選べるようにしてみた。

AuthzLDAPAuthoritative off
AuthName "ldap ninshou dayoyo"
AuthType Basic
AuthBasicProvider ldap
AuthLDAPURL ldaps://192.168.1.1/ou=People,dc=l2tp,dc=org?uid
Require ldap-user user1 user2
#Require ldap-filter !(cn=except_user)

この設定を行う上で、 ldap-filterを選択した場合、フィルターをクォートしてしまうとうまくうごかなかった。

http://httpd.apache.org/docs/2.2/mod/mod_authnz_ldap.html#requiredirectives

ApacheのBasic認証にLDAPを利用する

apacheのBasic認証にLDAPを利用しようとしてみた。

サーバはOpenLdap24 on FreeBSD, クライアントはApache22 on CentOS6.2。

今回の方法はBasic認証でアクセス制御をしたい箇所に.htaccessを設置してみた。


shell> more .htaccess

AuthzLDAPAuthoritative off
AuthName "ldap ninshou dayoyo"
AuthType Basic
AuthBasicProvider ldap
#LDAPVerifyServerCert off
AuthLDAPURL ldaps://192.168.1.1/ou=People,dc=example,dc=com?uid
Require valid-user

コレだとうまくいかない。500のInernal Server Errorが帰ってしまう。ユーザ名とパスワードの組み合わせがうまくいかないのかと思いきや、他の手段で認証を試すとうまく通ってる。

apacheのerror_logをdebugレベルまで引き上げてログを見てみた。


shell> more httd-vhosts.conf

…前略…

# ldaptest
<VirtualHost *:80>
ServerAdmin hogetan<a href="mailto:[email protected]">@l2tp.org</a>
DocumentRoot /home/hogetan/public_ldap
ServerName ldap.l2tp.org
LogLevel debug
ErrorLog /var/log/httpd/ldap.l2tp.org-error.log
CustomLog /var/log/httpd/ldap.l2tp.org-access.log combined
</VirtualHost>

…後略…

shell> tail /var/log/httpd/ldap.l2tp.org-error.log

[Tue Feb 28 09:43:23 2012] [debug] mod_authnz_ldap.c(393): [client 192.168.1.5] [29473] auth_ldap authenticate: using URL <a href="ldaps://192.168.1.1/ou=People,dc=hoge,dc=info?uid">ldaps://192.168.1.1/ou=People,dc=hoge,dc=info?uid</a>
[Tue Feb 28 09:43:23 2012] [info] [client 192.168.1.5] [29473] auth_ldap authenticate: user yubird authentication failed; URI /favicon.ico [LDAP: ldap_simple_bind_s() failed][Can't contact LDAP server]
[Tue Feb 28 09:43:23 2012] [debug] mod_authnz_ldap.c(1105): [29467] auth_ldap url parse: `ldaps://192.168.1.1/ou=People,dc=l2tp,dc=org?uid', Host: 192.168.1.1, Port: 636, DN: ou=People,dc=l2tp,dc=org, attrib: uid, scope: base, filter: (null), connection mode: using SSL

なんかエラー出てる。Can’t contact LDAP serverとか言われてる。

いろいろ悩んで湯バード先生にヘルプを求めた結果、ldapsのsがいけないんじゃ無いか、ってことに。sslの証明書の検証が悪いのではないか、ということだ。今回のldapサーバはオレオレ証明書を利用しており、今までもldap.confなどでことごとく証明書の認証でコケた経験があった。

試しにldapsじゃない、ldapな待ち受けに接続にいくとすんなりつながった。

で、証明書の検証をしないようにするオプションを探して有効にしてみた。

http://httpd.apache.org/docs/2.2/mod/mod_ldap.html#ldapverifyservercert

このオプションで注意しなくてはいけないのは、.htaccessなどには記述できない、ということ。virtualhostディレクティブとかでもダメ、グローバルディレクティブじゃないとダメっぽい。


shell> grep LDAPVerify httpd.conf

LDAPVerifyServerCert Off

この設定を入れたらldapsでもうまくいった。

とにかくldaps+オレオレ証明書の場合には証明書の検証問題に注意しろ、ってことで。めでたしめでたし。

FreeBSDで不自然にcronメールが届いてた

FreeBSDを使っていたら不自然にcronの実行結果のメールが届いてた。


shell> more 80056.M80664P9205V005BI007FCAB0_0.aaaa.l2tp.org,S=1649:2,S
X-Spam-Checker-Version: SpamAssassin 3.3.0 (2010-01-18) on aaaa.l2tp.org
X-Spam-Level:
X-Spam-Status: No, score=-2.9 required=5.0 tests=ALL_TRUSTED,BAYES_00,
TVD_SPACE_RATIO autolearn=ham version=3.3.0
Received: from bbbb.l2tp.org ([192.168.1.1])
(TLS: TLSv1/SSLv3,256bits,AES256-SHA)
by aaaa.l2tp.org with esmtp; Mon, 27 Feb 2012 03:14:12 +0900
id 00022ABF.4F4A7674.000023EF
Received: from bbbb.l2tp.org (localhost [127.0.0.1])
by host005.l3tp.org (8.14.4/8.14.4) with ESMTP id q1QIAPnh047625
for <[email protected]>; Mon, 27 Feb 2012 03:10:25 +0900 (JST)
(envelope-from <a href="mailto:[email protected]">[email protected]</a>)
Received: (from <a href="mailto:[email protected]">[email protected]</a>)
by bbbb.l2tp.org (8.14.4/8.14.4/Submit) id q2EIA47579;
Mon, 27 Feb 2012 03:10:05 +0900 (JST)
(envelope-from yousan)
Date: Mon, 27 Feb 2012 03:10:05 +0900 (JST)
Message-Id: <[email protected]>
From: <a href="mailto:[email protected]">[email protected]</a> (Cron Daemon)
To: <a href="mailto:[email protected]">[email protected]</a>
Subject: Cron <a href="mailto:[email protected]">[email protected]</a>  /usr/local/sbin/portversion -vL= > /home/yousan/var/portversion.`hostname`
X-Cron-Env: <SHELL=/bin/sh>
X-Cron-Env: <PATH=/etc:/bin:/sbin:/usr/bin:/usr/sbin>
X-Cron-Env: <HOME=/home/hogetan>
X-Cron-Env: <LOGNAME=hogetan>
X-Cron-Env: <USER=hogetan>

[Updating the portsdb <format:bdb_btree> in /var/tmp ... - 23289 port entries found .........1000.........2000.........3000.........4000.........5000.........6000.........7000.........8000.........9000.........10000.........11000.........12000.........13000.........14000.........15000.........16000.........17000.........18000.........19000.........20000.........21000.........22000.........23000.. ..... done]

メールの内容は上記。見たところcronでの実行結果がメールで来ているようだ。でもこのメールはちょっと不審な点が。

というのも宛先のToになっている [email protected]” というアドレスは存在しないアドレスだ。それなのにメールが [email protected] 宛てに届いていた。bbbb.l2tp.org はMXレコードに登録されていない。まずは下記の点いついて調べてみた。

  1. ホスト “bbbb.l2tp.org” でcrontabの環境変数、MAILTOについて
  2. ホスト “bbbb.l2tp.org” で/etc/aliasesでのエイリアス状況
  3. “l2tp.org”ドメインのMXに割り当てられているホストでのaliases

上記について、すべての点において [email protected] [email protected][email protected][email protected]しき設定は無かった。

にもかかわらず [email protected] 宛てにメールが届いてしまう。

試しにテストメールを送ってみた。


bbbb.l2tp.org> sendmail <a href="mailto:[email protected]">[email protected]</a> < mail.txt

当初は単にメールが送れないだけだったんだけど、しばらくして mailer daemon から返答が。よく見るとその戻り先はToが [email protected]” となっていたけれど、このメールも [email protected]” に届いてしまった。なんかおかしい。

.cshrcとか.zshrcとかにMAILTOが設定されてそうな気がして改めてホームディレクトリをgrepを掛けてみた、ら、答えが出た。

.forwardファイルを設定してた。


shell> ls –lat .forward; more .forward

-rw-------  1 hogetan hogetan  16 Jan 26  2008 .forward
\[email protected]

しかも結構古い。コレが原因でした。