vsftpdの記事一覧

vsftpd FTPサーバー構築

今回は以下のようなポリシーでFTPサーバー(vsftpd)を構築します。

  • 匿名ユーザー(annonymous)でのログインを拒否する
  • パッシブモードでの転送を許可する
  • rootでのログインを拒否する
  • 自身のホームディレクトリより上層へはアクセスを禁止する
  • ただし、ftpadminユーザーのみホームディレクトリより上層へのアクセスを許可する

vsftpd.confの編集

上記のポリシーを満たすようにvsftpd.confを編集します。

# vi /etc/vsftpd/vsftpd.conf
anonymous_enable=NO
local_enable=YES
write_enable=YES
local_umask=022
anon_upload_enable=NO
dirmessage_enable=YES
xferlog_enable=YES
connect_from_port_20=YES
xferlog_std_format=YES
chroot_local_user=YES
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd/chroot_list
listen=YES
pam_service_name=vsftpd
userlist_enable=YES
userlist_deny=YES
userlist_file=/etc/vsftpd/user_list
tcp_wrappers=YES
use_localtime=YES
pasv_enable=YES
pasv_min_port=0
pasv_max_port=0

まず、デフォルトでは、匿名ユーザー(anonymous)でのログインが許可されていますのでこれを禁止します。

anonymous_enable=NO
anon_upload_enable=NO

ホームディレクトリより上層へのアクセスを禁止するかどうかを指定します。

chroot_local_user=YES
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd/chroot_list

「chroot_local_user」をYESにするとホームディレクトリより上層へのアクセスが禁止されます。ただし、「chroot_list_enable」をYESにすることでホームディレクトリより上層へのアクセスを許可するユーザーのリストが有効となります。それにより、「chroot_list_file」に記述したユーザーのみ上層へのアクセスが許可されます。

FTPでログインできるユーザーを指定します。

userlist_enable=YES
userlist_deny=YES
userlist_file=/etc/vsftpd/user_list

「userlist_enable」をYESにするとユーザーリストを使用しアクセスできるユーザーを制限することができるようになります。ユーザーリストのパスは「userlist_file」で指定します。
「userlist_deny」をYESにした場合、ユーザーリストはアクセスを拒絶するユーザーのリストになります。逆にNOにした場合、ユーザーリストはアクセスを許可するユーザーのリストになります。

パッシブモードでの転送を許可します。また、パッシブモードでの接続時に使用するポート番号の最小値と最大値を指定します。

pasv_enable=YES
pasv_min_port=0
pasv_max_port=0

「pasv_min_port」「pasv_max_port」に0を指定すれば、1024~65535番のうちのポート番号がランダムで使用されるようになります。

FTP用ユーザー作成

FTP用のOSユーザーを作成します。ここでは「ftpuser」と「ftpadmin」を作成します。

# useradd ftpuser
# passwd ftpuser
Changing password for user ftpuser.
New password:
Retype new password:
passwd: all authentication tokens updated successfully.
# useradd ftpadmin
# passwd ftpadmin
Changing password for user ftpadmin.
New password:
Retype new password:
passwd: all authentication tokens updated successfully.

chrootしないユーザーリスト作成

ホームディレクトリより上層へのアクセスを許可するユーザーリストを作成します。

# vi /etc/vsftpd/chroot_list
ftpadmin

ここではftpadminユーザーのみ許可するため、上記1行を記述します。

vsftpd.confの設定反映

ここまで行った設定を反映させるためにvsftpdを再起動します。

# service vsftpd restart

ファイル受信ディレクトリ作成

ファイルを受信するディレクトリを作成します。ftpuserユーザーはホームディレクトリ配下へしかアクセスできないため、その下の階層に作成します。

# cd /home/ftpuser/
# mkdir upload
# chown ftpuser:ftpuser ./upload/
# chmod 700 ./upload/

FTPクライアントからのファイル送信

FTPサーバーに対してファイルを送信してみましょう。今回もWindows標準のFTP機能を使用して、ファイル送信の確認をします。

Windows標準のFTP機能はコマンドプロンプトから使用します。
(コマンドプロンプトの起動は画面左下のWindowsマークをクリックし「プログラムとファイル検索」欄に「cmd」と入力し、Enterキーを押下します。)

まずは送信するテスト用ファイルを作成します。

> type nul > testfile03

続いてFTPサーバーにログインします。今回はftpuserでログインします。

> ftp 172.16.0.10
172.16.0.10 に接続しました。
220 (vsFTPd 2.2.2)
ユーザー (172.16.0.10:(none)): ftpuser
331 Please specify the password.
パスワード:
230 Login successful.

putコマンドでファイルを送信します。その際のパス指定ですが、ftpuserは「/home/ftpuser」ディレクトリが「/」になります。そのため先ほど作成したuploadディレクトリへ送信するには「/upload/>送信ファイル名<」というパス指定になります。

ftp>  put "C:\Users\user\testfile03" /upload/testfile03
200 PORT command successful. Consider using PASV.
150 Ok to send data.
226 Transfer complete.
ftp> 
ftp>  bye
221 Goodbye.

今度はftpadminユーザーでログインしてみます。

> ftp 172.16.0.10
172.16.0.10 に接続しました。
220 (vsFTPd 2.2.2)
ユーザー (172.16.0.10:(none)): ftpadmin
331 Please specify the password.
パスワード:
230 Login successful.

ログイン直後のカレントディレクトリをpwdコマンドで確認してみます。

ftp> pwd
257 "/home/ftpadmin"

ホームディレクトリより上層へのアクセスを許可しているftpadminユーザーでログインした場合は、OS上のパスと一致していることが確認できます。

2016年02月03日(水)|vsftpd FTPサーバー構築

vsftpdのインストール

vsftpdのインストール方法について見ていきます。

今回はyumを使用して、vsftpdをインストールします。

# yum install vsftpd
Loaded plugins: fastestmirror, refresh-packagekit, security
Loading mirror speeds from cached hostfile
 * base: ftp.riken.jp
 * extras: ftp.riken.jp
 * updates: ftp.riken.jp
base                                                     | 3.7 kB     00:00
extras                                                   | 3.4 kB     00:00
updates                                                  | 3.4 kB     00:00
Setting up Install Process
Resolving Dependencies
--> Running transaction check
---> Package vsftpd.i686 0:2.2.2-14.el6 will be installed
--> Finished Dependency Resolution

Dependencies Resolved

================================================================================
 Package          Arch           Version                   Repository      Size
================================================================================
Installing:
 vsftpd           i686           2.2.2-14.el6              base           157 k

Transaction Summary
================================================================================
Install       1 Package(s)

Total download size: 157 k
Installed size: 344 k
Is this ok [y/N]: y
Downloading Packages:
vsftpd-2.2.2-14.el6.i686.rpm                             | 157 kB     00:00
Running rpm_check_debug
Running Transaction Test
Transaction Test Succeeded

 ~ 省略 ~

Installed:
  vsftpd.i686 0:2.2.2-14.el6

Complete!

「Is this ok [y/N]:」というプロンプトが出力されたら「y」を入力してEnterキーを押下すればインストールが始まります。(なお、yumコマンドに-yオプションをつけると、y/Nを入力しなくても済みます。)

「Complete!」が出力されれば、無事インストール完了です。

自動起動の設定

vsftpd(FTPサーバー)を常時稼動させておく場合は、自動起動の設定を行います。以下コマンドを実行することで、OS起動と同時にvsftpdも起動するようになります。

# chkconfig vsftpd on

以上で自動起動するように設定されたため、CentOSを再起動しても、OS起動とともにvsftpdが起動されるようになります。

2016年01月16日(土)|vsftpd FTPサーバー構築

サイト内検索

カテゴリー

  • Apache2.2構築
  • BIND DNSサーバー構築
  • Linux基礎知識
  • NTPサーバー構築
  • vsftpd FTPサーバー構築

サイト情報

  • 当サイトについて
  • 免責
  • お問い合わせフォーム
  1. CentOSサーバー構築入門
  2. vsftpdの記事一覧

CentOSサーバー構築入門

CentOSによるサーバー構築方法をわかりやすく解説しています。
  • 特定商取引法に基づく表示
  • 運営者情報
  • お問い合わせ
  • サイトマップ
  • twitter
  • facebook
  • Google +1
  • RSS
Copyright ©2025 CentOSサーバー構築入門 All Rights Reserved.

[↑]このページの先頭へ