fwbuilder er utvilsomt blant de beste av dem.
iptables og ip6tables. Forskjellen mellom disse er at den første betjener IPv4-nettverket, mens den siste betjener IPv6. Siden begge nettverksprotokollene sannsynligvis vil fortsette å eksistere i årevis, vil begge verktøyene måtte brukes i parallell.
filter for filterregler (aksepter, nekt, ignorer en pakke);
nat for oversetting av kilde- eller destinasjonsadresser og porter på pakker;
mangle for andre endringer av IP-pakker (inkludert felt og opsjoner for ToS — Type of Service);
raw tillater andre manuelle modifikasjoner av pakker før de når forbindelsessporingssystemet.
filter tabellen har tre standardkjeder:
INPUT: gjelder pakker der destinasjon er brannmuren selv;
OUTPUT: gjelder pakker som er sendt ut fra brannmuren;
FORWARD: gjelder pakker i transitt gjennom brannmuren (som verken er kilden eller destinasjon deres).
nat har også tre standardkjeder:
PREROUTING: å endre pakker så snart de ankommer;
POSTROUTING: å modifisere pakker når de er klare til utsendelse;
OUTPUT: å modifisere pakker som genereres av selve brannmuren.
-j-alternativet i kommandoene) til det angitte tiltak for å fortsette prosessen. De vanligste handlingene er standardisert, med foreliggende øremerkede handlinger. Å ta én av disse standardhandlingene forstyrrer prosessen for kjeden, fordi pakkens skjebne allerede er fastsatt (bortsett fra unntaket som er nevnt nedenfor):
ACCEPT: tillater pakken å fortsette på sin vei;
REJECT: avviser pakken med en ICMP-feilpakke (--reject-with type-valget til iptables tillater å velge typen feil);
DROP: slette (ignorere) pakken;
LOG: logg (via syslogd) en melding med en beskrivelse av pakken. Merk at denne handlingen ikke avbryter prosessen, og kjøringen av kjeden fortsetter med den neste regelen, som er grunnen til at logging av avslåtte pakker krever både en LOG-regel og en REJECT/DROP-regel;
ULOG: logger et budskap via ulogd, som kan tilpasses bedre og mer effektivt enn syslogd for håndtering av et stort antall meldinger. Merk at denne handlingen, slik som LOG, også returnerer prosessen til den neste regelen i påkallingskjeden;
RETURN: avbryter prosessen til den gjeldende kjeden, og går tilbake til den anropende kjeden; i tilfelle den aktuelle kjeden er standard, er det ingen påkallingskjede, slik at standardhandlingen (definert med -P-valget til iptables) kjøres i stedet;
SNAT (bare i nat-tabellen): bruk kilde-NAT (ekstra argumenter beskriver nøyaktig de endringene som skal brukes);
DNAT (bare i nat-tabellen): bruk endestasjon-NAT (ekstra argumenter beskriver nøyaktig de endringene som skal brukes);
MASQUERADE (bare i nat-tabellen): bruk maske (masquerading) (et spesialtilfelle av Source NAT (kilde NAT));
REDIRECT (bare i nat-tabellen): å omdirigere en pakke til en gitt port i brannmuren selv. Denne kan brukes til å sette opp en gjennomsiktig nettmellomtjener som fungerer uten oppsett på klientsiden, siden klienten tror den kobles til mottakeren, mens kommunikasjonen faktisk gå gjennom mellomtjeneren.
mangle-tabellen, er utenfor formålet med teksten her. iptables(8) og ip6tables(8) har en omfattende liste.
iptables og ip6tables kan håndtere tabeller, kjeder og regler. Alternativet deres -t tabell indikerer hvilken tabell en kan operere fra (som standard filter).
-N kjede-valget lager en ny kjede. -X kjede sletter en tom eller ubrukt kjede. -A kjede regel legger til en regel ved slutten av en gitt kjede. -I kjede regel_nummer regel-valget setter inn en regel før regelnummeret regel_nummer. -D kjede regel_nummer (eller -D kjede regel)-valget sletter en regel i en kjede; den første syntaksen identifiserer regelen som skal slettet ut fra nummeret den har. -F kjede-alternativet tømmer en kjede (sletter alle dens regler); hvis ingen kjede er nevnt, er alle reglene i tabellen slettet. -L kjede-valget lister reglene i kjeden. Til slutt, -P kjede handling-valget definerer standardhandlingen, eller «policy», for en gitt kjede; Merk at bare standardkjeder kan ha en slik «policy».
forhold -j handling handlings_alternativer. Hvis flere betingelser er beskrevet i den samme regelen, da er kriteriet forbindelsen mellom betingelsene (logisk og), som er minst like restriktive som hver individuelle betingelse.
-p protokoll samsvarer med protokollfeltet i IP-pakken. De vanligste verdiene er tcp, udp, icmp, og icmpv6. Å forhåndsinnstille betingelsen med et utropstegn som benekter betingelsen, som deretter blir en oppgave for «noen pakker med en annen protokoll enn den spesifiserte». Denne negasjonsmekanismen er ikke spesiell for -p-alternativet, og det kan brukes på alle andre forhold også.
-s adresse eller -s nettverk/maske-betingelsen samsvarer med pakkens kildeadresse. Tilsvarende, -d adresse eller -d nettverk/maske samsvarer med måladressen.
-i grensesnitt velger pakker som kommer inn fra et bestemt nettverksgrensesnitt. -o grensesnitt velger pakker som går ut via et spesifikt grensesnitt.
-p tcp-betingelsen kompletteres med betingelser i TCP-portene, med klausuler som--source-port port og --destination-port port.
--state tilstand (status) samsvarer med tilstanden til en pakke i en forbindelse (dette krever kjernemodulen ipt_conntrack for koblingssporing). NEW-tilstanden beskriver en pakke som starter en ny forbindelse; ESTABLISHED samsvarer med pakker som tilhører en allerede eksisterende kobling, og RELATED samsvarer med pakker som initierer en ny tilkobling knyttet til en eksisterende (som er nyttig for ftp-data-forbindelsene i FTP-protokollens «aktivmodus»).
LOG-handlingen har for eksempel de følgende valgene:
--log-level, med standardverdi warning, indikerer alvorlighetsgraden syslog;
--log-prefix tillater å spesifisere en tekst-forstavelse for å skille mellom loggede meldinger;
--log-tcp-sequence, --log-tcp-options og --log-ip-options indikerer ekstra data som skal integreres i meldingen: henholdsvis TCP-sekvensnummer, TCP-alternativer, og IP-alternativer.
DNAT-handlingen gir --to-destination adresse:port valget for å indikere den nye destinasjonens IP-adresse og/eller port. Tilsvarende, SNAT gir --to-source adresse:port for å indikere den nye kildens IP-adresse og/eller port.
REDIRECT-handlingen (bare hvis NAT er tilgjengelig) gir --to-ports port(er) valget for å angi porten, eller portområdet, dit pakkene skal omdirigeres.
iptables/ip6tables. Å skrive disse kommandoene manuelt kan være kjedelig, så anropene lagres vanligvis i et skript slik at det samme oppsettet blir satt opp automatisk hver gang maskinen starter. Dette skriptet kan skrives for hånd, men det kan også være interessant å forberede det med et høynivå verktøy som fwbuilder.
#apt install fwbuilder
fwbuilder oversette reglene ifølge de adressene som er tildelt stedene.
fwbuilder kan deretter generere et skript som setter opp brannmuren etter de regler som er angitt. Dens modulære arkitektur gir det muligheten til å generere skript rettet mot ulike systemer: iptables for Linux, ipf for FreeBSD, og pf for OpenBSD.
up-direktiv av /etc/network/interfaces-fil. I det følgende eksemplet er skriptet lagret under /usr/local/etc/arrakis.fw.
Eksempel 14.1. interfaces-fil (grensesnittsfil) som påkaller et brannmursskript
auto eth0
iface eth0 inet static
address 192.168.0.1
network 192.168.0.0
netmask 255.255.255.0
broadcast 192.168.0.255
up /usr/local/etc/arrakis.fw