CentOS 5.4でFTPサーバーの構築
CentOS 5.4にProFTPDを導入し、FTPサーバーとして動作させる。
1. 要件と仮定
今回の要件は下記の通り。
- ユーザーが自分のホームディレクトリへFTPでアクセスできる様にする。
- ユーザー認証にはLDAPを使用する(LDAP環境の構築についてはこちら)。
- LDAPを使用する場合、ホームディレクトリが存在しない場合がある。その場合、自動でホームディレクトリを作成する。
- xinetdを導入し、xinetd経由で起動する様に設定する。
CentOS標準の vsFTPD でも構わないのだが、ProFTPD は vsFTPD に比べてLDAPとの連携が充実しており、LDAP環境ならばこちらをおすすめする。
2. インストール
yumからインストールを行う。標準リポジトリでは提供されていないが、rpmforgeを利用できるようにしておくことでyumからインストールが可能。
[root@localhost ~]# yum -y install proftpd proftpd-ldap
また、xinetd経由で動作させるため、xinetdが必要となる。未導入の場合は以下のコマンドでインストール・起動しておく。
[root@localhost ~]# yum -y install xinetd [root@localhost ~]# service xinetd start [root@localhost ~]# chkconfig xinetd on
3. 設定
ProFTPDの設定ファイルは /etc/proftpd.conf にある。今回は下記の通り設定した。
# 接続したクライアントに表示するサーバー名とメッセージ ServerName "FTP Server" ServerIdent on "FTP Server ready." # サーバー管理者のメールアドレス ServerAdmin root@localhost # サーバーの動作モード -> xinetd経由で起動させる ServerType inetd # PASVコマンドで使用するポート範囲 PassivePorts 60000 60030 # バーチャルホスト運用は行わないのでデフォルトに設定 DefaultServer on # 認証成功時にクライアントに表示するメッセージ AccessGrantMsg "User %u logged in." # 新しいファイルを作成する場合のUMASK値 Umask 022 # chroot先ディレクトリと除外条件 -> ホームディレクトリ(wheel以外) DefaultRoot ~ !wheel # ログイン時の初期ディレクトリ -> ホームディレクトリ DefaultChdir ~ # 初ログイン時にホームディレクトリを自動で作成する CreateHome on 0755 skel /etc/skel # LISTコマンドのオプション ListOptions "-a" # 認証手順 - LDAP認証のみを行う AuthOrder mod_ldap.c # リモートユーザー名の確認を行わない IdentLookups off # リモートホストのDNS逆引きを行わない UseReverseDNS off # LDAPモジュールを読み込む LoadModule mod_ldap.c # LDAP設定 LDAPServer ldap.example.jp LDAPUseTLS on LDAPAuthBinds on LDAPDoAuth on "dc=example,dc=jp" LDAPDoUIDLookups on "ou=People,dc=example,dc=jp" LDAPDoGIDLookups on "ou=Group,dc=example,dc=jp" # アップロード/ダウンロード時のレジュームを有効にする AllowRetrieveRestart on AllowStoreRestart on # 認証前のユーザー/グループ User nobody Group nobody # sendfile()を使用しない UseSendfile no # ログ設定 LogFormat default "%h %l %u %t \"%r\" %s %b" LogFormat auth "%v [%P] %h %t \"%r\" %s" ExtendedLog /var/log/proftpd/access.log WRITE,READ default ExtendedLog /var/log/proftpd/auth.log # デフォルトのアクセス制御 <Global> AllowOverwrite yes <Limit ALL SITE_CHMOD> AllowAll </Limit> </Global>
4. xinetdの設定
ProFTPDをインストールすると /etc/xinetd.d/xproftpd というファイルが生成されているのでこれを編集する。
[root@localhost ~]# vim /etc/xinetd.d/xproftpd service ftp { socket_type = stream wait = no user = root server = /usr/sbin/in.proftpd log_on_success += HOST USERID PID log_on_failure += HOST USERID nice = 10 disable = no instances = 10 }
xinetdの設定ファイルの書き方については割愛する。意味が分からない場合は各自で調べて欲しい。