Lab CCNA kết hợp Linux để chặn web bằng DNS và cấm đặt tĩnh

LAB CHẶN VÀO WEB BẰNG DNS LOCAL VÀ CẤM ĐẶT TĨNH DNS KHÁC
Ví dụ 8.8.8.8

 

Mô hình:

PHẦN 1: CÀI NHANH DNS TRÊN UBUNTU VÀ CHẶN WEB

Server linux nhẹ tải ở đây  (đã có sẵn docker, đã bật forwarding_ip như router)

Sau đó ta cho ăn vào cloud0 của eve để ra được mạng rồi cài:

- Đặt IP cho cổng e1 (ứng với ens4)

ip addr add 192.168.1.10/24 dev ens4 (nếu cần đặt mãi mãi thì vào file netplan , còn đây là đặt nhanh để làm lab, sẽ biến mất sau khi reboot ubuntu)

- Tạo file dns

mkdir -p /opt/dns-lab

nano /opt/dns-lab/dnsmasq.conf

# Log các truy vấn để debug cho dễ (xem docker logs)

log-queries

# Không đọc file /etc/resolv.conf của host (để tránh loop hoặc conflict)

no-resolv

# Khai báo DNS Upstream (Dùng Google hoặc Cloudflare để phân giải các web khác)

server=8.8.8.8

server=1.1.1.1

# --- PHẦN CHẶN FACEBOOK ---

# Cú pháp: address=/domain/ip_trỏ_về

# Dòng này sẽ chặn cả facebook.com lẫn www.facebook.com, m.facebook.com...

address=/facebook.com/127.0.0.1

# (Tùy chọn) Chặn thêm domain khác nếu muốn

# address=/tiktok.com/127.0.0.1

- Rồi cài dnsmasq theo lệnh docker này:

docker run -d \

  --name my-dns-server \

  --restart always \

  -p 192.168.1.10:53:53/tcp \

  -p 192.168.1.10:53:53/udp \

  -p 8080:8080 \

  -v /opt/dns-lab/dnsmasq.conf:/etc/dnsmasq.conf \

  --cap-add=NET_ADMIN \

  jpillora/dnsmasq

Gõ thêm:

docker logs -f my-dns-server để xem log request DNS

ss -tulpn | grep 53 : xem có process nào đang chiếm cổng 53 ko

Nếu bị firewall chặn thì allow cổng 53:

ufw allow 53/udp

ufw allow 53/tcp

ufw reload

Hoặc chơi off tất luôn:

ufw disable

sudo systemctl stop systemd-resolved

sudo systemctl disable systemd-resolved

Sau đó trên PC client:

Gõ thử nslookup 24h.com.vn

Thấy OK, thử vào web xem có ok ko

=================

Giờ thử chặn vnexpress, và FB bằng cách vào file

nano /opt/dns-lab/dnsmasq.conf

hoặc vào giao diện GUI

http://192.168.199.132:8080/ (Đây là IP của Ubuntu)

Thêm dòng thử facebook và vnexpress trỏ vào 127.0.0.1 thì thấy đã "tịt" ko truy cập được nữa

==================

PHẦN 2: CẤM NGƯỜI DÙNG ĐẶT TĨNH DNS 8888 hoặc 1111...

Trên router mình có thể NAT 8.8.8.8 thành IP DNS của mình 192.168.1.10 hoặc đơn giản là chặn luôn

Cách 1: Chặn luôn tại gateway bằng ACL

Trên R1:

! 1. Tạo ACL chặn port 53 tới 8.8.8.8 (và cả 8.8.4.4 cho chắc)

access-list 101 deny udp any host 8.8.8.8 eq 53

access-list 101 deny tcp any host 8.8.8.8 eq 53

access-list 101 deny udp any host 8.8.4.4 eq 53

access-list 101 deny tcp any host 8.8.4.4 eq 53

! 2. Cho phép các traffic còn lại đi qua bình thường

access-list 101 permit ip any any

! 3. Áp dụng vào cổng LAN (Chiều traffic đi VÀO Router)

interface e0/0

 ip access-group 101 in

 exit

Cách 2: NAT IP DNS public thành DNS nội bộ (Nếu DNS nằm khác dải mạng PC, ví dụ DNS là 192.168.2.10)

Trên R1:

! 1. Cấu hình IP cho 2 cổng

interface e0/0

 description KET_NOI_LAN

 ip address 192.168.1.1 255.255.255.0

 ip nat inside

 no shutdown

interface e0/2

 description KET_NOI_SERVER_DNS

 ip address 192.168.2.1 255.255.255.0

 ip nat outside

 no shutdown

! 2. Cấu hình NAT tĩnh (Static NAT) để Fake IP

! Câu lệnh này nghĩa là: "Tao quy định thằng 192.168.2.10 (Linux) chính là đại diện của 8.8.8.8"

! Khi traffic từ Inside đi tìm 8.8.8.8, Router sẽ lái nó vào 192.168.2.10

ip nat inside source static udp 192.168.2.10 53 8.8.8.8 53

ip nat inside source static tcp 192.168.2.10 53 8.8.8.8 53

! Lưu ý: Nếu muốn fake cả 8.8.4.4 thì làm thêm dòng nữa, trỏ về cùng 1 con Linux cũng được

ip nat inside source static udp 192.168.2.10 53 8.8.4.4 53

 

Bài viết cùng danh mục