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.
security
is used for Mandatory Access Control networking rules, implemented by Linux Security Modules such as SELinux.
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;
INPUT
: to modify packets destined for local sockets;
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;
NFLOG
: log a message via the loaded logging backend (usually nfnetlink_log), which can be better adapted and more efficient than syslogd
for handling large numbers of messages; note that this action, like LOG, also returns processing to the next rule in the calling chain;
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 chain
option creates a new chain. The -X chain
deletes an empty and unused chain. The -A chain rule
adds a rule at the end of the given chain. The -I chain rule_num rule
option inserts a rule before the rule number rule_num. The -D chain rule_num
(or -D chain rule
) option deletes a rule in a chain; the first syntax identifies the rule to be deleted by its number, while the latter identifies it by its contents. The -F chain
option flushes a chain (deletes all its rules); if no chain is mentioned, all the rules in the table are deleted. The -L chain
option lists the rules in the chain; if no chain is mentioned, all chains are listed. Finally, the -P chain action
option defines the default action, or “policy”, for a given chain; note that only standard chains can have such a 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