風柳メモ

ソフトウェア・プログラミング関連の覚書が中心

FTPプロキシを立てようとして、はまる

特定の場所[A](グローバルIPアドレスで判断)からのFTP要求しか受け付けないようになっているFTPサーバ[B]に、別の場所[C]からアクセスする必要ができてきたので*1、[A]にあるサーバ上にFTPプロキシを立てることでなんとかしようとしたのだけれど(Squidをその目的で使用)、なにか検索してみてもいまいちこれ、という設定が見つからない気がする。
探し方が悪いのか、常識過ぎてだれも書かないのか……。
/etc/squid.conf がデフォルトのままではやはり動作しなかったので、次のような箇所を追加変更。
とりあえずは動作しているのだけれど、これが果たして妥当なのかどうか自信が持てない。

FTP over TLS/SSL のための設定

acl SSL_ports port 989 # ftps (ftp protocol, data, over TLS/SSL)
acl SSL_ports port 990 # ftps (ftp protocol, control, over TLS/SSL)

acl Safe_ports port 989         # ftps data
acl Safe_ports port 990         # ftps control

の設定をそれぞれ追加。


とりあえず、これらは後の

# Deny requests to certain unsafe ports
http_access deny !Safe_ports

とか

# Deny CONNECT to other than secure SSL ports
http_access deny CONNECT !SSL_ports

で効いてくれればいいなと。
ftpsのポート番号間違っていたので修正、っていうか993ってIMAP over SSLじゃないか、なにを思って書いてたんだ…。

パッシブ FTP のための設定

acl FTP_ports port 21 # ftp
acl FTP_ports port 1024-65535 # port range for passive ftp

を追加しておいて、

# Deny CONNECT to other than secure SSL ports
http_access deny CONNECT !SSL_ports

の直前に、

http_access allow CONNECT FTP_ports

を追加。
パッシブモードのポート範囲の制限はFTPサーバ(上記だと[B])側だよねぇ…

追記

上記は、Squid Web Proxy 3.1.10 の話ね、念のため。
そういえば、これの squid.conf には

acl Safe_ports port 1025-65535 # unregistered ports

ってあるけれど、TCPやUDPにおけるポート番号の一覧 - Wikipediaとかで見ると、

ウェルノウンポート番号
(well known port numbers)
0–1023
登録済みポート番号
(registered port numbers)
1024-49151
自由に利用できるポート番号
(動的あるいはプライベートポート番号、dynamic/private port numbers)
49152-65535

ってなっているね。
手元の

UNIXネットワークプログラミング〈Vol.1〉ネットワークAPI:ソケットとXTI

UNIXネットワークプログラミング〈Vol.1〉ネットワークAPI:ソケットとXTI

  • 作者: W.リチャードスティーヴンス,W.Richard Stevens,篠田陽一
  • 出版社/メーカー: ピアソンエデュケーション
  • 発売日: 1999/07
  • メディア: 単行本
  • 購入: 8人 クリック: 151回
  • この商品を含むブログ (37件) を見る
の42ページ辺りから由来も含めて書かれていた。

*1:ちなみに[B]の設定は変えることができない制限あり。