|
(Dit is een bewerking van de voormalige FloppyT HOWTO.
Deze HOWTO was geschreven als een artikel met wat kleine
aanpassingen en een andere intro.)
Met de opkomst van breedband netwerken zoals kabel en ADSL
neemt ook het aantal virusbesmettingen en computer inbraken
een vlucht. Dit omdat deze diensten vaak een "altijd
verbonden" karakter hebben en veel mensen hun computersysteem
niet meer afsluiten zodra ze deze niet meer nodig hebben.
Daarnaast zijn ook vele hobbyisten begonnen met het gebruiken
van eigen webservers, FTP servers of gameservers.
Om deze veiligheidslekken te dichten zijn er vele toepassingen
mogelijk zoals het installeren van een firewall op je computer.
Echter, wil je een geheel netwerkje beveiligen dan zul je
op iedere machine afzonderlijk een firewall moeten installeren
en instellen. Dit is natuurlijk mogelijk maar het risico
bestaat dan dat er bijvoorbeeld geen updates op een enkel
systeem geinstalleerd word met als gevolg dat er dus een
beveiligingslek ontstaat. Aangezien ik een netwerk heb draaien
(met daarin de server waarop deze site draait) welke met
MXstream een verbinding heeft met het Internet wil ik er
zeker van zijn dat mijn systemen beschermd zijn. Voor dit
soort toepassingen bestaat FloppyT.
Met de opkomst van breedband netwerken
zoals kabel en ADSL neemt ook het aantal virusbesmettingen
en computer inbraken een vlucht.
FloppyT is een minimale linux distributie op 1 diskette
en is speciaal geschikt gemaakt voor het draaien van een
Firewall. Speciaal voor de MXstream variant van ADSL is
er nu een firewall welke weinig tot niets kost. Naast de
MXstream beveiliging is het ook mogelijk, met wat gesleutel,
om een kabel internet verbinding te beveiligen.
Je kunt FloppyT zo downloaden en aanpassen. De enige kosten
zijn de eventuele aanschafkosten voor hardware als netwerkkaarten
of een oude computer.
Hardware
Je hebt waarschijnlijk nog wel ergens een wat oudere PC
staan die je nergens meer voor gebruikt. Het HOEFT dus geen
geld te kosten. Wel moet de PC aan een aantal vereisten
voldoen:
- Intel 386 of hoger
- Minimaal 8MB RAM, 16MB is aanbevolen.
- 3.5" floppy drive
- Videokaart
- 2 of meer netwerkkaarten
- Keyboard
- Monitor
Je hebt een monitor en keyboard alleen maar nodig voor
het opzetten. Je kunt de Firewall namelijk ook zonder draaien
om kosten te drukken en ruimte te besparen.. wel zo handig
als je maar beperkte middelen of ruimte hebt.
Zorg ervoor dat elke netwerkkaart zijn eigen IRQ en geheugen
adres heeft. Soms kan dit met jumpers maar meestal heb je
de standaard software nodig die bij de kaarten geleverd
wordt. Ikzelf gebruik 3Com 3c509 kaarten. Om nu te voorkomen
dat ze beiden hetzelfde adres gebruiken heb ik met de bijgeleverde
software 1 van de kaarten een ander IRQ en geheugenadres
gegeven. Standaard zijn de meeste kaarten ingesteld op IRQ
10 en geheugenadres 0x300. Via de software utility heb ik
1 ervan op IRQ 11 en geheugenadres 0x310 gezet. PCI netwerkkaarten
hoeven niet specifiek ingesteld te worden aangezien het
BIOS hier al voor zorgt.
Het HOEFT ... geen geld te kosten.
Wel moet de PC aan een aantal vereisten voldoen.
Software
Het maken van de floppyt diskette is simpel.
Download de laatste image van:
http://www.lintegrate.nl/
Op dit moment is versie 0.6 de laatste stabiele versie
en versie 0.7pre3 de laatste béta versie.
Zet de image over op een (lege) diskette.
Met Linux doe je dit met het volgende commando:
# dd if=floppyfw-mxstream-0.5.1.img of=/dev/fd0
Onder windows 95 kun je de utility rawrite.exe
of winimage gebruiken.
Voor Windows NT 4, 2000 of XP heb je winimage nodig.
c:\>rawrite
Enter disk image source file name: floppyfw-mxstream-0.6.img
Enter target diskette drive: a
Configuratie
Deze diskette is een gewone DOS geformateerde diskette.Voordat
ik de diskette kon gebruiken om het systeem op te starten
moest ik eerst e.e.a. aanpassen. Dit heb ik gedaan met een
gewone tekst editor. Gebruik onder Windows trouwens NOOIT
notepad omdat dit om de een of andere reden niet goed omgaat
met dos tekstbestanden zoals die gebruikt worden door FloppyT.
Daarvoor in de plaats heb ik het dos commando edit
gebruikt.
De volgende bestanden zijn aanpasbaar:
config (hoofd configuratie)
firewall.ini (ipfilter regels)
modules.lst (extra ip_masq
modules)
syslinux.cfg (kernel boot parameters)
syslog.cfg (systeemlog configuratie)
Ik heb hiervan alleen de config en firewall.ini aangepast.
Hieronder zie je een config bestand behorend
bij 0.6. De regels die aangepast kunnen worden zijn voorzien
van commentaar achter de <--- pijltjes.
USER_IDENT='xxxxx' <--- vul hier je MXstream usernaam
in.
USER_PASSWORD='xxxxx' <--- vul hier het bijbehorende
wachtwoord in.
# Vul hieronder 2 IP adressen in om de verbinding te checken.
# ping.xs4all.nl = 194.109.6.11
# www.cisco.com = 198.133.219.25
PING1=194.109.6.11
PING2=198.133.219.25
#Voor Homenet versie 3.0 via intranet (y/n)
ABN_AMRO_HOME_NET=y <--- maak hier n van als je geen
ABNAMRO telebankieren via internet gebruikt.
# Outside network:
OUTSIDE_IP=PPTP
# eth0 default device.
#
OUTSIDE_DEV=ppp0
OUTSIDE_NETMASK=255.255.255.0
OUTSIDE_BROADCAST=10.0.0.255
# Inside network:
#
# This has 192.168.0.* set as default, addresses assigned
for internal networks according
# according RFC 1918.
#
# eth1 is the default device for the internal network.
#
INSIDE_IP=192.168.0.2
INSIDE_DEV=eth1
INSIDE_NETMASK=255.255.255.0
INSIDE_BROADCAST=192.168.0.255
# Modem settings:
#
MODEMSIDE_DEV=eth0
MODEMSIDE_IP=10.0.0.150
MODEMSIDE_BROADCAST=10.0.0.255
MODEMSIDE_NETMASK=255.255.255.0
MODEM_IP=10.0.0.138
# Vul hier de DNS'en in.
# En eventueel domeinnaam en hostname.
#
NAME_SERVER_IP1=194.109.6.66 <--- vul hier de DNS server
adressen in van je provider. In dit geval xs4all.
NAME_SERVER_IP2=194.109.9.99
DOMAIN=xs4all.nl
HOSTNAME=floppyfw
#
# (y)es or (n)o
#
OPEN_SHELL=y
ONLY_8M=n <--- maak hier y van indien er maar 8MB in
de computer zit.
USE_SYSLOG=y
SYSLOG_FLAGS="-m 360"
Filter Regels
We gaan nu kijken naar de firewall.ini. Het
originele bestand heeft alleen maar de standaard regels.
Als we andere dingen willen doen achter de firewall zoals
Netmeeting, VPN, eigen servers opzetten enz. dan zal een
aantal regels moeten worden toegevoegd. Om dit fatsoenlijk
te kunnen doen was het nodig om mezelf te verdiepen in ipchains.
Aangezien we hier een firewall aan het opzetten zijn moest
ik zeer zeker uitkijken met wat ik deed. Een klein foutje
kan immers grote gevolgen hebben voor de betrouwbaarheid
van de firewall.
Het aanpassen van het bestand kan net als met het config
bestand gedaan worden met edit of een andere dos editor
onder windowsof met een editor als pico of vi onder linux.
Op het forum van www.lintegrate.nl
staan een aantal firewall.ini scripts. Je kunt deze in hun
geheel overnemen of je kunt ze gebruiken als een voorbeeld.
Er bestaan ook kant en klare regel sets op het internet
en zelfs een aantal sites die het maken van een dergelijk
bestand grotendeels automatiseren. Als je via google
zoekt op "ipchains generator" kom je er een aantal tegen.
Let er wel op dat het bestand niet te groot word. Je wilt
hem immers op een floppy plaatsen met maar een beperkte
ruimte. Zie hieronder voor de basis. Let wel... Dit is echt
alleen maar de basis die je iets iets meer kennis geeft
van IPChains. Wil je meer dan je firewall.ini script aanpassen
dan zul je je echt in IPChains moet gaan verdiepen anders
zul je alleen maar problemen creëeren.
IP filtering setup (IPCHAINS)
Ik ga niet te diep in op hoe je een IPChains firewall moet
hanteren. Daar is een uitstekende HOWTO voor geschreven.
Je kunt deze vinden op http://www.linuxdoc.org/HOWTO/IPCHAINS-HOWTO.html.
Ik zou hem alleen maar kopiëren hier. Hier zijn in ieder
geval de basics te vinden.
Je werkt met chains bij naam. Je start met drie ingebouwde
chains input, output en forward welke je niet kan deleten.
Je kunt natuurlijk ook zelfs chains maken. Rules (regels)
kunnen toegevoegd en verwijderd worden in de deze set.
De bewerkingen om te werken aan volledige chains zijn;
- Creëer een nieuwe chain (-N).
- Verwijder een lege chain (-X).
- Wijzig de policy van een ingebouwde chain. (-P).
- List de rules in een chain (-L).
- Verwijder de regels uit een chain (-F).
- Stel de packet en byte counters van alle rules in een
chain (-Z).
Er zijn verschillende manieren om rules in een chain te
manipuleren;
- Voeg een nieuwe rule toe aan een chain (-A).
- Voer een nieuwe toe in een positie in eenchain (-I).
- Vervang een rule in een positie in een chain (-R).
- Verwijder een rule van een positie in een chain (-D).
- Verwijder de eerste regel die matched in een chain (-D).
Er zijn een paar mogelijkheden voor masquerading in ipchains
bij gebrek aan een betere plaats;
- Geeft een listing van de huidige masqueraded connecties
(-M -L).
- Stel de timeout waarden van masquerading in (-M -S).
Er zijn wat timing zaken bij het veranderen van firewall
rules. Als je niet voorzichtig bent kun je pakketjes halverwege
doorzenden terwijl je je veranderingen nog niet klaar hebt.
Een simplistische benadering van wat je moet doen is het
volgende:
# ipchains -I input 1 -j DENY
# ipchains -I output 1 -j DENY
# ipchains -I forward 1 -j DENY
... maak de wijzigingen ...
# ipchains -D input 1
# ipchains -D output 1
# ipchains -D forward 1
#
Dit laat alle pakketjes vallen terwijl je de wijzigingen
aanbrengt.
Hier is een kopie van de bovenvermelde firewall rules in
IPChains.
#!/bin/sh
#
# rc.firewall
#
## Flush everything, start from scratch
/sbin/ipchains -F input
/sbin/ipchains -F output
/sbin/ipchains -F forward
## Redirect for HTTP Transparent Proxy
#$IPCHAINS -A input -p tcp -s 192.1.2.0/24 -d 0.0.0.0/0 80 -j REDIRECT 8080
## Create your own chain
/sbin/ipchains -N my-chain
# Allow email to got to the server
/sbin/ipchains -A my-chain -s 0.0.0.0/0 smtp -d 192.1.2.10 1024:-j ACCEPT
# Allow email connections to outside email servers
/sbin/ipchains -A my-chain -s 192.1.2.10 -d 0.0.0.0/0 smtp -j ACCEPT
# Allow Web connections to your Web Server
/sbin/ipchains -A my-chain -s 0.0.0.0/0 www -d 192.1.2.11 1024: -j ACCEPT
# Allow Web connections to outside Web Server
/sbin/ipchains -A my-chain -s 192.1.2.0/24 1024: -d 0.0.0.0/0 www -j ACCEPT
# Allow DNS traffic
/sbin/ipchains -A my-chain -p UDP -s 0.0.0.0/0 dns -d 192.1.2.0/24 -j ACCEPT
## If you are using masquerading
# don't masq internal-internal traffic
/sbin/ipchains -A forward -s 192.1.2.0/24 -d 192.1.2.0/24 -j ACCEPT
# don't masq external interface direct
/sbin/ipchains -A forward -s 24.94.1.0/24 -d 0.0.0.0/0 -j ACCEPT
# masquerade all internal IP's going outside
/sbin/ipchains -A forward -s 192.1.2.0/24 -d 0.0.0.0/0 -j MASQ
## Deny everything else
/sbin/ipchains -P my-chain input DENY
Stop niet hier ! Dit is geen goede firewall en ik weet
zeker dat je andere diensten wilt aanbieden achter je firewall.
Lees de IPCHAINS-HOWTO. Dat is een goede plek om te starten.
Firewalls alleen zijn niet genoeg
In gebruik nemen van je FloppyT.
Als je je bestanden eenmaal geconfigureerd hebt en op je
floppy hebt weggeschreven kunnen we e.e.a. gaan testen.
Start daarom met je floppy je systeem op. Op die manier
kun je zien of je je bestanden goed hebt geconfigureerd.
Via Alt+F4 kun je op je FloppyT systeem zien wat er gebeurd.
Is alles goed dan kun je je systeem ergens plaatsen waar
hij niet in de weg staat en kun je de rest van je netwerk
gaan configureren voor het gebruik van de firewall. Let
regelmatig op je log bestanden om te zien of er geen rare
dingen gebeuren.
Er bestaan een aantal sites welke kunnen helpen om je firewall
te testen.
Shields UP
Security
Metrics
Nawoord.
Firewalls alleen zijn tegenwoordig niet genoeg om de geoefende
systeem kraker te weerhouden van zijn activiteiten. Deze
zal echter bijlange na niet genoeg geinteresseerd zijn om
het gemiddelde thuissysteem te kraken en zal al snel de
kleine visjes met rust laten. Ben je echter bang dat je
gegevens op straat komen te liggen of dat je netwerk gekraakt
wordt dan kun je je beveiligings maatregelen uit kunnen
breiden met inbraak detectie software als SNORT of PortSentry.
Deze toepassingen gaan te ver om dit in een kort verhaal
als hierboven te kunnen uitleggen. In de nabije toekomst
zal ik hier echter wel wat aandacht aan besteden omdat je
niet paranoïde genoeg kunt zijn als het aankomt op
beveiliging.
Referenties
FloppyT van Edo Martijn Janssen:
http://www.lintegrate.nl
FloppyFW van Thomas Lunquist:
http://www.zelow.no/floppyfw
FloppyT HOWTO van Walther Ligtvoet:
http://www.aesir.nl/FloppyT-Firewall-HOWTO.html
|