Thiết lập MitM lớp 2:
+------+
| CHỦ |
+--------+ |------| +--------+
| KHÁCH HÀNG | <--> | MITM | <--> | MÁY CHỦ |
+--------+ +------+ +--------+
TLDR:
Một Rasperry Pi eth0
được kết nối với internet và wlan0
hoạt động như một điểm truy cập sử dụng hostapd. Kết nối cả hai giao diện hoạt động tốt. Chuyển hướng lưu lượng HTTP(S) trên cầu tới mitmproxy Python không hoạt động. Các lệnh sau cung cấp cho các máy khách được kết nối với internet của điểm truy cập, nhưng không có lưu lượng truy cập nào đi qua Python mitmproxy đang nghe trên 8080
:
brctl addbr br0
brctl addif br0 eth0
thiết lập liên kết ip dev br0 lên
echo "denyinterfaces wlan0 eth0" >> /etc/dhcpcd.conf
tiếng vang "giao diện br0" >> /etc/dhcpcd.conf
tiếng vang "bridge=br0" >> /etc/hostapd/hostapd.conf
iptables -A PREROUTING -i br0 -p tcp -m tcp --dport 80 -j REDIRECT --to-ports 8080
iptables -A PREROUTING -i br0 -p tcp -m tcp --dport 443 -j REDIRECT --to-ports 8080
iptables -A POSTROUTING -o eth0 -j MASQUERADE
Những gì tôi đã thử:
- Quay lại hai bước và thiết lập NAT MitM lớp 3
- Tiến lên một bước và thiết lập một cầu nối mạng đơn giản
- Đang cố gắng thiết lập lại MitM lớp 3 và tìm kiếm sự cố trên Google
Thiết lập MitM lớp 3:
+--------+ +------+ +--------+
| KHÁCH HÀNG | <--> | MITM | <--> | MÁY CHỦ |
+--------+ +------+ +--------+
Thiết lập Lớp 3 không hoạt động với các quy tắc iptable sau:
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
iptables -t nat -A PREROUTING -i wlan0 -p tcp -m tcp --dport 80 -j REDIRECT --to-ports 8080
iptables -t nat -A PREROUTING -i wlan0 -p tcp -m tcp --dport 443 -j REDIRECT --to-ports 8080
[Thẩm quyền giải quyết]
[Thẩm quyền giải quyết]
Sau khi thêm các quy tắc bổ sung sau, nó hoạt động tốt và toàn bộ lưu lượng HTTP(S) của các máy khách được kết nối với điểm truy cập của Pi được truyền qua Python mitmproxy:
iptables -A FORWARD -i eth0 -o wlan0 -m state --state LIÊN QUAN, THÀNH LẬP -j CHẤP NHẬN
iptables -A FORWARD -i wlan0 -o eth0 -j CHẤP NHẬN
Có ai đó một lời giải thích cho điều đó? Tôi không hiểu tại sao, vì đối với định tuyến NAT, chỉ cần có quy tắc duy nhất này là đủ:
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
Thiết lập cầu lớp 2
Tiếp theo, tôi đã thiết lập một cầu nối đơn giản mà không có ý định chặn bất kỳ lưu lượng HTTP(S) nào:
brctl addbr br0
brctl addif br0 eth0
thiết lập liên kết ip dev br0 lên
echo "denyinterfaces wlan0 eth0" >> /etc/dhcpcd.conf
tiếng vang "giao diện br0" >> /etc/dhcpcd.conf
tiếng vang "bridge=br0" >> /etc/hostapd/hostapd.conf
systemctl daemon-tải lại
Thiết lập này hoạt động tốt.
Thiết lập MitM lớp 2:
brctl addbr br0
brctl addif br0 eth0
thiết lập liên kết ip dev br0 lên
echo "denyinterfaces wlan0 eth0" >> /etc/dhcpcd.conf
tiếng vang "giao diện br0" >> /etc/dhcpcd.conf
tiếng vang "bridge=br0" >> /etc/hostapd/hostapd.conf
iptables -A PREROUTING -i br0 -p tcp -m tcp --dport 80 -j REDIRECT --to-ports 8080
iptables -A PREROUTING -i br0 -p tcp -m tcp --dport 443 -j REDIRECT --to-ports 8080
iptables -A POSTROUTING -o eth0 -j MASQUERADE
[Thẩm quyền giải quyết]
Các máy khách của điểm truy cập Pi có quyền truy cập internet, nhưng lưu lượng truy cập không đi qua Python mitmproxy.
Với sự trợ giúp của Google, tôi đã phát hiện ra rằng iptables theo mặc định không hoạt động đối với cầu nối lớp 2 và tôi cần kích hoạt tính năng đó:
modprobe br_netfilter
tiếng vang 1 > /proc/sys/net/bridge/bridge-nf-call-iptables
[Thẩm quyền giải quyết]
Ngoài ra một số chỉnh sửa bổ sung không giải quyết được vấn đề:
tiếng vang 0 > /proc/sys/net/ipv4/conf/default/rp_filter
tiếng vang 0 > /proc/sys/net/ipv4/conf/all/rp_filter
[Thẩm quyền giải quyết]
Mọi thứ trở nên tồi tệ hơn khi không có máy khách nào kết nối với điểm truy cập của Pi có quyền truy cập internet.
Tôi không thấy vấn đề là gì. Bất kỳ ý tưởng?
Có lẽ điều đó giúp:
$ cat /etc/os-phát hành
PRETTY_NAME="Raspbian GNU/Linux 10 (bùng nổ)"