ファイアウォールルールを半分に削減-tcpおよびudpに1つのiptablesルール


12

私のファイアウォールには、次のようなiptablesルールがいくつかあります。

iptables -A zone_lan_forward -p tcp -d 1.2.3.0/24 -j ACCEPT
iptables -A zone_lan_forward -p udp -d 1.2.3.0/24 -j ACCEPT

すべてのアドレスに対して、tcp用とudp用の2つのルールを設定するためのショートカットはありますか?私はこのようなことをすることができます:

iptables -A zone_lan_forward -p tcp,udp -d 1.2.3.0/24 -j ACCEPT

回答:


22

TCPおよびUDPパケットを受け入れる新しいチェーンを作成し、個々のIP /ポート許可ルールからそのチェーンにジャンプします。

iptables -N ACCEPT_TCP_UDP
iptables -A ACCEPT_TCP_UDP -p tcp -j ACCEPT
iptables -A ACCEPT_TCP_UDP -p udp -j ACCEPT

iptables -A zone_lan_forward -d 1.2.3.0/24 -j ACCEPT_TCP_UDP

これにより、いくつかの余分な行のオーバーヘッドが追加されますが、TCP / UDPルールの数は半分になります。

私は考えていない省略-pあなただけICMPのためにファイアウォールを開放するだけでなく、他のプロトコルいないので、引数を。iptablesのmanページから-p

指定されたプロトコルは、tcp、udp、icmp、またはallのいずれか、またはこれらのプロトコルの1つまたは別のプロトコルを表す数値です。/ etc / protocolsからのプロトコル名も許可されます。

現在、TCP、UDP、およびICMP以外のプロトコルをリッスンしていない可能性がありますが、誰が将来を保持できるかを知っています。ファイアウォールを不必要に開いたままにしておくのは悪い習慣です。

免責事項:iptablesコマンドは私の頭上にありません。ATMをテストするためのボックスにアクセスできません。


これは、ファイアウォールを不必要に開いたままにしない、非常にエレガントなソリューションです。
ビッグマクラージヒュージュ

4
ただし、フィルタリングが宛先ポート番号を介して行われる場合、この新しいチェーンの作成方法は失敗します。誰もが上記の問題を克服する方法を提案できますか?
アモール14年

@Amorこの例では、チェーン上の-p allすべての--dportルールで使用した場合zone_lan_forward、探しているものが得られる可能性があります。もちろん、チェーンのために非TCP / UDPプロトコルでそのチェーンに到達する他の方法はないと仮定していACCEPT_TCP_UDPます。複数の人がルールを変更するためのアクセス権を持ち、誰かがこの微妙な点を理解せずにルールを編集する場合、これは明らかに危険な戦略です。
サミュエルハーマー

おっと。チェーンの順序に気付かなかった。この例のチェーンの順序も、先ほど適切に動作するように切り替える必要があります。だからACCEPT_TCP_UDPジャンプしzone_lan_forward、次にジャンプしACCEPTます。
サミュエルハーマー

2

ICMPトラフィック(ルールを使用してグローバルにブロックできます)をあまり気にしない場合は、-pフラグを省略するだけで、すべてのプロトコルをカバーできます。


ICMPトラフィックを気にする必要がありますか?私は主にHTTPアクセスに関心があります。
ビッグマクラージヒュージュ

あんまり。必要に応じてICMP(ping)をブロックできますが、HTTPトラフィックを処理しているので、あまり意味がありません。
ネイサンC

@ NathanC、OPがルールを半分にする方法を求めているときにすべてのポートを開くようにするアドバイスは、現在または将来、トラブルにつながる可能性があると思います。
ジェドダニエルズ

@JedDaniels -pスイッチは、ポートではなくプロトコルを指定します。以下の答えには、tcpとudp以外のものをロックダウンしたい場合の代替案があります。
ネイサンC

@NathanCはい、-pを削除することは「tcpまたはudpだけでなく、すべてのプロトコルを開く」ことを意味します。これは危険ではないとしても無謀です。
ジェドダニエルズ
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.