iptables tillåter allt. Blockera nätverksadresser för det lokala nätverket på det externa gränssnittet. Öppna ett intervall av IP-adresser

Iptables är primärt ansvarig för paketfiltrering. Att ställa in Iptables manuellt är en ganska skrämmande uppgift. Räkna inte med att du kommer att förstå denna "snap". Lyckligtvis finns det många verktyg som kan hjälpa dig om du inte har listat ut iptables ännu, men du måste säkra systemet omgående: fwbuilder, firestarter, guarddog, arno brandvägg - i själva verket är detta ett GUI för iptables. Det finns inget entydigt svar som är bättre. Du väljer. Men dagens artikel är specifikt tillägnad iptables och är uppdelad i två delar: teori och praktik. Den mest otåliga kan göra den praktiska delen direkt, även om detta tillvägagångssätt inte rekommenderas.

Uppmärksamhet! Alla åtgärder med iptables utförs på uppdrag av en privilegierad användare!

Teori

iptables postformat iptables [-t tabell] [kommando] [åtgärd] Exempel: iptables -t filter -A INPUT ACCEPT

Handlingar

  • ACCEPTERA - Acceptera paketet
  • DROP - Släpp ett paket
  • DNAT - Konvertera destinationsadress
  • SNAT - Ändra utgående IP-adress i pakethuvudet
  • LOGG - Paket- och händelseloggning
  • MARK - Märka paketet
  • MASQUERADE - Ändra den utgående IP-adressen i pakethuvudet (skillnad från SNAT - arbeta med dynamiska IP-adresser)
  • KÖ - Kö ett paket för bearbetning
  • OMDIREKTERA - Omdirigera paket/ström till en annan port
  • AVVISA - Släpp paketet + meddela fjärrsystemet att. att hennes paket avvisades
  • RETURN - Stoppa paketet från att röra sig längs den aktuella kedjan och returnera det till den anropande kedjan

Lag

  • -A - Lägg till en regel i kedjan
  • -D - Ta bort regeln från kedjan
  • -R - Ersätt en regel med en annan
  • -I - Infoga ny regel
  • -L - Lista befintliga regler
  • -F - Återställ regler
  • -Z - Nollställning av räknare i en given kedja
  • -N - Skapa en ny kedja med det angivna namnet
  • -X - Ta bort kedja
  • -P - Ställ in standardpolicyn för den valda kedjan
  • -E - Byt namn på anpassad kedja

Kriterier (allmänna)

  • -p - Ange protokolltyp
  • -s - IP-adress för paketkälla
  • -d - paketdestinations-IP-adress
  • -j - Ange en åtgärd för regeln
  • -i - Gränssnitt från vilket paketet togs emot
  • -o - Ange namn på utdatagränssnittet
  • -f - Sprid regeln till alla fragment av paketet

TCP-kriterier:

  • --tcp-flags - Ange paketmask och flaggor

UDP-kriterier:

  • –sport - Porten från vilken paketet skickades
  • –dport - Porten som paketet är adresserat till

Se man iptables för detaljer.

Öva

Visa aktuell konfiguration

$ sudo iptables -L Chain INPUT (policy ACCEPT) target prot opt ​​source destination Chain FORWARD (policy ACCEPT) target prot opt ​​source destination Chain OUTPUT (policy ACCEPT) target prot opt ​​source destination

Om du såg detta är din brandvägg ännu inte konfigurerad och tillåter allt. Låt oss fixa situationen.

Ställer in standardpolicyn

  • iptables -P INPUT DROP - blockera inkommande paket
  • iptables -P OUTPUT ACCEPT - tillåter utgående paket
  • iptables -P FORWARD DROP - Bearbeta paket som kom in på servern från en annan maskin och väntar på vidare överföring. Exemplet är blockerat. I det här fallet måste du lägga till regler för betrodda maskiner.

Eftersom inkommande INPUT-paket är blockerade, skriver vi regeln:

$ sudo iptables -A INPUT -m state --state RELATED,ETABLISHED -j ACCEPT

Detta kommer att tillåta att paket från en tidigare etablerad anslutning tas emot och att nya paket som kommer från den anslutningen accepteras.

Eller specificera protokolltypen:

$ sudo iptables -A INPUT -p TCP -m state --state ETABLISHED,RELATED -j ACCEPT $ sudo iptables -A INPUT -p UDP -m state --state ETABLISHED,RELATED -j ACCEPT

Nu det lokala gränssnittet:

$ sudo iptables -A INPUT -i lo -j ACCEPTERA

  • NYTT - data som startar en ny anslutning.
  • ETABLISHED - ett paket som kommer från en redan etablerad anslutning.
  • RELATED - ett nytt datapaket, men skapat från en gammal etablerad anslutning
  • OGILTIGT - så tydligt

$ sudo iptables-save > /etc/iptables.up.rules

Aktivera dessa regler:

$ sudo iptables-restore< /etc/iptables.up.rules

Och se skillnaden:

$ sudo iptables -L

Starta iptables vid systemstart:

Skapa en fil som heter iptables i katalogen /etc/init.d

$ sudo touch /etc/init.d/iptables

Vi skriver följande i den:

#!/bin/sh /sbin/iptables-restore< /etc/iptables.up.rules

Göra iptables-filen körbar:

$ sudo chmod +x /etc/init.d/iptables

Lägg till den i autorun

$ sudo update-rc.d -n iptables standardinställningar

Starta iptables när du är ansluten till nätverket:

$ sudo echo "#! /sbin/iptables-restore" > /etc/network/if-up.d/iptables.up.rules $ sudo iptables-save >> /etc/network/if-up.d/iptables. up.rules $ sudo chmod +x /etc/network/if-up.d/iptables.up.rules

Notera: Du kan när som helst kontrollera om dina regler är laddade genom att helt enkelt skriva iptables-save som root

För archlinux, spara iptables regler görs med kommandot:

$ sudo rc.d spara iptables

Ett litet initialt skript (regler, iptables faq) för skrivbordet eller enkel server. I det här fallet, exempel på att arbeta med portar för en viss programvara som körs på din dator. På vilken dator som helst måste säkerhetsåtgärder iakttas. Myten om att Linux är säkrare är inte sann, allt beror på administratörens klumpiga händer. Det finns välskyddade Windows-system, såväl som Linux-system som är öppna för nästan alla. Därför bör du ändå tänka lite på nätverksskyddet för din dator. Nedan finns några regler för iptables som kan komma till användning i början.

Jag ersatte specifikt $IPT med /sbin/iptables, om någon bara behöver en regel, för att inte ändra någonting - bara kopieras och körs. Naturligtvis finns det fortfarande få regler här, det finns inga olika VPN, etc., om du vill, lägg till dem.

Dessa rader kan kopieras helt och hållet till vilket skript som helst och enkelt köras. För normala fall räcker detta. Om någon applikation inte kan komma åt nätverket har loggning lagts till speciellt. Öppna bara tail -f /var/log/syslog (eller din om något annat än Ubuntu) och se! Om du har några frågor – lägg till dem i diskussionen, vi bestämmer tillsammans.

PS Utöver dessa regler, tänk på vad du bör ta från artikeln om TCP-optimering.

Hur man tar bort en regel i iptables

Postat av Alexey Ubozhenko

Flera gånger har jag stött på att även allmänt intelligenta människor gör helt oförlåtliga misstag. Till exempel öppnar de porten som databasen snurrar på till hela Internet.

Blogg om systemadministration. Artiklar om Linux, Windows, NetApp-lagring och virtualisering.

Det är ofta fallet med DevOps-nybörjare som har skrivit kod hela sitt liv, och nu ingår även i deras arbetsuppgifter att sätta upp servrar. Det finns bra tutorials på nätet för grundläggande brandväggsinstallation på Linux och andra *nix, men ofta är dessa ark för flera skärmar. Så jag hoppas att denna mer kortfattade handledning kommer att vara användbar för någon.

Viktig! Det är väldigt lätt att av misstag brandvägga en maskin så att du inte kommer åt den igen. Detta gäller särskilt för molnvärd. Till exempel, om du stänger alla portar från 1024 till 65536 i AWS, stängs maskinen av någon anledning efter omstart i allmänhet allt hamnar. Om du är värd i molnen är det bättre att konfigurera brandväggen via webbgränssnittet som tillhandahålls av värdskapet.

En liten notering om terminologi. Brandväggen som är inbyggd i Linux-kärnan kallas Netfilter, och iptables är ett verktyg för att hantera denna brandvägg. Många tror felaktigt att brandväggen kallas iptables. Det är inte sant. Att säga något som "Jag filtrerar paket med iptables" visar din okunnighet för andra.

I allmänhet, vilka uppgifter kan lösas med Netfilter:

  • Tillåt/neka inkommande trafik till vissa portar med hjälp av vissa protokoll (IPv4/IPv6, TCP/UDP) från specificerade adresser (IP, MAC) eller subnät;
  • Allt är sig likt för utgående trafik;
  • Du kan till exempel helt ignorera alla ICMP-paket;
  • Konfigurera NAT, se inlägget om att installera och konfigurera OpenVPN;
  • Jag hörde att riktiga gurus kan ställa in DDoS och brute force-skydd, begränsa nätverksåtkomst till specifika applikationer, användare eller grupper och göra andra galna saker;

Jag noterar att iptables-verktyget verkade för mig personligen till en början extremt obekvämt jämfört med ipfw i FreeBSD. Lyckligtvis, efter att ha lekt med den ett tag, blir alla dessa många flaggor som -A, -D, -j och andra bekanta, så ha tålamod. Låt oss ta en titt på de grundläggande kommandona.

Visa alla regler:

Du kanske märker att Netfilter har några "kedjor" (kedjor) - åtminstone INPUT, OUTPUT och FORWARD.

Jag personligen har också en Docker-kedja på min maskin. För första gången kan du tänka på de två första som all inkommande respektive utgående trafik och tillfälligt glömma resten. Det finns en god chans att du aldrig kommer att behöva dem alls.

Ta bort alla regler:

Ändra policy (standardbeteende) för kedjan:

iptables -P INPUT DROP
iptables -P INPUT ACCEPT

Neka åtkomst från värd/undernät:

iptables -A INPUT -s 123.45.67.89 -j DROP
iptables -A INPUT -s 123.45.0.0/16-j DROP

Du kan också använda domännamn:

iptables -A INPUT -s example.ru -j DROP

Förbud mot utgående anslutningar:

iptables -A OUTPUT -d 123.45.67.89 -j DROP

Negativ kan användas i regler:

iptables -A INPUT !-s 123.45.67.89 -j DROP

Ta bort en regel efter dess nummer i kedjan:

iptables -D INPUT 1

Ta bort en regel baserat på vad den gör:

iptables -D INPUT -s 123.45.67.89 -j DROP

Alternativet -p anger protokollet. Du kan använda all, icmp, tcp, udp eller protokollnumret från /etc/protocols. --sport-flaggan anger porten från vilken paketet skickades, och --dport anger destinationsporten:

iptables -A INPUT -p tcp --sport80-j ACCEPTERA
iptables -A INPUT -p tcp --dport80-j ACCEPTERAR

Infoga en regel i början av kedjan:

iptables -I INPUT ...

Eller så kan du ange en specifik position:

iptables-save >/etc/iptables.rules

Återställ regler:

iptables återställning

Låt oss nu titta på några praktiska exempel. Så här ser till exempel netsplit-emulering ut i ett test som kontrollerar beteendet hos en applikation som använder Akka Cluster:

kör(nod1, s"iptables -A INPUT -s $nod2 -j DROP")
kör(nod1, s"iptables -A INPUT -s $nod3 -j DROP")
kör(nod1, s"iptables -A OUTPUT -d $nod2 -j DROP")
kör(nod1, s"iptables -A OUTPUT -d $nod3 -j DROP")

Återställningen är exakt densamma, bara -A-flaggan ersätts med -D-flaggan.

Ett annat exempel. Det krävs för att ta reda på vilka portar som lyssnar på maskinen och stänga de extra. Vi går till bilen och säger:

Exempelutgång:

Aktiva internetanslutningar (endast servrar)
Proto Recv-Q Send-Q Lokal adress Utländsk adress Status PID/Prog namn
tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 3210/nginx
tcp 0 0 0.0.0.0:4369 0.0.0.0:* LISTEN 1789/epmd
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 797/sshd
tcp 0 0 127.0.0.1:5432 0.0.0.0:* LISTEN 990/postgres

Nginx och SSHd tittar på internet, det är bra. PostgreSQL lyssnar bara på det lokala gränssnittet, så det är inga problem med det heller. Men epmd sticker ut (du kan kolla med telnet från en annan maskin), och det här är inte bra. Du kan bara stänga port 4369. Hur man gör detta visades ovan. Eller så kan du gå ännu längre och neka alla anslutningar från utsidan till port 81 och äldre:

iptables -A INPUT -m multiport \
-p tcp --dports81:65535!-s 127.0.0.0/8-j DROP

Detta använder multiport-tillägget, som låter dig ange portintervall.

Vi kontrollerar att allt fungerar. Om OK, spara reglerna:

iptables-save >/etc/iptables.rules

För att reglerna ska kunna hämtas vid systemstart skapar vi en ny fil /etc/network/if-pre-up.d/iptables:

iptables återställningexit0

... och säg:

chmod +x /etc/network/if-pre-up.d/iptables

Denna metod har verifierats att fungera i Ubuntu 14.04 LTS.

Bör fungera på Debian också. En beskrivning av ett alternativt sätt att återställa brandväggsregler vid systemstart finns i den redan nämnda artikeln om OpenVPN.

Ytterligare resurser för dig som vill veta mer om Netfilter:

Hur sätter du upp brandväggar på dina servrar?

Taggar: Linux, Säkerhet, Nätverk.

Kommandoradsverktyget iptables används för att konfigurera netfilter-brandväggen som är inbyggd i ett system baserat på Linux-kärnan.

Den här manualen är lämplig för både dummies som vill förstå aspekter av nätverkssäkerhet och erfarna proffs som ett fuskblad.

Inställningsprincip

Den allmänna syntaxen för att använda iptables är:

iptables -t<таблица> <команда> <цепочка>[rum]<условие> <действие>

<таблица>

Netfilterreglerna är uppdelade i 4 tabeller, som var och en har sitt eget syfte (mer information nedan). Den anges med -t-tangenten, men om denna parameter inte anges, kommer åtgärden att utföras för standardtabellen - filter.

<команда>

Kommandona indikerar vilken typ av åtgärd vi utför på netfilter, till exempel skapa eller ta bort en regel.

<цепочка>

Varje tabell har kedjor, för var och en av dem skapas själva reglerna. Till exempel, för filtertabellen ovan, finns det tre fördefinierade kedjor - INPUT (inkommande paket), OUTPUT (utgående) och FORWARD (transit).

[rum]

Vissa kommandon kräver att numret på regeln anges, till exempel för att radera eller redigera.

<условие>

Villkoret beskriver kriterierna för att behandla en viss regel.

<действие>

Ja, faktiskt, vad gör vi med paketet om det uppfyller kriterierna för tillståndet.

* i rättvisans namn är det värt att notera att nyckeln med handlingen inte behöver gå i slutet. Det är bara det att detta format oftast finns i instruktioner och gör det lättare att läsa reglerna.

iptables-nycklar och exempel på deras användning

Att arbeta med tabeller (iptables -t)

Jag påminner dig om att alla regler i netfilter är fördelade över tabeller. För att arbeta med en specifik tabell måste du använda omkopplaren -t.

Lag

Följande växlar bestämmer de åtgärder som iptables-verktyget utför.

Nyckel Beskrivning och exempel
-A Lägga till en regel i slutet av listan:
iptables -A INPUT -s 192.168.0.15 -j DROP
neka inkommande från 192.168.0.15.
-D Ta bort en regel:
iptables -D INPUT 10
ta bort regeln i INPUT-kedjan med nummer 10.
-Jag Infoga en regel i en specifik del av listan:
iptables -I INPUT 5 -s 192.168.0.15 -j DROP
infoga regel 5:e i listan.
-R Regelbyte.
iptables -R OUTPUT 5 -s 192.168.0.15 -j ACCEPTERA
ändra vår femte regel från förbjudande till tillåtande.
-F Återställ regler i en kedja.
iptables -F INPUT
-Z Återställ statistik.
iptables -Z INPUT
-N Kedjeskapande.
iptables -N CHAINNEW
-X Ta bort en kedja.
iptables -X CHAINNEW
-P Definition av standardregeln.
iptables -P INPUT DROP
-E Byter namn på en kedja.
iptables -E CHAINNEW CHAINOLD

Villkor

Dessa nycklar definierar villkoren för regeln.

Nyckel Beskrivning och exempel
-s nätverksprotokoll. Giltiga alternativ är TCP, UDP, ICMP eller ALL.
iptables -A INPUT -p tcp -j ACCEPTERA
tillåt alla inkommande tcp-anslutningar.
-s Källadressen är ett värdnamn, IP-adress eller subnät i CIDR-notation.
iptables -A INPUT -s 192.168.0.50 -j DROP
neka inkommande från värd 192.168.0.50
-d Destinations adress. Användningsprincipen liknar de tidigare switcharna -s.
iptables -A OUTPUT -d 192.168.0.50 -j DROP
neka utgående till värd 192.168.0.50
-jag Nätverksadaptern genom vilken paket anländer (INPUT).
iptables -A INPUT -i eth2 -j DROP
inaktivera inkommande samtal för Ethernet-gränssnittet eth2.
-o Nätverksadaptern som paketen lämnar från (OUTPUT).
iptables -A OUTPUT -o eth3 -j ACCEPTERA
tillåt utgående från Ethernet-gränssnittet eth3.
—dport Destinationshamn.
iptables -A INPUT -p tcp --dport 80 -j ACCEPTERAR
tillåt inkommande på port 80.
-sport Källport.
iptables -A INPUT -p tcp --sport 1023 -j DROP
neka inkommande från port 1023.

De angivna nycklarna stöder också skyltkonstruktion. ! .

Konfigurera nätfilter med iptables

Det inverterar tillståndet, till exempel,
iptables -A INPUT -s ! 192.168.0.50 -j DROPPA
kommer att neka anslutning till alla värdar utom 192.168.0.50.

Handlingar

Åtgärder som ska utföras på ett paket som matchar kriterierna för tillståndet. Varje tabell har sin egen uppsättning giltiga åtgärder. Anges med en nyckel -j.

tabell Handling Beskrivning
filtrera ACCEPTERA Tillåter paketet.
SLÄPPA Nekar paketet.
AVVISA Förhindrar att ett meddelande skickas till källan.
nat MASKERAD För utgående paket, ersätter käll-IP-adressen med adressen till gränssnittet från vilket paketet lämnar.
SNAT Liknar MASQUERADE, men anger ett specifikt nätverksgränssnitt vars adress kommer att användas för spoofing.
DNAT Adressspoofing för inkommande paket.
DIRIGERA OM Omdirigerar en begäran till en annan port på samma system.
mangel TOS Modifiering av TOS-fältet (trafikprioritering).
DSCP Ändra DSCP (även trafikprioritering).
TTL Ändra TTL (paketlivslängd).
HL Liknar TTL, men för IPv6.
MARK Förpackningsmärkning. Används för efterföljande filtrering eller formning.
CONNMARK Anslutningsmärkning.
TCPMSS Ändra MTU-värdet.

Exempel på vanliga iptables-kommandon

Allmänna kommandon

Visa regler med deras nummer:

iptables -L --radnummer

För varje tabell måste du titta på reglerna separat:

iptables -t nat -L --radnummer

Ta bort alla regler:

Ange standardregler:

iptables -P INPUT DROP

iptables -P OUTPUT DROP

* i dessa exempel, som standard, för alla inkommande (INPUT) och utgående (OUTPUT) paket, kommer en avvisningsregel (DROP) att fungera.

Tillåt alla

Metod 1. Genom att lägga till en regel:

iptables -I INPUT 1 -j ACCEPTERAR

iptables -I OUTPUT 1 -j ACCEPTERAR

iptables -JAG FRAMÅT 1 -j ACCEPTERAR

* dessa tre kommandon kommer att skapa regler som tillåter alla inkommande, utgående och transitpaket.

Metod 2. Rengöring av reglerna:

* här tar vi först bort alla regler (-F), ställer sedan in standardpolicyn för att tillåta inkommande, utgående och transitering (-S).

Metod 3. Inaktivera tjänsten (det är bekvämt att tillfälligt inaktivera brandväggen för att diagnostisera problem):

Arbeta med regler

Lägg till en regel i slutet av listan:

iptables -A INPUT -p tcp --dport 25 -j ACCEPTERA

iptables -A INPUT -p tcp -s ! 192.168.0.25 --dport 993 -i eth0 -j ACCEPTERA

Lägg till portintervall:

iptables -A INPUT -p tcp --dport 3000:4000 -j ACCEPTERA

* i det här fallet, från 3000 till 4000.

Infoga regel:

iptables -I FORWARD 15 -p udp -d 8.8.8.8 --dport 53 -i eth1 -j ACCEPTERA

Port forwarding

Det finns två sätt att ställa in.

1. Regler för PREROUTING + POSTROUTING:

iptables -t nat -A PREROUTING -p tcp -m tcp -d 19.8.232.80 --dport 22 -j DNAT --till-destination 192.168.1.15:2222

iptables -t nat -A POSTROUTING -p tcp -m tcp -s 192.168.1.15 --sport 2222 -j SNAT --to-source 19.8.232.80:22

* var 19.8.232.80 - adressen där vi lyssnar på anslutningsförfrågningar; 22 - port för vidarebefordran; 192.168.1.15 2222 - intern port.

2. Regler för PREROUTING + FRAMÅT:

iptables -t nat -A PREROUTING -p tcp -i eth1 --dport 22 -j DNAT --till-destination 192.168.1.15:2222

iptables -A FORWARD -p tcp -d 192.168.1.15 --dport 22 -m tillstånd --state NY, ETABLISTERAD, RELATED -j ACCEPTERAR

* var eth1- nätverksgränssnitt där vi lyssnar på förfrågningar; 22 - port för vidarebefordran; 192.168.1.15 - intern IP-adress till vilken vi överför alla förfrågningar; 2222 - intern port.

Starta inställningen

Tillåt SSH:

iptables -A INPUT -p tcp --dport 22 -j ACCEPTERAR

Vi anger förbudspolicyn för inkommande och tillåter alla utgående:

iptables -P OUTPUT ACCEPTERAR

Skapa en regel för normalt apt-get-arbete:

iptables -A INPUT -p tcp --sport 80 -m state --state ETABLISHED -j ACCEPT

Tillåt ICMP (för att utföra pingkommandot):

iptables -A INPUT -p icmp -j ACCEPTERA

Spara regler (permanent)

Som standard slutar alla regler att fungera efter omstart av ett nätverk eller en dator. För att spara reglerna efter en omstart finns det flera sätt att konfigurera.

Metod 1: iptables-spara

Spara reglerna i en fil:

iptables-save > /etc/iptables.rules

Öppna nätverksinställningar:

vi /etc/network/interfaces

och lägg till raden:

pre-up iptables-restore< /etc/iptables.rules

Metod 2: iptables-persistent

Installera paketet iptables-persistent:

apt installera iptables-persistent

För att spara reglerna, skriv in kommandot:

tjänst iptables-beständig spara

Metod 3: tjänst iptables

Fungerar på äldre versioner av Linux:

Metod 4: iptables.init

Fungerar i CentOS:

/usr/libexec/iptables/iptables.init spara

Ubuntu och CentOS

Moderna Ubuntu- och CentOS-operativsystem har inte iptables som standard.

Du måste installera det eller använda nyare verktyg.

På CentOS

Firewall-cmd används som ett standardprogram för brandväggshantering. För mer information, läs Hur man konfigurerar brandvägg på CentOS.

Om du behöver använda iptables, installera paketet med verktyget:

yum installera iptables-tjänster

Inaktivera brandvägg:

systemctl stoppa brandvägg

systemctl inaktivera brandvägg

Tillåt och starta iptables:

systemctl aktivera iptables

På Ubuntu

ufw används nu för att styra brandväggen.

För att arbeta med iptables, installera följande paket:

apt-get installera iptables-persistent

Inaktivera ufw:

# Nätverk# Säkerhet# UNIX# Ubuntu# Linux

Var den här guiden till hjälp för dig?

BAKOM "BRANDVÄGGEN":
BRANDVÄGG (BRANDVÄGG) OCH INTERNETGATEWAY
I DEBIAN GNU/LINUX 4.0 ETCH

En praktisk guide till säker internetåtkomst
från en separat dator och från ett lokalt nätverk i Debian GNU/Linux 4.0 Etch
Lite teori

Varje åtkomst till Internet gör det inte bara möjligt att ansluta till olika servrar och sajter, utan skapar också en potentiell fara för penetration in i vår dator utifrån. Denna fara bör inte försummas, eftersom för närvarande de flesta försök till obehörig åtkomst till användares datorer från Internet är en del av en välorganiserad kriminell verksamhet. Efter att ha lyckats hacka in ditt system kommer de att försöka använda din dator antingen för att skicka skräppost eller för att organisera DoS-attacker på andra datorer, eller för andra olämpliga syften. I bästa fall kommer att försumma denna fara öka dina trafikkostnader och sakta ner hastigheten på din dator; i värsta fall kan det omedvetet involvera dig i cybergruppers kriminella handlingar.

Situationen förvärras av det faktum att i vissa (fortfarande) utbredda operativsystem lämnas många portar öppna som standard, vilket gör att en angripare från Internet kan ansluta till användaren utan att den senare märker det.

För att förhindra obehöriga anslutningar utifrån och för att filtrera inkommande/utgående trafik i operativsystemet måste ett speciellt program användas − brandvägg(eng. brandvägg), även känd under namnen brandvägg Och brandvägg. Nedan är en enkel brandväggsinstallation i ett gratis operativsystem. Debian GNU/Linux 4.0.

Användningen av en brandvägg blir särskilt relevant om du har mer än en dator, men hem- eller kontorsnätverk vars datorer är anslutna till Internet.

Även ett litet lokalt nätverk måste vara ordentligt organiserat. Låt oss säga att du har en höghastighetsinternetaccesspunkt (t.ex. ADSL-modem) med ett Ethernet-gränssnitt (dvs. nätverk).

Det finns en frestelse (driven av analfabeter, som till exempel i instruktionerna för mitt ADSL-modem) att ansluta modemet direkt till switchen och sedan ansluta det till switchen Allt lokala nätverksdatorer. I det här fallet utfärdar modemet dynamiskt lokala IP-adresser genom switchen, men det visar sig att varje dator lämnas ensam med Internet! Varken ett modem eller en switch kan bli ett hinder för en illvillig. En angripare kan skanna Allt datorer i det lokala nätverket organiserade på detta sätt.

Den logiska och säkra lösningen är att skapa barriär mellan modemet och det lokala nätverket - i form av en separat dator med en "brandvägg" (brandvägg) konfigurerad på den. Den här datorn har två gränssnitt - med det ena "ser den ut" på Internet (dvs. den är fysiskt ansluten till modemet), med den andra är den vänd mot det lokala nätverket (och är fysiskt ansluten till switchen, till vilken andra datorer också är ansluten). Eftersom vår brandväggsdator nu är navet för andra datorer för att komma åt Internet kallas den också inkörsport(Engelsk gateway).

Med en sådan organisation av det lokala nätverket minskar sannolikheten för hackning avsevärt - angriparen "ser" bara gatewayen från Internet, och en brandvägg är installerad på gatewayen, och det är inte lätt att hacka den.

Konfigurera iptables på Linux för dummies

Lokala nätverksdatorer kan surfa på Internet och förbli relativt säkra.

Brandväggskonfiguration med arno-iptables-brandväggskonfiguratorn

För att sätta upp en brandvägg GNU/Linux programmet används iptables, som i regel installeras omedelbart vid installation av de flesta distributioner. I Debian GNU/Linux Du kan kontrollera detta genom att köra med administratörsrättigheter fallenhet. Om det behövs, installera iptables.

Dock manuell konfiguration iptablesär en icke-trivial uppgift och endast specialister inom området systemadministration kan göra det. Därför är det bättre att använda för att konfigurera reglerna för brandväggen speciell konfigurator. I Debian GNU/Linux Det här programmet arno-iptables-brandvägg. När den startas ställer den en rad frågor, på grundval av vilka den genererar regler för hur brandväggen fungerar iptables.

Vi skriver i konsolen med superanvändarrättigheter:

#aptitude installera arno-iptables-brandväggen

I början av installationen kommer programmet att fråga om vi verkligen vill använda det för att sätta upp en brandvägg iptables:

Först måste du ange det externa gränssnittet - "titta" på Internet, d.v.s. ansluten till modemet. Gränssnittsinställningar definieras i konfigurationsfilen /etc/network/interfaces. Det kan se ut så här, till exempel:

# Det här är gränssnittet som pekar mot själva maskinen. auto lo iface lo inet loopback-adress 127.0.0.1 nätmask 255.0.0.0 # Detta är eth0-gränssnittet som är anslutet till Internet (ADSL-modem) # Dess egenhet är att IP-adressen tilldelas den dynamiskt av ISP, # därför dhcp auto eth0 alternativet är inställt iface eth0 inet dhcp # Detta är gränssnittet som är vänd mot det lokala nätverket # Den lokala nätverksadressen kommer att vara 192.168.2.0/24 # Av säkerhetsskäl på det lokala nätverket har gatewayen en statisk IP-adress - 192.168 .2.1, # därför är det statiska alternativet satt # Nätmask - 255.255.255.0 # Nätverkssändningsadressen i detta fall skulle vara 192.168.2.255 auto eth1 iface eth1 inet statisk adress 192.168.2.1 nätmask 255.250.251 broadcast.285.250.251.

Så titta på inställningarna /etc/network/interfaces, indikerar vi för brandväggskonfiguratorn att vårt gränssnitt är externt eth0:

På frågan om leverantören ger oss en IP-adress dynamiskt(med DHCP-protokollet) svarar vi jakande:

Nästa fråga är vilka tjänster som kommer att tillhandahållas från vår dator till externa Internetanvändare. Vi har ingen! Vi sysslar inte med professionellt webbhotell och har inte för avsikt att distribuera information utanför. Lämna raden tom.

Sedan kommer frågan om vi kommer att tillhandahålla några tjänster över UDP-protokollet. Också nej - och lämna också raden tom!

Behöver vi bli pingade från omvärlden (d.v.s. för att kontrollera om det finns en anslutning till datorn som brandväggen är installerad på)? I vårt fall är detta helt acceptabelt:

Detta slutför installationen för en enda dator som inte är en LAN-gateway. Om vi ​​tänker använda datorn som en gateway behöver vi svara på några fler frågor. Vi anger gränssnittet med vilket gatewayen är vänd mot det lokala nätverket - i vårt fall är det det eth1, som framgår av /etc/network/interfaces(annars, för en "ensam" dator, lämna detta fält tomt):

På frågan om man ska tillåta NAT-översättning, dvs. vidarebefordra trafik från Internet genom gatewayen till det lokala nätverket och tillbaka, svara "ja" - det här är en av våra huvuduppgifter i det här fallet:

Då uppstår frågan: vilket segment av det lokala nätverket kan släppas in genom vidarebefordran till externa nätverk? Vi har rätt att få tillgång till Internet har alla datorer på det lokala nätverket; ställ in värdet igen 192.168.2.0/24

Slutligen bekräftar vi vår önskan att lansera iptables utan ytterligare verifiering från vår sida av reglerna för brandväggen som automatiskt genereras av konfiguratorn:

Efter det, om allt gick bra, visas ett meddelande som liknar det nedan. Det kommer nu att dyka upp varje gång gatewaydatorn startar upp och informera dig om den framgångsrika lanseringen av brandväggen:

Arno's Iptables Firewall Script v1.8.8c ————————————————————————— Sanitetskontroller har godkänts...OK Identifierad IPTABLES-modul...

Laddar ytterligare IPTABLES-moduler: Alla IPTABLES-moduler laddade! Konfigurerar /proc/…. inställningar: Aktiverar anti-spoof med rp_filter Aktiverar SYN-översvämningsskydd via SYN-cookies Inaktivera loggning av martianer Inaktivera acceptans av ICMP-omdirigeringsmeddelanden Ställa in max. antal samtidiga anslutningar till 16384 Aktiverar skydd mot källroutade paket Ställa in förinställda tidsgränser för förbindelsen Aktiverar minskning av DoS-förmågan Inställning Standard TTL=64 Inaktiverar ECN (Explicit Congestion Notification) Aktiverar stöd för dynamisk IP:s Flushing-rutttabell /proc/ inställning klar... Tömningsregler i filtertabellen Ställa in standard (säkra) policyer Använda loggnivå "info" för syslogd Konfigurera brandväggsregler: —————————————————————————— — - Acceptera paket från den lokala loopback-enheten Möjliggör inställning av maximal paketstorlek via MSS Aktiverar mangling TOS Loggning av smygsökningar (nmap-sonder etc.) aktiverad Loggning av paket med dåliga TCP-flaggor aktiverade Loggning av OGILTIGA paket inaktiverad Loggning av fragmenterade paket aktiverad Loggning av åtkomst från reserverade adresser aktiverad Konfigurera anti-spoof-regler Läsa anpassade IPTABLES-regler från /etc/arno-iptables-firewall/custom-rules Laddar (användare) plugins Konfigurera INPUT-policy för det externa nätet (INET): Ena bling-stöd för en DHCP-tilldelad IP på externa gränssnitt(ar): eth0 Loggning av explicit blockerade värdar aktiverad Loggning av nekade lokala utgångsanslutningar aktiverade Paket kommer INTE att kontrolleras för privata källadresser Tillåter hela världen att skicka ICMP-förfrågningar(ping) Loggning av tappade ICMP-request(ping)-paket aktiverade Loggning av tappade andra ICMP-paket aktiverade Loggning av möjliga smygsökningar aktiverade Loggning av (andra) anslutningsförsök till PRIVILEGERADE TCP-portar aktiverad Loggning av (andra) anslutningsförsök till PRIVILEGERADE UDP-portar aktiverad Loggning av ( annat) anslutningsförsök till UNPRIVILEGERADE TCP-portar aktiverade Loggning av (andra) anslutningsförsök till UNPRIVILEGERADE UDP-portar aktiverade Loggning av andra IP-protokoll (icke TCP/UDP/ICMP) anslutningsförsök aktiverad Loggning av ICMP-flooding aktiverad Applicera INET-policy på extern (INET) gränssnitt: eth0 (utan ett externt subnät specificerat) Ställa in INPUT-policy för interna (LAN) gränssnitt: eth1 Tillåta ICMP-begäranden(ping) A llowing alla (andra) protokoll Ställa in FORWARD-policy för interna (LAN)-gränssnitt: eth1 Loggning av nekade LAN->INET FORWARD-anslutningar aktiverade Konfigurera LAN->INET-policy: Tillåter ICMP-begäranden(ping) Tillåter alla (annat) )-protokoll Aktiverar maskerad(NAT) via externa gränssnitt: eth0 Lägger till (interna) värd(ar): 192. 168.2.0/24 Säkerhet UTVECKLAS för externa gränssnitt i FORWARD-kedjan Jan 16 23:53:12 Alla brandväggsregler tillämpas.

Anteckning 1. I de flesta fall sker en framgångsrik lansering av brandväggen efter den första kommunikationen med konfiguratorn. Om något inte fungerade rekommenderas det starkt att upprepa konfigurationen genom att köra konfiguratorn igen med superanvändarrättigheter:

# dpkg-reconfigure arno-iptables-firewall

Detta kommer att eliminera ett slumpmässigt fel som kan uppstå när du svarar på konfiguratorns frågor under den första upplevelsen av att kommunicera med honom. Om detta inte hjälper kan du försöka korrigera programmets konfigurationsfil manuellt arno-iptables-brandvägg, nämligen: /etc/arno-iptables-firewall/firewall.conf. Det kan vara bra att besöka hemsidan för skaparen av detta program på: http://rocky.eld.leidenuniv.nl/ . Den innehåller en mycket informativ guide för att arbeta med programmet, en intressant FAQ och dessutom finns det information om nya versioner av programmet.

Anteckning 2. Det får vi inte glömma ingen En brandvägg kan inte ge en 100% garanti för att din dator är säker på Internet. Brandväggsskyddet kan dock inte försummas. Vi måste göra allt som beror på oss, för att sedan lita på Guds nåd. "Om inte Herren bevarar staden, vakar väktaren förgäves"(Ps. 127:1).

Artikelkälla

Jag skrev ett blogginlägg om Iptables grundregler för en datoranvändare för länge sedan, och du borde nog läsa det och den relaterade Stateful-brandväggsartikeln.

Men pre kernel 2.6.39 (som inkluderar och du kan använda den för vitlistning av IP om du har fler än 10 för vitlistning (där 10 är godtyckligt)).

Konfigurera iptables för dummies

Det första handtagstillståndet vi vet att vi vill acceptera eller ta bort, och gränssnitten.

Om du bara vill tillåta endast IP, inget tillstånd

du kommer med största sannolikhet stöta på problem med detta och jag föreslår att du använder staten för att göra ditt liv enklare. Till exempel inte tillåter och kommer definitivt att orsaka problem för vissa applikationer.

Varje dator som är ansluten till nätverket är i potentiell fara. Det finns många hot på nätverket, allt från program som ska försöka penetrera systemet på något sätt och slutar med hackare som vill få tillgång till den dator de behöver. Och programvaran som är installerad på datorn kan innehålla ännu okända och oparpade sårbarheter, som kan bli ett säkerhetshål.

Om detta inte är särskilt relevant för hemdatorer, eftersom de är anslutna till nätverket via routrar och NAT, som döljer dem från det externa nätverket, så är detta för servrar mer relevant än någonsin. I operativsystemet Linux är en mycket flexibel och pålitlig iptables-brandvägg inbyggd i kärnan.

Det är med hjälp av detta program som systemet skyddas från externa intrång, port forwarding, och även en hel del åtgärder med trafik. Men dess nackdel är att den är lite svår att sätta upp. Den här artikeln kommer att täcka konfigurering av iptables för dummies. Jag hoppas att du efter det med säkerhet kommer att kunna använda de grundläggande funktionerna i iptables.

Undersystemet iptables och Netfilter har byggts in i Linux-kärnan under lång tid. Alla nätverkspaket som passerar genom datorn, skickas av datorn, eller är avsedda för datorn, leder kärnan genom iptables-filtret. Där är dessa paket föremål för kontroller och sedan för varje kontroll, om den godkänns, utförs den åtgärd som anges i den. Till exempel skickas paketet vidare till kärnan för att skickas till målprogrammet, eller kasseras.

Pakettyper

Alla paket är indelade i tre typer: inkommande, utgående och passerande. Inkommande - de som skickades till den här datorn, utgående - skickas från den här datorn till nätverket. Och passerande är paket som bara behöver vidarebefordras, till exempel om din dator fungerar som en router.

Följaktligen, i iptables-filtret är alla paket uppdelade i tre liknande kedjor:

  • Inmatning- hanterar inkommande paket och anslutningar. Till exempel, om någon extern användare försöker ansluta till din dator via ssh eller någon webbplats kommer att skicka sitt innehåll till dig när webbläsaren begär det. Alla dessa paket kommer att hamna i denna kedja;
  • fram-- denna kedja används för att passera anslutningar. Detta inkluderar paket som skickas till din dator, men som inte är avsedda för det, de skickas helt enkelt över nätverket till deras mål. Detta observeras som sagt på routrar eller till exempel om din dator distribuerar wifi;
  • produktion- denna kedja används för utgående paket och anslutningar. Detta inkluderar paket som genererades när du försökte pinga en webbplats, eller när du startar din webbläsare och försöker öppna valfri webbplats.

Men om du tror att du bara kan stänga Input-kedjan helt för att öka säkerheten, så har du väldigt fel. När nätverket är igång används både ingångs- och utgångskedjor. Till exempel, du försöker pinga, data skickas via utdata, men svaret kommer via input. Samma sak händer när du surfar på webbplatser och andra aktiviteter. Men framåtkedjan kanske inte används alls om din dator inte är en router. Så att konfigurera iptables måste göras mycket noggrant.

Regler och handlingar

Innan du går vidare till att skapa en lista med iptables-regler måste du överväga hur de fungerar och vad de är. För varje typ av paket kan du ställa in en uppsättning regler som kommer att kontrolleras i tur och ordning för överensstämmelse med paketet, och om paketet matchar, tillämpa sedan den åtgärd som anges i regeln på det. Regler bildar en kedja, så input, output och forward kallas kedjor, kedjor av regler. Det kan vara flera åtgärder:

  • ACCEPTERA- låt paketet passera vidare längs kedjan av regler;
  • SLÄPPA- ta bort paketet;
  • AVVISA- avvisa paketet, ett meddelande kommer att skickas till avsändaren om att paketet avvisades;
  • LOGGA- registrera paketet i loggfilen;
  • - skicka ett paket till en användarapplikation.

Regler kan kontrollera alla matchningar, till exempel efter ip, efter port för mottagaren eller avsändaren, pakethuvuden och mycket mer. Om paketet inte matchar någon av reglerna, tillämpas standardåtgärden, vanligtvis ACCEPT, på det.

När vi kommit på reglerna kan vi gå tillbaka till kedjorna. Utöver de som anges ovan finns det ytterligare två regelkedjor:

  • fördirigering- paketet kommer in i denna kedja innan iptables bearbetning, systemet vet ännu inte vart det kommer att skickas, för inmatning, utmatning eller vidarebefordran;
  • postrouting- alla passerande paket som redan har passerat vidarekopplingskedjan kommer hit.

Men det är inte allt. Vi har även iptables-bord, som också är önskvärda att hantera.

ipatables

Ovanför regelkedjorna i iptables finns ytterligare ett lager av abstraktion, och det är tabeller. Det finns flera tabeller i systemet, och de har alla en standarduppsättning av ingångs-, framåt- och utmatningskedjor. Tabeller används för att utföra olika åtgärder på paket, såsom modifiering eller filtrering. Nu är detta inte så viktigt för dig och det räcker med att veta att iptables paketfiltrering utförs i filtertabellen. Men vi ska ta en titt på dem alla:

  • - utformade för att fungera med råpaket, medan de ännu inte har bearbetats;
  • mangel- utformad för att modifiera paket;
  • nat- ger nat-drift om du vill använda datorn som en router;
  • filtrera- huvudtabellen för filtrering av paket, som används som standard.

Med teorin nästan allt, låt oss nu titta på iptables kommandoradsverktyg, med vilket iptables-systemet hanteras.

Iptables verktyg

Iptables undersystem och netfilter är inbyggda i kärnan, men en uppsättning verktyg för att hantera allt detta levereras inte alltid med systemet. För att installera verktyget på Ubuntu, skriv:

sudo apt installera iptables

På Fedora-baserade distributioner är installationen av iptables lite annorlunda:

sudo yum installera iptables

När installationen av iptables är klar kan du fortsätta till konfigurationen, men låt oss först titta på syntaxen för verktyget. Kommandot ser vanligtvis ut så här:

-t bordsåtgärdskedja Extra tillval

Låt oss nu titta på alternativen för iptables, tabellen anger tabellen att arbeta med, detta alternativ kan utelämnas, åtgärd - önskad åtgärd, till exempel skapa eller ta bort en regel, och ytterligare alternativ beskriver åtgärden och regeln som ska utföras.

Det återstår att överväga de viktigaste åtgärderna som iptables låter dig utföra:

  • -A- lägg till en regel i kedjan;
  • -FRÅN- kontrollera alla regler;
  • -D- ta bort en regel;
  • -Jag- infoga en regel med önskat nummer;
  • -L- visa alla regler i den aktuella kedjan;
  • -S- visa alla regler;
  • -F- rensa alla regler;
  • -N- skapa en kedja;
  • -X- ta bort kedjan;
  • -P- ställ in standardåtgärden.

Ytterligare alternativ för regler:

  • -s- ange protokollet, ett av tcp, udp, udplite, icmp, icmpv6, esp, ah, sctp,
    mh;
  • -s- ange ip-adressen för enheten som skickar paketet;
  • -d- ange ip-adressen för mottagaren;
  • -jag- ingångsnätverksgränssnitt;
  • -o- utgående nätverksgränssnitt;
  • -j- välj en åtgärd om regeln matchar.

Nu kan vi gå vidare till exempel på hur iptables är konfigurerat.

Iptables-konfigurationsexempel

Vi kommer att titta på några grundläggande exempel så att du kan konsolidera allt du läser ovan.

Lista över regler

Låt oss först titta på hur iptables-regeluppslagningen utförs, alternativet -L räcker för detta:

Du kan också ange önskad kedja för att endast visa reglerna för den:

iptables -L INPUT

Rensa reglerna

Du kan inte bara inaktivera iptables genom att stoppa iptables-regeluppdateringstjänsten via systemd, eller ens genom att ta bort uppsättningen konfigurationsverktyg. Undersystemet fungerar på kärnnivå och beror inte på vad du har installerat där. Därför, om du gör något fel, måste du rensa reglerna. För att göra detta, kör:

Eller bara för en specifik kedja:

sudo iptables -F Ingång

Jag påminner dig om att alla dessa åtgärder utförs för standardtabellen - filter.

Standardregler

Som jag sa, om ingen regel matchar ett paket, tillämpas standardåtgärden på det. Det kan ställas in med alternativet -p:

sudo iptables -p INPUT ACCEPT
$ sudo iptables -p OUTPUT ACCEPTERAR
$ sudo iptables -p FRAMÅT

I det här exemplet aktiverar vi INPUT- och OUTPUT-kedjorna, men inaktiverar FORWARD.

Paketblockering

För att blockera paket kan vi använda DROP-åtgärden, vi kan filtrera de paket som vi behöver blockera efter många kriterier, såsom protokoll, ip-adress, nätmask, port och mycket mer.

Så här kommer kommandot att se ut, vilket låter dig lägga till en iptables-regel för att blockera alla inkommande paket från 10.10.10.10:

sudo iptables -A INPUT -s 10.10.10.10 -j DROP

Och nu utgående paket till samma adress:

IP-räckviddsblockering görs på liknande sätt. För att göra detta måste du använda nätmasken 10.10.10.0/24. Dessa kommer att vara alla adresser från 10.10.10.0 till 10.10.10.255:

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

Eller en utökad version av masken:

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

Du kan också blockera alla inkommande ssh-anslutningar:

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

Som du kan se är det väldigt enkelt att lägga till en iptables-regel.

Ta bort regler

Att ta bort iptables-regler görs på samma sätt som att skapa nya, men istället för alternativ A måste du använda alternativ D. Titta först på listan med regler:

Så här kan du till exempel ta bort iptables-regeln som skapades på andra plats:

sudo iptables -A OUTPUT -s 10.10.10.10 -j DROP

Du kan också rensa iptables helt genom att köra kommandot med alternativet -F:

Definition iptables- kommandoradsverktyg, är ett standardgränssnitt för att hantera driften av en brandvägg (brandvägg) nätfilter för Linux-kärnor version 2.4, 2.6, 3.x, 4.x. Superanvändarbehörigheter (root) krävs för att använda iptables-verktyget.

Vi kommer att ta itu med iptables och utan en liten teoretisk introduktion är oumbärlig.

För att korrekt komponera brandväggsregler måste du förstå hur paket går till i allmänhet och vad som händer med dem.

Ordningen för förflyttning av transitpaket

Steg tabell Kedja Notera
1
2 mangel FÖRRUTNING Vanligtvis används denna kedja för att göra ändringar i pakethuvudet, såsom att ändra bitarna TOS etc..
3 nat FÖRRUTNING Denna kedja används för nätverksadressöversättning ( ). avrättades senare i en annan kedja.
4 Att fatta beslut om vidare dirigering, d.v.s. vid denna tidpunkt bestäms vart paketet ska gå - till den lokala applikationen eller till en annan nätverksnod.
5 mangel FRAM Därefter kommer paketet in i kedjan FRAM mangla bord.
6 filtrera FRAM I en kedja FRAM endast de paket som går till en annan värd kommer in. All filtrering av transittrafik ska göras här. Glöm inte att trafiken passerar genom denna kedja i båda riktningarna, se till att ta hänsyn till denna omständighet när du skriver filtreringsregler.
7 mangel POSTROUTING Denna kedja är utformad för att göra ändringar i pakethuvudet efter att det senaste routingbeslutet har tagits.
9 nat POSTROUTING Denna krets är främst avsedd för Källnätverksadressöversättning. Maskerad utförs också här ( Maskerad).
9 Output nätverksgränssnitt (till exempel eth1).

För lokal applikation (inkommande paket)

Steg tabell Kedja Notera
1 Inkommande nätverksgränssnitt (till exempel eth0)
2 mangel FÖRRUTNING Används vanligtvis för att göra ändringar i pakethuvudet, såsom inställning av bitar TOS etc.
3 nat FÖRRUTNING Adressöversättning ( Översättning av destinationsnätverksadress).
4 Ta ett ruttbeslut.
5 mangel INMATNING Paketet går in i kedjan INMATNING mangla bord. Här görs ändringar i pakethuvudet innan det skickas till den lokala applikationen.
6 filtrera INMATNING Det är här inkommande trafik filtreras. Kom ihåg att alla inkommande paket adresserade till oss går genom denna kedja, oavsett vilket gränssnitt de kom från.
7 Lokal process/applikation (dvs serverprogram eller klientprogram)

Från lokala processer (utgående paket)

Steg tabell Kedja Notera
1 Lokal process (d.v.s. serverprogram eller klientprogram).
2 Ta ett ruttbeslut. Här bestäms vart paketet ska gå härnäst - till vilken adress, genom vilket nätverksgränssnitt osv.
3 mangel PRODUKTION Det är här du gör ändringar i pakethuvudet. Att utföra filtrering i denna kedja kan få negativa konsekvenser.
4 nat PRODUKTION Denna kedja används för nätverksadressöversättning (NAT) i paket som kommer från lokala brandväggsprocesser.
5 filtrera PRODUKTION Utgående trafik filtreras här.
6 mangel POSTROUTING Kedja POSTROUTING Mangletabellen används främst för regler som måste modifiera rubriken på ett paket innan det lämnar brandväggen, men efter att ett routingbeslut har tagits. Alla paket, både under överföring och skapade av lokala brandväggsprocesser, hamnar i denna kedja.
7 nat POSTROUTING Här utförs Källnätverksadressöversättning. Paket bör inte filtreras på denna kedja för att undvika oönskade biverkningar. Men här kan du också stoppa paket genom att tillämpa standardpolicyn SLÄPPA.
8 Nätverksgränssnitt (till exempel eth0)

Som vi förstår finns det tre huvudtabeller:

  • mangel— Den här tabellen är avsedd för operationer för att klassificera och markera paket och anslutningar, samt modifiering av pakethuvuden (TTL- och TOS-fält).
  • filtrera- huvudtabellen för filtrering av paket, som används som standard. I den här tabellen sker faktiskt paketfiltrering.
  • nat- ger nat-drift om du vill använda datorn som router. Rutningsregler anges här.

För bord nat tillämpliga steg:

  • MASKERAD

Handling DNAT(Destination Network Address Translation) översätter destinationsadresser i pakethuvuden. Med andra ord, den här åtgärden omdirigerar paket till andra adresser än de som anges i pakethuvuden.

SNAT(Source Network Address Translation) används för att ändra källadresserna för paket. Med den här åtgärden delar du den enda externa IP-adressen mellan datorer på det lokala nätverket för att komma åt Internet. I det här fallet använder brandväggen SNAT, utför automatiskt framåt och bakåt adressöversättning, vilket gör det möjligt att ansluta till servrar på Internet från datorer i det lokala nätverket.

Maskera ( MASKERAD) används för samma ändamål som SNAT, men till skillnad från det senare, MASKERAD lägger mer stress på systemet. Detta händer eftersom varje gång den här åtgärden krävs begärs en IP-adress för nätverksgränssnittet som anges i åtgärden, medan för SNAT IP-adressen anges direkt. Men på grund av denna skillnad, MASKERAD kan fungera i fall med dynamisk IP-adress, dvs. när du ansluter till internet, säg via PPP, GLIDA eller DHCP.

iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o eth0 -j MASQUERADE

Springa MASKERAD för alla paket som kommer från nätverk 10.8.0.0 till gränssnittet eth0 . För tydlighetens skull, låt oss säga att vi har två nätverkskort och två nätverk. Vi behöver ett nätverk 10.8.0.0/24 (det första nätverkskortet) skulle kunna gå, säg, till Internet genom eth0( andra nätverkskortet)

  • - Designad för att utföra åtgärder med paket innan de bearbetas av systemet.

Själva standardtabellen filter .

  • INMATNING- hanterar trafik som kommer direkt till värden själv.
  • FRAM- låter dig filtrera transittrafik.
  • PRODUKTION- låter dig filtrera trafik som kommer från värden själv.

Paketåtgärd.

  • ACCEPTERA- paketpass. Paketet lämnar den nuvarande baskedjan och går vidare.
  • AVVISA- blockera paketet och informera dess källa om avslaget.
  • SLÄPPA- blockera paketet utan att meddela källan till felet. Det är mer att föredra när man filtrerar trafik på gränssnitt som är anslutna till Internet, eftersom det minskar informationsinnehållet i värdportsskanning av inkräktare.
  • LOGGA- registrera paketet i loggfilen.

Det visar sig att vi har en kedja [tabell - filter] - [trafik - INPUT] - [åtgärd - DROP] handlingslogiken verkar bara komplicerad. Jag tror att vi kommer att förstå med exempel och allt kommer att bli enkelt.

iptables kommandon:

  • -A lägg till regeln i slutet av kedjan.
  • -D ta bort regeln.
  • -Jag infoga regeln med önskat nummer.
  • -L skriv ut alla regler i den aktuella kedjan.
  • -S mata ut alla regler.
  • -F rensa alla regler.
  • -N skapa en kedja.
  • -X radera kedjan.
  • -P ställ in standardåtgärd.

Låt oss börja med specifika exempel.

iptables -A INPUT -p tcp --dport 80 -j ACCEPTERAR

-A lägga till en ny regel INMATNING för inkommande paket, -s protokoll, ett av tcp, udp, udplite, icmp, icmpv6, esp, ah, sctp,
mh, — — dport destinationsport 80 (alternativ endast för protokoll), -j välj en åtgärd om regeln matchar, ACCEPTERA tillåta. Det vill säga tillåt inkommande tcp-trafik på port 80.

De angivna nycklarna stöder också skyltkonstruktion. ! . Det inverterar tillståndet, till exempel:

iptables -A INPUT -s ! 192.168.0.50 -j DROPPA

-s källadress - värdnamn(www.help.com), IP-adress eller subnät i CIDR-notation(192.168.0.1/16), ! inversion, SLÄPPA förbjuda. Neka all inkommande trafik utom källan 192.168.0.50 (om det inte var det ! , förneka sedan endast från 192.168.0.50)

iptables -A INPUT -s 192.168.0.50 -j DROP

Neka inkommande trafik från ip - 192.168.0.50 .

Lista över regelkriterier:

  • -s Protokoll, protokoll kan också specificeras med ett nummer eller namn som anges i /etc/protocols . Värdet "alla protokoll" kan anges med ordet all eller siffran 0 . Det finns även ytterligare parametrar för protokollet.: -sport(--källport) Låter dig ange den utgående porten (eller deras räckvidd). —dport(—destinationsport) Låter dig ange destinationsporten (eller ett intervall av dem).
  • -s Anger avsändarens adress. Adressen kan vara en IP-adress (eventuellt med en mask), ett domännamn (i de två sista fallen, innan regeln läggs till i kedjan, löser sig namnet till en IP-adress).
  • -jag Anger det inkommande nätverksgränssnittet. Om det angivna gränssnittsnamnet slutar med ett "+"-tecken (till exempel eth +), så matchar alla gränssnitt vars namn börjar med det angivna namnet (etho,eth1) kriteriet.
  • -d Anger mottagarens adress. Syntaxen är liknande -s .
  • -o Anger det utgående nätverksgränssnittet. Syntaxen är liknande -jag.

Samma kriterier kan kombineras.

iptables -A INPUT -i eth0 -s 192 .168.0.0 -j DROP

Neka inkommande paket från gränssnittet eth0 Och ip 192.168.0.0. Och på gränssnittet eth1 paket kommer att gå igenom.

Tänk om du för tidigt vet inte vilken port du ska öppna, till exempel vill du att FTP-servern ska fungera i passivt läge. Modul förbindelse om tillståndet för anslutningen kommer att hjälpa, och mer specifikt, kriteriet - ctstate. Modulen är kopplad med en tagg -m.

iptables -A INPUT -m conntrack --ctstate ETABLISHED,RELATED -j ACCEPT

iptables -A INPUT -m conntrack --ctstate NYTT -p tcp --dport 21 -j ACCEPTERA # Tillåt öppna anslutningar på TCP-port 21.

Möjliga tillstånd:

  • NY- anslutningen är inte öppen, dvs paketet är det första i anslutningen.
  • ETABLERADE- paketet hänvisar till en redan etablerad anslutning. Vanligtvis tas sådana paket emot utan ytterligare filtrering, vilket är fallet med RELATED.
  • RELATERAD- paketet öppnar en ny anslutning, logiskt relaterad till de redan etablerade, till exempel öppnar en datakanal i FTP-passivt läge. Anslutning får status RELATERAD om det är associerat med en annan förening som har attributet ETABLERADE.
  • OGILTIG- Flaggan INVALID indikerar att paketet inte kan identifieras och därför inte kan ha en specifik status.

iptables -A INPUT -m state --state ETABLISHED,RELATED -j ACCEPT

S tate och den deologiska föregångaren till conntrack, har ett enda --state-alternativ, liknande --ctstate-alternativet för conntrack-modulen (men, till skillnad från det, stöder inte DNAT- och SNAT-tillstånd).

Låt oss ta en snabb titt på taxichaufförstabellen, som finns i filen /proc/net/ip_conntrack . Den innehåller en lista över alla aktiva anslutningar.

Tcp 6 300 ETABLISTERAD src=128.*.*.* dst=194.*.*.* sport=52524 dport=2223 src=194.*.*.* dst=128.*.*.* sport=2223 dport =52524 mark=0 använd=2

Det första, som du förstår, är protokollet, sedan decimaltalet (vilket betyder att jag inte vet), sedan kommer anslutningens livslängd. Vidare är tillståndet ETABLISTERAT, det vill säga att anslutningen redan har upprättats, den kan också vara OBEVARAD, vilket betyder att det inte har förekommit någon svarstrafik ännu. Nästa är adresserna till avsändaren och mottagaren, porten för avsändaren och mottagaren. Vidare är allt vice versa, respektive, FÖRSÄKRAD denna flagga indikerar att anslutningen har upprättats på ett säkert sätt och denna post kommer inte att raderas när det maximalt möjliga antalet spårade anslutningar har uppnåtts.

Vissa funktioner i protokollen.

En TCP-anslutning upprättas alltid genom att skicka tre paket, som initierar och upprättar den anslutning genom vilken data kommer att överföras i framtiden. Sessionen börjar med en sändning SYN paket, som svar på vilket det sänds SYN/ACK paket och bekräftar att anslutningen upprättas av paketet ACK .

Så snart spåraren såg den första ( SYN)-paketet och tilldelar det sedan status NY. Så snart det andra paketet passerar genom spårämnet ( SYN/ACK), då tilldelas anslutningen statusen ETABLERADE.

Med UDP-protokollet är allt lite annorlunda.Detta protokoll ger inte möjlighet att upprätta och stänga en anslutning, men den största nackdelen är bristen på information om i vilken ordning paketen anländer. Men ur spårarens synvinkel är allt detsamma som med TCP. Det första ankommande paketet tilldelas en status NY. Så snart du skickar ett svarspaket tilldelas statusen ETABLERADE. Den enda skillnaden är att statusen ASSURED endast tilldelas när flera paket redan har bytts ut.

Loggningsregelapplikationer.

iptables ger dig möjligheten att logga enskilda paket och händelser. För detta, handlingen LOGGA.

iptables -A INPUT -p tcp --syn -j LOG --log-nivå info --log-prefix "INPUT-paket"

--loggnivå Används för att ställa in loggnivån. Se man-sidan för syslog.conf för en komplett lista över nivåer. Vanligtvis kan du ställa in följande nivåer: felsöka, info, Lägga märke till, varning, varna, fela, fel, crit, varna, framträda Och panik. Loggar skrivs till en fil syslog.

--log-prefix Nyckeln anger texten (prefix) som kommer före alla meddelanden iptables. Meddelanden med ett specifikt prefix kan sedan enkelt hittas till exempel med grep. Prefixet kan innehålla upp till 29 tecken, inklusive mellanslag.

Jun 1 17:12:20 debian kärna: INPUT-paket IN=eth0 OUT= MAC=02:1e:6d:00:e2:1c:00:01:e8:11:73:69:08:00 SRC=125.94. 12.95 DST=194.87.239.104 LEN=40 TOS=0x00 PREC=0x00 TTL=52 ID=38690 PROTO=TCP SPT=12557 DPT=23 WINDOW=1460$ RES=0x00 SYN URGP=0

Populära iptables-hanteringskommandon.

iptables -L -n --radnummerVisa en lista med regler.

-n antal portar och ip i digital form.

--radnummer linje nummer.

iptables -FÅterställ reglerna helt.

iptables -P INPUT ACCEPT Standardregler för INPUT-tabellen.
iptables -P OUTPUT ACCEPTERAR Standardregler för tabellen OUTPUT.
iptables -P FRAMÅT Standardregler för FORWARD-tabellen.

iptables -D INPUT 1Ta bort en regel efter dess nummer i kedjan.

iptables -D INPUT -s 123.45.67.89 -j DROP Ta bort en regel baserat på vad den gör.

iptables -I INPUT ... Infoga (infoga) regler i början av kedjan.

iptables -I INPUT 3 ... Eller så kan du ange en specifik position.

DIRIGERA OM

REDIRECT-åtgärden är utformad för att omdirigera paket från en uppsättning portar till en annan inom samma system, utan att lämna värden.
OMDIREKT fungerar endast i tabellens PREROUTING- och OUTPUT-kedjor nat. Omfattningen är därför begränsad till endast omdirigering. Detta används oftast för en transparent proxy, när en klient från det lokala nätverket ansluter till port 80, och gatewayen omdirigerar paket till proxyns lokala port:

iptables -t nat -A PREROUTING -p tcp --dport 80 -j REDIRECT --to-port 3128

Nya regler sparas inte automatiskt och kommer inte att träda i kraft efter en omstart av servern. Därför, efter att ha ändrat iptables, måste vi spara ändringarna.

iptables - återställ > /etc/iptablesLadda regler från fil.

Sättet att spara och ladda reglerna är upp till dig. Vi har bara bekantat oss med grunderna i iptables teori, naturligtvis finns det mycket fler konfigurationsalternativ. Mer information om vilka vi kommer att berätta i annan artikel.

Linux har en inbyggd brandvägg som heter Netfilter. Enligt projektets officiella hemsida:

netfilter är en uppsättning systemmeddelanden inom Linux-kärnan som tillåter kärnmoduler att registrera återuppringningsfunktioner från nätverksstacken. Den registrerade återuppringningsfunktionen bearbetar varje paket som passerar genom nätverksstacken.

Brandväggen i Linux styrs av programmet iptables, som har IPv4-filtreringsfunktioner, ip6tables filtrerar IPv6. Den här guiden berättar hur du lär dig hur du använder Netfilter (iptables) på CentOS / RHEL / Fedora / Redhat Enterprise Linux. I den här artikeln kan du hitta grundläggande exempel på att konfigurera iptables på Linux för intrångsskydd.

Exempel på användning av Iptables

  • De flesta av åtgärderna som listas i den här artikeln är skrivna med antagandet att de kommer att utföras som rotanvändare av bash eller något annat modernt skal. Ange inte kommandon på fjärrsystemet, eftersom du kan inaktivera åtkomst till dig själv.
  • För demoändamål använde jag ubuntu 10.04, men kommandona borde fungera med vilken modern distro som helst.
Visar status för din brandvägg
Ange följande kommando som root:
# iptables -L -n -v
Exempel på svar:
Chain INPUT (policy ACCEPT 0 paket, 0 byte) pkts byte target prot opt-out källdestination Chain FORWARD (policy ACCEPT 0 paket, 0 byte) pkts byte target prot opt-out källdestination Chain OUTPUT (policy ACCEPT 0 paket, 0 byte ) pkts byte mål prot opt-in källdestination
Detta svar betyder att brandväggen inte är aktiv.
Och, till exempel, kommer detta att visa att brandväggen i Linux är aktiv:

Chain INPUT (policy ACCEPT 1810K paket, 126M byte) pkts byte target prot opt ​​in out källdestination 7418K 1070M ACCEPT udp -- * * 0.0.0.0/0 0.0.0.0/0 udp dpt:1194 5280 5281 ACPT eth0 * 0.0.0.0/0 0.0.0.0/0 tcp dpt:2222 flaggor:0x17/0x02 state NY Chain FORWARD (policy ACCEPT 5628K paket, 482M byte) pkts byte mål prot opt-out källdestination 0 0 AC - eth0 tun0 0.0 0.0.0.0/0 0.0.0.0/0 tcp dpt:1111 tillstånd NYTT,RELATERAT,ETABLISTERAT 599K 539M ACCEPTERAR udp -- eth0 * 0.0.0.0/0 10.1.1.6RELAT tillstånd:1112 ETT 10.1.1.6RELAT, udDLISTA, udd. 4 959 000 paket, 880 miljoner byte) pkts byte mål prot välja bort källdestination
Nycklarna i exemplet betyder:

  • L: Lista reglerna.
  • v: Visa detaljerad information. Den här tangenten visar gränssnittets namn, regelparametrar och TOS-masker. Paket- och byteräknare kommer också att visas i listan, med suffixet "K", "M" eller "G" beroende på vilken multiplikator som krävs.
  • n: Lös inte IP-adresser, visa digitalt. Snabbar upp utgången.
För att visa regler med ett radnummer, lägg till omkopplaren --line-numbers, till exempel:
# iptables -n -L -v --radnummer
För att se INPUT- eller OUTPUT-regler, skriv:
# iptables -L INPUT -n -v # iptables -L OUTPUT -n -v --line-numbers
Stoppa, starta om, starta brandväggen
Om du har CentOS / RHEL / Fedora Linux, skriv in:
# tjänst iptables slutar # tjänst iptables startar # tjänst iptables startar om
För att rensa upp iptables regler på egen hand, skriv:
# iptables -F # iptables -X # iptables -t nat -F # iptables -t nat -X # iptables -t mangle -F # iptables -t mangle -X # iptables -P INPUT ACCEPT # iptables -P OUTPUT ACCEPT # iptables -P FRAMÅT ACCEPTERA
Nycklarna i exemplet betyder:
  • F: Ta bort alla regler (spolning).
  • X: Ta bort en kedja
  • t <таблица>: Välj tabell och ta bort regler.
  • P: Ställ in standardprincipen (t.ex. TAPP, AVVISA eller ACCEPTERA).
Ta bort brandväggsregler
För att visa radnumret tillsammans med annan information om befintliga regler, skriv:
# iptables -L OUTPUT -n --line-numbers # iptables -L OUTPUT -n --line-numbers | mindre # iptables -L OUTPUT -n --radnummer | grep 8.8.8.8
Du kommer att få en lista över IP-adresser. Titta på numret till vänster och ange numret för att radera det. Om du till exempel raderar rad nummer 4 anger du:
# iptables -D INPUT 4
Eller hitta käll-IP 202.54.1.1 och ta bort den från regeln:
# iptables -D INPUT -s 202.54.1.1 -j DROP
Nyckeln i exemplet betyder:
  • D: ta bort en eller flera regler från den angivna kedjan
Lägger till brandväggsregler
För att infoga en eller flera regler i en specificerad kedja, används vanligtvis följande syntax. Ta först reda på radnumret:
# iptables -L INPUT -n --radnummer
Utdata till exempel:
Chain INPUT (policy DROP) num target prot opt ​​source destination 1 DROP all -- 202.54.1.1 0.0.0.0/0 2 ACCEPTERA alla -- 0.0.0.0/0 0.0.0.0/0 tillstånd NYHET, ETABLERAD
För att infoga en regel mellan 1 och 2, skriv:
# iptables -I INPUT 2 -s 8.8.8.8 -j DROP
För att se uppdaterade regler, skriv:
# iptables -L INPUT -n --radnummer
Utdata till exempel:
Chain INPUT (policy DROP) num target prot opt ​​source destination 1 DROP all -- 202.54.1.1 0.0.0.0/0 2 DROP all -- 8.8.8.8 0.0.0.0/0 3 ACCEPTERA alla -- 0.0.0.0/0 0.0 0.0/0 tillstånd NY, ETABLERAD
Sparar brandväggsregler
För att spara brandväggsregler på CentOS/RHEL/Fedora Linux, skriv:
# tjänst iptables spara
På andra distributioner
iptables-save > /root/my.active.firewall.rules
eller
iptables-spara
Återställer brandväggsregler
För att återställa brandväggsregler från filen /root/my.active.firewall.rules, skriv:
# iptables återställning< /root/my.active.firewall.rules
För att återställa brandväggsregler på CentOS / RHEL / Fedora Linux, skriv:
# tjänst iptables startas om
Ställer in standardbrandväggspolicyer
Blockera all trafik:
# iptables -P INPUT DROP # iptables -P OUTPUT DROP # iptables -P FORWARD DROP # iptables -L -v -n
Blockera endast inkommande trafik:
# iptables -P INPUT DROP # iptables -P FORWARD DROP # iptables -P OUTPUT ACCEPT
Blockera nätverksadresser för det lokala nätverket på det externa gränssnittet
IP-spoofing är en attack som använder IP-adressen till en värd som offret litar på som returadress i IP-paket som skickas till offret. Paket med icke-routbara källadresser måste avvisas med följande syntax:
# iptables -A INPUT -i eth1 -s 192.168.0.0/24 -j DROP # iptables -A INPUT -i eth1 -s 10.0.0.0/8 -j DROP
IPv4-adressintervall för privata nätverk (se till att de är blockerade på det yttre gränssnittet)
  • 10.0.0.0/8 -j(A)
  • 172.16.0.0/12(B)
  • 192.168.0.0/16 ©
  • 224.0.0.0/4 (MULTICAST D)
  • 240.0.0.0/5(E)
  • 127.0.0.0/8 (LOOPBACK)
Blockerar IP-adresser
För att blockera IP-adress 1.2.3.4 anger du:
# iptables -A INPUT -s 1.2.3.4 -j DROP
Blockera inkommande förfrågningar per port
För att blockera alla förfrågningar på port 80, skriv:
# iptables -A INPUT -p tcp --dport 80 -j DROP # iptables -A INPUT -i eth1 -p tcp --dport 80 -j DROP
För att blockera port 80 endast för IP-adress 1.2.3.4, skriv:
# iptables -A INPUT -p tcp -s 1.2.3.4 --dport 80 -j DROP # iptables -A INPUT -i eth1 -p tcp -s 192.168.1.0/24 --dport 80 -j DROP
Blockering av utgående IP-adress
För att blockera utgående trafik från en specifik värd eller domän, till exempel en webbplats, skriv:
värd -t en webbplats
Svaret blir:
webbplatsen har adress 95.211.41.31
Skriv ner din IP-adress och ange följande kommando för att blockera all utgående trafik från 95.211.41.31:
# iptables -A OUTPUT -d 95.211.41.31 -j DROP
Du kan använda masker:
# iptables -A OUTPUT -d 192.168.1.0/24 -j DROP # iptables -A OUTPUT -o eth1 -d 192.168.1.0/24 -j DROP
Du kan också använda ett domännamn, ange:
# iptables -A OUTPUT -p tcp -d www..ru -j DROP
Även om dokumentationen säger att det inte rekommenderas att använda ett domännamn istället för en IP.
Paketloggning och blockering
Ange följande kommando för att logga och blockera IP-spoofing på det offentliga gränssnittet som heter eth1:
# iptables -A INPUT -i eth1 -s 10.0.0.0/8 -j LOG --log-prefix "IP_SPOOF A: " # iptables -A INPUT -i eth1 -s 10.0.0.0/8 -j DROP
Som standard loggas allt till en fil. /var/log/meddelanden.

Kommentar från:

Det är bättre att inte göra detta, särskilt för uppenbart vänstertrafik. LOG kan bara infogas strikt med -m limit, annars kommer alla DoS-attacker att vara många gånger effektivare: faktiskt, indirekt, får angriparen en direkt väg med intensiv påverkan direkt på serverns filsystem.
Hur man gör det rätt skrivs nedan
Logga och blockera paket med ett begränsat antal loggposter
Alternativet -m kan begränsa antalet loggposter som skapas per tidsenhet. Detta används för att förhindra översvämning i loggfilen. För att spela in högst 7 poster per 5 minuter, skriv in:
# iptables -A INPUT -i eth1 -s 10.0.0.0/8 -m limit --limit 5/m --limit-burst 7 -j LOG --log-prefix "IP_SPOOF A: " # iptables -A INPUT -i eth1 -s 10.0.0.0/8 -j DROP
Blockera eller tillåt trafik från en Mac-adress
Använd följande syntax:
# iptables -A INPUT -m mac --mac-source 00:19:99:3C:AB:23 -j DROP ## *acceptera endast trafik för TCP-port # 8080 från mac 00:19:99:3C:AB: 22 * ## # iptables -A INPUT -p tcp --destination-port 22 -m mac --mac-source 00:19:99:3C:AB:22 -j ACCEPT
Neka eller tillåt ICMP-förfrågningar om ping
Ange följande kommando för att blockera ICMP-förfrågningar:
# iptables -A INPUT -p icmp --icmp-type echo-request -j DROP # iptables -A INPUT -i eth1 -p icmp --icmp-type echo-request -j DROP
Ping-svaret kan också begränsas till vissa nätverk eller värdar:
# iptables -A INPUT -s 192.168.1.0/24 -p icmp --icmp-type echo-request -j ACCEPTERA
Följande exempel accepterar endast en begränsad typ av ICMP-begäran:
### ** antog att standard INPUT-policy satt till DROP ** ############# iptables -A INPUT -p icmp --icmp-type echo-reply -j ACCEPT iptables -A INPUT -p icmp --icmp-typ destination-unreachable -j ACCEPTERAR iptables -A INPUT -p icmp --icmp-type time-exceeded -j ACCEPTERAR ## ** alla våra servrar ska svara på pingar ** ## iptables -A INPUT -p icmp --icmp-typ echo-request -j ACCEPTERA
Öppna ett intervall av IP-adresser
Använd följande syntax för att öppna en rad IP-adresser:
## accepterar endast anslutning till tcp-port 80 (Apache) om ip är mellan 192.168.1.100 och 192.168.1.200 ## iptables -A INPUT -p tcp --destination-port 80 -m iprange --src-range 191.106.- 192.168.1.200 -j ACCEPTERA
## nat exempel ## iptables -t nat -A POSTROUTING -j SNAT --to-source 192.168.1.20-192.168.1.25
Stänga eller öppna gemensamma portar
Följande är syntaxen för att öppna och stänga portar för vanliga TCP- och UDP-portar:
Ersätt ACCEPT med DROP för att blockera port: ## öppen port ssh tcp port 22 ## iptables -A INPUT -m state --state NYTT -m tcp -p tcp --dport 22 -j ACCEPTERA iptables -A INPUT -s 192.168. 1.0/24 -m tillstånd --state NYTT -p tcp --dport 22 -j ACCEPTERA ## öppna koppar (utskriftstjänst) udp/tcp port 631 för LAN-användare ## iptables -A INPUT -s 192.168.1.0/24 - p udp -m udp --dport 631 -j ACCEPTERA iptables -A INPUT -s 192.168.1.0/24 -p tcp -m tcp --dport 631 -j ACCEPTERA ## tillåt tidssynkronisering via NTP för LAN-användare (öppen udp-port 123) ## iptables -A INPUT -s 192.168.1.0/24 -m state --state NYTT -p udp --dport 123 -j ACCEPTERA ## öppna tcp port 25 (smtp) för alla ## iptables -A INPUT - m state --state NYTT -p tcp --dport 25 -j ACCEPTERA # öppna dns-serverportar för alla ## iptables -A INPUT -m state --state NYTT -p udp --dport 53 -j ACCEPTERA iptables -A INPUT -m state --state NYTT -p tcp --dport 53 -j ACCEPTERA ## öppna http/https (Apache) serverport till alla ## iptables -A INPUT -m state --state NYTT -p tcp --dport 80 -j ACCEPTERA iptables -A INPUT -m state --state NYTT -p tcp --dport 443 -j ACCEPTERA ## öppna tcp port 110 (pop3) för alla ## iptables -A INPUT -m state --state NYTT -p tcp --dport 110 -j ACCEPTERA ## öppen tcp-port 143 (imap) för alla ## iptables -A INPUT -m state --state NYTT -p tcp --dport 143 -j ACCEPTERA ## öppen åtkomst till Samba filserver endast för LAN-användare ## iptables -A INPUT -s 192.168.1.0/24 -m state --state NYTT -p tcp --dport 137 -j ACCEPTERA iptables -A INPUT -s 192.168.1.0/24 -m state --state NYTT -p tcp -- dport 138 -j ACCEPTERAR iptables -A INPUT -s 192.168.1.0/24 -m state --state NYTT -p tcp --dport 139 -j ACCEPTERAR iptables -A INPUT -s 192.168.1.0/24 -m state --state NYTT -p tcp --dport 445 -j ACCEPTERA ## öppen åtkomst till proxyserver endast för LAN-användare ## iptables -A INPUT -s 192.168.1.0/24 -m tillstånd --state NYTT -p tcp --dport 3128 - j ACCEPTERAR ## öppen åtkomst till mysql-servern endast för LAN-användare ## iptables -I INPUT -p tcp --dport 3306 -j ACCEPTERAR
Begränsa antalet samtidiga anslutningar till servern per klient med IP
Du kan använda connlimit-modulen för att ställa in sådana gränser. För att begränsa högst 3 SSH-anslutningar per värd, skriv in:
# iptables -A INPUT -p tcp --syn --dport 22 -m connlimit --connlimit-above 3 -j AVVISA
Ställ in HTTP-förfrågningar till 20:
# iptables -p tcp --syn --dport 80 -m connlimit --connlimit-above 20 --connlimit-mask 24 -j DROP
Parametrar i exemplet,
  • --connlimit-above 3: Om antalet befintliga anslutningar är över 3.
  • --connlimit-mask 24: Gruppvärdar efter