Logo CNTTShop.vn

Hotline: 0979 925 386

Công Ty TNHH Công Nghệ Việt Thái Dương
NTT03, Line 1, Thống Nhất Complex, 82 Nguyễn Tuân, Thanh Xuân, Hà Nội.
Danh mục sản phẩm

DHCP Snooping - Hoạt động và cách cấu hình trên Cisco

 

Trong bài viết này, chúng ta sẽ cùng tìm hiểu về tính năng DHCP Snooping và cách cấu hình nó trên các dòng switch Cisco nhé.

DHCP Snooping là gì?

DHCP Snooping là 1 tính năng bảo mật thuộc lớp 2, hoạt động giống như 1 firewall giữa các server DHCP, giúp chúng ta có thể ngăn chặn các DHCP Server giả mạo trong mạng. DHCP Snooping là 1 tính năng chuẩn quốc tế, do vậy thì các bạn có thể cấu hình nó trên tất cả các thiết bị hỗ trợ, trong video này thì mình sẽ sử dụng Switch Cisco trên PnetLab để demo. Nó chỉ khác nhau về mặt cấu hình, còn hoạt động thì tương tự nhau.

DHCP Snooping thì hoạt động dựa trên VLAN, do vậy khi cấu hình các bạn cần phải kích hoạt trên từng VLAN, hoặc trên tất cả các VLAN đang có trong mạng.

Hoạt động của DHCP

Trước tiên chúng ta sẽ cùng tìm hiểu về hoạt động của DHCP trong mạng trước nhé.

quy trình và hoạt động của DHCP

Ban đầu khi 1 thiết bị kết nối vào mạng, nó sẽ gửi ra 1 bản tin DHCP Discover ra toàn mạng. Khi đó toàn bộ các thiết bị trong LAN sẽ đều nhận được. Tuy nhiên chỉ các thiết bị có bật tính năng DHCP Server sẽ xử lý gói tin này, và phản hồi lại 1 gói tin khác là DHCP Offer. Còn lại các thiết bị khác sẽ drop gói tin này. Gói tin DHCP Offer sẽ chứa thông tin địa chỉ IP và các option khác mà các bạn cấu hình trên DHCP Server. Địa chỉ IP này sẽ là địa chỉ IP chưa được sử dụng trong mạng.

Sau khi Client nhận được gói tin Offer với thông tin IP, nó sẽ gửi lại 1 gói tin Request về Server đã gửi Offer cho nó, cũng với thông tin IP mà Server đã gửi cho.

Cuối cùng là DHCP Server sẽ gửi lại bản tin ACK để xác nhận, chưa các thông tin IP mà 2 bên đã trao đổi, sau đó Client có thể sử dụng IP đó để giao tiếp trong mạng.

Các vấn đề thường xảy ra với DHCP Server

Như vậy sẽ có vấn đề lớn đối với DHCP. Trường hợp đầu tiên là nếu có 1 hacker nào đó giả mạo 1 DHCP Server trong mạng của bạn, với gateway chính là router của hacker. Khi đó thì toàn bộ traffic đi ra sẽ qua router hoặc switch của hacker, và hacker này có thể đọc được toàn bộ dữ liệu của người dùng. Router của Hacker vẫn có Internet nên người dùng hoàn toàn không biết về vấn đề này, do họ vẫn truy cập Internet bình thường. Nếu các thông tin nhạy cảm như các dữ liệu nội bộ, các thông tin giao dịch bị lộ ra ngoài thì rất nguy hiểm.

tấn công giả mạo DHCP

Trường hợp 2 là trường hợp rất hay xảy ra, mà thường là do vô tình. Đó là trường hợp mà 1 nhân viên trong phòng ban nào đó mang 1 thiết bị router wifi vào cắm trong mạng để sử dụng wifi cá nhân. Nhưng vô tình thì router wifi đó được enable DHCP lên, và họ cắm dây mạng vào cổng LAN nên DHCP Server này sẽ cấp ngược IP vào mạng LAN của các bạn. Khi đó thì những thiết bị nào nhận được IP từ bộ router wifi này đều mất mạng do bộ Router wifi này sẽ không có kết nối Internet trên dải mạng riêng của Wifi. Và nếu tại các địa điểm như bệnh viện, hay các nhà xưởng có nhiều tòa nhà thì chúng ta sẽ rất mất thời gian để tìm ra.

trường hợp người dùng vô tình cắm nhầm DHCP Server vào mạng

Hoạt động của DHCP Snooping

Do vậy DHCP Snooping sẽ giúp chúng ta giải quyết được các vấn đề này.

Ý tưởng của DHCP Snooping dựa vào các gói tin DHCP mà mình vừa kể trên. Ban đầu Client gửi ra các gói tin Discover là dạng broadcast tới toàn LAN, sau đó các Server sẽ trả về gói Offer.

cách hoạt động của DHCP Snooping

Khi đó trên switch chạy DCHP Snooping sẽ chia các port role là TrustUntrust. Chỉ có các cổng trust mới cho các gói tin DHCP Offer đi qua, như vậy thì các DHCP server giả mạo trên các cổng untrust sẽ không thể cấp ngược được IP vào mạng do gói tin DHCP Offer sẽ bị drop ngay trên switch.

Các bạn chỉ cần cấu hình cổng nối lên DHCP Server của mình là cổng trust là xong, còn lại mặc định các cổng khi bật DHCP Snooping lên thì các cổng đều là untrust.

Sau đó switch sẽ lưu lại 1 bảng DHCP Snooping Database, DHCP Snooping database cũng có thể được sử dụng cho các tính năng như Dynamic ARP inspection hoặc IP Source Guard để tăng bảo mật cho mạng.

Theo nguyên lý thì các switch sẽ drop gói tin DHCP Offer đi qua các cổng Untrust, nghĩa là ban đầu gói tin Discover sẽ vẫn gửi ra toàn mạng. Tuy nhiên thì trên switch Cisco hành vi sẽ khác. Các switch được bật DHCP Snooping sẽ chỉ chuyển tiếp gói tin Discover ra các cổng trust ngay từ đầu, do đó thì nó ngăn chặn các DHCP Server giả mạo nhận được ngay từ đầu. Do vậy nó sẽ tối ưu được cả traffic trong mạng, giúp giảm đáng kể các gói tin DHCP Discover.

Hướng dẫn cấu hình DHCP Snooping trên Cisco

Ok về cấu hình của DHCP Snooping thì rất đơn giản, mình sẽ cấu hình luôn trên mô hình bên dưới.

mô hình sử dụng DHCP snooping

Mình sẽ cấu hình DHCP server cho VLAN 1 trên SW-Core. Tất cả các switch mình đều đang để mặc định thuộc VLAN 1.

SW-Core#configure terminal
Enter configuration commands, one per line.  End with CNTL/Z.
SW-Core(config)#ip dhcp pool VLAN1
SW-Core(dhcp-config)#network 10.0.0.0 255.255.255.0
SW-Core(dhcp-config)#default-router 10.0.0.1
SW-Core(dhcp-config)#exit
SW-Core(config)#interface vlan 1
SW-Core(config-if)#no shutdown
SW-Core(config-if)#ip add 10.0.0.1 255.255.255.0

Bây giờ thì cả 2 PC bên dưới mạng LAN sẽ nhận được IP từ SW-Core cấp xuống, thuộc dải 10.0.0.0/24.

Giả sử bây giờ mình có 1 DHCP khác trong mạng, mình sẽ cấu hình trên switch Hacker, trong thực tế thì nó thường là các bộ router wifi mà người dùng lắp vào. Mình sẽ cấu hình cho nó cấp 1 dải mạng khác.

Hacker#configure terminal
Enter configuration commands, one per line.  End with CNTL/Z.
Hacker(config)#ip dhcp pool VLAN1
Hacker(dhcp-config)#network 192.168.1.0 255.255.255.0
Hacker(dhcp-config)#default-router 192.168.1.1
Hacker(dhcp-config)#exit
Hacker(config)#interface vlan 1
Hacker(config-if)#no shutdown
Hacker(config-if)#ip address 192.168.1.1 255.255.255.0

Bây giờ khi các PC nhận IP thì nó sẽ nhận ngẫu nhiên giữa 2 Server này, server nào gửi lại gói DHCP Offer trước thì các PC sẽ nhận IP từ server đó.

để các client nhận IP động từ DHCP Server

Các bạn có thể thấy PC đã nhận ngẫu nhiên IP, có lúc nhận IP từ hacker, có lúc nhận từ Switch Core. Vấn đề này chúng ta không control được do nó phục thuộc vào đường truyền mạng, server có đang xử lý nhiều gói tin không… DHCP Server nào gần client hơn, hoặc tài nguyên còn nhiều hơn thì khả năng cao sẽ cấp IP cho client đó.

Trong trường hợp này mình sẽ bật DHCP Snooping cho VLAN 1 trên SW-Access, và cấu hình cổng e0/0 là cổng Trust, còn các cổng khác mặc định sẽ là Tntrust. Khi đó thì chỉ switch core kết nối với cổng e0/0 của switch access mới có thể gửi gói tin DHCP Offer qua.

SW-Access#configure terminal
Enter configuration commands, one per line.  End with CNTL/Z.
SW-Access(config)#ip dhcp snooping //Bật DHCP Snooping
SW-Access(config)#ip dhcp snooping vlan 1 //Bật DHCP Snooping trên VLAN 1
SW-Access(config)#interface e0/0
SW-Access(config-if)#ip dhcp snooping trust //Cấu hình cổng e0/0 là trust, tất cả các cổng còn lại là Untrust

Các bạn cũng có thể giới hạn số lượng gói tin DHCP trên các cổng mạng bằng lệnh ip dhcp snooping limit rate.

SW-Access(config)#int e0/0
SW-Access(config-if)#ip dhcp snooping limit rate ?
  <1-2048> DHCP snooping rate limit

SW-Access(config-if)#ip dhcp snooping limit rate

Sau đó là số lượng gói tin DHCP được cho phép trên 1s. Nó sẽ được tính bằng packet per second.

Cấu hình này có thể giúp các bạn phòng chống được các trường hợp tấn công làm cạn kiệt DHCP. Các máy tính của hacker, hoặc các máy bị nhiễm virut sẽ liên tục gửi các yêu cầu DHCP lên server, làm cho cạn IP trên server hoặc làm cho server bị quá tải. Khi đó các máy tính khác trong mạng LAN sẽ không nhận được IP nữa. Các bạn có thể tính dựa trên số lượng Client trong mạng nhân với số lượng gói tin DHCP, sau đó tính dư ra thêm khoảng 1/3 để dự phòng.

Kiểm tra

Trên các switch bật DHCP Snooping thì các bạn có thể show được thông tin về Client bằng lệnh show ip dhcp snooping binding. Bảng này sẽ khác nhau giữa các switch.

show ip dhcp snooping binding

Bảng này sẽ có thông tin về MAC, IP, loại là DHCP Snooping, vlan 1 và cổng kết nối của client.

Mình sẽ bật debug trên switch access để các bạn xem hành vi xử lý trên switch Cisco nhé.

SW-Access#debug ip dhcp snooping event
DHCP Snooping Event debugging is on
SW-Access#debug ip dhcp snooping packet
DHCP Snooping Packet debugging is on
SW-Access#

Mình sẽ cho PC12 nhận lại IP. Trên SW-Access sẽ có các log liên quan đến quá trình xử lý gói tin DHCP.

SW-Access#
*Nov 18 03:50:16.925: DHCP_SNOOPING: received new DHCP packet from input interface (Ethernet0/2)
*Nov 18 03:50:16.925: DHCP_SNOOPING: process new DHCP packet, message type: DHCPDISCOVER, input interface: Et0/2, MAC da: ffff.ffff.ffff, MAC sa: 0050.7966.6879, IP da: 255.255.255.255, IP sa: 0.0.0.0, DHCP ciaddr: 0.0.0.0, DHCP yiaddr: 0.0.0.0, DHCP siaddr: 0.0.0.0, DHCP giaddr: 0.0.0.0, DHCP chaddr: 0050.7966.6879
*Nov 18 03:50:16.925: DHCP_SNOOPING: message type : DHCPDISCOVER DHCP ciaddr: 0.0.0.0, DHCP yiaddr: 0.0.0.0, DHCP siaddr: 0.0.0.0, DHCP giaddr: 0.0.0.0, DHCP chaddr: 0050.7966.6879
*Nov 18 03:50:16.925: DHCP_SNOOPING_SW: bridge packet get invalid mat entry: FFFF.FFFF.FFFF, packet is flooded to ingress VLAN: (1)
*Nov 18 03:50:16.925: DHCP_SNOOPING_SW: bridge packet send packet to port: Ethernet0/0, vlan 1.
*Nov 18 03:50:16.926: DHCP_SNOOPING: received new DHCP packet from input interface (Ethernet0/0)
*Nov 18 03:50:16.926: DHCP_SNOOPING: process new DHCP packet, message type: DHCPOFFER, input interface: Et0/0, MAC da: 0050.7966.6879, MAC sa: aabb.cc80.0100, IP da: 10.0.0.2, IP sa: 10.0.0.1, DHCP ciaddr: 0.0.0.0, DHCP yiaddr: 10.0.0.2, DHCP siaddr: 0.0.0.0, DHCP giaddr: 0.0.0.0, DHCP chaddr: 0050.7966.6879
*Nov 18 03:50:16.926: DHCP_SNOOPING: message type : DHCPOFFER DHCP ciaddr: 0.0.0.0, DHCP yiaddr: 10.0.0.2, DHCP siaddr: 0.0.0.0, DHCP giaddr: 0.0.0.0, DHCP chaddr: 0050.7966.6879
*Nov 18 03:50:16.926: DHCP_SNOOPING: direct forward dhcp replyto output port: Ethernet0/2.
*Nov 18 03:50:17.925: DHCP_SNOOPING: received new DHCP packet from input interface (Ethernet0/2)
*Nov 18 03:50:17.926: DHCP_SNOOPING: process new DHCP packet, message type: DHCPREQUEST, input interface: Et0/2, MAC da: aabb.cc80.0100, MAC sa: 0050.7966.6879, IP da: 255.255.255.255, IP sa: 0.0.0.0, DHCP ciaddr: 10.0.0.2, DHCP yiaddr: 0.0.0.0, DHCP siaddr: 0.0.0.0, DHCP giaddr: 0.0.0.0, DHCP chaddr: 0050.7966.6879
*Nov 18 03:50:17.926: DHCP_SNOOPING: message type : DHCPREQUEST DHCP ciaddr: 10.0.0.2, DHCP yiaddr: 0.0.0.0, DHCP siaddr: 0.0.0.0, DHCP giaddr: 0.0.0.0, DHCP chaddr: 0050.7966.6879
*Nov 18 03:50:17.926: DHCP_SNOOPING_SW: bridge packet send packet to port: Ethernet0/0, vlan 1.
*Nov 18 03:50:17.926: DHCP_SNOOPING: received new DHCP packet from input interface (Ethernet0/0)
*Nov 18 03:50:17.926: DHCP_SNOOPING: process new DHCP packet, message type: DHCPACK, input interface: Et0/0, MAC da: 0050.7966.6879, MAC sa: aabb.cc80.0100, IP da: 10.0.0.2, IP sa: 10.0.0.1, DHCP ciaddr: 10.0.0.2, DHCP yiaddr: 10.0.0.2, DHCP siaddr: 0.0.0.0, DHCP giaddr: 0.0.0.0, DHCP chaddr: 0050.7966.6879
*Nov 18 03:50:17.926: DHCP_SNOOPING: message type : DHCPACK DHCP ciaddr: 10.0.0.2, DHCP yiaddr: 10.0.0.2, DHCP siaddr: 0.0.0.0, DHCP giaddr: 0.0.0.0, DHCP chaddr: 0050.7966.6879
*Nov 18 03:50:17.926: DHCP_SNOOPING: add binding on port Ethernet0/2.
*Nov 18 03:50:17.926: DHCP_SNOOPING: dhcp binding entry already exists, update binding lease time to (86400) seconds
*Nov 18 03:50:17.926: DHCP_SNOOPING: direct forward dhcp replyto output port: Ethernet0/2.
SW-Access#

Ban đầu switch sẽ nhận được 1 gói tin DHCP Discover từ cổng e0/2 là cổng nối với PC12 với MAC đích là broadcast FFFF.FFFF.FFFF.

Gói tin nhận được từ VLAN 1, nên nó sẽ được chuyển vào VLAN 1, và sau đó nó chỉ gửi gói tin qua port e0/0, là cổng Trust.

Switch core nhận được sẽ gửi lại gói tin DHCP Offer qua cổng E0/0 với các thông tin IP, nó là cổng trust nên sẽ được switch cho phép và đẩy qua cổng e0/2 cho PC12.

Và cuối cùng switch sẽ binding địa chỉ IP và port e0/2 với các thông tin của Client. Thông tin này sẽ được sử dụng vào các mục đích khác nhau để chống các loại tấn công liên quan đến giả mạo ARP, giả mạo IP…

Như vậy chúng ta vừa ngăn chặn được các server giả mạo, vừa giảm được các gói tin DHCP Discover trong mạng.

Ngoài ra thì các bạn cũng có thể kết hợp DHCP Snooping cùng với nhiều tính năng bảo mật khác để ngăn chặn việc giả địa chỉ IP hoặc MAC để lấy cắp thông tin trong mạng, mình sẽ làm tiếp các video liên quan đến DHCP Snooping trong thời gian tới.

Ok như vậy chắc các bạn cũng đã hiểu về DHCP Snooping và cách ứng dụng nó vào trong 1 mô hình cụ thể rồi phải không. Nếu các bạn có bất kỳ góp ý hay thắc mắc nào, hãy để lại comment để mọi người cùng trao đổi nhé.

Chúc các bạn thành công!

Lê Văn Tuấn

Là chuyên gia trong lĩnh vực Network System, Security, Server.. Có kinh nghiệm nhiều năm tư vấn giải pháp mạng, triển khai các giải pháp CNTT và phân phối thiết bị mạng Switch, Wifi, Router, Máy chủ Server, Lưu trữ Storage, Tường lửa Firewall, Video Conferencing, Module quang, Load Balancing. Hiện tại tôi là Founder và Managing Director công ty TNHH Công Nghệ Việt Thái Dương (CNTTShop.vn).

Bình luận bài viết!

Có 5 bình luận:
M
Minh
Cảm ơn AD, Vậy là các cổng uplink sẽ là cổng trust còn lại là untrust. Cảm ơn a rất nhiều ạ
6 tháng
C
CNTTShopAdmin

Phần cổng nối giữa các switch thì tùy từng hành vi của hãng, Có hãng bạn sẽ cần phải disable Untrust trên các cổng downlink nối các switch. Còn với Cisco chỉ cần enable Trust trên các cổng uplink

M
Minh
Em vẫn chưa hiểu lắm Ví dụ: Em có mô hình bao gồm 1 router cấp DHCP--> nối xuống sw tổng --> nối xuống nhiều sw access Vậy cổng trust ở đây là mình chỉ cần kích hoạt cổng link từ router xuống sw tổng thôi hay sao, vậy đường link giữa các switch access với sw tổng thì có cần kích hoạt trust hay ko ạ? kích hoạt ở 2 đầu link trunk hay ko cần kích hoạt chỉ cần làm cổng uplink xuống sw access ạ, em đang tìm hiểu về mạng lên nhờ ad giải đáp giúp ạ. Cảm ơn Ad
6 tháng
C
CNTTShopAdmin

Về cơ bản thì DHCP Snooping hoạt động local theo từng switch, và xử lý bằng cách chặn các gói tin offer trả về theo chiều từ DHCP Server tới Client. Do vậy Cứ cổng nào có gói offer từ DHCP theo chiều IN sẽ là Trust, theo chiều out (nếu là cổng nối giữa các switch trong hệ thống) thì không cấu hình, còn lại sẽ là untrust.  Ví dụ mô hình PC => port1 SW-ACC => port2 SW-ACC => port1 SW-Core => port 2 SW-Core => DHCP Server. Thì Port1 SW-ACC sẽ là Untrust, Port2 SW-ACC là Trust, Port1 SW-Core không cấu hình, Port2 SW-Core là Trust. 

M
Minh
Vậy là cổng nối giữa các sw là cổng trunk thì mình đều phải cấu hình là cổng Trust đúng ko a ad? Ví dụ cổng 10 trên sw 1 và công 10 trên sw 2 nối với nhau thì mình đều kích hoạt là TRust
6 tháng
C
CNTTShopAdmin

Cổng nào nối tới DHCP Server thì anh mới cần cấu hình là Trust. Còn lại các cổng khác dù là trunk hay access thì đều là Untrust

M
Minh
Nếu mình có nhiều switch, thì các cổng trunk với nhau là mình kích hoạt là cổng trust hay mình chỉ kích hoạt cổng uplink thôi a?
7 tháng
C
CNTTShopAdmin

Cổng Trust sẽ là cổng nối tới DHCP Server anh nhé. Mọi cổng gửi và nhận các gói DHCP từ Trust Server đều cần cấu hình là Trust

Q
Quân
ip dhcp snooping ip dhcp snooping vlan 1-4096 no ip dhcp snooping information option int g1/0/1-...... (Chọn cổng cắm nên SW Core) ip dhcp snooping trust int range g1/0/2-24 switchport port-security max 3 no ip dhcp snooping trust ip dhcp snooping limit rate 10 Mình có tạo DHCP Snooping như này trên C1000 mà khi cắm tenda vào vẫn nhận và phát wifi kết nối thiết bị ra net được .bạn xem giúp mình xem có sai ở đâu không bạn
1 năm
C
CNTTShopAdmin

bạn thử debug ip dhcp snooping packet và events lên để kiểm tra xem hành vi lúc này thế nào nhé.

Chuyên mục chính
Bài viết liên quan
Sản phẩm liên quan