iptables は FTP 受信を許可します。

iptables は FTP 受信を許可します。

着信FTPトラフィックを許可したい。

CentOS 5.4:

これは私の/etc/sysconfig/iptablesファイルです。

# Generated by iptables-save v1.3.5 on Thu Oct  3 21:23:07 2013
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [133:14837]
-A INPUT -p tcp -m tcp --dport 21 -j ACCEPT
-A INPUT -p tcp -m state --state ESTABLISHED -j ACCEPT
-A INPUT -j REJECT --reject-with icmp-port-unreachable
-A OUTPUT -p tcp -m tcp --sport 20 -j ACCEPT
COMMIT
# Completed on Thu Oct  3 21:23:07 2013

また、デフォルトでは ip_conntrack_netbios_n モジュールがロードされます。

#service iptables restart

Flushing firewall rules:                                   [  OK  ]
Setting chains to policy ACCEPT: filter                    [  OK  ]
Unloading iptables modules:                                [  OK  ]
Applying iptables firewall rules:                          [  OK  ]
Loading additional iptables modules: ip_conntrack_netbios_n[  OK  ]

しかし、このモジュールを削除しようとしましたが、まだ成功していないため、問題はこのモジュールにはありません。

iptablesを無効にすると、バックアップを別のコンピュータからFTPに転送できます。 iptablesが強制されると、転送は失敗します。

答え1

FTPサーバーにはデータを転送するためのチャネルが必要です。ポートは21接続を確立するために使用されます。したがって、データ転送を可能にするにはポートも有効にする必要があります20。以下の設定を見てください

手動FTP接続が拒否されないように、まず次のモジュールをロードします。

modprobe ip_conntrack_ftp

21ポートからの着信および発信FTP接続を許可します。

iptables -A INPUT  -p tcp -m tcp --dport 21 -m conntrack --ctstate ESTABLISHED,NEW -j ACCEPT -m comment --comment "Allow ftp connections on port 21"
iptables -A OUTPUT -p tcp -m tcp --dport 21 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT -m comment --comment "Allow ftp connections on port 21"

20着信および発信アクティブ接続のFTPポートを許可します。

iptables -A INPUT  -p tcp -m tcp --dport 20 -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT -m comment --comment "Allow ftp connections on port 20"
iptables -A OUTPUT -p tcp -m tcp --dport 20 -m conntrack --ctstate ESTABLISHED -j ACCEPT -m comment --comment "Allow ftp connections on port 20"

最後に、FTP 手動インバウンドトラフィックを許可します。

iptables -A INPUT  -p tcp -m tcp --sport 1024: --dport 1024: -m conntrack --ctstate ESTABLISHED -j ACCEPT -m comment --comment "Allow passive inbound connections"
iptables -A OUTPUT -p tcp -m tcp --sport 1024: --dport 1024: -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT -m comment --comment "Allow passive inbound connections"

FTPとファイアウォールの問題の詳細については、次を参照してください。http://slacksite.com/other/ftp.html#active

編集する:NEWポート21入力ルールに追加します。

答え2

私はいくつかのブログなどでこれらの広範なルールを見て、なぜ単に使用しないのか疑問に思いました。

iptables -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
iptables -A INPUT -p tcp -m tcp --dport 21 -j ACCEPT

モジュール付きnf_conntrack_ftp。これはより簡潔で読みやすく、一般的にファイアウォールの場合は特に良いです。

FWIW、カーネル4.7に変更があるようnet.netfilter.nf_conntrack_helper=1ですsysctl/etc/sysctl.d/conntrack.conf

iptables -A PREROUTING -t raw -p tcp --dport 21 -j CT --helper ftp

(望むよりここ詳しくは)

答え3

FTPクライアント:

lsmod | grep ftp
modprobe nf_conntrack_ftp
lsmod | grep ftp
iptables -A INPUT -s 192.168.1.0/24 -d 192.168.1.0/24 -p tcp -m tcp --sport 21 -m conntrack --ctstate ESTABLISHED -j ACCEPT
iptables -A INPUT -s 192.168.1.0/24 -d 192.168.1.0/24 -p tcp -m tcp --sport 20 -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
iptables -A INPUT -s 192.168.1.0/24 -d 192.168.1.0/24 -p tcp -m tcp --sport 1024: --dport 1024: -m conntrack --ctstate ESTABLISHED -j ACCEPT
iptables -A OUTPUT -s 192.168.1.0/24 -d 192.168.1.0/24 -p tcp -m tcp --dport 21 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT
iptables -A OUTPUT -s 192.168.1.0/24 -d 192.168.1.0/24 -p tcp -m tcp --dport 20 -m conntrack --ctstate ESTABLISHED -j ACCEPT
iptables -A OUTPUT -s 192.168.1.0/24 -d 192.168.1.0/24 -p tcp -m tcp --sport 1024:65535 --dport 1024:65535 -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT

FTPサーバー:

lsmod | grep ftp
modprobe nf_conntrack_ftp
lsmod | grep ftp
iptables -A INPUT -s 192.168.1.0/24 -d 192.168.1.0/24 -p tcp -m tcp --dport 21 -m conntrack --ctstate NEW,ESTABLISHED -j ACCEPT
iptables -A INPUT -s 192.168.1.0/24 -d 192.168.1.0/24 -p tcp -m tcp --dport 20 -m conntrack --ctstate ESTABLISHED -j ACCEPT
iptables -A INPUT -s 192.168.1.0/24 -d 192.168.1.0/24 -p tcp -m tcp --sport 1024: --dport 1024: -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
iptables -A OUTPUT -s 192.168.1.0/24 -d 192.168.1.0/24 -p tcp -m tcp --sport 21 -m conntrack --ctstate ESTABLISHED -j ACCEPT
iptables -A OUTPUT -s 192.168.1.0/24 -d 192.168.1.0/24 -p tcp -m tcp --sport 20 -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
iptables -A OUTPUT -s 192.168.1.0/24 -d 192.168.1.0/24 -p tcp -m tcp --sport 1024:65535 --dport 1024:65535 -m conntrack --ctstate ESTABLISHED -j ACCEPT

クライアントで手動モードとアクティブモードを切り替える

ftp> passive
Passive mode on.
ftp> passive
Passive mode off.

答え4

アクティブ接続と手動接続の両方が必要で、ESTABLISHED接続がすでに承認されている場合は、次のようになります。

iptables -A INPUT -m conntrack --ctstate ESTABLISHED -j ACCEPT

次に、ポート21を開き、パッシブポートの特別な規則を追加するだけです。ポート20はESTABLISHED上記のルールによってすでに承認されているため、ルールは必要ありません。

まず、新しい接続を受け入れますport 21

iptables -A INPUT -p tcp --dport 21 -j ACCEPT

次に、パッシブポートのCTヘルパーを追加します1024:

iptables -A PREROUTING -t raw -p tcp --dport 21 -j CT --helper ftp
iptables -A INPUT -p tcp -m conntrack --ctstate RELATED -m helper --helper ftp --dport 1024: -j ACCEPT

また見なさい:

メモ:1024:FTPサーバーで以下を設定する必要があります。 FTP設定でデフォルトの手動ポートを取得します。それ以外の場合は、FTPに関連付けられていないポートを開けすぎる可能性があります。

重要なヒント:OUTPUT私のデフォルトのルールはそのためルールを追加しませんでしたiptables -P OUTPUT ACCEPT。これは私の箱から出ることを信頼するという意味です。特にNAT設定では、これは良い選択ではないかもしれません。

非常に重要な注意事項:手動ポートが隠されて(暗号化されて)iptables正しいポートを推測できないため、FTPSはこのタイプの設定には適していません。バラより手動ポートを使用してTLSを介したFTPを許可するようにIPTableを変更します。そしてhttps://serverfault.com/questions/811431/are-my-iptables-for-ftps-with-tls-ok

関連情報