CentOS には VSFTPD と組み合わせが決まっているようですが、VSFTPD はいろいろと使いにくいことは前から思っていて、とうとうProFTPDへの乗り換えに成功した。
最大の理由は、VSFTPD では、タイムスタンプの維持ができないこと。例えば、ローカルPCのファイルのタイムスタンプが、サーバーにアップすると、アップした時のサーバーの時間になる。SFTPで転送すれば、維持されるかもしれないが、転送速度が遅くなる。
最終解決は、ProFTPDをインストールすること。
ProFTPDのインストール
EPELを有効にします。
RPM -ivh http://dl.fedoraproject.org/pub/epel/7/x86_64/e/epel-release-7-5.noarch.rpm
ProFTPDとOpenSSLをインストール (openssl は既にインストール済みかも)
yum install -y proftpd openssl proftpd-utils
サービスを開始
systemctl start proftpd.service
systemctl enable proftpd.service
ファイアウォールのFTPポートを開けます:
firewall-cmd --add-service=ftp --permanent
firewall-cmd --reload
ProFTPDのバージョン確認:
proftpd -v
ProFTPDのTLSを有効にする
proftpd.conf 設定ファイルのバックアップ:
cp /etc/proftpd.conf /etc/proftpd.conf.bak
nano /etc/proftpd.conf
proftpd.conf に次の赤文字の部分を追加する。
[...]DefaultRoot ~ !adm PassivePorts 6000 6100 [...] #<IfDefine TLS> TLSEngine on TLSRequired on TLSRSACertificateFile /etc/pki/tls/certs/proftpd.pem TLSRSACertificateKeyFile /etc/pki/tls/certs/proftpd.pem TLSCipherSuite ALL:!ADH:!DES TLSOptions NoCertRequest TLSVerifyClient off TLSRenegotiate ctrl 3600 data 512000 required off timeout 300 TLSLog /var/log/proftpd/tls.log # <IfModule mod_tls_shmcache.c> # TLSSessionCache shm:/file=/var/run/proftpd/sesscache # </IfModule> #</IfDefine> [...]
6000 - 6100 ポートを使うので、ファイヤーウォールを開ける。:
firewall-cmd --add-port=6000-6100/tcp --permanent
firewall-cmd --reload
開いているか確認:
firewall-cmd --list-ports
SELINUX が有効になっている場合は.
setsebool -P allow_ftpd_full_access=1
/etc/pki/tls/certsにTLSの証明書を作成する:
openssl req -x509 -nodes -newkey rsa:1024 -keyout /etc/pki/tls/certs/proftpd.pem -out /etc/pki/tls/certs/proftpd.pem
[root@server1 certs]# openssl req -x509 -nodes -newkey rsa:1024 -keyout /etc/pki/tls/certs/proftpd.pem -out /etc/pki/tls/certs/proftpd.pem
Generating a 1024 bit RSA private key
...................................++++++
.........++++++
writing new private key to '/etc/pki/tls/certs/proftpd.pem'
-----
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [XX]:<--JP
State or Province Name (full name) []:<--Kyushu
Locality Name (eg, city) [Default City]:<--Nobeoka
Organization Name (eg, company) [Default Company Ltd]:<--ISPConfig
Organizational Unit Name (eg, section) []:<--Development
Common Name (eg, your name or your server's hostname) []:<--server1.example.com
Email Address []:<--info@example.com
[root@server1 certs]#
パーミッション変更:
chmod 0440 /etc/pki/tls/certs/proftpd.pem
ProFTPD service を再起動:
systemctl restart proftpd.service
これで完了:
Filezilla を使用する場合、タイムスタンプの維持のためには、メニューの
[転送]-[転送したファイルのタイムスタンプを維持する]
をチェック。