You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: doc/Dhcp_Mitigation/DHCP Mitigation.md
+66-36Lines changed: 66 additions & 36 deletions
Original file line number
Diff line number
Diff line change
@@ -21,8 +21,9 @@
21
21
-[Effects of DHCP DoS Attacks](#effects-of-dhcp-dos-attacks)
22
22
-[Behavior of DHCP DoS Attack](#behavior-of-dhcp-dos-attack)
23
23
-[DHCP DoS Mitigation](#dhcp-dos-mitigation)
24
-
-[Proposed Solution](#proposed-solution)
25
-
24
+
-[Current Behavior](#current-behavior)
25
+
-[Proposed Behavior](#proposed-behavior)
26
+
-[Design Changes](#design-changes)
26
27
-[Requirements](#requirements)
27
28
-[Architecture Design](#architecture-design)
28
29
-[Sequence Diagram to Add Rate-limit](#sequence-diagram-to-add-rate-limit)
@@ -116,61 +117,82 @@ It can be seen in the screenshot below that a legitimate client (PC-1) is unable
116
117
<figcaption>Figure 3: Incomplete DORA process during DoS attack</figcaption>
117
118
</figure>
118
119
119
-
### DHCP DoS Mitigation
120
120
121
+
### Current Behavior
122
+
Currently in SONiC, a default system-wide DHCP rate limit of 300 packets per second is implemented through CoPP. Since this limit is system-wide, in the event of a DHCP DoS attack where the attacker sends packets at a rate greater than 300 packets per second, it will result in CoPP dropping most legal packets as there are a lot more illegal packets coming into the system.
123
+
124
+
### Proposed Behavior
125
+
To ensure the availability of a DHCP server for legal clients across a network, rate-limiting must be implemented at a port level so the effects of an attacker stay limited to the port it is connected to.
126
+
This can be achieved by removing the system-wide DHCP rate limit of 300 packets per second implemented through CoPP and replacing it with port-level rate limits implemented in the kernel via Linux Traffic Control (TC). This means CoPP won't restrict DHCP traffic anymore, allowing potentially harmful packets to reach the kernel where TC will be able to rate-limit ingress traffic according to rates defined for each port. This will effectively isolate the effects of a DHCP DoS attack to remain solely on the attacked port, successfully protecting clients connected to all other ports of the switch.
127
+
128
+
### Design Changes
121
129
122
-
To prevent possible DHCP DoS attacks in SONiC, we suggest using rate-limiting with Linux Traffic Control (TC).
130
+
To achieve this, a new entry “dhcp_rate_limit” will be added in the “PORT_TABLE” of config_db with a default value of 300 packets per second to ensure backward compatibility. CLI commands will be written to use this attribute in config_db. “Portmgrd” in the SwSS container will be modified to configure config_db rate-limits inside the kernel via TC commands.
123
131
124
-
SONiC has Traffic Control Utility available. This is used for handling data movement through the network.
125
-
By setting limits on the number of DHCP requests that can be forwarded, we can protect against attacks. This helps keep the network running smoothly and securely.
126
-
Following are some use cases of Traffic Control :
127
-
- It can filter packets on the basis of their properties (eg. IP protocols, source/destination ports and IP addresses, etc.) and drop them based on their behavior (ingress, egress, rate, etc.)
128
-
- It can also change or modify the data if needed.
132
+
Following are a few use cases of Traffic Control :
133
+
- Filter packets on the basis of their properties (eg. IP protocols, source/destination ports and IP addresses, etc.) and drop them based on their behavior (ingress, egress, rate, etc.)
134
+
- Change or modify the data if needed
129
135
130
136
Traffic control(TC) uses queuing disciplines (qdiscs) to help organize and manage the transmission of traffic through a network interface. A qdisc performs two main functions:
131
137
- Enqueuing requests to place packets in a queue for later transmission
132
138
- Dequeuing requests to select a packet from the queue for immediate transmission
133
139
134
-
To prevent a potential DHCP DoS attack on an interface, incoming traffic at the interface is rate-limited using traffic control(TC).
135
-
136
-
#### Proposed Solution
137
-
138
-
DHCP traffic can be filtered and rate-limited by dropping all packets that exceed a user-specified rate, allowing legitimate users to be serviced by the DHCP server despite an ongoing attack. The design provides a mechanism for DHCP rate-limiting on a specified interface. Applying a DHCP rate-limit on a specific interface requires two parameters:
139
-
140
-
-##### Interface
141
-
The interface on which the DHCP rate limit is to be applied
140
+
When the user adds the "dhcp_rate_limit" entry in the “PORT_TABLE” of the config database, that limit is then enforced on the specified interface it corresponds to.
141
+
DHCP traffic can be filtered and rate-limited by dropping all packets that exceed a user-defined rate, allowing legitimate clients to be serviced by a DHCP server despite an ongoing attack. This design provides a mechanism for DHCP rate-limiting on a specified port. Applying DHCP rate limit on a specific port requires two parameters:
142
142
143
+
- port
144
+
The port on which the DHCP rate limit is to be applied.
145
+
- rate
146
+
(packets per second)An integer specifying a DHCP packet rate in packets per second.
143
147
144
-
-##### rate (packets per second)
145
-
An integer specifying a DHCP packet rate in packets per second - since traffic control(TC) only supports rates in the form of bytes per second, this value is multiplied by 406 (number of bytes that make up a DHCP discover packet)
148
+
Since traffic control(TC) only supports rates in the form of bytes per second, this value is multiplied by 406 (number of bytes that make up a DHCP discover packet).
149
+
Upon running this command, an ingress queuing discipline is created on the specified port via traffic control(TC). Next, a traffic control(TC) filter is added to filter DHCP discover packets on protocol 17 (UDP) and destination port 67 (port used by DHCP) and a dropping action is applied to filtered incoming traffic. Incoming DHCP discover packets that exceed the rate are dropped to stop the attack from overwhelming the DHCP server.
146
150
147
-
Upon running this command, an ingress queuing discipline is created on the specified interface via traffic control(TC). Next, a traffic control(TC) filter is added to filter DHCP discover packets on protocol 17 (UDP) and destination port 67 (port used by DHCP), and a dropping action is applied to the filtered incoming traffic. Incoming DHCP discover packets that exceed the rate are dropped to stop the attack from overwhelming the DHCP server.
148
151
149
152
### Requirements
150
153
151
154
- Support for Linux traffic control (tc) for implementing the rate-limiting mechanism
152
155
- Support for CLI commands for configuring DHCP rate-limiting
153
156
154
157
### Architecture Design
155
-
The overall SONiC architecture will remain the same and no new sub-modules will be introduced. Changes are made only in SONiC CLI where rate-limiting commands will be added that employ the Linux traffic control utility.
158
+
The overall SONiC architecture will remain the same. Changes are made only in the SONiC Utilities container, SwSS container, and Config_DB.
0 commit comments