web-dev-qa-db-ja.com

タイプ 'hash:ip、port'のIPセットと適切に照合する方法は?

私の現在の設定では、複数のIPv4アドレスを持つサーバーがあります。症状は同じなので、今のところIPv6の部分は無視しましょう。

ファイアウォールルールで、HTTPトラフィックと照合したいtowards特定のIPと他のいくつかのサービス(私のINPUT-j ACCEPTを使用してそれらを許可しますfilterテーブルのチェーン)。

これは事実上INPUTチェーンの最後から2番目のルールです。

-A INPUT -m set --match-set public_services dst -j ACCEPT
-A INPUT -j NFLOG --nflog-prefix  "[IPv4:inp/flt] (drop)"
-A INPUT -j DROP
# filter/INPUT chain ends here

ただし、-j DROPの前にログが発生するため、トラフィックは、必要に応じて受け入れられるのではなく、最後のルールによってドロップされることがわかります。ロギングで使用されるマーカーは、私のnetfilterルール内で一意です。

私のIPセットは次のようになります。

# ipset save public_services
create public_services list:set size 8
add public_services public_services4
add public_services public_services6

一方、IPv4固有のIPセットは(実際のIPアドレスは編集されています):

# ipset save public_services4
create public_services4 hash:ip,port family inet hashsize 1024 maxelem 65536 counters
add public_services4 192.168.0.1,tcp:80 packets 0 bytes 0
add public_services4 192.168.0.1,tcp:22 packets 0 bytes 0

INPUTチェーンのルールが一致するかどうかを確認するために、カウンターを有効にしました。しかし、そうではないようです。ログファイル(編集されたMACアドレスとIPアドレス)から比較すると、IP、プロトコル(tcp)、およびポートが一致しているため、非常に奇妙だと思います。

[IPv4:inp/flt] (drop) IN=eth0 OUT= MAC=00:00:00:00:00:00:00:00:00:00:00:00:00:00 SRC=1.2.3.4 DST=192.168.0.1 LEN=40 TOS=00 PREC=0x00 TTL=242 ID=54321 PROTO=TCP SPT=51433 DPT=80 SEQ=2936666534 ACK=0 WINDOW=65535 SYN URGP=0 MARK=0

また、IPバージョン固有のIPセットを参照するために、ルールをそれぞれIPv4およびIPv6固有のルールとして追加しようとしました。これも機能せず、最初に追加された明示的なルールに分類されます。

この場合、宛先IP、プロトコル、およびポートを一致させようとしているときに、何が間違っていますか?


詳しくは:

上記のルールは26番なので、その前に1つの明示的なルールを挿入することにしました。

-I INPUT 26 -p tcp -d 192.168.0.1 --dport 80 -j ACCEPT

これはうまくいきました。ただし、netfilterルールからIPセットにできるだけ多くの変数部分を抽象化したいと思います。

そこで私は(要点を証明するためにthatセットでは機能しません)別のルールを追加しました:

-I INPUT 26 -m set --match-set public_services4 dst -j ACCEPT

そしてこれは機能しません。 netfilterとIPセットのカウンターによると、このルールは一致しません。

関連するパッケージのバージョン:

  • ipset:6.20.1-1
  • iptables:1.4.21-1ubuntu1
1
0xC0000022L

IpsetはIPとポートで構成されているため、iptablesにIPとポートの両方が一致するように指示する必要があります。宛先ポートと一致させる場合はdstを使用し、それ以外の場合はsrcを使用します。

-A INPUT -m set --match-set public_services dst,dst -j ACCEPT
3
ibrahim