Iptables tillater alt. Blokkering av nettverksadressene til det lokale nettverket på det eksterne grensesnittet. Åpning av en rekke IP-adresser

Iptables er hovedansvarlig for pakkefiltrering. Å konfigurere iptables manuelt er en ganske skremmende oppgave. Ikke forvent å finne ut av dette øyeblikksbildet. Heldigvis er det mange verktøy som kan hjelpe deg hvis du ikke har funnet ut av iptables ennå, og du trenger raskt å sikre systemet: fwbuilder, firestarter, guarddog, arno brannmur - faktisk er dette en GUI for iptables. Det entydige svaret er at det ikke finnes noe bedre. Det er opp til deg å velge. Imidlertid er dagens artikkel viet spesifikt til iptables og er delt inn i to deler: teori og praksis. De mest utålmodige kan gjøre den praktiske delen med en gang, selv om denne tilnærmingen ikke anbefales.

Merk følgende! Alle handlinger med iptables utføres på vegne av den privilegerte brukeren!

Teori

Opptaksformat iptables iptables [-t-tabell] [kommando] [handling] Eksempel: iptables -t-filter -A INNPUT GODKJENNER

Handlinger

  • AKSEPTERT - Godta pakken
  • DROP - Slipp en pakke
  • DNAT - Konverter destinasjonsadresse
  • SNAT - Endre utgående IP-adresse i pakkeoverskriften
  • LOGG - Logg pakker og hendelser
  • MERK - Sett et merke på en pakke
  • MASQUERADE - Endre den utgående IP-adressen i pakkehodet (i motsetning til SNAT - arbeid med dynamisk IP)
  • KØ - Sett en pakke i kø for behandling
  • OMDIREKTERING - Omdiriger pakke / strøm til en annen port
  • AVVIS - Slipp pakken + gi beskjed til det eksterne systemet om det. at pakken hennes ble avvist
  • RETURN - Stopp pakken som beveger seg langs den gjeldende kjeden og gå tilbake til anropskjeden

Kommandoer

  • -A - Legg til regelen i kjeden
  • -D - Fjern regelen fra kjeden
  • -R - Bytt ut en regel med en annen
  • -I - Sett inn ny regel
  • -L - List opp eksisterende regler
  • -F - Tilbakestill regler
  • -Z - Nullstilling av tellere i den angitte kjeden
  • -N - Oppretter en ny kjede med det gitte navnet
  • -X - Slett kjeden
  • -P - Angi standardpolicyen for den valgte kjeden
  • -E - Gi nytt navn til tilpasset kjede

Kriterier (generelt)

  • -p - Spesifiser protokolltype
  • -s er kilde-IP-en til pakken
  • -d - IP-adressen til mottakeren av pakken
  • -j - Spesifiser handlingen for regelen
  • -i - Grensesnittet som pakken ble mottatt fra
  • -o - Angi navnet på utdatagrensesnittet
  • -f - Utvid regelen til alle fragmenter av pakken

TCP-kriterier:

  • –Tcp-flagg - Spesifiser pakkemaske og flagg

UDP-kriterier:

  • –Sport - Port som pakken ble sendt fra
  • –Dport - Port som pakken er adressert til

Mer i man iptables

Øve på

Viser gjeldende konfigurasjon

$ sudo iptables -L Chain INPUT (policy ACCEPT) mål prot opt ​​kilde destinasjon Chain FORWARD (policy ACCEPT) mål prot opt ​​kilde destinasjon Kjede OUTPUT (policy ACCEPT) mål prot opt ​​kilde destinasjon

Hvis du ser noe sånt, er ikke brannmuren din konfigurert ennå og tillater alt. La oss fikse situasjonen.

Angi standardpolicy

  • iptables -P INPUT DROP - blokker innkommende pakker
  • iptables -P OUTPUT ACCEPT - tillat utgående pakker
  • iptables -P FORWARD DROP - behandler pakker som kom til serveren fra en annen maskin og venter på videre videresending. I eksemplet er det blokkert. I dette tilfellet må du legge til regler for klarerte maskiner.

Siden innkommende INPUT-pakker er blokkert, la oss skrive regelen:

$ sudo iptables -A INPUT -m state --state RELATED, ETABLISHED -j ACCEPT

Dette vil tillate å motta pakker fra en tidligere etablert tilkobling og akseptere nye pakker generert av denne tilkoblingen.

Eller spesifisere typen protokoll:

$ sudo iptables -A INPUT -p TCP -m tilstand --state ETABLERT, RELATED -j GODKJENNER $ sudo iptables -A INPUT -p UDP -m tilstand --state ETABLERT, RELATED -j GODKJENNER

Nå det lokale grensesnittet:

$ sudo iptables -A INPUT -i lo -j ACCEPT

  • NYTT - data starter en ny tilkobling.
  • ETABLERT - en pakke som kommer fra en allerede etablert tilkobling.
  • RELATED - ny datapakke, men generert av den gamle etablerte forbindelsen
  • Ugyldig - så forståelig

$ sudo iptables-save> /etc/iptables.up.rules

Aktiver disse reglene:

$ sudo iptables-restore< /etc/iptables.up.rules

Og se forskjellen:

$ sudo iptables-L

Lansering av iptables ved systemoppstart:

I katalogen /etc/init.d oppretter du en fil som heter iptables

$ sudo touch /etc/init.d/iptables

Vi foreskriver følgende i den:

#! / bin / sh / sbin / iptables-restore< /etc/iptables.up.rules

La oss gjøre iptables-filen kjørbar:

$ sudo chmod + x /etc/init.d/iptables

Legg den til autorun

$ sudo update-rc.d -n iptables standardinnstillinger

Kjører iptables på nettverkstilkobling:

$ sudo echo "#! / sbin / iptables-restore"> /etc/network/if-up.d/iptables.up.rules $ sudo iptables-save >> /etc/network/if-up.d/iptables. up.rules $ sudo chmod + x /etc/network/if-up.d/iptables.up.rules

Merk: når som helst kan du sjekke om reglene dine er lastet ved å skrive inn iptables-save fra root

For archlinux gjøres lagring av iptables-regler med kommandoen:

$ sudo rc.d lagre iptables

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 vet hvordan de setter opp beskyttelse mot DDoS og brute force, begrenser nettverkstilgang til spesifikke applikasjoner, brukere eller grupper, og gjør 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 enkelte (fortsatt) utbredte operativsystemer forblir 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 dirigert 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, # derfor er det statiske alternativet 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 hvitlisting (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.

Hver datamaskin som er koblet til nettverket er i potensiell fare. Det er mange trusler på nettverket, alt fra programmer som vil prøve å trenge inn i systemet på noen måte og slutter med hackere som ønsker å få tilgang til datamaskinen de trenger. Og programvaren som er installert på datamaskinen kan inneholde ennå ikke kjente og uopprettede sårbarheter, som kan bli et sikkerhetshull.

Hvis for hjemmedatamaskiner dette ikke er veldig relevant, siden de er koblet til nettverket gjennom rutere og NAT, som skjuler dem fra det eksterne nettverket, så er det for servere mer relevant enn noen gang. Linux-operativsystemet har en svært fleksibel og pålitelig iptables-brannmur innebygd i kjernen.

Det er ved hjelp av dette programmet at systemet er beskyttet mot eksterne inntrengninger, port forwarding, samt mange flere handlinger med trafikk. Men ulempen er at den er litt vanskelig å sette opp. Denne artikkelen vil dekke oppsett av iptables for dummies. Jeg håper at du etter det trygt kan bruke de grunnleggende egenskapene til iptables.

Iptables og Netfilter-undersystemet har vært innebygd i Linux-kjernen i ganske lang tid. Alle nettverkspakker som går gjennom datamaskinen, sendes av datamaskinen, eller er bestemt til datamaskinen, leder kjernen gjennom iptables-filteret. Der er disse pakkene mottagelige for kontroller og deretter for hver kontroll, hvis den blir bestått, utføres den spesifiserte handlingen. For eksempel sendes pakken videre til kjernen for å sendes til målprogrammet, eller kastes.

Typer pakker

Alle pakker er delt inn i tre typer: innkommende, utgående og bestått. Innboks er de som er sendt til denne datamaskinen, utgående er de som er sendt fra denne datamaskinen til nettverket. Og passerende er pakker som bare må videresendes, for eksempel hvis datamaskinen din fungerer som en ruter.

Følgelig, i iptables-filteret er alle pakker delt inn i tre lignende kjeder:

  • Inndata- behandler innkommende pakker og tilkoblinger. For eksempel, hvis en ekstern bruker prøver å koble til datamaskinen din via ssh eller et nettsted sender deg innholdet når nettleseren ber om det. Alle disse pakkene vil havne i denne kjeden;
  • framover- denne kjeden brukes til å passere forbindelser. Dette inkluderer pakker som sendes til datamaskinen din, men som ikke er ment for det, de blir ganske enkelt videresendt over nettverket til destinasjonen. Som sagt observeres dette på rutere eller for eksempel hvis datamaskinen din distribuerer wifi;
  • produksjon- denne kjeden brukes til utgående pakker og tilkoblinger. Dette inkluderer pakker som ble generert når du prøver å pinge et nettsted eller når du starter nettleseren og prøver å åpne et hvilket som helst nettsted.

Men hvis du tror at du bare kan lukke Input-kjeden helt for å øke sikkerheten, så tar du veldig feil. Nettverket bruker både input- og output-kjeder. For eksempel prøver du å pinge, data sendes gjennom utdata, men svaret kommer gjennom input. Det samme skjer når du surfer på nettsteder og andre aktiviteter. Men foroverkjeden kan ikke brukes i det hele tatt hvis datamaskinen din ikke er en ruter. Så iptables-konfigurasjonen må gjøres veldig nøye.

Regler og handlinger

Før du går videre til å lage en liste over iptables-regler, må du vurdere hvordan de fungerer og hva de er. For hver type pakke kan du angi et sett med regler som vil bli sjekket etter tur for samsvar med pakken, og hvis pakken samsvarer, bruk handlingen spesifisert i regelen på den. Regler danner en kjede, så input, output og forward kalles kjeder, eller regelkjeder. Det kan være flere handlinger:

  • AKSEPTERER- la pakken passere videre langs kjeden av regler;
  • MISTE- fjern pakken;
  • AVVIS- avvis pakken, en melding vil bli sendt til avsenderen om at pakken ble avvist;
  • LOGG- lage en registrering om pakken i loggfilen;
  • - send en pakke til en tilpasset applikasjon.

Regler kan sjekke alle treff, for eksempel etter ip, etter mottaker- eller avsenderport, pakkehoder og mye mer. Hvis en pakke ikke samsvarer med noen av reglene, brukes standardhandlingen på den, vanligvis ACCEPT.

Når vi har funnet ut av reglene, kan vi gå tilbake til kjedene. I tillegg til de som er oppført ovenfor, er det to ekstra kjeder med regler:

  • forhåndsruting- pakken går inn i denne kjeden før den behandles av iptables, systemet vet ennå ikke hvor den vil bli sendt, for å legge inn, ut eller videresende;
  • postrouting- alle beståtte pakker som allerede har passert videresendingskjeden er inkludert her.

Men det er ikke alt. Vi har også iptables-tabeller, som det også er ønskelig å forstå.

Ipatables

Det er et annet abstraksjonsnivå over regelkjedene i iptables, og det er tabeller. Det er flere tabeller i systemet, og de har alle et standard sett med input-, forward- og output-kjeder. Tabeller brukes til å utføre ulike handlinger på pakker, for eksempel for modifikasjon eller filtrering. Nå er ikke dette så viktig for deg, og det vil være nok å vite at filtreringen av iptables-pakker utføres i filtertabellen. Men vi skal dekke dem alle:

  • - designet for å fungere med råposer, mens de ennå ikke er behandlet;
  • mangle- beregnet for å modifisere pakker;
  • nat- Gir nat til å fungere hvis du vil bruke datamaskinen som ruter;
  • filter- hovedtabellen for pakkefiltrering, brukt som standard.

Med nesten alt i teorien, la oss nå se på iptables kommandolinjeverktøy, som brukes til å administrere iptables-systemet.

Iptables-verktøyet

Iptables og netfilter-undersystemet er innebygd i kjernen, men et sett med verktøy for å administrere alt dette er ikke alltid levert med systemet. For å installere verktøyet på Ubuntu, skriv inn:

sudo apt installer iptables

På Fedora-baserte distribusjoner er iptables-installasjonen litt annerledes:

sudo yum installer iptables

Når iptables-installasjonen er fullført, kan du gå videre til konfigurasjonen, men la oss først se på verktøyets syntaks. Vanligvis ser kommandoen slik ut:

-t bord handling kjede Ekstra alternativer

La oss nå ta en titt på iptables-parametrene, tabellen angir tabellen som det skal jobbes med, denne parameteren kan utelates, handlingen er ønsket handling, for eksempel opprette eller slette en regel, og tilleggsparametrene beskriver handlingen og regelen som skal utføres.

Det gjenstår å vurdere hovedhandlingene som iptables lar deg utføre:

  • -EN- legg til en regel i kjeden;
  • -MED- sjekk alle reglene;
  • -D- fjern regelen;
  • -JEG- sett inn en regel med det nødvendige nummeret;
  • -L- vis alle reglene i gjeldende kjede;
  • -S- vis alle reglene;
  • -F- slett alle regler;
  • -N- lage en kjede;
  • -X- slett kjeden;
  • -P- angi standardhandlingen.

Ytterligere alternativer for regler:

  • -s- spesifiser protokollen, en av tcp, udp, udplite, icmp, icmpv6, esp, ah, sctp,
    mh;
  • -s- spesifiser ip-adressen til enheten som sender pakken;
  • -d- spesifiser mottakerens ip-adresse;
  • -Jeg- input nettverksgrensesnitt;
  • -o- utgående nettverksgrensesnitt;
  • -j- velg en handling hvis regelen samsvarer.

Nå kan du fortsette å se på eksempler på hvordan iptables er konfigurert.

Iptables-konfigurasjonseksempler

Vi vil gå over noen grunnleggende eksempler slik at du kan konsolidere det du leser ovenfor.

Liste over regler

La oss først se hvordan iptables-regeloppslaget utføres, alternativet -L er nok for dette:

Du kan også spesifisere ønsket kjede for å vise regler bare for den:

iptables -L INPUT

Ryddingsregler

Du kan ikke bare deaktivere iptables ved å stoppe iptables-regeloppdateringstjenesten gjennom systemd eller til og med fjerne settet med konfigurasjonsverktøy. Undersystemet fungerer på kjernenivå og er ikke avhengig av hva du har installert der. Derfor, hvis du gjør noe galt, må du fjerne reglene. For å gjøre dette, kjør:

Eller bare for en bestemt kjede:

sudo iptables -F Input

La meg minne deg på at alle disse handlingene utføres for standardtabellen - filter.

Standard regler

Som jeg allerede sa, hvis ingen regel passer for en pakke, blir standardhandlingen brukt på den. Det kan stilles inn ved å bruke -p-alternativet:

sudo iptables -p INPUT ACCEPT
$ sudo iptables -p OUTPUT ACCEPT
$ sudo iptables -p FORWARD DROP

I dette eksemplet tillater vi INPUT- og OUTPUT-kjeder, men tillater ikke FORWARD.

Blokkering av pakker

For å blokkere pakker kan vi bruke DROP-handlingen, vi kan filtrere pakker som må blokkeres etter mange kriterier, for eksempel protokoll, ip-adresse, nettmaske, port og mye mer.

Slik vil kommandoen se ut, som lar deg legge til en iptables-regel for å blokkere alle innkommende pakker fra 10.10.10.10:

sudo iptables -A INPUT -s 10.10.10.10 -j DROP

Og nå utgående pakker til samme adresse:

IP-områdelåsing gjøres på lignende måte. For å gjøre dette må du bruke nettverksmasken 10.10.10.0/24. Disse vil være alle adresser fra 10.10.10.0 til 10.10.10.255:

sudo iptables -A INPUT -s 10.10.10.0/24 -j DROP

Eller en utvidet versjon av masken:

sudo iptables -A INPUT -s 10.10.10.0/255.255.255.0 -j DROP

Du kan også blokkere alle innkommende ssh-tilkoblinger:

sudo iptables -A INPUT -p tcp --dport ssh -s 10.10.10.10 -j DROP

Som du kan se, er det veldig enkelt å legge til en iptables-regel.

Fjerner regler

Sletting av iptables-regler utføres på samme måte som å lage nye, bare i stedet for alternativ A, må du bruke alternativ D. Se først på listen over regler:

Slik kan du for eksempel slette iptables-regelen som ble opprettet den andre:

sudo iptables -A OUTPUT -s 10.10.10.10 -j DROP

Du kan også fjerne iptables fullstendig ved å kjøre kommandoen med -F-alternativet:

Definisjon Jegptables- kommandolinjeverktøy, er et standard grensesnitt for å administrere driften av en brannmur (brannmur) nettfilter for Linux-kjerner 2.4, 2.6, 3.x, 4.x. Iptables-verktøyet krever superbruker (root) privilegier.

Vi vil forholde oss til iptables og du klarer deg ikke uten en liten teoretisk innføring.

For å kunne utarbeide brannmurregler på riktig måte, må du forstå hvordan pakker generelt går og hva som skjer med dem.

Rekkefølgen for flytting av transittpakker

Steg bord Kjede Merk
1
2 mangle PREROUTING Vanligvis brukes denne strengen til å gjøre endringer i pakkehodet, for eksempel for å endre biter TOS etc ..
3 nat PREROUTING Denne kjeden brukes til å oversette nettverksadresser ( ). utføres senere i en annen kjede.
4 Ta beslutning om videre dirigering, d.v.s. på dette tidspunktet bestemmes det hvor pakken skal gå - til en lokal applikasjon eller til en annen node på nettverket.
5 mangle FRAMOVER Så går pakken inn i kjeden FRAMOVER mangle bord.
6 Filter FRAMOVER I en kjede FRAMOVER bare de pakkene mottas som går til en annen vert. All transittrafikkfiltrering må utføres her. Ikke glem at trafikken går gjennom denne kjeden i begge retninger, sørg for å ta hensyn til denne omstendigheten når du skriver filtreringsregler.
7 mangle POSTRUTING Denne kjeden er ment å gjøre endringer i pakkehodet etter at den siste rutebeslutningen er tatt.
9 nat POSTRUTING Denne kjeden er primært beregnet på Oversettelse av kildenettverksadresse... Maskerading utføres også her ( Maskering).
9 Output nettverksgrensesnitt (for eksempel eth1).

For lokal applikasjon (innkommende pakker)

Steg bord Kjede Merk
1 Inndatanettverksgrensesnitt (f.eks. eth0)
2 mangle PREROUTING Brukes vanligvis til å gjøre endringer i pakkehodet, for eksempel for å sette biter TOS etc.
3 nat PREROUTING Adresseoversettelse ( Oversettelse av destinasjonsnettverksadresse).
4 Bestem deg for ruting.
5 mangle INNGANG Pakken går inn i kjeden INNGANG mangle bord. Det er her endringene i pakkehodet gjøres før de sendes til den lokale applikasjonen.
6 filter INNGANG Det er her innkommende trafikk filtreres. Husk at alle innkommende pakker adressert til oss går gjennom denne kjeden, uavhengig av hvilket grensesnitt de kom fra.
7 Lokal prosess/applikasjon (dvs. serverprogram eller klientprogram)

Fra lokale prosesser (utgående pakker)

Steg bord Kjede Merk
1 Lokal prosess (dvs. serverprogram eller klientprogram).
2 Bestem deg for ruting. Her bestemmes det hvor pakken skal gå videre - til hvilken adresse, gjennom hvilket nettverksgrensesnitt osv.
3 mangle PRODUKSJON Det er her du gjør endringer i pakkeoverskriften. Å utføre filtrering i denne kjeden kan ha negative konsekvenser.
4 nat PRODUKSJON Denne kjeden brukes til nettverksadresseoversettelse (NAT) i pakker som stammer fra lokale brannmurprosesser.
5 Filter PRODUKSJON Utgående trafikk filtreres her.
6 mangle POSTRUTING Kjede POSTRUTING Mangletabellene brukes hovedsakelig for regler som må gjøre endringer i pakkehodet før den forlater brannmuren, men etter at en rutebeslutning er tatt. Denne kjeden inneholder alle pakker, både transitt og de som er opprettet av lokale brannmurprosesser.
7 nat POSTRUTING Her er henrettet Oversettelse av kildenettverksadresse... Unngå pakkefiltrering i denne kjeden for å unngå uønskede bivirkninger. Du kan imidlertid stoppe pakker her også ved å bruke standardpolicyen. MISTE.
8 Nettverksgrensesnitt (f.eks. eth0)

Som vi forstår, er det tre hovedtabeller:

  • mangle- Denne tabellen er beregnet for operasjoner på klassifisering og merking av pakker og tilkoblinger, samt modifikasjon av pakkehoder (TTL- og TOS-felt).
  • filter- hovedtabellen for pakkefiltrering, brukt som standard. Faktisk, i denne tabellen, forekommer pakkefiltrering.
  • nat- Gir nat til å fungere hvis du vil bruke datamaskinen som ruter. Ruteregler er satt her.

For bord nat gjeldende handlinger:

  • MASKERADE

Handling DNAT(Destination Network Address Translation) oversetter destinasjonsadresser i pakkehoder. Med andre ord, denne handlingen omdirigerer pakker til andre adresser enn de som er spesifisert i pakkehodene.

SNAT(Source Network Address Translation) brukes til å endre kildeadressene til pakker. Med denne handlingen deler du en enkelt ekstern IP-adresse mellom datamaskiner på det lokale nettverket for å få tilgang til Internett. I dette tilfellet bruker brannmuren SNAT, utfører automatisk forover- og tilbakeadresseoversettelse, og gjør det dermed mulig å koble til servere på Internett fra datamaskiner i det lokale nettverket.

Forkledning ( MASKERADE) brukes til samme formål som SNAT, men i motsetning til sistnevnte, MASKERADE legger en tyngre belastning på systemet. Dette skjer fordi hver gang denne handlingen er nødvendig, blir det bedt om en IP-adresse for nettverksgrensesnittet som er spesifisert i handlingen, mens for SNAT IP-adressen angis direkte. Men på grunn av denne forskjellen, MASKERADE kan fungere i tilfeller med dynamisk IP-adresse, dvs. når du kobler til internett, si gjennom OPS, SLIP eller DHCP.

iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o eth0 -j MASQUERADE

Henrette MASKERADE for alle pakker som kommer fra nettverket 10.8.0.0 til eth0-grensesnittet. For klarhetens skyld, la oss si at vi har to nettverkskort og to nettverk. Vi trenger et nettverk 10.8.0.0/24 (det første nettverkskortet) kan gå, for eksempel, til Internett gjennom eth0 ( andre nettverkskort)

  • - Designet for å utføre handlinger med pakker før de behandles av systemet.

Selve standardtabellen filter.

  • INNGANG- håndterer trafikk som går direkte til verten selv.
  • FRAMOVER- lar deg filtrere transittrafikk.
  • PRODUKSJON- lar deg filtrere trafikk som stammer fra verten selv.

Handling på en pakke.

  • AKSEPTERER- hoppe over pakken. Pakken forlater den gjeldende basekjeden og fortsetter.
  • AVVIS- blokkere pakken og informere kilden om avslaget.
  • MISTE- blokkere pakken uten å informere kilden om avslaget. Det er mer å foretrekke når du filtrerer trafikk på grensesnitt koblet til Internett, siden det senker informasjonsinnholdet i skanning av vertsporter av angripere.
  • LOGG- skriv en post om pakken til loggfilen.

Det viser seg at vi har en kjede [tabell - filter] - [trafikk - INPUT] - [handling - DROP] Handlingslogikken virker bare komplisert. Jeg tror vi finner ut av det med eksempler og alt blir enkelt.

Iptables kommandoer:

  • -EN legg til en regel på slutten av kjeden.
  • -D fjerne regelen.
  • -JEG sett inn regelen med ønsket nummer.
  • -L skrive ut alle reglene i gjeldende kjede.
  • -S utlede alle reglene.
  • -F fjerne alle regler.
  • -N lage en kjede.
  • -X slette kjeden.
  • -P angi standardhandling.

La oss begynne å forstå med spesifikke eksempler.

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

-EN legg til en ny regel, INNGANG for innkommende pakker, -s protokoll, en av tcp, udp, udplite, icmp, icmpv6, esp, ah, sctp,
mh, - - dport destinasjonsport 80 (bare alternativ for protokoll), -j velg en handling hvis regelen samsvarer, AKSEPTERER tillate. Det vil si, tillat innkommende tcp-trafikk på port 80.

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

-s kildeadresse - vertsnavn (www.help.com), IP-adresse eller subnett i CIDR-notasjon (192.168.0.1/16), ! inversjon, MISTE forby. Avvis all innkommende trafikk unntatt kilden 192.168.0.50 (hvis det ikke var for ! , så avslå bare fra 192.168.0.50)

iptables -A INPUT -s 192.168.0.50 -j DROP

Nekt innkommende trafikk fra ip - 192.168.0.50 .

Liste over regelkriterier:

  • -s Protokoll, protokoll kan også spesifiseres ved å bruke et nummer eller navn i henhold til oppføringen gitt i / etc / protokoller. Enhver protokoll kan spesifiseres ved å bruke ordet alle eller tallet 0. Det er også tilleggsparametere for protokollen.: -Sport(—Kilde-port) Lar deg spesifisere den utgående porten (eller deres rekkevidde). —Dport(—Destinasjon-port) Lar deg spesifisere destinasjonsporten (eller deres rekkevidde).
  • -s Angir avsenderens adresse. Adressen kan være en IP-adresse (eventuelt med maske), et domenenavn (i de to sistnevnte tilfellene, før du legger til en regel i kjeden, blir navnet løst til en IP-adresse).
  • -Jeg Spesifiserer det innkommende nettverksgrensesnittet. Hvis det angitte grensesnittnavnet slutter med "+" (for eksempel eth +), samsvarer alle grensesnitt hvis navn begynner med det angitte navnet (etho, eth1) kriteriene.
  • -d Angir mottakerens adresse. Syntaksen er den samme -s .
  • -o Definerer det utgående nettverksgrensesnittet. Syntaksen er den samme -Jeg.

De samme kriteriene kan kombineres.

iptables -A INPUT -i eth0 -s 192 .168.0.0 -j DROP

Nekt innkommende pakker fra grensesnittet eth0 og ip 192.168.0.0... Og på grensesnittet eth1 pakkene vil gå gjennom.

Hva om du for tidlig vet ikke hvilken port du skal åpne, for eksempel vil du at FTP-serveren skal fungere i passiv modus. Modul kobling om tilstanden til forbindelsen vil hjelpe, og mer spesifikt kriteriet - ctstate. Modulen er koblet sammen med taggen -m.

iptables -A INPUT -m conntrack -ctstate ETABLISHED, RELATED -j ACCEPT

iptables -A INPUT -m conntrack —ctstate NEW -p tcp —dport 21 -j GODKJENNER # Tillat å åpne tilkoblinger på TCP-port 21.

Mulige tilstander:

  • NY- forbindelsen er ikke åpen, det vil si at pakken er den første i forbindelsen.
  • ETABLERT- pakken refererer til en allerede etablert tilkobling. Vanligvis mottas slike pakker uten ekstra filtrering, slik tilfellet er med RELATED.
  • I SLEKT- pakken åpner en ny tilkobling som er logisk relatert til de allerede etablerte, for eksempel åpner en datakanal i passiv FTP-modus. Tilkoblingen får status I SLEKT hvis den er assosiert med en annen forbindelse som har attributtet ETABLERT.
  • UGYLDIG– INVALID-flagget betyr at pakken ikke kan identifiseres og derfor ikke kan ha en viss status.

iptables -A INPUT -m state -state ETABLISHED, RELATED -j ACCEPT

S tate og den deologiske forgjengeren til conntrack, har en enkelt --state-parameter, som ligner --ctstate-parameteren til conntrack-modulen (men, i motsetning til den, støtter den ikke DNAT- og SNAT-tilstander).

La oss ta en rask titt på skattetabellen, som finnes i filen / proc / net / ip_conntrack. Denne inneholder en liste over alle aktive tilkoblinger.

Tcp 6 300 ETABLERT src = 128. *. *. * Dst = 194. *. *. * Sport = 52524 dport = 2223 src = 194. *. *. * Dst = 128. *. *. * Sport = 2223 dport = 52524 mark = 0 bruk = 2

Den første, som det er klart, er protokollen, deretter desimaltallet (som betyr at jeg ikke vet), deretter tilkoblingens levetid. Videre er tilstanden ETABLERT, det vil si at forbindelsen allerede er etablert, det skjer også UBEVART, noe som betyr at det ikke har vært noen responstrafikk ennå. Neste er adressene til avsender og mottaker, porten til avsender og mottaker. Videre er det motsatte sant, respektivt, SIKKERT dette flagget indikerer at forbindelsen er etablert trygt og denne posten vil ikke bli slettet når maksimalt mulig antall sporede forbindelser er nådd.

Noen funksjoner i protokollene.

En TCP-forbindelse etableres alltid ved overføring av tre pakker, som initialiserer og etablerer en forbindelse som data vil bli overført gjennom i fremtiden. Økten starter med overføringen SYN pakke, som svar på som sendes SYN / ACK pakke og bekrefte etableringen av tilkoblingspakken ACK .

Så snart sporeren så den første ( SYN)-pakken, og tildeler den deretter statusen NY... Så snart den andre pakken ( SYN / ACK), så tildeles tilkoblingen statusen ETABLERT.

Med UDP-protokollen er alt litt annerledes, denne protokollen sørger ikke for etablering og stenging av en forbindelse, men den største ulempen er mangelen på informasjon om rekkefølgen for ankomst av pakker. Men fra sporerens synspunkt er alt det samme som med TCP. Den første pakken som ankommer får statusen NY. Så snart du sender svarpakken, blir statusen tildelt ETABLERT. Den eneste forskjellen er at ASSURED-statusen kun tildeles når flere pakker allerede er byttet.

Logging av regelapplikasjoner.

iptables gir deg muligheten til å logge individuelle pakker og hendelser. For dette brukes handlingen LOGG.

iptables -A INPUT -p tcp —syn -j LOG —log-nivå info —log-prefiks "INPUT-pakker"

— Logg-nivå Brukes til å stille inn loggnivået. For en fullstendig liste over nivåer, se syslog.conf-mannen. Vanligvis kan følgende nivåer settes: feilsøke, info, legge merke til, advarsel, varsle, feil, feil, crit, varsling, dukke opp og panikk... Logger skrives til en fil syslog.

— Logg-prefiks Tasten setter teksten (prefikset) som skal brukes før alle meldinger iptables... Meldinger med et spesifikt prefiks kan da enkelt finnes, for eksempel ved hjelp av grep... Prefikset kan være opptil 29 tegn langt, inkludert mellomrom.

1. juni 17:12:20 debian-kjerne: INNPUT-pakker IN = eth0 OUT = MAC = 02: 1e: 6d: 00: e2: 1c: 00: 01: e8: 11: 73: 69: 08: 00 SRC = 125.94. 12,95 DST = 194.87.239.104 LEN = 40 TOS = 0x00 PREC = 0x00 TTL = 52 ID = 38690 PROTO = TCP SPT = 12557 DPT = 23 VINDU = 1460 $ 0 S = 0xURGP0

Populære iptables-administrasjonskommandoer.

iptables -L -n --linjetallSe listen over regler.

-n portnummer og ip i digital form.

—Linjenummer linjenummer.

iptables -F Tilbakestill reglene fullstendig.

iptables -P INPUT ACCEPT Standardregler for INPUT-tabellen.
iptables -P OUTPUT ACCEPT Standardregler for OUTPUT-tabellen.
iptables -P FREMOVER DROP Standardregler for FORWARD-tabellen.

iptables -D INPUT 1Sletter en regel etter nummeret i kjeden.

iptables -D INPUT -s 123.45.67.89 -j DROP Fjerne en regel basert på hva den gjør.

iptables -I INPUT ... Sett inn en regel i begynnelsen av en kjede.

iptables -I INPUT 3 ... Eller du kan spesifisere en spesifikk stilling.

OMdirigere

REDIRECT-handlingen er utformet for å omdirigere pakker fra ett sett med porter til et annet innenfor ett system, uten å forlate verten.
OMDIREKTERING fungerer bare i PREROUTING- og OUTPUT-kjeder i tabellen nat... Derfor er omfanget begrenset til kun omdirigering. Dette brukes oftest for en transparent proxy, når en klient fra det lokale nettverket kobler til port 80, og gatewayen omdirigerer pakker til den lokale proxy-porten:

iptables -t nat -A PREROUTING -p tcp —dport 80 -j REDIRECT —to-port 3128

Nye regler lagres ikke automatisk og trer ikke i kraft etter omstart av serveren. Derfor, etter å ha endret iptables, må vi lagre endringene.

iptables - gjenopprett> / etc / iptablesLast inn regler fra fil.

Måten å lagre og laste inn regler er etter ditt skjønn. Vi møtte bare det grunnleggende om iptables-teori, selvfølgelig, det er mye flere tilpasningsmuligheter. Flere detaljer som vi vil fortelle i en annen artikkel.

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 mål prot opt-in kildedestinasjon Chain FORWARD (policy ACCEPT 0 pakker, 0 byte) 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 NEW -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 GODTAR ## å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 state --state NEW -p tcp --dport 25 -j GODKJENNING # åpne dns-serverporter for alle ## iptables -A INPUT -m state --state NEW -p udp --dport 53 -j ACCEPT iptables -A INPUT -m state --state NEW -p tcp --dport 53 -j GODKJENNING ## åpne http / https (Apache) serverport til alle ## iptables -A INPUT -m state --state NEW -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 state --state NYTT -p tcp --dport 137 -j GODKJEN iptables -A INPUT -s 192.168.1.0/24 -m state --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 GODTAR ## å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 for å 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