IP & Filtering
[email protected]
Inleiding ❖ Wie ben ik en waar hou ik me mee bezig? ➠ Un*x hacker, uitgesproken voorkeur voor BSD varianten ➠ Paranoide security freak ➠ Ervaring als systems en network administrator ❖ Filosofische overtuigingen over IP en Filtering ➠ Packet filters only — Gloeiende hekel aan application proxies! ➠ Delicate balans tussen ‘security’ en ‘usability’ ➠ ‘Secure by Default’, inclusive policies vs. exclusive policies
1
Wat gaan we vandaag doen? Presentatie in twee delen: ❖ Het IP Protocol ➠ Packets & addressing ➠ Routing ❖ Filtering ➠ Gevaar herkennen ➠ Gepast reageren ➠ Logs analyseren
Please! Ask questions as we go...
2
Het IP Protocol ❖ Packets & addressing ➠ Packet Header ✓ Source address ✓ Destination address ➠ Packet body (‘datagram’) ✓ Data ➠ Grootte van packets (‘MTU’) hangt af van de transport-layer. Ethernet heeft een MTU van 1500. ❖ Routing ➠ De weg van een packet van A naar B via C en D ➠ Niet alle packets in een stream moeten dezelfde route nemen
3
IP Packet Header ❖ De Header van een packet beschrijft de inhoud ervan, en bepaalt waar het naartoe moet. ➠ Source address (zender): 32 bits ➠ Destination address (ontvanger): 32 bits ➠ Protocol number: TCP (6), UDP (17), ICMP (0), enz. . . ➠ TTL: Time To Live ➠ Extra informatie ❖ IP adressen ➠ IPv4 — 32 bit adressen ✓ 4 294 967 296 verschillende adressen theoretisch mogelijk ✓ Meestal als ‘dotted quads’ geschreven: aaa.bbb.ccc.ddd ✓ Het ‘netmask’ houdt het ‘network’ en ‘host’ gedeelte uit elkaar ➠ IPv6 — 128 bit adressen ✓ Een IP voor elke atoom
4
IP Packet Body ❖ Een IP packet bevat een ‘encapsulated’ packet waarvan het type door het ‘protocol number’ in de header wordt aangegeven. ➠ TCP: Transmission Control Protocol ✓ Source port: 16 bits ✓ Destination port: 16 bits ✓ Flags: ACK, FIN, PSH, RST, SYN, URG ✓ Sequence number ✓ Acknowledgement number ☞ Betrouwbaar protocol. ➠ UDP: Unreliable (user) Datagram Protocol ✓ Source port: 16 bits ✓ Destination port: 16 bits ✓ Geen flags, geen sequence/acknowledgement numbers ☞ Onbetrouwbaar protocol.
5
IP Packet Body (2) ❖ Een IP packet bevat een ‘encapsulated’ packet waarvan het type door het ‘protocol number’ in de header wordt aangegeven. ➠ ICMP: Internet Control Message Protocol ✓ Geen source/destination ports ✓ Message type & code · 0: echo reply · 3: destination unreachable · 4: source quench · 8: echo request · 11: time exceeded · enz. . . ➠ Minder courante protocols zijn, onder meer, GRE, IGMP, ESP en RDP. Je kunt ongeveer alles in een IP packet proppen, als je maar iets hebt om het aan te nemen.
6
TCP & UDP ❖ TCP en UDP hebben ´ e´ en ding gemeen (buiten het feit dat het allebei packets zijn die in IP packets zitten): source en destination ports. Zij zeggen tegen de host voor welke ‘dienst’ de packets dienen. ➠ 16 bits: 65 535 verschillende poorten ➠ Geen ‘fysische’ poorten ➠ Laten toe dat meerdere diensten simultaan op een host draaien ➠ ‘Well-known’ of ‘privileged’ ports: ≤ 1024
7
TCP Aardigheidjes ❖ Een TCP connectie komt pas tot stand na een ‘three-way handshake’: ➠ Client stuurt een packet met een SYN flag ➠ Server antwoordt met SYN|ACK set ➠ Client zegt ACK ➠ Alle verdere packets in de sessie hebben een ACK flag ❖ Je kunt een TCP connectie op twee manieren afsluiten: ➠ Client of server stuurt een packet met een RST flag ➠ Client of server stuurt een packet met een FIN flag, andere kant antwoordt met FIN|ACK ➠ Een ‘hangende’ connectie kan tot vijf dagen actief blijven
8
Routing ❖ IP packets hebben een ‘destination address’ ❖ De routers op weg naar die bestemming beslissen hoe packet reist ❖ Een router weet: ➠ Waar packets voor bepaalde netwerken naartoe moeten (netmask) ➠ Naar waar alle andere packets moeten (default route) ❖ Iedere machine heeft een routing table ➠ Zelfs als het geen router is ➠ Al heeft hij slechts ´ e´ en interface ❖ Een router is gewoon een machine met meerdere interfaces en een langere en meer complexe routing table.
9
Routing Protocols ❖ Routing tables kunnen statisch of dynamisch zijn ❖ Statische routes zijn op de router zelf geconfigureerd, op basis van zijn plaats in het netwerk, en zijn links naar andere routers. ❖ Dynamische routes worden automatisch bepaald aan de hand van bepaalde protocols: ➠ BGP: Border Gateway Protocol ➠ OSPF: Open Shortest Path First ➠ RIP: Routing Information Protocol
10
Any Questions?
11
Filtering ❖ Er bestaan twee soorten firewalls: ➠ Packet Filter ✓ Filtert op basis van packet headers ✓ Houdt zich bijna nooit bezig met packet bodies ✓ Zeer goede performantie ☞ Deze gaan we in detail bespreken ➠ Application Proxy ✓ Gedraagt zich als client en server in een bepaald protocol ✓ Filtert op basis van packet bodies ✓ Traag als een slack met rugklachten ✓ Potenti¨ ele privacy problemen ☞ Hier gaan we het niet verder over hebben ☞ Deze willen we liefst van onze planeet verbannen
12
Packet Filters ❖ Simpele Filter (ACL): ➠ ‘Selectieve’ router ➠ Source en destination adressen en ports ➠ Allow of Deny ➠ Lange rulesets, replies moeten expliciet binnengelaten worden ➠ Problemen met ‘last’-protocols (FTP, IRC,. . . ) ❖ Minder Simpele Filter: ➠ Kijkt ook naar uitgaande verbindingen ➠ Laat reply packets automatisch binnen ➠ Kortere ruleset ➠ Nog steeds problemen met ‘last’-protocols
13
Stateful Inspection ❖ Een stateful firewall maakt het leven veel eenvoudiger. ➠ Weet hoe TCP en UDP werken ➠ Begrijpt ook ICMP ➠ Kent de ‘basics’ van bepaalde ‘last’-protocols ➠ Simpele ruleset ➠ Zeer secure ➠ Extreem flexibel ❖ IP Filter Voorbeeldje: pass out quick on ed0 proto tcp/udp from any to any keep state pass out quick on ed0 proto icmp from any to any keep state ❖ Hetzelfde met Netfilter/IPTables: iptables -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT
14
Gevaar Herkennen ❖ Het internet is een gevaarlijke plaats, dat weet iedereen, maar hoe herken je nu een ‘gevaarlijk’ packet en een ‘ongevaarlijk’ packet uit elkaar? ➠ Alles waar je niet om hebt gevraagd is gevaarlijk ➠ Antwoorden op wat je gevraagd hebt zijn in principe ongevaarlijk ➠ ‘Late’ antwoorden kunnen mogelijk gevaarlijk zijn Een application proxy gaat dieper in op punt 2, en kijkt in naar de data in een packet om te bepalen of het aldaniet gevaarlijk is. Dit is een grove schending van de privacy van de gebruiker, en is simply not done. In principe zal een firewall altijd ‘default to deny’ zijn: dingen die je niet gevraagd hebt zijn gevaarlijk.
15
Gepast Reageren ❖ ‘Stealth’ bestaat niet. Packets stil droppen haalt niets uit ❖ Ongevraagde TCP connecties vermoord je met een RST ❖ UDP connecties beantwoord je met een ICMP 3:3 (‘port unreachable’) ❖ Voorbeeldjes: ➠ IP Filter: block return-rst in log on ed0 proto tcp from any to any keep state block return-icmp in log on ed0 proto udp from any to any keep state ➠ Netfilter/IPTables: -A INPUT -p tcp -i eth0 -j REJECT --reject-with tcp-reset -A INPUT -p udp -i eth0 -j REJECT --reject-with icmp-port-unreachable
16
Gepast Reageren (2) ❖ Reageer ook gepast op ICMP. Stomweg blokkeren is geen oplossing! ➠ Bepaal welke types je wil doorlaten en laat ze expliciet door ➠ Blokkeer de rest
Be sensible! Rulesets van een kilometer zijn zelden nuttig en vertragen de boel. Laat enkel door wat je nodig hebt, blokkeer de rest. Denk even goed na over wat je nodig hebt. . . ❖ Het is zeker geen goed idee om de servers van Telenet te blokkeren: ➠ De DHCP-server moet je kunnen contacteren voor een nieuwe lease ➠ Je wil ook graag gebruik maken van de nameservers van Telenet ❖ Test je regels voor je ze in gebruik neemt in een ‘controlled environment’. Gebruik ipftest(1) als je IP Filter gebruikt. ❖ Log alles tijdens het testen, en vergeet je pass-rules niet te testen.
17
Logs Analyseren ❖ Kijk je logs regelmatig na op ‘patterns’ ❖ Stel een periodic(8) job in om elke dag je log te mailen ❖ Hou in’t oog welke rules veel aandacht trekken ❖ Graaf ‘onverwachte’ log-entries uit — zie hoe ze tot stand kwamen Het is niet nodig om iedere port-probe naar
[email protected] te mailen, maar bepaalde patterns zijn mogelijk wel een abuse waardig. Be sensible!
18
A Quick Summary. . .
19
Summary ❖ IP Header: ➠ Source en destination adres ➠ Routers kijken naar destination adres om de volgende hop te bepalen ➠ Mogelijke reply packets worden naar het source adres gestuurd ❖ TCP/UDP/ICMP: ➠ De data in een IP packet is een encapsulated packet met een header en een body ➠ TCP Header: ✓ Source & destination port ✓ Flags ✓ Sequence & acknowledgement numbers ➠ UDP Header: ✓ Source & destination port ✓ Geen flags, geen sequence/acknowledgement numbers ➠ ICMP Header: ✓ Geen source & destination port ✓ Message type & message code
20
Summary (2) ❖ Firewalls: ➠ Packet filters ✓ Selectieve router ✓ Stateful inspection ✓ Good choice ➠ Application Proxies ✓ Client & server ✓ Complex, traag, inflexible ✓ Bad choice
21
The End ¿. . . nog vragen of opmerkingen. . . ?
Deze presentatie werd (uiteraard) gemaakt met LATEX.
© 2002 Philip Paeps — Pandora User Base