Ubuntu FTP サーバー

参考リンク: <http://www.krizna.com/ubuntu/setup-ftp-server-on-ubuntu-14-04-vsftpd/>

FTP は、TCP ネットワーク上であるホストから別のホストへファイルを転送するために使われます。この記事では、Ubuntu 14.04 で FTP サーバーをセットアップする方法を説明します。

よく使われる FTP サーバーパッケージには、Pure-FTPd、vsftpd、ProFTPD の 3 つがあります。このガイドでは、軽量で攻撃対象領域が小さい vsftpd を使用します。

Ubuntu 14.04 に FTP サーバーをセットアップする

Step 1: リポジトリを更新します。

sudo apt-get update

Step 2: vsftpd パッケージをインストールします。

sudo apt-get install vsftpd

Step 3: /etc/vsftpd.conf を開き、次の変更を行います。

次の行のコメントを解除します。

write_enable=YES
local_umask=022

ユーザーが自分のホームディレクトリ外のフォルダーへアクセスできないようにするため、次の行のコメントを解除します。

chroot_local_user=YES

ファイルの末尾に次の行を追加します。

allow_writeable_chroot=YES

パッシブモードを有効にするため、次の行を追加します。

pasv_enable=Yes
pasv_min_port=40000
pasv_max_port=40100

Step 4: vsftpd サービスを再起動します。

sudo service vsftpd restart

Step 5: FTP サーバーはポート 21 で待ち受けるようになります。次のコマンドでユーザーを作成します。FTP ユーザーが通常のシェルセッションへアクセスできないように、/usr/sbin/nologin シェルを使用します。

sudo useradd -m john -s /usr/sbin/nologin
sudo passwd john

Step 6: nologin シェルでのログインアクセスを許可します。/etc/shells を開き、末尾に次の行を追加します。

/usr/sbin/nologin

次に、WinSCP または FileZilla クライアントを使って、このユーザー名でポート 21 の FTP サーバーに接続してみます。ユーザーがホームディレクトリ外のフォルダーにアクセスできないことを確認してください。

%%LAZYBLOG_INLINE_0%%

ポート 21 の通常の FTP を使うことは、大きなセキュリティリスクになります。代わりに SFTP を使うことを強く推奨します。SFTP の設定については以下に続きます。

Secure FTP (SFTP)

SFTP は一般に「Secure FTP」と呼ばれ、SSH File Transfer Protocol を使用します。openssh-server パッケージが必要です。まだインストールされていない場合は、次のようにインストールします。

sudo apt-get install openssh-server

Step 7: FTP ユーザー用に ftpaccess という新しいグループを作成します。

sudo groupadd ftpaccess

Step 8: /etc/ssh/sshd_config を編集します。

次の行を探してコメントアウトします。

Subsystem sftp /usr/lib/openssh/sftp-server

ファイルの末尾に次の行を追加します。

Subsystem sftp internal-sftp
Match group ftpaccess
ChrootDirectory %h
X11Forwarding no
AllowTcpForwarding no
ForceCommand internal-sftp

Step 9: SSH サービスを再起動します。

sudo service ssh restart

Step 10: SFTP アクセス用のユーザーを作成するときは、次の手順に従います。

ftpaccess グループと /usr/sbin/nologin シェルを指定して、ユーザー john を作成します。

sudo useradd -m john -g ftpaccess -s /usr/sbin/nologin
sudo passwd john

ホームディレクトリの所有者を変更します。

sudo chown root /home/john

ホームディレクトリ内に書き込み可能なフォルダーを作成し、そのフォルダーの所有者を変更します。

sudo mkdir /home/john/www
sudo chown john:ftpaccess /home/john/www

次に、ポート 22 の SFTP でサーバーに接続してみます。ユーザーが www ディレクトリへファイルをアップロードでき、ホームディレクトリ外のフォルダーにはアクセスできないことを確認してください。

%%LAZYBLOG_INLINE_0%%

FTP と SFTP の両方を併用したい場合は、ユーザー作成時に Step 10 に従ってください。既存ユーザーについては、ftpaccess グループへ移動し、正しい所有権でフォルダー構造を作成します。

sudo usermod john -g ftpaccess -s /usr/sbin/nologin
sudo chown root /home/john
sudo mkdir /home/john/www
sudo chown john:ftpaccess /home/john/www

これで john は、FTP と SFTP の両方を使って www フォルダーへファイルをアップロードできます。

Leave a Reply