業務用エアコン関連の技術情報、エラーコード、環境問題対策に関する別サイト「エアコンの安全な修理・適切なフロン回収」

openSUSE Tumbleweed : FTPサーバ(Vsftpd)インストールとSSL/TLS化

1. vsftpd( FTPサーバ )

1.1 vsftpdインストール

# zypper -n install vsftpd

1.2 vsftpd設定ファイル編集

編集前の vsftpd.conf を バックアップしておきます。

# cp /etc/vsftpd.conf /home/huong/vsftpd.conf.org
# vi /etc/vsftpd.conf

19行目:変更
write_enable=YES

36行目:コメント解除 ( ディレクトリごと一括での転送有効 )
ls_recurse_enable=YES

57行目:コメント解除
local_umask=022

62,63行目:コメント解除 ( chroot有効 )
chroot_local_user=YES
chroot_list_enable=YES

65行目:コメント解除 ( chroot リストファイル指定 )
chroot_list_file=/etc/vsftpd.chroot_list

80行目:変更 匿名ログイン禁止
anonymous_enable=NO

150行目:コメントアウトにして、その下に追加
#connect_from_port_20=YES
listen_port=21

173行目あたり:コメント解除 ( アスキーモードでの転送を許可 )
ascii_download_enable=YES

185行目あたり:必要に応じて変更 (IPv4のみをリスンする場合 )
listen=YES

190行目あたり:必要に応じて変更 (IPv4のみをリスンする場合)
# YES の場合は IPv4/IPv6 両方 listen
listen_ipv6=NO

218行目あたり:コメント解除 (seccomp filter をオフにする)
seccomp_sandbox=NO

最終行へ追記
# ローカルタイムを使う
use_localtime=YES

上層への ディレクトリへのアクセスを許可するユーザーを追加

# echo "huong" >> /etc/vsftpd.chroot_list

私の場合 huong を書込みました。

vsftpd を自動起動を有効にし、起動する

# systemctl enable vsftpd
# systemctl start vsftpd

1.3 firewall設定

FTPポート開放(FTPは21を使用)

# firewall-cmd --add-service=ftp --permanent
# firewall-cmd --reload

windows 側から、FileZilla で接続できるか確認をしておきます
FileZillaを起動し、「ファイル」メニューから「サイトマネージャー」を選択 

「New site」をクリック

各項目の設定は次の通り入力し、 "Connect"クリック
Protocol : FTP - File Transfer Protocol
Host: サーバーのIPアドレス
Port: (空白)
Encryption : Use explicit FTP over TLS if available
Logon Type: Ask for password
User : サーバーのログインユーザー

「Password」にはログインユーザーのパスワードを設定し、「OK」クリック

接続に成功すると右側にサーバーのディレクトリー、左側にWedowsのディレクトリーが表示される

2. vsftpd SSL/TLS

Vsftpd を SSL/TLS で利用できるように設定します

2.1 自己署名の証明書を作成

Let's Encrypt 等の信頼された正規の証明書を使用する場合は当作業は不要です

# zypper -n install openssl
# cd /etc/ssl/private
# openssl req -x509 -nodes -newkey rsa:2048 -keyout vsftpd.pem -out vsftpd.pem -days 365

-----
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) [AU]:JP  国コード
State or Province Name (full name) [Some-State]:Osaka   地域(県)
Locality Name (eg, city) []:Sakai  都市
Organization Name (eg, company) [Internet Widgits Pty Ltd]:private  組織名
Organizational Unit Name (eg, section) []:Admin  組織の部門名
Common Name (e.g. server FQDN or YOUR name) []:Lepard  ホスト名
Email Address []:hoge@hoge.com  管理者アドレス
# chmod 600 vsftpd.pem

2.2 設定ファイルの編集

# vi /etc/vsftpd.conf

195行目:変更
ssl_enable=YES

最終行に追記
rsa_cert_file=/etc/ssl/private/vsftpd.pem
rsa_private_key_file=/etc/ssl/private/vsftpd.pem
ssl_ciphers=HIGH
force_local_data_ssl=YES
force_local_logins_ssl=YES

パッシブポートを使用する場合
177行目
pasv_enable=YES
# systemctl restart vsftpd

2.3 Firewalldの許可

パッシブポートの開放

# firewall-cmd --add-port=30000-30100/tcp --permanent
success
# firewall-cmd --reload
success

先ほどの通りFileZilla に接続すると次の画面が出るのでチェックを入れ「OK」クリックすると先ほどの通り接続される