今回は、軽くftpサーバを構築してみます。
パッケージからインストール
サーバプログラムはvsftpdをパッケージからインストールします。
[root@ace ~]# dnf install vsftpd
メタデータの期限切れの最終確認: 0:00:05 時間前の 2020年02月26日 23時26分33秒 に 実施しました。
依存関係が解決しました。
================================================================================
パッケージ Arch バージョン リポジトリー サイズ
================================================================================
インストール:
vsftpd x86_64 3.0.3-28.el8 AppStream 180 k
トランザクションの概要
================================================================================
インストール 1 パッケージ
ダウンロードサイズの合計: 180 k
インストール済みのサイズ: 359 k
これでよろしいですか? [y/N]: y
パッケージのダウンロード:
vsftpd-3.0.3-28.el8.x86_64.rpm 1.2 MB/s | 180 kB 00:00
--------------------------------------------------------------------------------
合計 232 kB/s | 180 kB 00:00
トランザクションの確認を実行中
トランザクションの確認に成功しました。
トランザクションのテストを実行中
トランザクションのテストに成功しました。
トランザクションを実行中
準備 : 1/1
インストール中 : vsftpd-3.0.3-28.el8.x86_64 1/1
scriptletの実行中: vsftpd-3.0.3-28.el8.x86_64 1/1
検証 : vsftpd-3.0.3-28.el8.x86_64 1/1
インストール済み:
vsftpd-3.0.3-28.el8.x86_64
完了しました!
[root@ace ~]#
簡単ですね。
自分好みに設定
設定ファイルは/etc/vsftpd/vsftpd.confなので、それを直してみますよ。
[root@ace ~]# cp -p /etc/vsftpd/vsftpd.conf /etc/vsftpd/vsftpd.conf.orig
[root@ace ~]# vi /etc/vsftpd/vsftpd.conf
[root@ace ~]#
[root@ace ~]# diff /etc/vsftpd/vsftpd.conf /etc/vsftpd/vsftpd.conf.orig
12c12
< anonymous_enable=YES
---
> anonymous_enable=NO
37c37
< #dirmessage_enable=YES
---
> dirmessage_enable=YES
101c101
< chroot_local_user=YES
---
> #chroot_local_user=YES
110c110
< ls_recurse_enable=YES
---
> #ls_recurse_enable=YES
128,143d127
<
< allow_writeable_chroot=YES
< anon_root=/var/ftp
< use_localtime=YES
< force_dot_files=YES
< reverse_lookup_enable=NO
<
< #ssl_enable=YES
< #ssl_tlsv1=YES
< #ssl_sslv2=NO
< #ssl_sslv3=NO
< #rsa_cert_file=/etc/letsencrypt/live/zeke.ne.jp/fullchain.pem
< #rsa_private_key_file=/etc/letsencrypt/live/zeke.ne.jp/privkey.pem
< #force_local_logins_ssl=NO
< #force_local_data_ssl=NO
<
[root@ace ~]#
[root@ace ~]# touch /etc/vsftpd/chroot_list
[root@ace ~]#
設定ファイルを変更します。ポイントは
匿名ftpは有効に、ただし書き込みはできません。20世紀に書き込みできるようにしていたら、知らない人に動画の交換をされていたので。匿名ftpのホームディレクトリは/var/ftpになります。
一般ユーザはchrootを使って、自分のホームディレクトリ以外に移動できません。ホームディレクトリ内であれば、書き込みは可能です。.htaccessなど.で始まるファイル名も表示します。bindのときはchootを使いませんでしたが、今回はユーザがディレクトリを迷わないようにするためのものなので、利便性の向上ですね。
FTPS対応の対応のため、サーバ証明書を手に入れたらssl関係のコメントを外す予定です。
※暗号化していると、FirewallやNATに引っかかって(パケットの内容が読めないのでどのportを使ってデータ転送するかわからない)通信できないようです。コメントのままにして暗号化非対応とします。
自動起動設定
[root@ace ~]# systemctl enable vsftpd
Created symlink /etc/systemd/system/multi-user.target.wants/vsftpd.service → /usr/lib/systemd/system/vsftpd.service.
[root@ace ~]# systemctl start vsftpd
[root@ace ~]# systemctl status vsftpd
● vsftpd.service - Vsftpd ftp daemon
Loaded: loaded (/usr/lib/systemd/system/vsftpd.service; enabled; vendor pres>
Active: active (running) since Thu 2020-02-27 00:35:47 JST; 11s ago
Process: 17133 ExecStart=/usr/sbin/vsftpd /etc/vsftpd/vsftpd.conf (code=exite>
Main PID: 17134 (vsftpd)
Tasks: 1 (limit: 25027)
Memory: 536.0K
CGroup: /system.slice/vsftpd.service
mq17134 /usr/sbin/vsftpd /etc/vsftpd/vsftpd.conf
2月 27 00:35:47 ace.lo.zeke.ne.jp systemd[1]: Starting Vsftpd ftp daemon...
2月 27 00:35:47 ace.lo.zeke.ne.jp systemd[1]: Started Vsftpd ftp daemon.
[root@ace ~]#
いつものように自動起動の設定とサーバの起動を行います。
ちゃんと上がっているようですね。
動作確認。ちゃんと動いてるかな。
Windowsのffftpを使って、一般ユーザと匿名ユーザでログインできることを確認。一般ユーザはファイルを書き込めること、匿名ユーザはファイルを書き込めないことを確認しておきました。
Firewallの穴あけ
[root@ace ~]# firewall-cmd --zone=public --permanent --add-service=ftp
success
[root@ace ~]# firewall-cmd --reload
success
[root@ace ~]# firewall-cmd --list-all
public (active)
target: default
icmp-block-inversion: no
interfaces: enp0s3
sources:
services: dns ftp irc
ports: 5500-5501/tcp
protocols:
masquerade: no
forward-ports:
source-ports:
icmp-blocks:
rich rules:
[root@ace ~]#
ftpサービスとしてfirewalldに設定すると、制御ポート(21番)だけでなく、データ転送ポート(任意の番号)も通信内容を覗き見て適当に開けてくれます。
しかし、ftpsとして暗号化しようとすると、firewalldやルータが通信内容を見れなくなるので、データ転送ポートを固定にしたり、受信用IPアドレスをグローバルに変更したりとか、けっこう大変というか、結局、納得できる設定にできませんでした。
ちょっと、なめていました。
ftpでの暗号化通信はあきらめて、ファイル転送はsshdによるsftpにすることにしました。
ルータの設定を行っていないので、まだインターネットからはアクセスできませんが、とりあえず設定完了です。
お勧めのKindle本です!
コメント