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
設定を有効にするのが基本です。
# 匿名ログインを禁止する
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
に以下のルールを追記します。
# 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
Discussion