3.4.1 wu-ftpdの設定

ftpdとしてwu-ftpdを使用している場合が多いでしょう。
Linux,FreeBSDといったOSのインストールを行い、ftpdを起動しなければならない場合に考えなければならない点がいくつかあります。

ftpdを動かす際、まずwu-ftpdのバージョンがいくつかを確認することから始まります。 特にwu-ftpdにおいては何度もセキュリティホールが発見され、その度毎に新しいバージョンが出されています。 もし、最新版でなければftpdを起動する前に最新版に入れ替えてください。
これは、ファイル転送を行うプロトコルであるがために、root権を奪われたり、 パスワードファイルを盗まれたり、 任意のプログラムを実行するということが可能なセキュリティホールが潜んでいる可能性があるためです。

現在発見されているセキュリティホールで致命的な部分がいくつかあります。
まず、SITE EXECのバグがないかどうかを確認します。これは、"2.2以前にあった問題です。SITE EXECコマンドを使用することによって、システムにある実行可能なプログラムやスクリプトを実行することができます。
よって、ftpdは最新にしなければならないのです。
使用しているftpdがwu-ftpdでなくても最新版に入れ替えるべきです。
たとえば、ProFTPD 1.2.0以前では、一つでも書きこみ可能なディレクトリが存在する場合に対象となるホストのroot権を取得することができる問題がありました。

(1) ディレクトリの権限

Anonymous FTPサーバを構築する場合、 まずFTPのホームディレクトリは書き込み不可にすべきです。 これ以下のディレクトリやファイルの権限をいくら注意深く設定しても、 ホームディレクトリの権限が間違っていると全て意味の無いものになります。

# chmod 555
# chown root
たとえば、これを行わないと、攻撃側から.rhostsを送り込まれるのです。
また、この他のディレクトリやファイルに対しても間違った権限が付与されていることがあります。
以下の表を参考にしてアクセス権限を設定してください。

表3.4.1-1 設定するアクセス権
ディレクトリ
アクセス権限
ユーザのアクセス権
ftp
ownerはroot
アクセス権は555
読み取りと実行
ftp/bin
ownerはroot
アクセス権は555
読み取りと実行
ftp/bin/ls
ftp/bin/date
ownerはroot
アクセス権は111
実行
ftp/etc
ownerはroot
アクセス権は555
読み取りと実行
ftp/etc/passwd
ownerはroot
アクセス権は444
読み取り
ftp/etc/group
ownerはroot
アクセス権は444
読み取り

(2) incomingディレクトリの削除

もし、古いバージョンのから最新にアップグレードを行い続けたサーバの場合、 incomingディレクトリが残っている場合があります。
このディレクトリは、ユーザがファイルを公開する際にputを行う場所でした。 しかし、これは誰でもput/getできるため、不正なファイルの交換に悪用されることがあります。
このディレクトリは削除し運用方法を見直すべきです。

% ls -l
total 4
dr-xr-xr-x 2 root operator 512 7/12 1999 bin
dr-xr-xr-x 2 root operator 512 7/12 1999 etc
drwxrwxrwt 2 root operator 512 4/17 2000 incoming
drwxr-xr-x 2 root operator 512 7/12 1999 pub

(3) tcp_wrapperの設定

もし、このFTPサーバが特定のネットワークのみを対象とする場合、 tcp_wrapperを利用し制限することができます。
たとえば、このFTPサーバをipa-sec.comからのみしか接続させない場合は、 /etc/hosts.allowを以下のように設定します。

ftpd : localhost : allow
ftpd : .ipa-sec.com : allow

wu-ftpdのftphostsファイルによって制御することもできますが、 メールで管理者への通知を行うようtcp_wrapperを設定している時などは、 tcp_wrapperで処理したほうが便利でしょう。
なお、tcp_wrapperで設定した場合であっても、念のためにftphostsには必要最小限度のの設定を書いておいてください。
ftphosts では、アカウント毎にアクセス制御を行います。
allowに続いてユーザ名とホスト名を記述し、該当するユーザが該当のホストからログインしてきたときのみログインを許可します。
たとえば、ユーザyamadaさんが、www.ipa-sec.comからログインしてきたときのみ許可する場合です。

allow yamada www.ipa-sec.com

(4) /etc/ftpaccessの設定

wu-ftpdでは、ftpaccessファイルによって、 セキュリティの設定を行うことができます。
特に注意するところは、ユーザからファイルをputする許可と、 パスワードチェックです。

Anymous FTPでは、ログイン時にユーザ名としてanonymousを使用し、 パスワードには慣例的にそのユーザのメールアドレスを用います。
このパスワードを出来る限り厳重にチェックすることが必要となります。
しかし、メールアドレスのチェックにも限度があるため、入力されたメールアドレスがRFC822のフォーマットに適合するかをチェックし、適合しない場合は接続を拒否します。 もちろん、このチェックからは有効なメールアドレスと考えられるものかを判断するのみとなっているため、他人のメールアドレスを使用した場合などは判断できません。

passwd-check rfc822 enforce

次に、anonymousユーザにおいてファイルのアップロードを禁止する必要があります。 これは、不正なファイルの交換を防ぐためです。
incomingディレクトリも削除するようにしてください。
デフォルトの設定では anonymous FTP ユーザにも incomingディレクトリにはファイルのアップロードができるようになっているため、allowの部分をnoに変更します。

upload /home/ftp * no
upload /home/ftp /pub/incoming no ftp daemon 0666 nodirs

   Copyright(C)  2001 Information-technology Promotion Agency, Japan.  All rights reserved.