door Walther Ligtvoet.
FloppyT is een minimale linux distributie op 1 diskette en is speciaal geschikt gemaakt voor het draaien van een Firewall. Vooral voor breedbandverbindingen die vaak altijd aan staan is het belangrijk om een goede firewall te hebben. Heb je maar 1 computer dan is een software firewall zo gevonden. Maar heb je een netwerk dan wordt het al heel wat anders. Speciaal voor de MXstream variant van ADSL is er nu een firewall welke weinig tot niets kost. Je kunt hem namelijk zo downloaden en aanpassen. De enige kosten zijn de eventuele aanschafkosten voor hardware als netwerkkaarten of een oude computer.
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:
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 kaart 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 gebruikten 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.
Het maken van de floppyt boot floppy is simpel. Download de
laatste image van:
Op dit moment is versie 0.5.1 de laatste stabiele versie en versie 0.6pre3 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 kun je de utility rawrite.exe gebruiken:
c:\>rawrite
Enter disk image source file name:
floppyfw-mxstream-0.5.1.img
Enter target diskette drive: a
Deze diskette is een gewone DOS geformateerde diskette.Voordat je nu de diskette gaat gebruiken om het systeem op te starten moet je eerst e.e.a. aanpassen. Dit kun je doen met een gewone tekst editor. Gebruik onder Windows echter NOOIT notepad omdat dit om de een of andere reden niet goed omgaat met dos tekstbestanden zoals die gebruikt worden door FloppyT. Gebruik daarvoor in de plaats het dos commando edit.
De volgende bestanden kun je aanpassen:
config (hoofd configuratie) firewall.ini (ipfilter regels) modules.lst (extra ip_masq modules) syslinux.cfg (kernel boot parameters)Je hoeft hiervan alleen de config en firewall.ini van aan te passen.
Hieronder zie je een config bestand behorend bij 0.5.1. De
regels die aangepast
kunnen worden zijn voorzien van commentaar achter de <--- pijltjes.
# Vul hieronder 2 IP adressen in om de verbinding te checken. #Voor Homenet versie 3.0 via intranet (y/n) # Outside network: # eth0 default device. # Inside network: # Modem settings: # Vul hier de DNS'en in. # USE_SYSLOG=y USER_IDENT='xxxxx' <--- vul hier je MXstream usernaam in.
USER_PASSWORD='xxxxx' <--- vul hier het bijbehorende wachtwoord in.
# ping.xs4all.nl = 194.109.6.11
# www.cisco.com = 198.133.219.25
PING1=194.109.6.11
PING2=198.133.219.25
ABN_AMRO_HOME_NET=y <--- maak hier n van als je geen ABNAMRO
telebankieren
via internet gebruikt.
OUTSIDE_IP=PPTP
#
OUTSIDE_DEV=ppp0
OUTSIDE_NETMASK=255.255.255.0
OUTSIDE_BROADCAST=10.0.0.255
#
# 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
#
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
# 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.
SYSLOG_FLAGS="-m 360"
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 zullen we
een aantal regels moeten toevoegen. Om dit fatsoenlijk te kunnen doen is het
vaak nodig om jezelf te verdiepen in ipchains Aangezien we hier
een firewall aan het opzetten zijn moeten we zeer zeker uitkijken met wat we
doen. Een klein foutje kan grote gevolgen hebben voor de betrouwbaarheid van
de firewall.
Het aanpassen van het bestand kun je net als met het config
bestand
doen 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.
Linux ipchains is een herschreven versie van de Linux IPv4 firewalling code en een herschreven versie van ipfwadm, die op zijn beurt weer een herschrijving was van BSD's ipfw. Het is bedoeld om de IP packet filters in Linux kernel versies 2.1.102 en hoger te hanteren.
De oude code kan niet omgaan met fragmenten, heeft 32 bits counters (tenminste op het Intel platform), staat geen specificatie van andere protocollen dan TCP, UDP of ICMP toe, kan geen grote automatische veranderingen aan, kan geen omgekeerde rules aan, heeft in ieder geval een aantal eigenaardigheden en kan moeilijk te managen zijn waardoor het weer gevoeliger is voor gebruikers fouten.
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;
Er zijn verschillende manieren om rules in een chain te manipuleren;
Er zijn een paar mogelijkheden voor masquerading in ipchains bij gebrek aan een betere plaats;
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
Als je het standaard syslog.cfg bestand gebruikt, zal
floppyt
vrolijk alles naar de standaard output sturen. Als je je systeem echter
zonder
monitor etc. draait dan is dat natuurlijk niet handig. In syslog.cfg kun je
aangeven dat je je data bijvoorbeeld naar een ander systeem wil sturen. Op
die
manier kun je de gegevens analyseren. In een ander
document kun je zien hoe je zoiets moet doen.
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.
FloppyT van Edo Martijn Janssen:
http://www.lintegrate.nl
FloppyFW van Thomas Lunquist:
http://www.zelow.no/floppyfw
(C) 2002 Copyleft