Điểm:1

Lọc lưu lượng theo địa chỉ MAC với nftables

lá cờ in

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?
A.B avatar
lá cờ cl
A.B
Như một nhận xét, hỗ trợ phía nhân Linux cho nftables netdev egress bắt đầu từ Linux 5.16 (bao gồm cả 5.16-rc6 "hiện tại")
Kate avatar
lá cờ in
@ A.B Điểm hay: kernel đang chạy của tôi rõ ràng là không đủ mới: Linux testbox 5.10.0-9-AMD64 #1 SMP Debian 5.10.70-1 (2021-09-30) x86_64 GNU/Linux

Đăng câu trả lời

Hầu hết mọi người không hiểu rằng việc đặt nhiều câu hỏi sẽ mở ra cơ hội học hỏi và cải thiện mối quan hệ giữa các cá nhân. Ví dụ, trong các nghiên cứu của Alison, mặc dù mọi người có thể nhớ chính xác có bao nhiêu câu hỏi đã được đặt ra trong các cuộc trò chuyện của họ, nhưng họ không trực giác nhận ra mối liên hệ giữa câu hỏi và sự yêu thích. Qua bốn nghiên cứu, trong đó những người tham gia tự tham gia vào các cuộc trò chuyện hoặc đọc bản ghi lại các cuộc trò chuyện của người khác, mọi người có xu hướng không nhận ra rằng việc đặt câu hỏi sẽ ảnh hưởng—hoặc đã ảnh hưởng—mức độ thân thiện giữa những người đối thoại.