the next generation firewall for red hat enterprise linux 7 rc

35
The Next Generation Firewall for Red Hat Enterprise Linux 7 RC Thomas Graf Red Hat

Upload: thomas-graf

Post on 27-Aug-2014

2.091 views

Category:

Software


3 download

DESCRIPTION

The Linux packet filtering technology, iptables, has its roots in times when networking was relatively simple and network bandwidth was measured in mere megabits. Emerging technologies, such as distributed NAT, overlay networks and containers require enhanced functionality and additional flexibility. In parallel, the next generation of network cards with speeds of 40Gb and 100Gb will put additional pressure on performance. In the upcoming Red Hat Enterprise Linux 7, a new dynamic firewall service, FirewallD, is planned to provide greater flexibility over iptables by eliminating service disruptions during rule updates, abstraction, and support for different network trust zones. Additionally, a new virtual machine-based packet filtering technology, nftables, addresses the functionality and flexibility requirements of modern network workloads. In this session you’ll: Deep dive into the newly introduced packet filtering capabilities of Red Hat Enterprise Linux 7 beta. Learn best practices. See the new set of configuration utilities that allow new optimization possibilities.

TRANSCRIPT

Page 1: The Next Generation Firewall for Red Hat Enterprise Linux 7 RC

The Next Generation Firewall forRed Hat Enterprise Linux 7 RCThomas GrafRed Hat

Page 2: The Next Generation Firewall for Red Hat Enterprise Linux 7 RC

Agenda

● FirewallD – Firewall Management as a Service● Kernel – New Filtering Capabilities● Nftables – A Look Ahead

Page 3: The Next Generation Firewall for Red Hat Enterprise Linux 7 RC

FirewallDFirewall Management as a Service

Page 4: The Next Generation Firewall for Red Hat Enterprise Linux 7 RC

Existing Packet Filtering Architecture

iptables

Netfilter

ip6tables ebtablesUserLand

Kernel

IPv4 IPv6 Bridge

Protocol dependent packet filter and utilities

Page 5: The Next Generation Firewall for Red Hat Enterprise Linux 7 RC

IPv4 IPv6 Bridge

FirewallD

ApplicationD-Bus

User InterfaceGraphicalCLI

Firewall Management as a Service

ReportsD-Bus

Page 6: The Next Generation Firewall for Red Hat Enterprise Linux 7 RC

FirewallD – Policy Abstraction

ZonePolicy

Page 7: The Next Generation Firewall for Red Hat Enterprise Linux 7 RC

• Default policy

• Enabled services

• Masquerading

• Port forwarding

• ICMP filter

• Rich rules

FirewallD – Zone Definition

Page 8: The Next Generation Firewall for Red Hat Enterprise Linux 7 RC

• Name

• Description

• Port range

• Destination network/address

• List of required kernel modules

FirewallD – Service Definition

<?xml version="1.0" encoding="utf-8"?><service> <short>WWW (HTTP)</short> <description>[...]</description> <port protocol="tcp" port="80"/></service>

Page 9: The Next Generation Firewall for Red Hat Enterprise Linux 7 RC

FirewallD – Graphical User Interface

Page 10: The Next Generation Firewall for Red Hat Enterprise Linux 7 RC

• Add interface “eth0” to zone “public” permanently:

• List enabled services:

# firewall-cmd --permanent --zone=internal --add-interface=eth0

# firewall-cmd --zone=public –list-servicesdhcpv6-client ipp ipp-client mdns ssh#

FirewallD – Command Line Interface

Page 11: The Next Generation Firewall for Red Hat Enterprise Linux 7 RC

RHEL7 Netfilter Kernel Changes

Page 12: The Next Generation Firewall for Red Hat Enterprise Linux 7 RC

Scaling of Legacy Applications (xt_cpu)

# iptables -t nat -A PREROUTING -p tcp --dport 80 \ -m cpu --cpu 0 -j REDIRECT --to-port 8080

# iptables -t nat -A PREROUTING -p tcp --dport 80 \ -m cpu --cpu 1 -j REDIRECT --to-port 8081

App instance #1 on 8080

RSS

CPU 180 8080REDIRECT

App instance #2 on 8081CPU 280 8081REDIRECT

App instance #n on 808nCPU n80 808nREDIRECT

Page 13: The Next Generation Firewall for Red Hat Enterprise Linux 7 RC

Connection Tracking target (xt_CT)

• Disable connection tracking for DNS traffic

(Replacement for NOTRACK target in RHEL6)

• Define multiple zones to allow for conflicting flow identities

# iptables -t raw -A PREROUTING -i eth0 -j CT --zone 10

# iptables -t raw -A PREROUTING -p udp --dport 53 -j CT --notrack# iptables -t raw -A OUTPUT -p udp --sport 53 -j CT --notrack

Page 14: The Next Generation Firewall for Red Hat Enterprise Linux 7 RC

Connection Tracking target (xt_CT)

• Modify connection tracking timeout for TCP traffic

# iptables -t raw -A PREROUTING -p tcp -j CT --timeout my-tcp-policy# nfct timeout add my-tcp-policy inet tcp \ established 100 close 10 close_wait 10# iptables -t raw -A PREROUTING -p tcp -j CT --timeout my-tcp-policy

Page 15: The Next Generation Firewall for Red Hat Enterprise Linux 7 RC

IPv6 Connection Tracking & NAT

• Available targets:

• SNAT, DNAT, MASQUERADE, NETMAP, REDIRECT

• Available Connection Tracking Helpers:

• SIP, FTP, Amanda

# ip6tables -t nat -A POSTROUTING -o eth0 -j SNAT --to 2001:aa::1

Page 16: The Next Generation Firewall for Red Hat Enterprise Linux 7 RC

CT Helpers in User Space

• No need for kernel module to support (proprietary) protocols

• Rapid development

• Avoid complex string matching and mangling in kernel

Page 17: The Next Generation Firewall for Red Hat Enterprise Linux 7 RC

SYNPROXY (xt_SYNPROXY)

• Protection against SYN flood attacks

• Lightweight proxy for TCP three-way handshake

# iptables -t raw -A PREROUTING -p tcp --dport 80 --syn -j CT --notrack# iptables -A INPUT -p tcp --dport 80 -m state UNTRACKED,INVALID \ -j SYNPROXY --sack-perm --timestamp --mss 1480 --wscale 7 –ecn

Page 18: The Next Generation Firewall for Red Hat Enterprise Linux 7 RC

Extended Accounting (xt_nfacct)

• Kernel based meter providing packet and byte statistics

• Avoids need to perform expensive rule set statistics polling

# iptables -I INPUT -p tcp --sport 80 \ -m nfacct --nfacct-name http-traffic

# nfacct-add http-traffic# nfacct-get http-traffic = { pkts = 000000008231, bytes = 000044932916 };

Page 19: The Next Generation Firewall for Red Hat Enterprise Linux 7 RC

Connection Labeling (xt_connlabel)

• Label connection tracking entries with rule:

• ... then match on labels:

# iptables -A INPUT -m connlabel --label customer-bulk-traffic \ -m connlimit --connlimit-above 2 -j REJECT

# iptables -A INPUT -i eth0 -m helper --helper ftp \ -m connlabel --label customer-bulk-traffic --set# iptables -A INPUT -i eth0 -p tcp --dport 22 \ -m connlabel --label customer-interactive --set

Page 20: The Next Generation Firewall for Red Hat Enterprise Linux 7 RC

•Matches if a reply to a packet would be sent via the incoming interface

•Drop packets that failed reverse path filtering:

• Identical in functionality as net.ipv4.conf.all.rp_filter = 1

Reverse Path Filtering (xt_rpfilter)

# iptables -t raw -A PREROUTING -m rpfilter --invert -j DROP

Page 21: The Next Generation Firewall for Red Hat Enterprise Linux 7 RC

Berkley Packet Filter (xt_bpf)

• Match packets based Berkley Packet Filter (BPF) filters

• Use tcpdump to generate the bytecode:

# iptables -A OUTPUT -m bpf \ --bytecode "8,40 0 0 12,21 1 0 [...]" -j ACCEPT

# tcpdump -ddd vlan 20 and dst port 22 | tr '\n' ','26,40 0 0 12,21 1 0 33024,21 0 22 37120 [...]

Page 22: The Next Generation Firewall for Red Hat Enterprise Linux 7 RC

New ipset Features

• Automatic range to subnets translations (IPv4 only)

• Exceptions in sets:

# ipset new test hash:net# [...]# ipset add test 10.2.0.10/32 nomatch

# ipset new test hash:net# ipset add test 10.1.0.0-10.3.49.2

Page 23: The Next Generation Firewall for Red Hat Enterprise Linux 7 RC

IDLETIMER target (xt_IDLETIMER)

• Define timers and restart them via rules

• Example Usage:

•Detect idle interfaces and put them in power safe mode

# iptables -A OUTPUT -o eth0 -j IDLETIMER --timeout 5 --label foo# cat /sys/class/xt_idletimer/timers/foo4[...]# cat /sys/class/xt_idletimer/timers/foo0

Page 24: The Next Generation Firewall for Red Hat Enterprise Linux 7 RC

TEE target (xt_TEE)

• Clone & send packet to local machine for logging

# iptables -t mangle -A PREROUTING -i eth0 \ -j TEE --gateway 2001:db8::1

Page 25: The Next Generation Firewall for Red Hat Enterprise Linux 7 RC

NFQUEUE performance optimizations

• Zero copy Netlink to user space

• CPU Fanout: CPU # selects queue #:

# iptables -A INPUT -i eth0 \ -j NFQUEUE --queue-balance 0:31 --queue-cpu-fanout

# iptables -A INPUT -j NFQUEUE --queue-num 3

Page 26: The Next Generation Firewall for Red Hat Enterprise Linux 7 RC

Generic Address Type Filter (xt_addrtype)

• Match type of source and/or destination address:

# ip6tables -A INPUT -m addrtype --dst-type MULTICAST -j DROP# ip6tables -A OUTPUT -m addrtype ! --src-type LOCAL -j REJECT

Page 27: The Next Generation Firewall for Red Hat Enterprise Linux 7 RC

nftables (Tech Preview)A Look Ahead

Page 28: The Next Generation Firewall for Red Hat Enterprise Linux 7 RC

nftables – State Machine Based Packet Filtering

• New packet filtering subsystem to replace {ip,ip6,arp,eb}tables

• Byte code execution in kernel pseudo state machine

• Unified interface nft to replace protocol aware utilities

User space

ACL

Kernel

ByteCodeByteCodeByteCode

nft

Page 29: The Next Generation Firewall for Red Hat Enterprise Linux 7 RC

nftables – Features Summary

• Heavy code reduction in kernel, minimal protocol awareness

• No kernel change required to support new protocols

• Incremental updates

• Byte code can be optimized and offloaded

• Efficient rule execution and storage

• Fast lookups through data structures (e.g. hash tables)

• Improved error handling

Page 30: The Next Generation Firewall for Red Hat Enterprise Linux 7 RC

nftables – Want to try it out?

• Included in RHEL7.0 RC2 kernel (Tech Preview)

• Userspace packages likely included in future minor release

• Fetch them from upstream to get testing

• libmnl, libnfnl, nftables

Page 31: The Next Generation Firewall for Red Hat Enterprise Linux 7 RC

Q&A

Slides: http://slidesha.re/1maiHxL

Contact: [email protected]

Page 32: The Next Generation Firewall for Red Hat Enterprise Linux 7 RC

Backup

Page 33: The Next Generation Firewall for Red Hat Enterprise Linux 7 RC

Explicit Congestion Notification (xt_ecn)

• Match ECN bits on IPv4/IPv6 and TCP header (RFC3168):

# iptables -A INPUT -i eth1 -m ecn ! --ecn-tcp-cwr -j REJECT

Page 34: The Next Generation Firewall for Red Hat Enterprise Linux 7 RC

Compat Support

• Run 32bit iptables on 64bit kernel

Page 35: The Next Generation Firewall for Red Hat Enterprise Linux 7 RC

Match on IPVS properties

• Combine full NAT functionality with IPVS properties:

# iptables -t nat -A POSTROUTING \ -m ipvs --vaddr 192.168.100.30/32 --vport http \ -j SNAT [...]