Proftpd for SSL/TSL ,CentOS7

CentOS7に、ftpサーバーの「Proftpd」を入れて、SSL/TSL対応にしたいと思います。

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

 

タイトルとURLをコピーしました