© 2006-2012 nlnet labs, licensed under a creative commons attribution 3.0 unported license.creative...

43
© 2006-2012 NLnet Labs, Licensed under a Creative Commons Attribution 3.0 Unport Introduction to DNS and its vulnerabilities Olaf M. Kolkman [email protected]

Upload: melvin-prestidge

Post on 31-Mar-2015

214 views

Category:

Documents


1 download

TRANSCRIPT

Page 1: © 2006-2012 NLnet Labs, Licensed under a Creative Commons Attribution 3.0 Unported License.Creative Commons Attribution 3.0 Unported License Introduction

© 2006-2012 NLnet Labs, Licensed under a Creative Commons Attribution 3.0 Unported License.

Introduction to DNS and its

vulnerabilities

Introduction to DNS and its

vulnerabilities

Olaf M. [email protected] M. [email protected]

Page 2: © 2006-2012 NLnet Labs, Licensed under a Creative Commons Attribution 3.0 Unported License.Creative Commons Attribution 3.0 Unported License Introduction

2

DNS and DNS and

DNSSEC in a DNSSEC in a

NutshellNutshell

DNS and DNS and

DNSSEC in a DNSSEC in a

NutshellNutshell

source: http://upload.wikimedia.org/wikipedia/commons/b/b7/KoreanPineSeeds.jpg

Page 3: © 2006-2012 NLnet Labs, Licensed under a Creative Commons Attribution 3.0 Unported License.Creative Commons Attribution 3.0 Unported License Introduction

3

Device queries Device queries

Recursive Recursive

NameserverNameserver

Device queries Device queries

Recursive Recursive

NameserverNameserver

Recursive

Recursive Nameserver

NameserverRecurses over

Recurses over

Authoritative

Authoritative nameservers

nameservers

Recursive

Recursive Nameserver

NameserverRecurses over

Recurses over

Authoritative

Authoritative nameservers

nameservers

Results are Results are cachedcached

Results are Results are cachedcached

The DNS is highly

The DNS is highly

distributivedistributiveThe DNS is highly

The DNS is highly

distributivedistributive

DNS is DNS is

implemented

implemented

through 100s of

through 100s of

thousands of

thousands of machines

machines

DNS is DNS is

implemented

implemented

through 100s of

through 100s of

thousands of

thousands of machines

machines

Page 4: © 2006-2012 NLnet Labs, Licensed under a Creative Commons Attribution 3.0 Unported License.Creative Commons Attribution 3.0 Unported License Introduction

4

Stub Resolver Recursive Nameservers

Authoritative Nameservers

www.nlnetlabs.nl A

root.hints: location of the root servers

referral: nl NS

www.nlnetlabs.nl A

www.nlnetlabs.nl A

www.nlnetlabs.nl A

referral: nlnetlabs.nl NS

Answer: www.nlnetlabs.nl A 213.154.224.1

ROOTROOT

NLNL

NLnetLabs.NLnetLabs.NLNL

www.nlnetlabs.nl A 213.154.224.1

www.nlnetlabs.nl A 213.154.224.1

Page 5: © 2006-2012 NLnet Labs, Licensed under a Creative Commons Attribution 3.0 Unported License.Creative Commons Attribution 3.0 Unported License Introduction

5

Attack Surface

On the Wire or

On the Wire or

through

through

Compromise

CompromiseOn the Wire or

On the Wire or

through

through

Compromise

Compromise

Whoa, that looks

Whoa, that looks

bad!!! Who Uses

bad!!! Who Uses

This System?

This System?

Whoa, that looks

Whoa, that looks

bad!!! Who Uses

bad!!! Who Uses

This System?

This System?

Compromise of

Compromise of

systems

systems

Compromise of

Compromise of

systems

systems

Bugs and

Bugs and

implementation

implementation

mistakes

mistakesBugs a

nd

Bugs and

implementation

implementation

mistakes

mistakes

Page 6: © 2006-2012 NLnet Labs, Licensed under a Creative Commons Attribution 3.0 Unported License.Creative Commons Attribution 3.0 Unported License Introduction

http://www.nlnetlabs.nl/©2011 Stichting NLnet Labs

Mail serverMail server

Mail serverMail server

InternetInternet

Recursive DNSRecursive DNS

enterprise

QuickTime™ and aGraphics decompressor

are needed to see this picture.

Page 7: © 2006-2012 NLnet Labs, Licensed under a Creative Commons Attribution 3.0 Unported License.Creative Commons Attribution 3.0 Unported License Introduction

http://www.nlnetlabs.nl/©2011 Stichting NLnet Labs

Mail serverMail server

Mail serverMail server

InternetInternet

Recursive DNSRecursive DNS

enterprise

QuickTime™ and aGraphics decompressor

are needed to see this picture.

Page 8: © 2006-2012 NLnet Labs, Licensed under a Creative Commons Attribution 3.0 Unported License.Creative Commons Attribution 3.0 Unported License Introduction

8

Recursive Recursive NameserveNameserve

r r

Query: <qname, qtype, qclass,id>

STUB STUB ResolverResolver

AuthoritatiAuthoritative ve

NameserveNameserver r

AtackerAtacker

Query: <qname, qtype, qclass,id>

Query: <qname, qtype, qclass,id>

Response: <name, type, class,id>

Answer: <name, type, class>

Response: <name, type, class,id>

Cache hit

Response:<name, type, class,id>

Page 9: © 2006-2012 NLnet Labs, Licensed under a Creative Commons Attribution 3.0 Unported License.Creative Commons Attribution 3.0 Unported License Introduction

9

Recursive Recursive NameserveNameserve

r r

Query: <qname, qtype, qclass,id>

STUB STUB ResolverResolver

AuthoritatiAuthoritative ve

NameserveNameserver r

AtackerAtacker

Query: <qname, qtype, qclass,id>

Query: <qname, qtype, qclass,id>

Response: <name, type, class,id>

Answer: <name, type, class>

Response: <name, type, class,id>

Cache hit

Response:<name, type, class,id>

Response: <name, type, class,id>

Success depends

Success depends on legacy and

on legacy and speed of speed of network.

network.

Success depends

Success depends on legacy and

on legacy and speed of speed of network.

network.

And on various

And on various

properties that

properties that

the attacher the attacher

needs to match

needs to match

And on various

And on various

properties that

properties that

the attacher the attacher

needs to match

needs to match

Query IDQuery IDQuery IDQuery ID Source PortSource PortSource PortSource Port

0X200X200X200X20

Page 10: © 2006-2012 NLnet Labs, Licensed under a Creative Commons Attribution 3.0 Unported License.Creative Commons Attribution 3.0 Unported License Introduction

10

TTL saves you?!?TTL saves you?!?I don’t think so....I don’t think so....TTL saves you?!?TTL saves you?!?I don’t think so....I don’t think so....

Dan Kaminsky’s image from zdnet.com

Security Security

PopstarPopstarSecurity Security

PopstarPopstar

Page 11: © 2006-2012 NLnet Labs, Licensed under a Creative Commons Attribution 3.0 Unported License.Creative Commons Attribution 3.0 Unported License Introduction

11

Recursive Recursive NameserveNameserve

r r

Query: asdf23sadf.webcam.com

STUB STUB ResolverResolver

AuthoritatiAuthoritative ve

NameserveNameserver r

AtackerAtacker

Query: www.webcam.com

Response: www.webcam.com

Answer: <name, type, class>

Response: webcam.com NS ns1.webcam.co

mns1.webcam.com A 10.6.6.6

Query: asdf23sadf.webcam.com

Response: asdf23sadf.webcam.com

Query to 10.6.6.6asdf23sadf.webcam.com

Query to 10.6.6.6www.webcam.com

Try Try

Delegatio

Delegatio

nsns

Try Try

Delegatio

Delegatio

nsns

Abuse a 25 Abuse a 25 year old year old protocol protocol requirement

requirement

Abuse a 25 Abuse a 25 year old year old protocol protocol requirement

requirement

Page 12: © 2006-2012 NLnet Labs, Licensed under a Creative Commons Attribution 3.0 Unported License.Creative Commons Attribution 3.0 Unported License Introduction

12

Do attacks

Do attacks happen in

happen in practice?practice?

Do attacks

Do attacks happen in

happen in practice?practice?

Would you

Would you

tell?tell?Would you

Would you

tell?tell?

Would you Would you

notice?notice?Would you Would you

notice?notice?

Page 13: © 2006-2012 NLnet Labs, Licensed under a Creative Commons Attribution 3.0 Unported License.Creative Commons Attribution 3.0 Unported License Introduction

13

Why would one

Why would one

attack the DNS?

attack the DNS?Why would one

Why would one

attack the DNS?

attack the DNS?

Do attacks

Do attacks happen in

happen in practice?practice?

Do attacks

Do attacks happen in

happen in practice?practice?

While one could

While one could

be doing other

be doing other thingsthings

While one could

While one could

be doing other

be doing other thingsthings

Page 14: © 2006-2012 NLnet Labs, Licensed under a Creative Commons Attribution 3.0 Unported License.Creative Commons Attribution 3.0 Unported License Introduction

14

How to How to Protect?

Protect?

How to How to Protect?

Protect?

Page 15: © 2006-2012 NLnet Labs, Licensed under a Creative Commons Attribution 3.0 Unported License.Creative Commons Attribution 3.0 Unported License Introduction

15

Follow the

Organizing

Organizing your lifeyour life

Organizing

Organizing your lifeyour life

Paying Paying

your Taxyour TaxPaying Paying

your Taxyour Tax

Your weekly Your weekly security

security updateupdate

Your weekly Your weekly security

security updateupdate

Short-Short-selling

selling your stock

your stock

Short-Short-selling

selling your stock

your stockMon€yWhy would one

Why would one

attack the DNS?

attack the DNS?Why would one

Why would one

attack the DNS?

attack the DNS?

Page 16: © 2006-2012 NLnet Labs, Licensed under a Creative Commons Attribution 3.0 Unported License.Creative Commons Attribution 3.0 Unported License Introduction

16

Mon€yDon’t all these

Don’t all these

transactions use

transactions use

SSL and SSL and

Certificates?Certificates?

Don’t all these

Don’t all these

transactions use

transactions use

SSL and SSL and

Certificates?Certificates?

Page 17: © 2006-2012 NLnet Labs, Licensed under a Creative Commons Attribution 3.0 Unported License.Creative Commons Attribution 3.0 Unported License Introduction

17

The role of The role of

a CAa CAThe role of The role of

a CAa CA 3rd party

3rd party trust broker

trust broker

3rd party

3rd party trust broker

trust broker

SubjectSubjectRequests

Requests

SubjectSubjectRequests

Requests

RA performs RA performs

checkschecksRA performs RA performs

checkschecks

RA tells CA RA tells CA to sign

to sign

RA tells CA RA tells CA to sign

to sign

Browser trusts

Browser trusts

CA signed CA signed

certificatescertificates

Browser trusts

Browser trusts

CA signed CA signed

certificatescertificatesEVEV

Extended Extended Validation

Validation

EVEVExtended Extended Validation

Validation

Page 18: © 2006-2012 NLnet Labs, Licensed under a Creative Commons Attribution 3.0 Unported License.Creative Commons Attribution 3.0 Unported License Introduction

18

However all However all these little men

these little men are a wee bit

are a wee bit expensiveexpensive

However all However all these little men

these little men are a wee bit

are a wee bit expensiveexpensive

AUTOMATE THE LOT

Page 19: © 2006-2012 NLnet Labs, Licensed under a Creative Commons Attribution 3.0 Unported License.Creative Commons Attribution 3.0 Unported License Introduction

19

DVDV

Domain

Domain

Validation

Validation

DVDV

Domain

Domain

Validation

Validation

Subject: Please

Subject: Please sign certificate

sign certificate forforExample.com

Example.com

Subject: Please

Subject: Please sign certificate

sign certificate forforExample.com

Example.comRA sends a mail

RA sends a mail

to well known

to well known

addressaddress

@example.com

@example.com

RA sends a mail

RA sends a mail

to well known

to well known

addressaddress

@example.com

@example.com

When mail When mail returned CA will

returned CA will signsign

When mail When mail returned CA will

returned CA will signsign

Page 20: © 2006-2012 NLnet Labs, Licensed under a Creative Commons Attribution 3.0 Unported License.Creative Commons Attribution 3.0 Unported License Introduction

20

DVDV

Domain

Domain

Validation

Validation

DVDV

Domain

Domain

Validation

Validation

All these checks

All these checks are based on

are based on information

information fetched from the

fetched from the DNSDNS

All these checks

All these checks are based on

are based on information

information fetched from the

fetched from the DNSDNS

Hold that thought

Hold that thoughtfor Jakob’s

for Jakob’s presentation

presentation

Hold that thought

Hold that thoughtfor Jakob’s

for Jakob’s presentation

presentation

Page 21: © 2006-2012 NLnet Labs, Licensed under a Creative Commons Attribution 3.0 Unported License.Creative Commons Attribution 3.0 Unported License Introduction

21

SecondaryDNS

primaryDNS

Registrars& Registrants

Registry

SecondaryDNS

Server vulnarability

Man in the Middle

spoofing&

Man in the Middle

DNS System

DNS System

Vulnerabiliti

Vulnerabilitieses

DNS System

DNS System

Vulnerabiliti

Vulnerabilitieses

Provisioning Provisioning

Vulnarabilities

VulnarabilitiesProvisioning Provisioning

Vulnarabilities

Vulnarabilities

Page 22: © 2006-2012 NLnet Labs, Licensed under a Creative Commons Attribution 3.0 Unported License.Creative Commons Attribution 3.0 Unported License Introduction

22

What can one do

What can one do to protect...

to protect...(skipping DNSSEC)

(skipping DNSSEC)

What can one do

What can one do to protect...

to protect...(skipping DNSSEC)

(skipping DNSSEC)

Page 23: © 2006-2012 NLnet Labs, Licensed under a Creative Commons Attribution 3.0 Unported License.Creative Commons Attribution 3.0 Unported License Introduction

© 2006-2012 NLnet Labs, Licensed under a Creative Commons Attribution 3.0 Unported License.

Taking Unbound as example

Taking Unbound as example Other servers

Other servers might make other

might make other choices, but any

choices, but any modern resolver

modern resolver takes similar

takes similar approaches

approaches

Other servers

Other servers might make other

might make other choices, but any

choices, but any modern resolver

modern resolver takes similar

takes similar approaches

approaches

Page 24: © 2006-2012 NLnet Labs, Licensed under a Creative Commons Attribution 3.0 Unported License.Creative Commons Attribution 3.0 Unported License Introduction

© 2006-2012 NLnet Labs, Licensed under a Creative Commons Attribution 3.0 Unported License.

Security Choices in Unbound

Security Choices in Unbound

•In general, a modern paranoid resolver

•DNSSEC support.

•RFC 2181 support completely

•Fine grained. Keeps track of where RRSets came from and won't upgrade them into answers.

•Does not allow RRSets to be overridden by lower level rrsets

Page 25: © 2006-2012 NLnet Labs, Licensed under a Creative Commons Attribution 3.0 Unported License.Creative Commons Attribution 3.0 Unported License Introduction

© 2006-2012 NLnet Labs, Licensed under a Creative Commons Attribution 3.0 Unported License.

FilteringFiltering• Scrubber:

• Only in-bailiwick data is accepted in the answer

• The answer section must contain only answer

• CNAME, DNAME checked that chain is correct

• CNAME cut off and only the first CNAME kept

• Lookup rest yourself do not trust other server

• DNAME synthesize CNAME by unbound do not trust other server. Also cut off like above.

• DNAME from cache only used if DNSSEC-secure.

Page 26: © 2006-2012 NLnet Labs, Licensed under a Creative Commons Attribution 3.0 Unported License.Creative Commons Attribution 3.0 Unported License Introduction

© 2006-2012 NLnet Labs, Licensed under a Creative Commons Attribution 3.0 Unported License.

Filtering IIFiltering II•No address records in authority,

additional section unless relevant – i.e. mentioned in a NS record in the authority section.

•Irrelevant data is removed

•When the message only had preliminary parsing and has not yet been copied to the working region of memory

Page 27: © 2006-2012 NLnet Labs, Licensed under a Creative Commons Attribution 3.0 Unported License.Creative Commons Attribution 3.0 Unported License Introduction

© 2006-2012 NLnet Labs, Licensed under a Creative Commons Attribution 3.0 Unported License.

EntropyEntropy•Randomness protects against spoof

•Arc4random() (OpenBSD): crypto strong. May not be perfectly random, but predicting it is a cryptographical breakin.

•Real entropy from OS as seed

•Query id – all 16 bits used.

•Port randomisation – uses all 16bits there, goes out of its way to make sure every query gets a fresh port number

Page 28: © 2006-2012 NLnet Labs, Licensed under a Creative Commons Attribution 3.0 Unported License.Creative Commons Attribution 3.0 Unported License Introduction

© 2006-2012 NLnet Labs, Licensed under a Creative Commons Attribution 3.0 Unported License.

Entropy IIEntropy II• Destination address, and ipv4/ipv6. RTT band of

400msec (=everything).

• Its not the timewindow but the randomness

• Query aggregation – same queries are not sent out – unless by different threads

• Qname strict match checked in reply

• 0x20 option

• Harden-referral-path (my draft) option

• Can use multiple source interfaces!

• 4 outgoing IP address add +2 bits

Page 29: © 2006-2012 NLnet Labs, Licensed under a Creative Commons Attribution 3.0 Unported License.Creative Commons Attribution 3.0 Unported License Introduction

© 2006-2012 NLnet Labs, Licensed under a Creative Commons Attribution 3.0 Unported License.

Other measuresOther measures• Not for the wire itself

• Heap function pointer protection (whitelisted)

• Chroot() by default

• User privileges are dropped (lots of code!)

• ACL for recursion

• No detection of attacks – assume always under attack

• version.bind hostname.bind can be blocked or configured what to return (version hiding)

• Disprefer recursion lame servers – they have a cache that can be poisoned

Page 30: © 2006-2012 NLnet Labs, Licensed under a Creative Commons Attribution 3.0 Unported License.Creative Commons Attribution 3.0 Unported License Introduction

© 2006-2012 NLnet Labs, Licensed under a Creative Commons Attribution 3.0 Unported License.

Arms Race...

Arms Race...

Arms Race...

Arms Race...

Introducing

Introducing

DNSSECDNSSECIntroducing

Introducing

DNSSECDNSSEC

Page 31: © 2006-2012 NLnet Labs, Licensed under a Creative Commons Attribution 3.0 Unported License.Creative Commons Attribution 3.0 Unported License Introduction

31

MetaphorMetaphorMetaphorMetaphor

MetaphorMetaphor

Page 32: © 2006-2012 NLnet Labs, Licensed under a Creative Commons Attribution 3.0 Unported License.Creative Commons Attribution 3.0 Unported License Introduction

32

primaryDNS

SecondaryDNS

Registrars& Registrants

Registry

SecondaryDNS

End to End End to End SecuritySecurity

End to End End to End SecuritySecurity

Page 33: © 2006-2012 NLnet Labs, Licensed under a Creative Commons Attribution 3.0 Unported License.Creative Commons Attribution 3.0 Unported License Introduction

33

All done using

All done using Public Key crypto

Public Key crypto

All done using

All done using Public Key crypto

Public Key crypto

DNSKEY: DNSKEY:

public key public key

from the from the

keypairkeypair

DNSKEY: DNSKEY:

public key public key

from the from the

keypairkeypair RRSIG: Signatures

RRSIG: Signatures

made with a

made with a

private key from

private key from

the keypair

the keypair

RRSIG: Signatures

RRSIG: Signatures

made with a

made with a

private key from

private key from

the keypair

the keypair

NSEC and NSEC3NSEC and NSEC3

For pre-For pre-

calculated Denial calculated Denial

of Existenceof Existence

NSEC and NSEC3NSEC and NSEC3

For pre-For pre-

calculated Denial calculated Denial

of Existenceof Existence

DSDS

For delegating

For delegating

SecuritySecurity

DSDS

For delegating

For delegating

SecuritySecurity

Page 34: © 2006-2012 NLnet Labs, Licensed under a Creative Commons Attribution 3.0 Unported License.Creative Commons Attribution 3.0 Unported License Introduction

© 2006-2012 NLnet Labs, Licensed under a Creative Commons Attribution 3.0 Unported License.

But more on that later

But more on that laterLet us have a look

Let us have a look

at another

at another

cryptographic DNS

cryptographic DNS

protection

protection mechanism

mechanism

Let us have a look

Let us have a look

at another

at another

cryptographic DNS

cryptographic DNS

protection

protection mechanism

mechanism

Page 35: © 2006-2012 NLnet Labs, Licensed under a Creative Commons Attribution 3.0 Unported License.Creative Commons Attribution 3.0 Unported License Introduction

© 2006-2012 NLnet Labs, Licensed under a Creative Commons Attribution 3.0 Unported License.

Securing Host-Host

Communication

Securing Host-Host

Communication

Page 36: © 2006-2012 NLnet Labs, Licensed under a Creative Commons Attribution 3.0 Unported License.Creative Commons Attribution 3.0 Unported License Introduction

© 2006-2012 NLnet Labs, Licensed under a Creative Commons Attribution 3.0 Unported License.

SecondaryDNS

primaryDNS

Registrars& Registrants

Registry

SecondaryDNS

Data flow through the DNS

What should you protect...

HOST Security

TSIG

TSIG (rarely)

Page 37: © 2006-2012 NLnet Labs, Licensed under a Creative Commons Attribution 3.0 Unported License.Creative Commons Attribution 3.0 Unported License Introduction

© 2006-2012 NLnet Labs, Licensed under a Creative Commons Attribution 3.0 Unported License.

Transaction Signature: TSIG

Transaction Signature: TSIG

•TSIG (RFC 2845)

–Authorising dynamic updates and zone transfers

–Authentication of caching forwarders

–Independent from other features of DNSSEC

•One-way hash function

–DNS question or answer and timestamp

•Traffic signed with “shared secret” key

•Used in configuration, NOT in zone file

Page 38: © 2006-2012 NLnet Labs, Licensed under a Creative Commons Attribution 3.0 Unported License.Creative Commons Attribution 3.0 Unported License Introduction

© 2006-2012 NLnet Labs, Licensed under a Creative Commons Attribution 3.0 Unported License.

SOA …

SOA

SIG: FOOB@R

Master

TSIG ExampleTSIG Example

Slave

KEY: $h@r3dS3cr3t

KEY: $h@r3dS3cr3t

AXFR

Sig: B1@F00

SOA …

SOA

SIG: FOOB@R

verification

verification

Query: AXFR

Response: Zone

AXFR

Sig: B1@F00

AXFR

Sig: B1@F00

Page 39: © 2006-2012 NLnet Labs, Licensed under a Creative Commons Attribution 3.0 Unported License.Creative Commons Attribution 3.0 Unported License Introduction

© 2006-2012 NLnet Labs, Licensed under a Creative Commons Attribution 3.0 Unported License.

TSIG for Zone Transfers

TSIG for Zone Transfers

1.Generate secret

2.Communicate secret

3.Configure servers

4.Test

Page 40: © 2006-2012 NLnet Labs, Licensed under a Creative Commons Attribution 3.0 Unported License.Creative Commons Attribution 3.0 Unported License Introduction

© 2006-2012 NLnet Labs, Licensed under a Creative Commons Attribution 3.0 Unported License.

Importance of the Time Stamp

Importance of the Time Stamp•TSIG/SIG(0) signs a complete DNS

request / response with time stamp

– To prevent replay attacks

– Currently hardcoded at five minutes

•Operational problems when comparing times

– Make sure your local time zone is properly defined

–date -u will give UTC time, easy to compare between the two systems

– Use NTP synchronisation!

Page 41: © 2006-2012 NLnet Labs, Licensed under a Creative Commons Attribution 3.0 Unported License.Creative Commons Attribution 3.0 Unported License Introduction

© 2006-2012 NLnet Labs, Licensed under a Creative Commons Attribution 3.0 Unported License.

Authenticating Servers Using

SIG(0)

Authenticating Servers Using

SIG(0)•Alternatively, it is possible to use SIG(0)–Not yet widely used

–Works well in dynamic update environment

•Public key algorithm

–Authentication against a public key published in the DNS

•SIG(0) specified in RFC 2931

Page 42: © 2006-2012 NLnet Labs, Licensed under a Creative Commons Attribution 3.0 Unported License.Creative Commons Attribution 3.0 Unported License Introduction

© 2006-2012 NLnet Labs, Licensed under a Creative Commons Attribution 3.0 Unported License.

Cool ApplicationCool Application•Use TSIG-ed dynamic updates to

configure configure your laptops name

•My laptop is know by the name of aagje.secret-wg.org

– http://ops.ietf.org/dns/dynupd/secure-ddns-howto.html

–Mac OS users: there is a bonjour based tool.

•www.dns-sd.org

Page 43: © 2006-2012 NLnet Labs, Licensed under a Creative Commons Attribution 3.0 Unported License.Creative Commons Attribution 3.0 Unported License Introduction

© 2006-2012 NLnet Labs, Licensed under a Creative Commons Attribution 3.0 Unported License.