You are on page 1of 38

DDoS protection

Using Netfilter/iptables

Jesper Dangaard Brouer


Senior Kernel Engineer, Red Hat Network-Services-Team Dev on!"c# $e% &'()

1/36

Email* %rouer+red,at"com - netoptimi#er+%rouer"com - ,awk+kernel"org DDoS protection using Netfilter/iptables

.,o am /

Name* Jesper Dangaard Brouer


0inu1 Kernel Developer at Red Hat Edu*

omputer Science !or 2ni"

open,agen

$ocus on Network, Dist" s3s and 4S S3sadm, Kernel Developer, Em%edded

0inu1 user since (556, pro!essional since (557

4penSource pro8ects, aut,or o!


9DS0-optimi#er, :9N /:Ta%les**li%iptc, /:T;-9nal3#er 0inu1 kernel, iproute&, ipta%les, li%pcap and .ires,ark

:atc,es accepted into

4rgani#er o! Net!ilter .orks,op &'(<


DDoS protection using Netfilter/iptables

2/36

.,at will 3ou learn=


0inu1 Kernel is vulnera%le to simple S>N attacks End-,ost mitigation?s alread3 implemented in kernel

s,ow it is not enoug, solution is stalled """ ,ow to work-around t,is

Kernel* serious @listen@ socket scala%ilit3 pro%lem

$irewall-%ased solution* s3npro13 Aipta%les-net!ilterB How !ast is state!ul !irewalling


.,ere is our pain points 0earn Net!ilter tricks* %oost per!ormance a !actor ('
DDoS protection using Netfilter/iptables

3/36

$irst* Basic N/

tuning ('(

9ll tests in presentation Basic tuning


$irst kill CirD%alanceE N/ ,ardware Dueue, are :2 aligned

Disa%le Et,ernet !low-control


/ntel i1g%e ,w-driver issue

single %locked ,w Dueue %locks ot,ers


$i1 in kernel v<"F"' commit <e%e7!de%' Ai1g%e* Set DropGEN %it w,en multiple R1 Dueues are present w-o !low controlB

4/36

DDoS protection using Netfilter/iptables

$ocus* $looding DoS attack


Denial o! Service ADoSB attacks $ocus* T : !looding attacks


9ttacking t,e <-Wa3 HandS,ake A<.HSB End-,ost resource attack


S>N !lood S>N-9 K !loods 9 K !loods A<rd packet in <.HSB

9ttacker o!ten spoo!s src /:


T : S>N $looding 9ttacks and ommon Iitigations

Descri%ed in R$ )57H*

5/36

DDoS protection using Netfilter/iptables

0inu1 current end-,ost mitigations

Jargon R$ )57H AT : S>N $looding 9ttacks and ommon IitigationsB

0inu1 uses ,3%rid solution

S>N Ccac,eE Iini reDuest socket Iinimi#e state, dela3 !ull state alloc S>N C%acklogE o! outstanding reDuest sockets

9%ove limit, use S>N CcookiesE

6/36

DDoS protection using Netfilter/iptables

Details* S>N @cac,e@ savings


Small initial T B ATransmission ontrol BlockB struct reDuestGsock Asi#e F6 %3tesB

mini sock to represent a connection reDuest S09B %e,ind ,ave si#eo!Astruct tcpGreDuestGsockB
Structs em%edded in eac,-ot,er

But alloc si#e is ((& %3tes

F6 %3tes JJ struct reDuestGsock 7' %3tes JJ struct inetGreDuestGsock ((& %3tes JJ struct tcpGreDuestGsock

$ull T B Astruct inetGsockB is 7<& %3tes


Anote, si#es will increase-c,ange in more recent kernelsB

7/36

DDoS protection using Netfilter/iptables

Details* /ncreasing S>N %acklog

Not recommended to increase !or DoS

4nl3 increase, i! legitimate tra!!ic cause log*

CT :* :ossi%le S>N !looding """E

/ncreasing S>N %acklog is not o%vious

9d8ust all t,ese*


-proc-s3s-net-ipv)-tcpGma1Gs3nG%acklog -proc-s3s-net-core-soma1conn S3scall listenAint sock!d, int backlogBK

8/36

DDoS protection using Netfilter/iptables

S>N cookies

Simpli!ied description

S>N packet

don?t create an3 local state Encode state in SELM Aand T : optionsB ontains SELMN( Aand T : timestampB Recover state ;alidate A<.HSB 9 K packet state

S>N-9 K packet

9 K packet

SH9 ,as, is computed wit, local secret

9/36

DDoS protection using Netfilter/iptables

Details* S>N-cookies

S>N cookies SH9 calculation is e1pensive SNI: counters ASince kernel v<"(B

TCPReqQFullDoCookies * num%er o! times a S>N 44K/E was replied to client TCPReqQFullDrop * num%er o! times a S>N reDuest was dropped %ecause s3ncookies were not ena%led" -proc-s3s-net-ipv)-tcpGs3ncookies J &

9lwa3s on option

10/36

DDoS protection using Netfilter/iptables

So, w,at is t,e pro%lem=


Oood End-Host counter-measurements :ro%lem* 0/STEN state scala%ilit3 pro%lem

;ulnera%le !or all !loods

S>N, S>N-9 K and 9 K !loods

Num%ers* Peon :2 PFFF' ('O i1g%e

N4 0/STEN socket*

&"5')"(&7 pkts-sec -- S>N attack &F&"'<& pkts-sec -- S>N attack <<6"FH6 pkts-sec -- S>NN9 K attack <<("'H& pkts-sec -- 9 K attack
DDoS protection using Netfilter/iptables

0/STEN socket*

11/36

:ro%lem* S>N-cookie vs 0/STEN lock

Iain pro%lem*

S>N cookies live under 0/STEN lock


,ttp*--t,read"gmane"org-gmane"linu1"network-&<&&<7

/ proposed S>N %rownies !i1 AIa3 &'(&B

Oot re8ected, %ecause not general solution

e"g" don?t ,andle S>N-9 K and <.HS


Need to C!orward-portE patc,es
ABug ('FH<6) - R$E* :arallel S>N cookies ,andlingB

N$.S&'(< got clearance as a !irst step solution

12/36

DDoS protection using Netfilter/iptables

$irewall and :ro13 solutions

Net ork!"ase# ountermeasures

.esle3 I" Edd3, descri%es S>N-pro13

/n isco* T,e /nternet :rotocol Journal - ;olume 5, Num%er ), &''6, link* ,ttp*--goo"gl-9 (99Q 9vail in kernel <"(< and RHE0H

Net!ilter* ipta%les target S$NPR%&$

B3 :atrick IcHard3, Iartin Top,olm and Ie

9lso works on local,ost Oeneral solution Solves S>N and 9 K !loods /ndirect trick also solves S>NN9 K

DDoS protection using Netfilter/iptables

13/36

S>N pro13 concept

14/36

DDoS protection using Netfilter/iptables

onntrack per!ormanceA(B

S>N:R4P> needs conntrack

.ill t,at %e a per!ormance issue=


&"56)"'5( pkts-sec -- N4 0/STEN sock N no ipta%les rules &))"(&5 pkts-sec -- 0/STEN sock N no ipta%les rules )<F"F&' pkts-sec -- N4 0/STEN sock ' conntrack (H&"55& pkts-sec -- 0/STEN sock ' conntrack %ut / ,ave some tricks !or 3ou K-B

Base per!ormance*

0oading conntrack* AS>N !lood, causing new conntrackB


0ooks %ad"""

15/36

DDoS protection using Netfilter/iptables

onntrack per!ormanceA&B

onntrack Alock-lessB lookups are really fast


:ro%lem is insert and delete conntracks 2se to protect against S>NN9 K and 9 K attacks 9llow 9 K pkts to create new connection Disa%le via cmd*
sysctl -w net/netfilter/nf_conntrack_tcp_loose=0

De!ault net!ilter is in T : ClooseE mode


Take advantage o! state C/N;90/DE

Drop invalid pkts before reac,ing 0/STEN socket


iptables -m state --state INVALID -j DR !

16/36

DDoS protection using Netfilter/iptables

onntrack per!A<B 9 K-attacks


(C) attacks, conntrack per!ormance De!ault ClooseJ(E and pass /N;90/D pkts

(H5"'&H pkts-sec &<F"5') pkts-sec Alisten lock scalingB F"F<<"'F6 pkts-sec

0ooseJ' and and pass /N;90/D pkts

0ooseJ' and and DR4: /N;90/D pkts

17/36

DDoS protection using Netfilter/iptables

onntrack per!A)B S>N-9 K attack

S$N!(C) attacks, conntrack per!ormance


S>N-9 Ks don?t auto create connections T,us, c,anging ClooseE setting is not important &<'"<)7 pkts-sec F"<7&"&6F pkts-sec F")'7"<'H pkts-sec

De!ault pass /N;90/D pkts Aand ClooseJ(EB

De!ault DR4: /N;90/D pkts Aand ClooseJ(EB

De!ault DR4: /N;90/D pkts Aand ClooseJ'EB

18/36

DDoS protection using Netfilter/iptables

S3npro13 per!ormance

%nl* conntrack S$N attack proble+ left

Due to conntrack insert lock scaling &))"(&5 pkts-sec -- 0/STEN sock N no ipta%les rules (H&"55& pkts-sec -- 0/STEN sock ' conntrack

Base per!ormance*

0oading conntrack* AS>N !lood, causing new conntrackB

Using S$NPR%&$

,-./0-.,1 pkts-sec -- 0/STEN sock N s*npro2* N conntrack

19/36

DDoS protection using Netfilter/iptables

ipta%les* s3npro13 setupA(B


2sing S>N:R4P> target is complicated

S>N:R4P> works on untracked conntracks

/n CrawE ta%le, CnotrackE S>N packets*


iptables -t raw -I PREROUTING -i $DEV -p tcp -m tcp --syn \ --dport $PORT -j CT --notrack

20/36

DDoS protection using Netfilter/iptables

ipta%les* s3npro13 setupA&B

Iore strict conntrack ,andling

Need to get unknown 9 Ks A!rom <.HSB to %e marked as /N;90/D state

Aelse a conntrack is 8ust createdB

Done %3 s3sctl setting*


sbin s!sctl -" net net#ilter n#$conntrack$tcp$loose%&

21/36

DDoS protection using Netfilter/iptables

ipta%les* s3npro13 setupA<B

atc,ing state*

2NTR9 KED JJ S>N packets /N;90/D JJ 9 K !rom <.HS

2sing S>N:R4P> target*


iptables -' INPUT -i $DEV -p tcp -m tcp --dport $PORT ( -m state --state INV')ID*UNTR'C+ED ( -j SYNPROXY --sack-perm --timestamp --"scale , --mss -./&

22/36

DDoS protection using Netfilter/iptables

ipta%les* s3npro13 setupA)B

Trick to catc, S>N-9 K !loods

Drop rest o! state /N;90/D, contains S>N-9 K

iptables -' INPUT -i $DEV -p tcp -m tcp --dport $PORT ( -m state --state INV')ID -j DROP

Ena%le T : timestamping

Because S>N cookies uses T : options !ield

sbin s!sctl -" net ip0. tcp$timestamps%-

23/36

DDoS protection using Netfilter/iptables

ipta%les* s3npro13 setupAFB

onntrack entries tuning

Ia1 possi%le entries & Iill

&77 %3tes R & Iill J FH6"' IB

net net#ilter n#$conntrack$ma1%2&&&&&&

/I:4RT9NT* 9lso ad8ust ,as, %ucket si#e


-proc-s3s-net-net!ilter-n!GconntrackG%uckets writea%le via -s3s-module-n!Gconntrack-parameters-,as,si#e

Has, 7 %3tes R &Iill J (6 IB ec3o 2&&&&&& 4 s!s mod5le n#$conntrack parameters 3as3si6e

24/36

DDoS protection using Netfilter/iptables

:er!ormance S>N:R4P>

Script ipta%lesGs3npro13"s, avail ,ere*

,ttps*--git,u%"com-netoptimi#er-network-testing-%lo%-master-ipta%les-ip ta%lesGs3npro13"s,

2sing S>N:R4P> under attack t3pes*


&"765"7&) pkts-sec S S>N-!lood )"5)7")7' pkts-sec S 9 K-!lood F"6F<"(&' pkts-sec S S>NN9 K-!lood

25/36

DDoS protection using Netfilter/iptables

S>N:R4P> parameters

T,e parameters given to S>N:R4P> target


Iust matc, t,e %ackend-server T : options Ianual setup A,elper tool n!s3npro13B 4nl3 one setting per rule Not use!ul !or DH : %ased network 9uto detect server T : options Simpl3 allow !irst S>N t,roug,

Future plan

atc, S>N-9 K and decode options


ARHBQ ('F56H5 - R$E* S3npro13* auto detect T : optionsB

26/36

DDoS protection using Netfilter/iptables

Real-li!eA(B* Handle 5'' Kpps

27/36

DDoS protection using Netfilter/iptables

Real-li!eA&B* SH9 sum e1pensive

S>N cookie SH9 sum is e1pensive

Bug ('FH<F& - R$E* /mprove S>N cookies calculations

28/36

DDoS protection using Netfilter/iptables

Real-li!eA<B* 4ut tra!!ic normal

29/36

DDoS protection using Netfilter/iptables

/ssue* $ull connection scala%ilit3

Still e1ists* Scala%ilit3 issue wit, !ull conn

Iade it signi!icantl3 more e1pensive !or attackers

At,e3 need real ,ostsB

$uture work* !i1 scala%ilit3 !or


entral lock* 0/STEN socket lock entral lock* Net!ilter new conntracks A.ork-in-progressB

30/36

DDoS protection using Netfilter/iptables

$i1ing central conntrack lock

onntrack issue

/nsert - delete conntracks takes central lock .orking on removing t,is central lock

ABased on patc, !rom Eric Duma#etB


ARHBQ (')<'(& - @net!ilter* conntrack* remove t,e central spinlock@B

:reliminar3 results, S>N-!lood


No 0/STEN socket to leave out t,at issue

)<F"F&' pkts-sec S conntrack wit, central lock ("6&6"H76 pkts-sec S conntrack wit, parallel lock

31/36

DDoS protection using Netfilter/iptables

Hack* Iulti listen sockets

Hack to work-around 0/STEN socket lock


Simpl3 0/STEN on several ports 2se ipta%les to rewrite-DN9T to t,ese ports

32/36

DDoS protection using Netfilter/iptables

Hack* $ull conn ,as,limit trickA(B


:ro%lem* $ull connections still ,ave scala%ilit3 :artition /nternet in -&) su%nets

A(&7R&F6R&F6 - &'5H(F& J ) ma1 ,as, listB

0imit S>N packets e"g" &'' S>N pps per src su%net Iem usage* !airl3 ,ig,

$i1ed* ,ta%le-si#e &'5H(F& R 7 %3tes J (6"H IB ;aria%le* entr3 si#e (') %3tes R F''''' J F& IB

33/36

DDoS protection using Netfilter/iptables

Hack* $ull conn ,as,limit trickA&B

2sing ,as,limit as work-around

9ttacker needs man3 real ,osts, to reac, !ull conn scala%ilit3 limit

iptables -t ra" -' PREROUTING -i $DEV ( -p tcp -m tcp --dport 7& --s!n ( -m 3as3limit ( --3as3limit-abo0e 2&& sec --3as3limit-b5rst -&&& ( --3as3limit-mode srcip --3as3limit-name s!n ( --3as3limit-3table-si6e 2&8,-92 ( --3as3limit-srcmask 2. -j DROP

34/36

DDoS protection using Netfilter/iptables

9lternative usage o! @socket@ module

9void using conntrack

2se 1tGsocket module


$or local socket matc,ing an !ilter out <.HS-9 Ks Aand ot,er com%osB

:arameter --nowildcard :ro%lem can still %e invalid-!lood 9 Ks Iitigate %3 limiting e"g",as,limit

Didn?t scale as well as e1pected

,ttps*--git,u%"com-netoptimi#er-network-testing-%lo%-master-ipta%les-ipta%lesGloc alGsocketG,ack"s,

35/36

DDoS protection using Netfilter/iptables

T,e End

T,anks to Iartin Top,olm and 4ne"com

$or providing real-li!e attack data


,ttp*--people"net!ilter"org-,awk-presentations-devcon!&'()-

Download slides ,ere*

$eed%ack-rating o! talk on*

,ttp*--devcon!"c#-!-<H Luestions=

/! unlikel3Atime !or DuestionsB

36/36

DDoS protection using Netfilter/iptables

E1tra Slides

37/36

DDoS protection using Netfilter/iptables

Disa%le ,elper auto loading

De!ault is to auto load conntrack ,elpers

/t is a securit3 riskT

:oking ,oles in 3our !irewallT

Disa%le via cmd*


ec"o 0 # /proc/sys/net/netfilter/nf_conntrack_"elper

ontrolled con!ig e1ample*


iptables -t raw -p tcp -p $%$% -j &' --"elper ftp

Read guide ,ere*


,ttps*--,ome"regit"org-net!ilter-en-secure-use-o!-,elpers-

38/36

DDoS protection using Netfilter/iptables