Articles

Eksempler

i det forrige indlæg talte vi om, hvordan man sikrer en server ved hjælp af bedste praksis for hærdning. Nogle mennesker spurgte mig om brandmursektionen, som var en kort introduktion til iptables brandmur. I dag vil vi diskutere detaljeret iptables iptables og hvordan du sikrer din servertrafik ved hjælp af den fantastiske brandvæg.

Indholdsfortegnelse

Iptables på CentOS 7

Hvis du bruger CentOS 7, vil du opdage, at administrerer iptables, så hvis du vil gå tilbage til iptables, skal du stoppe og maskere iptables.

$ systemctl stop firewalld$ systemctl mask firewalld

Installer derefter iptables service og aktiver den:

$ yum install iptables-services$ systemctl enable iptables

så kan du starte det:

$ systemctl start iptables

hvordan fungerer iptables brandvæg funktioner er bygget på netfilter-rammen, der er tilgængelig i Linuks-kernen til pakkefiltrering.

brandvægstyper

Der er to typer brandvægge:

statsløs brandvæg behandler hver pakke alene, det betyder, at den ikke ser andre pakker med den samme forbindelse.denne type brandvæg bekymrer sig om alle pakker, der passerer gennem den, så den kender tilstanden af forbindelsen. Det giver mere kontrol over trafikken.

Netfilter indeholder tabeller. Disse tabeller indeholder kæder, og kæder indeholder individuelle regler.

hvis en pakke matcher en regel, anvender iptables regelhandlingen på den pakke.

handlingerne kan være: Accepter, Afvis, Ignorer eller Send pakken videre til andre regler for mere behandling.

Netfilter kan behandle indgående eller udgående trafik ved hjælp af IP-adressen og portnummeret.kommandoen iptables styrer og konfigurerer Netfilter.

før vi begynder at skrive brandmurskommandoer, er vi nødt til at forstå brandmurstrukturen lidt, så vi let kan skrive brandmursregler.

iptables brandvæg tabeller

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

iptables-filtertabellen er den vigtigste tabel til behandling af trafikken.

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

den tredje tabel er mangle bordet til mangling pakker.

Tabelkæder

hver tabel af de ovennævnte tabeller indeholder kæder; disse kæder er beholderen med reglerne for iptables.

filtertabellen indeholder frem -, INPUT-og OUTPUTKÆDER. Du kan oprette en brugerdefineret kæde for at gemme dine regler på den.

hvis en pakke kommer til værten, vil iptables behandle det ved INPUT kæde regler.

hvis pakken går til en anden vært, betyder det, at OUTPUTKÆDEREGLER vil behandle det.iptables bruger den forreste kæde til håndtering af pakker, der har fået adgang til værten, men er bestemt til en anden vært.

Kædepolitik

hver kæde i filtertabellen har en politik. Politikken er standardhandlingen, som iptables udfører.

politikken kan være DROP, Afvis og accepter.

ACCEPTPOLITIKKEN tillader pakkerne at passere brandvæggen. DROP-politikken dropper en pakke uden at informere klienten. AFVISNINGSPOLITIKKEN dropper også pakken og informerer afsenderen.

fra et sikkerhedsperspektiv skal du droppe alle pakker, der kommer til værten, og kun acceptere de pakker, der kommer fra pålidelige kilder.

tilføjelse af iptables-regler

Du kan tilføje en ny regel ved hjælp af kommandoen iptables som denne:

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

lad os bryde denne kommando i stykker, så vi kan forstå alt om det.

– A betyder, at vi tilføjer en ny regel. Som standard tilføjer iptables alle nye regler til filtertabellen, medmindre du angiver en anden tabel.

– i-flaget angiver den enhed, der skal anvende reglen på. Hvis du ikke angiver en enhed, anvender iptables reglen på al indgående trafik uanset enhederne.

– p-flaget angiver pakkeprotokollen, som du vil behandle, hvilket er TCP i vores tilfælde.

–dport-flaget angiver destinationsporten, som er 80.

– D angiver destinations-IP-adressen, som er 1.2.3.4. Hvis der ikke er angivet en destinations-IP-adresse, gælder reglen for al indgående trafik på eth1 uanset IP-adresse.

– j angiver handlingen eller SPRINGHANDLINGEN, der skal udføres. Her accepterer vi pakkerne ved hjælp af acceptpolitikken.

ovenstående regel tillader indgående HTTP-trafik, som er på port 80.

hvad med at tillade udgående trafik?

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

Du kan bruge-A-flaget til at tilføje regler til OUTPUTKÆDEN.

– o-flagget bruges til den enhed, der bruges til udgående trafik.

– sport-flagget angiver Kildeporten.

Du kan bruge servicenavnet som http eller https i stedet for det numeriske portnummer på sport eller dport. Alle tjenester navne er i/etc / services fil.

Du skal bruge servicenavnet i stedet for et portnummer, hvilket gør læsereglerne lettere.

iptables regler Bestil

iptables placerer nye regler i slutningen af kæden. Du kan tilføje det til toppen ved hjælp af-I mulighed.

rækkefølgen af reglerne betyder noget, som du vil se nu. Du kan indsætte dine regler nøjagtigt, hvor du vil, ved hjælp af i-flaget.

se på følgende regler for at forstå, hvordan regler bestilling betyder noget:

$ 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 regel accepterer al UDP-trafik kommer til eth1, og tallet 3 er regelordren.

den anden regel falder den trafik, der kommer ind i port 80.

den første regel accepterer al trafik, så den anden regel, der skal droppe trafikken, vil ikke gøre noget, da iptables passerer trafikken i den første regel.

dine regler skal give mening, da rækkefølgen af reglerne i kæden betyder noget.

List iptables rules

Du kan liste reglerne i en kæde ved hjælp af-L flag:

$ iptables -L INPUT

Du kan vise linjenumrene for regler ved hjælp af –line-numbers:

$ iptables -L INPUT --line-numbers

listen viser navnene på Tjenesterne. Du kan vise portnumre i stedet ved hjælp af-N option:

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

ovenstående regel gør listen hurtigere, fordi den forhindrer iptables i DNS-opløsning og serviceopslag.

Du kan liste alle regler for alle kæder som denne:

$ iptables -L -n --line-numbers

for at få, hvor mange pakker der behandles af hver regel, kan du bruge-V-flaget:

$ iptables -L -v

Du kan også nulstille tællerne til nul ved hjælp af-Å-flag.

nu kan vi tilføje en ny regel til enhver kæde, vi ønsker, vi kan indsætte reglen i en bestemt rækkefølge, og vi kan liste reglerne for enhver kæde eller alle kæder, men hvad med at slette en regel?

sletning af regler

Du kan slette en regel ved hjælp af-D-flag:

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

denne kommando sletter den HTTP-regel, du har angivet tidligere.

før du sletter en regel, skal du bare sørge for regelspecifikationen ved at angive den og derefter slette den.

Du kan slette reglen ved hjælp af ordrenummeret i stedet for at skrive regelspecifikationerne.

$ iptables -D INPUT 2

Du kan slette alle regler i en bestemt kæde ved hjælp af-f flag, hvilket betyder flush alle regler.

$ iptables -F INPUT

Hvis du glemmer at nævne kædenavnet, når du bruger-f-flag, slettes alle kæderegler.

udskiftning af regler

Du kan erstatte eksisterende regler med din egen regel ved hjælp af-R flag:

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

denne kommando erstatter den første regel i INPUTKÆDEN med den indtastede regel.

liste specifik tabel

for at liste en bestemt tabel skal du bruge-T-flagget med tabelnavnet som dette:

$ iptables -L -t nat

Her viser vi reglerne i nat-tabellen.

Iptables brugerdefineret kæde

for at oprette en brugerdefineret kæde skal du bruge-n-flaget.

$ iptables -N MY_CHAIN

Du kan også omdøbe det ved hjælp af-e flag.

$ iptables -E MY_CHAIN NEW_NAME

og du kan slette den brugerdefinerede kæde ved hjælp af-flag.

$ iptables -X MY_CHAIN

Hvis du ikke nævner kædenavnet, når du bruger-flag, vil det slette alle brugerdefinerede kæder. Du kan ikke slette indbyggede kæder som INPUT og OUTPUT.

omdirigering til en brugerdefineret kæde

Du kan omdirigere pakker til en brugerdefineret kæde som indbyggede kæder ved hjælp af-j flag.

$ iptables -A INPUT -p icmp -j MY_CHAIN

ovenstående regel omdirigerer al ICMP-trafik til kæden MY_CHAIN.

Indstilling af standardpolitikken for kæder

Du kan bruge-p-flaget til at indstille standardpolitikken for en bestemt kæde. Standardpolitikken kan være ACCEPT, Afvis og slip.

$ iptables -P INPUT DROP

så nu vil inputkæden slippe enhver pakke, medmindre du skriver en regel for at tillade indgående trafik.

SYN Flooding

angriberen sender SYN-pakker kun uden at fuldføre TCP-håndtrykket, og som følge heraf vil den modtagende vært have mange åbne forbindelser, og din server bliver for travl til at reagere på andre klienter.

Vi kan bruge grænsemodulet til iptables brandvæg til at beskytte os mod SYN-oversvømmelse.

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

Her angiver vi kun 10 SYN-pakker pr. Du kan justere denne værdi i henhold til dine netværksbehov.

Hvis dette vil drosle dit netværk, kan du bruge SYN cookies.

SYN Cookies

I

/etc/sysctl.conf

fil og tilføj denne linje:

net.ipv4.tcp_syncookies = 1

gem derefter og genindlæs.

$ sysctl -p

Drop ugyldige Tilstandspakker

de ugyldige tilstandspakker er pakker, der ikke hører til nogen forbindelse, og du slipper dem.

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

denne regel vil droppe alle indgående ugyldige tilstandspakker.

Drop fragmenterede pakker

fragmenterede pakker er brudte stykker af store misdannede pakker, og du skal skrive regler for at slippe dem.

– f-flagget fortæller iptables-brandvæggen at vælge alle fragmenter. Så hvis du ikke bruger iptables som en router, kan du droppe fragmenterede pakker.

$ iptables -A INPUT -f -j DROP

Gem iptables-regler

Hvis du genstarter din server, mister du alle regler, du skrev, Så hvordan fortsætter du dem?

Du kan gemme alle dine regler ved hjælp af kommandoen iptables-save, hvis du bruger CentOS eller Red Hat.

iptables-save > /etc/sysconfig/iptables

på CentOS 7 kan du gemme regler som denne:

$ service iptables save

Du kan kun gemme specifik tabel som filtertabel:

$ iptables-save -t filter

Du kan også bruge iptables-restore til at gendanne regler.

på Debian-baserede distributioner kan du bruge pakken iptables-persistent til at gemme og gendanne regler.

først skal du installere det:

$ apt-get install iptables-persistent

derefter kan du gemme og gendanne regler:

$ netfilter-persistent save
$ netfilter-persistent reload

Jeg håber, du finder iptables-brandvæggen let. Bliv ved med at komme tilbage.

Tak.

  • grundlægger af LikeGeeks. Jeg har arbejdet som systemadministrator siden 2010. Jeg er ansvarlig for vedligeholdelse, sikring og fejlfinding af servere til flere klienter over hele verden. Jeg elsker at skrive shell og Python scripts til at automatisere mit arbejde.