draft-ietf-opsec-blackhole-urpf-02.txt | draft-ietf-opsec-blackhole-urpf-03.txt | |||
---|---|---|---|---|
Opsec Working Group W. Kumari | Opsec Working Group W. Kumari | |||
Internet Draft Google | Internet Draft Google | |||
<draft-ietf-opsec-blackhole-urpf-02> D. McPherson | <draft-ietf-opsec-blackhole-urpf-03> D. McPherson | |||
Category: Informational Arbor Networks | Category: Informational Arbor Networks | |||
Expires: September 7, 2009 | Expires: September 30, 2009 | |||
March 7, 2009 | March 30, 2009 | |||
Remote Triggered Black Hole filtering with uRPF | Remote Triggered Black Hole filtering with uRPF | |||
<draft-ietf-opsec-blackhole-urpf-02.txt> | <draft-ietf-opsec-blackhole-urpf-03.txt> | |||
Status of this Memo | Status of this Memo | |||
This Internet-Draft is submitted to IETF in full conformance with the | This Internet-Draft is submitted to IETF in full conformance with the | |||
provisions of BCP 78 and BCP 79. | provisions of BCP 78 and BCP 79. | |||
Internet-Drafts are working documents of the Internet Engineering | Internet-Drafts are working documents of the Internet Engineering | |||
Task Force (IETF), its areas, and its working groups. Note that | Task Force (IETF), its areas, and its working groups. Note that | |||
other groups may also distribute working documents as Internet- | other groups may also distribute working documents as Internet- | |||
Drafts. | Drafts. | |||
skipping to change at page 3, line 7 | skipping to change at page 3, line 7 | |||
Abstract | Abstract | |||
Remote Triggered Black Hole (RTBH) filtering is a popular and | Remote Triggered Black Hole (RTBH) filtering is a popular and | |||
effective technique for the mitigation of denial-of-service attacks. | effective technique for the mitigation of denial-of-service attacks. | |||
This document expands upon destination-based RTBH filtering by | This document expands upon destination-based RTBH filtering by | |||
outlining a method to enable filtering by source address as well. | outlining a method to enable filtering by source address as well. | |||
Table of Contents | Table of Contents | |||
1. Introduction ....................................................2 | 1. Introduction ....................................................3 | |||
2. Background ......................................................2 | 2. Terminology .....................................................3 | |||
3. Destination address RTBH filtering ..............................3 | 3. Background ......................................................3 | |||
3.1. Overview ...................................................3 | 4. Destination address RTBH filtering ..............................4 | |||
3.2. Detail .....................................................3 | 4.1. Overview ...................................................4 | |||
4. Source address RTBH filtering ...................................4 | 4.2. Detail .....................................................5 | |||
5. Security Considerations .........................................6 | 5. Source address RTBH filtering ...................................7 | |||
6. IANA Considerations .............................................6 | 5.1. Steps to deploy RTBH filtering with uRPF ...................8 | |||
7. Acknowledgments .................................................7 | 6. Security Considerations .........................................9 | |||
8. References ......................................................7 | 7. IANA Considerations .............................................9 | |||
A. Cisco Router Configuration Sample................................8 | 8. Acknowledgments .................................................9 | |||
B. Juniper Configuration Sample....................................10 | 9. References ......................................................9 | |||
C. A brief history of RTBH.........................................12 | 9.1. Normative References .......................................9 | |||
9.2. Informative References ....................................10 | ||||
A. Cisco Router Configuration Sample...............................11 | ||||
B. Juniper Configuration Sample....................................13 | ||||
C. A Brief History of RTBH.........................................15 | ||||
1. Introduction | 1. Introduction | |||
This document expands upon the technique outlined in "Configuring BGP | This document expands upon the technique outlined in "Configuring BGP | |||
to Block Denial-of-Service Attacks" [RFC3882] to demonstrate a method | to Block Denial-of-Service Attacks" [RFC3882] to demonstrate a method | |||
that allows for filtering by source address(es). | that allows for filtering by source address(es). | |||
1.2 Terminology | 2. Terminology | |||
The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", | The key words "MUST", "MUST NOT", "REQUIRED", "SHALL", "SHALL NOT", | |||
"SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this | "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and "OPTIONAL" in this | |||
document are to be interpreted as described in RFC 2119. [RFC2119]. | document are to be interpreted as described in RFC 2119. [RFC2119]. | |||
2. Background | 3. Background | |||
Network operators have developed a variety of techniques for | Network operators have developed a variety of techniques for | |||
mitigating denial of service attacks. While different techniques have | mitigating denial of service attacks. While different techniques have | |||
varying strengths and weaknesses, from an implementation perspective | varying strengths and weaknesses, from an implementation perspective | |||
the selection of which method to use for each type of attack involves | the selection of which method to use for each type of attack involves | |||
evaluating the tradeoffs associated with each method. | evaluating the tradeoffs associated with each method. | |||
A common DoS attack directed against a customer of a service provider | A common DoS attack directed against a customer of a service provider | |||
involves generating a greater volume of attack traffic destined for | involves generating a greater volume of attack traffic destined for | |||
the target than will fit down the links from the service provider(s) | the target than will fit down the links from the service provider(s) | |||
to the victim (customer). This traffic "starves out" legitimate | to the victim (customer). This traffic "starves out" legitimate | |||
traffic and often results in collateral damage or negative effects to | traffic and often results in collateral damage or negative effects to | |||
other customers or the network infrastructure as well. Rather than | other customers or the network infrastructure as well. Rather than | |||
having all destinations on their network be affected the attack, the | having all destinations on their network be affected by the attack, | |||
customer may ask their service provider to filter traffic destined to | the customer may ask their service provider to filter traffic | |||
the target destination IP address(es), or the service provider may | destined to the target destination IP address(es), or the service | |||
determine that this is necessary themselves, in order to preserve | provider may determine that this is necessary themselves, in order to | |||
network availability. | preserve network availability. | |||
One method that the service provider can use to implement this | One method that the service provider can use to implement this | |||
filtering is to deploy access control lists on the edge of their | filtering is to deploy access control lists on the edge of their | |||
network. While this technique provides a large amount of flexibility | network. While this technique provides a large amount of flexibility | |||
in the filtering, it runs into scalability issues, both in terms of | in the filtering, it runs into scalability issues, both in terms of | |||
the number of entries in the filter and the packet rate. | the number of entries in the filter and the packet rate. | |||
Most routers are able to forward traffic at a much higher rate than | Most routers are able to forward traffic at a much higher rate than | |||
they are able to filter, and are able to hold many more forwarding | they are able to filter, and are able to hold many more forwarding | |||
table entries and routes than filter entries. RTBH leverages the | table entries and routes than filter entries. RTBH filtering | |||
forwarding performance of modern routers to filter both more entries | leverages the forwarding performance of modern routers to filter both | |||
and at a higher rate than access control lists would otherwise allow. | more entries and at a higher rate than access control lists would | |||
otherwise allow. | ||||
However, with destination-based RTBH filtering, the impact of the | However, with destination-based RTBH filtering, the impact of the | |||
attack on the target is complete. That is, destination-based RTBH | attack on the target is complete. That is, destination-based RTBH | |||
filtering injects a discard route into the forwarding table for the | filtering injects a discard route into the forwarding table for the | |||
target prefix. All packets towards that destination, attack traffic | target prefix. All packets towards that destination, attack traffic | |||
AND legitimate traffic, are then dropped by the participating | AND legitimate traffic, are then dropped by the participating | |||
routers,thereby taking the target completely offline. The benefit is | routers,thereby taking the target completely offline. The benefit is | |||
that collateral damage to other systems or network availability at | that collateral damage to other systems or network availability at | |||
the customer location or in the ISP network is limited, but negative | the customer location or in the ISP network is limited, but the | |||
impact to the target itself is arguably increased. | negative impact to the target itself is arguably increased. | |||
By coupling unicast reverse path forwarding (RPF) [RFC3704] | By coupling unicast reverse path forwarding (RPF) [RFC3704] | |||
techniques with RTBH, BGP can be used to distribute discard routes | techniques with RTBH filtering, BGP can be used to distribute discard | |||
that are based not on destination or target addresses, but based on | routes that are based not on destination or target addresses, but | |||
source addresses of unwanted traffic. | based on source addresses of unwanted traffic. | |||
3. Destination address RTBH filtering | 4. Destination address RTBH filtering | |||
3.1. Overview | 4.1. Overview | |||
A "discard" route is installed on each edge router in the network | A "discard" route is installed on each edge router in the network | |||
with the destination set to be the discard (or null) interface. In | with the destination set to the discard (or null) interface. In order | |||
order to use RTBH filtering for a single IP address (or prefix) a BGP | to use RTBH filtering for a single IP address (or prefix), a BGP | |||
route for the address to be filtered is announced, with the next-hop | route for the address to be filtered is announced, with the next-hop | |||
set as the "discard" route. This causes traffic to the announced | set as the "discard" route. This causes traffic to the announced | |||
network prefix to be forwarded to the discard interface so that it | network prefix to be forwarded to the discard interface so that it | |||
does not transit the network wasting resources or triggering | does not transit the network wasting resources or triggering | |||
collateral damage to other resources along the path towards the | collateral damage to other resources along the path towards the | |||
target. | target. | |||
While this does "complete" the attack in that the target address(es) | While this does "complete" the attack in that the target address(es) | |||
are made unreachable, collateral damage in minimized. It may also be | are made unreachable, collateral damage is minimized. It may also be | |||
possible to move the host or service on the target IP address(es) to | possible to move the host or service on the target IP address(es) to | |||
another address and keep the service up, for example by updating | another address and keep the service up, for example by updating | |||
associated DNS resource records. | associated DNS resource records. | |||
3.2. Detail | 4.2. Detail | |||
Steps to configure destination based RTBH filtering: | Steps to configure destination based RTBH filtering: | |||
1. Select your Discard Address schema. An address is chosen to become | 1. Select your Discard Address schema. An address is chosen to become | |||
the "discard address". This is often chosen from 192.0.2.0/24 (TEST- | the "discard address". This is often chosen from 192.0.2.0/24 (TEST- | |||
NET [RFC3330]), or from RFC 1918 [RFC1918] space. Test-Net is popular | NET [RFC3330]), or from RFC 1918 [RFC1918] space. Multiple addresses | |||
as a network which an operator will know never show up operationally | allow an operator to configure multiple static routes, one for each | |||
on the network. It also allows an operator to configure multiple | incident: | |||
static routes, one for each incident: | ||||
192.0.2.1 = Incident #1 | 192.0.2.1 = Incident #1 | |||
192.0.2.2 = Incident #2 | 192.0.2.2 = Incident #2 | |||
192.0.2.3 = Incident #3 | 192.0.2.3 = Incident #3 | |||
192.0.2.4 = Incident #4 | 192.0.2.4 = Incident #4 | |||
192.0.2.5 = Incident #5 | 192.0.2.5 = Incident #5 | |||
Customer #1 who has a DDOS attack can be pointed to discard route | Customer #1 who has a DDoS attack can be pointed to discard route | |||
192.0.2.1. Customer #2 can be pointed to discard route 192.0.2.2. If | 192.0.2.1. Customer #2 can be pointed to discard route 192.0.2.2. If | |||
capable, the router can then count the drops for each, providing some | capable, the router can then count the drops for each, providing some | |||
level of telemetry on the volume of drops as well status of an | level of telemetry on the volume of drops as well as status of an | |||
ongoing attack. A consistent address schema facilitate operations. | ongoing attack. A consistent address schema facilitates operations. | |||
2. Set the Discard Route(s) on each router. A route for the "discard | 2. Set the Discard Route(s) on each router. A route for the "discard | |||
address" is installed on the routers that form the edge/perimeter of | address" is installed on the routers that form the edge/perimeter of | |||
the network, in all routers in the network, or some subset (e.g., | the network, in all routers in the network, or some subset (e.g., | |||
peering, but not customer, etc.). The destination of the route is set | peering, but not customer, etc.). The destination of the route is set | |||
to the "discard" or "null" interface. This route is called the | to the "discard" or "null" interface. This route is called the | |||
"discard route". Implementation experience demonstrates the value of | "discard route". Implementation experience demonstrates the value of | |||
configuring each ingress router with a capability for dropping | configuring each ingress router with a capability for dropping | |||
traffic via RTBH. | traffic via RTBH filtering. | |||
3. Configure the RTBH BGP Policy on each router. A BGP policy is | 3. Configure the RTBH BGP Policy on each router. A BGP policy is | |||
configured on all routers that have the discard route so that routes | configured on all routers that have the discard route so that routes | |||
announced with a chosen community will have their next hop set to the | announced with a chosen community will have their next hop set to the | |||
discard address. The BGP policy should be made restrictive so that | discard address. The BGP policy should be made restrictive so that | |||
only BGP routes covering a defined number of hosts addresses will be | only BGP routes covering a defined number of hosts addresses will be | |||
accepted. That is, typically, only specific /32s are necessary. | accepted. That is, typically, only specific /32s are necessary. | |||
Shorter prefix blocks may also be required or desirable, for example | Shorter prefix blocks may also be required or desirable, for example | |||
if larger numbers of attack targets are located within a single | if larger numbers of attack targets are located within a single | |||
prefix, or the employment of this mechanism is to drop traffic bound | prefix, or the employment of this mechanism is to drop traffic bound | |||
skipping to change at page 6, line 6 | skipping to change at page 6, line 11 | |||
extreme caution should be used as to avoid collateral damage to other | extreme caution should be used as to avoid collateral damage to other | |||
hosts that reside within those address blocks. Full implementations | hosts that reside within those address blocks. Full implementations | |||
will have multiple communities, with each community used for | will have multiple communities, with each community used for | |||
different parts of a provider's network and for different security | different parts of a provider's network and for different security | |||
incidents. | incidents. | |||
4. Configure the Safety Egress Prefix Filters (Murphy Prefix | 4. Configure the Safety Egress Prefix Filters (Murphy Prefix | |||
Filters). There is always a chance that the triggering BGP Update | Filters). There is always a chance that the triggering BGP Update | |||
could leak from the network. This has happened [ Youtube/Pakistan | could leak from the network. This has happened [ Youtube/Pakistan | |||
incident ]. Egress prefix filters are recommended. These egress | incident ]. Egress prefix filters are recommended. These egress | |||
prefix filter be many things, but experience has demonstrated that | prefix filter details may varying, but experience has demonstrated | |||
the following works: | that the following works: | |||
4.1 Deny all prefixes /30 through /32 from leaving your network. If | 4.1 Deny all prefixes /30 through /32 from leaving your network. If | |||
your triggering BGP update is only /32s, then this egress prefix | your triggering BGP update is only /32s, then this egress prefix | |||
filter will add a safe measure in case the "no-export" community does | filter will add a safe measure in case the NO_EXPORT community does | |||
not work. | not work. | |||
4.2 Deny all communities used for triggering RTBH. This is also a | 4.2 Deny all communities used for triggering RTBH filtering. This is | |||
"safety" measure in case the "no-export" community does not work. | also a "safety" measure in case the NO_EXPORT community does not | |||
work. | ||||
5: Configure the Trigger Router. Set the trigger router, workstation, | 5: Configure the Trigger Router. Set the trigger router, workstation, | |||
or other device so that adding and removing the triggers can be easy | or other device so that adding and removing the triggers can be done | |||
and quickly added and removed. The BGP Update should have the no- | easily and quickly. The BGP Update should have the NO_EXPORT | |||
export community as a mandatory attribute. A egress prefix filter or | community as a mandatory attribute. An egress prefix filter or policy | |||
policy which prevent RTBHing prefixes in the /8 to /24 ranges is also | which prevents RTBHing prefixes in the /8 to /24 range is also | |||
recommended as a safety tool. The trigger router can be set up as a | recommended as a safety tool. The trigger router can be set up as a | |||
iBGP route reflector client which does not receive any prefixes from | iBGP route reflector client which does not receive any prefixes from | |||
its BGP peer. This allows a low cost router/workstation to be used as | its BGP peer. This allows a low cost router/workstation to be used | |||
the trigger router. | as the trigger router. | |||
6. When RTBH filtering is desired for a specific address, that | 6. When RTBH filtering is desired for a specific address, that | |||
address is announced from a trigger router (or route server), tagged | address is announced from a trigger router (or route server), tagged | |||
with the chosen "RTBH" community and with the community "no-export," | with the chosen "RTBH" community and with the NO_EXPORT community, | |||
and passed via iBGP. The receiving routers check the BGP policy, set | and passed via iBGP. The receiving routers check the BGP policy, set | |||
the next-hop to be the discard route, restling in a fib entry pointed | the next-hop to be the discard route, resulting in a FIB entry | |||
to the discard interface. | pointing to a discard address. | |||
7. Traffic entering the network will now be forwarded to the discard | 7. Traffic entering the network will now be forwarded to the discard | |||
interface on all edge routers and will therefore be dropped at the | interface on all edge routers and will therefore be dropped at the | |||
edge of the network, saving resources. | edge of the network, saving resources. | |||
7.1 Multiple Discard Address for Incident Granularity. This technique | 7.1 Multiple Discard Addresses for Incident Granularity. This | |||
can be expanded by having multiple discard addresses, routes and | technique can be expanded by having multiple discard addresses, | |||
communities to allow for monitoring of the discarded traffic volume | routes and communities to allow for monitoring of the discarded | |||
on devices that support multiple discard interfaces. As mentioned | traffic volume on devices that support multiple discard interfaces. | |||
earlier, each router can have a discard address schema that allows | As mentioned earlier, each router can have a discard address schema | |||
for multiple incident - making it easier to monitor the life-cycle of | to allow the operator to distinguish multiple incidents from each | |||
the incident. | other - making it easier to monitor the life-cycle of the incidents. | |||
7.2 Multiple "Trigger Communities" for Network Wide Granularity. The | 7.2 Multiple "Trigger Communities" for Network Wide Granularity. The | |||
network can be sectioned into multiple communities, providing the | network can be sectioned into multiple communities, providing the | |||
operator with an ability to drop in discreete parts of their network. | operator with an ability to drop in discreete parts of their network. | |||
For example, the network can be divided into the following | For example, the network can be divided into the following | |||
communities: | communities: | |||
XXX:600 RTBH on all router | XXX:600 RTBH filtering on all router | |||
XXX:601 RTBH on only peering router | XXX:601 RTBH filtering on only peering router | |||
XXX:602 RTBH on only customers who peer BGP | XXX:602 RTBH filtering on only customers who peer BGP | |||
XXX:603 RTBH on Datacenters (to see if the data center is the | XXX:603 RTBH filtering on Datacenters (to see if the data center | |||
is the | ||||
source of attack) | source of attack) | |||
XXX:604 RTBH on all customers (to see how many customers are | XXX:604 RTBH filtering on all customers (to see how many | |||
BOTed) | customers are | |||
being used by the attacker) | ||||
Some diligent thinking is required to develop a community schema | Some diligent thinking is required to develop a community schema | |||
which provides flexibility while reflecting topological | which provides flexibility while reflecting topological | |||
considerations. | considerations. | |||
7.3 "Customer Triggered" RTBH. The technique can also be expanded by | 7.3 "Customer Triggered" RTBH filtering. The technique can also be | |||
relaxing the AS path rule to allow customers of a service provider to | expanded by relaxing the AS path rule to allow customers of a service | |||
enable RTBH filtering without interacting with the service provider's | provider to enable RTBH filtering without interacting with the | |||
trigger routers. If this is configured, an operator MUST only accept | service provider's trigger routers. If this is configured, an | |||
announcements for prefixes from the customer that the customer is | operator MUST only accept announcements for prefixes from the | |||
authorized to advertise, in order to prevent the customer from | customer that the customer is authorized to advertise, in order to | |||
accidentally (or intentionally) black-holing space that is not theirs | prevent the customer from accidentally (or intentionally) black- | |||
to advertise.. | holing space that they are not allowed to advertise. | |||
A common policy for this type of setup would first permit any more | A common policy for this type of setup would first permit any more | |||
specific of an authorized prefix only if the blackhole communities is | specific of an authorized prefix only if the blackhole communities is | |||
attached, append NO_EXPORT, NO_ADVERTISE, or similar communities, and | attached, append NO_EXPORT, NO_ADVERTISE, or similar communities, and | |||
then also accept from the customer the original aggregate prefix that | then also accept from the customer the original aggregate prefix that | |||
will be advertised as standard policy permits. | will be advertised as standard policy permits. | |||
Extreme caution should be used in order to avoid leaking any more | Extreme caution should be used in order to avoid leaking any more | |||
specifics beyond the local routing domain, unless policy explicitly | specifics beyond the local routing domain, unless policy explicitly | |||
aims at doing just that. | aims at doing just that. | |||
4. Source address RTBH filtering. | 5. Source address RTBH filtering. | |||
In many instances denial-of-service attacks sourced from are being | In many instances denial-of-service attacks sourced from botnets are | |||
configured to "follow DNS" (the attacking machines are instructed to | being configured to "follow DNS" (the attacking machines are | |||
attack www.example.com, and re-resolve this periodically. | instructed to attack www.example.com, and re-resolve this | |||
Historically the attacks were aimed simply at an IP address and so | periodically. Historically the attacks were aimed simply at an IP | |||
renumbering www.example.com to a new address was an effective | address and so renumbering www.example.com to a new address was an | |||
mitigation). This makes employing technique that allows black-holing | effective mitigation). This makes employing technique that allows | |||
to be based on source address desirable. | black-holing to be based on source address desirable. | |||
By combining traditional RTBH filtering with unicast Reverse Path | By combining traditional RTBH filtering with unicast Reverse Path | |||
Forwarding (uRPF) a network operator can filter based upon the source | Forwarding (uRPF) a network operator can filter based upon the source | |||
address. uRPF performs a route lookup of the source address of the | address. uRPF performs a route lookup of the source address of the | |||
packet and checks to see if the ingress interface of the packet is a | packet and checks to see if the ingress interface of the packet is a | |||
valid egress interface for the packet source address (strict mode) or | valid egress interface for the packet source address (strict mode) or | |||
if any route to the source address of the packet exists (loose mode). | if any route to the source address of the packet exists (loose mode). | |||
If the check fails, the packet is typically dropped. In loose mode | If the check fails, the packet is typically dropped. In loose mode | |||
some vendors also verify that the destination route does not point to | some vendors also verify that the destination route does not point to | |||
a discard interface - this allows source based RTBH filtering to be | a discard interface - this allows source based RTBH filtering to be | |||
deployed in networks that cannot implement strict (or feasible path) | deployed in networks that cannot implement strict (or feasible path) | |||
mode uRPF. | mode uRPF. | |||
By enabling the uRPF feature on interfaces at pre-determined points | By enabling the uRPF feature on interfaces at pre-determined points | |||
in their network and announcing the source address(es) of attack | in their network and announcing the source address(es) of attack | |||
traffic, a network operator can effectively drop the identified | traffic, a network operator can effectively drop the identified | |||
attack traffic at specified devices (ideally ingress edge) of their | attack traffic at specified devices (ideally ingress edge) of their | |||
network based on source address. | network based on source address. | |||
While administrators may choose to drop traffic from any prefix they | While administrators may choose to drop traffic from any prefix they | |||
wish, it is recommended when employing source-based RTBH inter-domain | wish, it is recommended when employing source-based RTBH filtering | |||
that explicit policy be defined that enables peers to only announce | inter-domain that explicit policy be defined that enables peers to | |||
source-based RTBH routes for prefixes which they originate. | only announce source-based RTBH routes for prefixes which they | |||
originate. | ||||
4.1 Steps to deploy RTBH with uRPF for source filtering. | 5.1 Steps to deploy RTBH filtering with uRPF for source filtering. | |||
The same steps that are required to implement destination address | The same steps that are required to implement destination address | |||
RTBH filtering are taken with the additional step of enabling unicast | RTBH filtering are taken with the additional step of enabling unicast | |||
reverse path forwarding on predetermined interfaces. When a source | reverse path forwarding on predetermined interfaces. When a source | |||
address (or network) needs to be blocked, that address (or network) | address (or network) needs to be blocked, that address (or network) | |||
is announced using BGP tagged with a community. This will cause the | is announced using BGP tagged with a community. This will cause the | |||
route to be installed with a next hop of the discard interface, | route to be installed with a next hop of the discard interface, | |||
causing the uRPF check to fail. The destination based RTBH filtering | causing the uRPF check to fail. The destination based RTBH filtering | |||
community should not be used for source based RTBH filtering, and the | community should not be used for source based RTBH filtering, and the | |||
routes tagged with the selected community should be carefully | routes tagged with the selected community should be carefully | |||
skipping to change at page 8, line 44 | skipping to change at page 9, line 5 | |||
with this community to be accepted even though they contain addresses | with this community to be accepted even though they contain addresses | |||
not controlled by the network announcing them. These announcements | not controlled by the network announcing them. These announcements | |||
must NOT be propagated outside the local AS and should carry the | must NOT be propagated outside the local AS and should carry the | |||
NO_EXPORT community. | NO_EXPORT community. | |||
As a matter of policy, operators SHOULD NOT accept source-based RTBH | As a matter of policy, operators SHOULD NOT accept source-based RTBH | |||
announcements from their peers or customers, they should only be | announcements from their peers or customers, they should only be | |||
installed by local or attack management systems within their | installed by local or attack management systems within their | |||
administrative domain. | administrative domain. | |||
5. Security Considerations | 6. Security Considerations | |||
The techniques presented here provide enough power to cause | The techniques presented here provide enough power to cause | |||
significant traffic forwarding loss if incorrectly deployed. It is | significant traffic forwarding loss if incorrectly deployed. It is | |||
imperative that the announcements that trigger the black-holing are | imperative that the announcements that trigger the black-holing are | |||
carefully checked and that the BGP policy that accepts these | carefully checked and that the BGP policy that accepts these | |||
announcements is implemented in such a manner that the announcements: | announcements is implemented in such a manner that the announcements: | |||
- Are not propagated outside the AS (NO_EXPORT). | - Are not propagated outside the AS (NO_EXPORT). | |||
- Are not accepted from outside the AS (except from customers). | - Are not accepted from outside the AS (except from customers). | |||
- Except where source based filtering is deployed, that the network | - Except where source based filtering is deployed, that the network | |||
contained in the announcement falls within the address ranges | contained in the announcement falls within the address ranges | |||
controlled by the announcing AS (i.e.: for customers that the | controlled by the announcing AS (i.e.: for customers that the | |||
address falls within their space). | address falls within their space). | |||
6. IANA Considerations | 7. IANA Considerations | |||
No action required. | No action required. | |||
7. Acknowledgments | 8. Acknowledgments | |||
I would like to thank Joe Abley, Rodney Dunn, Alfred Hoenes, Donald | I would like to thank Joe Abley, Rodney Dunn, Alfred Hoenes, Donald | |||
Smith, Joel Jaeggli and Steve Williams for their assistance, feedback | Smith, Joel Jaeggli and Steve Williams for their assistance, feedback | |||
and not laughing *too* much at the quality of the initial drafts. | and not laughing *too* much at the quality of the initial drafts. | |||
I would also like to thank all of the regular contributors to the | I would also like to thank all of the regular contributors to the | |||
OpSec Working Group and Google for 20% time :-) | OpSec Working Group and Google for 20% time :-) | |||
The authors would also like to thank Steven L Johnson and Barry Greene | The authors would also like to thank Steven L Johnson and Barry Greene | |||
for getting this implemented and Chris Morrow for publicizing the | for getting this implemented and Chris Morrow for publicizing the | |||
technique in multiple talks. | technique in multiple talks. | |||
8. References | 9. References | |||
8.1. Normative References | 9.1. Normative References | |||
[RFC1918] Rekhter, Y., Moskowitz, B., Karrenberg, D., de Groot, G., | [RFC1918] Rekhter, Y., Moskowitz, B., Karrenberg, D., de Groot, G., | |||
and E. Lear, "Address Allocation for Private Internets", | and E. Lear, "Address Allocation for Private Internets", | |||
BCP 5, RFC 1918, February 1996. | BCP 5, RFC 1918, February 1996. | |||
[RFC2119] Bradner, S., "Key words for use in RFCs to Indicate | [RFC2119] Bradner, S., "Key words for use in RFCs to Indicate | |||
Requirement Levels", BCP 14, RFC 2119, March 1997. | Requirement Levels", BCP 14, RFC 2119, March 1997. | |||
[RFC3330] IANA, "Special-Use IPv4 Addresses", RFC 3330, September | [RFC3330] IANA, "Special-Use IPv4 Addresses", RFC 3330, September | |||
2002. | 2002. | |||
[RFC3704] Baker, F. and P. Savola, "Ingress Filtering for Multihomed | [RFC3704] Baker, F. and P. Savola, "Ingress Filtering for Multihomed | |||
Networks", BCP 84, RFC 3704, March 2004. | Networks", BCP 84, RFC 3704, March 2004. | |||
[RFC3882] Turk, D., "Configuring BGP to Block Denial-of-Service | [RFC3882] Turk, D., "Configuring BGP to Block Denial-of-Service | |||
Attacks", RFC 3882, September 2004. | Attacks", RFC 3882, September 2004. | |||
8.2. Informative References | 9.2. Informative References | |||
[Greene2001] Greene Barry Raveendran and Jarvis Neil "Unicast Reverse | [Greene2001] Greene Barry Raveendran and Jarvis Neil "Unicast Reverse | |||
Path Forwarding (uRPF) Enhancements for the ISP-ISP Edge", | Path Forwarding (uRPF) Enhancements for the ISP-ISP Edge", | |||
[ftp://ftp- | [ftp://ftp- | |||
eng.cisco.com/cons/isp/documents/uRPF_Enhancement.pdf], | eng.cisco.com/cons/isp/documents/uRPF_Enhancement.pdf], | |||
2001. | 2001. | |||
Appendix A: Cisco Router Configuration Sample | Appendix A: Cisco Router Configuration Sample | |||
This section provides a partial configuration for configuring RTBH on | This section provides a partial configuration for configuring RTBH | |||
a Cisco router. This is not a complete configuration and should be | filtering on a Cisco router. This is not a complete configuration and | |||
customized before being used. | should be customized before being used. | |||
Announcing router: | Announcing router: | |||
! The discard route | ! The discard route | |||
ip route 192.0.2.1 255.255.255.255 Null0 | ip route 192.0.2.1 255.255.255.255 Null0 | |||
! | ! | |||
! Matches and empty AS-PATH only. | ! Matches and empty AS-PATH only. | |||
ip as-path access-list 10 permit ^$ | ip as-path access-list 10 permit ^$ | |||
! | ! | |||
! This route-map matches routes with tag 666 and sets the next-hop | ! This route-map matches routes with tag 666 and sets the next-hop | |||
! to be the discard route. | ! to be the discard route. | |||
skipping to change at page 12, line 12 | skipping to change at page 12, line 12 | |||
match ip address prefix-list only-host-routes | match ip address prefix-list only-host-routes | |||
match as-path 10 | match as-path 10 | |||
match community 65505:666 no-export | match community 65505:666 no-export | |||
! | ! | |||
! Don't accept any other announcements with the RTBH community. | ! Don't accept any other announcements with the RTBH community. | |||
route-map black-hole-filter deny 20 | route-map black-hole-filter deny 20 | |||
match community 65505:666 | match community 65505:666 | |||
! | ! | |||
route-map black-hole-filter permit 30 | route-map black-hole-filter permit 30 | |||
! | ! | |||
! An interface for source-based RTBH with uRPF loose mode. | ! An interface for source-based RTBH filtering with uRPF loose mode. | |||
interface FastEthernet 0/0 | interface FastEthernet 0/0 | |||
ip verify unicast source reachable-via any | ip verify unicast source reachable-via any | |||
Appendix B: Juniper Configuration Sample | Appendix B: Juniper Configuration Sample | |||
This section provides a partial configuration for configuring RTBH on | This section provides a partial configuration for configuring RTBH | |||
a Juniper router. This is not a complete configuration and should be | filtering on a Juniper router. This is not a complete configuration | |||
customized for before being used. | and should be customized before being used. | |||
Announcing router: | Announcing router: | |||
routing-options { | routing-options { | |||
static { | static { | |||
/* EXAMPLE ATTACK SOURCE */ | /* EXAMPLE ATTACK SOURCE */ | |||
route 10.11.12.66/32 { | route 10.11.12.66/32 { | |||
next-hop 192.0.2.1; | next-hop 192.0.2.1; | |||
resolve; | resolve; | |||
tag 666; | tag 666; | |||
skipping to change at page 16, line 5 | skipping to change at page 16, line 5 | |||
unit 201 { | unit 201 { | |||
vlan-id 201; | vlan-id 201; | |||
family inet { | family inet { | |||
rpf-check; | rpf-check; | |||
address 10.11.12.1/24; | address 10.11.12.1/24; | |||
} | } | |||
} | } | |||
} | } | |||
} | } | |||
Appendix C: A Brief History of RTBH | Appendix C: A Brief History of RTBH filtering | |||
Understanding the history and motivation behind the development of a | Understanding the history and motivation behind the development of a | |||
technique often helps with understanding how to best utilize the | technique often helps with understanding how to best utilize the | |||
technique. In this spirit we present a history of Unicast RPF and | technique. In this spirit we present a history of Unicast RPF and | |||
RTBH. | RTBH filtering. | |||
This section provided by Barry Raveendran Greene: | This section provided by Barry Raveendran Greene: | |||
Unicast RPF Loose Check (uRPF Loose Check) was created by Neil Jarvis | Unicast RPF Loose Check (uRPF Loose Check) was created by Neil Jarvis | |||
and Barry Greene to be used with dRTBH as a rapid reaction tool to | and Barry Greene to be used with dRTBH as a rapid reaction tool to | |||
DDOS Attacks. The requirements for this rapid reaction tool was based | DDoS Attacks. The requirements for this rapid reaction tool was based | |||
on post mortem conversation after the Feb 2000 attacks on several big | on post mortem conversation after the Feb 2000 attacks on several big | |||
content hosting companies. The summary of the requirement became the | content hosting companies. The summary of the requirement became the | |||
"Exodus Requirement" which stated: | "Exodus Requirement" which stated: | |||
"We need a tool to drop packets based on source IP address that can | "We need a tool to drop packets based on source IP address that can | |||
be pushed out to over 60 routers within 60 seconds, be longer than a | be pushed out to over 60 routers within 60 seconds, be longer than a | |||
thousand lines, be modified on the fly, and work in all your | thousand lines, be modified on the fly, and work in all your | |||
platforms filtering at line rate." | platforms filtering at line rate." | |||
A variety of options were looked at to meet this requirement, from | A variety of options were looked at to meet this requirement, from | |||
reviving COPS, to pushing out ACLs with BGP, creating a new protocol. | reviving COPS, to pushing out ACLs with BGP, creating a new protocol. | |||
In 2000, the quickest way to meet the "Exodus requirement" was to | In 2000, the quickest way to meet the "Exodus requirement" was to | |||
marry two functions. First, modify Unicast RPF so that the interface | marry two functions. First, modify Unicast RPF so that the interface | |||
check was no longer required and to make sure that a "null" or | check was no longer required and to make sure that a "null" or | |||
discard route would drop the packet (i.e. loose check). Second, the | discard route would drop the packet (i.e. loose check). Second, the | |||
technique where BGP is used to trigger a distributed drop is dusted | technique where BGP is used to trigger a distributed drop is dusted | |||
off and documented. Combining these two techniques was deemed to | off and documented. Combining these two techniques was deemed a fast | |||
fast way to put a distributed capability to drop packets out into the | way to put a distributed capability to drop packets out into the | |||
industry. | industry. | |||
To clarify and restate, uRPF Loose Check was created as one part of a | To clarify and restate, uRPF Loose Check was created as one part of a | |||
rapid reaction tool to DDOS attacks that "drop packets based on | rapid reaction tool to DDoS attacks that "drop packets based on | |||
source IP address that can be pushed out to over 60 routers with in | source IP address that can be pushed out to over 60 routers with in | |||
60 seconds, be longer than a thousand lines, be modified on the fly, | 60 seconds, be longer than a thousand lines, be modified on the fly, | |||
and work in all your platforms filtering at line rate." The secondary | and work in all your platforms filtering at line rate." The secondary | |||
benefits of using uRPF Loose Check for other functions is a secondary | benefits of using uRPF Loose Check for other functions is a secondary | |||
benefit - not the primary goal for its creation. | benefit - not the primary goal for its creation. | |||
To facilitate the adoption to the industry, uRPF Loose Check was not | To facilitate the adoption to the industry, uRPF Loose Check was not | |||
patented. It was publicly published and disclosed in "Unicast Reverse | patented. It was publicly published and disclosed in "Unicast Reverse | |||
Path Forwarding (uRPF) Enhancements for the ISP-ISP Edge" | Path Forwarding (uRPF) Enhancements for the ISP-ISP Edge" | |||
[Greene2001]. | [Greene2001]. | |||
End of changes. 48 change blocks. | ||||
112 lines changed or deleted | 121 lines changed or added | |||
This html diff was produced by rfcdiff 1.35. The latest version is available from http://tools.ietf.org/tools/rfcdiff/ |