Linux の iptables でパッシブ FTP を許可する ( passive )




passiveFTPを単純なパケットフィルタで許可しようとすると、
次のようなパケットフィルタルールを設定する必要がある。

FTP( File Transfer Protocol )のモードの違い

「from クライアント:1024〜65535 to FTPサーバ:21」を許可
「from クライアント:1024〜65535 to FTPサーバ:1024〜65535」を許可

これでは、パケットフィルタを設定する意味があまりない。

そこで、LinuxでFTPの通信の関連性を把握できるように設定して、
最小限の許可設定でpassiveFTPを許可できるように設定する。

LinuxのiptablesでpassiveFTPを許可する設定は次の通り

1.必要なモジュール(ip_conntrack_ftp)のインストール

# modprobe ip_conntrack_ftp
ip_conntrackがいっしょにインストールされる

インストールされているモジュールを確認する

# lsmod

ちなみに、インストールされているモジュールを削除するには、

# rmmod ip_conntrack_ftp

2.iptablesの設定

# iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
# iptables -A INPUT -p tcp --dport 21 -d [サーバのIPアドレス] -j ACCEPT
「ip_conntrack_ftp」によってステートフルインスペクションが可能になり、
「RELATED」でpassiveFTPを許可できる。
ちなみに、「ESTABLISHED」は、TCPの返りの通信を許可するための設定(今回とは無関係)。

<設定の保存・反映>
service iptables save
service iptables stop
service iptables start