2021-04-08

vsFTPD で特定ユーザーのみ接続を許可する

2021年に同ドメインで運営していたブログに書いていた記事の転載です

管理者は SFTP で接続し、FTP で接続できるユーザーを制限したい、という要件を満たすための設定メモ。

環境

  • さくらVPS
  • CentOS 7.6

設定するファイル

  • /etc/vsftpd/vsftpd.conf
  • /etc/vsftpd/user_list

手順

SSH でログインして、root ユーザーで作業した(当時の環境での手順のため、現在は sudo を使った作業を推奨)。

まず vsftpd がインストール済みか確認する。
インストールされていない場合は何も表示されない。

rpm -qa vsftpd

vsftpd の設定ファイルにある userlist_deny の値を変更することで、user_list に書かれたユーザー一覧を「接続許可リスト」として使うか「接続禁止リスト」として使うかを指定できる。なお、この機能を有効にするには userlist_enable=YES(デフォルトで有効)が前提となる。

今回は許可リストとして使いたいので、userlist_deny=NO に変更する。

# バックアップを取る
cp /etc/vsftpd/vsftpd.conf /etc/vsftpd/vsftpd.conf.20210407
vim /etc/vsftpd/vsftpd.conf

vsftpd.conf 内の該当箇所:

# YES(デフォルト)にすると、user_list に書かれたユーザーが接続禁止になる
# userlist_deny=YES

# NO にすると、user_list に書かれたユーザーが接続許可リストになる(今回はこちら)
userlist_deny=NO

次に user_list を編集する。許可リストとして使うので、接続を許可したいユーザー名だけを残す。

cp /etc/vsftpd/user_list /etc/vsftpd/user_list.20210407
vim /etc/vsftpd/user_list

デフォルトで root などが書かれているので、それらをすべてコメントアウトし、許可したいユーザー名を追記する。

編集後、vsftpd を再起動して設定を反映する。

systemctl restart vsftpd