Hjemmeside » hvordan » Begynnerveiledningen for iptables, Linux-brannmuren

    Begynnerveiledningen for iptables, 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 installer 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 feilkommando 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 nødvendig å 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. Hvis du for eksempel 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øket.

    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 kjeder.

    Standard kjeden for policy kjeden

    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 beregnet 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 UTGANG TILTAK
    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 de 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 koblet til dem.

    iptables - policy INPUT DROP
    iptables - policy UTGANGSDROP
    iptables - policy FORWARD DROP

    Tilkoblingsspesifikke svar

    Med standardkjedepolicyen 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 vanlige "responsene".

    Aksepterer - Tillat tilkoblingen.

    Miste - Slett forbindelsen, opptre som om 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:

    Sletting av tilkoblingen:

    Avviser forbindelsen:

    Tillat eller blokkering av bestemte tilkoblinger

    Med konfigurasjon av dine politiske kjeder kan du nå konfigurere iptables for å tillate eller blokkere bestemte adresser, adresser og porter. I disse eksemplene vil vi sette sammenkoblingene til MISTE, men du kan bytte dem til AKSEPTERER eller AVVIST, avhengig av dine behov og hvordan du konfigurerte 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 [kjede] [nummer] å 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 --port 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 utp 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 tillater også 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 NYTT, STEDET -J ACCEPT

    iptables -A OUTPUT -p tcp --port 22 -d 10.10.10.10 -m state -state OPSTATT -J ACCEPT

    Lagrer endringer

    Endringene du gjør i iptables-reglene dine, blir slettet neste gang tjenesten iptables blir startet om du ikke 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 lagre

    Eller

    /etc/init.d/iptables lagre

    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 de konfigurerte reglene, kan du utstede flush-kommandoen.

    iptables -F