SQL Injection voor beginners Notulen Mostly-Harmless (1e meeting)
Jun 02
    Change language to :

 

# Mini howto, IPF
#
# Door Remko Lodder (nightw@root66.org/remko@elvandar.org)
#
# Datum:
# 15 December 2002 (Initiele versie van het document)
# 27 Juni 2003 (2e versie van het document)
#
# Voorkennis:
# Basis kennis TCP/IP
# Basis kennis Unix (incl ifconfig / interfaces )
#
# Dit documentje is geschreven voor de beginnenden ipf’er.
# Het dekt een opbouw van:
# Wat willen we?
# Wat doen we daarmee?
# Hoe wie wat waar? IPF regeltjes
# Wat betekenen die regeltjes eigenlijk?
# Wat zijn verbeter mogelijkheden?
# Hoe ziet een complete ruleset eruit?
# Waar kan ik meer informatie vinden?
#
################################################################################
#
# Hoofdstuk indeling:
# 1. Wat willen we precies?
# 2. Wat gaan we daarmee doen?
# 3. Hoe wie wat waar? IPF regeltjes
# 4. Wat betekenen die regeltjes eigenlijk?
# 5. Wat zijn verbeter mogelijkheden?
# 6. Hoe ziet een complete ruleset eruit?
# 7. Waar kan ik meer informatie vinden?
#
################################################################################
#
# 1. Wat willen we precies?
#
# Allereerst uitleggen wat ipf is:
#
# Ipf is een firewall package voor onder andere NetBSD/FreeBSD en met wat
# aanpassingen ook voor OpenBSD.
#
# Ieders wens is anders. Daarom heb ik gekozen om een voorbeeld te
# geven die ook in het echt gebruikt had kunnen worden.
# Op dit moment gebruik ik in /etc/hosts de naam: ipf-host.
# Die heb ik als volgende gedefinieerd:
#
# 123.456.789.123 ipf-host host ipf
#
# Hierdoor is het ipadres voor ipf herkenbaar als ipf-host
# en hoef je geen ipadressen in je ipf.conf te zetten.
#
# Hierachter wil ik draaien:
# Inkomend:
# 1) een webserver (http)
# 2) een secure webserver (https)
# 3) een mailserver (smtp)
# 4) een dnsserver (dns)
# 5) een ipv6 tunnel (ipv6)
#
# Uitgaand:
# 1) naar dnsserver (dns)
# 2) naar ipv6 tunnel (ipv6)
#
# Overigens gaan we ervanuit dat onze netwerkkaart in dit geval
# xl0 is. Inderdaad, in dit voorbeeld hebben we EEN netwerkkaart.
# in dit geval, maar regels toevoegen is niet erg lastig zoals
# zodadelijk zal blijken
################################################################################
#
# 2. Wat gaan we daarmee doen?
#
# We zullen eerst moeten achterhalen welke poorten en protocollen
# nodig zijn om aan onze wensen te voldoen.
# Dat komt erop neer dat we voor onze services de poorten het
# eerst gaan zoeken:
# Inkomend:
# Service = Poortnr. Protocolnaam
# 1) http = 80 tcp
# 2) https = 443 tcp
# 3) smtp = 25 tcp
# 4) dns = 53 udp
# 5) ipv6 = x ipv6 (voor tunneling!)
#
# Uitgaand:
# Service = Poortnr. Protoclnaam
# 1) dns = 53 udp
# 2) ipv6 = x ipv6 (voor tunneling!)
#
# Nu we de poorten en protocollen weten, kunnen we gaan bepalen
# wat er precies naar binnen mag komen op bovenstaande poorten
# en protocollen en van wie dat geaccepteerd wordt.
#
# In dit voorbeeld hebben we dit beleid:
# Inkomend:
# Service Geaccepteerd van
# 1) http iedereen
# 2) https iedereen
# 3) smtp iedereen
# 4) dns iedereen
# 5) ipv6 niemand
#
# Uitgaand:
# Service Geaccepteerd naar
# 1) dns iedereen
# 2) ipv6 ipv6-tun (xs4all tunnelbroker)
#
# Zo, nu is duidelijk en overzichtelijk wat we precies gaan
# accepteren en welke kant het pakketje opgaat.
# Als je nu denkt, maar alleen inkomend http verkeer? Dat verkeer
# moet toch ook nog terug? Dat klopt. Dat wordt in het volgende
# hoofdstuk uitgelegd hoe dat in zijn werk gaat.
#
################################################################################
#
# 3. Wie wat waar? IPF regeltjes
#
# Om het voorbeeld in het voorgaande hoofdstuk in de praktijk te kunnen brengen
# moeten er firewall regeltjes gemaakt worden.
# Deze hebben nu nog een relatief korte uitleg, maar wees niet
# bezorgd in het volgende hoofdstuk wordt dit regel voor regel
# uitgelegd.
#
# Om bovenstaand beleid ten uitvoer te brengen hebben we de
# volgende regels nodig:
#
# Inkomend:
# Volgorde: smtp - http - https - dns
# pass in quick on xl0 proto tcp from any to ipf-host port 25 keep state
# pass in quick on xl0 proto tcp from any to ipf-host port 80 keep state
# pass in quick on xl0 proto tcp from any to ipf-host port 443 keep state
# pass in quick on xl0 proto udp from any to ipf-host port 53 keep state
#
# Uitgaand:
# Volgorde: dns - ipv6
# pass out quick on xl0 proto udp from ipf-host to any port 53 keep state
# pass out quick on xl0 proto ipv6 from ipf-host to ipv6-tun keep state
#
################################################################################
#
# 4. Wat betekenen die regeltjes eigenlijk?
#
# Oke, nu hebben we functionele regels. Deze regels zullen wel werken, echter
# niet in deze context. Een complete ruleset (voorbeeld) wordt later gegeven
# die wel functioneel is.
#
# Allemaal pass in quick regeltjes, wat doen ze nu precies?
# Dit leggen we uit aan de hand van een voorbeeld:
# pass in quick on xl0 proto tcp from any to ipf-host port 25 keep state
#
# Uitgelegd in woorden:
# accepteer inkomend, controleer niet verder op andere regels, op interface xl0
# protocol tcp, van wie dan ook, naar mijn ip adres, poort 25 (smtp), en houd
# sessie informatie in de gaten.
#
# Maar wat doet het nu precies, want dat keep state ?
# Keep state zorgt ervoor dat een pakketje dat naar binnenkomt ook weer terug
# naar buiten mag. Hierdoor hoeven we niet een aparte regel uitgaand te
# maken, maar kunnen we een dichtere firewall ruleset bouwen. Dit is veiliger.
#
# Uitgaand geldt natuurlijk precies hetzelfde alleen dan de andere kant op
#
################################################################################
#
# 5. Wat zijn verbetermogelijkheden?
#
# Onder IPF kunnen we de dingen soms beter organiseren dan nu.
# Bijvoorbeeld door elke inkomende stroming (verkeer) op elke netwerkkaart (als je er
# meerdere hebt) apart te defineren. Dit doe je dan ook met de uitgaande groep
# Als je dan een log regel krijgt van ipmon (de logdaemon van ipf) kan je zien
# waar het geheel zich ongeveer afspeelt, welke service , of reeks ipadressen
# etc.
# Dit kunnen we implementeren door wat dingen toe te voegen:
#
# We willen een ‘overrulende block’ dat heb ik geimplementeerd door dit te doen
#
# block in log quick on xl0 all head 1
#
# We hebben nu de begin definitie van groep 1 aangemaakt. (Block alles op de
# interface xl0 als het niet in groep 1 valt)
# Aan het einde heb ik een soortgelijk statement staan
#
# block in log quick on xl0 all group 11
#
# Dit is de overrulling block regel voor mij bij mijn interface (xl0)
# Note: Voor de duidelijkheid heb ik zoveelmogelijk netjes onder elkaar staan zodat je
# in 1 oogopslag kan zien wat voor regel het is.
#
# Het blockje komt er dan zo uit te zien:
#
# Inkomend:
# block in log quick on xl0 all head 1
# pass in quick on xl0 proto tcp from any to ipf-host port 25 keep state group 1
# pass in quick on xl0 proto tcp from any to ipf-host port 80 keep state group 1
# pass in quick on xl0 proto tcp from any to ipf-host port 443 keep state group 1
# pass in quick on xl0 proto udp from any to ipf-host port 53 keep state group 1
# block in log quick on xl0 all group 1
#
# Uitgaand:
# block out log quick on xl0 all head 2
# pass out quick on xl0 proto udp from ipf-host to any port 53 keep state group 2
# pass out quick on xl0 proto ipv6 from ipf-host to ipv6-tun keep state group 2
# block out log quick on xl0 all group 2
#
# Daarnaast kunnen we ook nog wat meer veiligheid inbouwen door flags te gebruiken
# Flags zijn alleen toepasbaar op tcp pakketjes. Deze hebben de volgende methode
# voor het opbouwen van een verbinding:
# Syn(S) -> Syn/Ack(S/A) -> Ack(A)
# Dat kan je ook als volgt uitleggen:
# Hoi ben je er? -> Ja ik ben er -> Ok kom maar op met je data
#
# Flags zorgen ervoor dat bijvoorbeeld alleen verbindingen die beginnen met een Syn(S) pakket
# mogen binnen komen. Als er dan keep state bijstaat wordt de rest van
# de tcp verbinding ook doorgelaten
#
# Hoe ziet dat eruit?
#
# # Inkomend:
# block in log quick on xl0 all head 1
# pass in quick on xl0 proto tcp from any to ipf-host port 25 flags S keep state group 1
# pass in quick on xl0 proto tcp from any to ipf-host port 80 flags S keep state group 1
# pass in quick on xl0 proto tcp from any to ipf-host port 443 flags S keep state group 1
# pass in quick on xl0 proto udp from any to ipf-host port 53 keep state group 1
# block in log quick on xl0 all group 1
#
# Uitgaand:
# block out log quick on xl0 all head 2
# pass out quick on xl0 proto udp from ipf-host to any port 53 keep state group 2
# pass out quick on xl0 proto ipv6 from ipf-host to ipv6-tun keep state group 2
# block out log quick on xl0 all group 2
#
#
################################################################################
#
# 6. Hoe zit een complete ruleset eruit?
#
# We hebben net enkele kleine voorbeelden gegeven over wat je allemaal in een
# ruleset kunt zetten. Echter nu hebben we nog steeds geen duidelijk overzicht
# over hoe nu een compleet functionele firewall ruleset eruit zou zien.
# Hieronder zal ik een voorbeeld, echt werkend, geven over hoe mijn firewall
# ruleset eruit zou zien als ik bovenstaand beleid / policy ten uitvoer zou
# brengen.
#
# Voorbeeld ruleset:
#
# # Inkomend lo0
# block in log quick on lo0 head 50
# pass in quick on lo0 all group 50
# block in log quick on lo0 group 50
#
# # Uitgaand lo0
# block out log quick on lo0 head 51
# pass out quick on lo0 all group 51
# block out log quick on lo0 group 51
#
# # Inkomend: xl0
# block in log quick on xl0 all head 1
# pass in quick on xl0 proto tcp from any to ipf-host port 25 flags S keep state group 1
# pass in quick on xl0 proto tcp from any to ipf-host port 80 flags S keep state group 1
# pass in quick on xl0 proto tcp from any to ipf-host port 443 flags S keep state group 1
# pass in quick on xl0 proto udp from any to ipf-host port 53 keep state group 1
# block in log quick on xl0 all group 1
#
# # Uitgaand: xl0
# block out log quick on xl0 all head 2
# pass out quick on xl0 proto udp from ipf-host to any port 53 keep state group 2
# pass out quick on xl0 proto ipv6 from ipf-host to 195.109.5.241 keep state group 2
# block out log quick on xl0 all group 2
#
################################################################################
#
# 7. Waar kan ik meer informatie vinden?
#
# Na deze zeer korte en beknopte uitleg zal je misschien denken:
# Ik wil veel meer weten over ipf en hoe het werkt en dergelijke
# Natuurlijk kan je mij een mailtje sturen met daarin je vraag.
# Wat je echter ook kan doen, is zelf uitzoeken hoe het werkt.
# Dat kan je doen door naar www.ipfilter.org te surfen of
# als die niet werkt: http://coombs.anu.edu.au/ipfilter/
# Dat zijn de officiele pagina’s van Darren Reed (de schrijver van ipf).
# Hier kun je terecht voor FAQ’s, en howto documentatie (engels)
#
# Ik hoop dat je hier van geleerd hebt, en interessante rulesets
# gaat bouwen met IPF.
#
################################################################################
#
# Copyright:
# Dit document is geschreven door Remko Lodder voor o.a
# www.mostly-harmless.nl
#
################################################################################
#
# Mochten er spelfouten/dingen niet duidelijk zijn/ verkeerd zijn
# wordt u verzocht contact op te nemen met Remko Lodder
# (nightw@root66.org of remko@elvandar.org) zodat dit aangepast /
# beter uitgelegd / verbeterd kan worden.
#
################################################################################

written by Remko

Leave a Reply