○ Proftpdのインストール

・FTPサーバの利用 (vsftpdにかわるもの)
・proftpd-1.3.3eをソースからインストールし、設定します
・proftpd専用ユーザ (/sbin/nologinシェル) で運営できます
・動作確認 gFTP (linux)、FileZilla、FFFTP (WindowsXP)
・make はメンテナンスマシンで行っています

・ソースの取得、削除は省略します
・エディタ、ファイラーの操作は省略します
・ソースを展開したら説明文を読みましょう
・Enterキーを省略します

・ログイン端末で "#" はroot、"$" は一般ユーザのプロンプトの記号です
・設定ファイルで "#" で始まる行はコメントとして解釈されます

○関連サイト

:proftpd-1.3.3e.tar.bz2  (http://www.proftpd.org/)

○参照ファイル

パッケージの追加
最初の設定 (Xen)
opensslのインストール

○インストール環境

:OS CentOS 5.6
:selinux disabled or permissive
:インストール先  /usr/local
:作業 /usr/src
:言語 LANG=en_US.UTF-8
:ユーザー rootで実行

・メンテナンスの場合は一般ユーザから行います



○proftpd-1.3.3e

○新しいモデュール

・proftpd-1.3.3で新しく追加されたモデュールです
・mod_sftpがsftp-serverの代用になるかはこれから

mod_sql_passwd mod_exec mod_shaper mod_tls_shmcache
mod_sftp mod_sftp_pam mod_sftp_sql

○展開・インストール

・openssl-develを必要とします
・opensslヘッダファイルのバージョンを記録するので注意
・組み込んだ全てのモデュールを試していません

# /usr/src
[root@jupiter:/usr/src]
# tar jxvf proftpd-1.3.3e.tar.bz2
# chown -R root:root proftpd-1.3.3e
# cd proftpd-1.3.3e
[root@jupiter:/usr/src/proftpd-1.3.3e]
# make distclean
# ./configure CFLAGS="-O2 -march=pentium3" \
--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

・CFLAGS="-O2 -march=pentium3" (CPU最適化オプション)
・該当しない場合は指定しない
紫色部分 ssl,tls対応
・オプションは半角を入れて続けて記入した方が良い

# make
# make install

・pam用ファイル・起動スクリプト等をコピーします

# cd contrib
[root@jupiter:/usr/src/proftpd-1.3.3e/contrib]
# cp ftpasswd ftpmail ftpquota /usr/local/sbin
# cd dist/rpm
[root@jupiter:/usr/src/proftpd-1.3.3e/contrib/dist/rpm]
# cp ftp.pamd /etc/pam.d/ftp
# cp proftpd.init.d /etc/init.d/proftpd
# cp proftpd.logrotate /etc/logrotate.d/proftpd
# cp xinetd /etc/xinetd.d/proftpd
# cd /usr/src
[root@jupiter:/usr/src]
# tar jcvf proftpd-1.3.3e-110410.tar.bz2 proftpd-1.3.3e/

○vsftpdの停止・自動起動設定の解除

# cd ~
[root@jupiter:~]
# service vsftpd stop
# chkconfig --del vsftpd

○Anonymousftp用のディレクトリを作ります

・例 /home/ftp (ftp ftp 755)

[root@jupiter:~]
# mkdir -p /home/ftp/pub
# chown -R ftp:ftp /home/ftp

・log用のディレクトリを作成

# mkdir /var/log/proftpd

○専用ユーザ設定ファイルの作成

[root@jupiter:~]
# touch /etc/ftpd.passwd
# touch /etc/ftpd.group

○proftpd.confの修正

/étc/proftpd.conf (詳細別記)

・TZの設定

・省略

TimesGMT off
SetEnv TZ JST-9

・省略


○tcp_wrappersで制御します

:/etc/hosts.allow

・ローカルからのみ接続を許可します

ALL: 127.0.0.1
proftpd: 192.168.0. EXCEPT 192.168.0.21

:/etc/hosts.deny

ALL: ALL

○ftpusersでログイン制限

: /etc/ftpusers

・ディレクティブ UseFtpUsers on (Default)
・ログインを拒否するユーザをftpusersで指定します

root
bin
daemon
adm
lp
sync
shutdown
halt
mail
news
uucp
operator
games
nobody

○selinuxヘの対応 (selinuxが有効の場合)

:新規インストールファイルのselinuxラベルを修正

[root@jupiter:~]
# restorecon -Rv /etc
# restorecon -Rv /usr/local
# restorecon -RFv /home/ftp

○proftpdの起動

:/etc/xinetd.d/proftpdの修正

・省略

 disable=yes

・省略

:proftpd(standalone)の起動

[root@jupiter:~]
# chmod 755 /etc/rc.d/init.d/proftpd
# service proftpd start
# chkconfig --add proftpd

○proftpdログのローテーション

:/ete/logrotate.d/proftpd

/var/log/proftpd/*.log /var/log/proftpd/xferlog {
    rotate 4
    create
    missingok
    notifempty
    postrotate
        kill -HUP `cat /var/run/proftpd.pid 2>/dev/null` 2>/dev/null || true
    endscript
}

:logrotationの確認

[root@jupiter:~]
# logrotate -f /etc/logrotate.d/proftpd

・うまくいかない場合、設定ファイルを修正します
・ただし、var/lib/logrotate.statusに前回rotateした日付が設定されます
・logrotate.statusの日付をエディタで修正します
・調整後は/etc/logrotate.confと重複する設定をコメントにします
・"rotate 4" "create" など



○proftpd専用ユーザの設定

・ftpアクセスできるapacheユーザを設定します
・パスワードは暗号化されます

# cd /etc
[root@jupiter:/etc]

・apacheユーザの設定

# ftpasswd --passwd --name=apache --uid=48 --gid=48 \
--home=/home/www --shell=/sbin/nologin
ftpasswd: creating passwd entry for user apache

Password:← パスワードの入力
Re-type password:← 再入力

ftpasswd: entry created

・apacheグループの設定

# ftpasswd --group --name=apache --gid=48
ftpasswd: creating group entry for group apache
ftpasswd: entry created

・パスワードのグループ・パーミッションを変更しておきます

# cd ~
[root@jupiter:~]
# chown root:nobody /etc/{ftpd.passwd,ftpd.group}
# chmod o-r /etc/{ftpd.passwd,ftpd.group}

○local_port_rangeの調べ方

・ローカルの使用するportの範囲

[root@jupiter:~]
# cat /proc/sys/net/ipv4/ip_local_port_range
32768 61000

○PASV接続の例

gftpのコネクションログの例では

PASV
227 Entering Passive Mode (134,160,38,1,206,165)

グローバルアドレス 134.160.38.1
port 52901 (256x206+165=52901) で接続していることになります


○ftp のレスポンスコード

response-code

○ Copyright(c) 528p.com All Rights Reserved.