Về chủ đề khác của tôi, tôi đã nói về một số điều thú vị về chính sách và trạng thái của iptables , bây giờ tôi muốn hiểu thêm về cách DHCP hoạt động và cách iptables hiểu nó.
ETH0 được kết nối với bộ chuyển mạch chính của tôi để nhận ip động từ bộ định tuyến của tôi để có được không chỉ truy cập internet mà còn là quyền truy cập vào mạng bên ngoài của tôi.
ETH1 là thẻ nội bộ được kết nối với bộ chuyển mạch bên trong nơi máy khách X nhận IPS của họ từ máy chủ này
Mạng ETH1 là 192.168.1.0/255.255.255.0 trong đó ip máy chủ là 192.168.1.254.
Theo những gì tôi hiểu, dhcp là một giao thức khởi động, vì vậy ngay cả khi bạn có chính sách tường lửa để DROP mọi thứ, mạng của bạn vẫn sẽ nhận được DHCP, trong các thử nghiệm mà tôi đã làm là đúng.
Từ tcpdump:
root@test:~# tcpdump -i eth1 port 67 or 68
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on eth1, link-type EN10MB (Ethernet), capture size 96 bytes
11:34:03.943928 IP 192.168.1.2.bootpc > 255.255.255.255.bootps: BOOTP/DHCP, Request from 00:0c:29:29:52:8b (oui Unknown), length 303
11:34:03.957647 IP 192.168.1.254.bootps > 192.168.1.2.bootpc: BOOTP/DHCP, Reply, length 300
11:34:06.492153 IP 192.168.1.2.bootpc > 192.168.1.254.bootps: BOOTP/DHCP, Request from 00:0c:29:29:52:8b (oui Unknown), length 303
11:34:06.506593 IP 192.168.1.254.bootps > 192.168.1.2.bootpc: BOOTP/DHCP, Reply, length 300
Tôi đã thực hiện một quy tắc đăng nhập đơn giản để xem iptables làm gì:
root@test:~# tail -f /var/log/syslog
Oct 15 11:30:58 test kernel: IN=eth1 OUT= MAC=ff:ff:ff:ff:ff:ff:00:0c:29:29:52:8b:08:00 SRC=192.168.1.2 DST=255.255.255.255 LEN=331 TOS=0x00 PREC=0x00 TTL=128 ID=9527 PROTO=UDP SPT=68 DPT=67 LEN=311
Oct 15 11:31:43 test kernel: IN=eth1 OUT= MAC=ff:ff:ff:ff:ff:ff:00:0c:29:29:52:8b:08:00 SRC=192.168.1.2 DST=255.255.255.255 LEN=331 TOS=0x00 PREC=0x00 TTL=128 ID=9529 PROTO=UDP SPT=68 DPT=67 LEN=311
Oct 15 11:33:32 test kernel: IN=eth1 OUT= MAC=ff:ff:ff:ff:ff:ff:00:0c:29:29:52:8b:08:00 SRC=192.168.1.2 DST=255.255.255.255 LEN=331 TOS=0x00 PREC=0x00 TTL=128 ID=9531 PROTO=UDP SPT=68 DPT=67 LEN=311
Oct 15 11:34:03 test kernel: IN=eth1 OUT= MAC=ff:ff:ff:ff:ff:ff:00:0c:29:29:52:8b:08:00 SRC=192.168.1.2 DST=255.255.255.255 LEN=331 TOS=0x00 PREC=0x00 TTL=128 ID=9533 PROTO=UDP SPT=68 DPT=67 LEN=311
Đây là quy tắc iptables của tôi tại thời điểm:
# deny all traffic
$IPT -P INPUT DROP
$IPT -P FORWARD DROP
$IPT -P OUTPUT DROP
# Use stateful inspection feature to only allow incoming connections
# related to connections I have already established myself
$IPT -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
$IPT -A OUTPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
# allow all traffic on lo interface
$IPT -A INPUT -i lo -j ACCEPT
$IPT -A OUTPUT -o lo -j ACCEPT
Vì vậy, ngay cả khi CHÍNH SÁCH mặc định bỏ mọi thứ, tôi vẫn nhận được DHCP trên mạng của mình trong khi phải mất nhiều thời gian hơn để làm mới IP và như vậy.
Nếu tôi thêm quy tắc theo vào tường lửa của mình:
$IPT -I OUTPUT -o $INTIF -p udp --dport 67:68 --sport 67:68 -j ACCEPT
Sẽ mất rất nhiều thời gian để cập nhật bất kỳ dhcp khách hàng nào.
Xem xét ở trên:
- Tại sao nó thực sự mất nhiều thời gian hơn để cập nhật nó thậm chí nghĩ rằng nó không bị chặn?
- Có thể DROP máy chủ dhcp mà không cần tắt nó không?
- có thể CHẤP NHẬN máy chủ dhcp trong iptables với BOOTP không? làm thế nào được thực hiện?
Nếu bạn biết các liên kết tốt, tôi sẽ không mất nhiều :)
Are you monitoring the network interface in promiscuous mode
tôi vẫn đang học ...