Today I would like to talk about one technique that helps to mitigate
DOS attack - RTBH. The technique is defined by RFC 5635 (2009) which is
updated (and extension) of RFC 3882 (2004). As you see it’s quite old
document and today we can find much better tools to mitigate such
attacks.
It isn’t complex technique, the configuration is very simple and the result of it is to send unwanted traffic to interface Null0 (silently drop) on the edge of your network. As you know, routers can easily route packets rather than analyze them and drop based on ACL entries. When DOS attack starts you can see huge number of packets that need to be processed by your router. Route all of them to the Null0 interface, requires less router resources when you compare with filtering based on access list.
The main problem is that the technique is not much granular. You can choose source or destination IP, what means you will discard legitimate traffic too. You can’t block the traffic per flow (source, destination, protocol, port). I agree, it’s much better than nothing because otherwise the traffic would block access to any server you have in your network. It isn’t ideal solution but it’s less intrusive to block access to one server (for attacker and legitimate users) than allow attacker to block your whole network.
Based on a below diagram I will implement RTBH solution:
R1 - EDGE/FILTERING ROUTER:
R2 - EDGE/FILTERING ROUTER:
R3 - TRIGGER/ANNOUNCING ROUTER:
As you see on the ‘TRIGGER ROUTER’ there is a route map which is used to redistribute a static route with a tag equal '123’.
The current route to a host 9.9.9.5:
Once, you find out, what is the attacker IP or what is the DOS attack destination, you have to add a static route on the 'TRIGGER ROUTER’:
The 'TRIGGER ROUTER’ sends the new route to 'EDGE ROUTERS’:
There are two variations of the technique: based on source and destination IP. For source based we need to add following command on edge routers :
Useful links:
https://tools.ietf.org/html/rfc5635
https://tools.ietf.org/html/rfc3882
It isn’t complex technique, the configuration is very simple and the result of it is to send unwanted traffic to interface Null0 (silently drop) on the edge of your network. As you know, routers can easily route packets rather than analyze them and drop based on ACL entries. When DOS attack starts you can see huge number of packets that need to be processed by your router. Route all of them to the Null0 interface, requires less router resources when you compare with filtering based on access list.
The main problem is that the technique is not much granular. You can choose source or destination IP, what means you will discard legitimate traffic too. You can’t block the traffic per flow (source, destination, protocol, port). I agree, it’s much better than nothing because otherwise the traffic would block access to any server you have in your network. It isn’t ideal solution but it’s less intrusive to block access to one server (for attacker and legitimate users) than allow attacker to block your whole network.
Based on a below diagram I will implement RTBH solution:
R1 - EDGE/FILTERING ROUTER:
!
hostname R1
!
interface Loopback0
ip address 150.1.1.1 255.255.255.0
!
interface FastEthernet0/0
ip address 7.7.7.1 255.255.255.0
!
interface FastEthernet0/1
ip address 8.8.8.1 255.255.255.0
!
router rip
version 2
network 7.0.0.0
network 8.0.0.0
network 150.1.0.0
!
router bgp 123
bgp log-neighbor-changes
neighbor 150.2.2.2 remote-as 123
neighbor 150.2.2.2 update-source Loopback0
neighbor 150.3.3.3 remote-as 123
neighbor 150.3.3.3 update-source Loopback0
!
ip route 192.0.2.1 255.255.255.255 Null0
!
R2 - EDGE/FILTERING ROUTER:
!
hostname R2
!
interface Loopback0
ip address 150.2.2.2 255.255.255.255
!
interface FastEthernet0/0
ip address 7.7.7.2 255.255.255.0
!
interface FastEthernet0/1
ip address 8.8.8.2 255.255.255.0
!
router rip
version 2
network 7.0.0.0
network 8.0.0.0
network 150.2.0.0
!
router bgp 123
bgp log-neighbor-changes
neighbor 150.1.1.1 remote-as 123
neighbor 150.1.1.1 update-source Loopback0
neighbor 150.3.3.3 remote-as 123
neighbor 150.3.3.3 update-source Loopback0
!
ip route 192.0.2.1 255.255.255.255 Null0
!
R3 - TRIGGER/ANNOUNCING ROUTER:
!
hostname R3
!
interface Loopback0
ip address 150.3.3.3 255.255.255.0
!
interface FastEthernet0/0
ip address 8.8.8.3 255.255.255.0
!
interface FastEthernet0/1
ip address 9.9.9.3 255.255.255.0
!
router rip
version 2
network 8.0.0.0
network 9.0.0.0
network 150.3.0.0
!
router bgp 123
bgp log-neighbor-changes
redistribute static route-map ATTACK1
neighbor 150.1.1.1 remote-as 123
neighbor 150.1.1.1 update-source Loopback0
neighbor 150.2.2.2 remote-as 123
neighbor 150.2.2.2 update-source Loopback0
!
ip route 192.0.2.1 255.255.255.255 Null0
!
route-map ATTACK1 permit 10
match tag 123
set local-preference 200
set origin igp
set community no-export
set ip next-hop 192.0.2.1
!
As you see on the ‘TRIGGER ROUTER’ there is a route map which is used to redistribute a static route with a tag equal '123’.
The current route to a host 9.9.9.5:
R2#sh ip route 9.9.9.5
Routing entry for 9.0.0.0/8
Known via "rip", distance 120, metric 1
Redistributing via rip
Last update from 8.8.8.3 on FastEthernet0/1, 00:00:25 ago
Routing Descriptor Blocks:
* 8.8.8.3, from 8.8.8.3, 00:00:25 ago, via FastEthernet0/1
Route metric is 1, traffic share count is 1
R2#
Once, you find out, what is the attacker IP or what is the DOS attack destination, you have to add a static route on the 'TRIGGER ROUTER’:
ip route 9.9.9.5 255.255.255.255 Null0 tag 123
The 'TRIGGER ROUTER’ sends the new route to 'EDGE ROUTERS’:
R2#sh ip route 9.9.9.5
Routing entry for 9.9.9.5/32
Known via "bgp 123", distance 200, metric 0, type internal
Last update from 192.0.2.1 00:00:06 ago
Routing Descriptor Blocks:
* 192.0.2.1, from 150.3.3.3, 00:00:06 ago
Route metric is 0, traffic share count is 1
AS Hops 0
MPLS label: none
R2#
There are two variations of the technique: based on source and destination IP. For source based we need to add following command on edge routers :
interface FastEthernet 0/0
ip verify unicast source reachable-via any
Useful links:
https://tools.ietf.org/html/rfc5635
https://tools.ietf.org/html/rfc3882
Comments
Post a Comment