○ Proftpdのインストール

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

・ルータでNAT変換し、外部に公開する場合は"MasqueradeAddress"の設定が必要です
・グローバルとローカルで共用する場合は、さらに"<VirtualHost>"の設定が必要です
・または、ローカル側のFTPクライアントで"アクティブ転送モード"を使います
・動的グローバルIPの場合は、DDNSで名前解決し"xinetd"で起動する必要があります

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

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

○関連サイト

:proftpd-1.3.5e.tar.gz  (http://www.proftpd.org/)

○参照ファイル

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

○インストール環境

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

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



○proftpd-1.3.5e

○新しいモデュールと設定ディレクティブ

・proftpd-1.3.5で新しく追加されたモデュールです

mod_dnsbl
mod_snmp
mod_log_forensic
mod_rlimit
mod_geoip

・proftpd-1.3.5で新しく追加された設定ディレクティブです

RLimitChroot
LDAPLog
TLSECCertificateFile, TLSECCertificateKeyFile
TLSVerifyServer
SQLUserPrimaryKey, SQLGroupPrimaryKey
SQLPasswordPBKDF2
GeoIPPolicy
TLSMasqueradeAddress
TLSUserName
AllowChrootSymlinks
CapabilitiesRootRevoke
<IfAuthenticated>
FactsOptions
QuotaDefault
RewriteMaxReplace
TLSServerCipherPreference

○展開・インストール

・必要な開発パッケージはspecファイルを参照して下さい
・specファイルはcontrib/dist/rpmディレクトリにあります
・ftpmailコマンドを使用する場合は、
・perl-Mail-Sendmail(epel)、perl-Time-HiResが必要です

・mod_ifsessionはmodules設定の最後に記述します
・全てのモデュールを組み込んではいません

# cd ~/src
[root@jupiter:~/src]
# tar zxvf proftpd-1.3.5e.tar.gz
# chown -R root:root proftpd-1.3.5e
# cd proftpd-1.3.5e
[root@jupiter:~/src/proftpd-1.3.5e]
# make distclean

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

# ./configure CFLAGS="-O2 -march=i686 -mtune=atom" \
--sysconfdir=/etc \
--localstatedir=/var/run/proftpd \
--enable-ctrls \
--enable-dso \
--enable-facl \
--enable-ipv6 \
--enable-nls \
--enable-openssl \
--enable-pcre \
--enable-autoshadow \
--with-modules=mod_auth_pam:mod_ratio:mod_readme:mod_tls:mod_wrap \
--with-shared=mod_ban:mod_copy:mod_ctrls_admin:mod_deflate:\
mod_dynmasq:mod_facl:mod_ident:mod_ifversion:mod_ldap:mod_qos:\
mod_quotatab:mod_quotatab_file:mod_quotatab_ldap:mod_rewrite:\
mod_shaper:mod_site_misc:mod_unique_id:mod_load:mod_sftp:\
mod_sftp_pam:mod_tls_shmcache:mod_wrap2:mod_wrap2_file:\
mod_ifsession

・コンパイル

# make

・インストール (アップデートは別項参照)

# make install

・デフォルト設定ファイルを保存しておきます

# cp -a sample-configurations ~/src/proftpd135e

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

# cd contrib/dist/rpm
[root@jupiter:~/src/proftpd-1.3.5e/contrib/dist/rpm]
# cp ftp.pamd /etc/pam.d/ftp
# cp proftpd.pam /etc/pam.d/proftpd
# cp proftpd.init.d /etc/init.d/proftpd
# cp proftpd.logrotate /etc/logrotate.d/proftpd
# cp xinetd /etc/xinetd.d/proftpd

# cd ~/src
[root@jupiter:~/src]
# tar jcvf proftpd-1.3.5e-170412.tar.bz2 proftpd-1.3.5e/

○アップデート

・新規インストールの場合は、次項へ進みます
・ソースの展開・コンパイルの表記は略します

・既存のコマンドファイルの削除 (必要な場合)
・インストール先が変わった(usr/local/sbin から usr/local/bin)

# rm /usr/local/sbin/{ftpasswd,ftpmail,ftpquota}

・アップデート

# cd ~/src/proftpd-1.3.5e
[root@jupiter:~/src/proftpd-1.3.5e]
# make install

・新旧のデフォルト設定ファイルの差分を取ります
・必要があれば、設定ファイルを修正します(修正は略します)

# cp -a sample-configurations ~/src/proftpd135e
# cd ~/src
[root@jupiter:~/src]
# diff -urp proftpd135d proftpd135e

・再起動します

# service proftpd restart

○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

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

# mkdir /var/run/proftpd
# mkdir /var/log/proftpd

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

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

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

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

○proftpd.confの修正

/etc/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

・省略

:/etc/rc.d/init.d/proftpdの修正

・省略

# Startup script for ProFTPD
#
# chkconfig: 235 85 15

・省略

# Make sure the binary is present.
[ -x /usr/local/sbin/proftpd ] || exit 5

PATH=$PATH:/usr/local/sbin
RETVAL=0
prog="proftpd"

・省略

:proftpd(standalone)の起動

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

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

:/ete/logrotate.d/proftpd

・xferlogの位置はproftpd.confの設定に合わせています

/var/log/proftpd/*.log /var/log/proftpd/xferlog {
#    compress
    rotate 4
    create
    missingok
    notifempty
    sharedscripts
    postrotate
        test -f /var/lock/subsys/proftpd && /usr/bin/killall -HUP proftpd || :
    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ユーザを設定します
・--force オプション 強制上書きモード
・--sha512 オプション (デフォルトはmd5)
・システムでsha512がサポートされている場合に使用可能

# 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

・既存の設定を変更する場合

# ftpasswd --force --passwd --sha512 --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

○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.