LinuxでのFTPサーバー構築と実践的な操作

1. ファイル転送プロトコルの基礎知識
FTP(File Transfer Protocol)はアプリケーション層で動作するプロトコルで、主に以下の実装が存在します:
  • サーバーソフトウェア:vsftpd, Pure-FTPd, FileZilla Server
  • クライアントソフトウェア:ftpコマンド, lftp
データ転送モード:
  • ASCIIモード:テキストファイル用
  • バイナリモード:すべてのファイルタイプに対応
接続構造:
  • コントロール接続:コマンド送信用
  • データ接続:ファイル転送用
動作モード:
  • アクティブモード(PORT):サーバーが特定ポートで待ち受け
  • パッシブモード(PASV):クライアントが接続先を指定
パッシブモードが推奨される理由:ファイアウォール設定により高番ポートが制限されるケースに対応するため
2. vsftpdインストール手順
  1. iptables停止:systemctl stop firewalld
  2. SELinux無効化:setenforce 0
  3. インストール確認:rpm -q vsftpd
  4. インストール実行:yum install -y vsftpd
  5. サービス自動起動設定:systemctl enable vsftpd
  6. サービス起動:systemctl start vsftpd
3. 設定ファイル構成
基本設定:

# 書き込み権限のグローバル設定
write_enable=YES
匿名ユーザー設定:

anonymous_enable=YES
ftp_username=ftp
no_anon_password=YES
anon_world_readable_only=YES
anon_upload_enable=YES
anon_mkdir_write_enable=YES
ファイル所有者設定:

# アップロードファイルの所有者変更
chown_uploads=YES
chown_username=test
4. アクセス制御
TCP Wrapper利用:

# /etc/hosts.allow設定例
vsftpd:192.168.121.0/255.255.255.0 :allow
all:all:deny
ユーザー制限:
  • 禁止ユーザー一覧:/etc/vsftpd/ftpusers
  • アクセス制御リスト:/etc/vsftpd/user_list
5. ローカルユーザー設定

# ローカルユーザー認証有効化
local_enable=YES
local_mask=022
6. セキュリティ強化
ホームディレクトリ制限:

# ユーザーのホームディレクトリに制限
chroot_local_user=YES
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd/chroot_list
7. ロギング設定

# 転送ログ記録
xferlog_enable=YES
xferlog_std_format=YES
xferlog_file=/var/log/xferlog
8. 実践的設定例
要件:
  • 匿名アクセス禁止
  • 特定ローカルユーザーのみアクセス可
  • ホームディレクトリ制限
  • PASVモード使用
実装手順:
  1. 設定ファイル変更:
    
    anonymous_enable=NO
    pasv_enable=YES
    pasv_min_port=10000
    pasv_max_port=11000
    userlist_deny=NO
    chroot_local_user=YES
    
  2. ユーザー作成:
    
    useradd -d /tmp/zxy zxy
    passwd zxy
    
  3. アクセスリスト更新:
    
    echo "zxy" > /etc/vsftpd/user_list
    
  4. サービス再起動:
    
    systemctl restart vsftpd
    

タグ: vsftpd Linuxネットワーク FTPサーバー アクセス制御 ユーザー管理

5月27日 20:53 投稿