Q & A
Finding Your Way Through Black-Hole and Sinkhole Routing
by Scott Morris
Question:
April 23, 2007
Scott,
I am preparing for the CCIE Security lab exam, and having a hard time with one
of the blueprint sections. What is this "black-hole routing" that
I see people talking about on message boards?
-- Jon
Answer:
Jon,
First, congratulations thus far on your preparation, and best of luck on your
lab exam!
| -- advertisement (story continued below) -- | |
|
Throughout both the Service Provider CCIE track and the Security CCIE (2.0)
track, we have things listed on our blueprints bearing the names of black-hole
and sinkhole routing. While this may sound a lot like some "Star Trek"
episode, it's important for us to understand what each is and, even more important,
how to implement them.
Sinkholes are designed to attract traffic and keep it (for analysis or whatever
reason). Black holes, on the other hand, are designed to attract traffic and
never let it be seen again. In larger networks (and what we simulate in our
CCIE labs), both of these techniques are typically done via BGP.
So let's start with the sinkhole idea. To create a sinkhole, we want to attract
traffic. The first question we need to ask is: Why?
Whenever you advertise a network, you inadvertently attract traffic to those
IPs. That traffic may be good, or it may be bad. From a security perspective,
I'm sure everyone has heard the term "honeypot" used before. There
is a specific purpose to attract traffic.
So let's say that you have a /24 network advertising to the Internet through
various connections. Traffic can come in and wend its way through your network
to the destination network segment. You notice a DoS attack, or some huge amount
of traffic toward one of your Web servers. Where do you secure against this?
How do you secure against it? Are you still moving traffic all the way through
your network to one final router before the segment? Are you tying up all your
link's bandwidth while doing this?
Sinkholes spread throughout your network are a way to break apart and analyze
the traffic, perhaps cleaning it and moving the good stuff on through. But multiple
routers would need a focal point, or a different way to route that traffic.
You may simply change the destination for a single IP out of that /24. Most-specific
routing always wins, so that's an easy way. Maybe you have multiple analysis
points in your network to segment the traffic and reduce load and bottlenecks
in your topology.
Either way, follow the lab instructions and you are creating a sinkhole. You
may even be advertising extra networks just to attract traffic for analysis
(like a honeypot idea). Just watch what's being asked, but that's the concept
of a sinkhole.
Black-hole routing, on the other hand, wants to kill traffic. We could go to
all of our routers and install some Null0 routes simply enough. In real life,
though, this is not a scalable approach. Hence the term "remotely triggered
black-hole routing," and we'll use BGP. Killing a route via a routing protocol
is not a simple concept. No matter how hard we try when advertising a route,
Null0 is not a valid next-hop to pass along to someone else.
So every router needs to have a seed route to Null0. Pick something that isn't
used.
Ip route 1.1.1.1 255.255.255.255 null0
That goes on every single router now. Of course, we would also have BGP set
up between all of our internal routers, perhaps not moving any "real"
routing information, but just used to kill things. Now we need the trigger.
On a central router (wherever an admin is, anyway) we'll do our maintenance
for what routes we want to kill.
Ip route 192.0.0.0 255.0.0.0 null0 tag 86
ip route 100.100.100.0 255.255.255.0 null0 tag 86
ip route 200.200.200.0 255.255.255.0 null0 tag 86
Notice the tag on those static routes. This will be used for redistribution
to help only get the "bad" routes from a router that may actually
have many other static routes. OK, not in the real lab, but we're pretending
that the skills we learn on our way to CCIE have some real-life intrinsic value,
right?
So once we have decided on our central router what routes we want to kill everywhere,
then we pass them out through BGP.
Route-map KillRoutes permit 10
Match tag 86
Router bgp 65000
Redistribute static route-map KillRoutes
That all seems very simple, right? Well, yes it does, but it won't help us.
At this point, all of our iBGP routers would see the central router as the next
hop for each of the routes. That creates a black hole, because it pulls all
of the packets into the middle of our network and then kills them locally with
a Null0 next-hop. But we are wasting lots of bandwidth in doing this.
Always filter as close to the source as possible. Good design rules!
In order to do this, we need to change the next hop of the route from our central
router's IP address to that of the distributed Null0 route (1.1.1.1 in my example).
Route-map NH-Change permit 10
Match tag 86
Set ip next-hop 1.1.1.1
Route-map NH-Change permit 20
Router bgp 65000
Neighbor x.x.x.x route-map NH-Change out
(Repeat for each of your neighbors unless you're using peer groups.)
The last permit statement of the route-map was to pass through any other routes
that you may want to run in BGP unchanged. Only make the next-hop change for
those routes that are evil. You could also set this next-hop within the original
redistribute route-map. I just split it out for pointing out the differences.
At this point, all of your other routers have learned some routes via iBGP,
with a next-hop of 1.1.1.1, and since they have a local static route to Null0
for that next hop, all routes learned this way will be killed.
We have now used black-hole routing in a remotely triggered manner. Kinda cool,
huh? Not difficult either -- it's just a matter of thinking about what we are
trying to accomplish.
As noted, these techniques have been listed more explicitly on both the Security
(2.0) and Service Provider CCIE tracks. I don't see any reason why they can't
be used in Routing & Switching, as well, so it never hurts to think these
things through.
For some extra information, check out "Worm
Mitigation Technical Details."
As always, read your exam scenario carefully. Make notes and diagrams as necessary,
but think like the router does. Think things through one step at a time and
all of these complicated things suddenly become much easier.
Cheers,
-- Scott
Scott Morris, quadruple CCIE, JNCIE and all-around uber-geek, can often be seen
traveling around the world consulting and delivering CCIE training. He recently
accepted a new Senior CCIE Instructor position with Internetwork Expert! For more
information on him check out http://www.uber-geek.net
or for CCIE training check out http://www.internetworkexpert.com.
You can contact Scott via editor@tcpmag.com. You can contact Scott
about "Finding Your Way Through Black-Hole and Sinkhole Routing" at editor@tcpmag.com.
|