Begynderens Guide til iptables, Linux Firewall

Indholdsfortegnelse:

Video: Begynderens Guide til iptables, Linux Firewall

Video: Begynderens Guide til iptables, Linux Firewall
Video: Hvordan reagerer børn, når man fortæller, at der ikke er råd til at holde jul? 2024, Marts
Begynderens Guide til iptables, Linux Firewall
Begynderens Guide til iptables, Linux Firewall
Anonim
Iptables er et ekstremt fleksibelt firewall utility bygget til Linux operativsystemer. Uanset om du er en nybegynder Linux-geek eller en systemadministrator, er der sandsynligvis en eller anden måde, at iptables kan være en stor fordel for dig. Læs videre, da vi viser dig, hvordan du konfigurerer den mest alsidige Linux-firewall.
Iptables er et ekstremt fleksibelt firewall utility bygget til Linux operativsystemer. Uanset om du er en nybegynder Linux-geek eller en systemadministrator, er der sandsynligvis en eller anden måde, at iptables kan være en stor fordel for dig. Læs videre, da vi viser dig, hvordan du konfigurerer den mest alsidige Linux-firewall.

Foto af ezioman.

Om iptables

iptables er et kommandolinje-firewallværktøj, der bruger politikkæder til at tillade eller blokere trafik. Når en forbindelse forsøger at etablere sig på dit system, søger iptables en regel på listen for at matche den til. Hvis den ikke finder en, drejer det sig om standardhandlingen.

iptables kommer næsten altid forudinstalleret på nogen Linux distribution. For at opdatere / installere det, hent bare iptables-pakken:

sudo apt-get install iptables

Der er GUI alternativer til iptables som Firestarter, men iptables er ikke rigtig så svært, når du har et par kommandoer nede. Du vil være yderst forsigtig, når du konfigurerer iptables-regler, især hvis du er SSH'd til en server, fordi en forkert kommando permanent kan låse dig, indtil den er manuelt fastgjort til den fysiske maskine.

Typer af kæder

iptables bruger tre forskellige kæder: input, forward og output.

Input - Denne kæde bruges til at styre adfærden for indgående forbindelser. Hvis en bruger f.eks. Forsøger at sende SSH til din pc / server, forsøger iptables at matche IP-adressen og porten til en regel i inputkæden.

Frem - Denne kæde bruges til indgående forbindelser, der ikke rent faktisk leveres lokalt. Tænk på en router - data sendes altid til det, men sjældent faktisk bestemt til routeren selv; dataene er netop videresendt til sit mål. Medmindre du laver en form for routing, NATing eller noget andet på dit system, der kræver videresendelse, vil du ikke engang bruge denne kæde.

Der er en sikker brand måde at kontrollere, om dit system bruger / har brug for fremadkæden.

iptables -L -v

Skærmbilledet ovenfor er af en server, der har kørt i et par uger, og har ingen begrænsninger for indgående eller udgående forbindelser. Som du kan se, har inputkæden behandlet 11 GB pakker, og outputkæden har behandlet 17 GB. Forkæden har på den anden side ikke behøvet at behandle en enkelt pakke. Dette skyldes, at serveren ikke gør nogen form for videresendelse eller bliver brugt som en pass-through enhed.
Skærmbilledet ovenfor er af en server, der har kørt i et par uger, og har ingen begrænsninger for indgående eller udgående forbindelser. Som du kan se, har inputkæden behandlet 11 GB pakker, og outputkæden har behandlet 17 GB. Forkæden har på den anden side ikke behøvet at behandle en enkelt pakke. Dette skyldes, at serveren ikke gør nogen form for videresendelse eller bliver brugt som en pass-through enhed.

Produktion - Denne kæde bruges til udgående forbindelser. Hvis du for eksempel forsøger at pinge howtogeek.com, vil iptables tjekke sin outputkæde for at se, hvad reglerne vedrører ping og howtogeek.com, før de træffer beslutning om at tillade eller nægte forbindelsesforsøg.

Advarslen

Selvom pinging af en ekstern vært virker som noget, der kun behøver at krydse outputkæden, skal du huske på, at for at returnere dataene, vil inputkæden også blive brugt. Når du bruger iptables til at låse dit system, skal du huske at mange protokoller kræver tovejskommunikation, så både input- og outputkæderne skal konfigureres korrekt. SSH er en fælles protokol, som folk glemmer at tillade på begge kæder.

Policy Chain Standard Adfærd

Før du går ind og konfigurerer specifikke regler, vil du gerne bestemme, hvad du vil have, at de tre kæder skal have standardadfærd. Med andre ord, hvad vil du have iptables at gøre, hvis forbindelsen ikke matcher nogen eksisterende regler?

For at se, hvad dine politikkæder for øjeblikket er konfigureret til at gøre med uovertruffen trafik, skal du køre

iptables -L

kommando.

Som du kan se, brugte vi også grep-kommandoen til at give os renere output. I det screenshot er vores kæder i øjeblikket beregnet til at acceptere trafik.
Som du kan se, brugte vi også grep-kommandoen til at give os renere output. I det screenshot er vores kæder i øjeblikket beregnet til at acceptere trafik.

Flere gange end ikke, vil du have dit system til at acceptere forbindelser som standard. Medmindre du tidligere har ændret reglerne for politikkæden, skal denne indstilling allerede være konfigureret. Uanset hvad, her er kommandoen for at acceptere forbindelser som standard:

iptables --policy INPUT ACCEPT

iptables --policy OUTPUT ACCEPT

iptables --policy FORWARD ACCEPT

Ved at standardisere til acceptreglen kan du derefter bruge iptables til at nægte bestemte IP-adresser eller portnumre, mens du fortsætter med at acceptere alle andre forbindelser. Vi kommer til disse kommandoer om et øjeblik.

Hvis du hellere vil benægte alle forbindelser og manuelt angive, hvilke som du vil tillade at oprette forbindelse til, skal du ændre standardpolitikken for dine kæder for at falde. Hvis du gør dette, ville det nok kun være nyttigt for servere, der indeholder følsomme oplysninger, og kun de samme IP-adresser har altid forbindelse til dem.

iptables --policy INPUT DROP

iptables --policy OUTPUT DROP

iptables --policy FORWARD DROP

Forbindelsesspecifikke svar

Med din standardkædepolitik konfigureret, kan du begynde at tilføje regler til iptables, så den ved hvad man skal gøre, når den møder en forbindelse fra eller til en bestemt IP-adresse eller -port. I denne vejledning skal vi gå over de tre mest grundlæggende og almindeligt anvendte "svar".

Acceptere - Tillad forbindelsen.

Dråbe - Drop forbindelsen, fung sådan som det aldrig skete. Dette er bedst, hvis du ikke vil have kilden til at indse, at dit system eksisterer.

Afvise - Tillad ikke forbindelsen, men send en fejl tilbage. Dette er bedst, hvis du ikke vil have en bestemt kilde til at oprette forbindelse til dit system, men du vil have, at de skal vide, at din firewall blokerede dem.

Den bedste måde at vise forskellen mellem disse tre regler på er at vise, hvordan det ser ud, når en pc forsøger at pinge en Linux-maskine med iptables konfigureret til hver enkelt af disse indstillinger.

Tillad forbindelsen:

Afbryd forbindelsen:

Afvisning af forbindelsen:
Afvisning af forbindelsen:
Image
Image

Tilladelse eller blokering af bestemte forbindelser

Når dine politikkæder er konfigureret, kan du nu konfigurere iptables til at tillade eller blokere bestemte adresser, adresser og porte. I disse eksempler sætter vi forbindelserne til

DROP

men du kan skifte dem til

ACCEPT

eller

REJECT

afhængigt af dine behov og hvordan du konfigurerede dine politikkæder.

Bemærk: I disse eksempler skal vi bruge

iptables -A

at tilføje regler til den eksisterende kæde. iptables starter øverst på sin liste og går gennem hver regel indtil den finder en, der matcher. Hvis du skal indsætte en regel over en anden, kan du bruge

iptables -I [chain] [number]

at angive det nummer, det skal være på listen.

Forbindelser fra en enkelt IP-adresse

Dette eksempel viser, hvordan du blokkerer alle forbindelser fra IP-adressen 10.10.10.10.

iptables -A INPUT -s 10.10.10.10 -j DROP

Forbindelser fra en række IP-adresser

Dette eksempel viser, hvordan du blokkerer alle IP-adresserne i 10.10.10.0/24-netværksområdet. Du kan bruge en netmaske eller standard slash notation til at angive rækkevidden af 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

Forbindelser til en bestemt port

Dette eksempel viser, hvordan du blokkerer SSH-forbindelser fra 10.10.10.10.

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

Du kan erstatte "ssh" med enhver protokol eller portnummer. Det

-p tcp

En del af koden fortæller iptables, hvilken slags forbindelse protokollen bruger. Hvis du blokerede en protokol, der bruger UDP snarere end TCP, så

-p udp

ville være nødvendigt i stedet.

Dette eksempel viser, hvordan du blokkerer SSH-forbindelser fra en hvilken som helst IP-adresse.

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

Forbindelseslande

Som vi nævnte tidligere, vil mange protokoller kræve tovejskommunikation. Hvis du f.eks. Vil tillade SSH-forbindelser til dit system, skal input- og outputkæderne have brug for en regel, der er tilføjet dem. Men hvad hvis du kun vil have SSH, der kommer ind i dit system for at få lov? Vil ikke tilføje en regel til outputkæden også tillade udgående SSH-forsøg?

Det er her forbindelsestilstande kommer ind, hvilket giver dig den mulighed, du skal bruge til tovejskommunikation, men kun tillade envejsforbindelser at blive etableret. Se dette eksempel, hvor SSH-forbindelser fra 10.10.10.10 er tilladt, men SSH-forbindelser til 10.10.10.10 er ikke. Systemet er dog tilladt at sende tilbage information over SSH, så længe sessionen allerede er etableret, hvilket gør SSH-kommunikation mulig mellem disse to værter.

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

Gem ændringer

De ændringer, du foretager til dine iptables-regler, bliver slettet næste gang, at iptables-tjenesten genstartes, medmindre du udfører en kommando for at gemme ændringerne. Denne kommando kan variere afhængigt af din distribution:

Ubuntu:

sudo /sbin/iptables-save

Red Hat / CentOS:

/sbin/service iptables save

Eller

/etc/init.d/iptables save

Andre kommandoer

Angiv de nuværende konfigurerede iptables regler:

iptables -L

Tilføjelse af

-v

mulighed vil give dig pakke og byte oplysninger og tilføje

-n

vil liste alt numerisk. Med andre ord er værtsnavne, protokoller og netværk opført som tal.

For at slette alle de aktuelt konfigurerede regler, kan du udstede flush-kommandoen.

iptables -F

Anbefalede: