0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

いまさらだけどebtables(その1)

Posted at

ebtablsにトライ

Layer2レベルのデータ制御(Firewall)を試すため、ebtablesにトライした。マニュアルは下記となる。

最初から脱線

ebtablesはiptablesとともに、今は、nftablesに統合されているらしい。なので、「いまさらだけど」である。しかし、小生のレベルでは高度なことはしない、「Simple Is Best」ということで、基本的(かつ自分的には最も大事)な事項を実施。

ネットワーク構成

image.png
ebtablesを動作させる「Network Bridge」(Linux:Lubutu)が存在し、3つのNetwork I/Fが存在している。I/F:enp0s3には2つのホスト、I/F:enp0s9およびI/F:enp0s10にはそれぞれ1つのホストが接続されており、同一ネットワーク(192.168.10.xx/24)に属している。

Virtual Box

いずれも、Virtual Box上のVMを利用。「Network Bridge」には、プロミスキャスモードを適用する。

Network Bridge設定

こちら「ネットワークブリッジ」などをもとに設定。

$ sudo brctl addbr br0
$ sudo brctl addif br0 enp0s3
$ sudo brctl addif br0 enp0s9
$ sudo brctl addif br0 enp0s10
$ sudo ip link set up dev br0
$ sudo brctl show
bridge name     bridge id               STP enabled     interfaces
br0             8000.08002703353c       no              enp0s10
                                                        enp0s3
                                                        enp0s9
$ ip link
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
2: enp0s3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel master br0 state UP mode DEFAULT group default qlen 1000
    link/ether 08:00:27:03:35:3c brd ff:ff:ff:ff:ff:ff
3: enp0s9: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel master br0 state UP mode DEFAULT group default qlen 1000
    link/ether 08:00:27:7f:54:7d brd ff:ff:ff:ff:ff:ff
4: enp0s10: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel master br0 state UP mode DEFAULT group default qlen 1000
    link/ether 08:00:27:29:53:04 brd ff:ff:ff:ff:ff:ff
5: br0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP mode DEFAULT group default qlen 1000
    link/ether 08:00:27:03:35:3c brd ff:ff:ff:ff:ff:ff

検証

I/F:enp0s9のOut方向をDeny(不許可)

ebtables設定

「Forward」(転送)Chainを用いる(以下、同様)。「-o」によりOut方向のI/Fを指定、「-j DROP」によりデータを捨てる。

$ sudo ebtables -A FORWARD -o enp0s9 -j DROP
$ sudo ebtables -L
Bridge table: filter

Bridge chain: INPUT, entries: 0, policy: ACCEPT

Bridge chain: FORWARD, entries: 1, policy: ACCEPT
-o enp0s9 -j DROP

Bridge chain: OUTPUT, entries: 0, policy: ACCEPT

結果

VM:192.168.10.11でのpingの結果である。Denyのため、疎通なし。

$ ping 192.168.10.33 -c 1
PING 192.168.10.33 (192.168.10.33) 56(84) bytes of data.

--- 192.168.10.33 ping statistics ---
1 packets transmitted, 0 received, 100% packet loss, time 0ms

VM:192.168.10.33にて、何も受信しておらず。
Case1-b3.png

I/F:enp0s10のIn方向をDeny

設定

「-D」により一つ前の設定削除、「-i」によりIn方向のI/Fを指定。

$ sudo ebtables -D FORWARD 1
$ sudo ebtables -L
Bridge table: filter

Bridge chain: INPUT, entries: 0, policy: ACCEPT

Bridge chain: FORWARD, entries: 0, policy: ACCEPT

Bridge chain: OUTPUT, entries: 0, policy: ACCEPT
$ sudo ebtables -A FORWARD -i enp0s10 -j DROP
$ sudo ebtables -L
Bridge table: filter

Bridge chain: INPUT, entries: 0, policy: ACCEPT

Bridge chain: FORWARD, entries: 1, policy: ACCEPT
-i enp0s10 -j DROP

Bridge chain: OUTPUT, entries: 0, policy: ACCEPT

結果

VM:192.168.10.11でのpingの結果である。Denyのため、疎通なし。

$ ping 192.168.10.44 -c 1
PING 192.168.10.44 (192.168.10.44) 56(84) bytes of data.

--- 192.168.10.44 ping statistics ---
1 packets transmitted, 0 received, 100% packet loss, time 0ms

ただし、In方向のフィルターのため、VM:192.168.10.44では、ICMP応答をしている。
Case2-b4.png
Network Bridgeでデータが破棄されている。

Sourceとして特定のMacアドレス(ここではVM:192.168.10.22)をDeny

設定

「-s」により、送信元Macアドレス指定。「08:00:27:c2:b3:07」はVM:192.168.10.22のMacアドレス。

$ sudo ebtables -D FORWARD 1
$ sudo ebtables -L
Bridge table: filter

Bridge chain: INPUT, entries: 0, policy: ACCEPT

Bridge chain: FORWARD, entries: 0, policy: ACCEPT

Bridge chain: OUTPUT, entries: 0, policy: ACCEPT
$ sudo ebtables -A FORWARD -s 08:00:27:c2:b3:07 -j DROP
$ sudo ebtables -L
Bridge table: filter

Bridge chain: INPUT, entries: 0, policy: ACCEPT

Bridge chain: FORWARD, entries: 1, policy: ACCEPT
-s 08:00:27:c2:b3:07 -j DROP

Bridge chain: OUTPUT, entries: 0, policy: ACCEPT

結果

VM:192.168.10.11でのpingの結果である。Network Bridgeに入らない宛先(VM:192.168.10.22)に対しては疎通がある。

$ ping 192.168.10.22 -c 1
PING 192.168.10.22 (192.168.10.22) 56(84) bytes of data.
64 bytes from 192.168.10.22: icmp_seq=1 ttl=64 time=0.401 ms

--- 192.168.10.22 ping statistics ---
1 packets transmitted, 1 received, 0% packet loss, time 0ms
rtt min/avg/max/mdev = 0.401/0.401/0.401/0.000 ms

VM:192.168.10.22(フィルター対象)でのpingの結果である。Network Bridgeを通る宛先(VM:192.168.10.33)に対しては疎通がない。

$ ping 192.168.10.33 -c 1
PING 192.168.10.33 (192.168.10.33) 56(84) bytes of data.
From 192.168.10.22 icmp_seq=1 Destination Host Unreachable

--- 192.168.10.33 ping statistics ---
1 packets transmitted, 0 received, +1 errors, 100% packet loss, time 0ms

Destinationとして特定のMacアドレス(ここでは192.168.10.44のホスト)をDeny

設定

「-d」により、宛先Macアドレス指定。「08:00:27:b2:76:7e」はVM:192.168.10.44のMacアドレス。

$ sudo ebtables -D FORWARD 1
$ sudo ebtables -L
Bridge table: filter

Bridge chain: INPUT, entries: 0, policy: ACCEPT

Bridge chain: FORWARD, entries: 0, policy: ACCEPT

Bridge chain: OUTPUT, entries: 0, policy: ACCEPT
$ sudo ebtables -A FORWARD -d 08:00:27:b2:76:7e -j DROP
$ sudo ebtables -L
Bridge table: filter

Bridge chain: INPUT, entries: 0, policy: ACCEPT

Bridge chain: FORWARD, entries: 1, policy: ACCEPT
-d 08:00:27:b2:76:7e -j DROP

Bridge chain: OUTPUT, entries: 0, policy: ACCEPT

結果

ping実行前、フィルター対象となる宛先(VM:192.168.10.44)のMacアドレスは登録されていない状態。

$ arp
Address                  HWtype  HWaddress           Flags Mask            Iface
192.168.10.33            ether   08:00:27:d0:a0:46   C                     eth0
192.168.10.44                    (incomplete)                              eth0
192.168.10.22            ether   08:00:27:c2:b3:07   C                     eth0

ping実行はNGとなるが、フィルター対象となる宛先(VM:192.168.10.44)のMacアドレスは登録されている。ARPブロードキャストはフィルタリングされない。

$ ping 192.168.10.44 -c 1
PING 192.168.10.44 (192.168.10.44) 56(84) bytes of data.

--- 192.168.10.44 ping statistics ---
1 packets transmitted, 0 received, 100% packet loss, time 0ms

$ arp
Address                  HWtype  HWaddress           Flags Mask            Iface
192.168.10.33            ether   08:00:27:d0:a0:46   C                     eth0
192.168.10.44            ether   08:00:27:b2:76:7e   C                     eth0
192.168.10.22            ether   08:00:27:c2:b3:07   C                     eth0

VM:192.168.10.11では、ARP応答を受けているが、ICMP応答はない。
Case4-b1.png

VM:192.168.10.44では、ARPのみ。ICMP要求を受信せず(フィルタリングされている)。
Case4-b4.png

EOF

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?