IPtables文字列が特定のURLと一致します。

IPtables文字列が特定のURLと一致します。

iptablesを作成しようとしています。文字列一致ブロックするルールとルールhttp://example.com:8888https://example.com:8888指定された文字列と一致する場合。別のルールはポートを8888から7777にリダイレクトします。

次の規則に従おうとしましたが、残念ながら動作しませんでした。

iptables -A INPUT -p tcp -s 0.0.0.0/0 -m string --string linuxcore --algo bm --sport 8888 -j DROP
iptables -t raw -A PREROUTING -m string --algo bm --string linuxcore -p tcp -i eth0 --dport 8888 -j DROP
iptables -t nat -A PREROUTING -p tcp --dport 8888 -m string --algo bm --string "linuxcore" -j REDIRECT --to-port 7777
iptables  -A INPUT -t nat -p tcp --dport 8888 -m string --algo bm --string "linuxcore" -j DROP

ベストアンサー1

私が思うよりもはるかに複雑なことをしようとしているようです。

あなたは何を求めますか?

パケットペイロード(レイヤ7)で特定の文字列をブロックします。これにより、誰かが「linuxcore」という文字列に言及した電子メールまたはIMを送信したり、フォーラムにコメントを投稿したりするのを防ぎます。

私はあなたが望むものを考えます:

ポート8888に向けられたパケットを、domain.comという名前で解決されたIPアドレスにポート7777にリダイレクトします。

前者はあまり意味がないので、私はあなたが望むものを仮定します。私はまた、「foo.domain.com」マッチングに興味がないと仮定します。覚えておいて、これアイピー気をつけて、いいえドメインネームサーバー表面。

この場合、1、2、4行は不要です。そして、文字列の一致は必要ありません。iptables名前を適切なIPアドレスに変換し、必要に応じてルールを再利用するのに十分スマートです。また、を使用しているので、PREROUTINGこれが一致するものだけがわかります。あなたのシステムに、データパケットではありません去るシステム(発信パケットを一致させるには、を使用するか、OUTPUTそれぞれを1つずつ保持する必要があります)。

ルールは次のとおりです。

iptables -t nat -A PREROUTING -d domain.com -p tcp --dport 8888 -j REDIRECT --to-ports 7777 

おすすめ記事