着信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
また見なさい:
- https://github.com/rtsisyk/linux-iptables-contrack-exploit
- http://home.regit.org/wp-content/uploads/2011/11/secure-conntrack-helpers.html
メモ: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