CentOS7に、ftpサーバーの「Proftpd」を入れて、SSL/TSL対応にしたいと思います。
関連記事
↑ CentOS8用の設定です
vsftpdか、proftpdか
Centos系で標準で入っている、vsftpd。
けっこう、昔からあるproftpd。
vsftpdは、Unixパスワードと連動していません。
proftpdは、基本、連動をしています。
個人的には、昔から、proftpdを使っており、proftpdを使う傾向にあります。
管理者によって、好みがあります。
組織として、どちらかを使うか、「伝統」的なものもあります。
自分の裁量でチョイスできればいいですが、上の方の好みがあるのであれば、それに従ったほうがいいかもしれません(笑)。
Proftpdインストール
# wget ftp://ftp.proftpd.org/distrib/source/proftpd-1.3.6.tar.gz # tar xzvf proftpd-1.3.6.tar.gz # cd proftpd-1.3.6 # ./configure --with-modules=mod_tls # make # make install
↑ 「–with-modules=mod_tls」が、SSL/TSL関係のモジュールを入れる指示です。
Proftpd設定
# vi /usr/local/etc/proftpd.conf
ServerName "ProFTPD Default Installation" ↓ ServerName "FTP Server"
↑アクセスされたとき、「ProFTPD」と悟られないようにするため。セキュリティ上の理由です。
TimesGMT FALSE UseReverseDNS off IdentLookups off AllowRetrieveRestart on AllowStoreRestart on DeleteAbortedStores off ServerIdent off PassivePorts 60000 63000 RootLogin off SyslogFacility LOCAL6 ListOptions "-a" PidFile /var/run/proftpd.pid LogFormat allinfo "%t : %u (%a [%h]) : [%s], %T, %m (%f)" LogFormat write "%t : %u : %F (%a)" LogFormat read "%t : %u : %F (%a)" LogFormat auth "%t : %u (%a [%h])" ExtendedLog /var/log/proftpd/all.log ALL allinfo ExtendedLog /var/log/proftpd/write.log WRITE write ExtendedLog /var/log/proftpd/read.log READ read ExtendedLog /var/log/proftpd/auth.log AUTH auth
↑種々の設定を追加します。
「PassivePorts 」で、パッシブポートのポート番号を指定します。
後半は、ログの指定です。
トラブル時に役立ちます。
User nobody Group nogroup ↓ User ftp Group ftp #DefaultRoot ~ ↓ DefaultRoot ~
↑後者は、ログイン時に、上位ディレクトリにアクセスできないようにするための設定です。
<limit login> Deny from XXX.XXX.XXX.XXX DenyGroup !users </limit>
↑個人的に、常時入れている設定。
「Deny from 」の行で、アクセスされたくないクライアントを指定します。
「DenyGroup」で、「users」のグループ以外(100番以外)のアクセスを禁止します。
これにより、セキュリティが向上します。
<IfModule mod_tls.c> TLSEngine on TLSLog /var/log/proftpd/ftps.log TLSProtocol SSLv23 TLSCipherSuite ALL:!ADH:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP TLSRequired off TLSVerifyClient off TLSRSACertificateFile /etc/letsencrypt/live/(ホスト名)/fullchain.pem TLSRSACertificateKeyFile /etc/letsencrypt/live/(ホスト名)/privkey.pem </IfModule>
↑「TLSRequired off」の「off」は、「SSL/TSL」を「強要しない」
クライアントに委ねる。という設定です。「on」にして、セキュリティを向上させてもいいかと思います。
TLSRSACertificateFile
と
TLSRSACertificateKeyFile
の行で、SSLのキーファイルを指定します。このファイルは、
Postfix 3.4 [SSL 送受信] CentOS7(マルチドメイン)
で、設定したファイルを利用します。
<Limit SITE_CHMOD> DenyAll </Limit> <Anonymous ~ftp> (略) </Anonymous>
↑上記の設定は、「削除」します。
上記までが、「/usr/local/etc/proftpd.conf」の設定です。
# mkdir /var/log/proftpd/
↑ログディレクトリを作成しておきます。
ftp用Firewall調整
# firewall-cmd --add-service=ftp --permanent # firewall-cmd --add-port=60000-63000/tcp --permanent # firewall-cmd --reload
↑2行目の「port=」のところで、パッシブポートのポート番号を指定します。
設定ファイルと同じポート番号を指定します。
ログのローテーション
# cp contrib/dist/rpm/proftpd.logrotate /etc/logrotate.d/
↑ログのローテーション設定は、ソースに付随しているものを使うと楽です。
CentOS7 用サービス
# vi /etc/systemd/system/proftpd.service [Unit] Description=proftpd After=network.target [Service] Type=simple RemainAfterExit=yes ExecStart=/usr/local/sbin/proftpd [Install] WantedBy=multi-user.target
(↑2019/11/04修正)
# systemctl start proftpd # systemctl status proftpd # systemctl enable proftpd