11

FTP サーバーがインストールされている PC があります。アクティブ FTP とパッシブ FTP の両方を許可するように iptables ルールを設定したいと考えています。人々が機能していると報告している次のコードを試しましたが、すべてのトラフィックをブロックしているようです (ページが読み込まれないなど)。

#!/bin/bash

IPT=/sbin/iptables
$IPT -F
$IPT -X
$IPT -t nat -F
$IPT -t nat -X
$IPT -t mangle -F
$IPT -t mangle -X
/sbin/modprobe ip_conntrack
/sbin/modprobe ip_conntrack_ftp

# Setting default filter policy
$IPT -P INPUT DROP
$IPT -P OUTPUT ACCEPT

# Allow FTP connections @ port 21
$IPT -A INPUT  -p tcp --sport 21 -m state --state ESTABLISHED -j ACCEPT
$IPT -A OUTPUT -p tcp --dport 21 -m state --state NEW,ESTABLISHED -j ACCEPT

# Allow Active FTP Connections
$IPT -A INPUT -p tcp --sport 20 -m state --state ESTABLISHED,RELATED -j ACCEPT
$IPT -A OUTPUT -p tcp --dport 20 -m state --state ESTABLISHED -j ACCEPT

# Allow Passive FTP Connections
$IPT -A INPUT -p tcp --sport 1024: --dport 1024: -m state --state ESTABLISHED,RELATED -j ACCEPT
$IPT -A OUTPUT -p tcp --sport 1024: --dport 1024:  -m state --state ESTABLISHED,RELATED -j ACCEPT
4

5 に答える 5

5

# Allow FTP connections @ port 21セクションで INPUT および OUTPUT 行の引数を反転する必要があります。そうしないと、新しい (アクティブな) FTP 接続がブロックされます。

# Allow FTP connections @ port 21
$IPT -A INPUT -p tcp --dport 21 -m state --state NEW,ESTABLISHED -j ACCEPT
$IPT -A OUTPUT  -p tcp --sport 21 -m state --state ESTABLISHED -j ACCEPT
于 2012-09-06T16:53:13.303 に答える
5

そのコードは、着信および発信 FTP 接続のみを許可します。それ以外の入出力は許可されません。

 $IPT -P INPUT DROP

すべての着信トラフィックをドロップします。したがって、それから始める場合は、許可したい実行中の他のサービスへのトラフィックを有効にする必要があります。

 $IPT -A INPUT  -p tcp --sport 21 -m state --state NEW,ESTABLISHED -j ACCEPT
 $IPT -A OUTPUT -p tcp --dport 21 -m state --state ESTABLISHED -j ACCEPT

このルールは、着信 FTP トラフィックを許可します。

このスクリプトの説明は、既存の IP テーブル チェーンをすべて削除してから、すべての送信トラフィックを許可し、FTP 以外のすべての受信トラフィックをブロックするルールを追加することです。

于 2012-05-01T16:23:40.170 に答える
0

上記のスクリプトで大きな間違いを発見しました。

ルールのタイプが間違っています。次のようになります。

$IPT -A INPUT  -p tcp --dport 21 -m state --state NEW,ESTABLISHED -j ACCEPT
$IPT -A OUTPUT -p tcp --sport 21 -m state --state ESTABLISHED -j ACCEPT

$IPT -A INPUT -p tcp --dport 20 -m state --state ESTABLISHED,RELATED -j ACCEPT
$IPT -A OUTPUT -p tcp --sport 20 -m state --state ESTABLISHED -j ACCEPT

DportとSportが入れ替わる!サーバーに接続する場合、送信元ポートは動的でクライアント側固有であり、接続が確立されているにもかかわらず不明です。

サーバー側のクライアントがftp接続を確立するために使用するポートがわからないため、2行目はまったくあいまいです。アウトバウンド トラフィックがデフォルトでブロックされている場合は、次のようなルールが適しています。

$IPT -A OUTPUT -p tcp --dport 21 -m state --state NEW,ESTABLISHED -j ACCEPT
$IPT -A OUTPUT -p tcp --dport 20 -m state --state ESTABLISHED,RELATED  -j ACCEPT

ただし、これが必要になるのは、ルールが

$IPT -P OUTPUT DROP

ルールセットの一番上にあります。

ご挨拶

マーカス

于 2014-06-15T09:44:32.253 に答える