proftpd のセットアップ(tar ball 使用)
CentOS 5.x 系のの yum で突っ込む proftpd だと,起動に失敗することが多い. FTP は使えないと何かと不自由なので, tarball からインストールする.
(昔の記載情報を保存用に移設) CentOS 5.5 の RPM package で FTP server 構築しようとしたところ, daemon は起動するがユーザ認証できず. 自分にはパッケージ不具合の原因特定・解明するほどの技術・知識がないので, tarball からの手動コンパイルにて作成.
インストール手順
用意するもの
- proftpd のソース
前提条件
使用バージョン: proftpd-1.3.3e.tar.bz2 (http://www.proftpd.org/)
- 以下は CentOS 5.5 で実施 (2012-08-21)
- 事前にインストールすべきものは特に無し(だと思う)
- 必要なモジュールは... よくわからんので,ほとんど付けない
- proftpd.conf は /etc/ 以下, proftpd の実体(実行ファイル)は /usr/local/sbin/ 以下,に置く
- 外部公開向けサーバとして使用するので, xinetd 経由でなく,standalone で
- anonymous FTP サービスを設定.ただし,一部ディレクトリは,ドメイン単位の接続制限を設定する
手順
- configure & make の実行
(もし RPM パッケージが残っているなら,事前に削除) # rpm -e proftpd-1.3.3d-1.el5 $ tar xjf proftpd-1.3.3e.tar.bz2 $ cd proftpd-1.3.3e $ ./configure --sysconfdir=/etc --localstatedir=/var --with-modules=mod_readme -- 参考proftpd-1.3.3d のコンパイルメモを移植.現在は有効でないオプションがあるかもしれない. -- # ./configure --sysconfdir=/etc \ --localstatedir=/var/run --enable-ipv6 \ --enable-ctrls --enable-facl \ --enable-dso --enable-autoshadow \ --enable-nls --enable-openssl \ --with-modules=mod_wrap:mod_ratio:mod_readme:mod_auth_pam:mod_tls \ --with-shared=mod_quotatab:mod_quotatab_file:mod_quotatab_ldap:\ mod_ldap:mod_ban:mod_ctrls_admin:mod_load:mod_rewrite:mod_sftp:\ mod_site_misc:mod_wrap2:mod_wrap2_file:mod_ident:mod_dynmasq:\ mod_unique_id:mod_ifsession ---- 参考ここまで $ make # make install (基本的なコマンド類は,/usr/local/sbin/ 以下に突っ込まれる) (configure 時に指定した通り,proftpd.conf は /etc/ 以下) (PAM認証用のツール類を /usr/local/sbin/ 以下にコピー) # cd contrib/ # cp -p ftpasswd ftpmail ftpquota /usr/local/sbin/. # cp -p dist/rpm/ftp.pamd /etc/pam.d/ftp # cp -p dist/rpm/proftpd.init.d /etc/init.d/proftpd # cp -p dist/rpm/proftpd.logrotate /etc/logrotate/proftpd (anonymous ftp 用の設定.ユーザ ftp を作成.そのホームディレクトリを公開) (ここでは,/data/ftp をホームとする) (/etc/passwd 内では,shell を /sbin/nologin に設定) (SELinux を使ってる場合,新規インストールファイルへの SELinux ラベルを修正) # restorecon -Rv /etc # restorecon -Rv /usr/local/etc (# restorecon -Rv /data/ftp も実行? しなくていいかな?) (ここで,/etc/proftpd.conf の書き換え.詳細は後述) # chmod 755 /etc/rc.d/init.d/proftpd # service proftpd start # chkconfig --add proftpd
組み込まれているモジュールを確認するには,
# ./proftpd -l
- 起動関連設定
起動時のサービスに追加するための準備.必要なら /etc/init.d/proftpd を編集するが,今回は無編集.
# cp -p ./contrib/dist/rpm/proftpd.init.d /etc/init.d/proftpd # chmod 755 /etc/init.d/proftpd # vi /etc/init.d/proftpd # chkconfig --add proftpd # chkconfig proftpd on # chkconfig --list | grep proftpd
- 設定ファイルの修正
# cp -p /etc/proftpd.conf /etc/proftpd.conf_tarball_ORG # vi /etc/proftpd.conf
一応,インストール時の初期ファイルは残しておく. proftpd 設定での修正点は,アクセス制限くらい. 自分の基本方針は以下の通り:
- anonymous FTP サービスは提供しない
- secure な計算機 or domain からのアクセスのみ許可 (研究室内の計算機/domain のみ許可)
proftpd 動作確認時の注意
よく忘れること
私だけかもしれないが,一度もエラー出ずに起動できたためしが無い.過去の経験では,以下の事柄が関連していた
- SELinux が有効 or 無効?
- firewall が有効 or 無効?
- tcp_wrapper (/etc/hosts.{allow,deny}) の記述は?
- 自分の hostname は /etc/hosts に書いてあるか?
- /etc/proftpd.conf の order や allow & deny の記述内容
- chkconfig に追加してあるか? on にしてあるか?
- (anonymous ftp を使用する場合) anonymous ftp 用のディレクトリを 正しく設定しているか? /etc/passwd 内の ftp 部分のホームディレクトリ設定の事. ディスククラッシュ時,パーティション名を変えた代替ディスクを用意した際, anonymous ftp アクセスが出来なくなった. /etc/passwd を変更していなかったため,参照していたディレクトリが存在しなかった事に しばらく気づかなかった事が原因.
参考履歴
上記の設定は,ほぼ全て下記サイトを参照しました.ありがとうございました.
更新履歴
Date | Changes |
---|---|
2016-02-27 | ページ内の参照用IDを付け替え. 番号付けのルールは, Linux tips (hysk) # 自分専用ルール・HTML に従う. |
2012-08-21 | セキュリティ対策 (hysk)より分離. |