第5章 ファイル転送プロトコル
ファイル転送プロトコル、 FTP は、 今日インターネット上で見られる、最も古く、一般的に使用されているプロトコルです。ユーザーはリモートホストに直接ログインする必要がなく、またリモートシステムの使い方を知らなくても、ネットワーク上の複数のコンピュータホスト間で確実にファイル転送を行なえるようにすることがその目的になります。FTP により、ユーザーはシンプルで標準的なコマンドセットを使用するだけでリモートシステム上のファイルにアクセスできるようになります。
Very Secure FTP Daemon (
vsftpd) は、高速で安定性があり、かつ何よりも高い安全性を確保するため、その土台から設計が行なわれています。多数の接続を効率的かつ安全に処理できる能力があることから、Red Hat Enterprise Linux に同梱されている唯一の独立型 FTP サーバーとなります。
Red Hat Enterprise Linux では、Very Secure FTP デーモンは vsftpd パッケージで提供されます。
rpm -q vsftpd を実行して vsftpd がインストールされているか確認します。
rpm -q vsftpd
$ rpm -q vsftpd
FTP サーバーを利用する方で vsftpd パッケージがインストールされていない場合には、 次のコマンドを root ユーザーで実行してインストールを行ないます。
yum install vsftpd
yum install vsftpd
5.1. FTP と SELinux リンクのコピーリンクがクリップボードにコピーされました!
リンクのコピーリンクがクリップボードにコピーされました!
FTP デーモンの
vsftpd はデフォルトで制限のあるサービスとして実行されます。vsftpd とファイル、 プロセスまたシステムとの交信方法は SELinux ポリシーで定義されます。たとえば、 認証ユーザーが FTP 経由でログインすると、そのユーザーは自分のホームディレクトリの読み取りや書き込みが行なえません。SELinux により、vsftpd によるユーザーのホームディレクトリへのアクセスはデフォルトで阻止されるためです。また、vsftpd には NFS や CIFS ファイルシステムへのアクセスもデフォルトではありません。 このため、/etc/vsftpd/vsftpd.conf 内で書き込みアクセスが設定されていても、anonymous ユーザーには書き込みアクセスが与えられません。Boolean をオンにすると、こうしたアクセスを許可することができるようになります。
認証ユーザーがログインして、自分のホームディレクトリを表示させようとすると SeLinux 拒否になる例を以下に示します。
rpm -q ftpを実行して ftp パッケージがインストールされているか確認します。 インストールされていない場合は root ユーザーでyum install ftpを実行しインストールを行ないます。rpm -q vsftpdを実行して vsftpd パッケージがインストールされているか確認します。 インストールされていない場合は root ユーザーでyum install vsftpdを実行しインストールを行ないます。- Red Hat Enterprise Linux では、
vsftpdはデフォルトでは anonymous ユーザーによるログインしか許可していません。認証ユーザーによるログインを許可するため、root で/etc/vsftpd/vsftpd.confを編集します。local_enable=YESオプションを必ずコメントアウトしてください。Uncomment this to allow local users to log in.
# Uncomment this to allow local users to log in. local_enable=YESCopy to Clipboard Copied! Toggle word wrap Toggle overflow - root ユーザーで
service vsftpd startを実行してvsftpdを起動します。vsftpd.confの編集前にこのサービスが実行中だった場合は、 root ユーザーでservice vsftpd restartを実行し設定の変更を適用します。service vsftpd start Starting vsftpd for vsftpd: [ OK ]
service vsftpd start Starting vsftpd for vsftpd: [ OK ]Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 現在ログインしているユーザーのまま
ftp localhostを実行します。 ユーザー名のプロンプトが表示されたら、 ログインしているユーザー名になっているか確認します。 ユーザー名が正しければ Enter を押します。 ユーザー名が違う場合は、 正しいユーザー名を入力します。Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 次のような SELinux 拒否がログ記録されます。
setroubleshoot: SELinux is preventing the ftp daemon from reading users home directories (username). For complete SELinux messages. run sealert -l c366e889-2553-4c16-b73f-92f36a1730ce
setroubleshoot: SELinux is preventing the ftp daemon from reading users home directories (username). For complete SELinux messages. run sealert -l c366e889-2553-4c16-b73f-92f36a1730ceCopy to Clipboard Copied! Toggle word wrap Toggle overflow - ホームディレクトリへのアクセスが SELinux により拒否されています。 これを解決するには、
ftp_home_dirBoolean を有効にします。 root ユーザーで次のコマンドを実行してftp_home_dirBoolean を有効にします。setsebool -P ftp_home_dir=1
# setsebool -P ftp_home_dir=1Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注記
再起動後、 変更を維持したくない場合は -P オプションを使用しないでください。もう一度ログインしてみます。 今度はftp_home_dirBoolean でホームディレクトリへのアクセスが許可され、 ログインに成功します。