📁

CentOSにvsftpdでFTPサーバーを構築した際の基本設定メモ

に公開

はじめに

Webサイトのファイルをアップロードするなど、今でもFTPサーバーが必要になる場面は時々ありますよね。

この記事では、自身のWikiに書き溜めていたメモを元に、CentOS系のLinuxディストリビューションに、定番のFTPサーバーソフトである**vsftpd (very secure FTP daemon)**をインストールし、基本的なセキュリティ設定を行うまでの手順をまとめます。

1. vsftpdのインストール

まずはyum (またはdnf) を使って、vsftpdをインストールします。

sudo yum install vsftpd

2. vsftpdの基本設定

インストールが完了したら、設定ファイル/etc/vsftpd/vsftpd.confを編集します。
セキュリティを考慮し、匿名でのログインを禁止し、ユーザーが自分のホームディレクトリより上に移動できないようにするchroot設定を有効にするのが基本です。

/etc/vsftpd/vsftpd.conf
# 匿名ログインを禁止する
anonymous_enable=NO

# ローカルユーザー(/etc/passwdに存在するユーザー)のログインを許可する
local_enable=YES

# ファイルのアップロードを許可する
write_enable=YES

# chrootを有効にし、全ユーザーをホームディレクトリに制限する
chroot_local_user=YES
# chrootを有効にした際に書き込みを許可するために必要
allow_writeable_chroot=YES

# アスキーモードでの転送を許可する
ascii_upload_enable=YES
ascii_download_enable=YES

# 日本時間を使用する
use_localtime=YES

# PASVモード用のポート範囲を指定
pasv_enable=YES
pasv_min_port=21000
pasv_max_port=21010

chroot_local_user=YESを設定すると、FTPでログインしたユーザーは、自身のホームディレクトリが最上位階層であるかのように見え、それより上の階層に移動できなくなります。

3. ファイアウォールの設定

FTPサーバーに外部から接続できるように、ファイアウォールの設定を変更します。FTPでは、制御用の21番ポートと、データ転送用のPASVポート範囲の両方を開ける必要があります。

firewalldの場合 (CentOS 7 / Rocky Linux 9など)

# FTPサービス(21番ポート)を許可
sudo firewall-cmd --add-service=ftp --permanent
# PASV用のポート範囲を許可
sudo firewall-cmd --add-port=21000-21010/tcp --permanent
# 設定をリロード
sudo firewall-cmd --reload

iptablesの場合 (CentOS 6など)

/etc/sysconfig/iptablesに以下のルールを追記します。

iptables
# FTP
-A INPUT -m state --state NEW -m tcp -p tcp --dport 21 -j ACCEPT
# PASV
-A INPUT -m state --state NEW -m tcp -p tcp --dport 21000:21010 -j ACCEPT

その後、iptablesを再起動します。

sudo service iptables restart

4. サービスの起動と自動起動設定

最後に、vsftpdサービスを起動し、OS起動時に自動で立ち上がるように設定します。

# vsftpdを起動
sudo systemctl start vsftpd

# OS起動時に自動起動するように設定
sudo systemctl enable vsftpd

おわりに

以上が、vsftpdを使った基本的なFTPサーバーの構築手順です。
特にchroot設定とファイアウォールの設定は、セキュリティ上非常に重要なので、忘れずに行うようにしましょう。


この記事で紹介した内容以外にも、技術情報をブログで発信しています。
MyNote
https://mynote.meantix.com/

Discussion