Begynnerveiledningen til iptables, Linux-brannmuren

Innholdsfortegnelse:

Begynnerveiledningen til iptables, Linux-brannmuren
Begynnerveiledningen til iptables, Linux-brannmuren

Video: Begynnerveiledningen til iptables, Linux-brannmuren

Video: Begynnerveiledningen til iptables, Linux-brannmuren
Video: Camping in the Rain with Dog - ASMR - YouTube 2024, April
Anonim
Iptables er et ekstremt fleksibelt brannmurverktøy bygget for Linux operativsystemer. Enten du er en nybegynner Linux-geek eller en systemadministrator, er det sannsynligvis en måte at iptables kan være til stor nytte for deg. Les videre som vi viser deg hvordan du konfigurerer den mest allsidige Linux-brannmuren.
Iptables er et ekstremt fleksibelt brannmurverktøy bygget for Linux operativsystemer. Enten du er en nybegynner Linux-geek eller en systemadministrator, er det sannsynligvis en måte at iptables kan være til stor nytte for deg. Les videre som vi viser deg hvordan du konfigurerer den mest allsidige Linux-brannmuren.

Foto av ezioman.

Om iptables

iptables er et kommandolinje-brannmurverktøy som bruker policykjeder for å tillate eller blokkere trafikk. Når en tilkobling prøver å etablere seg på systemet ditt, ser iptables etter en regel i listen for å matche den til. Hvis den ikke finner en, skiller den seg til standardhandlingen.

iptables kommer nesten alltid forhåndsinstallert på en hvilken som helst Linux-distribusjon. For å oppdatere / installere det, hent bare iptables-pakken:

sudo apt-get install iptables

Det er GUI alternativer til iptables som Firestarter, men iptables er egentlig ikke så vanskelig når du har noen kommandoer ned. Du vil være ekstremt forsiktig når du konfigurerer iptables-regler, spesielt hvis du er SSH'd inn i en server, fordi en feil kommando kan permanent låse deg ut til den er manuelt festet på den fysiske maskinen.

Typer av kjeder

iptables bruker tre forskjellige kjeder: input, forward og output.

Input - Denne kjeden brukes til å kontrollere oppførselen for innkommende tilkoblinger. For eksempel, hvis en bruker forsøker å SSH inn i din PC / server, vil iptables forsøke å matche IP-adressen og porten til en regel i inngangskjeden.

Framover - Denne kjeden brukes til innkommende tilkoblinger som ikke blir levert lokalt. Tenk på en ruter - data blir alltid sendt til det, men sjelden faktisk bestemt for ruteren selv; dataene er bare videresendt til målet sitt. Med mindre du gjør noen form for ruting, NATing eller noe annet på systemet ditt som krever videresending, vil du ikke engang bruke denne kjeden.

Det er en sikker brann måte å kontrollere om systemet ditt bruker eller trenger fremoverkjeden.

iptables -L -v

Skjermbildet ovenfor er av en server som har kjørt i noen uker, og har ingen begrensninger på innkommende eller utgående tilkoblinger. Som du ser, har inngangskjeden behandlet 11 GB pakker og utgangskjeden har behandlet 17 GB. Foroverkjeden har derimot ikke behøvd å behandle en enkelt pakke. Dette skyldes at serveren ikke gjør noen form for videresending eller blir brukt som en pass-through-enhet.
Skjermbildet ovenfor er av en server som har kjørt i noen uker, og har ingen begrensninger på innkommende eller utgående tilkoblinger. Som du ser, har inngangskjeden behandlet 11 GB pakker og utgangskjeden har behandlet 17 GB. Foroverkjeden har derimot ikke behøvd å behandle en enkelt pakke. Dette skyldes at serveren ikke gjør noen form for videresending eller blir brukt som en pass-through-enhet.

Produksjon - Denne kjeden brukes til utgående tilkoblinger. For eksempel, hvis du prøver å pinge howtogeek.com, vil iptables sjekke utgangskjeden for å se hva reglene gjelder for ping og howtogeek.com før du tar en beslutning om å tillate eller nekte tilkoblingsforsøk.

Advarsel

Selv om pinging av en ekstern vert virker som noe som bare trenger å krysse utgangskjeden, må du huske at for å returnere dataene, vil inngangskjeden også bli brukt. Når du bruker iptables for å låse systemet, husk at mange protokoller krever toveiskommunikasjon, så både inngangs- og utgangskjeder må konfigureres riktig. SSH er en felles protokoll som folk glemmer å tillate på begge kjedene.

Policy Chain Standard Oppførsel

Før du går inn og konfigurerer bestemte regler, vil du ønske å bestemme hva du vil at de tre kjedene skal ha som standard. Med andre ord, hva vil iptables gjøre hvis forbindelsen ikke samsvarer med eksisterende regler?

For å se hvilke policykjeder du for øyeblikket er konfigurert til å gjøre med uovertruffen trafikk, kjør du

iptables -L

kommando.

Som du kan se, brukte vi også grep-kommandoen for å gi oss renere utgang. I det skjermbildet er våre kjeder for tiden avtalt for å akseptere trafikk.
Som du kan se, brukte vi også grep-kommandoen for å gi oss renere utgang. I det skjermbildet er våre kjeder for tiden avtalt for å akseptere trafikk.

Flere ganger enn ikke, vil du at systemet ditt skal godta tilkoblinger som standard. Med mindre du har endret retningslinjene for policykjeden tidligere, bør denne innstillingen allerede være konfigurert. Uansett, her er kommandoen for å godta tilkoblinger som standard:

iptables --policy INPUT ACCEPT

iptables --policy OUTPUT ACCEPT

iptables --policy FORWARD ACCEPT

Ved å standardisere til aksepteringsregelen, kan du deretter bruke iptables til å nekte bestemte IP-adresser eller portnumre, mens du fortsetter å godta alle andre tilkoblinger. Vi kommer til disse kommandoene om et minutt.

Hvis du hellere vil nekte alle tilkoblinger og angi manuelt hvilke som du vil tillate å koble til, bør du endre standardpolitikken for kjedene dine for å slippe. Å gjøre dette ville trolig bare være nyttig for servere som inneholder sensitiv informasjon og bare noen gang har de samme IP-adressene koble til dem.

iptables --policy INPUT DROP

iptables --policy OUTPUT DROP

iptables --policy FORWARD DROP

Tilkoblingsspesifikke svar

Med standardkjedepolicyen din konfigurert, kan du begynne å legge til regler for iptables, slik at den vet hva de skal gjøre når den møter en forbindelse fra eller til en bestemt IP-adresse eller -port. I denne veiledningen skal vi gå over de tre mest grunnleggende og brukte "responsene".

Aksepterer - Tillat tilkoblingen.

Miste - Slett forbindelsen, opptre som det aldri skjedde. Dette er best hvis du ikke vil at kilden skal innse at systemet ditt eksisterer.

Avvis - Ikke tillat tilkoblingen, men send en feilmelding tilbake. Dette er best hvis du ikke vil at en bestemt kilde skal koble til systemet ditt, men du vil at de skal vite at brannmuren blokkerte dem.

Den beste måten å vise forskjellen mellom disse tre reglene på er å vise hvordan det ser ut når en PC prøver å pinge en Linux-maskin med iptables konfigurert for hver av disse innstillingene.

Tillat tilkoblingen:

Avviser forbindelsen:
Avviser forbindelsen:
Image
Image

Tillat eller blokkering av bestemte tilkoblinger

Når konfigurasjonskjedene er konfigurert, kan du nå konfigurere iptables for å tillate eller blokkere bestemte adresser, adresser og porter. I disse eksemplene vil vi sette sammenkoblingene til

DROP

men du kan bytte dem til

ACCEPT

eller

REJECT

avhengig av dine behov og hvordan du har konfigurert dine policykjeder.

Merk: I disse eksemplene skal vi bruke

iptables -A

å legge til regler i den eksisterende kjeden. iptables starter øverst på listen og går gjennom hver regel til den finner en som den samsvarer med. Hvis du trenger å sette inn en regel over en annen, kan du bruke

iptables -I [chain] [number]

å spesifisere nummeret det skal være i listen.

Tilkoblinger fra en enkelt IP-adresse

Dette eksemplet viser hvordan du blokkerer alle tilkoblinger fra IP-adressen 10.10.10.10.

iptables -A INPUT -s 10.10.10.10 -j DROP

Tilkoblinger fra en rekke IP-adresser

Dette eksemplet viser hvordan du blokkerer alle IP-adressene i 10.10.10.0/24-nettverket. Du kan bruke en nettmaske eller standard slash notation for å angi rekkevidden av IP-adresser.

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

eller

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

Tilkoblinger til en bestemt port

Dette eksemplet viser hvordan du blokkerer SSH-tilkoblinger fra 10.10.10.10.

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

Du kan erstatte "ssh" med hvilken som helst protokoll eller portnummer. De

-p tcp

En del av koden forteller iptables hvilken type tilkobling protokollen bruker. Hvis du blokkerte en protokoll som bruker UDP i stedet for TCP, så

-p udp

ville være nødvendig i stedet.

Dette eksemplet viser hvordan du blokkerer SSH-tilkoblinger fra en hvilken som helst IP-adresse.

iptables -A INPUT -p tcp --dport ssh -j DROP

Tilkoblingsstater

Som nevnt tidligere, vil mange protokoller kreve toveiskommunikasjon. Hvis du for eksempel vil tillate SSH-tilkoblinger til systemet ditt, vil inn- og utgangskjeder trenge en regel som er lagt til dem. Men, hva hvis du bare vil at SSH kommer inn i systemet ditt for å få lov? Vil ikke legge til en regel i utgangskjeden også tillate utgående SSH-forsøk?

Det er her forbindelsestilstandene kommer inn, noe som gir deg muligheten du trenger for å tillate toveiskommunikasjon, men bare tillate enveisforbindelser å bli etablert. Ta en titt på dette eksemplet, hvor SSH-tilkoblinger FRA 10.10.10.10 er tillatt, men SSH-tilkoblinger til 10.10.10.10 er ikke. Systemet har imidlertid lov til å sende tilbake informasjon over SSH så lenge sesjonen allerede er etablert, noe som gjør SSH-kommunikasjon mulig mellom disse to vertene.

iptables -A INPUT -p tcp --dport ssh -s 10.10.10.10 -m state --state NEW,ESTABLISHED -j ACCEPT

iptables -A OUTPUT -p tcp --sport 22 -d 10.10.10.10 -m state --state ESTABLISHED -j ACCEPT

Lagrer endringer

Endringene du gjør i iptables-reglene dine, vil bli slettet neste gang iptables-tjenesten starter på nytt med mindre du utfører en kommando for å lagre endringene. Denne kommandoen kan variere avhengig av distribusjonen din:

Ubuntu:

sudo /sbin/iptables-save

Red Hat / CentOS:

/sbin/service iptables save

Eller

/etc/init.d/iptables save

Andre kommandoer

Oppgi de gjeldende konfigurerte iptables-reglene:

iptables -L

Legge til

-v

alternativet vil gi deg pakke og byte informasjon, og legge til

-n

vil liste alt numerisk. Med andre ord - vertsnavn, protokoller og nettverk er oppført som tall.

For å slette alle gjeldende konfigurerte regler, kan du utstede flush-kommandoen.

iptables -F

Anbefalt: