2003年12月07日

ProFTPd+MySQL+MD5password

とりあえず、実装してみて動いたので作業ログを。
ちなみに、使ったProFTPdのバージョンは1.2.9です。
まず、mod_sqlとmod_sql_mysqlを含めてコンパイルが必要ですがそれについてはこっちを参照してください。

で、次にMySQLにDBなどを登録しますがMySQL自体についてはわかっているものとして簡単に
まず、ProFTPd用のDBを作成します。
次にDBアクセス用にユーザを作成して先ほど作成したProFTPd用のDBの参照権限のみ与えます。
(面倒なんでここら辺はかねやんMySQLで、さっくり作りましたんでログなしで(笑))

で、次にProFTPdの認証用のテーブルを作成します。

CREATE TABLE groups (
groupname VARCHAR(30) NOT NULL ,
gid SMALLINT(5) UNSIGNED NOT NULL DEFAULT 1000,
members varchar(255) default NULL,
PRIMARY KEY ( groupname ),
UNIQUE KEY gid (gid)
);

CREATE TABLE users (
userid varchar(30) NOT NULL,
password varchar(30) NOT NULL,
uid SMALLINT(5) UNSIGNED NOT NULL DEFAULT 1000,
gid SMALLINT(5) UNSIGNED NOT NULL DEFAULT 1000,
homedir varchar(255) default NULL,
shell varchar(255) default '/bin/true',
PRIMARY KEY (userid),
UNIQUE KEY uid (uid)
);

で、さっくりテーブルを作ったら、適当にグループを登録して、それから適当にユーザを追加します。
INSERT INTO groups VALUES ('グループ名',GID,'');
INSERT INTO users VALUES ('ユーザ名','パスワード',UID,GID,'HomeDir','/bin/true');
ここではいくつか注意点があり、まずUID、GIDは可能な限り1000よりも大きな数にしてください。
(999以下のIDはデフォルトでは使用できないようになっています。
どうしても使いたい場合はproftpd.confで「SQLMinUserUID・SQLMinUserGID」で新たな最小値を指定してください)

次にパスワードですが、MD5パスワードを使う場合は、先にパスワードのハッシュを生成しなければなりません。

作り方は以下の通り

/bin/echo "{md5}"`/bin/echo -n "password" | openssl dgst -binary -md5 | openssl enc -base64`
要するに「{md5}BSE64でエンコードしたMD5ハッシュ」というのがパスワード文字列になります。
(ページによってはBASE64でエンコードしないパスワードを使っているページもありますが、少なくても今はそれでは動きません)
参考URL←このページの一番下

そこまで終わったら今度は/etc/proftpd.confの設定です。
設定する項目は次の通り

SQLConnectInfo DB名称@localhost:3306 DBユーザ名 DBユーザパスワード
SQLAuthTypes OpenSSL
SQLUserInfo users userid password uid gid homedir shell
SQLGroupInfo groups groupname gid members
SQLAuthenticate users* groups*
AuthOrder mod_sql.c
なお、この設定にするとSQL以外での認証は効かなくなるため、/etc/passwdやPAMも使いたい人はAuthOrderをはずしてください。
(あと、SQLAuthenticate onでも動くはずなんですが、どうもうまく行かなかったので上記の設定と成りました)

コレで、先ほど作ったユーザでログインできれば作業完了となります。

にしても、ここら辺の設定結構ころころ変わってきたようで、見るページごとに違うことが書いてあって・・・(;´д`)ノ

Posted by Takuchan at 2003年12月07日 00:24 | トラックバック(0)