ACME 85network-share 85network-share logo Average rating: 4.4, based on 89 reviews from $1 to $100

85Network

85network-share

Cập nhật

Chống STP Spanning Tree Protocol attacks

Chống STP attacks: Spanning Tree Protocol

STP toolkit spanning tree protocol attacks

1. Spanning Tree Protocol

Tiếp tục chuỗi bài tấn công layer 2 và 3 trong mô hình TCP/IP hôm nay 85network-share xin giới thiệu đến các bạn đọc bài lab STP Toolkit. là một giao thức ở layer 2 trong mô hình TCP/IP, được định nghĩa trong chuẩn IEEE 802.1D, stp hoạt động khi hệ thống mạng có hai con switch trở lên.
Khi switch nhận được 1 frame dữ liệu thì nó sẽ học source MAC vào bảng MAC address, ban đầu bảng MAC trắng(empty) nên nó sẽ flooded frame ra tất cả các cổng. 

Cho một mô hình...nếu hệ thống kết nối với nhau thì sẽ gây ra 3 vấn đề sau:

  • Bão Broadcast.
  • Bảng địa chỉ MAC không ổn định.
  • Nhiều bản sao Multiple Frame.
broadcast storm

Hiện tượng Loop trong mạng khi các switch đấu nối theo 1 vòng tròn khép kín.
EEE đưa ra chuẩn 802.1D(Spanning Tree Protocol) để chống loop. Về mặt luận lý thì nó sẽ khóa 1 port (Block port).

STP attacks: STP (Spanning Tree Protocol) là một giao thức ở lớp 2, được sử dụng để chỉ định đường đi của các frames dữ liệu. Trong thực tế, để dự phòng trường hợp kết nối từ thiết bị A đến thiết bị B bị đứt, sẽ luôn có ít nhất 2 kết nối giữa A và B. Tuy nhiên lúc này lại xảy ra trường hợp là gói tin không biết sẽ dùng đường nào để đi từ A đến B và ngược lại. Ngoài ra một trường hợp vô cùng tồi tệ khác được gọi là vòng lặp dữ liệu (loops), xảy ra khi một frame dữ liệu sau khi đi qua kết nối số 1 đến điểm đích, thay vì dừng lại nó lại đi tiếp qua kết nối số 2 đồng thời tự khuếch đại chính nó và tạo nên một vòng lặp dữ liệu không ngừng và lượng dữ liệu ngày càng lớn có thể gây ra sập mạng.

Để tìm ra block port nó trải qua các bước:

  • Bầu chọn Root Switch
  • Bầu chọn Root port
  • Bầu chọn Designated port
  • Port còn lại là Alternated Port

Quá trình bầu chọn của giao thức Spanning Tree Protocol thì các bạn tham khảo thêm ở tại vnpro.vn. Ở bài này 85network-share sẻ tập trung vào bài lab STP Toolkit.

stp attacks

STP timer

  • - Helo timer: định kỳ sau thời gian 2s sẽ gửi BPDU
  • - Forward timer: 15(s)
  • - Max-age times: 20(s)
Nếu Root-Sw chết hay port block không nhận được BPDU thì mất 20s nó mới hoạt động (tự mở lên hoặc bầu chọn lại Root-sw)

STP state

Các trạng thái khi Switch khởi động:
  1. Disable: down
  2. Blocking: nhận BDPU, ko gửi BPDU, không học MAC, không forward frame
  3. Listening: nhận BDPU, gửi BPDU, không học MAC, không forward frame
  4. Leaning: nhận BDPU, gửi BPDU, học MAC, không forward frame
Forwarding: nhận BDPU, gửi BPDU, học MAC, forward frame
  • - Việc chuyển từ trạng thái: Blocking sang listening mất 20(s)
  • - Việc chuyển từ trạng thái: Listening sang Leaning mất 15(s)
  • - Việc chuyển từ trạng thái: Leaning sang Forwarding mất 15(s)
Vậy khi Switch khởi động xong hoặc khi cắm dây vào port thì phải mất 30(s) đèn chuyển sang màu xanh.

2. Bài Lab STP ToolKit:

cho sơ đồ như hình:
sơ đồ STP toolkit

2.1 Yêu cầu:

Tạo các vlan 10, 20 cấu hình trunking, cấu hình VTP, cấu hình stp (sw1 làm root-switch, sw2 làm backup Root trên các vlan đã tạo)

STP Toolkit:

  1. Trên SW3 thực hiện gán một số cổng vào các VLAN 10 và 20 vừa tạo. Các cổng này sẽ được sử dụng để kết nối đến các end – user đầu cuối.
  2. Cấu hình để các end – user port này có thể được sử dụng ngay lập tức khi kết nối thành công mà không cần phải trải qua các khoảng thời gian delay
  3. Các user thuộc VLAN 10 không được phép kết nối các thiết bị có phát ra BPDU vào các access – port thuộc VLAN 10.
  4. Thực hiện cấu hình đảm bảo nếu có user cố tình vi phạm kết nối thiết bị có phát ra BPDU vào port bất kỳ của VLAN 10, port này sẽ bị shutdown.
  5. Cấu hình thêm để nếu sự vi phạm không còn diễn ra, port vi phạm sẽ được tự động mở lại sau 2 phút.
  6. Các user thuộc VLAN 20 được phép kết nối thiết bị tập trung có phát ra BPDU vào các cổng của VLAN 20 tuy nhiên các thiết bị này không được phép chiếm quyền root switch của sơ đồ hiện hành. Thực hiện cấu hình để đảm bảo yêu cầu trên: nếu thiết bị của end – user kết nối vào một port của VLAN 20 cố tình phát ra BPDU tối ưu hơn để chiếm quyền root, port nối đến thiết bị này sẽ bị khóa không truyền được dữ liệu nhưng không bị shutdown. Khi sự vi phạm kết thúc, port sẽ được mở ra lại để truyền dữ liệu.
  7. Thực hiện cấu hình để SW2 lọc bỏ toàn bộ BPDU gửi đến SW3.
  8. Quan sát trạng thái để nắm vai trò STP trên cổng F0/22 của Sw3 trên các vlan sau khi hội tụ.

Cấu hình Trunking trên các Switch:

stp attack
stp trunking

Cấu hình VTP trên các Switch:

  • SW1, SW2: Server.
  • SW3: Client. Domain name: 85network. Password: 123. 
  • Trên SW1, tạo VLAN 10, 20. Kiểm tra rằng các VLAN này đã lan truyền đến được tất cả các switch.

SW1(config)#vtp domain 85network
SW1(config)#vtp password 123
SW2(config)#vtp domain 85network
SW2(config)#vtp password 123
SW3(config)#vtp mode client
SW3(config)#vtp domain 85network
SW3(config)#vtp password 123

SW1(config)#vlan 10
SW1(config-vlan)#exit
SW1(config)#vlan 20
SW1(config-vlan)#exit

Kiểm tra trang thái trên các switch bằng câu lệnh: show vtp status và show vtp password

Cấu hình STP: đảm bảo SW1 làm Root – SW, SW2 làm backup Root trên các VLAN đã tạo.

SW1(config)#spanning-tree vlan 1,10,20 root primary
SW2(config)#spanning-tree vlan 1,10,20 root secondary

Sau khi chạy xong thì các bạn kiểm tra lại nhé, không thừa đâu.

show spanning tree

 
show spanning tree

Kết quả kiểm tra cho thấy trên VLAN 10, SW1 đóng vai trò root switch. Quan sát giá trị priority của các switch có thể thấy rằng SW2 đóng vai trò secondary root switch.
Có thể thực hiện kiểm tra tương tự trên các VLAN còn lại.

Sau khi STP kết quả hội tụ sẽ như hình sau:

STP hội tụ

Với kết quả hội tụ này, có thể thấy SW3 có hai đường uplink lên SW1 và SW2. Trong đó, đường uplink đi lên SW1 là đường chính và đường uplink đi lên SW2 đóng vai trò dự phòng.

STP Toolkit:

Trên SW3 thực hiện gán một số cổng vào các VLAN 10 và 20 vừa tạo theo phân bố cổng được chỉ ra trên bảng 1. Các cổng này sẽ được sử dụng để kết nối đến các end – user đầu cuối.

SW3(config)#interface range f0/1 - 13
SW3(config-if-range)#switchport mode access
SW3(config-if-range)#switchport access vlan 10
SW3(config-if-range)#exit
SW3(config)#interface range f0/14 – 18,f0/24
SW3(config-if-range)#switchport mode access
SW3(config-if-range)#switchport access vlan 20
SW3(config-if-range)#exit

Cấu hình để các end – user port này có thể được sử dụng ngay lập tức khi kết nối thành công mà không cần phải trải qua các khoảng thời gian delay.

Sử dụng tính năng portfast trên các access port thuộc các VLAN 10, 20 để hoàn thành yêu cầu đặt ra:

STP portfast

Thực hiện kết nối một host vào cổng F0/13 của VLAN 10, tiến hành quan sát hiện tượng xảy ra trước và sau khi sử dụng tính năng portfast trên cổng này.
Để quan sát hiện tượng xảy ra, có thể sử dụng câu lệnh debug:debug spanning-tree events

Trước khi bật tính năng portfast:
Khi cổng F0/13 up/up, cổng này sẽ đi vào các trạng thái Listening và Learning trước khi chuyển qua trạng thái Forwarding để có thể sử dụng được:

debug portfast

Có thể thấy, cổng F0/13 đã phải ở trạng thái Listening 15s rồi mới chuyển qua trạng thái Learning, sau đó tiếp tục ở trạng thái này thêm 15s rồi mới chuyển qua trạng thái Forwarding.
Trong giai đoạn này, có thể thực hiện liên tục lệnh “show spanning-tree vlan 10” để quan sát trạng thái cổng F0/13

show static

Sau khi bật tính năng portfast:
Khi cổng F0/13 up/up, cổng sẽ đi thẳng vào trạng thái Forwarding, bỏ qua các trạng thái  Listening và Learning, host có thể ngay lập tức truyền được dữ liệu:

stp

Có thể sử dụng lệnh show sau đây để xác nhận cổng F0/13 của SW3 đã được bật tính năng portfast: show spanning-tree interface f0/13 portfast

 STP Toolkit: 

  • Các user thuộc VLAN 10 không được phép kết nối các thiết bị có phát ra BPDU vào các access – port thuộc VLAN 10. 
  • Thực hiện cấu hình đảm bảo nếu user kết nối thiết bị có phát ra BPDU vào port bất kỳ của VLAN 10, port này sẽ bị shutdown. 
  • Cấu hình thêm để nếu sự vi phạm không còn diễn ra, port vi phạm sẽ được tự động mở lại sau 2 phút.

Sử dụng tính năng BPDU Guard trên các Access port thuộc VLAN 10 để thực hiện yêu cầu này:

SW3(config)#interface range f0/1 - 13
SW3(config-if-range)#spanning-tree bpduguard enable
SW3(config-if-range)#exit

Cấu hình đảm bảo khi sự vi phạm không còn diễn ra, cổng sẽ được tự động mở lại sau 2 phút (120s):

SW3(config)#errdisable recovery cause bpduguard
SW3(config)#errdisable recovery interval 120

chú ý: 2 câu lệnh có thể không tìm thấy trên cisco parket tracer nha..các bác có thể thử trên GNS3...

Kiểm tra:

Thay host đang kết nối trên cổng F0/13 bằng một switch, thực hiện shutdown rồi no shutdown cổng F0/13:

stp toolkit

Switch kết nối trên cổng F0/13 sẽ gửi vào cổng các gói BPDU để tiến hành các hoạt động STP, tính năng BPDU Guard trên cổng F0/13 sẽ đưa cổng vào trạng thái err – disabled:

stp

Thực hiện gỡ bỏ switch trên cổng F0/13 và thay trở lại bằng một host không chạy STP, sau 120s, cổng sẽ được phục hồi khỏi trạng thái err – disabled và hoạt động bình thường:

stp

STP Toolkit:

  • Các user thuộc VLAN 20 được phép kết nối thiết bị tập trung có khả năng chạy STP vào các cổng của VLAN 20 tuy nhiên các thiết bị này không được phép chiếm quyền root switch của sơ đồ hiện hành. 
  • Thực hiện cấu hình để đảm bảo: nếu thiết bị của end – user kết nối vào một port của VLAN 20 cố tình phát ra BPDU tối ưu hơn để chiếm quyền root, port nối đến thiết bị này sẽ bị khóa không truyền được dữ liệu nhưng không bị shutdown. Khi sự vi phạm kết thúc, port sẽ được mở ra lại để truyền dữ liệu.

Sử dụng tính năng Root guard để thực hiện yêu cầu này:

SW3(config)#interface range f0/14 - 18,f0/24
SW3(config-if-range)#spanning-tree guard root
SW3(config-if-range)#exit

Kiểm tra: Thực hiện kết nối một switch (trong câu lab này, là switch có hostname là SW4) vào cổng F0/24 của SW3 và cấu hình để SW4 này phát ta BPDU tối ưu hơn BPDU của root switch hiện hành trên VLAN 20:

SW4(config)#int f0/24
SW4(config-if)#switchport mode access
SW4(config-if)#switchport access vlan 20
SW4(config)#spanning-tree vlan 20 priority 0

Cổng F0/24 của SW3 bị khóa khi nhận được BPDU tối ưu hơn từ SW4:

stp toolkit
Gỡ bỏ cấu hình priority = 0 trên SW4 để SW4 không còn phát BPDU tối ưu hơn root switch, cổng F0/24 trên SW3 được đưa trở lại trạng thái forward dữ liệu bình thường: no spanning-tree vlan 20 priority 0, xem lại trang thái.

STP Toolkit:

  • Thực hiện cấu hình để SW2 lọc bỏ toàn bộ BPDU gửi đến SW3. 
  • Quan sát hiện tượng và cho biết vai trò STP của cổng F0/22 của SW3 trên các VLAN sau khi STP hội tụ

Thực hiện cấu hình tính năng BPDU Filter trên cổng F0/22 để thực hiện yêu cầu này:

SW2(config)#interface f0/22
SW2(config-if)#spanning-tree bpdufilter enable
SW2(config-if)#exit

Lúc này, SW3 không còn nhận được BPDU trên cổng F0/22 được forward xuống từ SW2 nữa, SW3 giả thiết rằng SW2 bị mất kết nối về root switch nên nó mở cổng F0/22, chuyển cổng này ra khỏi trạng thái khóa:

stp toolkit
Sau khi cổng F0/22 trên SW3 được mở ra, trên các VLAN 1, 10, 20 không còn cổng nào được khóa nữa:SW1#show spanning-tree vlan 10

Nếu có dữ liệu broadcast đi vào hệ thống switch, loop sẽ xảy ra. Các thông điệp log về MAC flapping xuất hiện trên các switch thể hiện điều này:

stp toolkit
Chúc các bạn thành công!!!
xem thêm các bài viết liên quan chủ đề ccna nhé: https://85network-share.blogspot.com/2021/10/cau-hinh-dhcp-snooping-tren-cisco.html
bài viết có tham khảo nguồn:

85network-share kiến thức như ngọn lửa càng chia sẻ càng bùng cháy!




Không có nhận xét nào

Bài đăng phổ biến