Det grunnleggende om iptables gjennom øynene til en baby i Debian. Et minimalt sett med Iptables-regler for typiske oppgaver

nivå 80 utvikler 28. september 2010 kl. 19:47

Det grunnleggende om iptables gjennom øynene til en baby i Debian

  • Trelastrom *

Hva vil bli diskutert

Alt er veldig enkelt, og forklarer nok en gang på forumet til nykommere i Linux-verdenen at slik jeg forsto det på Internett, kan du ikke finne en artikkel satt sammen som forklarer ikke bare iptables-innstillingene, men også noen grunnleggende nettverk.
Så for din oppmerksomhet presenterer jeg en liten utflukt om å sette opp en brannmur i Linux. Vi vil bare fordype oss i å sette opp netfilter / iptables, vi vil utvilsomt også berøre resten av de brukte spørsmålene, fordi vi ikke har nok komplekse svar på spørsmålene våre ... Og jeg vil prøve å forklare alt her så tydelig som mulig .

Hvordan det ser ut

Vi vil vurdere en typisk planløsning for kontorer og leiligheter, ja, leiligheter! De færreste har sin egen lille server hjemme under bordet, men det meste av Internett hjemme distribueres gjennom en ruter og de fleste er også flashet med Linux.
Dette er et typisk lite kontoroppsett. Når 1 datamaskin (server) er koblet til Internett, og resten er koblet til Internett via denne serveren.

La oss gå, litt etter litt...

Og så hva har vi:
  • server med 2 nettverkskort og Debian Lenny installert på den
  • standard i Debian Lenny-brannmuren - netfilter / iptables
  • et lokalt nettverk av N datamaskiner, alle er koblet til via en svitsj, inkludert en server
hva er NAT
Først må vi forstå at vi vil konfigurere den mest vanlige NAT (Network Address Translation). For de som er tørste, vil jeg på slutten også nevne proxy-serveren som bruker blekksprut som eksempel. Vi skal som sagt tygge på nesten alt.
Hva er NAT? Faktisk er alt enkelt, alle datamaskiner har fysiske (MAC) og nettverksadresser (IP). Vi er for tiden interessert i IP-adresser. IP-adressen innenfor samme nettverk må være unik! Og med dagens IPv4-standard kan bare 4 294 967 296 (2 32) være unike, noe som ikke er mye, og de er praktisk talt over. men ikke bekymre deg, IPv6 er i ferd med å bli utbredt i bruk, og det er mange adresser!
Men her kan du legge merke til at det er mye flere datamaskiner enn antallet som tillater IPv4, eller du kan si at huset til en venn har samme adresse som ditt! Og det er her vi snakker om NAT - det lar deg koble datanettverk til hverandre ved å bruke en enkelt, din egen IP-adresse, handlingene til brannmuren kalles SNAT (Source NAT eller substitusjon av kildeadressen). De. i 99 % av tilfellene går hele kontoret ditt online under 1 IP-adresse, mens inne på kontoret har alle sin egen. Du kan lese om klasser av IP-adresser på Internett.

Nå som vi vet hva NAT er og hva det er for, kan vi gå direkte videre til å sette opp serveren.

transittrafikk
Alle kommandoer utføres som root (superbruker). I Debian er såkalt transittrafikk deaktivert som standard, dvs. standarden er kun å fungere som en enkelt maskin. Som du kanskje har gjettet, er det ingen NAT uten transittrafikk. For å aktivere det, er det nok å endre 1 siffer - $ echo 1> / proc / sys / net / ipv4 / ip_forward, men denne innstillingen vil forsvinne etter omstart, så det er bedre å fikse konfigurasjonen - $ nano /etc/sysctl.conf så leter vi etter en linje # net.ipv4.ip_forward = 1 og fjern hashen (kommentartegnet) på begynnelsen av linjen og sjekk at verdien er 1! Nå kan du begynne å konfigurere iptables direkte.
konfigurere iptables
På Internett er det mange artikler om hvordan man skriver regler i iptables og hva som kan gjøres med dem, det virket for meg det mest komplette og morsomme å lese.
Og så la oss komme i gang. Først, la oss tømme tabellene for unødvendige regler, plutselig var det noe overflødig ...
$ iptables -F
$ iptables -t nat -F
$ iptables -t mangle -F

Overskuddet ble renset. Det er veldig viktig å forstå og huske at regler i iptables brukes hierarkisk, dvs. regelen ovenfor vil bli utført tidligere. Alle kjeder har ACCEPT policy som standard - tillat alt. som ikke falt inn under denne kjedens regler.
La oss bli enige om at grensesnittet som ser inn i det lokale nettverket er eth0, og på Internett - eth1, har det lokale nettverket adressene 192.168.0.0/24, og leverandøren ga oss en statisk adresse 10.188.106.33 (om enn ikke "hvit" - ca. hvilke typer ip-adresser du også kan se på Internett). Og så skriver vi:
$ iptables -A FORWARD -i eth0 -o eth1 -s 192.168.0.0/24 -j ACCEPT
$ iptables -A FORWARD -i eth1 -o eth0 -d 192.168.0.0/24 -j GODKJENNER
$ iptables -P FREMOVER

derfor tillot vi transittpakker å gå gjennom brannmuren for vårt utvalg av ip-adresser, og vi forbyr alt annet.
Nå selve NAT:
$ iptables -A POSTROUTING -s 192.168.0.0/24 -o eth1 -j SNAT --to-source 10.188.106.33
Dette er nok til at NAT fungerer for deg.
på bagateller...
På klienter spesifiserer vi ip-en fra det valgte området og spesifiserer ip-adressen til serveren vår som gateway (vanligvis tilordnes den den første fra subnettet - jeg overlater det til ditt skjønn). Alle nettverksinnstillinger på serveren kan gjøres slik:
$ nano / etc / nettverk / grensesnitt den spesifiserer innstillingene for nettverksgrensesnittene dine.
tilgang til innvollene i nettverket gjennom en gateway eller DNAT
Og så skjønte du at du på nettverket har en Windows-server som du alltid hadde enkel tilgang til via RDP, og så kom denne irriterende inngangsporten til Debian ut! Det er veldig enkelt - du trenger bare å legge til en DNAT-regel til våre iptables.
Hva slags beist er DNAT? DNAT (Destination NAT eller substitusjon av mottakeradressen) - nettverkskort fungerer i en slik modus at de bare godtar pakker adressert til dem, men hvis du logger på serveren vår hvis ip-en som den kobles til Internett under, er det et dusin flere maskiner på kontoret ditt? Hvordan vil forespørselen nå ham? Faktisk hviler alle forespørsler av denne typen på vår gateway. Og alt vi trenger å gjøre er å sette reglene for å jobbe med slike pakker.
$ iptables -A PREROUTING -i eth1 -p tcp -m tcp --dport 3389 -j DNAT --til-destinasjon 192.168.0.2
Denne enkle regelen vil omdirigere alle pakker som kommer til gatewayen fra Internett til TCP-port 3389 (som er hva RDP-protokollen bruker) til din interne Windows Server. Og vips, alt fungerer for deg.
så hva er det med favorittblekkspruten din
Og selv om alt fungerer nå, alle har Internett og alt fungerer, trenger noen fortsatt en proxy-server. Jeg vil ikke snakke om blekksprutoppsettet, jeg vil vise en regel som lar deg gjøre det "gjennomsiktig". I blekkspruten trenger du bare å skrive det magiske ordet gjennomsiktig på riktig sted, og det vil begynne å behandle forespørslene som har falt på det riktig.
Vi skriver $ iptables -A PREROUTING -d! 192.168.0.0/24 -i eth0 -p tcp -m multiport --dports 80,443 -j OMDIREKTERE --til-porter 3128.
Og hva gir det oss? Nå vil alle forespørsler til nettsider fra arbeidsstasjonene dine via http ((80) og https (443) protokoller bli omdirigert til porten som blekksprut lytter til. Du mottar innholdsfiltrering, informasjon om hvem som var hvor og hva som gjorde på Internett, brukeren er ikke det ubevisst, det fungerer som før ...
litt sikkerhet
Du bør i det minste beskytte gatewayen din minimalt, så la oss legge til et par regler til
$ iptables -A INPUT -i lo -j ACCEPT
$ iptables -A INPUT -i eth0 -s 192.168.0.0/24 -j ACCEPT
$ iptables -A INPUT -i eth1 -m conntrack --ctstate RELATED, ETABLISHED -j ACCEPT
$ iptables -P INPUT DROP

Dermed forbød de all kommunikasjon direkte med gatewayen, bortsett fra de allerede etablerte forbindelsene, dvs. de som ble initiert av deg og du får bare svar på dem. Ikke vær redd vår DNAT bare ikke når disse reglene ...
hvorfor så lite?
Artikkelen er ikke gummiaktig og du kan ikke fortelle om alt uansett ... jeg tok med minimum et sett med handlinger og konsepter slik at du kan begynne å mestre en slik koloss som en gateway på Linux. Her kan du snakke i veldig, veldig lang tid, diskutere mange aspekter og muligheter ved netfilter.

Total

Som vi kan se er alt veldig enkelt! Det viktigste er å forstå prinsippet om funksjonen til nettverket og ikke være redd for å sette opp og lese store manualer.
Forhåpentligvis klarte jeg å sette sammen nok informasjon til å starte vennskapet ditt med Linux-baserte programvarerutere.

Tagger: iptables, netfilter, NAT

Innstillingsprinsipp

Den generelle syntaksen for bruk av iptables er:

iptables -t<таблица> <команда> <цепочка>[rom]<условие> <действие>

<таблица>

Netfilter-regler er fordelt på 4 tabeller, som hver har sitt eget formål (mer detaljer nedenfor). Den angis med -t-tasten, men hvis denne parameteren ikke er spesifisert, vil handlingen utføres for standardtabellen - filter.

<команда>

Kommandoene indikerer hva slags handling vi utfører på netfilter, for eksempel opprette eller slette en regel.

<цепочка>

Hvert bord har kjeder, for hver av disse er selve reglene laget. For eksempel, for filtertabellen ovenfor, er det tre forhåndsdefinerte kjeder - INPUT (innkommende pakker), OUTPUT (utgående) og FORWARD (transit).

[rom]

Noen kommandoer krever å spesifisere et regelnummer, for eksempel for sletting eller redigering.

<условие>

En betingelse beskriver kriteriene for å behandle en bestemt regel.

<действие>

Vel, faktisk, hva gjør vi med pakken hvis den oppfyller kriteriene for tilstanden.

* For å være rettferdig er det verdt å merke seg at handlingstasten ikke trenger å gå på slutten. Det er bare det at dette formatet oftest finnes i instruksjoner og gjør det lettere å lese reglene.

Iptables-nøkler og eksempler på deres bruk

For arbeid med tabeller (iptables -t)

Som en påminnelse er alle reglene i netfilter spredt over tabeller. For å jobbe med en bestemt tabell, må du bruke -t-bryteren.

Kommandoer

Følgende nøkler bestemmer hva iptables-verktøyet gjør.

Nøkkel Beskrivelse og eksempler
-EN Legge til en regel på slutten av listen:
iptables -A INPUT -s 192.168.0.15 -j DROP
nekte å komme fra 192.168.0.15.
-D Fjerne en regel:
iptables -D INPUT 10
slett regelen i INPUT-kjeden nummerert 10.
-JEG Sette inn en regel i en bestemt del av listen:
iptables -I INPUT 5 -s 192.168.0.15 -j DROP
sett inn regel 5. på listen.
-R Erstatning av regelen.
iptables -R OUTPUT 5 -s 192.168.0.15 -j GODKJENNER
erstatte vår femte regel fra forbud til tillatelse.
-F Rydder reglene i kjeden.
iptables -F INPUT
-Z Tilbakestilling av statistikk.
iptables -Z INPUT
-N Kjedeoppretting.
iptables -N CHAINNEW
-X Sletter en kjede.
iptables -X CHAINNEW
-P Definere en standardregel.
iptables -P INPUT DROP
-E Gi nytt navn til kjeden.
iptables -E CHAINNEW CHAINOLD

Forhold

Disse tastene definerer betingelsene for regelen.

Nøkkel Beskrivelse og eksempler
-s Nettverksprotokoll. Gyldige alternativer er TCP, UDP, ICMP eller ALL.
iptables -A INPUT -p tcp -j GODTAR
tillat alle innkommende tcp-tilkoblinger.
-s Kildeadresse – vertsnavn, IP-adresse eller subnett i CIDR-notasjon.
iptables -A INPUT -s 192.168.0.50 -j DROP
nekte å komme fra vert 192.168.0.50
-d Ankomstadresse. Bruksprinsippet ligner på forrige -s-bryter.
iptables -A OUTPUT -d 192.168.0.50 -j DROP
nekte utgående til vert 192.168.0.50
-Jeg Nettverksadapteren som pakkene mottas gjennom (INPUT).
iptables -A INPUT -i eth2 -j DROP
nekt innkommende for Ethernet-grensesnitt eth2.
-o Nettverksadapter som pakker går fra (OUTPUT).
iptables -A OUTPUT -o eth3 -j AKSEPT
tillat utgående fra Ethernet-grensesnitt eth3.
--dport Ankomsthavn.
iptables -A INPUT -p tcp --dport 80 -j GODTAR
tillat innkommende på port 80.
--sport Kildeport.
iptables -A INPUT -p tcp --sport 1023 -j DROP
nekte innkommende fra port 1023.

De oppførte nøklene støtter også konstruksjonen ved hjelp av skiltet ! ... Det inverterer tilstanden, for eksempel
iptables -A INPUT -s! 192.168.0.50 -j DROPPE
vil nekte tilkoblingen til alle verter unntatt 192.168.0.50.

Handlinger

Handlinger som skal utføres på en pakke som samsvarer med kriteriene for tilstanden. Hver tabell har sitt eget sett med gyldige handlinger. Spesifisert med en nøkkel -j.

bord Handling Beskrivelse
filter AKSEPTERER Løser pakken.
MISTE Nekter pakken.
AVVIS Hindrer sending av meldingen til kilden.
nat MASKERADE For utgående pakker, erstatter kildens IP-adresse med adressen til grensesnittet som pakken går fra.
SNAT Ligner på MASQUERADE, men spesifiserer et spesifikt nettverksgrensesnitt, hvis adresse vil bli brukt til spoofing.
DNAT Adresseforfalskning for innkommende pakker.
OMdirigere Omdirigerer forespørselen til en annen port på samme system.
mangle TOS Endring av TOS-feltet (trafikkprioritering).
DSCP DSCP-endring (også trafikkprioritering).
TTL Endre TTL (pakkelevetid).
HL Ligner på TTL, men for IPv6.
MERKE Pakkemerking. Brukes til påfølgende filtrering eller forming.
CONNMARK Tilkoblingsmerking.
TCPMSS Endre MTU-verdien.

Eksempler på ofte brukte iptables-kommandoer

Vanlige kommandoer

Se regler med numrene deres:

iptables -L --linjetall

For hver tabell må du se på reglene separat:

iptables -t nat -L --linjetall

Fjern alle regler:

Angi standardregler:

iptables -P INPUT DROP

iptables -P OUTPUT DROP

* i disse eksemplene, som standard, for alle innkommende (INPUT) og utgående (OUTPUT) pakker, vil avvisningsregelen (DROP) fungere.

Tillat alle

Metode 1. Ved å legge til en regel:

iptables -I INNPUT 1 -j GODTAR

iptables -I OUTPUT 1 -j GODTAR

iptables -I FORWARD 1 -j GODTAR

* disse tre kommandoene vil lage regler som tillater alle innkommende, utgående og transittpakker.

Metode 2. Ved å rense reglene:

* her fjerner vi først alle regler (-F), og setter deretter standardpolicyen - tillat inngående, utgående og transitt (-S).

Metode 3. Deaktivering av tjenesten (det er praktisk å deaktivere brannmuren en stund for å diagnostisere problemer):

tjeneste iptables stoppe

Arbeid med regler

Legg til en regel på slutten av listen:

iptables -A INPUT -p tcp --dport 25 -j GODTAR

iptables -A INPUT -p tcp -s! 192.168.0.25 --dport 993 -i eth0 -j GODKJENNER

Legg til portområde:

iptables -A INPUT -p tcp --dport 3000: 4000 -j GODTAR

* i dette tilfellet, fra 3000 til 4000.

Sett inn regel:

iptables -I FORWARD 15 -p udp -d 8.8.8.8 --dport 53 -i eth1 -j ACCEPT

Blokker en spesifikk IP-adresse fra port 25:

iptables -I INPUT 1 -s 1.1.1.1 -p tcp --dport 25 -j DROP

Port forwarding

Det er to måter å konfigurere.

1. Regler PREROUTING + POSTROUTING:

iptables -t nat -A PREROUTING -p tcp -m tcp -d 19.8.232.80 --dport 22 -j DNAT --til-destinasjon 192.168.1.15:2222

iptables -t nat -A POSTROUTING -p tcp -m tcp -s 192.168.1.15 --sport 2222 -j SNAT --til-kilde 19.8.232.80:22

* hvor 19.8.232.80 - adressen der vi lytter til tilkoblingsforespørsler; 22 - port for videresending; 192.168.1.15 - intern IP-adresse, som vi overfører alle forespørsler til; 2222 - intern port.

2. REGLER FOR FORHÅNDSKRIFT + VIDERE:

iptables -t nat -A PREROUTING -p tcp -i eth1 --dport 22 -j DNAT --til-destinasjon 192.168.1.15:2222

iptables -A FORWARD -p tcp -d 192.168.1.15 --dport 22 -m tilstand --state NY, ETABLERET, RELATED -j GODKJENNER

Hovedoppgaven brannmur(brannmur) filtrering og behandling av pakker som passerer gjennom nettverket. Når du analyserer en inngangspakke, bestemmer brannmuren skjebnen til denne pakken: kast pakken ( MISTE), godta pakken ( AKSEPTERER) eller gjør noe annet med det.

V Linux brannmuren er en kjernemodul kalt netfilter og er et sett med kroker for å jobbe med nettverksstakken. Grensesnittet for å endre reglene som brannmuren behandler pakker etter er verktøyet iptables for IPv4 og verktøy ip6-tabeller for IPv6.

Alt trafikkfiltreringsarbeid utføres av systemkjernen. Iptables er ikke en demon og oppretter ikke nye prosesser på systemet. Slå på eller av iptables det er bare å sende et signal til kjernen. Høy filtreringshastighet oppnås ved kun å analysere pakkehodene.

Til hovedtrekkene iptables relatere:

  • trafikkfiltrering basert på adressene til avsender og mottaker av pakker, portnumre;
  • omdirigere pakker i henhold til visse parametere;
  • organisering av nettverkstilgang (SNAT);
  • portvideresending fra det globale nettverket til det lokale nettverket (DNAT);
  • begrense antall tilkoblinger;
  • fastsettelse av trafikkkvoter;
  • utførelse av reglene i henhold til tidsplanen;

La oss vurdere hovedprosessen for arbeidet iptables(bildekilde rigacci.org).

Den innkommende pakken når først nettverksenheten, hvoretter den blir fanget opp av driveren og overført til kjernen. Deretter sendes pakken gjennom en rekke tabeller og først da blir den overført til den lokale applikasjonen eller omdirigert til et annet system, hvis det er en transittpakke.

V iptables tre typer tabeller brukes:

  1. mangle- brukes til å gjøre endringer i pakkehodet;
  2. nat- brukes til å oversette nettverksadresser;
  3. filter- å filtrere trafikk;

Mangelbord

Hovedformålet med tabellen mangle- gjøre endringer i pakkeoverskriften. I denne tabellen kan følgende handlinger utføres:

  • sette Type Of Service-biten;
  • stille inn Time To Live-feltet;
  • sette en etikett på en pakke som kan kontrolleres i andre regler;

Kjeder i bordet mangle:

  • PREROUTING- brukes til å gjøre endringer i pakker ved inngangen til iptables, før du bestemmer deg for ruting;
  • POSTRUTING- brukes til å gjøre endringer i pakker ved utgangen fra iptables, etter å ha bestemt seg for ruting;
  • INNGANG- brukes til å gjøre endringer i pakker før de overføres til den lokale applikasjonen;
  • PRODUKSJON- brukes til å endre pakker som kommer fra applikasjonen i iptables;
  • FRAMOVER- brukes til å gjøre endringer i transittpakker;

Natt bord

Tabellen brukes til nettverksadresseoversettelse og når en pakke påtreffes for å etablere en ny tilkobling. I denne tabellen kan følgende handlinger utføres:

  • DNAT (Destination Network Address Translation)- konvertering av destinasjonsadressen i pakkeoverskriften;
  • SNAT (Source Network Address Translation)- endre kildeadressen til pakken;
  • MASKERADE- brukes til samme formål som SNAT men lar deg jobbe med dynamiske IP-adresser;

Kjeder i denne tabellen:

  • PREROUTING- brukes til å gjøre endringer i pakker ved inngangen til iptables;
  • PRODUKSJON- brukes til å oversette adresser i pakker før videre ruting;
  • POSTRUTING- brukes til å konvertere pakker før de sendes til nettverket;

Filtertabell

Tabellen brukes til pakkefiltrering. Det er tre kjeder i denne tabellen:

  1. INNGANG- kjede for innkommende pakker;
  2. FRAMOVER- kjede for videresendte (transit) pakker;
  3. PRODUKSJON- kjede for utgående pakker;

En pakke som går gjennom disse kjedene kan være gjenstand for handlinger: AKSEPTERER, MISTE, AVVIS, LOGG.

For å oppsummere går den ankommende pakken gjennom kjeden av regler. Hver regel inneholder tilstand og mål(handling). Hvis pakken tilfredsstiller betingelsen, sendes den til målet, ellers blir neste regel i kjeden brukt på pakken. Hvis pakken ikke tilfredsstiller noen av betingelsene i kjeden, blir standardhandlingen brukt på den.

Kjede bord
filter nat mangle
INNGANG + +
FRAMOVER + +
PRODUKSJON + + +
PREROUTING + +
POSTRUTING + +

Iptables-verktøyet

Installerer iptables

# for Arch Linux yaourt -S iptables # For Ubuntu sudo apt-get install iptables

Kjører iptables

# under Arch Linux sudo systemctl aktiver iptables sudo systemctl start iptables # Under Ubuntu sudo-tjenesten starter iptables

Lagringsregler

# for Arch Linux sudo sh -c "iptables-save> /etc/iptables/iptables.rules" # for Ubuntu sudo sh -c "iptables-save> /etc/iptables.rules"

Gjenopprette regler fra en fil

Iptables-gjenoppretting< firewall-config

Hver regel i iptables er en egen linje dannet i henhold til visse regler og inneholder kriterier og handlinger. Generelt sett har regelen følgende format:

Iptables [-t table] kommando

  • t table - spesifiserer navnet på tabellen som regelen skal opprettes for;
  • kommando - en kommando som definerer en handling iptables- legg til en regel, slett en regel osv.;
  • match - setter testkriteriene som det bestemmes etter om en pakke er underlagt regelen eller ikke;
  • mål / hopp - hvilken handling skal utføres når kriteriet er oppfylt;

Iptables kommandoer:

  • -A - legg til en regel i kjeden, regelen vil bli lagt til på slutten av kjeden;
  • -D - fjern regelen fra kjeden;
  • -R - erstatte en regel med en annen;
  • -I - sett inn en ny regel i kjeden;
  • -L - vis listen over regler i den angitte kjeden;
  • -F - sletter alle regler i den angitte kjeden;
  • -Z - tilbakestill alle tellere i den angitte kjeden;
  • -N - opprett en ny kjede med det angitte navnet;
  • -X - slett kjeden;
  • -P - setter standardpolicyen for kjeden;
  • -E - gi nytt navn til brukerkjeden;

Eksempler på Iptables-kommandoer

Pakker kan filtreres etter følgende parametere:

Pakkekilde

Alternativet -s brukes til å filtrere etter kilde. For eksempel vil vi nekte alle innkommende pakker fra 192.168.1.95-verten:

Iptables -A INPUT -s 192.168.1.95 -j DROP

Du kan bruke et domenenavn for å spesifisere vertsadressen:

Iptables -A INPUT -s test.host.net -j DROP

Du kan også spesifisere helheten for nettverket:

Iptables -A INPUT -s 192.168.1.0/24 -j DROP

Du kan også bruke negasjon (tegn!). For eksempel vil alle pakker fra andre verter enn 192.168.1.96 bli slettet:

Iptables -EN INNGANG! -s 192.168.1.96 -j DROPPE

Tillat trafikk å flyte på lokal vert:

Iptables -A INNPUT 1 -i lo -j GODTAR

Logger spoofingforsøk med "IP_SPOOF A:"-prefikset og avbryter tilkoblingen

Iptables -A INPUT -i eth1 -s 10.0.0.0/8 -j LOG --log-prefiks "IP_SPOOF A:" iptables -A INPUT -i eth1 -s 10.0.0.0/8 -j DROP

Ankomstadresse

For å gjøre dette, må du bruke alternativet -d. For eksempel vil vi nekte alle utgående pakker til verten 192.168.1.95:

Iptables -A OUTPUT -d 192.168.156.156 -j DROP

Nekt tilgang til ressurs

Iptables -A OUTPUT -d vk.com -j AVVIS

Som i tilfellet med kilden til pakken, kan du bruke adresser for nettverk og domenenavn. Fornektelse fungerer også.

Protokoll

Alternativet -p indikerer protokollen. Kan bli brukt alle, icmp, tcp, udp eller protokollnummer (fra / etc / protokoller).

Tillat innkommende ekkoforespørsler

Iptables -A INPUT -p icmp --icmp-type echo-request -j ACCEPT

Kildeport

Tillat alle utgående pakker fra port 80:

Iptables -A INPUT -p tcp --sport 80 -j GODTAR

Blokker alle innkommende forespørsler på port 80:

Iptables -A INPUT -p tcp --dport 80 -j DROP

For å spesifisere porten, må du spesifisere protokollen (tcp eller udp). Negasjon kan brukes.

Åpent portområde

Iptables -A INPUT -m state --state NEW -m tcp -p tcp --dport 7000: 7010 -j GODKJENNER

Ankomsthavn

Tillat HTTP-tilkoblinger

Iptables -A INPUT -p tcp --dport 80 -j ACCEPT iptables -A INPUT -p tcp -i eth0 --dport 22 -j ACCEPT

Tillater å motta data fra DHCP-serveren

Iptables -A INPUT -p UDP --dport 68 --sport 67 -j GODTAR

  • Fjernkontroll utnyttelse av programvarefeil for å gjøre den uvirksom;
  • Oversvømmelse- sende et stort antall meningsløse pakker til offerets adresse. Flommålet kan være en kommunikasjonskanal eller maskinressurser. I det første tilfellet tar pakkestrømmen opp hele båndbredden og gir ikke den angrepne maskinen muligheten til å behandle legitime forespørsler. I den andre fanges ressursene til maskinen opp ved hjelp av flere og svært hyppige anrop til enhver tjeneste som utfører en kompleks, ressurskrevende operasjon. Dette kan for eksempel være et langt anrop til en av de aktive komponentene (script) til webserveren. Serveren bruker alle ressursene til maskinen på å behandle forespørslene fra angriperen, og brukerne må vente. Flom kan være forskjellig: ICMP-flom, SYN-flom, UDP-flom og HTTP-flom

Samle informasjon om nettverkstilkoblinger

Se åpne tilkoblinger

Netstat -ntu | awk "(skriv ut $ 5)" | kutt -d: -f1 | sortere | uniq -c | sortere -n

Antall tilkoblinger til port 80

Netstat -na | grep ": 80 \" | wc -l

TCP-tilkoblingsdump (hvilket domene forespørslene går til oftest)

Tcpdump -npi eth0 portdomene

SYN-flommer kan kontrolleres ved å telle antall halvåpne TCP-forbindelser

Netstat -na | grep ": 80" | grep SYN_RCVD

Beskyttelse mot ulike typer flom.

ICMP-flom. En veldig primitiv metode for å tette opp båndbredden og skape belastninger på nettverksstakken gjennom monoton sending av ICMP ECHO-forespørsler (ping). Det oppdages enkelt ved å analysere trafikkstrømmen i begge retninger: under et ICMP-flomangrep er de nesten identiske. En nesten smertefri måte for absolutt beskyttelse er basert på å deaktivere svar på ICMP ECHO-forespørsler:

Sysctl net.ipv4.icmp_echo_ignore_all = 1

Eller bruker iptabels:

Iptables -A INPUT -p icmp -j DROP --icmp-type 8

SYN flom. En av de vanlige måtene ikke bare å tette kommunikasjonskanalen, men også å sette nettverksstakken til operativsystemet i en tilstand der den ikke lenger kan akseptere nye tilkoblingsforespørsler. Basert på et forsøk på å initialisere et stort antall samtidige TCP-forbindelser ved å sende en SYN-pakke med en ikke-eksisterende returadresse. Etter flere forsøk på å sende en ACK-svarpakke til en adresse som ikke kan nås, vil de fleste operativsystemer sette den uopprettede forbindelsen i kø. Og først etter det n-te forsøket lukkes forbindelsen. Siden flyten av ACK-pakker er veldig stor, er køen snart full og kjernen nekter å prøve å åpne en ny tilkobling. De smarteste DoS-robotene analyserer også systemet før de starter et angrep for å sende forespørsler kun for å åpne vitale porter. Det er lett å identifisere et slikt angrep: bare prøv å koble til en av tjenestene.

Et lite innledende skript (regler, iptables faq) for en stasjonær eller enkel server. I dette tilfellet, eksempler på arbeid med portene til en eller annen programvare som kjører på datamaskinen. Sikkerhetstiltak må følges på enhver datamaskin. Myten om at Linux er sikrere er ikke sann, alt avhenger av administratorens klønete hender. Det finnes godt beskyttede Windows-systemer, samt Linux-systemer som er åpne for nesten alle. Derfor bør du fortsatt tenke litt på nettverksbeskyttelsen til datamaskinen din. Nedenfor er lagt til noen iptables-regler som kan være nyttige med det første.

Spesielt erstattet $ IPT med / sbin / iptables, hvis noen trenger bare én regel for ikke å endre noe - bare kopier og utfør. Naturligvis er det fortsatt få regler her, det er ingen forskjellige VPN-er osv., hvis du vil, legg til.

Disse linjene kan kopieres helt inn i et hvilket som helst skript og bare kjøre det. For vanlige tilfeller er dette nok. Hvis en applikasjon ikke kan gå på nett, har logging blitt spesielt lagt til. Bare åpne tail -f / var / log / syslog (eller din hvis annet enn Ubuntu) og se! Hvis du har spørsmål, legg dem til i diskusjonen, vi løser det sammen.

PS I tillegg til disse reglene, tenk på hva du skal ta fra artikkelen om TCP-optimalisering.

Hvordan fjerne en regel i iptables

Skrevet av Alexey Ubozhenko

Flere ganger har jeg vært borti at selv folk som generelt ikke er dumme gjør absolutt utilgivelige feil. For eksempel åpner de porten som databasen kjører på til hele Internett.

Systemadministrasjonsblogg. Artikler om Linux, Windows, NetApp-lagring og virtualisering.

Dette er ofte tilfellet for DevOps-nybegynnere som har kodet hele livet, og nå inkluderer deres ansvar å sette opp servere også. Det er gode opplæringsprogrammer på nettet om grunnleggende brannmuroppsett i Linux og andre *nix, men ofte er dette ark for mange skjermer. Så forhåpentligvis vil noen finne denne mer konsise veiledningen nyttig.

Viktig! Det er veldig lett å feilaktig fyre av en bil på en slik måte at du ikke kommer inn i den igjen. Dette gjelder spesielt for nettskyhosting. For eksempel, hvis du i AWS lukker alle porter fra 1024 til 65536, stenges maskinen av en eller annen grunn etter en omstart. generelt alle havner. Hvis du er vert i skyene, er det best å konfigurere brannmuren gjennom det vertsbaserte webgrensesnittet.

Et raskt notat om terminologi. Brannmuren innebygd i Linux-kjernen kalles Netfilter, og iptables er verktøyet for å administrere denne brannmuren. Mange tror feilaktig at brannmuren kalles iptables. Dette er ikke sant. Å si noe som "Jeg filtrerer pakker med iptables" viser andre at du er analfabet.

Generelt, hvilke oppgaver kan løses med Netfilter:

  • Tillat / nekt innkommende trafikk til spesifikke porter ved å bruke spesifikke protokoller (IPv4 / IPv6, TCP / UDP) fra spesifiserte adresser (IP, MAC) eller subnett;
  • Alt er likt for utgående trafikk;
  • Du kan for eksempel fullstendig ignorere alle ICMP-pakker;
  • Konfigurere NAT, se innlegget om å installere og konfigurere OpenVPN;
  • Jeg hørte at ekte guruer kan sette opp beskyttelse mot DDoS og brute force, begrense nettverkstilgang til spesifikke applikasjoner, brukere eller grupper, og gjøre andre sprø ting;

Merk at iptables-verktøyet virket for meg til å begynne med ekstremt upraktisk sammenlignet med ipfw i FreeBSD. Heldigvis, etter å ha jobbet med det en stund, blir alle disse mange flaggene som -A, -D, -j og andre kjent, så vær tålmodig. La oss ta en titt på hovedkommandoene.

Vis alle regler:

Du legger kanskje merke til at Netfilter har en slags "kjeder" - i hvert fall INPUT, OUTPUT og FORWARD.

Jeg personlig har også en Docker-kjede på bilen min. For første gang kan du tenke på de to første som henholdsvis all innkommende og utgående trafikk, og midlertidig glemme resten. Sjansen er stor for at du aldri vil trenge dem i det hele tatt.

Fjern alle regler:

Endre policy (standard atferd) kjede:

iptables -P INPUT DROP
iptables -P INPUT ACCEPT

Nekt tilgang fra vert/subnett:

iptables -A INPUT -s 123.45.67.89 -j DROP
iptables -A INPUT -s 123.45.0.0/16-j DROP

Du kan også bruke domenenavn:

iptables -A INPUT -s example.com -j DROP

Sperring av utgående tilkoblinger:

iptables -A OUTPUT -d 123.45.67.89 -j DROP

Negativer kan brukes i regler:

iptables -A INPUT! -s 123.45.67.89 -j DROP

Slette en regel etter nummeret i kjeden:

iptables -D INPUT 1

Fjerne en regel basert på hva den gjør:

iptables -D INPUT -s 123.45.67.89 -j DROP

Alternativet -p indikerer protokollen. Du kan bruke alle, icmp, tcp, udp eller protokollnummeret fra / etc / protokoller. -sport-flagget indikerer porten som pakken ble sendt fra, og -dport indikerer destinasjonsporten:

iptables -A INPUT -p tcp -sport80-j GODTAR
iptables -A INPUT -p tcp -dport80-j GODTAR

Sett inn en regel i begynnelsen av en kjede:

iptables -I INPUT ...

Eller du kan spesifisere en spesifikk stilling:

iptables-save> /etc/iptables.rules

Gjenopprett regler:

iptables-restore

La oss nå se på noen praktiske eksempler. Dette er for eksempel emuleringen av en nettdeling i en test som sjekker oppførselen til en applikasjon som bruker Akka Cluster:

kjør (node1, s "iptables -A INPUT -s $ node2 -j DROP")
kjør (node1, s "iptables -A INPUT -s $ node3 -j DROP")
kjør (node1, s "iptables -A OUTPUT -d $ node2 -j DROP")
kjør (node1, s "iptables -A OUTPUT -d $ node3 -j DROP")

Gjenopprettingen er nøyaktig den samme, bortsett fra at -A-flagget erstattes med -D-flagget.

Et annet eksempel. Det kreves å finne ut hvilke porter som lytter på maskinen og lukke de ekstra. Vi går til bilen og sier:

Eksempel på utdata:

Aktive Internett-tilkoblinger (bare servere)
Proto Recv-Q Send-Q Lokal adresse Utenlandsk adresse Status PID / Prog navn
tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 3210 / nginx
tcp 0 0 0.0.0.0:4369 0.0.0.0:* LYTT 1789 / epmd
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 797 / sshd
tcp 0 0 127.0.0.1:5432 0.0.0.0:* LYTT 990 / postgres

Nginx og SSHd surfer på internett, det er greit. PostgreSQL lytter kun til det lokale grensesnittet, så det er heller ikke noe problem med det. Men epmd-en stikker ut (du kan sjekke den med telnet fra en annen maskin), og dette er ikke bra. Du kan bare lukke port 4369. Hvordan du gjør dette ble vist ovenfor. Eller du kan gå enda lenger og nekte alle tilkoblinger fra utsiden til port 81 og eldre:

iptables -A INPUT -m multiport \
-p tcp —dports81: 65535! -s 127.0.0.0/8-j DROP

Dette bruker multiport-utvidelsen til å spesifisere portområder.

Vi sjekker at alt fungerer. Hvis OK, lagre reglene:

iptables-save> /etc/iptables.rules

For å finne reglene ved systemoppstart, lag en ny fil /etc/network/if-pre-up.d/iptables:

iptables-restoreexit0

... og vi sier:

chmod + x /etc/network/if-pre-up.d/iptables

Denne metoden har blitt bekreftet til å fungere på Ubuntu 14.04 LTS.

Debian burde også fungere. Du kan finne en beskrivelse av en alternativ måte å gjenopprette brannmurregler ved systemoppstart i den allerede nevnte artikkelen om OpenVPN.

Ytterligere ressurser for de som vil vite mer om Netfilter:

Hvordan konfigurerer du brannmurer på serverne dine?

Tagger: Linux, Sikkerhet, Nettverk.

Kommandolinjeverktøyet iptables brukes til å konfigurere netfilter-brannmuren innebygd i et Linux-kjernebasert system.

Denne håndboken passer både for dummies som ønsker å forstå aspektene ved nettverkssikkerhet, og erfarne spesialister som et jukseark.

Innstillingsprinsipp

Den generelle syntaksen for bruk av iptables er:

iptables -t<таблица> <команда> <цепочка>[rom]<условие> <действие>

<таблица>

Netfilter-regler er fordelt på 4 tabeller, som hver har sitt eget formål (mer detaljer nedenfor). Den angis med -t-tasten, men hvis denne parameteren ikke er spesifisert, vil handlingen utføres for standardtabellen - filter.

<команда>

Kommandoene indikerer hva slags handling vi utfører på netfilter, for eksempel opprette eller slette en regel.

<цепочка>

Hvert bord har kjeder, for hver av disse er selve reglene laget. For eksempel, for filtertabellen ovenfor, er det tre forhåndsdefinerte kjeder - INPUT (innkommende pakker), OUTPUT (utgående) og FORWARD (transit).

[rom]

Noen kommandoer krever å spesifisere et regelnummer, for eksempel for sletting eller redigering.

<условие>

En betingelse beskriver kriteriene for å behandle en bestemt regel.

<действие>

Vel, faktisk, hva gjør vi med pakken hvis den oppfyller kriteriene for tilstanden.

* For å være rettferdig er det verdt å merke seg at handlingstasten ikke trenger å gå på slutten. Det er bare det at dette formatet oftest finnes i instruksjoner og gjør det lettere å lese reglene.

Iptables-nøkler og eksempler på deres bruk

For arbeid med tabeller (iptables -t)

Som en påminnelse er alle reglene i netfilter spredt over tabeller. For å jobbe med en bestemt tabell, må du bruke -t-bryteren.

Kommandoer

Følgende nøkler bestemmer hva iptables-verktøyet gjør.

Nøkkel Beskrivelse og eksempler
-EN Legge til en regel på slutten av listen:
iptables -A INPUT -s 192.168.0.15 -j DROP
nekte å komme fra 192.168.0.15.
-D Fjerne en regel:
iptables -D INPUT 10
slett regelen i INPUT-kjeden nummerert 10.
-JEG Sette inn en regel i en bestemt del av listen:
iptables -I INPUT 5 -s 192.168.0.15 -j DROP
sett inn regel 5. på listen.
-R Erstatning av regelen.
iptables -R OUTPUT 5 -s 192.168.0.15 -j GODKJENNER
erstatte vår femte regel fra forbud til tillatelse.
-F Rydder reglene i kjeden.
iptables -F INPUT
-Z Tilbakestilling av statistikk.
iptables -Z INPUT
-N Kjedeoppretting.
iptables -N CHAINNEW
-X Sletter en kjede.
iptables -X CHAINNEW
-P Definere en standardregel.
iptables -P INPUT DROP
-E Gi nytt navn til kjeden.
iptables -E CHAINNEW CHAINOLD

Forhold

Disse tastene definerer betingelsene for regelen.

Nøkkel Beskrivelse og eksempler
-s Nettverksprotokoll. Gyldige alternativer er TCP, UDP, ICMP eller ALL.
iptables -A INPUT -p tcp -j GODTAR
tillat alle innkommende tcp-tilkoblinger.
-s Kildeadresse – vertsnavn, IP-adresse eller subnett i CIDR-notasjon.
iptables -A INPUT -s 192.168.0.50 -j DROP
nekte å komme fra vert 192.168.0.50
-d Ankomstadresse. Bruksprinsippet ligner på forrige -s-bryter.
iptables -A OUTPUT -d 192.168.0.50 -j DROP
nekte utgående til vert 192.168.0.50
-Jeg Nettverksadapteren som pakkene mottas gjennom (INPUT).
iptables -A INPUT -i eth2 -j DROP
nekt innkommende for Ethernet-grensesnitt eth2.
-o Nettverksadapter som pakker går fra (OUTPUT).
iptables -A OUTPUT -o eth3 -j AKSEPT
tillat utgående fra Ethernet-grensesnitt eth3.
—Dport Ankomsthavn.
iptables -A INPUT -p tcp -dport 80 -j GODTAR
tillat innkommende på port 80.
-Sport Kildeport.
iptables -A INPUT -p tcp -sport 1023 -j DROP
nekte innkommende fra port 1023.

De oppførte nøklene støtter også konstruksjonen ved hjelp av skiltet ! .

Sette opp netfilter med iptables

Det inverterer tilstanden, for eksempel
iptables -A INPUT -s! 192.168.0.50 -j DROPPE
vil nekte tilkoblingen til alle verter unntatt 192.168.0.50.

Handlinger

Handlinger som skal utføres på en pakke som samsvarer med kriteriene for tilstanden. Hver tabell har sitt eget sett med gyldige handlinger. Spesifisert med en nøkkel -j.

bord Handling Beskrivelse
filter AKSEPTERER Løser pakken.
MISTE Nekter pakken.
AVVIS Hindrer sending av meldingen til kilden.
nat MASKERADE For utgående pakker, erstatter kildens IP-adresse med adressen til grensesnittet som pakken går fra.
SNAT Ligner på MASQUERADE, men spesifiserer et spesifikt nettverksgrensesnitt, hvis adresse vil bli brukt til spoofing.
DNAT Adresseforfalskning for innkommende pakker.
OMdirigere Omdirigerer forespørselen til en annen port på samme system.
mangle TOS Endring av TOS-feltet (trafikkprioritering).
DSCP DSCP-endring (også trafikkprioritering).
TTL Endre TTL (pakkelevetid).
HL Ligner på TTL, men for IPv6.
MERKE Pakkemerking. Brukes til påfølgende filtrering eller forming.
CONNMARK Tilkoblingsmerking.
TCPMSS Endre MTU-verdien.

Eksempler på ofte brukte iptables-kommandoer

Vanlige kommandoer

Se regler med numrene deres:

iptables -L —linjenumre

For hver tabell må du se på reglene separat:

iptables -t nat -L --linjetall

Fjern alle regler:

Angi standardregler:

iptables -P INPUT DROP

iptables -P OUTPUT DROP

* i disse eksemplene, som standard, for alle innkommende (INPUT) og utgående (OUTPUT) pakker, vil avvisningsregelen (DROP) fungere.

Tillat alle

Metode 1. Ved å legge til en regel:

iptables -I INNPUT 1 -j GODTAR

iptables -I OUTPUT 1 -j GODTAR

iptables -I FORWARD 1 -j GODTAR

* disse tre kommandoene vil lage regler som tillater alle innkommende, utgående og transittpakker.

Metode 2. Ved å rense reglene:

* her fjerner vi først alle regler (-F), og setter deretter standardpolicyen - tillat inngående, utgående og transitt (-S).

Metode 3. Deaktivering av tjenesten (det er praktisk å deaktivere brannmuren en stund for å diagnostisere problemer):

Arbeid med regler

Legg til en regel på slutten av listen:

iptables -A INPUT -p tcp -dport 25 -j GODTAR

iptables -A INPUT -p tcp -s! 192.168.0.25 —dport 993 -i eth0 -j GODKJENNER

Legg til portområde:

iptables -A INPUT -p tcp -dport 3000: 4000 -j GODKJENNER

* i dette tilfellet, fra 3000 til 4000.

Sett inn regel:

iptables -I FORWARD 15 -p udp -d 8.8.8.8 -dport 53 -i eth1 -j ACCEPT

Port forwarding

Det er to måter å konfigurere.

1. Regler PREROUTING + POSTROUTING:

iptables -t nat -A PREROUTING -p tcp -m tcp -d 19.8.232.80 —dport 22 -j DNAT —til-destinasjon 192.168.1.15:2222

iptables -t nat -A POSTROUTING -p tcp -m tcp -s 192.168.1.15 —sport 2222 -j SNAT —til kilde 19.8.232.80:22

* hvor 19.8.232.80 - adressen der vi lytter til tilkoblingsforespørsler; 22 - port for videresending; 192.168.1.15 2222 - intern port.

2. REGLER FOR FORHÅNDSKRIFT + VIDERE:

iptables -t nat -A PREROUTING -p tcp -i eth1 —dport 22 -j DNAT —til-destinasjon 192.168.1.15:2222

iptables -A FORWARD -p tcp -d 192.168.1.15 —dport 22 -m state —state NEW, ETABLISHED, RELATED -j ACCEPT

* hvor eth1- nettverksgrensesnittet som vi lytter etter forespørsler på; 22 - port for videresending; 192.168.1.15 - intern IP-adresse, som vi overfører alle forespørsler til; 2222 - intern port.

Starter oppsett

Tillat SSH:

iptables -A INPUT -p tcp -dport 22 -j GODTAR

Vi fastsetter retningslinjer for å forby innkommende og tillate alle utgående:

iptables -P OUTPUT ACCEPT

Lag en regel for at apt-get skal fungere skikkelig:

iptables -A INPUT -p tcp —sport 80 -m state —state ETABLISHED -j ACCEPT

Tillat ICMP (for ping-kommando):

iptables -A INPUT -p icmp -j GODKJENNER

Lagringsregler (permanent)

Som standard slutter alle regler å fungere etter omstart av nettverket eller datamaskinen. Det er flere måter å konfigurere reglene for å bevare reglene etter en omstart.

Metode 1.iptables-save

Vi lagrer reglene i en fil:

iptables-save> /etc/iptables.rules

Åpne nettverksinnstillingene:

vi / etc / nettverk / grensesnitt

og legg til linjen:

pre-up iptables-restore< /etc/iptables.rules

Metode 2.iptables-persistent

Installer iptables-persistent-pakken:

apt install iptables-persistent

For å lagre reglene, skriv inn kommandoen:

tjeneste iptables-vedvarende lagring

Metode 3.service iptables

Fungerer på eldre Linux-versjoner:

Metode 4.iptables.init

Fungerer på CentOS:

/usr/libexec/iptables/iptables.init lagre

Ubuntu og CentOS

Det er ingen iptables som standard på moderne Ubuntu- og CentOS-operativsystemer.

Du må installere den eller bruke nyere verktøy.

På CentOS

Firewall-cmd brukes som et standard brannmuradministrasjonsprogram. For mer informasjon, les instruksjonen Hvordan konfigurere brannmur på CentOS.

Hvis du trenger å bruke iptables, installer verktøypakken:

yum installer iptables-tjenester

Deaktiver brannmur:

systemctl stoppe brannmuren

systemctl deaktiver brannmur

Vi aktiverer og kjører iptables:

systemctl aktivere iptables

I Ubuntu

Ufw brukes nå til å administrere brannmuren.

For å jobbe med iptables, installer følgende pakke:

apt-get install iptables-persistent

Deaktiver ufw:

# Nettverk # Sikkerhet # UNIX # Ubuntu # Linux

Var denne opplæringen nyttig for deg?

UTOVER BRANNMURGEN:
BRANNVEGG (BRANNMUR) OG INTERNETTGATEWAY
DEBIAN GNU / LINUX 4.0 ETCH

En praktisk guide for å organisere sikker Internett-tilgang
fra en egen datamaskin og fra et lokalt nettverk i Debian GNU / Linux 4.0 Etch
Litt teori

Hver tilkobling til Internett gjør det ikke bare mulig å koble til ulike servere og nettsteder, men skaper også en potensiell fare for penetrering i datamaskinen vår fra utsiden. Denne faren bør ikke neglisjeres, da de fleste forsøk på uautorisert tilgang til brukernes datamaskiner fra Internett i dag er en del av en velorganisert kriminell virksomhet. Etter en vellykket kompromittering av systemet ditt, vil de prøve å bruke datamaskinen din enten til å sende spam, eller for å organisere DoS-angrep på andre datamaskiner, eller til andre ondsinnede formål. Å neglisjere denne faren vil i beste fall øke trafikkkostnadene og senke datamaskinens ytelse; i verste fall kan det uforvarende involvere deg i kriminelle aktiviteter til cybergrupper.

Situasjonen forverres av det faktum at i noen (fortsatt) utbredte operativsystemer er mange porter åpne som standard, noe som lar en angriper koble seg fra Internett til brukeren uten at sistnevnte er klar over det.

For å forhindre uautoriserte tilkoblinger fra utsiden og for å filtrere innkommende / utgående trafikk i operativsystemet, bør et spesielt program brukes - brannmur(engelsk brannmur), også kjent som brannmur og brannmur... Nedenfor er et enkelt eksempel på å sette opp en brannmur i et gratis operativsystem. Debian GNU / Linux 4.0.

Bruk av brannmur blir spesielt aktuelt hvis du har mer enn én datamaskin, men hjemme- eller kontornettverk hvis datamaskiner går på nett.

Selv et lite lokalnettverk må være ordentlig organisert. La oss si at du har et høyhastighets Internett-tilgangspunkt (for eksempel et ADSL-modem) med et Ethernet-grensesnitt (dvs. nettverk).

Det er en fristelse (oppvarmet av analfabeter, som for eksempel i instruksjonene for ADSL-modemet mitt) å koble modemet direkte til bryteren, og deretter koble til bryteren alle datamaskiner i det lokale nettverket. I dette tilfellet utsteder modemet dynamisk lokale IP-adresser gjennom bryteren, men det viser seg at hver datamaskin står alene med Internett! Verken et modem eller en bryter kan bli et hinder for en dårlig ønsker. En angriper kan skanne alle datamaskiner i et lokalt nettverk organisert på denne måten.

Den logiske og sikre løsningen er å skape barriere mellom modemet og det lokale nettverket - i form av en egen datamaskin med en "brannmur" (brannmur) konfigurert på den. Denne datamaskinen har to grensesnitt - det ene "ser ut" til Internett (det vil si at den er fysisk koblet til modemet), den andre er rettet til det lokale nettverket (og er fysisk koblet til bryteren som de andre datamaskinene også er tilkoblet). tilkoblet). Siden vår datamaskin med brannmur nå er et knutepunkt for andre datamaskiner for å få tilgang til Internett, kalles den også inngangsport(Engelsk gateway).

Med en slik organisering av det lokale nettverket reduseres sannsynligheten for hacking betydelig - en angriper "ser" bare gatewayen fra Internett, og en brannmur er installert på gatewayen, og det er ikke lett å hacke den.

Sette opp iptables på Linux for dummies

Lokale nettverksdatamaskiner kan surfe på Internett og forbli relativt trygge.

Konfigurere en brannmur ved hjelp av arno-iptables-brannmurkonfiguratoren

For å organisere en brannmur i GNU / Linux programmet brukes iptables, som som regel installeres umiddelbart når du installerer de fleste distribusjoner. V Debian GNU / Linux du kan sjekke dette ved å kjøre med administratorrettigheter evne... Installer om nødvendig iptables.

Imidlertid manuell konfigurasjon iptables er en ikke-triviell oppgave og kan kun utføres av spesialister innen systemadministrasjon. Derfor, for å konfigurere reglene som brannmuren skal fungere etter, er det bedre å bruke spesiell konfigurator... V Debian GNU / Linux Dette programmet arno-iptables-brannmur... Når den lanseres, stiller den en rekke spørsmål, på grunnlag av hvilke den genererer regler for hvordan brannmuren fungerer. iptables.

Vi skriver inn konsollen med superbrukerrettigheter:

#aptitude installer arno-iptables-firewall

I begynnelsen av installasjonen vil programmet spørre om vi virkelig ønsker å konfigurere brannmuren med den. iptables:

Først må du spesifisere det eksterne grensesnittet - "ser" til Internett, dvs. koblet til modemet. Grensesnittinnstillinger er definert i konfigurasjonsfilen / etc / nettverk / grensesnitt... For eksempel kan det se slik ut:

# Dette er lo-grensesnittet - peker på selve maskinen vår. auto lo iface lo inet loopback-adresse 127.0.0.1 nettmaske 255.0.0.0 # Dette er eth0-grensesnittet, som er koblet til Internett (ADSL-modem) # Dets særegne er at IP-adressen tildeles den dynamisk av Internett-leverandøren, # så alternativet dhcp auto eth0 er satt iface eth0 inet dhcp # Dette er grensesnittet som vender mot det lokale nettverket # Den lokale nettverksadressen vil være 192.168.2.0/24 # Av sikkerhetshensyn i det lokale nettverket har gatewayen en statisk IP-adresse - 192.168.2.1, # slik at det statiske alternativet er satt # Nettmaske - 255.255.255.0 # Nettverkskringkastingsadressen i dette tilfellet vil være 192.168.2.255 auto eth1 iface eth1 inet statisk adresse 192.168.2.5 netmaske 25.25.5.5.25.6.5.5.25.25.

Så, ser på innstillingene / etc / nettverk / grensesnitt, indikerer vi til brannmurkonfiguratoren at vårt eksterne grensesnitt er eth0:

På spørsmål om leverandøren gir oss en IP-adresse dynamisk(ved bruk av DHCP), svarer vi bekreftende:

Det neste spørsmålet er hvilke tjenester som vil bli levert fra datamaskinen vår til eksterne Internett-brukere. Vi har ingen! Vi driver ikke med profesjonell webhotell og har ikke til hensikt å distribuere informasjon utenfor. Vi lar linjen stå tom.

Så kommer spørsmålet om vi vil tilby noen tjenester over UDP. Heller ikke - og la også linjen stå tom!

Trenger vi å bli pinget fra omverdenen (dvs. sjekke om det er en forbindelse med datamaskinen som brannmuren er installert på)? I vårt tilfelle er dette helt akseptabelt:

Dette fullfører konfigurasjonen for en individuell datamaskin som ikke er en LAN-gateway. Hvis vi har tenkt å bruke datamaskinen som en gateway, må vi svare på noen flere spørsmål. Vi angir grensesnittet som gatewayen vender mot det lokale nettverket med - i vårt tilfelle er det det eth1 som det fremgår av / etc / nettverk / grensesnitt(ellers, for en "ensom" datamaskin, la dette feltet stå tomt):

På spørsmål om man skal tillate NAT-oversettelse, dvs. omdirigere trafikk fra Internett gjennom porten til det lokale nettverket og omvendt, svarer vi "ja" - dette er en av hovedoppgavene våre i dette tilfellet:

Da oppstår spørsmålet: hvilket segment av det lokale nettverket kan slippes inn gjennom videresending til eksterne nettverk? Alle datamaskiner i det lokale nettverket har rett til å få tilgang til Internett; angi verdien på nytt 192.168.2.0/24

Til slutt bekrefter vi vårt ønske om å lansere iptables uten ytterligere bekreftelse fra vår side av de automatisk genererte brannmurreglene av konfiguratoren:

Etter det, hvis alt gikk bra, vises en melding som ligner på den nedenfor. Den vil nå vises ved hver oppstart av gateway-datamaskinen og informere om vellykket oppstart av brannmuren:

Arno's Iptables Firewall Script v1.8.8c —————————————————————————— Sanitetskontroller bestått ... OK Oppdaget IPTABLES-modul ...

Laster ytterligere IPTABLES-moduler: Alle IPTABLES-moduler er lastet! Konfigurerer / proc /…. innstillinger: Aktiverer anti-spoof med rp_filter Aktiverer SYN-flombeskyttelse via SYN-informasjonskapsler Deaktivering av logging av martianere Deaktivering av aksept av ICMP-omdirigeringsmeldinger Innstilling av maks. antall samtidige tilkoblinger til 16384 Aktiverer beskyttelse mot kilderutede pakker Sette standard tidsavbrudd for tilkobling Aktiverer reduksjon av DoS'ing-evnen Innstilling Standard TTL = 64 Deaktivering av ECN (Explicit Congestion Notification) Aktiverer støtte for dynamisk IPs Flushing-rutetabell / proc / oppsett utført. .. Tømme regler i filtertabellen Sette standard (sikre) policyer Bruke loggnivå "info" for syslogd Sette opp brannmurregler: ———————————————————————— ——— - Aksepterer pakker fra den lokale tilbakekoblingsenheten Aktiverer innstilling av maksimal pakkestørrelse via MSS Aktiverer mangling TOS Logging av stealth-skanninger (nmap-prober etc.) aktivert Logging av pakker med dårlige TCP-flagg aktivert Logging av Ugyldige pakker deaktivert Logging av fragmenterte pakker aktivert Logging av tilgang fra reserverte adresser aktivert Sette opp anti-spoof-regler Lese tilpassede IPTABLES-regler fra / etc / arno-iptables-firewall / custom-rules Laster (bruker) plugins Sette opp INPUT policy for det eksterne nettet (INET): Ena bling-støtte for en DHCP-tilordnet IP på eksternt grensesnitt(er): eth0 Logging av eksplisitt blokkerte verter aktivert Logging av nektede lokale utdataforbindelser aktivert Pakker vil IKKE bli sjekket for private kildeadresser Tillater hele verden å sende ICMP-forespørsler (ping) Logging av droppede ICMP-forespørsel (ping) pakker aktivert Logging av droppede andre ICMP-pakker aktivert Logging av mulige stealth-skanninger aktivert Logging av (andre) tilkoblingsforsøk til PRIVILEGEREDE TCP-porter aktivert Logging av (andre) tilkoblingsforsøk til PRIVILEGEREDE UDP-porter aktivert Logging av ( annet) tilkoblingsforsøk til UNPRIVILEGED TCP-porter aktivert Logging av (andre) tilkoblingsforsøk til UNPRIVILEGED UDP-porter aktivert Logging av andre IP-protokoller (ikke TCP / UDP / ICMP) tilkoblingsforsøk aktivert Logging av ICMP-flooding aktivert Bruker INET-policy til ekstern (INET) grensesnitt: eth0 (uten spesifisert eksternt subnett) Sette opp INPUT-policy for interne (LAN) grensesnitt(er): eth1 Tillater ICMP-forespørsler (ping) A llowing alle (andre) protokoller Sette opp FORWARD policy for interne (LAN) grensesnitt(er): eth1 Logging av nektet LAN-> INET FORWARD tilkoblinger aktivert Sette opp LAN-> INET policy: Tillate ICMP-forespørsler (ping) Tillate alle (andre) ) protokoller Aktivering av maskering (NAT) via eksternt grensesnitt(er): eth0 Legger til (interne) vert(er): 192. 168.2.0 / 24 Sikkerhet håndheves for eksterne grensesnitt(er) i FORWARD-kjeden Jan 16 23:53:12 Alle brannmurregler ble brukt.

Merknad 1. I de fleste tilfeller skjer en vellykket oppstart av brannmuren etter den første kommunikasjonen med konfiguratoren. Hvis noe ikke fungerer, anbefales det sterkt å gjenta konfigurasjonen ved å starte konfiguratoren på nytt med superbrukerrettigheter:

# dpkg-reconfigure arno-iptables-firewall

Dette vil eliminere en og annen feil som kan oppstå når du svarer på konfiguratorens spørsmål under den første opplevelsen med den. Hvis dette heller ikke hjelper, kan du prøve å manuelt korrigere konfigurasjonsfilen til programmet. arno-iptables-brannmur, nemlig: /etc/arno-iptables-firewall/firewall.conf... Det kan være nyttig å besøke hjemmesiden til skaperen av dette programmet på http://rocky.eld.leidenuniv.nl/. Den inneholder en svært informativ manual for arbeid med programmet, en interessant FAQ og i tillegg er det informasjon om nye versjoner av programmet.

Notat 2. Ikke glem det ingen en brannmur kan ikke gi en 100 % garanti for sikkerheten til en datamaskin på Internett. Du kan imidlertid ikke overse brannmurbeskyttelsen. Vi må gjøre alt som står i vår makt for så å stole på Guds nåde. "Hvis Herren ikke bevarer byen, er vekteren forgjeves"(Salme 126:1).

Artikkelkilde

Jeg skrev et blogginnlegg om grunnleggende Iptables-regler for den arbeidende brukeren for lenge siden, og du bør sannsynligvis lese den og den relaterte artikkelen om Stateful brannmur.

Men pre-kernel 2.6.39 (som inkluderer og du kan bruke den til hvitlisting av IP hvis du har mer enn 10 for hvitelisting (hvor 10 er vilkårlig)).

Setter opp iptables for dummies

Den første håndtakstilstanden vi vet at vi vil godta eller fjerne, og grensesnittene.

Hvis du bare vil tillate IP, statsløs

det er mer sannsynlig at du får problemer med dette, og jeg foreslår at du bruker staten for å gjøre livet ditt enklere. For eksempel, løser ikke og vil sikkert forårsake problemer for visse applikasjoner.

Linux har en innebygd brannmur kalt Netfilter. I følge prosjektets offisielle nettside:

netfilter er en samling av systemmeldinger i Linux-kjernen som lar kjernemoduler registrere tilbakeringingsfunksjoner fra nettverksstakken. Den registrerte tilbakeringingsfunksjonen behandler hver pakke som går gjennom nettverksstakken.

Brannmuren i Linux styres av iptables, som har IPv4-filtreringsfunksjonalitet, ip6tables filtrerer IPv6. Denne opplæringen forklarer hvordan du lærer hvordan du bruker Netfilter (iptables) på CentOS / RHEL / Fedora / Redhat Enterprise Linux. Denne artikkelen gir grunnleggende eksempler på konfigurering av iptables i Linux for å beskytte mot inntrenging.

Eksempler på bruk av iptables

  • De fleste av handlingene som er oppført i denne artikkelen er skrevet med antagelsen om at de vil bli utført som root fra bash eller et annet moderne skall. Ikke skriv inn kommandoer på det eksterne systemet, da du kan deaktivere tilgangen for deg selv.
  • For demoformål brukte jeg ubuntu 10.04, men kommandoene skal fungere med enhver moderne distribusjon.
Viser statusen til brannmuren din
Skriv inn følgende kommando som root:
# iptables -L -n -v
Et eksempelsvar:
Kjedeinngang (policy ACCEPT 0 pakker, 0 byte) pkts byte target prot opt-in kildedestinasjon Chain FORWARD (policy ACCEPT 0 pakker, 0 bytes) pkts byte target prot opt-in kildedestinasjon Kjede OUTPUT (policy ACCEPT 0 pakker, 0 byte) pkts byte mål prot opt-in kildedestinasjon
Dette svaret betyr at brannmuren ikke er aktiv.
Og for eksempel vil dette vise at brannmuren i Linux er aktiv:

Kjedeinngang (policy ACCEPT 1810K pakker, 126M byte) pkts byte target prot opt-in kildedestinasjon 7418K 1070M ACCEPT udp - * * 0.0.0.0/0 0.0.0.0/0 udp dpt: 1194 5201 - 5eth ACCEPT 0.0.0.0/0 0.0.0.0/0 tcp dpt: 2222 flagg: 0x17 / 0x02 tilstand NY Kjede FORWARD (policy ACCEPT 5628K pakker, 482M bytes) pkts byte mål prot opt-in kildedestinasjon 0 tun pCE 0.0 .0.0 / 0 0.0.0.0/0 tcp dpt: 1111 state NY, RELATED, ETABLISHED 599K 539M ACCEPT udp - eth0 * 0.0.0.0/0 10.1.1.6 udp dpt state: 111EST2 4959 000 pakker, 880 millioner bytes) pkts byte mål prot opt-in kildedestinasjon
Nøklene i eksemplet betyr:

  • L: List opp reglene.
  • v: Viser detaljert informasjon. Denne tasten vil vise grensesnittnavnet, regelparametere og TOS-masker. Pakke- og byte-tellere vil også vises i listen, med et "K"-suffiks, "M" eller "G" avhengig av den nødvendige multiplikatoren.
  • n: Ikke løs IP-adresser, vis i digital form. Fremskynder uttak.
Legg til --line-numbers-bryteren for å se reglene med linjenumre, for eksempel:
# iptables -n -L -v --linjetall
For å se INPUT- eller OUTPUT-reglene, skriv inn:
# iptables -L INPUT -n -v # iptables -L OUTPUT -n -v --line-numbers
Stopp, start på nytt, start brannmur
Hvis du har CentOS / RHEL / Fedora Linux, skriv inn:
# tjeneste iptables stopper # tjeneste iptables starter # tjeneste iptables starter på nytt
For å rydde opp i iptables-regler med egne midler, skriv inn:
# iptables -F # iptables -X # iptables -t nat -F # iptables -t nat -X # iptables -t mangle -F # iptables -t mangle -X # iptables -P INPUT ACCEPT # iptables -P OUTPUT ACCEPT # iptables -P FRAM GODKJENT
Nøklene i eksemplet betyr:
  • F: Fjerner alle regler (spyling).
  • X: Slett en kjede
  • t <таблица>: Velg tabell og slett regler.
  • P: Angi standard policy (som DROP, REJECT eller ACCEPT).
Fjerner brannmurregler
For å vise linjenummeret sammen med annen informasjon for eksisterende regler, skriv inn:
# iptables -L OUTPUT -n --line-numbers # iptables -L OUTPUT -n --line-numbers | mindre # iptables -L OUTPUT -n --linjetall | grep 8.8.8.8
Du vil motta en liste over IP-er. Se på nummeret til venstre og skriv inn nummeret for å slette det. For å slette linjenummer 4, skriv inn:
# iptables -D INPUT 4
Eller finn kilden til IP 202.54.1.1 og fjern den fra regelen:
# iptables -D INPUT -s 202.54.1.1 -j DROP
Nøkkelen i eksemplet betyr:
  • D: fjern en eller flere regler fra den angitte kjeden
Legger til brannmurregler
For å sette inn en eller flere regler i en spesifisert kjede, brukes vanligvis følgende syntaks. Finn først ut linjenummeret:
# iptables -L INPUT -n --linjetall
Utgang for eksempel:
Kjede INPUT (policy DROP) num mål prot opt ​​kilde destinasjon 1 DROP alle - 202.54.1.1 0.0.0.0/0 2 GODKJEN ALLE - 0.0.0.0/0 0.0.0.0/0 tilstand NY, ETABLERET
For å sette inn en regel mellom 1 og 2, skriv inn:
# iptables -I INPUT 2 -s 8.8.8.8 -j DROP
For å se de oppdaterte reglene, skriv inn:
# iptables -L INPUT -n --linjetall
Utgang for eksempel:
Kjede INPUT (policy DROP) num mål prot opt ​​kilde destinasjon 1 DROP alle - 202.54.1.1 0.0.0.0/0 2 DROP alle - 8.8.8.8 0.0.0.0/0 3 ACCEPTER alle - 0.0.0.0/0 0.0. / 0 tilstand NY, ETABLERET
Lagrer brannmurregler
For å lagre brannmurregler på CentOS / RHEL / Fedora Linux, skriv inn:
# tjeneste iptables lagre
På andre distribusjoner
iptables-save> /root/my.active.firewall.rules
eller
iptables-lagre
Gjenopprette brannmurregler
For å gjenopprette brannmurregler fra filen /root/my.active.firewall.rules, skriv inn:
# iptables-restore< /root/my.active.firewall.rules
For å gjenopprette brannmurregler på CentOS / RHEL / Fedora Linux, skriv inn:
# tjeneste iptables omstart
Angi standard brannmurpolicyer
Blokker all trafikk:
# iptables -P INPUT DROP # iptables -P OUTPUT DROP # iptables -P FORWARD DROP # iptables -L -v -n
Blokker bare innkommende trafikk:
# iptables -P INPUT DROP # iptables -P FORWARD DROP # iptables -P OUTPUT ACCEPT
Blokkering av nettverksadresser til et lokalt nettverk på et eksternt grensesnitt
IP-spoofing er et angrep som bruker IP-adressen til verten den stoler på i IP-pakkene som sendes til offeret som returadresse. Pakker med ikke-ruterbare kildeadresser bør forkastes ved å bruke følgende syntaks:
# iptables -A INPUT -i eth1 -s 192.168.0.0/24 -j DROP # iptables -A INPUT -i eth1 -s 10.0.0.0/8 -j DROP
IPv4-adresseområde for private nettverk (sørg for at de er blokkert på det ytre grensesnittet)
  • 10.0.0.0/8 -j (A)
  • 172.16.0.0/12 (B)
  • 192.168.0.0/16 ©
  • 224.0.0.0/4 (MULTICAST D)
  • 240.0.0.0/5 (E)
  • 127.0.0.0/8 (LOOPBACK)
IP-blokkering
For å blokkere IP-adresse 1.2.3.4, skriv inn:
# iptables -A INPUT -s 1.2.3.4 -j DROP
Blokkering av innkommende portforespørsler
For å blokkere alle forespørsler på port 80, skriv inn:
# iptables -A INPUT -p tcp --dport 80 -j DROP # iptables -A INPUT -i eth1 -p tcp --dport 80 -j DROP
For å blokkere port 80 kun for IP 1.2.3.4, skriv inn:
# iptables -A INPUT -p tcp -s 1.2.3.4 --dport 80 -j DROP # iptables -A INPUT -i eth1 -p tcp -s 192.168.1.0/24 --dport 80 -j DROP
Utgående IP-blokkering
For å blokkere utgående trafikk fra en bestemt vert eller et bestemt domene, for eksempel et nettsted, skriv inn:
vert -t et nettsted
Svaret vil være:
nettstedet har adresse 95.211.41.31
Noter IP-adressen din og skriv inn følgende kommando for å blokkere all utgående trafikk fra 95.211.41.31:
# iptables -A OUTPUT -d 95.211.41.31 -j DROP
Du kan bruke masker:
# iptables -A OUTPUT -d 192.168.1.0/24 -j DROP # iptables -A OUTPUT -o eth1 -d 192.168.1.0/24 -j DROP
Du kan også bruke et domenenavn, skriv inn:
# iptables -A OUTPUT -p tcp -d www..ru -j DROP
Selv om dokumentasjonen sier at det ikke anbefales å bruke et domenenavn i stedet for en IP.
Logging og blokkering av pakker
Skriv inn følgende kommando for å logge og blokkere IP-spoofing på det offentlige grensesnittet kalt eth1:
# iptables -A INPUT -i eth1 -s 10.0.0.0/8 -j LOG --log-prefiks "IP_SPOOF A:" # iptables -A INPUT -i eth1 -s 10.0.0.0/8 -j DROP
Som standard logges alt til en fil. / var / log / meldinger.

Kommentar fra:

Det er bedre å ikke gjøre dette, spesielt for tydelig venstrehendt trafikk. LOG kan bare settes inn strengt med -m limit, ellers vil ethvert DoS-angrep være mange ganger mer effektivt: faktisk, indirekte, får angriperen en direkte vei med intens innvirkning direkte på serverens filsystem.
Hvordan du gjør det riktig er skrevet nedenfor
Logging og blokkering av pakker med et begrenset antall loggoppføringer
Alternativet -m kan begrense antall loggoppføringer som opprettes per tidsenhet. Dette brukes for å forhindre loggfiloversvømmelse. For å ta opp ikke mer enn 7 opptak på 5 minutter, skriv inn:
# iptables -A INPUT -i eth1 -s 10.0.0.0/8 -m limit --limit 5 / m --limit-burst 7 -j LOG --log-prefix "IP_SPOOF A:" # iptables -A INPUT -i eth1 -s 10.0.0.0/8 -j DROPPE
Blokker eller tillat trafikk fra en Mac-adresse
Bruk følgende syntaks:
# iptables -A INPUT -m mac --mac-source 00: 19: 99: 3C: AB: 23 -j DROP ## * aksepterer kun trafikk for TCP-port # 8080 fra mac 00: 19: 99: 3C: AB: 22 * ## # iptables -A INPUT -p tcp --destination-port 22 -m mac --mac-source 00: 19: 99: 3C: AB: 22 -j ACCEPT
Avslå eller tillat ICMP Ping-forespørsler
Skriv inn følgende kommando for å blokkere ICMP-forespørsler:
# iptables -A INPUT -p icmp --icmp-type ekko-forespørsel -j DROP # iptables -A INPUT -i eth1 -p icmp --icmp-type ekko-forespørsel -j DROP
Ping-svar kan også begrenses til spesifikke nettverk eller verter:
# iptables -A INPUT -s 192.168.1.0/24 -p icmp --icmp-type echo-request -j GODKJENNER
Følgende eksempel godtar bare en begrenset type ICMP-forespørsel:
### ** antok at standard INPUT policy satt til DROP ** ############## iptables -A INPUT -p icmp --icmp-type echo-reply -j ACCEPT iptables -A INPUT -p icmp --icmp-type destination-unreachable -j ACCEPT iptables -A INPUT -p icmp --icmp-type time-exceeded -j ACCEPT ## ** all serveren vår skal svare på ping ** ## iptables - A INPUT -p icmp --icmp-type ekkoforespørsel -j GODTAR
Åpning av en rekke IP-adresser
Bruk følgende syntaks for å åpne en rekke IP-adresser:
## godta kun tilkobling til tcp-port 80 (Apache) hvis ip er mellom 192.168.1.100 og 192.168.1.200 ## iptables -A INPUT -p tcp --destination-port 80 -m iprange --src-range 191.-191.- 192.168.1.200 -j GODTAK
## nat eksempel ## iptables -t nat -A POSTROUTING -j SNAT --to-source 192.168.1.20-192.168.1.25
Å stenge eller åpne offentlige havner
Følgende er syntaksen for å åpne og lukke vanlige TCP- og UDP-porter:
Erstatt ACCEPT med DROP for å blokkere port: ## åpen port ssh tcp port 22 ## iptables -A INPUT -m state --state NY -m tcp -p tcp --dport 22 -j ACCEPT iptables -A INPUT -s 192.168. 1.0 / 24 -m tilstand --state NYTT -p tcp --dport 22 -j GODKJENT ## åpne kopper (utskriftstjeneste) udp / tcp port 631 for LAN-brukere ## iptables -A INPUT -s 192.168.1.0/24 - p udp -m udp --dport 631 -j ACCEPT iptables -A INPUT -s 192.168.1.0/24 -p tcp -m tcp --dport 631 -j ACCEPT ## tillat tidssynkronisering via NTP for LAN-brukere (åpen udp-port 123) ## iptables -A INPUT -s 192.168.1.0/24 -m state --state NEW -p udp --dport 123 -j ACCEPT ## åpen tcp port 25 (smtp) for alle ## iptables -A INPUT - m tilstand --state NEW -p tcp --dport 25 -j GODKJENNER # åpne dns-serverporter for alle ## iptables -A INPUT -m state --state NEW -p udp --dport 53 -j ACCEPT iptables -A INPUT -m state --state NY -p tcp --dport 53 -j GODKJEN ## åpne http / https (Apache) serverport til alle ## iptables -A INPUT -m tilstand --state NY -p tcp --dport 80 -j GODKJEN iptables -A INNPUT -m state --state NEW -p tcp --dport 443 -j GODKJENNING ## åpne tcp port 110 (pop3) for alle ## iptables -A INPUT -m state --state NEW -p tcp --dport 110 -j ACCEPT ## åpen tcp-port 143 (imap) for alle ## iptables -A INPUT -m state --state NEW -p tcp --dport 143 -j ACCEPT ## åpen tilgang til Samba filserver kun for LAN-brukere ## iptables -A INPUT -s 192.168.1.0/24 -m tilstand --state NYTT -p tcp --dport 137 -j GODKJEN iptables -A INPUT -s 192.168.1.0/24 -m tilstand --state NY -p tcp - dport 138 -j ACCEPT iptables -A INPUT -s 192.168.1.0/24 -m state --state NEW -p tcp --dport 139 -j ACCEPT iptables -A INPUT -s 192.168.1.0/24 -m state --state NEW -p tcp --dport 445 -j GODKJENNER ## åpen tilgang til proxy-server kun for LAN-brukere ## iptables -A INPUT -s 192.168.1.0/24 -m tilstand --state NYTT -p tcp --dport 3128 - j GODKJEN ## åpen tilgang til mysql-server kun for LAN-brukere ## iptables -I INPUT -p tcp --dport 3306 -j GODKJENNER
Begrens antall samtidige tilkoblinger til serveren for hver klient med IP
Du kan bruke connlimit-modulen til å plassere slike begrensninger. For å begrense ikke mer enn 3 SSH-tilkoblinger per vert, skriv inn:
# iptables -A INPUT -p tcp --syn --dport 22 -m connlimit --connlimit-over 3 -j AVVIS
Sett HTTP-forespørsler til 20:
# iptables -p tcp --syn --dport 80 -m connlimit --connlimit-above 20 --connlimit-maske 24 -j DROP
Parametere i eksemplet,
  • --connlimit-above 3: Hvorvidt antall eksisterende tilkoblinger er over 3.
  • --connlimit-maske 24: Grupper vert etter