FTPプロキシサーバ(http://www.ftpproxy.org/)を立てる方法。
接続許可されているIP以外から接続したいとき、許可されているサーバにプロキシサーバを立てて通信を中継してもらうこともできる。
1.ftp.proxyにxinetd経由でアクセスしてもらうために、/etc/xinetd.dに設定ファイルを作成する。
# vi /etc/xinetd.d/ftpproxy
service ftp
{
disable = no
socket_type = stream
wait = no
user = nobody
server = /usr/local/sbin/ftp.proxy
server_args = -b -e -m
cps = 5000 1
per_source = 1000
instances = 1000
}
server_argsに設定する-b -e -m
の意味
option | 意味 |
---|---|
-b | ファイル名にスペースを許可する。 これを指定しないと、get "file name with space"のようにスペースのあるファイル名をダブルクオーテーションで囲ってコマンドを発行したとしても、目的のサーバにはエスケープされて発行されない。 |
-e | クライアントサイドで、接続先サーバを選べるようにする。 |
-m | どのディレクトリに移動しているか、ログに記録する。 |
xinetdでアクセスを制御しているので、xinetdの設定を一部オーバーライドする。
参照:https://www.express.nec.co.jp/linux/distributions/knowledge/network/xinetd.html
設定 | 意味 |
---|---|
per_source | 同じクライアントからの接続数を制限するために、数値(整数)または、UNLIMITEDを指定します。 |
instances | 同時に動作可能なサービスの最大数を数値で指定します。UNLIMITED を指定すると、制限なしとなります。 |
cps | 毎秒ごとに可能な接続数の上限を設定します。最初の引数は、1秒あたりに処理可能なコネクション数を、後の引数は、サービス利用不能となってから、再び利用可能になるまでの時間(秒)を指定します。 例えば、cps = 10 60 の場合、1秒間の接続数が10を超えると、一度サービスが停止し、60秒後に再開されます。 |
only_from | サービスにアクセス可能なホストを指定します。以下のいずれかの方法で指定が可能です。 |
no_access | サービスへのアクセスを許可しないホストを指定します。only_from の場合と同じ方法で指定することが可能です。 |
2.xinetdを再起動する。
# service xinetd restart
3.ログの設定
# vi /etc/rsyslog.conf
ftp.* /var/log/ftpproxy.log
4.rsyslogを再起動する。
# service rsyslog restart
設定は以上で終了。
接続情報は、次の形式で指定すれば、ftp.proxyを通して、目的のサーバに接続できるようになる。
項目 | 設定値 |
---|---|
IPアドレス | ftp.proxyサーバのあるIPアドレス |
ユーザ名 | 接続したいFTPサーバの「ユーザ名@IPアドレス」 |
パスワード | 接続したいFTPサーバのパスワード |