Articles

Linux Iptables Firewall Forenklet Eksempler

i forrige innlegg snakket vi om Hvordan Du Sikrer Linux Server Ved Hjelp Av Herdings Beste Praksis. Noen spurte meg om brannmur-delen, som var en kort introduksjon til iptables-brannmuren. I dag vil vi diskutere I detalj Linux iptables brannmur og hvordan du sikrer servertrafikken din ved hjelp av den fantastiske brannmuren.

Innholdsfortegnelse

Iptables På CentOS 7

hvis Du bruker CentOS 7, vil du finne at firewalld klarer iptables, så hvis du vil gå tilbake til iptables, må du stoppe og maskere firewalld.

$ systemctl stop firewalld$ systemctl mask firewalld

installer deretter iptables-tjenesten og aktiver den:

$ yum install iptables-services$ systemctl enable iptables
$ systemctl start iptables

Hvordan Linux brannmur fungerer

iptables brannmurfunksjoner er bygget på netfilter-rammeverket som er tilgjengelig i linux-kjernen for pakkefiltrering.

Brannmurtyper

Det finnes to typer brannmurer:

Statsløs brannmur behandler hver pakke på egen hånd, det betyr at den ikke ser andre pakker med samme tilkobling.Stateful firewall Denne typen brannmur bryr seg om alle pakker som går gjennom den, så den vet tilstanden til forbindelsen. Det gir mer kontroll over trafikken.

Netfilter inneholder tabeller. Disse tabellene inneholder kjeder, og kjeder inneholder individuelle regler.

hvis en pakke samsvarer med en regel, vil iptables bruke regelhandlingen på den pakken.

handlingene kan være: godta, avvise, ignorere eller sende pakken videre til andre regler for mer behandling.

Netfilter kan behandle innkommende eller utgående trafikk ved HJELP AV IP-adresse og portnummer.

kommandoen iptables administrerer Og konfigurerer Netfilter.

Før vi begynner å skrive brannmurkommandoer, må vi forstå brannmurstrukturen litt, slik at vi enkelt kan skrive brannmurregler.

iptables firewall tables

Netfilter har tre tabeller som kan bære regler for behandling.

iptables filtertabellen er hovedtabellen for behandling av trafikken.

den andre er nat-tabellen, som håndterer nat-regler.

den tredje tabellen er mangle-tabellen for mangling-pakker.

Bordkjeder

Hver tabell av tabellene nevnt ovenfor inneholder kjeder; disse kjedene er beholderen til reglene for iptables.

filtertabellen inneholder FORWARD -, INPUT – og OUTPUT-kjeder. Du kan opprette en egendefinert kjede for å lagre reglene på den.

hvis en pakke kommer til verten, vil iptables behandle den ved Å LEGGE inn kjederegler.

hvis pakken går til en annen vert, betyr DET AT OUTPUT chain rules vil behandle den.

iptables bruker FREMOVERKJEDEN for å håndtere pakker som har tilgang til verten, men er bestemt til en annen vert.

Kjedepolicy

hver kjede i filtertabellen har en policy. Policyen er standardhandlingen som iptables utfører.

policyen kan VÆRE SLIPP, AVVIS og GODTA.

GODTA-policyen lar pakkene passere brannmuren. DROP policy slipper en pakke uten å informere klienten. AVVISNINGSPOLICYEN slipper også pakken og informerer avsenderen.

fra et sikkerhetsperspektiv bør du slippe alle pakkene som kommer til verten og godta bare pakkene som kommer fra klarerte kilder.

Legge til iptables-regler

du kan legge til en ny regel ved hjelp av iptables-kommandoen slik:

$ iptables -A INPUT -i eth1 -p tcp --dport 80 -d 1.2.3.4 -j ACCEPT

La oss bryte denne kommandoen i stykker slik at vi kan forstå alt om det.

– a betyr at vi legger til en ny regel. Som standard legger iptables alle nye regler til filtertabellen med mindre du angir en annen tabell.

flagget-i angir enheten som skal bruke regelen på. Hvis du ikke angir en enhet, vil iptables bruke regelen for all innkommende trafikk uavhengig av enhetene.

– p-flagget angir pakkens protokoll som du vil behandle, som ER TCP i vårt tilfelle.

–dport-flagget angir målporten, som er 80.

– d angir mål-IP-adressen, som er 1.2.3.4. Hvis INGEN mål-IP-adresse er angitt, vil regelen gjelde for all innkommende trafikk på eth1 uavhengig AV IP-adresse.

– j angir handlingen ELLER HOPP-handlingen som skal utføres. Her aksepterer vi pakkene ved hjelp av akseptpolitikken.

regelen ovenfor tillater innkommende HTTP-trafikk, som er på port 80.

hva med å tillate utgående trafikk?

$ iptables -A OUTPUT -o eth1 -p tcp --sport 80 -j ACCEPT

du kan bruke-a-flagget til å legge til regler i UTGANGSKJEDEN.

– o-flagget brukes for enheten som brukes til utgående trafikk.

– sport-flagget angir kildeporten.

du kan bruke tjenestenavnet som http eller https i stedet for det numeriske portnummeret på sport eller dport. Alle tjenester navn er i / etc / tjenester fil.

du bør bruke tjenestenavnet i stedet for et portnummer, noe som gjør leseregler enklere.

iptables rules order

iptables plasserer nye regler på slutten av kjeden. Du kan legge den til toppen ved å bruke-i-alternativet.

sekvensen av reglene betyr noe som du vil se nå. Du kan sette inn reglene dine akkurat der du vil bruke I-flagget.

Se på følgende regler for å forstå hvordan regler bestiller saker:

$ iptables -I INPUT 3 -i eth1 -p udp -j ACCEPT$ iptables -I INPUT 4 -i eth1 -p udp --dport 80 -j DROP

den første regelen godtar ALL UDP-trafikk kommer til eth1, og nummer 3 er regelrekkefølgen.

den andre regelen dropper trafikken som kommer inn i port 80.Den første regelen vil akseptere all trafikk, så den andre regelen som skal slippe trafikken, vil ikke gjøre noe siden iptables passerer trafikken i den første regelen.

reglene dine bør være fornuftige siden rekkefølgen av reglene i kjeden er viktig.

Liste iptables regler

du kan liste reglene i en kjede ved hjelp av-l flagg:

$ iptables -L INPUT

du kan vise linjenumrene for regler som bruker –line-tall:

$ iptables -L INPUT --line-numbers

listen viser navnene på tjenestene. Du kan vise portnumre i stedet ved hjelp av-n alternativ:

$ iptables -L INPUT -n --line-numbers

regelen ovenfor vil gjøre oppføringen raskere fordi den forhindrer IPTABLES FRA DNS-oppløsning og serviceoppslag.

du kan liste alle regler for alle kjeder som dette:

$ iptables -L -n --line-numbers

for å få hvor mange pakker behandlet av hver regel, kan du bruke-v-flagget:

$ iptables -L -v

du kan også tilbakestille tellerne til null ved hjelp Av-Z-flagget.Nå kan vi legge til en ny regel i hvilken som helst kjede vi ønsker, vi kan sette inn regelen i en bestemt rekkefølge, og vi kan liste reglene for hvilken som helst kjede eller alle kjeder, men hva med å slette en regel?

Slette Regler

du kan slette en regel med-d-flagg:

$ iptables -D INPUT -i eth1 -p tcp --dport 80 -d 1.2.3.4 -j ACCEPT

denne kommandoen sletter HTTP-regelen du angav tidligere.

før du sletter en regel, bare sørg for regelspesifikasjonen ved å oppgi den, og slett den deretter.

du kan slette regelen ved hjelp av bestillingsnummeret i stedet for å skrive regelspesifikasjonene.

$ iptables -D INPUT 2

du kan slette alle regler i en bestemt kjede ved hjelp Av-f flagg, som betyr spyl alle regler.

$ iptables -F INPUT

hvis du glemmer å nevne kjedenavnet når du bruker-F flagg, vil alle kjederegler bli slettet.

Erstatte Regler

du kan erstatte eksisterende regler med din egen regel ved hjelp av-r flagg:

$ iptables -R INPUT 1 -i eth1 -p tcp --dport httpht -d 1.2.3.4 -j ACCEPT

denne kommandoen erstatter den første regelen i INNDATAKJEDEN med den typede regelen.

Oppføring Av Bestemt Tabell

for å liste et bestemt bord, bruk-t-flagget med tabellnavnet slik:

$ iptables -L -t nat

her lister vi reglene i nat-tabellen.

Iptables Brukerdefinert Kjede

bruk-n-flagget for å opprette en brukerdefinert kjede.

$ iptables -N MY_CHAIN

du kan også omdøpe den ved hjelp Av-e-flagget.

$ iptables -E MY_CHAIN NEW_NAME

Og du kan slette den brukerdefinerte kjeden ved hjelp Av-x-flagget.

$ iptables -X MY_CHAIN

hvis du ikke nevner kjedenavnet når du bruker-x flagg, vil det slette alle brukerdefinerte kjeder. Du kan ikke slette innebygde kjeder som INNGANG og UTGANG.

Omdirigering til En Brukerdefinert Kjede

du kan omdirigere pakker til en brukerdefinert kjede som innebygde kjeder ved hjelp av-j-flagget.

$ iptables -A INPUT -p icmp -j MY_CHAIN

regelen ovenfor vil omdirigere ALL ICMP-trafikk TIL kjeden MY_CHAIN.

Angi Standardpolicyen for Kjeder

du kan bruke-p-flagget til å angi standardpolicyen for en bestemt kjede. Standardpolicyen KAN VÆRE GODTA, AVVISE og SLIPPE.

$ iptables -P INPUT DROP

så nå vil inngangskjeden slippe noen pakke med mindre du skriver en regel for å tillate innkommende trafikk.

SYN Flooding

angriperen sender SYN-pakker bare uten å fullføre tcp-håndtrykket, og som et resultat vil mottakerverten ha mange åpne tilkoblinger, og serveren din blir for opptatt til å svare på andre klienter.

vi kan bruke limit-modulen til iptables firewall for å beskytte OSS mot SYN-flom.

$ iptables -A INPUT -i eth1 -p tcp --syn -m limit --limit 10/second -j ACCEPT

her angir vi bare 10 SYN-pakker per sekund. Du kan justere denne verdien i henhold til nettverksbehovene dine.

hvis dette vil strupe nettverket ditt, kan DU bruke SYN cookies.

SYN Cookies

I

/etc/sysctl.conf

fil og legg til denne linjen:

net.ipv4.tcp_syncookies = 1

lagre og last på nytt.

$ sysctl -p

Slipp UGYLDIGE Tilstandspakker

de UGYLDIGE tilstandspakkene er pakker som ikke tilhører noen forbindelse, og du slipper dem.

$ iptables -A INPUT -m state --state INVALID -j DROP

denne regelen vil slippe alle innkommende ugyldige tilstandspakker.

Drop Fragmenterte Pakker

Fragmenterte pakker Er ødelagte deler av store misformede pakker, og du bør skrive regler for å slippe dem.

– f-flagget forteller iptables-brannmuren å velge alle fragmenter. Så hvis du ikke bruker iptables som en ruter, kan du slippe fragmenterte pakker.

$ iptables -A INPUT -f -j DROP

Lagre iptables Regler

hvis du starter serveren på nytt, vil du miste alle regler du skrev, så hvordan fortsetter du dem?

du kan lagre alle reglene dine ved hjelp av kommandoen Iptables-save hvis Du bruker CentOS eller Red Hat.

iptables-save > /etc/sysconfig/iptables

På CentOS 7 kan du lagre regler som dette:

$ service iptables save

du kan lagre bestemt tabell som bare filtertabell:

$ iptables-save -t filter

du kan også bruke iptables-restore for å gjenopprette regler.

På Debian-baserte distroer kan du bruke iptables-persistent-pakken til å lagre og gjenopprette regler.

først installere det:

$ apt-get install iptables-persistent

deretter kan du lagre og gjenopprette regler:

$ netfilter-persistent save
$ netfilter-persistent reload

jeg håper du finner iptables brannmur lett. Fortsett å komme tilbake.

Takk.

Grunnlegger Av LikeGeeks. Jeg jobber som Linux-systemadministrator siden 2010. Jeg er ansvarlig for å opprettholde, sikre Og feilsøke Linux-servere for flere klienter over hele verden. Jeg elsker å skrive shell-og Python-skript for å automatisere arbeidet mitt.