From 0cc2bb2c1ad8af242790d787769462df39b1b4f8 Mon Sep 17 00:00:00 2001 From: Remko Lodder Date: Wed, 12 Jan 2005 19:59:30 +0000 Subject: [PATCH] MFen: firewalls -> 1.15 Obtained from: The FreeBSD Dutch Documentation Project --- .../books/handbook/firewalls/chapter.sgml | 587 +++++++++--------- 1 file changed, 286 insertions(+), 301 deletions(-) diff --git a/nl_NL.ISO8859-1/books/handbook/firewalls/chapter.sgml b/nl_NL.ISO8859-1/books/handbook/firewalls/chapter.sgml index 6126a1ff3d..9932c4fa16 100644 --- a/nl_NL.ISO8859-1/books/handbook/firewalls/chapter.sgml +++ b/nl_NL.ISO8859-1/books/handbook/firewalls/chapter.sgml @@ -2,8 +2,8 @@ The FreeBSD Dutch Documentation Project $FreeBSD$ - $FreeBSDnl: nl_NL.ISO8859-1/books/handbook/firewalls/chapter.sgml,v 1.7 2004/12/26 09:59:54 remko Exp $ - Gebaseerd op: 1.11 + $FreeBSDnl: nl_NL.ISO8859-1/books/handbook/firewalls/chapter.sgml,v 1.12 2005/01/12 18:34:20 siebrand Exp $ + Gebaseerd op: 1.15 --> @@ -135,21 +135,6 @@ exclusieve firewalls omdat ze het risico op het toestaan van ongewild verkeer door een firewall aanzienlijk reduceren. - Als een browser wordt gebruikt om naar een website te gaan, - dan gebeurt er veel voordat data van een website op een scherm - wordt weergegeven. Een browser ontvangt niet één - bestand dat alle data bevat en zo weergegeven kan worden op - een scherm. Er vinden meerdere rondes van sturen en ontvangen - van pakketten met informatie plaats. Als alle pakketten met - data eindelijk zijn aangekomen, dan wordt de data uit die - pakketten gecombineerd tot dat wat op het scherm wordt getoond. - Iedere dienst (DNS, HTTP, - etc.) heeft zijn eigen poortnummer. Poortnummer 80 is voor - HTTP diensten. Een firewall kan ingesteld - worden om alleen de start van een verzoek dat afkomstig is van - het LAN naar het internet toe te - staan. - De beveiliging kan nog verder vergroot worden met een stateful firewall. Een stateful firewall houdt bij welke connecties er door de firewall tot stand zijn gekomen @@ -169,15 +154,15 @@ &os; heeft drie soorten firewallsoftware in de basisinstallatie. Dat zijn IPFILTER (ook bekend als IPF), IPFIREWALL (ook bekend als IPFW) en PF (de pakketfilter van - OpenBSD). IPFIREWALL heeft - ingebouwde mogelijkheden om bandbreedte te regelen met de - DUMMYNET traffic shaper. IPFILTER heeft geen - traffic shaper om bandbreedte te regelen, maar dit kan - wel gedaan worden met de port ALTQ. DUMMYNET en - ALTQ worden meestal gebruikt door ISPs en - bedrijven. IPF, IPFW en PF gebruiken regels om de toegang van - pakketten tot een systeem te regelen, hoewel ze dat op andere - manieren doen en de syntaxis voor regels anders is. + OpenBSD). IPFIREWALL heeft ingebouwde mogelijkheden om + bandbreedte te regelen met de DUMMYNET traffic + shaper. IPFILTER heeft geen traffic shaper om + bandbreedte te regelen, maar dit kan wel gedaan worden met de + port ALTQ. DUMMYNET en ALTQ worden meestal + gebruikt door ISPs en bedrijven. IPF, IPFW en PF gebruiken + regels om de toegang van pakketten tot een systeem te regelen, + hoewel ze dat op andere manieren doen en de syntaxis voor regels + anders is. De voorbeeldregels voor IPFW (in /etc/rc.firewall) die meekomen met de @@ -218,7 +203,7 @@ firewallregels opstelt begrijpen hoe TCP/IP werkt, welke waarde de controlevelden kunnen hebben en hoe die waarden gebruikt worden in normaal verkeer. Op de volgende - link wordt een prima uitleg gegeven: . @@ -226,13 +211,16 @@ De Packet Filter (PF) Firewall Vanaf juli 2003 is de OpenBSD firewalltoepassing - PF geporteerd naar &os; 5.3. - PF is een complete en volledige firewall die - ALTQ bevat om bandbreedte management uit te - voeren op een vergelijkbare wijze als dummynet in - IPFW. Het OpenBSD project zorgt voor een - erg goed gebruikershandboek voor PF dat niet in dit onderdeel - wordt opgenomen omdat dat niet nodig is. + PF geporteerd naar &os; wn bwschikbaar gekomen + in de &os; portscollectie. In november 2004 was &os; 5.3 de + eerste release die PF bevatte is integraal + onderdeel van het basissysteem. PF is een + complete en volledige firewall die ALTQ bevat + om bandbreedte management uit te voeren op een vergelijkbare + wijze als DUMMYNET in IPFW. Het OpenBSD + project zorgt voor een erg goed gebruikershandboek voor PF dat + niet in dit onderdeel wordt opgenomen omdat dat niet nodig + is. Voor oudere 5.X versies van &os; staat PF in de &os; portscollectie: PF Inschakelen PF zit in de basisinstallatie van &os; voor versies vanaf - 5.3 als aparte run time laadbare module. PF - laadt dynamisch in de kernel als laadbare module als + 5.3 als aparte run time laadbare module. Een + systeem laadt de PF laadbare module dynamisch in de kernel als pf_enable="YES" in rc.conf staat. In de laadbare module is &man.pflog.4; logging ingeschakeld. @@ -301,7 +289,8 @@ device pfsync - Beschikbare Opties voor rc.conf + Beschikbare Opties voor + <filename>rc.conf</filename> De volgende instellingen moeten in /etc/rc.conf staan om PF bij het booten te activeren: @@ -326,11 +315,11 @@ pflog_flags="" # aanvullende vlaggen voor opstarten pflogdDe IPFILTER (IPF) Firewall Darren Reed is de auteur van IPFILTER, dat niet afhankelijk - is van één besturingssysteem. IPFILTER is een - open source applicatie die is geporteerd naar &os;, NetBSD, - OpenBSD, SunOS, HP/UX en Solaris besturingssystemen. IPFILTER - wordt actief ondersteund en onderhouden en er worden regelmatig - nieuwe versies uigebracht. + is van één besturingssysteem. Het is een open + source applicatie die is geporteerd naar &os;, NetBSD, OpenBSD, + SunOS, HP/UX en Solaris besturingssystemen. IPFILTER wordt + actief ondersteund en onderhouden en er worden regelmatig nieuwe + versies uigebracht. IPFILTER is gebaseerd op een firewall aan de kernelkant en een NAT mechanisme dat gecontroleerd en @@ -345,22 +334,21 @@ pflog_flags="" # aanvullende vlaggen voor opstarten pflogdIPF is oorspronkelijk geschreven met logica die regels verwerkte volgens het principe de laatst passende regel - wint en gebruikte toen alleen staatloze regels. In de + wint en gebruikte toen alleen staatloze regels. In de loop der tijd is IPF verbeterd en zijn de opties - quick en keep - state toegevoegd waarmee de logica van het - verwerken van regels drastisch is gemoderniseerd. In de - officiële documentatie van IPF worden de verouderde - regels en verwerkingslogica behandeld. De moderne functies - worden alleen behandeld als opties, waardoor hun nut dat er een - veiliger firewall mee te maken volledig onderbelicht - blijft. + quick en keep state + toegevoegd waarmee de logica van het verwerken van regels + drastisch is gemoderniseerd. In de officiële documentatie + van IPF worden de verouderde regels en verwerkingslogica + behandeld. De moderne functies worden alleen behandeld als + opties, waardoor hun nut dat er een veiliger firewall mee te + maken volledig onderbelicht blijft. - De instructies in dit hoofdstuk zijn gebaseerd op regels - die gebruik maken van de optie quick en - de stateful optie keep state. Dit is - het raamwerk waarmee een set van inclusieve firewallregels - wordt samengesteld. + De instructies in dit hoofdstuk zijn gebaseerd op regels die + gebruik maken van de optie quick en de + stateful optie keep state. Dit is het + raamwerk waarmee een set van inclusieve firewallregels wordt + samengesteld. Een inclusieve firewall staat alleen pakketten toe die voldoen aan de regels. Op die manier kan er in de hand @@ -386,8 +374,8 @@ pflog_flags="" # aanvullende vlaggen voor opstarten pflogdIPF Inschakelen IPF zit in de basisinstallatie van &os; als een aparte - run time laadbare module. IPF - laadt dynamisch in de kernel als laadbare module als + run time laadbare module. Een systeem laadt de + IPF kernel laadbare module dynamisch als ipfilter_enable="YES" in rc.conf staat. Voor de laadbare module zijn de opties logging en default @@ -417,19 +405,18 @@ pflog_flags="" # aanvullende vlaggen voor opstarten pflogd - IPFILTER geeft de compiler - aan dat IPFILTER onderdeel moet zijn van de kern van de - kernel. + options IPFILTER schakelt ondersteuning + voor de IPFILTER firewall in. - IPFILTER_LOG schakelt de - optie in waarmee IPF verkeer kan loggen door het naar het ip - pakketloggende pseudo–device te schrijven voor iedere - regel met het sleutelwoord log - erin. + options IPFILTER_LOG schakelt de + optie in waarmee IPF verkeer kan loggen door het naar het + ipl pakketloggende pseudo–device + te schrijven voor iedere regel met het sleutelwoord + log erin. - IPFILTER_DEFAULT_BLOCK + options IPFILTER_DEFAULT_BLOCK wijzigt het standaardgedrag zodat ieder pakket waarop geen - enkele pass regel van toepassing is + enkele pass regel van toepassing is wordt geblokkeerd. Deze instelling worden pas actief nadat een kernel @@ -444,9 +431,9 @@ options IPFILTER_DEFAULT_BLOCK staan om IPF bij het booten te activeren: ipfilter_enable="YES" # Start ipf firewall -ipfilter_rules="/etc/ipf.rules" # laadt regels uit het doelbestand +ipfilter_rules="/etc/ipf.rules" # laad regels uit het doelbestand ipmon_enable="YES" # Start IP monitor log -ipmon_flags="–Ds" # D = start as daemon +ipmon_flags="-Ds" # D = start als daemon # s = log naar syslog # v = log tcp window, ack, seq # n = vertaal IP & poort naar namen @@ -454,7 +441,7 @@ ipmon_flags="–Ds" # D = start as daemon Als er een LAN achter de firewall staat dat gebruik maakt van IP adressen uit de privaat reeks, dan moet de volgende optie ook ingesteld worden om - NAT in te schakelen: + NAT functionaliteit in te schakelen: gateway_enable="YES" # Schakel in als LAN gateway ipnat_enable="YES" # Start ipnat functie @@ -470,7 +457,7 @@ ipnat_rules="/etc/ipnat.rules" # bestand met regels voor ipnat - ipf –Fa –f /etc/ipf.rules + ipf -Fa -f /etc/ipf.rules : verwijder alle interne tabellen met regels. @@ -530,14 +517,14 @@ Packet log flags set: (0) Als er als optie voor inkomend of voor uitgaand wordt meegegeven, dan wordt - de juiste lijst met regels die de kernel op dit moment gebruikt + de juiste lijst met regels die de kernel op dat moment gebruikt weergegeven. ipfstat –in toont de tabel met regels voor inkomend verkeer met regelnummers ipfstat –on toont de tabel met - regels voor uitgaand verkeer met regelnummers + regels voor uitgaand verkeer met regelnummers De uitvoer ziet er ongeveer als volgt uit: @@ -545,11 +532,11 @@ Packet log flags set: (0) @2 block out on dc0 from any to any @3 pass out quick on dc0 proto tcp/udp from any to any keep state - ipfstat –in toont de tabel met + ipfstat –ih toont de tabel met regels voor inkomend verkeer, waarbij voor iedere regel staat hoe vaak die van toepassing was. - ipfstat –on toont de tabel met + ipfstat –oh toont de tabel met regels voor uitgaand verkeer, waarbij voor iedere regel staat hoe vaak die van toepassing was. @@ -569,7 +556,7 @@ Packet log flags set: (0) optionele subvlaggen bieden de mogelijkheid om een bron of bestemmings IP adres, poort of protocol aan te geven dat gemonitord moet worden. Details zijn na te lezen - in &man.ipfstat.8 + in &man.ipfstat.8;. @@ -607,15 +594,15 @@ Packet log flags set: (0) Zelfs als logging is ingeschakeld logt IPF nog niets uit zichzelf. De beheerder van de firewall beslist welke actieve regels iets weg moeten schrijven door het sleutelwoord - log aan die regels toe te voegen. - Gewoonlijk worden alleen deny regels + log aan die regels toe te voegen. + Gewoonlijk worden alleen deny regels gelogd. Het is heel normaal om als laatste regel een - deny regel aan de set met regels toe - te voegen waar het sleutelwoord log in - staat. Zo krijgt een beheerder alle pakketten te zien waarop - geen enkele regel van toepassing was. + deny regel aan de set met regels toe te + voegen waar het sleutelwoord log in staat. + Zo krijgt een beheerder alle pakketten te zien waarop geen + enkele regel van toepassing was. @@ -624,21 +611,22 @@ Packet log flags set: (0) &man.syslogd.8; heeft een eigen methode om logboekgegevens te scheiden. Het maakt gebruik van speciale groepen die facility en level - heten. &man.ipmon.8; in mode - gebruikt Local0 als - facilitynaam. Alle door &man.ipmon.8; gelogde - gegevens gaan naar Local0. De nu volgende - levels kunnen gebruikt worden om de gelogde gegevens nog - verder uit elkaar te trekken als dat gewenst is. + heten. &man.ipmon.8; in mode gebruikt + Local0 als facilitynaam. + Alle door &man.ipmon.8; gelogde gegevens gaan naar + Local0. De nu volgende levels kunnen + gebruikt worden om de gelogde gegevens nog verder uit elkaar te + trekken als dat gewenst is. LOG_INFO – pakketten gelogd met het sleutelwoord "log" als actie in plaats van pass of block. LOG_NOTICE – gelogde pakketten die ook zijn doorgelaten LOG_WARNING – gelogde pakketten die ook geblokkeerd zijn LOG_ERR – gelogde pakketten die een verkeerde opbouw hebben, "short" + - Om IPFILTER alle gelogde gegevens naar - /var/log/ipfilter.log te laten schrijven, dient - dat bestand te bestaan. Dat kan met het volgende + Om IPFILTER alle gelogde gegevens naar + /var/log/ipfilter.log te laten schrijven, + dient dat bestand te bestaan. Dat kan met het volgende commando: touch /var/log/ipfilter.log @@ -662,16 +650,17 @@ LOG_ERR – gelogde pakketten die een verkeerde opbouw hebben, "short"/etc/syslog.conf actief te maken kan er gereboot worden of is het mogelijk de syslogtaak een schop te geven zodat /etc/syslog.conf opnieuw - wordt ingelezen met kill - –HUP <pid>. Het pid (procesnummer) is - te achterhalen door een overzicht van taken te tonen met - ps –ax. Het pid is het nummer in de - linker kolom voor de regel waarop syslog - staat. + wordt ingelezen met /etc/rc.d/syslogd + restart. Voor &os; 4.X is dit kill + -HUP PID. Het PID + (procesnummer) is te achterhalen door een overzicht van taken + te tonen met ps –ax. Het PID is het + nummer in de linker kolom voor de regel waarop + syslog staat. - Vaak wordt vergeten /etc/newsyslog.conf - te wijzigen om het nieuw aangemaakte logbestand - te laten roteren. + Vaak wordt vergeten + /etc/newsyslog.conf te wijzigen om het + nieuw aangemaakte logboekbestand te laten roteren. @@ -706,7 +695,7 @@ LOG_ERR – gelogde pakketten die een verkeerde opbouw hebben, "short" Deze kunnen ingezien worden met - ipfstat -in. + ipfstat -in. @@ -716,7 +705,7 @@ LOG_ERR – gelogde pakketten die een verkeerde opbouw hebben, "short"S voor een verkeerd pakket (short packet), n voor dat er geen enkele regel van toepassing was, - L voor een logregel. De volgorde + L voor een logboekregel. De volgorde waarin deze acties getoond worden is: S, p, b, n, L. Een hoofdletter P of B betekent dat het pakket gelogd is vanwege een globale @@ -780,7 +769,8 @@ LOG_ERR – gelogde pakketten die een verkeerde opbouw hebben, "short"csh en tcsh. Velden waarvoor substitutie van toepassing is worden - vooraf gegaan door het dollarteken $. + vooraf gegaan door het dollarteken + $. Definities worden niet vooraf gegaan door het voorvoegsel $. @@ -792,8 +782,8 @@ LOG_ERR – gelogde pakketten die een verkeerde opbouw hebben, "short"############## Begin IPF regels script ######################### oif="dc0" # naam van de uitgaande interface -odns="192.0.2.11" # IP adres van DNS server ISP definitie -myip="192.0.2.7" # Het statische IP adres gekregen van ISP +odns="192.0.2.11" # IP adres van DNS server ISP +myip="192.0.2.7" # statische IP adres gekregen van ISP ks="keep state" fks="flags S keep state" @@ -836,7 +826,7 @@ EOF te werken met de volgende regel in rc.conf: - ipfilter_rules= + >ipfilter_rules= Nu kan er een script als het volgende worden toegevoegd aan de /usr/local/etc/rc.d/ opstartmap. @@ -880,9 +870,9 @@ sh /etc/ipf.rules.script verwerkte volgens het principe de laatst passende regel wint en gebruikte toen alleen staatloze regels. In de loop der tijd is IPF verbeterd en zijn de opties - quick en keep - state toegevoegd waarmee de logica van het - verwerken van regels drastisch is gemoderniseerd. + quick en keep state toegevoegd + waarmee de logica van het verwerken van regels drastisch is + gemoderniseerd. De instructies in dit hoofdstuk zijn gebaseerd op regels die gebruik maken van de optie quick @@ -931,6 +921,7 @@ sh /etc/ipf.rules.script aparte paragraaf behandeld. + ACTIE IN/UIT OPTIES SELECTIE STATEFUL PROTO BRON_ADR,BEST_ADR OBJECT POORT_NUM TCP_VLAG STATEFUL @@ -969,11 +960,11 @@ sh /etc/ipf.rules.script filterregel. Iedere regel moet een actie hebben. De volgende acties zijn mogelijk: - block geeft aan dat het pakket + block geeft aan dat het pakket moet verdwijnen als de parameters van toepassing zijn het het pakket. - pass geeft aan dat het pakket + pass geeft aan dat het pakket doorgelaten moet worden als de parameters van toepassing zijn op het pakket. @@ -981,16 +972,16 @@ sh /etc/ipf.rules.script IN/UIT - Dit deel is verplicht voor iedere filterregel waarin + Een verplicht onderdeel voor iedere filterregel waarin expliciet wordt aangegeven op welke zijde van de in/uit hij van toepassing is. Het volgende sleutelwoord moet in of out zijn, anders is de regel syntactisch onjuist. - in betekent dat de regel van + in betekent dat de regel van toepassing is op inkomende pakketten. - out betekent dat de regel van + out betekent dat de regel van toepassing is op inkomende pakketten. @@ -1002,45 +993,45 @@ sh /etc/ipf.rules.script beschreven staan gebruikt worden. - log geeft aan dat het pakket - naar het ipl logboekbestand geschreven moeten worden - (zoals verderop beschreven staat in de paragraaf + log geeft aan dat het pakket naar het + ipl logboekbestand geschreven moeten + worden (zoals verderop beschreven staat in de paragraaf Loggen) als de regel van toepassing is op het pakket. - quick geeft aan dat als een - regel van toepassing is, dat de laatste regel moet zijn die - wordt gecontroleerd, waardoor er een pad wordt - kortgesloten waardoor de volgende regels voor dat pakket - niet meer gecontroleerd worden. Deze optie is voor de - moderne regels eigenlijk verplicht. + quick geeft aan dat als een regel van + toepassing is, dat de laatste regel moet zijn die wordt + gecontroleerd, waardoor er een pad wordt kortgesloten + waardoor de volgende regels voor dat pakket niet meer + gecontroleerd worden. Deze optie is voor de moderne regels + eigenlijk verplicht. - on geeft de interface aan die - in de parameters meegenomen moet worden. De namen van - interfaces kunnen getoond worden met &man.ifconfig.8;. Als - deze optie wordt gebruikt, kan een regel alleen van - toepassing zijn als het pakket door de aangegeven - interface gaat in de richting die is aangegeven - (in/out). - Ook deze optie is verplicht voor de moderne regels. + on geeft de interface aan die in de + parameters meegenomen moet worden. De namen van interfaces + kunnen getoond worden met &man.ifconfig.8;. Als deze optie + wordt gebruikt, kan een regel alleen van toepassing zijn als + het pakket door de aangegeven interface gaat in de richting + die is aangegeven + (in/out). Ook deze + optie is verplicht voor de moderne regels. Als een pakket wordt gelogd, dan wordt de kop van het - pakket weggeschreven naar het IPL pakketloggende - pseudo–device. Direct na het sleutelwoord - log mogen de volgende opties + pakket weggeschreven naar het ipl + pakketloggende pseudo–device. Direct na het + sleutelwoord log mogen de volgende opties gebruikt worden (in de aangegeven volgorde): - body geeft aan dat de eerste - 128 bytes van de inhoud van het pakket worden opgeslagen na - de kop. + body geeft aan dat de eerste 128 bytes + van de inhoud van het pakket worden opgeslagen na de + kop. - first; als het sleutelwoord - log samen met keep + first; als het sleutelwoord + log samen met keep state wordt gebruikt, wordt het aangeraden om deze optie ook te gebruiken zodat alleen het pakket dat als eerste in de sessie van toepassing was en niet ook alle pakketten die daarna in de sessie volgens - keep state van toepassing + keep state van toepassing zijn. @@ -1060,38 +1051,36 @@ sh /etc/ipf.rules.script PROTO - proto is het - sleutelwoord dat moet worden - aangegeven samen met een van de sleutelwoorden uit de - subopties. De waarde geeft een bepaald protocol aan dat - van toepassing moet zijn. Ook deze optie is verplicht - voor de moderne regels. + proto is het + sleutelwoord dat moet worden aangegeven samen met een van de + sleutelwoorden uit de subopties. De waarde geeft een bepaald + protocol aan dat van toepassing moet zijn. Ook deze optie is + verplicht voor de moderne regels. - tcp/udp, - tcp, udp, - icmp of ieder ander protocol dat in - /etc/protocols staat wordt herkend en - kan gebruikt worden. Het bijzondere protocol sleutelwoord - tcp/udp kan gebruikt worden om zowel - voor TCP als UDP - pakketten van toepassing te laten zijn. Het is toegevoegd - voor het gemak om vrijwel gelijke regels te + tcp/udp, tcp, + udp, icmp of ieder + ander protocol dat in /etc/protocols + staat wordt herkend en kan gebruikt worden. Het bijzondere + protocol sleutelwoord tcp/udp kan gebruikt + worden om zowel voor TCP als + UDP pakketten van toepassing te laten zijn. Het is + toegevoegd voor het gemak om vrijwel gelijke regels te voorkomen. BRON_ADR/BEST_ADR - Het sleutelwoord all is in - feite hetzelfde als from any to any - zonder overige parameters. + Het sleutelwoord all is in feite + hetzelfde als from any to any zonder + overige parameters. from bron to dest; de - sleutelwoorden from en - to worden gebruikt om te testen op + sleutelwoorden from en + to worden gebruikt om te testen op IP adressen. In regels moet zowel een bron als bestemmings IP adres - aangegeven worden. any is een + aangegeven worden. any is een bijzonder sleutelwoord dat van toepassing is voor ieder IP adres als in from any to any of from 0.0.0.0/0 to any @@ -1106,7 +1095,7 @@ sh /etc/ipf.rules.script punten gescheiden. Het is vaak lastig om te komen tot een reeks adressen - in de vorm adres/masker. De volgende link kan daar + in de vorm adres/masker. De volgende webpagina kan daar wellicht bij helpen: . @@ -1116,28 +1105,25 @@ sh /etc/ipf.rules.script Als in een regel op een poort wordt gecontroleerd, voor bron- of bestemmingspoort of beiden, dan is dat alleen van - toepassing op TCP en - UDP pakketten. Bij het maken van - poortvergelijkingen kunnen zowel de dienstnamen uit - /etc/services als een uit een - natuurlijk getal bestaand poortnummer ingesteld worden. - Als de poort onderdeel is van het - from object dan wordt het - vergeleken met het poortnummer van de bron en als het - onderdeel is van het to object, dan - wordt het vergeleken met het poortnummer van de - bestemming. Het gebruik van het to - object is in de moderne regels verplicht en neemt de vorm - aan van from any to any port = - 80. + toepassing op TCP en UDP pakketten. Bij + het maken van poortvergelijkingen kunnen zowel de dienstnamen + uit /etc/services als een uit een + natuurlijk getal bestaand poortnummer ingesteld worden. Als + de poort onderdeel is van het from object + dan wordt het vergeleken met het poortnummer van de bron en + als het onderdeel is van het to object, + dan wordt het vergeleken met het poortnummer van de + bestemming. Het gebruik van het to object + is in de moderne regels verplicht en neemt de vorm aan van + from any to any port = 80. Poortvergelijkingen kunnen op verschillende manieren ingesteld worden met een aantal verschillende operators. Er kunnen ook reeksen van poorten ingesteld worden. - port = of een van de volgende - operators: !=, <, >, <, >=, eq, ne, - lt, gt, le, ge. + port = of een van de volgende + operators: !=, <, >, <, >=, eq, ne, + lt, gt, le, ge. Reeksen van poorten worden met de volgende optie aangegeven: port <> of @@ -1158,18 +1144,17 @@ sh /etc/ipf.rules.script de mogelijke vlaggen die bekeken kunnen worden in de kop van een TCP pakket. - In de moderne regels wordt de optie flags - S gebruikt om het verzoek tot het starten van + In de moderne regels wordt de optie flags + S gebruikt om het verzoek tot het starten van een TCP sessie. STATEFUL - keep state geeft aan dat in een - regel met pass voor alle pakketten - die van toepassing zijn stateful gefilterd moet - worden. + keep state geeft aan dat in een regel + met pass voor alle pakketten die van + toepassing zijn stateful gefilterd moet worden. Deze optie is voor moderne regels verplicht. @@ -1190,15 +1175,14 @@ sh /etc/ipf.rules.script pakketten die niet passen in de sessie, worden automatisch geblokkeerd. - keep state staat ook ICMP - pakketten toe die gerelateerd zijn aan een - TCP of UDP sessie. Dus als er een ICMP - type 3 code 4 komt in antwoord op websurfen, dat wordt - toegestaan van binnen naar buiten door een - keep state regel, dan wordt dat - toegelaten. Pakketten waarvan IPF zeker is dat ze onderdeel - zijn van de sessie worden toegelaten, zelfs als ze van een - ander protocol zijn. + keep state staat ook ICMP pakketten toe + die gerelateerd zijn aan een TCP of UDP + sessie. Dus als er een ICMP type 3 code 4 komt in antwoord op + websurfen, dat wordt toegestaan van binnen naar buiten door een + keep state regel, dan wordt dat toegelaten. + Pakketten waarvan IPF zeker is dat ze onderdeel zijn van de + sessie worden toegelaten, zelfs als ze van een ander protocol + zijn. Wat er gebeurt: pakketten die naar buiten gaan op de interface die met internet is verbonden worden eerst @@ -1246,8 +1230,9 @@ sh /etc/ipf.rules.script Alle &unix; systemen en dus ook &os; zijn zo ontworpen dat ze voor interne communicatie de interface lo0 en IP adres - 127.0.0.1 gebruiken. De firewall moet dit interne verkeer - gewoon doorgang laten vinden. + 127.0.0.1 gebruiken. De + firewall moet dit interne verkeer gewoon doorgang laten + vinden. Voor de interface die is verbonden met het publieke internet worden regels gemaakt waarmee sessies naar het @@ -1257,21 +1242,20 @@ sh /etc/ipf.rules.script netwerkkaart die is verbonden met een xDSL of kabelmodem. - In gevallen dat er meer dan één - netwerkkaart is aangesloten op het private netwerk achter de - firewall, dan moeten er op de firewall regels zijn om het - verkeer tussen die interfaces vrije doorgang te geven. + In gevallen dat er één of meer netwerkkaarten + zijn aangesloten op het LAN achter de firewall, dan moeten er + op de firewall regels zijn om het verkeer tussen die interfaces + vrije doorgang te geven. De regels worden opgedeeld in drie onderdelen: alle interfaces met vrije doorgang, uitgaand op publieke interfaces en inkomend op publieke interfaces. - De volgorde van de regels in iedere sectie voor publieke - interfaces moet zo zijn dat de regels die het meest gebruikt - worden vóór de regels die minder vaak gebruikt - worden staan. De laatste regel van een onderdeel geeft aan - dat al het overige verkeer op die interface in die richting - geblokkeerd en gelogd moet worden. + In iedere sectie moeten zo staan dat de regels die het + meest gebruikt worden vóór de regels die minder + vaak gebruikt worden staan. De laatste regel van een onderdeel + geeft aan dat al het overige verkeer op die interface in die + richting geblokkeerd en gelogd moet worden. In het onderdeel Uitgaand staan alleen regels met pass die parameters bevatten om @@ -1309,16 +1293,16 @@ sh /etc/ipf.rules.script proberen. We raden aan om als er logmeldingen komen van een regel - met log first het commando + met log first het commando ipfstat -hio uit te voeren om te bekijken hoe vaak de regel van toepassing is geweest om te kijken of de firewall overspoeld wordt, m.a.w. aangevallen wordt. Als er pakketten gelogd worden waarvan de beheerder het - poortnummer niet herkent, dan is op - de functie van dat poortnummer na te zoeken. + poortnummer niet herkent, dan is de functie van dat poortnummer + na te zoeken in /etc/services of op . Op de volgende link worden poortnummers van Trojans beschreven: - IPNAT + IP<acronym>NAT</acronym> NAT regels worden geladen met ipnat. De NAT regels @@ -1640,7 +1624,7 @@ block in log first quick on dc0 all - IPNAT Regels + IP<acronym>NAT</acronym> Regels NAT regels zijn erg flexibel en er kunnen veel dingen mee gedaan worden om behoeften van @@ -1704,20 +1688,22 @@ block in log first quick on dc0 all - IPNAT Inschakelen + IP<acronym>NAT</acronym> Inschakelen - Voor IPNAT zijn de onderstaande instellingen in - /etc/rc.conf beschikbaar. + Voor IPNAT zijn de onderstaande + instellingen in /etc/rc.conf + beschikbaar. Om verkeer tussen interfaces te kunnen routeren: gateway_enable="YES" - Om IPNAT automatisch te starten: + Om IPNAT automatisch te starten: ipnat_enable="YES" - Om aan te geven waar de IPNAT regels staan: + Om aan te geven waar de IPNAT regels + staan: ipnat_rules="/etc/ipnat.rules" @@ -1728,7 +1714,7 @@ block in log first quick on dc0 all Voor netwerken met grote aantallen PC's of netwerken met meerdere LAN's kan het een probleem worden om al die private IP adressen met één - enkel publiek IP adres te vervangen + enkel publiek IP adres te vervangen, omdat vaak dezelfde poortnummers gebruikt worden. Er zijn twee manieren om dit probleem op te lossen. @@ -1738,19 +1724,20 @@ block in log first quick on dc0 all map dc0 192.168.1.0/24 –> 0.32 Met de bovenstaande regel blijft de bronpoort - ongewijzigd als het pakket door IPNAT gaat. Door gebruik - te maken van het sleutelwoord - portmap kan IPNAT ingesteld worden - om alleen bronpoorten in de aangegeven reeks te gebruiken. - Zo stelt de onderstaande regel in dat IPNAT de bronpoort - aanpast naar een poortnummer dat in de aangegeven reeks - valt: + ongewijzigd als het pakket door IPNAT + gaat. Door gebruik te maken van het sleutelwoord + portmap kan IPNAT + ingesteld worden om alleen bronpoorten in de aangegeven reeks + te gebruiken. Zo stelt de onderstaande regel in dat + IPNAT de bronpoort aanpast naar een + poortnummer dat in de aangegeven reeks valt: map dc0 192.168.1.0/24 –> 0.32 portmap tcp/udp 20000:60000 Het kan nog eenvoudiger door gebruik te maken van het - sleutelwoord auto zodat IPNAT zelf - bepaalt welke poorten gebruikt kunnen worden: + sleutelwoord auto zodat + IPNAT zelf bepaalt welke poorten gebruikt + kunnen worden: map dc0 192.168.1.0/24 –> 0.32 portmap tcp/udp auto @@ -1786,14 +1773,14 @@ block in log first quick on dc0 all op een LAN te draaien. Het uitgaande verkeer van die servers kan dan met NAT afgehandeld worden, maar er moet ook ingesteld worden dat inkomend - verkeer bij de juiste computer terecht komt. IPNAT gebruikt - daarvoor de opties in NAT waarmee verkeer - omgeleid kan worden. Als bijvoorbeeld een webserver op - 10.0.10.25 draait en het - publieke IP adres zou 20.20.20.5 zijn, dan zou dit - mogelijk zijn met één van de volgende twee - regels: + verkeer bij de juiste computer terecht komt. + IPNAT gebruikt daarvoor de opties in + NAT waarmee verkeer omgeleid kan worden. + Als bijvoorbeeld een webserver op 10.0.10.25 draait en het publieke + IP adres zou 20.20.20.5 zijn, dan zou dit mogelijk + zijn met één van de volgende twee regels: map dc0 20.20.20.5/32 port 80 –> 10.0.10.25 port 80 map dc0 0/32 port 80 –> 10.0.10.25 port 80 @@ -1824,18 +1811,18 @@ map dc0 0/32 port 80 –> 10.0.10.25 port 80 url="http://www.slacksite.com/other/ftp.html">. - IPNAT Regels + IP<acronym>NAT</acronym> Regels - IPNAT heeft een een speciale FTP proxy ingebouwd die - kan worden ingeschakeld met een NAT - map regel. Die kan al het uitgaande - verkeer monitoren wat betreft opstartverzoeken voor sessies - voor actieve en passieve FTP en dynamisch tijdelijke - filterregels maken die alleen het poortnummer dat echt in - gebruik is voor het datakanaal doorlaten. Hiermee wordt - een veiligheidsrisico dat normaal gepaard gaat met FTP, - namelijk het toestaan van grote reeksen hoge poortnummers, - weggenomen. + IPNAT heeft een een speciale FTP proxy + ingebouwd die kan worden ingeschakeld met een + NAT map regel. Die kan + al het uitgaande verkeer monitoren wat betreft + opstartverzoeken voor sessies voor actieve en passieve FTP en + dynamisch tijdelijke filterregels maken die alleen het + poortnummer dat echt in gebruik is voor het datakanaal + doorlaten. Hiermee wordt een veiligheidsrisico dat normaal + gepaard gaat met FTP, namelijk het toestaan van grote reeksen + hoge poortnummers, weggenomen. De volgende regel handelt al het FTP verkeer van het LAN af: @@ -1869,7 +1856,7 @@ map dc0 0/32 port 80 –> 10.0.10.25 port 80 - IPNAT FTP Filterregels + IP<acronym>NAT</acronym> FTP Filterregels Als de NAT FTP proxy wordt gebruikt is er maar één filterregel voor FTP @@ -1936,15 +1923,15 @@ pass in quick on rl0 proto tcp from any to any port = 20 flags S keep statedivert (omleiden) waarmee NAT gebruikt kan worden en de speciale - gevorderde mogelijkheden voor bandbreedte management dummynet, + gevorderde mogelijkheden voor bandbreedte management DUMMYNET, de bridge mogelijkheden en de ipstealth mogelijkheden. IPFW Inschakelen IPFW zit bij de basisinstallatie van &os; als een losse - in run-time laadbare module. IPFW laadt dynamisch als kernel - module als in rc.conf + in run-time laadbare module. Het systeem laadt de kernel + module dynamisch als in rc.conf firewall_enable="YES" staat. IPFW hoeft niet in de &os; kernel gecompileerd te worden, tenzij het nodig is dat NAT beschikbaar is. @@ -2063,7 +2050,7 @@ options IPV6FIREWALL_DEFAULT_TO_ACCEPT de wijzigingen zijn gemaakt als een machine draait te laden bestaat die probleem niet. - Met IPFW kunnen de actieve regels van + Met ipfw kunnen de actieve regels van de firewall op het scherm getoond worden. De verantwoordingsmogelijkeden van &man.ipfw.8; maken dynamisch tellers aan voor iedere regel en houden die bij @@ -2261,7 +2248,7 @@ options IPV6FIREWALL_DEFAULT_TO_ACCEPT Er wordt gelogd als een pakket zeker past bij een regel, maar voordat de actie (bijvoorbeeld accept of - deny) op een pakket wordt + deny) op een pakket wordt toegepast. Uiteindelijk bepaalt de gebruiker zelf voor welke regels loggen wordt ingeschakeld. @@ -2287,25 +2274,24 @@ options IPV6FIREWALL_DEFAULT_TO_ACCEPT from bron to best - De sleutelwoorden from en - to worden gebruikt om te bekijken + De sleutelwoorden from en + to worden gebruikt om te bekijken of een regel van toepassing is op IP adressen. Een regel moet zowel bron- als - bestemmingsadressen bevatten. any - is een bijzonder sleutelwoord dat van toepassing is op - alle IP adressen. - me is een bijzonder sleutelwoord - dat van toepassing is op alle IP - adressen die ingesteld zijn op interfaces van een &os; - systeem. Zo kan dit onderdeel dus bijvoorbeeld de - volgende vormen aannemen: - from me to any, - from any to me, - from 0.0.0.0/0 to any, - from any to 0.0.0.0/0, - from 0.0.0.0 to any, - from any to 0.0.0.0, - from me to 0.0.0.0. + bestemmingsadressen bevatten. any is + een bijzonder sleutelwoord dat van toepassing is op alle + IP adressen. me is + een bijzonder sleutelwoord dat van toepassing is op alle + IP adressen die ingesteld zijn op + interfaces van een &os; systeem. Zo kan dit onderdeel dus + bijvoorbeeld de volgende vormen aannemen: + from me to any, + from any to me, + from 0.0.0.0/0 to any, + from any to 0.0.0.0/0, + from 0.0.0.0 to any, + from any to 0.0.0.0, + from me to 0.0.0.0. IP adressen mogen ingevoerd worden in de vorm numeriek, door punten gescheiden adres/maskerlengte of als een enkelvoudig @@ -2318,7 +2304,7 @@ options IPV6FIREWALL_DEFAULT_TO_ACCEPT poortnummer - Wordt gebruikt voor protocollen die poortnummers + Wordt gebruikt voor protocollen die poortnummers ondersteunen (als TCP en UDP). Het gebruik van een poortnummer is verplicht. Er mogen ook dienstnamen uit /etc/services @@ -2328,13 +2314,13 @@ options IPV6FIREWALL_DEFAULT_TO_ACCEPT Is op respectievelijk inkomende of uitgaande pakketten van toepassing. De sleutelwoorden - in of out + in of out zijn verplicht in een regel. via IF Deze parameter geeft aan op welke interface de regel - van toepassing is, waarbij IF de + van toepassing is, waarbij IF de exacte naam van de bedoelde interface is. setup @@ -2534,8 +2520,9 @@ ipfw –q add 00611 allow udp from any to 192.0.2.11 53 out via tun0 keep&nd Alle &unix; systemen en dus ook &os; zijn zo ontworpen dat ze voor interne communicatie de interface lo0 en IP adres - 127.0.0.1 gebruiken. De firewall moet dit interne verkeer - gewoon doorgang laten vinden. + 127.0.0.1 gebruiken. De + firewall moet dit interne verkeer gewoon doorgang laten + vinden. Voor de interface die is verbonden met het publieke internet worden regels gemaakt waarmee sessies naar het @@ -2594,12 +2581,12 @@ ipfw –q add 00611 allow udp from any to 192.0.2.11 53 out via tun0 keep&nd heeft bereikt. Zo kan een aanvaller geen informatie verzamelen over een systeem: hoe minder informatie er over een systeem beschikbaar is, hoe veiliger het is. Als er - pakketten gelogd worden waarvan de beheerder het - poortnummer niet herkent, dan is op - de functie van dat poortnummer na te zoeken. Op de - volgende link worden poortnummers van Trojans beschreven: - /etc/services of op . + Op de volgende link worden poortnummers van Trojans + beschreven: . @@ -2896,31 +2883,29 @@ natd_flags="–dynamic –m" # –m = behoud poortnummers Wat betreft binnenkomende pakketten wordt alles dat onderdeel is van een bestaande sessie automatisch afgehandeld door de - check–state regel en de juist - geplaatste divert natd regels. Nu - hoeven alleen de foute pakketten nog geweigerd te worden - en moet ondersteuning voor inkomende diensten ingesteld - worden. In dit geval draait er een Apache server op de - gateway machine die vanaf internet bereikbaar moet zijn. - Het nieuwe inkomende pakket past bij regel 100 en het + check–state regel en de juist + geplaatste divert natd regels. Nu hoeven + alleen de foute pakketten nog geweigerd te worden en moet + ondersteuning voor inkomende diensten ingesteld worden. In + dit geval draait er een Apache server op de gateway machine + die vanaf internet bereikbaar moet zijn. Het nieuwe + inkomende pakket past bij regel 100 en het IP adres wordt aangepast aan het interne IP adres van de gateway machine. Dat pakket wordt dan gecontroleerd op alle ongewenste eigenschappen en komt uiteindelijk aan bij regel 425 die van toepassing blijkt te zijn. In dat geval kunnen er twee - dingen gebeuren: limit is een - uitbreiding van check–state. - De pakketregel wordt in de dynamische keep–state - tabel gezet, maar nu wordt het aantal nieuwe sessies dat - van het bron IP adres komt gelimiteerd - tot twee. Dit is een bescherming tegen DoS aanvallen op - de dienst die op dat poortnummer wordt aangeboden. De - actie is allow, dus het pakket wordt - tot het LAN toegelaten. Voor het antwoord herkent de - check–state regel dat het - pakket bij een bestaande sessie hoort, stuurt het naar - regel 500 voor NAT en stuurt het via - de uitgaande interface weg. + dingen gebeuren: de pakketregel wordt in de dynamische + keep–state tabel gezet, maar nu wordt het aantal nieuwe + sessies dat van het bron IP adres komt + gelimiteerd tot twee. Dit is een bescherming tegen DoS + aanvallen op de dienst die op dat poortnummer wordt + aangeboden. De actie is allow, dus het + pakket wordt tot het LAN toegelaten. Voor het antwoord + herkent de check–state regel dat het + pakket bij een bestaande sessie hoort, stuurt het naar regel + 500 voor NAT en stuurt het via de + uitgaande interface weg. Voorbeeld Set Regels #1: