TL;DR: khi giả mạo địa chỉ MAC, làm cách nào để đảm bảo địa chỉ thực sẽ không bị rò rỉ ra phần còn lại của mạng bằng cách sử dụng nftables?
Bối cảnh
Đối với mục đích đào tạo an ninh mạng, tôi hiện đang xây dựng một vòi mạng bao gồm một cây cầu trong suốt với hai giao diện (vòi).
vòi là một máy tính đang chạy Debian Bullseye, có 4 giao diện ethernet như sau:
giao diện |
MAC |
enp3s0 |
00:90:27:b4:40:58 |
enp4s0 |
00:90:27:b4:40:59 |
enp6s0 |
00:90:27:b4:40:5a |
enp7s0 |
00:90:27:b4:40:5b |
- enp3s0 được kết nối với công tắc và nhận địa chỉ IP qua DHCP.
- Ngoài ra, tôi đã tạo một cầu nối br0 với nmcli, với hai giao diện nô lệ: enp6s0 và enp7s0
- enp7s0 được kết nối với công tắc
Cây cầu được tạo ra như sau:
kết nối nmcli thêm kết nối.type bridge ifname br0 con-name br0 ipv4.method bị vô hiệu hóa ipv6.method bỏ qua bridge.stp no bridge.vlan-filtering yes connection.autoconnect-slaves 1 autoconnect no
kết nối nmcli thêm loại ethernet ifname enp6s0 con-name br0-slave-enp6s0 chủ cầu kiểu nô lệ br0 tự động kết nối không
kết nối nmcli thêm loại ethernet ifname enp7s0 con-name br0-slave-enp7s0 chủ cầu kiểu nô lệ br0 tự động kết nối không
Ghi bàn
Tôi muốn giữ nguyên máy tàng hình mọi lúc trên mạng vì đây là một lần nhấn thụ động, vì vậy tôi muốn giảm lưu lượng truy cập đi điều đó có thể vô tình rò rỉ địa chỉ MAC của máy tôi. Vì vậy, tôi đã thực hiện một nỗ lực với nftables như sau, với một đặt tên cho các địa chỉ MAC:
cầu netdev bảng {
đặt mac {
gõ ether_addr
phần tử = { 00:90:27:b4:40:59,
00:90:27:b4:40:5a, 00:90:27:b4:40:5b }
}
chuỗi br0 {
loại bộ lọc hook ingress devices = { enp4s0, enp6s0, enp7s0 } bộ lọc ưu tiên; chính sách chấp nhận;
ether saddr @macs thả
cờ nhật ký tất cả tiền tố bộ đếm "myfilter "
}
}
Tôi cũng muốn có bộ đếm và nhật ký chi tiết của các gói bị hủy.
Vấn đề
Lưu lượng truy cập đang bị giảm và quá trình ghi nhật ký được thực hiện vào /var/log/syslog như mong đợi. Bộ đếm đang được cập nhật. Nhưng quy tắc bộ lọc mạng dường như không hoạt động như dự định. Thay vào đó, nó dường như giảm tất cả lưu lượng được gửi đến enp7s0.
Vật mẫu:
Ngày 20 tháng 12 01:23:47 kernel hộp kiểm tra: [32441.125971] myfilter IN=enp7s0 OUT= MACSRC=10:c2:5a:58:72:8f MACDST=01:00:5e:7f:ff:fa MACPROTO=0800 SRC= 192.168.0.1 DST=239.255.255.250 LEN=367 TOS=0x00 PREC=0x00 TTL=4 ID=37026 PROTO=UDP SPT=1900 DPT=1900 LEN=347
Ngày 20 tháng 12 01:23:47 kernel hộp kiểm tra: [32441.126842] myfilter IN=enp7s0 OUT= MACSRC=10:c2:5a:58:72:8f MACDST=01:00:5e:7f:ff:fa MACPROTO=0800 SRC= 192.168.0.1 DST=239.255.255.250 LEN=312 TOS=0x00 PREC=0x00 TTL=4 ID=37027 PROTO=UDP SPT=1900 DPT=1900 LEN=292
Ngày 20 tháng 12 01:23:47 kernel hộp kiểm tra: [32441.127554] myfilter IN=enp7s0 OUT= MACSRC=10:c2:5a:58:72:8f MACDST=01:00:5e:7f:ff:fa MACPROTO=0800 SRC= 192.168.0.1 DST=239.255.255.250 LEN=303 TOS=0x00 PREC=0x00 TTL=4 ID=37028 PROTO=UDP SPT=1900 DPT=1900 LEN=283
Ngày 20 tháng 12 01:23:47 kernel hộp kiểm tra: [32441.128342] myfilter IN=enp7s0 OUT= MACSRC=10:c2:5a:58:72:8f MACDST=01:00:5e:7f:ff:fa MACPROTO=0800 SRC= 192.168.0.1 DST=239.255.255.250 LEN=377 TOS=0x00 PREC=0x00 TTL=4 ID=37029 PROTO=UDP SPT=1900 DPT=1900 LEN=357
Ngày 20 tháng 12 01:23:53 hạt nhân hộp kiểm tra: [32447.003559] myfilter IN=enp7s0 OUT= MACSRC=10:c2:5a:58:72:8f MACDST=33:33:00:00:00:01 MACPROTO=86dd SRC= fe80:0000:0000:0000:12c2:5aff:fe75:899d DST=ff02:0000:0000:0000:0000:0000:0000:0001 LEN=176 TC=0 HOPLIMIT=255 FLOWLBL=0 PROTO=ICMPv6 TYPE=134 MÃ = 0
Ngày 20 tháng 12 01:23:53 hạt nhân hộp kiểm tra: [32447.015382] myfilter IN=enp7s0 OUT= MACSRC=00:90:27:e6:10:58 MACDST=33:33:00:00:00:16 MACPROTO=86dd SRC= fe80:0000:0000:0000:6d06:284e:2844:db03 DST=ff02:0000:0000:0000:0000:0000:0000:0016 LEN=136 TC=0 HOPLIMIT=1 FLOWLBL=0 OPT ( ) PROTO=ICMPv6 LOẠI=143 MÃ=0
Ngày 20 tháng 12 01:23:53 hạt nhân hộp kiểm tra: [32447.619279] myfilter IN=enp7s0 OUT= MACSRC=00:90:27:e6:10:58 MACDST=33:33:00:00:00:16 MACPROTO=86dd SRC= fe80:0000:0000:0000:6d06:284e:2844:db03 DST=ff02:0000:0000:0000:0000:0000:0000:0016 LEN=136 TC=0 HOPLIMIT=1 FLOWLBL=0 OPT ( ) PROTO=ICMPv6 LOẠI=143 MÃ=0
Tôi tin rằng tôi có thể cần phải sử dụng một đi ra móc thay vì xâm nhập. Tôi hiểu rằng móc ra có sẵn trong nft từ phiên bản 1.01. Phiên bản ổn định hiện tại của nft trong Debian là 0,98, vì vậy tôi đã nâng cấp thủ công lên v1.01 bằng cách tải xuống các gói theo cách thủ công. Nhưng thay thế lối vào bằng lối ra không hoạt động: nft không nhận ra quy tắc của tôi.
câu hỏi
- Cách tiếp cận của tôi có hợp lý không? Tôi có thể sử dụng móc vào cho mục đích của mình không? Hoặc là đầu ra cần thiết?
- Ngoài ra, điều này có thể được thực hiện với tc ?
- Hoặc cây cầu có thể được cách ly thêm với lưu lượng truy cập bắt nguồn từ các giao diện khác không?