早崎トップ 研究(気候気象) 研究(大気汚染) データリスト Linux Tips Mac Tips

proftpd_setup

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)より分離.