FTP
FTP (File Transfer Protocol) サーバソフトウェアの代表的なものには
- wu-ftpd
- ProFTPD
- vsftpd etc...
などがあり、CentOS では、vsftpd (Very Secure ftpd) が採用されている
vsftpd の設定
vsftpd の設定ファイル
- /etc/vsftpd/vsftpd.conf
基本的な書式
設定項目名=設定値
匿名FTP の有無
匿名FTP とは、サーバにアカウントがない場合でも、ユーザー名として anonymous, パスワードとして利用者のメールアドレスを使用すればログインできるFTPサーバのこと。アカウントのあるユーザーのみにFTPの利用を許可したい場合は「No」にする。
anonymous_enable=YES
ローカルユーザーのログイン許可
アカウントのあるローカルユーザのログインを許可するかどうかを指定
local_enable=YES
匿名FTP でのファイルのアップロード
匿名FTP でのファイルのアップロードを許可するかどうかを指定。匿名FTP は誰もが利用可能なため、悪用されないよう基本的には禁止しておくが無難。その場合設定値は「NO」、もしくはコメントアウト(デフォルトではコメントアウトされ無効化)
anon_upload_enable=YES
ログファイルへの記録
ファイルのアップロード/ダウンロードの情報をログファイルに記録する。
デフォルトのログファイルは /var/log/vsftpd.log
xferlog_enable=YES
TCP/Wrappers の利用
TCP Wrapper を使ったアクセス制御の有効/無効化
tcp_wrappers=YES
ユーザーが利用できるディレクトリを制限
デフォルトの設定では、一般ユーザーで FTPログインした場合、そのユーザーのホームディレクトリに移動する。cdサブコマンドを使ってシステム内のディレクトリツリーを自由に移動できてしまうため、セキュリティ上よろしくない。
各ユーザーのホームディレクトリより一切↑にはいかなようにする
ホームディレクトリ以外に移動できないように設定
chroot_local_user=YES
ユーザーのログインディレクトリを変更
ユーザーのホームディレクトリ内に、ディレクトリを作成しておき、FTPログイン時に ~/ディレクトリ名 にログインするようにするには下記の通り。
local_root=ftp # Apache Webサーバを利用してユーザのホームディレクトリを公開している場合など loclal_root=public_html
PASV モードの対応
FTP は基本的に、データ転送に20番ポート、制御用に21番ポートと、サーバ側で2つのポートを利用する。一般的に、クライアントとサーバ間で通信が行われる場合、クライアント側からサーバ側へ接続を要求する。FTP のデータ転送については、サーバ側からクライアント側へ接続を要求する。が、FTPのデータ転送については、サーバ側からクライアント側に接続できない事態が発生する恐れがあるlこのような場合、、FTPサーバを PASVモードを利用することで回避できる
PASVモードでは、FTPデータ転送についても、制御接続と同様 クライアント側からサーバへ接続を要求する。
PASVモードの有効化
pasv_enable=YES
vsftpd PASVモードを利用する
- /etc/vsftpd/vsftpd.conf
pasv_enable=YES
FTP クライアントコマンド
コマンドラインでFTPサーバに接続してファイルのアップロード/ダウンロードを行うには lftpd コマンドが利用できる
アカウントを省略すると、匿名ユーザーとして自動的にログインできる
lftpd ホスト名
lftpd サブコマンド
コマンド | 内容 |
---|---|
ls | ファイル名一覧を表示 |
cd | ディレクトリを移動 |
lcd | ローカルのディレクトリを移動 |
pwd | カレントディレクトリを表示 |
get FILENAME | 指定したファイルをダウンロード |
mget FILENAME | 指定したファイル(複数)をダウンロード |
put FILENAME | 指定したファイルをアップロード |
mput FILENAME | 指定したファイル(複数)をアップロード |
mirror DIR | 指定したディレクトリをミラーリングダウンロード |
user USERNAME | 匿名ユーザーでログイン中、指定したユーザーで入りなおす |
!COMMAND | ローカルでシェルコマンドを実行 |
quit | 接続を終了 |