今回は、軽くftpサーバを構築してみます。
パッケージからインストール
サーバプログラムはvsftpdをパッケージからインストールします。
[root@ace ~]# dnf install vsftpd
サブスクリプション管理リポジトリーを更新しています。
メタデータの期限切れの最終確認: 3:07:01 前の 2024年02月07日 08時16分25秒 に実施 しました。
依存関係が解決しました。
================================================================================
パッケージ
Arch バージョン リポジトリー サイズ
================================================================================
インストール:
vsftpd x86_64 3.0.5-5.el9 rhel-9-for-x86_64-appstream-rpms 172 k
トランザクションの概要
================================================================================
インストール 1 パッケージ
ダウンロードサイズの合計: 172 k
インストール後のサイズ: 347 k
これでよろしいですか? [y/N]: y
:
省略
:
インストール済み:
vsftpd-3.0.5-5.el9.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
36c36
< #dirmessage_enable=YES
---
> dirmessage_enable=YES
100c100
< chroot_local_user=YES
---
> #chroot_local_user=YES
127,148d126
<
< allow_writeable_chroot=YES
< anon_root=/var/ftp
< use_localtime=YES
< force_dot_files=YES
< reverse_lookup_enable=NO
<
< pasv_enable=YES
< pasv_min_port=20000
< pasv_max_port=20200
<
< #ssl_enable=YES
< #ssl_tlsv1_2=YES
< #ssl_tlsv1_1=YES
< #ssl_tlsv1=NO
< #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を使いませんでしたが、今回はユーザがディレクトリを迷わないようにするためのものなので、利便性の向上ですね。
また、パッシブポートを20000~20200番に制限しています。これでファイヤーウォールの穴をあけることができます。
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; preset: d>
Active: active (running) since Wed 2024-02-07 11:55:26 JST; 2s ago
Process: 2497 ExecStart=/usr/sbin/vsftpd /etc/vsftpd/vsftpd.conf (code=exit>
Main PID: 2498 (vsftpd)
Tasks: 1 (limit: 23114)
Memory: 712.0K
CPU: 3ms
CGroup: /system.slice/vsftpd.service
mq2498 /usr/sbin/vsftpd /etc/vsftpd/vsftpd.conf
2月 07 11:55:26 ace.zeke.ne.jp systemd[1]: Starting Vsftpd ftp daemon...
2月 07 11:55:26 ace.zeke.ne.jp systemd[1]: Started Vsftpd ftp daemon.
[root@ace ~]#
いつものように自動起動の設定とサーバの起動を行います。
ちゃんと上がっているようですね。
[root@ace ~]# cd /var/ftp/pub/
[root@ace ftp]# ls -l
合計 0
drwxr-xr-x 2 root root 6 5月 9 2023 pub
[root@ace ftp]# scp -pr ns.zeke.ne.jp:/home/ftp/pub .
:
省略
:
[root@ace ftp]#
現行のftpサーバからデータを移行しておきます。
動作確認。ちゃんと動いてるかな。
WindowsのWinSCPを使って、一般ユーザと匿名ユーザでログインできることを確認。一般ユーザはファイルを書き込めること、匿名ユーザはファイルを書き込めないことを確認しておきました。
Firewallの穴あけ
[root@ace ~]# firewall-cmd --zone=public --permanent --add-service=ftp
success
[root@ace ~]# firewall-cmd --zone=public --permanent --add-port=20/tcp
success
[root@ace ~]# firewall-cmd --zone=public --permanent --add-port=20000-20200/tcp
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 ssh
ports: 5500-5501/tcp 20/tcp 20000-20200/tcp
protocols:
forward: yes
masquerade: no
forward-ports:
source-ports:
icmp-blocks:
rich rules:
[root@ace ~]#
ftpサービスとしてfirewalldに設定すると、制御ポート(21番)だけでなく、データ転送ポート(任意の番号)も通信内容を覗き見て適当に開けてくれます。
データ転送用ポート20番、パッシブモードの時の20000-20200番ポートも開けています。
ftpでの暗号化通信は証明書がまだないので保留にして、ファイル転送はsshdによるsftpにすることにしました。
ルータの設定を行っていないので、まだインターネットからはアクセスできませんが、とりあえず設定完了です。
お勧めのKindle本です!
コメント