Routing Security Workshop
Upcoming SlideShare
Loading in...5
×
 

Routing Security Workshop

on

  • 208 views

Presentation given by Massimiliano Stucchi in Vienna, Austria on 3 March 2014

Presentation given by Massimiliano Stucchi in Vienna, Austria on 3 March 2014

Statistics

Views

Total Views
208
Views on SlideShare
186
Embed Views
22

Actions

Likes
0
Downloads
6
Comments
0

3 Embeds 22

https://www.ripe.net 11
http://www.ripe.net 10
http://translate.googleusercontent.com 1

Accessibility

Categories

Upload Details

Uploaded via as Adobe PDF

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

    Routing Security Workshop Routing Security Workshop Presentation Transcript

    • 3 March 2014 CEE Peering Day 2014 Routing Security Massimiliano Stucchi Ferenc Csorba
    • Schedule 10:00 - 11:15 11:15 - 11:30 11:30 - 13:00 13:00 - 14:00 14:00 - 16:00 First Session Break Second Session Lunch Afternoon Session 2
    • Overview • Introduction to the Routing Registry • RIPE Database • Routing Policy Specification Language • Certification • Transfers 3
    • 1 Introduction to the Routing Registry
    • Internet Routing Registry • Several public databases that contain routing policy information that mirror each other: • RIPE, APNIC, RADB, JPIRR, Level3, etc. • http://www.irr.net ! • RIPE NCC operates the RIPE Routing Registry • Part of the RIPE Database • Part of the Internet Routing Registry 5
    • IRR, RIPE DB, RIPE RR 6 Internet Routing Registry APNIC DB RADB RIPE ROUTING REGISTRY RIPE DB ARIN DB LEVEL3 LACNIC DB AFRINIC DB ...
    • What is the purpose of RR? • To be able to answer the question: • Is that ASN authorised to originate that address range? 7
    • What is a Routing Policy? • What prefixes do you announce? • Who are your neighbours? • Peers, transits and customers • Which prefixes do you accept from them? • What are your preferences? 8
    • Why Publish Your Policy? • Some transit providers and IXPs (Internet Exchange Points) require it for filtering • Contributes to make routing more secure and stable ! • Can help with troubleshooting ! 9
    • RIPE Database and the RR • Close relation between registry information and routing policy • The holder of the resource knows how it should be routed ! • The Routing Policy Specification Language (RPSL) originates from a RIPE Document • Shares attributes with the RIPE Database 10
    • Challenges for the RR • Accuracy and completeness • Not every Routing Registry is linked directly to an Internet Registry • Online verification of the resource holder is needed • Different authorisation methods • Mirrors are not always up to date 11
    • 12 ?
    • 2 RIPE Database
    • RIPE Database • Public internet resource and routing registry database • All internet resources (IPv4, IPv6, AS numbers) are registered • Provides contact information • It is also the RIPE Routing Registry with routing policy information 14
    • RIPE Database Objects • inetnum = IPv4 address range • inet6num = IPv6 address range • aut-num = AS number • route, route6 = address range announced by an AS number 15
    • Contact Info for inet6num object 16 person: John Doe nic-hdl: JD1-RIPE! address: Sesame Street 1! phone: +1 555 0101! email: john@xmpl.org! mnt-by: RED-MNT inet6num: 2001:db8::/32 org: ORG-BB2-RIPE! admin-c: LA789-RIPE! tech-c: LA789-RIPE! ! mnt-by: RIPE-NCC-HM-MNT! admin-c: JD1-RIPE
    • route and route6 Object 17 inet6num: 2001:db8::/32 tech-c: LA789-RIPE! admin-c: JD1-RIPE! mnt-by RIPE-NCC-HM-MNT! mnt-by: LIR-MNT! ! route6: 2001:db8::/32 tech-c: LA789! admin-c: JD1-RIPE! origin: AS2 mnt-by: !LIR-MNT ! 12lir aut-num: AS2 tech-c: LA789-RIPE! admin-c: JD1-RIPE! mnt-by: RIPE-NCC-HM-MNT! mnt-by: LIR-MNT!!
    • route and route6 Object 18 inet6num: 2001:db8::/32 tech-c: LA789-RIPE! admin-c: JD1-RIPE! mnt-by RIPE-NCC-HM-MNT! mnt-by: LIR-MNT! ! route6: 2001:db8::/32 tech-c: LA789! admin-c: JD1-RIPE! origin: AS2 LIR-MNTmnt-by: ! aut-num: AS2 tech-c: LA789-RIPE! admin-c: JD1-RIPE! mnt-by: RIPE-NCC-HM-MNT! mnt-by: AS-MNT!! mnt-routes:LIR-MNT! ! 12lir!
    • inet6num in Real Life 19 inet6num: 2001:db8::/32 org: ORG-BB2-RIPE! admin-c: LA789-RIPE! tech-c: LA789-RIPE! admin-c: JD1-RIPE! mnt-by: RIPE-NCC-HM-MNT! mnt-routes: LIR-MNT! mnt-routes: AS-MNT! !
    • 20 ?
    • 3 Exercise: Create a route or a route6 Object
    • Exercise 1: route Object • Group A • Create a route object for your IPv4 allocation • List your AS Number as the origin ! • Group B • Create a route6 object for your IPv6 allocation • List your AS Number as the origin 22
    • 23 ?
    • 4 RPSL
    • Routing Policy • A routing policy describes how a network works: • Who do you connect with • Which prefixes or routes do you announce • Which routes do you accept from others • What are your preferences ! • In your router, this is your BGP configuration • Neighbours • route-maps • localpref 25
    • Routing Policy Specification Language ! • Language used by the IRRs • Not vendor specific • Documented in RFC 2622 and 2650 • Can be translated into router configuration 26
    • Objects Involved • route or route6 object • Connects a prefix to an origin AS • aut-num object • Registration record of an AS Number • Contains the routing policy • Sets • Objects can be grouped in sets, i.e. as-set, route-set • Keywords • “ANY” matches every route 27
    • Notation • AS Numbers are written as ASxxx • Prefixes are written in CIDR notation • 193.0.4.0/24 • Any value can be replaced by a list of values of the same type • AS1 can be replaced by “AS1 AS2 AS3” • You can reference a set instead of a value • “...announce AS1” or “...announce as-myname” 28
    • Traffic Direction 29 aut-num: AS1 AS2AS1 import: from AS2 accept AS2 ! ! export: to AS2 announce AS1 AS1 accepts prefixes from AS2 that originate in AS2. Outbound traffic for AS2 can go towards AS2 AS1 announces prefixes (originating in AS1) to AS2. Incoming traffic for AS1 can flow from AS2 announcements traffic
    • 3 scenarios: 1. You are downstream 30 Internet AS1 AS2 aut-num: AS1! import: from AS2 accept ANY! export: to AS2 announce AS1 Transit provider You
    • 3 scenarios: 2. You are upstream 31 Internet AS1 AS3 aut-num: AS1! import: from AS3 accept AS3! export: to AS3 announce ANY Downstream customer You
    • 3 scenarios: 3.Peering 32 Internet AS1AS4 aut-num: AS1! import: from AS4 accept AS4! export: to AS4 announce AS1 Peer You
    • 3 scenarios: Summary 33 Internet AS1 AS2 aut-num: AS1! import: from AS2 accept ANY! export: to AS2 announce AS1 AS3! import: from AS3 accept AS3! export: to AS3 announce ANY! import: from AS4 accept AS4! export: to AS4 announce AS1 AS3 Transit provider You AS3 AS4 ! Peer Downstream
    • Building an aut-num object 34 aut-num: AS2 aut-num: AS1 aut-num: AS3 AS1 AS2 AS3 Internet import: from AS1 accept AS1 export: to AS2 import: from AS3 accept ANY import: from AS2 accept AS2 export: to AS3 announce AS1 export: to AS1 announce ANY import: from AS1 accept AS1 announce AS1 export: to AS1 announce AS2
    • IPv6 in the Routing Registry 35 mp-import: afi ipv6.unicast from AS201 accept AS201! mp-export: afi ipv6.unicast to AS20 announce ANY • RPSL is older than IPv6, the default is IPv4 • IPv6 was added later using a different syntax • You have to specify that it’s IPv6
    • 36 ?
    • 5 Exercise: Describing Your Policy
    • Modifying Your aut-num Object 38 • Take the scenario as presented: ASx (you) AS 101 (transit) AS107 (backup transit) • In the TEST database update your AS, adding import and export attributes to describe your policy towards these neighbors
    • 39 ?
    • 6 RPSL in Practice
    • Example Routing Policy 41 aut-num:! ! AS99! as-name:! ! SMALL-ISP-EU! descr:! ! ! My network! remark:!! ! *** Transit via 101 ***! import:!! ! from AS101 accept ANY! export:!! ! to AS101 announce AS99 AS201 AS202! remark:!! ! *** Transit via 102 ***! import:!! ! from AS102 accept ANY! export:!! ! to AS102 announce AS99 AS201 AS202! remark:!! ! *** AS201 is a customer ***! import:!! ! from AS201 accept AS201! export:!! ! to AS201 announce ANY! remark:!! ! *** AS202 is a customer ***! import:!! ! from AS202 accept AS202! export:!! ! to AS201 announce ANY
    • Using AS-set • Adding and removing customers can become time consuming • Create a set to list them all at once 42 as-set:!! AS-SMALLISP! descr:! ! Customers’ ASNs of a small ISP! members:! AS201! members:! AS202 • And use that to describe your policy export:!! to AS101 announce AS-SMALLISP! export:!! to AS102 announce AS-SMALLISP
    • Using Keywords for AS-sets 43 • peerAS means • from AS5 accept AS5 • from AS7 accept AS7 • from AS8 accept AS8 as-set: AS4:AS-CUSTOMERS! members: AS7, AS5, AS8 aut-num: AS4! export: to AS3 announce AS4 AS4:AS-customers! export: to AS4:AS-CUSTOMERS announce ANY! import: from AS4:AS-CUSTOMERS accept PeerAS!
    • Indicating Your Preferences 44 • BGP uses “localpref” to influence which received routes you want to prefer • In RPSL you can use the “pref” action on your import attributes • Important: lower value means more preferred! import:!! from AS101 action pref=20;
 ! ! ! ! accept ANY! import:!! from AS102 action pref=30;
 ! ! ! ! accept ANY
    • Describing AS Path Prepending 45 • AS path prepending is used to influence routing, both inbound and outbound • Prepending can also be notated in RPSL using another action statement: export:! ! to AS102 action aspath.prepend AS99 (you) AS99 AS99 AS 102 (transit) AS99 (you) AS 101 (transit) some AS (AS99, AS99); announce AS-SMALLISP!
    • An aut-num object (second example) 46 aut-num: AS5 aut-num: AS1 aut-num: AS4 AS1 AS5 AS4 Internet import: from AS1 accept AS1 export: to AS5 action aspath.prepend (AS1, AS1); announce AS1 import: from AS4 accept ANY export: to AS4 announce AS1 import: from AS5 accept ANY export: to AS1 announce ANY import: from AS1 accept AS1 announce AS1 export: to AS1 announce ANY action pref=80; action pref=90; import: from AS5 action pref=70 accept AS5
    • 7 Exercise: Describing Your Policy
    • Modifying Your aut-num Object 48 • Take the scenario as presented: • In the TEST database update your AS, adding import and export attributes to describe your policy towards these neighbors ASx (you) AS 201 (customer) AS 101 (transit) AS601 (peer) AS107 (backup transit)
    • 49 ?
    • MED 50 • Multiple Exit Discriminator • differentiates connections to same peer • “which inbound connection do I prefer?” • doesn’t go beyond neighbour • Local Pref has precedence over MED • to honor your neighbor’s MED: • don’t set different prefs
    • MED, route-sets 51 export: ! to AS4! !! ! 10.0.0.4 at 10.0.0.1! !! ! action med=1000;! !!announce AS99! export: ! to AS4! !! ! 10.0.0.5 at 10.0.0.2! !! ! action med=2000;! !!announce AS99! export: ! to AS4! !! ! 10.0.0.4 at 10.0.0.1! !! ! action med=1000;! !!announce AS99! export: ! to AS4! !! ! 10.0.0.5 at 10.0.0.2! !! ! action med=2000;! !!announce AS99 AS99 (you) AS 4 10.0.0.410.0.0.1 10.0.0.2 10.0.0.5
    • Communities 52 • Optional tags • Can go through many peers • Can be used for advanced filtering • Not a routing parameter • Enables customers to control their own routing policy • Publish your communities, and what you do with them • Filter incoming announcements accordingly
    • Communities: setting them 53 • Set a community: import:! ! from AS6 ! action community = { 99:100 }; ! accept AS6 • Append a community: import:! ! from AS7 ! action community.append(99:51); ! accept AS7 export:! ! to AS3 ! action community .= { 99:100 }; ! announce ANY • Delete a community: import:! ! from AS201 action community.delete
 ! ! ! ! (99:100); accept AS201!
    • Communities: filtering 54 import:! ! from AS21 ! accept AS6 AND ! community.contains = (21:32) import:! ! from AS17 ! accept community(68:2) import:! ! from AS1:AS-CUSTOMERS! accept PeerAS AND! community.contains (202:3) export:! ! to AS3! announce AS1:AS-CUST AND! community == {1:113}! export:! ! to AS1:AS-PEERS ! announce ANY AND! community.contains (1:75)!
    • AS Path Regular Expression 55 • You can use regular expressions in your filters • They are always enclosed in “< >” import: from AS201 accept <^AS201+$> • Uses the standard posix notation: • “^” start of path • “$” end of path • “*” zero or more • “+” one or more • “?” zero or one
    • Literal Prefixes 56 • Instead of AS Numbers you can use prefixes: import: from AS2121 accept {193.0.24.0/21} • Operators can be used to define ranges: • “^-” all more specifics excluding the prefix itself • “^+” all more specifics including the prefix itself • “^n” all routes of length n in this prefix • “^n-m” all routes of length n to length m
    • Using a route-set 57 • Groups literal prefixes • Can include other route-sets and even ASNs • And use that to describe/simplify your policy route-set:!rs-bar! descr:! ! All ASNs of a small ISP! members:! 5.0.0.0/8^+, 30.0.0.0/8^24-32! members:! rs-foo^+! members:! AS2 export:!! to AS101 announce RS-BAR
    • Default Routes 58 • Next to import and export there can also be a default line to describe your default policy • Instead of all routes, you can also announce a default route export:!! to AS99 announce AS201! import:!! from AS202 accept AS202! export:!! to AS202 announce AS201! default:! to AS99 action pref=150
 export:!! to AS201 announce {0.0.0.0/0}
    • The Simplified Object 59 aut-num:! ! AS99! as-name:! ! SMALL-ISP-EU! descr:!! ! My network! remark:!! ! *** Announcements are grouped ***! import:!! ! from AS101 accept ANY! export:!! ! to AS101 announce AS-SMALLISP! import:!! ! from AS102 accept ANY! export:!! ! to AS102 announce AS-SMALLISP! remark:!! ! *** My Customers are grouped ***! import:!! ! from AS99:Customers accept PEERAS! export:!! ! to AS99:Customers announce ANY
    • 60 ?
    • 8 Exercise: Retrieving information from the Routing Registry
    • A Look at the Real World 62 • Have a look at AS3333 in the RIPE Database • Find out if they have any “customer” ASNs • Which prefixes would you accept from AS3333 if it was your customer? • Remember to use the real database! ! • Optionally: verify the results using the tools at http://stat.ripe.net
    • 63 ?
    • 9 Tools and Automation
    • Making Life Easier 65 • There are a lot of tools around that use information in the Routing Registry • Some can generate “complete” router configurations like the IRRToolset • Most are open source tools • You can modify them to your needs • Some are not very well maintained
    • Getting the Complete Picture 66 • Automation relies on the IRR being complete • Not all resources are registered in an IRR • Not all information is correct • Check your output before using it • Be prepared to make manual overrides ! • Tools: • IRRToolkit (in C++) • RPSLtool (perl) • whois -h filtergen.level3.net RIPE::ASxxxx
    • RIPEstat RRC 67 • You can compare the Routing Registry and the internet routing table using http://stat.ripe.net
    • 68 ?
    • 10 Resource Certification
    • What is the purpose of Certification? 70 • To be able to answer the question: • Is that ASN authorised to originate that address range?
    • Why RPKI? 71 • Why yet another system? • Lots of Routing Registries • Not all mirroring each other • Different levels of trustworthiness and authentication • RPKI replaces RR or lives side by side? • Side by side: different advantages • Security, almost real time, simple interface: RPKI • More information in: RR
    • The Advantages of RPKI 72 • Usable toolset • No installation required • Easy to configure manual overrides • Tight integration with routers • Supported routers have awareness of RPKI validity states
    • Certificates 73 • RIPE NCC issues digital certificates • To LIRs only (more info coming soon!) • Upon request ! • Certificate lists all resources held by the member
    • Which Resources Are Certified? 74 • Everything for which we are 100% sure who the owner is: • Provider Aggregatable (PA) IP addresses • Provider Independent (PI) IP addresses marked as “infrastructure” of the LIR ! • Other resources will be added soon! • PI addresses for which we have a contract • ERX resources
    • RPKI: Chain of Trust 75 • RPKI system: • RIPE NCC holds self-signed root certificate for all resources they have in the registry • Signed by the root’s private key • The root certificate is used to sign all certificates for members listing their resources • Signed by the root’s private key
    • ROA 76 • Route Origin Authorisation • LIRs can use their certificate to create a ROA for each of their resources (address ranges) • ROA states: • Address range • Which AS number this is announced from (freely chosen) • Maximum length (freely chosen) • You can have multiple ROAs for an IP range • ROAs can overlap
    • Examples with ROAs (1) 77 193.0.24.0/21 193.0.24.0/22 193.0.30.0/23 193.0.24.0/21 AS2121 ROA Max Length: _ ✖✖
    • Examples with ROAs (2) 78 193.0.24.0/23 193.0.30.6/23 193.0.24.0/21 AS2121 ROA Max Length: /23 193.0.24.0/21 193.0.24.0/22 193.0.26.0/23 193.0.28.0/22 193.0.28.0/23
    • Examples with ROAs (3) 79 /24 193.0.24.0/21 AS2121 ROA Max Length: _ 193.0.24.0/21 193.0.24.0/22 193.0.28.0/22 /23 /24 /24 /24 /24 /24 /24 /24 /23 193.0.24.0/23 AS2121 ROA Max Length: /24 193.0.30.0/23 AS2121 ROA Max Length: _ ✖ /23 /24 /24 /23 /23/23
    • 80 ?
    • 11 Demonstration: Setting up Certification
    • Enabling Access To RPKI 82
    • Setting Up Your Resource Certificate 83
    • My Existing ROA Specifications 84
    • 12 Demonstration: Creating a ROA
    • My Existing ROA Specifications 86 1 2
    • Add ROA 87
    • Your New ROA and its Consequences 88
    • Validator 89 • The validator of the client can access RIPE NCC’s Repository with all the certificates, public keys, ROAs • It downloads everything and then performs validation, checking whether the certificates and ROAs are valid • Then it constructs a list of valid ROAs, which is its “validated cache”
    • Validator 90 Validated cache Validated ROAs only Validator at the Relying Party’s site RIPE NCC’s Repository ROA AS Certificate Certificates ROAs ROA ROA ROA
    • Invalid ROAs 91 • Invalid ROAs are simply not included in the list of valid ROAs when the validator of the client computes them • Reasons for a ROA to be invalid • The signing certificate or key pair has expired or has been revoked • It does not validate back to a configured trust anchor • The LIR’s resource has been returned to the RIPE NCC
    • Modifying the Validated Cache 92 • The RIPE NCC Validator allows you to manually override the validation process • Adding an ignore filter will ignore all ROAs for a given prefix • The end result is the validation state will be “unknown” • Creating a whitelist entry for a prefix and ASN will locally create a valid ROA • The end result is the validation state becomes “valid”
    • Comparing BGP Announcement 93 • valid • there is a ROA in the validated cache that matches the BGP announcement of the peer. Size matches too • unknown • There is no ROA for that prefix in the cache • invalid • There is a ROA for the prefix, but for a different AS • Or the size doesn’t match
    • Invalid ROA vs. Invalid Announcement 94 • Invalid ROA: • The ROA in the repository cannot be validated by the client (ISP) so it is not included in the validated cache ! • Invalid BGP announcement: • There is a ROA in the validated cache for that prefix but for a different AS • Or the max. length doesn’t match • Remember: If no ROA in cache -> announcement unknown!
    • Router 95 • The Relying Party’s router can connect and download the cache from the validator • Router can then compare any BGP announcements to the list of valid ROAs in the validated cache
    • You Are In Control 96 • As an announcer/LIR: • You choose if you want certification • You choose if you want to create ROAs • You can choose max. length and AS • As a Relying Party • You can choose if you use the validator • You can choose to make any routing decisions based on the results of the BGP Verification (valid/invalid/unknown)
    • 97 ?
    • 13 Demonstration: Using the RIPE NCC Validator
    • 14 Exercise: RPKI Quiz
    • 15 Router Integration
    • Exporting the Validated Cache 101 • Router sessions • Validator listens on 8282 for RPKI-RTR Protocol • Routers can connect and download the cache • Export function • Allows you to download a CSV with the cache • Can be integrated with your internal workflow • Use for statistics or spotting anomalies
    • RPKI Support of Routers 102 • The RPKI-RTR Protocol is an IETF standard • All router vendors can implement it • Production Cisco support • ASR1000, 7600, ASR903, ASR901 in releases 15.2(1)S or X 3.5 • Cisco Early Field Trial (EFT) • ASR9000, CRS1, CRS3, c12K (IOS-XR) • Juniper has support since version 12.2 • Quagga has support through BGP-ERX
    • Public Testbeds 103 • Cisco (hosted by the RIPE NCC): • Telnet to rpki-rtr.ripe.net • User: ripe, no password • Juniper (hosted by Kaia Global Networks) • Telnet to 193.34.50.25 or 193.34.50.26 • User: rpki, password: testbed ! • (http://www.ripe.net/certification/tools-and-resources)
    • 104 ?
    • 16 IPv4 Transfers
    • IPv4 Allocation Transfers 106 • Only between RIPE NCC Members • Allocation is allowed to be in use • Minimum size is /22 • Must qualify for allocation • 80% usage criteria applies • Evaluated by RIPE NCC
    • Types of Transfers 107 • PA between RIPE NCC members • Due to merger or acquisition • From legacy space
    • Transfers, how 108 • IPv4 RIPE NCC Listing Service • Accessible from LIR Portal Account • Brokers • Listed on RIPE NCC website • NOT endorsed by RIPE NCC • Signed an agreement to conform to RIPE policies
    • 109 ?
    • 110 Fin Ende Kpaj Konec Son Fine Pabaiga Einde Fim Finis Koniec Lõpp Kрай Sfârşit Конeц Kraj Vége Kiнець Slutt Loppu Τέλος Y Diwedd Amaia Tmiem Соңы Endir Slut Liðugt An Críoch Fund ‫הסוף‬ Fí Ënn Finvezh The End! Beigas