+ All Categories
Home > Documents > An API for dynamic firewall control and its implementation...

An API for dynamic firewall control and its implementation...

Date post: 12-Jun-2020
Category:
Upload: others
View: 30 times
Download: 0 times
Share this document with a friend
28
Universität Stuttgart Institute of Communication Networks and Computer Engineering (IKR) Prof. Dr.-Ing. Dr. h.c. mult. P. J. Kühn An API for dynamic firewall control and its implementation for Linux Netfilter 3. Essener Workshop "Neue Herausforderungen in der Netzsicherheit" Jochen Kögel, Sebastian Kiesel, Sebastian Meier [email protected] 4. April 2008
Transcript
Page 1: An API for dynamic firewall control and its implementation ...content.ikr.uni-stuttgart.de/Content/Publications/... · An API for dynamic firewall control and its implementation for

Universität Stuttgart

Institute of Communication Networks

and Computer Engineering (IKR)

Prof. Dr.-Ing. Dr. h.c. mult. P. J. Kühn

An API for dynamic firewall

control and its implementation

for Linux Netfilter

3. Essener Workshop

"Neue Herausforderungen in der Netzsicherheit"

Jochen Kögel, Sebastian Kiesel, Sebastian Meier

[email protected]

4. April 2008

Page 2: An API for dynamic firewall control and its implementation ...content.ikr.uni-stuttgart.de/Content/Publications/... · An API for dynamic firewall control and its implementation for

2© 2008 Universität Stuttgart • IKR An API for dynamic firewall control and its implementation for Linux Netfilter

Agenda

• Problem statement

• API requirements and design

• Implementation for Netfilter

• Performance evaluation: measurement results

• Possible improvements

• Conclusion and Outlook

Page 3: An API for dynamic firewall control and its implementation ...content.ikr.uni-stuttgart.de/Content/Publications/... · An API for dynamic firewall control and its implementation for

3© 2008 Universität Stuttgart • IKR An API for dynamic firewall control and its implementation for Linux Netfilter

Problem statement

Dynamic firewall control

Security at network edge: Open firewalls for legitimate connections

• for VoIP: SIP/SDP and RTP

– strict policies – authorization of SIP sessions

– open firewall (pinhole) for media stream, parameters negotiated with SIP/SDP

– two firewall parts: signaling component and media component

• several approaches possible

– distributed vs. monolithic (Session Border Controller – SBC)

– packet filter vs. RTP proxy

media component

firewall

signaling componentSIP Proxy

text

RTP

SIP

Page 4: An API for dynamic firewall control and its implementation ...content.ikr.uni-stuttgart.de/Content/Publications/... · An API for dynamic firewall control and its implementation for

4© 2008 Universität Stuttgart • IKR An API for dynamic firewall control and its implementation for Linux Netfilter

Problem statement

Dynamic firewall control

Approach: distributed + packet filter (using firewall control protocols)

• server process running on firewall machines manages pinholes

• accepting only messages from authorized machines

• session stateful server (SIP B2BUA)

– extracts RTP-flow parameters from signaling messages

– authorizes calls

– signals pinholes to open/close

• several controlling instances (e.g. also Intrusion Detection Systems)

SIP B2BUA

firewall control

API?

API?

SIP Proxy

text

RTP

SIP

Page 5: An API for dynamic firewall control and its implementation ...content.ikr.uni-stuttgart.de/Content/Publications/... · An API for dynamic firewall control and its implementation for

5© 2008 Universität Stuttgart • IKR An API for dynamic firewall control and its implementation for Linux Netfilter

Problem statement

Dynamic firewall control

Design of firewall control daemon @IKR (SIMCO server)

• how to open pinholes?

- calling command line tools?

- using libraries (libiptc, nfnetlink)?

• daemon runs on different Operating Systems, what about packet filter dependencies?

→ packet filter interface is very OS-specific (and even in Linux there are several)

→ general pinhole API, not only for SIMCO server

SIP B2BUA

firewall control

API?

API?

SIP Proxy

text

RTP

SIP

Page 6: An API for dynamic firewall control and its implementation ...content.ikr.uni-stuttgart.de/Content/Publications/... · An API for dynamic firewall control and its implementation for

6© 2008 Universität Stuttgart • IKR An API for dynamic firewall control and its implementation for Linux Netfilter

API design

Requirements from firewall control frameworks

MIDCOM/SIMCO

• implementation of Midcom:

simple middlebox control protocol (SIMCO), (RFC 4540)

• NAT + packet filter signaling – our focus: packet filter

• enable (PER) and prohibit (PDR) pinholes (white list)

→ PDR closes affected pinholes (bulk change)

• pinhole

– two "address tuples" (transport protocol, address, prefix, port, portrange)

– ports and address wildcarding

– inbound/outbound/bidirectional

→ pinhole: five tuple with ranges/prefix, white list

problem: multiple packet filters at network edge

– must be handled by client, independent of packet filters

– 1st possibility: know routing

– 2nd possibility: open pinholes in every packet filter

Page 7: An API for dynamic firewall control and its implementation ...content.ikr.uni-stuttgart.de/Content/Publications/... · An API for dynamic firewall control and its implementation for

7© 2008 Universität Stuttgart • IKR An API for dynamic firewall control and its implementation for Linux Netfilter

API design

Requirements from firewall control frameworks

IETF NSIS (next steps in signaling)

• framework for path-coupled signaling

– idea: signal nodes on path independent of IP routing (e.g. for QoS)

– generic messaging layer (General Internet Signaling Transport)

• Datagram/Connection Mode

• TCP, UDP, IPSec

– NSIS Signaling Level Protocols (NSLP) on top of GIST

• NAT/Firewall Control

– NAT/Firewall control NSLP (draft-ietf-nsis-nslp-natfw-18.txt)

– authorization possible with tokens (draft-manner-nsis-nslp-auth-03.txt)

Page 8: An API for dynamic firewall control and its implementation ...content.ikr.uni-stuttgart.de/Content/Publications/... · An API for dynamic firewall control and its implementation for

8© 2008 Universität Stuttgart • IKR An API for dynamic firewall control and its implementation for Linux Netfilter

API design

Requirements from firewall control frameworks

IETF NSIS (next steps in signaling)

• pinhole description based on NSIS-flow

– sub_ports: number of contiguous ports (0..1)

– typically white list approach for pinholes

– also traffic blocking mode with EXT messages (for whole prefix, port wildcard)

→ pinhole as five tuple, range definitions are subset of simco

→ white list feasible. Blocking can be mapped to shrinking the white list

packetfilter

packetfilter

B2BUASIP

B2BUASIP

SIP

RTP

NSIS

Domain 2Domain 1

Page 9: An API for dynamic firewall control and its implementation ...content.ikr.uni-stuttgart.de/Content/Publications/... · An API for dynamic firewall control and its implementation for

9© 2008 Universität Stuttgart • IKR An API for dynamic firewall control and its implementation for Linux Netfilter

API design

Requirements from firewall control frameworks

Requirements

• open/close pinholes

• unidirectional pinhole: five tuple (incl. subnets + port ranges)

– bidirectional: two pinholes

– for TCP: direction of connection establishment

• independent of filter implementation (and OS)

• transaction semantics (typically, several rules are added at once)

• performance

– frequent rule changes (VoIP)

– high packet rate

• security

– no control over whole packet filter, only dedicated rule sets

– controlling entity must not be root, else a compromised firewall control daemon is fatal

Page 10: An API for dynamic firewall control and its implementation ...content.ikr.uni-stuttgart.de/Content/Publications/... · An API for dynamic firewall control and its implementation for

10© 2008 Universität Stuttgart • IKR An API for dynamic firewall control and its implementation for Linux Netfilter

API design

Managing pinholes using the pinhole API

features

• white list approach

• rules defined by five tuple

+ prefix length

+ port range

• adding rules by definition (returns ID)

• removing rules by ID

simple transaction mechanism

1. start transaction

2. add/delete rules

3. commit

Page 11: An API for dynamic firewall control and its implementation ...content.ikr.uni-stuttgart.de/Content/Publications/... · An API for dynamic firewall control and its implementation for

11© 2008 Universität Stuttgart • IKR An API for dynamic firewall control and its implementation for Linux Netfilter

API design

Implementation aspects

The big picture

• application design independent of operating system

• use of different packet filter by changing translation plugin

• use of different packet filters depending on rule type (optimization possible)

Clientlib

Backend

BSD PFconntrackipset

BSDchains set+chains ...

enterPH

SIMCONSIS

NATFW IDS

removePH uniform interface(OS independent)

unpriv. user

priv. user (root)

kernel

OS/config/kernel capab.according totranslation plugin

chains nf−hipac

Application/Daemon

Page 12: An API for dynamic firewall control and its implementation ...content.ikr.uni-stuttgart.de/Content/Publications/... · An API for dynamic firewall control and its implementation for

12© 2008 Universität Stuttgart • IKR An API for dynamic firewall control and its implementation for Linux Netfilter

API design

Implementation aspects

Frontend

• keeps all rules/pinholes

– optimization possible (hook) while still being able

to delete rules per ID

– enables differential updates

– failure: last known good

• commit rules as batch to backend

• socket communication: reuse of SIMCO message

definition + added new control messagesgoodknown

last

init add del commit

optimizedcurrent

SIMCO Lite Client

Transaction Manager

rule set management

internal Interface (via Socket)

to Backend

Contr

ol

Optimizer

Page 13: An API for dynamic firewall control and its implementation ...content.ikr.uni-stuttgart.de/Content/Publications/... · An API for dynamic firewall control and its implementation for

13© 2008 Universität Stuttgart • IKR An API for dynamic firewall control and its implementation for Linux Netfilter

API design

Implementation aspects

Backend

• processing of frontend requests

• translation of pinholes to netfilter rules

• notify frontend about status

• failure recovery, e.g. frontend crash

• only Translation module II is packetfilter-dependent

init()

flush()

add()

insert

()

del()

com

mit()

Intern−>Netfilter

SIMCO−>Intern

Translation I

Simco Lite Server

Unix Domain Socket

Co

ntr

ol

Adapter

from Frontend

Translation II

internal interface

Page 14: An API for dynamic firewall control and its implementation ...content.ikr.uni-stuttgart.de/Content/Publications/... · An API for dynamic firewall control and its implementation for

14© 2008 Universität Stuttgart • IKR An API for dynamic firewall control and its implementation for Linux Netfilter

Implementation for Linux Netfilter

Mapping rules to Netfilter

POSTROUTING

OUTPUTINPUT

FORWARD

PREROUTING

sockets/applications

IP Stack

Netfilter hook

packet + metadata

Legend

Page 15: An API for dynamic firewall control and its implementation ...content.ikr.uni-stuttgart.de/Content/Publications/... · An API for dynamic firewall control and its implementation for

15© 2008 Universität Stuttgart • IKR An API for dynamic firewall control and its implementation for Linux Netfilter

Implementation for Linux Netfilter

Mapping rules to Netfilter

iptables/FilterConntrack Ipset

Netfilter Modules

POSTROUTING

OUTPUTINPUT

FORWARD

PREROUTING

sockets/applications

IP Stack

Netfilter hook

packet + metadata

Legend

Page 16: An API for dynamic firewall control and its implementation ...content.ikr.uni-stuttgart.de/Content/Publications/... · An API for dynamic firewall control and its implementation for

16© 2008 Universität Stuttgart • IKR An API for dynamic firewall control and its implementation for Linux Netfilter

Implementation for Linux Netfilter

Mapping rules to Netfilter

iptables/FilterConntrack Ipset

(match)

conditions

(target)

action

filter rule

... ...

Netfilter Modules

POSTROUTING

OUTPUTINPUT

FORWARD

PREROUTING

sockets/applications

IP Stack

Netfilter hook

packet + metadata

Legend

Page 17: An API for dynamic firewall control and its implementation ...content.ikr.uni-stuttgart.de/Content/Publications/... · An API for dynamic firewall control and its implementation for

17© 2008 Universität Stuttgart • IKR An API for dynamic firewall control and its implementation for Linux Netfilter

Implementation for Linux Netfilter

Mapping rules to Netfilter

iptables/FilterConntrack Ipset

protocol helper

hashtable

based on

classification

packet/flow

tree

bitmap

hashtable

not shown: details on NAT, mangle

...

(match)

conditions

(target)

action

filter rule

... ...

Netfilter Modules

POSTROUTING

OUTPUTINPUT

FORWARD

PREROUTING

sockets/applications

IP Stack

Netfilter hook

packet + metadata

Legend

Page 18: An API for dynamic firewall control and its implementation ...content.ikr.uni-stuttgart.de/Content/Publications/... · An API for dynamic firewall control and its implementation for

18© 2008 Universität Stuttgart • IKR An API for dynamic firewall control and its implementation for Linux Netfilter

Implementation for Linux Netfilter

Mapping rules to Netfilter

iptables/FilterConntrack Ipset

controlled by backend

sysadmin’s rules

protocol helper

hashtable

based on

classification

packet/flow

tree

bitmap

hashtable

not shown: details on NAT, mangle

...

(match)

conditions

(target)

action

filter rule

... ...

Netfilter Modules

POSTROUTING

OUTPUTINPUT

FORWARD

PREROUTING

sockets/applications

IP Stack

Netfilter hook

packet + metadata

Legend

Page 19: An API for dynamic firewall control and its implementation ...content.ikr.uni-stuttgart.de/Content/Publications/... · An API for dynamic firewall control and its implementation for

19© 2008 Universität Stuttgart • IKR An API for dynamic firewall control and its implementation for Linux Netfilter

Implementation for Linux Netfilter

Netfilter Modules

• iptables

– linear search over lists (chains)

– extensible by sophisticated "matches"

• connection tracking (contrack)

– stateful packet filter

– hash-based connection table

– determines connection state and stores it to packet metadata

• ipset

– hash-, tree- and bitmap based filter modules

– realized as iptables march – stateless

• nf-HiPAC (High Performance PAcket Classification)

– fast for high number of rules

– possible replacement for chains/tables

– patch for older kernels

→ pinhole API implemented for tables/chains, since port ranges and subnets required.

(conntrack and ipset work for exact match only, nf-HiPAC is not integrated)

Page 20: An API for dynamic firewall control and its implementation ...content.ikr.uni-stuttgart.de/Content/Publications/... · An API for dynamic firewall control and its implementation for

20© 2008 Universität Stuttgart • IKR An API for dynamic firewall control and its implementation for Linux Netfilter

Impementation for Linux Netfilter

Managing netfilter rules

Accessing iptables – LibIPTC

• different represenations in user and kernel space

• translation of complete ruleset before and after modifications

table as set of linked lists

table as blob

pa

rse

rco

mm

an

d lin

e

flush()del()insert()add()

init()

commit()

libiptc

iptables −A ..

ipta

ble

s

user space

kernel space

r2 r3 r4

r5 r6 r7

chain 1

chain 2

r2r1 r3 r4

r5 r6 r7

ne

tfilt

er

co

re

r1

parse table

compile table

Page 21: An API for dynamic firewall control and its implementation ...content.ikr.uni-stuttgart.de/Content/Publications/... · An API for dynamic firewall control and its implementation for

21© 2008 Universität Stuttgart • IKR An API for dynamic firewall control and its implementation for Linux Netfilter

Performance Evaluation

Measurements with libiptc backend (VoIP Scenario)

Parameters

• 20 ms packetizing time: 100 pps/call (bidirectional), no bursts

• 2 pinholes per call: asymmetric RTP

→ rate and rule set depending on number of simultaneous cals

• Pentium 4, 2.53 GHz

Measurement Scenarios

• transaction delay for entering/removing rules without network traffic

• packet loss and delay for traffic traversing the packet filter

1. legitimate traffic only

2. additionally with "bad" traffic, that will be filtered

• contributes to overall packet rate

• check against every rule (other packets match after half of the rules)

Page 22: An API for dynamic firewall control and its implementation ...content.ikr.uni-stuttgart.de/Content/Publications/... · An API for dynamic firewall control and its implementation for

22© 2008 Universität Stuttgart • IKR An API for dynamic firewall control and its implementation for Linux Netfilter

Performance Evaluation

Changing rules

Rule entry delay without traffic

0

5

10

15

20

25

30

35

40

45

0 1000 2000 3000 4000 5000 6000

0 500 1000 1500 2000 2500 3000

tra

nsa

ctio

n d

ela

y (

in m

s)

number of rules

simultaneous calls

Transaction delay

Page 23: An API for dynamic firewall control and its implementation ...content.ikr.uni-stuttgart.de/Content/Publications/... · An API for dynamic firewall control and its implementation for

23© 2008 Universität Stuttgart • IKR An API for dynamic firewall control and its implementation for Linux Netfilter

Performance Evaluation

Changing rules

Rule deletion delay without traffic

0

5

10

15

20

25

30

35

40

45

0 1000 2000 3000 4000 5000 6000

0 500 1000 1500 2000 2500 3000

tra

nsa

ctio

n d

ela

y (

in m

s)

number of rules

simultaneous calls

Transaction delay

Page 24: An API for dynamic firewall control and its implementation ...content.ikr.uni-stuttgart.de/Content/Publications/... · An API for dynamic firewall control and its implementation for

24© 2008 Universität Stuttgart • IKR An API for dynamic firewall control and its implementation for Linux Netfilter

Performance Evaluation

Throughput

Delay and loss over rule size and rate

→ performance sufficient for 500 simultaneous calls

0

10

20

30

40

50

60

70

0 200 400 600 800 1000 1200

0

20

40

60

80

100

1k 5k 10k 15k 20k 25k 30k 35k 40k 45k 50k 55k 60k 65kp

acke

t d

ela

y (

in m

s)

pa

cke

t lo

ss (

in %

)

Ruleset update size (simultaneous calls * 2)

VoIP packets/s (simultaneous calls * 100 1/s)

packet delaypacket loss

Page 25: An API for dynamic firewall control and its implementation ...content.ikr.uni-stuttgart.de/Content/Publications/... · An API for dynamic firewall control and its implementation for

25© 2008 Universität Stuttgart • IKR An API for dynamic firewall control and its implementation for Linux Netfilter

Performance Evaluation

Throughput

Throughput while discarding bad traffic

rate of illegitimate packets (DoS) increased until 0.1 % loss occured

0

20000

40000

60000

80000

100000

120000

140000

160000

180000

20 100 200 300 400 500 600 700 800 900 1000

0

20

40

60

80

100

1k 5k 10k 15k 20k 25k 30k 35k 40k 45k 50k

To

tal p

acke

ts/s

Tra

nsa

ctio

n d

ela

y (

in m

s)

Ruleset update size (simultaneous calls * 2)

VoIP packets/s (simultaneous calls * 100 1/s)

VoIP packet rateDoS packet rate

Transaction delay

Page 26: An API for dynamic firewall control and its implementation ...content.ikr.uni-stuttgart.de/Content/Publications/... · An API for dynamic firewall control and its implementation for

26© 2008 Universität Stuttgart • IKR An API for dynamic firewall control and its implementation for Linux Netfilter

Performance Evaluation

Measurement summary

Rule management

• effort mainly depends on ruleset size

reason: translation between kernel and user space representations

• spikes in rule entry delay due to caching effects?

• saltus at ~4096 rules due to paging effects?

Throughput

• sufficient for ~500 calls (pure good traffic)

• for dimensioning: consider max packet rate of bad traffic!

• delay negligible, if not in overload - there are only very small Queues

→ still decent performance for standard hardware

e.g. enterprise with 20 Mbit/s link: 250 simultaneous calls (each 80 Kbit/s)

• performance sufficient, even with DoS traffic

• corresponds to 5000 users (0.05 Erlang)

Page 27: An API for dynamic firewall control and its implementation ...content.ikr.uni-stuttgart.de/Content/Publications/... · An API for dynamic firewall control and its implementation for

27© 2008 Universität Stuttgart • IKR An API for dynamic firewall control and its implementation for Linux Netfilter

Possible Improvements

Changes in backend to improve performance

• same API but better mapping to netfiter

• keep it simple: no additional protocol checks in Conntrack (like checking RTP)

iptables/FilterConntrack Ipset

controlled by backend

protocol helper

hashtable

based on

classification

packet/flow

tree

bitmap

hashtable

not shown: details on NAT, mangle

...

(match)

conditions

(target)

action

filter rule

... ...

Netfilter Modules

POSTROUTING

OUTPUTINPUT

FORWARD

PREROUTING

sockets/applications

IP Stack

Netfilter hook

packet + metadata

Legend

Page 28: An API for dynamic firewall control and its implementation ...content.ikr.uni-stuttgart.de/Content/Publications/... · An API for dynamic firewall control and its implementation for

28© 2008 Universität Stuttgart • IKR An API for dynamic firewall control and its implementation for Linux Netfilter

Conclusion and Outlook

Conclusion

• API for dynamic firewall control (phapi) designed and implemented

• can integrate with our SIMCO-Server (sourceforge.net/projects/simco-firewall/)

• pinhole api implementation (phapi): www.ikr.uni-stuttgart.de/Content/firewall/

• filter/chains based on linear search perform quite well

• interaction with Conntrack cannot be easily solved (conntrack must be disabled)

Outlook

• interface between Conntrack and backend

– keep information about mapping between conntrack entry and pinhole

– stateful fast filtering

– resolves interaction issue

– still use iptables chains for large ranges/wildcards

– optimal mapping? what is large? How costly are filter rules compared to Conntrack entries?

• implementation for other packet filters (OpenBSD, Network Processors, FPGA, ...)


Recommended