FTPサーバのセキュリティ
Linux LPIC編。(第13 章 システムセキュリティ)
ではFTP。FTPサーバには、wu-ftpd、ProFTPD、vsftpd、Pure-FTPDなどがある。
ProFTPDの設定ファイルはproftpd.conf。書式はhttpd.confに似ている。
アクセス制御を行うLimitディレクティブの例を書いておく。
#すべてのIPアドレスからログインを許可
<Limit LOGIN>
Order Deny,Allow
Allow from all
</Limit>
#読取りは許可し、書込みは禁止する例
<Limit READ>
AllowAll
</Limit>
<Limit STOR>
DenyAll
</Limit>
Limitディレクティブで利用するFTPコマンドやコマンドグループは以下の通り。
FTPコマンド
RETR サーバからクライアントへのファイル転送
STOR クライアントからサーバへのファイル転送
REN ファイル名変更
DELE ファイル削除
RMD ディレクトリ削除
SITE_CHMOD パーミッション変更
FTPコマンドグループ
DIRS ファイル名一覧取得
READ ファイルの読み込み
WRITE ファイル・ディレクトリの作成、削除
ALL すべてのFTPコマンド
LOGIN ログイン
次にFTPサーバのアクセス制御。FTPログインを許可しないユーザを指定するには、
/etc/ftpusersにユーザ名を記述する。
ログインを許可したユーザであっても、セキュリティ上、ディレクトリの移動の制限
をする必要があるので、chroot機能を使うとよい。次のように設定すると、ユーザの
ホームディレクトリ以下のみ移動可能となり、他の場所へは移動できない。
ProFTPD(proftpd.conf)
DefaultChdir ~
vsftpd(vsftpd.conf)
chroot_local_users = YES
Pure-FTPD(pure-ftpd.conf)
ChrootEverone yes ←すべてのユーザにchrootを適用する
Pure-FTPDでは設定ファイルを使わずに、起動時にオプションを使って動作を指定する
こともできる。詳細は割愛。。
一部のユーザのみchrootの対象とすることも可能。でもこれも割愛して次へ。
(FTPサーバの詳細な設定については問われないそうなので・・・)
パッシブモード
FTPの基本であるが、この機会におさらい。
FTPはデータ転送に20番、制御に21番と、2つのポートを使用する。FTPのデータ転送は、
通常と違いサーバ側からクライアント側へ接続を要求する(アクティブモード)。
この時クライアント側がファイヤーウォールの内側にあると、サーバ側から接続できない
ことがある。FTPサーバをパッシブモードで動かせば、これを回避できる。これにより、
クライアント側からサーバ側へ接続を要求する。以下、パッシブモードの設定例。
ProFTPD(proftpd.conf)
MasqueradeAddress 10.2.3.4 ←WAN側のIPアドレス又はドメイン名
PassivePorts 52000 52020 ←利用するポート番号の範囲
vsftpd(vsftpd.conf)
pasv_enable=YES
Pure-FTPD(pure-ftpd.conf)
PassivePortRange 30000 50000
余談だが、クライアント側でファイヤーウォールの設定をする際当然該当FTPサーバ
からの接続は受け付けるようにするわけだが、パケットとデータの両方を通すように
しておかないと、正常な通信ができない。
(いや、昔、セッションは成立してるのにデータが受信できない、何故だ、という事例が
あったような、なかったような気がしたので・・・)
匿名FTPサーバ
匿名(anonymous)FTPサービスを利用する際の設定。
ProFTPDの場合はproftpd.conf内の、Anonymousディレクティブで設定できる。
vsftpdの場合は、vsftpd.conf内で anonymous_enable=YES とする。
wu-ftpdでは、ひと言でいうと、/home/ftpなどのディレクトリを作成しFTPサービスに
必要なディレクトリやファイルをコピーした上で、chrootする。
FTPはここまで。次回はセキュリティの要、OpenSSHへ。
出典
Linux教科書LPICレベル2(翔泳社)
Linux記事一覧はこちらをどうぞ
↓ ↓ ↓
Linux-index