openldap の続きと vsftpd のポート2010年10月16日 21時55分

今月は会社のネットワーク作業月間である。そういう月間があるわけではなく、事実上そういうことになってしまっている。

ルータの設定と入れ替えは先週で大体終った。
今週は openldap のデータの登録と動作の確認だった。cgi で更新できるようスクリプトを探してきて、動作するらしいことがわかったところでスクリプトをいじり始めたところだ。

気になっていたのは新しいメールサーバでも slapd を動作させ、ldap ではプロバイダと呼ばれるマスタサーバからデータを複製するということを実現することだ。今日はもともと窓掃除をするつもりにしていたが、サーバ関係のことが気になり、急遽家からリモートで会社のサーバにアクセスし、あれこれいじっていた。

同期方法としてはいくつかあるようで、slurpd を利用する方法、syncrepl を利用する方法、syncbackup を利用する方法と大きく 3種類あるらしい。airnux.net にある記事によれば、slurpd はどこかで同期が崩れてしまうとそれ以後同期できなくなるという問題があるらしい。
普段は滅多に更新がないうちの会社の場合、syncbackup が一番よさそうなのだが、とりあえず syncrepl の refreshOnly モードでいくことにした。refreshAndPersist モードというのもあるが、更新頻度が高くないので常時セッションを張るというのもどうかと思うし、プロバイダ側のマシンが再起動したり、何らかの原因でセッションが切れると同期できなくなるという問題もあるから、採用しなかった。

複製サーバのデータ同期は技術評論社のサイト gihyo.jp に掲載されている「そろそろLDAPにしてみないか?」という連載記事の第20回の設定を参考にすることでほぼ動作した。ただし、問題もあった。

プロバイダの設定 (/etc/ldap/slapd.conf: in case of Debian) に
moduleload syncprov
というのがないため、最初はエラーで slapd が起動しなかった。
コンシューマの設定は 10分更新にするくらいで、後はうちの環境に併せた変更を行ったくらいである。ただ、バインドパスワードである credentials の設定を SSHA でしていたらコンシューマ側の slapd がエラーで起動せずに焦った。ログを見ると ldap_sasl_bind_s failed (49) とかいうエラーが出ていて憂鬱になった。見るからに検索してもヒットしそうにない文字列だ。諦めて英語のページにも当ることにした。その中からヒントになる情報があって、パスワードを平文で設定したら同期してくれるようになった。コンシューマ側でコンシューマサーバに問合せてデータが出力されたときは感激だった。
上記の記事のようにコンシューマのマシンを制限するような設定にはしておらず、どこからでも受け付けるような設定にしてある。これは今後コンシューマを固定するようにする計画だ。

ところで vfstpd である。これは ftp のセッションを暗号化してくれる esftp だかというプロトコルでサーバとクライアントが通信できる ftp サーバソフトである。以前から動かしているが、ルータの設定を変更してから FileZilla でアクセスしようとしてみたら、予想通り拒否された。総務の FileZilla の設定を見たらちょっと変ったポートを使用していたので、パケットフィルタの設定を変更したらログインはできるようになったがサーバのディレクトリが表示されない。昨日ちょろちょろルータの設定をいじってみたが様子に変化が見られないので、昨日はそこで諦めた。
今朝、ふとサーバの設定を調べたらどうかと思い至り、ウェブで調べるとパッシブモードで使用するポートを設定するようになっていることがわかった。確かにそんな設定をしたことを思い出した。早速ポートを開けてみた。まだ動作確認はしていないが、こちらはこれで問題がないだろう。

来月からはまた派遣社員として他所に行くことになっているので、できればすべての作業を今月中に終えておきたい。いろいろ気になって夜も眠れない、というようなことはないが、後二週間でしなければならないことはまだまだある。来週は ldap のデータ登録、更新関係がウェブでできるようにするための作業を中心に進め、ウェブサーバの認証を ldap で運用するところまで実現したい。
その次の週でメールサーバを立ち上げるというのが希望のストーリである。メールサーバが日本では超マイナーな Exim に切替できるかどうかというのが今月の最大のテーマである。Exim を選んだ理由は、smtp セッションに柔軟に介入できるので、いろいろスパム対策がしやすいとどこかのページに書いてあったことを信用した。Debian 標準の MTA ということもあるし、あまり誰も手をつけていないということもあるが、それは引いては自分で自分の首を絞めているということでもある。いずれにしても obsolete になってしまった qmail ではスパムの制御はおろか TLS でアクセスするというのもやりづらいため、スパムはうちのサーバでは野放しに近い(僅かな対策はしているが)。社員からも何とかしてくれという要望は多い。

下らない TV を見ているよりは数段面白いが、滅多にいじることのない Linux 上の作業なので何をするにしても最初からというのが時間がかかって仕方がない。もう少し時間に余裕があると嬉しいが、なかなかそうも言っていられないのであった。

perl と悪戦苦闘2010年10月19日 23時25分

いやはや。
いつもながら久しぶりにやると忘れていることだらけである。
今日は半日以上、perl の ldap 操作関数と格闘していた。
まず、perl でちょんぼをやらかしてうまくいかない。
それからスクリプトでディレクトリからユーザ情報を取り出すところまでは割合すんなりいった。ところが今度は更新がうまくいかない。
更新には $ldap->modify() というメソッドを使うが、エラーもなくスクリプトは終了しているのにディレクトリ自体には反映されないという問題が出た。
ウェブをあちこち探すが、perl で ldap をいじろうという人が少ないのか、日本語のページで使えそうなのは殆どない。仕方がないので英語のページをあちこち見て回るが、欲しい情報に行き当らない。
何とかエラーの表示の仕方を真似してエラーを表示させたらパーミッションがないという毎度のお粗末な結末だった。slapd.conf に localhost を追加したり、ユーザによるパスワードの変更を許可したりして漸くディレクトリの更新はできるようになった。

更新できるようになったということは ldap のユーザでウェブサーバの認証ができるかどうか確認しなければならない。
ということで Apache の設定ファイルをいじる。ちょっと迷ったりしたが、こちらは比較的すんなりできるようになった。

次の問題はメールだ。現行のシステムはパスワードを変更するとウェブサーバのパスワードも変更するが、メールサーバにメールも送信する。送信するのは変更通知確認のメールと、それとは別にメールサーバに対してユーザパスワードを変更するコマンドメールも送信している。ldap でユーザ管理をしたいのはウェブサーバとメールサーバで個別にパスワードを管理していて、この不細工な仕様を廃止したいからでもある。

すでに動作しているスクリプトからメール送信部分を取り出して貼り付けて、テストしているのにどういうわけかメールの送信ができない。
あれこれやってみるが解決しない。並行して別の類似のスクリプトから送信されるメールはちゃんとメールサーバに届いているというのに、パスワードの変更スクリプトで送信しようとすると駄目だ。送信したメールは行方不明だ。後で気が付いたが、ウェブサーバの不思議なところにメールを配送していた。
ログを見るとなぜか正常な別のスクリプトとデバッグしているパスワードのスクリプトでログの内容が違う。
あれこれ試行錯誤するが、一向に解決しない。html ファイルのディレクトリのユーザ認証と、cgi ディレクトリのユーザ認証が違っているからこういう問題が起きるのかと疑ってみたりもするが、exim のログを見る限りそうではないようだ。

結局わからないまま帰宅する。帰ってから exim の本を見て exim のログを調べる。違うのはわかるが、原因がわからない。
さらにあれこれする。
たまたまメールに送信する内容をファイルに出力したものをサーバから取り寄せて見ると、改行が余分になっている。これは落し穴だった。
会社では telnet の画面で見ていた。テキストが一行おきに表示されていた。これは unix 系 OS とメールの改行コードが違うからだと思い込んでいた。
改めてテキストファイルに出力してみたものを取り寄せて開いて見るとやはりテキストが一行おきに出力されている。exim の挙動がおかしいのはこれが原因ではないか。バイナリファイルエディタで開いてみると確かに 0x0d 0x0a 0x0a (\r\n\n) になっている。

ん、なぜだ。print 文に細工がしてあるかと思って調べても特に違いはない。

あっ、と思った。なぜかスクリプトの最初の方に次のような行があることに気がついたのだった。

$\ = "\n";

これは改行コードを \n にする代入文だ。確かに正常に動作しているスクリプトを見るとそんなものは入っていない。なぜこんなものか入っていたのか。誰が入れたのだ、と喚きたいところだが、誰もこんなスクリプトをいじる筈はないので、自分が入れたに違いない。しかし、いつの間に。

こうして万年初心者サーバ管理者の一日は終っていくのだった。

5/50 円硬貨嫌い2010年10月21日 15時00分

私は 5/50 円硬貨が嫌いである。これは 5円硬貨と 50円硬貨を意味している。

なぜか。

くだらない話といえばそうかもしれないが、財布に入っている小銭を覗くとき、普通硬貨は平たい面が見えているのではなく、縁が見える。財布の種類によっては硬貨の平たい面が見えるということもあるだろうが、私がこれまで使用してきた財布はすべて縁が見えるようになっていた。
そうした場合、穴のある、ないはわからない。そこで判別に困るのが 5円玉と 50円玉である。 5円玉の方は 10円と微妙に色が違うので判別しやすいようにも思えるが、実際には変色しているものもあるので、わからないこともある。
50円玉にしても実際には 100円玉と大きさが違うが、硬貨の枚数が多いときは判別できない。

というようなわけで財布の中にある硬貨を探すときに判別しづらいという理由からこれらの硬貨が嫌いなのだ。1円、10円、100円、500円だけだと比較的探しやすい。そこでそういう硬貨を受け取ったらなるべく早く使うことにしている。

これらが入っていないときは安心して財布の小銭が捜せるが、これらが入っていると安心できないのであった。

ldap と perl の一週間2010年10月24日 01時35分

とりあえず、何とか今週の目標は達成した。
今週は ldap 上にある社員データの削除、編集あるいはデータを ldap に追加するというスクリプトを作成するという目標を設定していた。

前にも書いたが、馴れないことをするので書く前に悩む、書きながら悩む、「よし、これでできた」と思って動かしてみると画面が真っ白だったり、エラーを吐いて終ったりして書いた後でも悩む。今週はこれの繰返しだった。

ウェブの認証も ldap に入れ替えたし、後は新しいメールサーバの立上が残っている。スパム対策までは手が回らないのは目に見えているので、そこまでは目標にしていない。とにかく新しいメールサーバを ldap で運用し、smtps/pop3s でアクセスできるところまで実現できたら今月の目標は達成される。

そこからでもすることはいろいろある。

・スパム対策
・IMAP の検討
・ウェブメールの導入

exim でメールサーバを運用できればわが家のメールサーバも exim にしようと考えている。夏に二回ほど調子の悪かったことがあるが、どうやら気温が高くて HDD の調子が悪かったようだ。今は平然と動いている。さらに今のうちのメールサーバだと ISP によっては家の外からうちのサーバを経由してメールが送信できないことがある。所謂 OP25B というやつだ。残念ながらうちのサーバは 587 ポートを開いていない。

こちらもやることはいろいろあるのだった。

ldap で samba2010年10月24日 10時40分

とにかく来月からは派遣社員として他所の会社に行くことになっている。そのために今月中という期限が自動的に切られている。

すっかり忘れていたが、linux で samba を動かすという目標もあるのだった。ただし、これは今月の目標には設定していない。
現在動いている NT のドメインサーバが Windows NT である。OS が古いというのもあるし、マシンが古くなっているというのもある。うちの会社の規模で Active Directory だかというドメインを導入するほどのことはないし、OS を更新するために高いライセンス料を払う余裕もない。さらに linux でNT ドメインも管理できるとユーザ管理を纏められるようになるというメリットがある。前にも書いたようにウェブとメールのユーザ管理は別になっているし、それに NT ドメインのユーザ管理もある。

面倒といったところでそんなに多くない社員数なので、個別に管理しても知れていることは間違いない。それがユーザ管理をややこしくしている原因でもある。NT ドメインについては社外からアクセスすることはできないし、私は長期間派遣社員で出ていたので、社内にいる人間で適当にやってきたようだ。そのため無茶苦茶なことになっている。どういう理由か知らないが同じ社員に複数のアカウントが登録されていたりする。
その割に各部署でワークグループを作成し、ドメインに参加していない PC も多い。社内に法律はないからというわけではないが、無法地帯である。

私が何とかしたいのはこのワークグループにログインするというのを禁止することだ。そうすればファイルサーバで部署ごとにデータを管理できるようになる。そういうサーバも一応すでにあるが、なぜか自分の部署でファイルサーバを立てて、そこにデータを抛り込んでいる部署も多い。勝手にやって悪いことは何もないのだが、小さな事務所でファイルサーバをいくつも立てて電気代が無駄ということくらいはあるかもしれない。
ドメインにログインしなければ TCP/IP を含めてネットワークのリソースを一切使えないというようなことができれば一番いいのだが、調べた範囲ではそういうことはできるようには見えない。ルータには MAC アドレスでネットワークに参加させる、させないということは管理できる機能がある。MAC アドレスなので、OS とは無関係に DHCP クライアントとして起動し、リクエストが登録されたマシンからのものであれば IP アドレスを割り振ってしまう。

ドメインに参加しなければプリンタが使えないというような状況にでもなれば参加するユーザも増えるのだろう。
結局のところドメインに参加することによるメリットというのがわからない、あるいは得られないというのがドメインに参加しない一番の原因のような気がする。

去年の今頃、稼動中の NT ドメインを samba に引越させるために悪戦苦闘していた。そのときはドメインコントローラから情報を取り出して ldap に取り込むところまではできた。ところがドメインサーバを停止して samba をドメインコントローラにして起動してもドメインにログオンできなかった。そのときは samba とウェブ、メールのアカウントを同時に統一してから他の作業にかかるつもりだったので、何も着手できないまま終った。

今回は samba 部分は後回しにして linux 関係のアカウントを ldap で管理し(シェルアカウントは数がごく限られているので管理しない)、ウェブとメールを ldap のユーザで利用できるようにするというのを目標に設定した。他にもルータを動かして新しいポリシで運用するというのもあったが。

それにしてもネットワーク関係の作業はいつもこの時季にしているような気がする。

「スパム」という手法2010年10月27日 22時40分

Yahoo! のニュースを見ていたらロシアでスパム業者が摘発されたという記事があった。
一日 500億通というからすさまじい量のスパムだ。

そこが摘発されてスパムが減るのは結構だが、結構でないのは記事を書いた読売新聞だ。記事には以下の文章がある。

「同社は、受信者の同意なしに営利目的メールを大量に送る『スパム』と呼ばれる手法で、バイアグラの模造品などの購入を呼びかけ、地元紙によると米欧などで過去3年半に1億2000万ドル(100億円)強の売り上げをあげた。」

今日、久しぶりに管理者宛メールボックスにアクセスして呆れたばかりである。4000通近いスパムがあった。それの大半がバイアグラ関係だ。そんなにバイアグラばかり売られても体は一つしかないのだった。そういうようなわけでこれでバイアグラのスパムが減るのであればこちらとしては喜ばしい。

スパムは手法なのか。

迷惑メールそのものがスパムなのであって、スパムを送信するのに手法もへったくれもない。スパムという手法で送られたスパムとスパムでない手法で送られたスパムは何が違うのか。
馬鹿も休み休み書いてもらいたい。マスコミの不勉強、アナウンサーの間違った日本語はますます酷くなっているような気がする。

充実の一箇月2010年10月29日 23時55分

充実とはいうが、実を言うと今週は挫折の週であった。
新しいメールサーバとして前に Exim 4 を導入すると書いた。ところが、いろいろ調べようとしても日本語の資料が殆どないので、何をするにしても英文と格闘する必要があった。二日ほど頑張ってみた。
こんな調子では今週中にメールサーバを稼動させるという見通しはかな暗くなってきた。やむなく急遽 Postfix で動かすことにした。

導入は早かった。それは Exim でも同じだが、そこからは日本語の情報が大量にある Postfix は早かった。ただ、ldap だの smtps だのということになると情報がやや減ってくる。以前から参考にしている 「入門 LDAP/OpenLDAP」も役には立つのだが、細かいところで情報が不足していたり、ディストリビューションやらバージョンが違うことが原因なのだろうが、設定が違っていたりしてうまく動かない。
尤も TLS/SSL を動かそうとするとサーバの証明書から秘密鍵が必要になるが、作成した鍵やらなんかがいろいろあって、ファイルの指定を間違えたりして smtps で動作しないというような事態になったりもした。
さらには pop3/imap サーバでもある Dovecot の設定もしなければならない。これがまたどこかで躓いて動かない。

というようなことを昨日までああでもない、こうでもないとやっていた。
週末は用事があるので今日一日しかないという状況で今日の仕事を始める。
昨日までは焦って混乱しながらやっていた。そんなことでは駄目だと思い、落ち着いて調査することにした。問題を一つづつ片付けるようにしたら少しづつ光が見えてきた。smtpd で認証できないのは sasl のサーバがインストールされていないという間抜けな原因もあった。そんなことに触れている資料は手持ちのものにはなかったし、ウェブで調べたものにもなかった。
何とか 25, 465, 587 ポートで Postfix が動作するようになったので、次は Dovecot の設定の見直しに取りかかる。
netstat コマンドでポートをリッスンしているサーバを調べてみると、imap で imapd が待ち受けている。pop3 はDovecot なのでおかしいと思ったら Dovecot ではない imap サーバが動いていた。
見ると Dovecot は pop3 用のモジュールしかインストールされていなかった。imapd を削除し、Dovecot の imap モジュールをインストールし、鍵の設定やら ldap の設定を行う。漸くメールサーバらしい動きをし始めたのは夕方だった。
そこから squirrelmail の設定を行い、メールボックスにアクセスできるところまで確認して本日の仕事は終り。

Exim については口惜しいが、何とか今月の目標が達成できた。十年来の懸案だったサーバの DMZ への配置と、ルーティングポリシの変更ができたのは個人的に嬉しい。これまでに較べて会社のネットワーク環境のセキュリティが格段に向上したのではないかと思う。

久しぶりに充実した一箇月だったが、慌しい一箇月でもあった。会社としてはそれで直接売上があるわけではないので、持ち出しである。そこは辛いところだ。

ただ、まだいくつかやらなければならないことは残っている。
当面しなければならないのはスパム対策と転送処理に関する問題だ。新しいメールサーバのログを見るとすでにこのサーバを利用してリレーを試みている連中がいるらしい。Postfix はすべて拒絶してくれていて頼もしい限りである。というか運用中の qmail ではそれがログから読み取れないのだった。メッセージがそのままログに残るので明らかに無駄にログを消費していて欲しい情報が探せないのだ。そんなことだから一日分のログすら残らない状態である。これでは増大するスパムに対応できない。片手間管理者はあれこれ調査している時間もないし、同じ環境を構築して、あれこれ変更してログの出力を調整する物理的余裕もないのだ(おそらくソースを変更する必要があるだろう)。
さらには samba の導入が待っている。NT サーバからドメインが引き継げないようであれば、最悪は一から samba を立ち上げることも考えなければならないかもしれない。現在稼動中のファイルサーバがそちらでも同様に稼動して各ユーザにディスクスペースを提供してくれるのであればそれでもいいかもしれない。
あと半月ほどあればそれらもできるように思うが、生憎来週からは派遣先で業務を開始する。スパム対策は時間を見つけて進めるつもりにしているが、samba はある程度じっくりやらないと無理のような気がする。

ネットーワーク管理に終りはないのである。