Voordat je je router ook maar probeert te configureren, moet je eerst een werkende FreeBSD installatie hebben met [b]2[/b] netwerkkaarten erin.
De ene netwerkkaart moet goed geconfigureerd staan voor het “buiten” netwerk (of dat nou Chello @home of wat dan ook is) en de andere is je “binnen” netwerk.
Je lokale netwerk dus.
Tevens moet je op de hoogte zijn van het configureren / configgen van een Kernel.
(zie daarvoor ook ‘Hoe een kernel te bakken?’, geschreven door sPiNe.
[pagebreak]
Allereerst gaan we de Kernel config bekijken die nodig is voor het routeren van pakketjes.
Open de Kernel config en voeg de volgende regels daarin toe :
[quote]
options IPFIREWALL
options IPDIVERT
[/quote]
Dit zijn meteen al de belangrijkste opties. Firewall/NAT (Network Address Translation) , wat je beide nodig hebt voor je router, staan nu aan.
Nog een paar handige zijn de volgende :
[quote]
options IPFIREWALL_VERBOSE
options IPFIREWALL_VERBOSE_LIMIT=100
[/quote]
Dit zorgt ervoor dat je firewall ietsje preciezer is over de informatie van gedropte pakketje enzo.
De tweede regel zorgt ervoor dat al die informatie die je logbestandjes inhoud geeft niet helemaal uit de klauwen loopt.
Voor meer opties en mogelijkheden verwijs ik je naar het artikeltje geschreven door sPiNe, te vinden onder het menu-item Howto’s .
Volgende stap!
Pak je favoriete editor erbij en edit het bestandje /etc/rc.conf
Voor diegenen die het niet weten, een kleine uitleg tussendoor. (voor degenen die het wel weten, lees ook maar lekker even mee :))
In de directory /etc/defaults/rc.conf staan je “systeem” instellingen. (bij gebrek aan een betere omschrijving …).
Heb je een firewall aan? Wil je SSH automatisch starten? al dit soort handige dingetjes staan daarin.
Zodra deze configuratie geladen is, laadt hij daarna het bestand /etc/rc.conf. Feitelijk is dit hetzelfde soort bestand, maar als je dus wil afwijken van wat standaard is, kan je dit daarin doen, aangezien die instellingen dan de standaard overschrijven. Hopelijk is dit een beetje duidelijk π
We waren dus bij het editten van het bestand /etc/rc.conf.
Daar zetten we de volgende regels in :
[quote]
gateway_enable=”YES” # We gaan gateway spelen!
firewall_enable=”YES” # Maar we doen het wel veilig, met firewall
firewall_script=”/etc/rc.firewall” # Dit wordt straks ons firewall bestand.
firewall_type=”open” # Firewall type. Later meer hierover
firewall_quiet=”NO” # Alle firewall regeltjes netjes in beeld tonen
natd_program=”/sbin/natd” # NATD, onze grote router vriend.
natd_enable=”YES” # NATD aan? lijkt mehandig ..
natd_interface=”dc0″ # NATD netwerkkaart. Zie ‘ifconfig -a’ voor info
natd_flags=”-f /etc/natd.conf” # Extra opties voor NATD
[/quote]
Nu meer over de firewall die daarboven staat.
De firewall die nu in het configuratie bestand staat is van het type “open”.
In principe schermt NATD je werkstations ook wel af van de buitenwereld (Voor rechtstreekse benadering in ieder geval), maar echt veilig is anders.
Voor degenen die meer veiligheid willen, aan het einde een aangepaste firewall met een aantal voorbeelden. Voor nu laten we het hier even bij, om alles in ieder geval in de lucht te krijgen.
Dan rest ons nog 1 ding en dat is het aanmaken van het volgende bestand : /etc/natd.conf
Pak je favo editor er dus maar weer bij en zet de volgende dingen in dat bestandje :
[quote]
dynamic yes
use_sockets yes
same_ports yes
[/quote]
Die eerste regel is voor de mensen onder ons die via DHCP het net op moeten (Chello bijvoorbeeld). Als dit niet opgaat voor jouw situatie, kan je deze regel verwijderen.
Controleer nu alleen nog even of NATD na het rebooten z’n werk kan doen.
Tik het volgende in :
[shell]cat /etc/services | grep natd [/shell]
Als het goed is, moet je de volgende regel zien:
[shell]natd 8668/divert # Network Address Translation[/shell]
Als je dat ziet, zit je nu in principe al goed. Krijg je niks terug, tik dan dit in:
[shell] echo “natd 8668/divert” >> /etc/services[/shell]
Als het goed is [b]hoef je dit in een normale situatie niet te doen[/b].
Op dit moment heb je een werkende router (na rebooten π ) gefeliciteerd!
Reboot en probeer het maar eens uit.
Voor de mensen die nu iets meer veiligheid willen, de aangepaste firewall.
Maak een nieuw bestandje aan in /etc, bijvoorbeeld /etc/rc.vuurmuur en zet daar het volgende in :
[quote]
ipfw add 20 deny tcp from any to any 137 via xl1
ipfw add 30 deny tcp from any to any 138 via xl1
ipfw add 40 deny tcp from any to any 139 via xl1
ipfw add 50 deny tcp from any to any 3306 via xl1
ipfw add 60 deny tcp from any to any 515 via xl1
ipfw add 70 deny tcp from any to any 1542 via xl1
ipfw add 75 deny tcp from any to me 25 via xl1
ipfw add 77 deny tcp from any to me 23 via xl1
ipfw add 110 divert natd all from any to any via xl1
ipfw add 120 allow all from any to any
[/quote]
* Firewall copyright RoeLz π
Let op: xl1 is in dit geval de netwerkkaart die aan internet hangt!
Pas in /etc/rc.conf het volgende regeltje aan :
[quote]
firewall_script=”/etc/rc.firewall” # Dit wordt straks ons firewall bestand.
[/quote]
Zet daar de naam van het bestand in wat je net aangemaakt hebt.
Dan als laatste vanaf je console:
[shell]sysctl -w net.inet.tcp.blackhole=1[/shell]
Klaar is klara π rebooten en je bent voorlopig klaar.
Opmerking tussendoor: De firewall die hierboven staat, kan wel helemaal niet geschikt zijn voor jouw situatie.
Binnenkort komt hier wel een uitleg over hoe je precies een dijk van een firewall neerzet, maar op het net is ook genoeg te vinden over de precieze werking van ipfw. (of natuurlijk ‘man ipfw’ ! )
Succes ermee en mocht je tegen problemen aanlopen, klopt gerust aan op het forum!
Anonymous says
Ik ben ontroerd……
π
Anonymous says
ik ben blij voor je meid ;P
Anonymous says
Ooit had ik een wiskunde leraar die bij een gelijkzijdige driehoek altijd de zinsnede:”En wat zei onze grote vriend Pythagoras?” aanhaalde.
Eerst Pythagoras en nu ook NATD! NATD, wie kent hem niet?
natd_program=”/sbin/natd” # NATDβ onze grote router vriend.
Anonymous says
iets serieuzer: klopt het dat de firewall in eerste instantie alles doorgeeft?
Anonymous says
yep, dat is wat => firewall_type=”open” doet.
Het stukje van het orginele script onder het kopje “open” (waar je dus aan refereert) zet alles open; van in naar uitgaand en omgekeerd.
Vandaar ook de toevoeging van het scriptje onderaan.
(Wat trouwens ook nog steeds voor verbetering in is)
* Exodus, vriend van NATD π
borisb says
en op welke kaart moet natd staan dan?
natd_interface=”dc0″ # NATD netwerkkaart. Zie ‘ifconfig -a’ voor info
die van buiten of binnen?