FreeBSD 8.4 RELEASE - FTP - IP アドレス制限
- 1. 概要
- 2. tcpserver のインストール
- 3. 許可アドレスの記述
- 4. ブートスクリプトの編集
1. 概要
「rc.conf の編集」のみで起動した場合、どこからでも FTP サーバにアクセスできてしまいます。
FTP サーバを inetd 経由で起動する場合は、/etc/hosts.allow を編集することでアクセスできる IP アドレスの制限をかけられますが、inetd 経由で起動する場合は、/etc/hosts.allow では IP アドレスの制限はかけられません。
ここでは tcpsever というツールを使用して、IP アドレス制限をかける方法を紹介します。
2. tcpserver のインストール
tcpsever は ucspi-tcp という ports をインストールします。
tcpsever のインストールが終わったら、FTP 専用で動作させて他のソフトウェアと名前がユニークになるようにするために、シンボリックリンクを作成しておきます。
> ln -s /usr/local/bin/tcpserver /usr/local/bin/tcpserver_ftp
3. 許可アドレスの記述
FTP での接続は基本を拒否にして、許可アドレスを列挙する形式にします。
/etc/ ディレクトリに、/etc/tcp.ftp というファイルを作って次のように編集します。あなたのグローバルネットワークアドレスを仮に xxx.yyy.zzz.0/29 とします。
127.:allow
xxx.yyy.zzz.0-8:allow
#
:deny
127. は、ループバックアドレス(127.0.0.1)です。
xxx.yyy.zzz.0-8 は許可する IP アドレスの記述です。
# ではじまる行は、コメント行です。
最後の :deny はデフォルトルールで、allow で記述したもの以外は拒否する仕組みです。
/etc/tcp.ftp の編集が終わったら、次のコマンドでデータベースを作成します。
> tcprules /etc/tcp.ftp.cdb /etc/tcp.ftp.tmp < /etc/tcp.ftp
4. ブートスクリプトの編集
tcpsever 経由で FTP サーバを起動するには、ブートスクリプトを編集しなければなりません。
ブートスクリプトは /etc/rc.d/ftpd です。
デフォルトで以下のように記述されています。
#!/bin/sh
・・・
. /etc/rc.subr
name="ftpd"
rcvar=`set_rcvar`
command="/usr/libexec/${name}"
pidfile="/var/run/${name}.pid"
start_precmd=ftpd_prestart
ftpd_prestart()
{
rc_flags="-D ${rc_flags}"
return 0
}
load_rc_config $name
run_rc_command "$1"
これを以下のように編集します。編集を行う前に /etc/rc.d/ftpd stop で忘れずに FTP サーバを停止しておいてください。
#!/bin/sh
・・・
. /etc/rc.subr
name="ftpd"
ftpd_enable=${ftpd_enable:-"NO"}
procname="/usr/local/bin/tcpserver_ftp"
start_cmd="ftpd_start"
ftpd_start()
{
echo "Starting ${name}."
/usr/local/bin/tcpserver_ftp -x /etc/tcp/tcp.ftp.cdb 0 \
ftp /usr/libexec/ftpd -ld 2>&1 &
}
load_rc_config $name
run_rc_command "$1"
これで、/etc/rc.d/ftpd start で FTP サーバを起動すれば、IP アドレスの制限がかかります。
|
|