Fina er en enkel, robust shell script der indlæser iptables regler fra et regler mappe. Som sådan er det ikke optaget af at skabe regler for dig, det bare hjælper du lægger dem på en robust måde.
Hvis noget ikke lykkes, vil Fina indlæse din gamle regelsæt. Den Fina-projektet giver også rigere kommentere i reglerne filer end iptables. Alligevel kan den håndtere noget, iptables-genoprette kan.
Fina er resultatet af at arbejde med forskellige forsøg på indpakning iptables
(Snarere: Netfilter) med scripts og anden infrastruktur med henblik på at
gøre daglig administration af reglerne lettere.
Grundet mit job, har jeg altid brug for et script, der nemt kan automatiseres
eksternt. Uanset hvor stor en script er, hvis det tager aldre at opdatere
fjorten webservere i en klynge, er det nytteløst for mig.
Et andet grundlæggende behov for en sådan script er, at det skal være sikker ved
standard - uden at komme ind i admins alt for meget. Det vil sige,
den kun skaber regler, admin udtrykkeligt konfigurerer. Selvfølgelig er en
fornuftig sæt konfiguration / eksempler / leveres.
Den tredje hårde krav er, at scriptet skal være i stand til at gøre
alt Netfilter kan. Det betyder, at uanset hvor kompliceret din
NAT og PREROUTING magiske behov er, scriptet skal kunne håndtere
det. En bivirkning af dette er, at det skal håndtere enorme filtersæt på
mindst lige så let som Netfilter selv.
Den fjerde betingelse er en smule kompliceret. Nogle gange kan det være
nødvendigt at ændre variabler i / proc efter moduler er blevet indlæst
men før regler refererer til disse moduler er tilføjet. Også, nogle gange
kan det være nødvendigt, at gøre ting, efter at pakkefilter har været
indlæst. Med henblik herpå / etc / fina kan indeholde to scripts kaldet
"Pre-up.sh" og "post-up.sh". Hvis der findes disse filer, og er eksekverbare,
De udføres på de tilsvarende tidspunkter.
Endelig bør scriptet være let, at have så få eksterne
afhængigheder som muligt. Desuden bør selve scriptet være så simpelt
og små som muligt. Dette skyldes, at simple ting har færre måder i
som de kan svigte.
Design
På grund af de fire hårde ovennævnte krav, scriptet ikke
faktisk "kender" alt, meget om Netfilter. Denne måde er det nemt
inkorporerer alt Netfilter kan gøre - uden at have en bevægende
mål for specs til at overholde.
Dybest set, Fina samler en iptables-genoprette kompatibel regel dump fra
snippets konfigurerer / redigeret af admin på maskinen. Det forsøger derefter at
indlæse hele sættet. Hvis dette mislykkes på nogen måde, den gamle regel sæt er
genoprettet.
Naturligvis betyder det, at Fina gør næsten ingenting til admin
når det kommer til / genererer / regler på maskinen. Dette er en bevidst
beslutning. For én, hvem bruger / konfigurerer en pakke filter bør være
bekendt med alle konsekvenserne af sine handlinger. Dette omfatter for eksempel
vide hvorfor det er dårligt at droppe alle ICMP trafik.
En anden grund er, at give eksempler eller endda opskrifter for packet
filtre er noget / dokumentation / skal gøre. Det er ikke en god idé at
har en sort boks gøre "simpelthen det rigtige". Normalt er der en
ikke-triviel mængde brugere, for hvilke det rigtige ikke kan være let
gættet.
Sådan virker det
Hvis fina startes via init-script, et kritisk ekstra skridt er
taget: scriptet forsøger at indlæse /etc/fina/minimal.rules med
iptables-gendannelse. Dette er praktisk, hvis du har opdateret kernen og
glemte dele af iptables moduler - din dejlig stor config file
sandsynligvis ikke vil indlæse og din maskine er enten sårbar eller
utilgængelige for dig. Normalt, vil du ønsker at have en meget simpel regel sæt
her (uden conntracking), der giver adgang fra din ledelse
IP'er. Du kan indlæse denne regelsæt ved hjælp af den -m kommandolinjen switch. Dette kan
være praktisk i akutte situationer (tænk på det som en panik-knap).
Fina forventer en konfigurationsfil, /etc/fina/fina.cfg. Dette er
faktisk blot en shell script, der kommer fra de vigtigste Fina
script. Den indeholder (som standard) en variabel, der angiver en
yderligere placering, som af reglen mappe. Første, fina tjekker, om
/etc/fina/pre-up.sh eksisterer og er eksekverbar og i så fald kører det. Dette er
stedet at indlæse moduler eller ændre ting i proc, hvis behovet opstår.
Den anden placering er vigtigere. Den angiver den mappe, som
indeholder reglen snippets som Fina skulle samle. Normalt er dette
placeret på /etc/fina/rules.d/. Fina fortsætter derefter med at indlæse alle filer fra
sagde Vejviser (og dens undermapper), som ender i .rules. For at
have pålidelig orden ved samling, bliver filerne normalt foranstillet
to- eller trecifret tal.
Den forventede format filerne er uvedkommende Fina. Fina selv
vil kun samle dem i rækkefølge i én fil. Efter dette, vil det gøre
en sikkerhedskopi af den nuværende regel sæt (ved hjælp iptables-save), og sætte det i en
placering er angivet i /etc/fina/fina.cfg. Derefter vil Fina forsøge at indlæse
den genererede fil ved hjælp af iptables-gendannelse. Hvis dette mislykkes for uanset
Derfor vil den forsøge at indlæse gamle regelsæt og udviser en passende
fejlmeddelelse plus hvad budskab, den fik fra den svigtende
iptables-genoprette kommando.
Endelig vil fina udføre /etc/fina/post-up.sh hvis det findes og er
eksekverbar.
Andre funktioner
Ud over at generere og derefter direkte indlæsning et regelsæt, kan Fina
også bare dumpe filen ville indlæse til stdout ("foregive tilstand", som
er standard). Dette er nyttigt, hvis du har mistanke om en fejl i din Netfilter
snippets og ønsker at tage et kig på det sæt, før du prøver at indlæse den.
Fina tilføjer et væld af kommentarer til den genererede fil til at gøre debugging
nemmere. Brug af Finas foregive tilstand, kan du også sikre, at Fina kan læse
alle filer det skal.
Også denne måde kan du oprette diffs mellem dine aktuelt kørende regler
og regler Fina ville generere. På denne måde kan du nemt få øje hvis
ændringer i reglerne snippets har de forventede resultater.
Husk dog, at i denne tilstand, Fina har ingen måde at fortælle, hvis
hvad det genererer faktisk kan indlæses med iptables-gendannelse.
Desværre er kernen interfacet ikke et middel til at se, om en
regelsæt kunne indlæses uden faktisk at aktivere det (hvis jeg tager fejl
her, ville jeg være glad for at høre om sådan funktionalitet).
For at hjælpe med fejlfinding, alle linjer genereret af Fina selv er
præfikset "# Fina #", så du kan fortælle hvilke linjer er fra Fina og
hvilke kommer fra dine filer
Hvad er nyt i denne udgivelse:.
- Et show-stopper fejl i fejlhåndtering af de generiske init scripts blev fastsat.
Hvad er nyt i version 0.2.2:
- En mindre logik rettelse til pre / post-up scripts blev lavet.
- Dokumentationen blev forbedret en smule.
Hvad er nyt i version 0.2.0:
- Fina nu er i stand til at håndtere både IPv4 og IPv6 regelsæt.
Krav :
- GNU bash (& gt; = v2)
- GNU finde (noget nyere)
- GNU grep (ditto)
- GNU sed (ditto)
- iptables (hvad fungerer med din kerne)
Kommentarer ikke fundet