iptablesでポートの範囲を開く正しい方法は何ですか


56

次のことをアドバイスする記事を見つけました。

iptables -A INPUT -p tcp 1000:2000 -j ACCEPT

また、上記は機能せず、iptablesは--multiportオプションを使用した複数のポート宣言のみをサポートしていると述べている人もいます。

iptablesで多くのポートを開く正しい方法はありますか?


回答:


60

これは正しい方法です:

iptables -A INPUT -p tcp --match multiport --dports 1024:3000 -j ACCEPT

例として。ソースはこちら


5
ルールセットの状態がわからない場合は、-Iより安全です-A
user9517はGoFundMonicaを

@Iain、その背後にある理由を説明してください。
jayhendren

2
@jayhendrenの多くのルールセットには、たとえば-A INPUT -j REJECT --reject-with icmp-host-prohibitedINPUTやその他のテーブルの最後など、デフォルトですべてをドロップするルールがあります。を使用-Aすると、最後のルールの後にテーブルの最後にルールが追加されるため、netfilterが最初の一致の勝ちに基づいて動作すると見なされることはありません。を使用する-Iと、テーブルansの先頭にルールが挿入されるため、常に考慮されます。
user9517はGoFundMonica

4
@Iainただし、一部のルールセットには、パケットをフィルタリングまたはレート制限するルールが先頭にあるため、ルールセットがわからない場合-I必ずしも安全ではないことを指摘する価値があります。
jayhendren

3
@jayhendrenあなたがやったばかりだと思うし、いつも言っているわけではないことに注意してください。
user9517はGoFundMonicaを

54

あなたがそれを間違って書いた(あなたは忘れてしまった--dport)けれども、あなたが言われたことは正しい。

iptables -A INPUT -p tcp --dport 1000:2000 TCPポート1000から2000までの受信トラフィックを開きます。

-m multiport --dports開きたい範囲が連続していない場合にのみ必要です。例えば-m multiport --dports 80,443、HTTPとHTTPS のみを開きます-間にあるものは開きません。

ルールの順序は重要であり、Iainが他の場所のコメントで言及しているように、追加するルールが有効になる場所にあることを確認するのはあなたの仕事です。


1
必要に応じて、ここでも言及できます;)
user9517はGoFundMonicaをサポートしています14年

1
ヒヒヒヒヒ!続けて、メッセージは繰り返す価値があります!
MadHatter

2
これは正解です。より徹底的です。
アンドリューコザック

10

TL; DR but ...

マルチポートモジュールなしの純粋なポート範囲: iptables -A INPUT -p tcp --dport 1000:2000 -j ACCEPT

同等のマルチポートの例: iptables -A INPUT -p tcp -m multiport --dports 1000:2000 -j ACCEPT

...および複数の範囲を持つマルチポートに関するバリエーション(はい、これも可能です): iptables -A INPUT -p tcp -m multiport --dports 1000,1001,1002:1500,1501:2000 -j ACCEPT

...そして、否定を伴う同等のマルチポートマルチレンジの例: iptables -A INPUT -p tcp -m multiport ! --dports 0:999,2001:65535 -j ACCEPT

どうぞ。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.