Mạng gia đình chỉ chấp nhận một số địa chỉ MAC nhất định từ LAN


3

Tôi có Ubuntu 10 là bộ định tuyến với mạng LAN (eth0) và LAN (eth1). Làm cách nào tôi có thể hạn chế eth1 chỉ chấp nhận các gói từ một số địa chỉ MAC nhất định và bỏ phần còn lại? Tôi cũng sắp thiết lập DHCP đến một số địa chỉ MAC nhất định, tuy nhiên, bất kỳ ai cũng có thể tự đặt địa chỉ IP. Tôi có khoảng 4 - 6 thiết bị của riêng tôi có thể sử dụng mạng.


FWIW, bất cứ ai cũng có thể tự đặt địa chỉ MAC.
Insyte

Nhưng họ khó có thể đoán những cái tôi đang sử dụng :)
Pablo

1
Tất cả những gì họ phải làm là đánh hơi ...
Insyte

Ngửi wifi? đó không phải là môi trường thù địch :) Mạng có dây không truy cập được. Tôi được kết nối qua cầu Wifi và cần hạn chế những vị khách không mời từ wifi.
Pablo

Vâng, đánh hơi wifi. Nó dễ hơn đánh hơi có dây ở chỗ nó không yêu cầu truy cập vật lý. MAC máy khách được gửi rõ ràng ngay cả trên mạng WPA. (Bạn sử dụng WPA2, có? WEP là ... ngớ ngẩn.)
Insyte

Câu trả lời:


2

Như tôi đã đề cập trong các bình luận, tôi không nghĩ rằng điều này sẽ mua cho bạn bất kỳ sự bảo mật thực sự nào, hoặc thậm chí bất kỳ sự bảo mật nào hơn là chặn dựa trên IP, nhưng một cái gì đó như thế này sẽ làm điều đó:

/sbin/iptables -A INPUT -i eth1 -m mac --mac-source XX:XX:XX:XX:XX:XX -j ACCEPT

Tất nhiên, giả sử rằng chính sách mặc định của bạn là DROP.


Tôi xin lỗi, chính sách mặc định là CHẤP NHẬN. Dù sao?
Pablo

Sau đó thay đổi nó thành DROP ... sau đó sử dụng lệnh này.
Bart De Vos

tốt, làm thế nào để phủ nhận cách mà nếu KHÔNG chỉ định mac, thì DROP?
Pablo

2

Đây là một khởi đầu cho bạn:

iptables -P FORWARD DROP
iptables -I FORWARD -i eth1 -m mac --mac-source XX:XX:XX:XX:XX:XX -j ACCEPT
iptables -I FORWARD -i eth1 -m mac --mac-source XX:XX:XX:XX:XX:BB -j ACCEPT
iptables -P INPUT DROP
iptables -I INPUT -i eth1 -m mac --mac-source XX:XX:XX:XX:XX:XX -j ACCEPT
iptables -I INPUT -i eth1 -m mac --mac-source XX:XX:XX:XX:XX:BB -j ACCEPT

Tất cả các địa chỉ mac khác ngoài XX:XX:XX:XX:XX:XXXX:XX:XX:XX:XX:BB sẽ không thể truy cập bộ định tuyến của bạn hoặc internet.


nó thực sự phải có trong bảng FORWARD? Trong trường hợp nào nó có thể làm việc?
Pablo

1

( Tôi là người dùng63709 ; bằng cách nào đó, thông tin đăng nhập Google OpenID và đăng nhập MyOpenID của tôi đã bị chia tách, khi nó thực sự giống nhau trong Stack Overflow)

arptables có chính sách riêng. Làm không phải nhầm lẫn với iptables Chính sách của.

Vì bạn muốn "hạn chế [ sic ] eth1 chỉ chấp nhận các gói từ một số địa chỉ MAC nhất định và bỏ phần còn lại ", bạn sẽ muốn một chính sách DROP mặc định.

(BTW, tôi đã mắc một lỗi nhỏ trong các quy tắc arptables ở trên. Chúng nên là :)

arptables -P IN DROP
arptables -A IN -i eth1 --source-mac <allowed_mac_address> -j ACCEPT
arptables -A IN -i eth1 --source-mac <allowed_mac_address> -j ACCEPT
... and so on ...

(Lưu ý một lần nữa, rằng IN là một chuỗi tích hợp đặc biệt chỉ tìm thấy trong arptables. Đọc trang người đàn ông của arptables để biết thêm thông tin).


Vì một số lý do, nó đã hoạt động trong quá trình thử nghiệm, nhưng không hoạt động khi tôi khởi động nó ... không có kết nối internet nào cả.
Pablo

@Michael thật lạ ... bạn đã đặt các lệnh arptables ở đâu? lý do duy nhất tôi có thể nghĩ ra: -P IN DROP hoạt động, nhưng -A IN -i eth1 quy tắc thất bại vì các lệnh arptables đã được gọi trước khi eth1 hoàn thành. hãy thử đặt các lệnh trong /etc/rc.local. đừng quên đặt đường dẫn đầy đủ vào các mục tiêu ( /sbin/arptables IIRC)
pepoluan

Tôi đặt nó cùng một vị trí (ở trên) iptables init, trong /etc/NetworkManager/dispatcher.d/01ifupdown. Một lần nữa, nó hoạt động khi tôi chỉ chạy tập lệnh từ shell. Tôi cũng đã thử rc.local. Dù sao, tôi đã sử dụng iptables cho điều đó như được đề cập ở đây. Sẽ nâng cao câu trả lời của bạn là tốt, vì nó rất hữu ích để biết! Cám ơn
Pablo

@Michael hmmmm ... thực sự kỳ lạ ... một điều khác tôi có thể nghĩ đến là sự khác biệt của shell được sử dụng bởi các tập lệnh khởi động ( sh thay vì bash ). bạn không sử dụng cú pháp cụ thể của bash, phải không?
pepoluan

0

Bạn có thể quan tâm arptables.

Đó là loại iptables, nhưng đặc biệt dành cho lớp 2. Mặc dù nó cũng có thể 'nhìn trộm' vào một số thông tin L3.

arptables -P IN DROP
arptables -A IN --source-hw <allowed_mac_address> -j ACCEPT
arptables -A IN --source-hw <allowed_mac_address> -j ACCEPT
... and so on ...

Bất cứ khi nào có một Địa chỉ MAC mới mà bạn muốn cho phép, chỉ cần làm arptables -A IN --source-hw <address> -j ACCEPT. Chính sách DROP đảm bảo các địa chỉ khác sẽ bị xóa.


Làm thế nào để phủ nhận địa chỉ mac nếu chính sách mặc định là CHẤP NHẬN?
Pablo

0

Michael, bạn không thể chỉ định nhiều hơn một nguồn mac cho mỗi quy tắc, do đó bạn sẽ cần một bộ quy tắc như sau (nếu bạn sẽ sử dụng iptables)

#Rules for allowing your mac addresses
/sbin/iptables -A FORWARD -i eth1 -m mac --mac-source XX:XX:XX:XX:XX:11 -j ACCEPT
/sbin/iptables -A FORWARD -i eth1 -m mac --mac-source XX:XX:XX:XX:XX:22 -j ACCEPT
/sbin/iptables -A FORWARD -i eth1 -m mac --mac-source XX:XX:XX:XX:XX:33 -j ACCEPT
#One final rule to drop all packets which do not match one of the rules above (are not from one of your allowed macs)
/sbin/iptables -A FORWARD -i eth1 -j DROP

Lưu ý rằng những thứ này nằm trong chuỗi FORWARD và không phải chuỗi INPUT. Bằng cách có các quy tắc này trong chuỗi FORWARD, bộ định tuyến linux của bạn sẽ không cho phép bất kỳ máy Mac nào ngoại trừ những máy được phép của bạn gửi hoặc nhận bất kỳ lưu lượng truy cập nào thông qua bộ định tuyến. Họ vẫn có thể giao tiếp với các máy trên cùng mạng con như của họ (vì điều đó không yêu cầu họ phải đi qua bộ định tuyến).

Bạn cũng có thể kiểm soát ai có thể kết nối với bộ định tuyến của mình bằng cách sao chép các quy tắc trên cho chuỗi đầu vào.

#Rules for allowing your mac addresses
/sbin/iptables -A INPUT -i eth1 -m mac --mac-source XX:XX:XX:XX:XX:11 -j ACCEPT
/sbin/iptables -A INPUT -i eth1 -m mac --mac-source XX:XX:XX:XX:XX:22 -j ACCEPT
/sbin/iptables -A INPUT -i eth1 -m mac --mac-source XX:XX:XX:XX:XX:33 -j ACCEPT
#One final rule to drop all packets which do not match one of the rules above (are not from one of your allowed macs)
/sbin/iptables -A INPUT -i eth1 -j DROP

Đọc bình luận của bạn về một trong những câu trả lời ngắn khác về trường hợp FORWARD và INPUT làm việc với, đây là một lời giải thích ngắn.

PHÍA TRƯỚC chỉ áp dụng cho các gói đi xuyên qua bộ định tuyến của bạn tới các mạng con khác hoặc giao diện với thế giới bên ngoài (thông qua giao diện WAN). ĐẦU VÀO áp dụng cho các gói được định sẵn để kết thúc trên chính bộ định tuyến (ví dụ: kết nối SSH với chính bộ định tuyến / hộp linux).

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.