Site Overlay

Nybörjarguiden för iptables, Linux Firewall

  • Korbin Brown
  • Uppdaterad 27 augusti 2020, 2:25pm EDT

Iptables är ett extremt flexibelt brandväggsverktyg byggt för Linux-operativsystem. Oavsett om du är en nybörjare Linux geek eller en systemadministratör, det finns förmodligen något sätt att iptables kan vara en stor användning för dig. Läs vidare när vi visar dig hur du konfigurerar den mest mångsidiga Linux-brandväggen.

foto av ezioman.

om iptables

iptables är ett kommandoradsbrandväggsverktyg som använder policykedjor för att tillåta eller blockera trafik., När en anslutning försöker etablera sig på ditt system, letar iptables efter en regel i sin lista för att matcha den till. Om den inte hittar en, ställer den sig till standardåtgärden.

iptables kommer nästan alltid förinstallerat på vilken Linux-distribution som helst. För att uppdatera/installera det, Hämta bara iptables-paketet:

sudo apt-get install iptables

annonsering

det finns GUI-alternativ till iptables som Firestarter, men iptables är inte så svårt när du har några kommandon ner., Du vill vara extremt försiktig när du konfigurerar iptables-regler, särskilt om du är SSH ’ d till en server, eftersom ett felaktigt kommando permanent kan låsa dig tills det är manuellt fixat på den fysiska datorn.

typer av kedjor

iptables använder tre olika kedjor: ingång, fram och utgång.

Input – denna kedja används för att styra beteendet för inkommande anslutningar. Till exempel, om en användare försöker SSH i din PC/server, iptables kommer att försöka matcha IP-adress och port till en regel i ingångskedjan.,

framåt – denna kedja används för inkommande anslutningar som faktiskt inte levereras lokalt. Tänk på en router-data skickas alltid till den men sällan faktiskt avsedd för routern själv; data vidarebefordras bara till sitt mål. Om du inte gör någon form av routing, NATing, eller något annat på ditt system som kräver vidarebefordran, kommer du inte ens använda denna kedja.

det finns ett säkert sätt att kontrollera om ditt system använder / behöver framåtkedjan.,

iptables -L -v

annons

skärmdumpen ovan är av en server som har körts i några veckor och har inga begränsningar för inkommande eller utgående anslutningar. Som du kan se har ingångskedjan bearbetat 11GB paket och utgångskedjan har bearbetat 17GB. Den främre kedjan har å andra sidan inte behövt bearbeta ett enda paket. Detta beror på att servern inte gör någon form av vidarebefordran eller används som en genomgående enhet.,

utgång – denna kedja används för utgående anslutningar. Till exempel, om du försöker Pinga howtogeek.com, iptables kommer att kontrollera sin produktionskedja för att se vad reglerna gäller ping och howtogeek.com innan du fattar ett beslut att tillåta eller neka anslutningsförsöket.

förbehållet

Även om pinga en extern värd verkar som något som bara skulle behöva korsa utdatakedjan, kom ihåg att för att returnera data kommer indatakedjan också att användas., När du använder iptables för att låsa ditt system, kom ihåg att många protokoll kommer att kräva tvåvägskommunikation, så både ingångs-och utgångskedjorna måste konfigureras korrekt. SSH är ett gemensamt protokoll som folk glömmer att tillåta på båda kedjorna.

Policy Chain Default Behavior

innan du går in och konfigurerar specifika regler Vill du bestämma vad du vill att standardbeteendet för de tre kedjorna ska vara. Med andra ord, Vad vill du att iptables ska göra om anslutningen inte matchar några befintliga regler?,

annons

för att se vad dina policykedjor för närvarande är konfigurerade för att göra med oöverträffad trafik, kör kommandotiptables -L.

som du kan se använde vi också grep-kommandot för att ge oss renare utdata. I den skärmdumpen är våra kedjor för närvarande tänkt att acceptera trafik.

fler gånger än inte, du vill att ditt system att acceptera anslutningar som standard. Om du inte har ändrat reglerna för policy chain tidigare ska den här inställningen redan konfigureras., Hur som helst, här är kommandot för att acceptera anslutningar som standard:

iptables --policy INPUT ACCEPT
iptables --policy OUTPUT ACCEPT
iptables --policy FORWARD ACCEPT

genom att defaulting till accept-regeln, Du kan sedan använda iptables för att neka specifika IP-adresser eller portnummer, samtidigt som du fortsätter att acceptera alla andra anslutningar. Vi kommer till kommandona om en minut.,

annons

om du hellre vill neka alla anslutningar och manuellt ange vilka som du vill tillåta att ansluta, bör du ändra standardpolicyn för dina kedjor att släppa. Att göra detta skulle förmodligen bara vara användbart för servrar som innehåller känslig information och bara någonsin har samma IP-adresser ansluta till dem.,

iptables --policy INPUT DROP
iptables --policy OUTPUT DROP
iptables --policy FORWARD DROP

Anslutningsspecifika svar

an börja lägga till regler till iptables så att den vet vad man ska göra när den stöter på en anslutning från eller till en viss IP-adress eller port. I den här guiden kommer vi att gå över de tre mest grundläggande och vanliga ”svaren”.

Acceptera – Tillåt anslutningen.

släpp – släpp anslutningen, agera som om det aldrig hänt., Det här är bäst om du inte vill att källan ska inse att ditt system existerar.

avvisa – Tillåt inte anslutningen, men skicka tillbaka ett fel. Det här är bäst om du inte vill att en viss källa ska ansluta till ditt system, men du vill att de ska veta att din brandvägg blockerade dem.

annons

det bästa sättet att visa skillnaden mellan dessa tre regler är att visa hur det ser ut när en dator försöker pinga en Linux-maskin med iptables konfigurerade för var och en av dessa inställningar.,

tillåta anslutningen:

släppa anslutningen:

avvisa anslutningen:

tillåta eller blockera specifika anslutningar

med dina policykedjor konfigurerade kan du nu konfigurera iptables för att tillåta eller blockera specifika adresser, adressområden och portar. I dessa exempel ställer vi in anslutningarna till DROP, men du kan byta dem till ACCEPT eller REJECT, beroende på dina behov och hur du konfigurerade dina policykedjor.,

Obs! i dessa exempel kommer vi att användaiptables -A för att lägga till regler i den befintliga kedjan. iptables börjar högst upp på listan och går igenom varje regel tills den hittar en som den matchar. Om du behöver infoga en regel ovanför en annan kan du använda iptables -I för att ange det nummer som ska finnas i listan.

anslutningar från en enda IP-adress

det här exemplet visar hur du blockerar alla anslutningar från IP-adressen 10.10.10.10.,

iptables -A INPUT -s 10.10.10.10 -j DROP

anslutningar från en rad IP-adresser

annons

det här exemplet visar hur man blockerar alla IP-adresser i 10.10.10.0 / 24-nätverksintervallet. Du kan använda en netmask eller standard snedstreck notation för att ange intervallet av IP-adresser.,

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

or

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

Connections to a specific port

This example shows how to block SSH connections from 10.10.10.10.

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

You can replace ”ssh” with any protocol or port number. The -p tcp part of the code tells iptables what kind of connection the protocol uses., Om du blockerar ett protokoll som använder UDP i stället för TCP, skulle -p udp vara nödvändigt istället.

det här exemplet visar hur du blockerar SSH-anslutningar från vilken IP-adress som helst.

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

anslutningstillstånd

som vi nämnde tidigare kommer många protokoll att kräva tvåvägskommunikation. Om du till exempel vill tillåta SSH-anslutningar till ditt system behöver ingångs-och utgångskedjorna en regel som läggs till dem., Men vad händer om du bara vill att SSH kommer in i ditt system ska tillåtas? Kommer inte att lägga till en regel i produktionskedjan också tillåta utgående SSH försök?

annons

det är där anslutningstillstånd kommer in, vilket ger dig den kapacitet du behöver för att tillåta tvåvägskommunikation men bara tillåta envägsanslutningar att upprättas. Ta en titt på det här exemplet, där SSH-anslutningar från 10.10.10.10 är tillåtna, men SSH-anslutningar till 10.10.10.10 är inte., Systemet är dock tillåtet att skicka tillbaka information över SSH så länge sessionen redan har upprättats, vilket gör SSH-kommunikation möjlig mellan dessa två värdar.

Spara ändringar

de ändringar du gör i dina iptables-regler kommer att skrotas nästa gång iptables-tjänsten startas om om du inte utför ett kommando för att spara ändringarna.,div id=”02f11c1957″>

Red Hat / CentOS:

/sbin/service iptables save

Or

/etc/init.d/iptables save

Other Commands

List the currently configured iptables rules:

iptables -L

Adding the -v option will give you packet and byte information, and adding -n will list everything numerically., Med andra ord – värdnamn, protokoll och nätverk listas som nummer.

annons

för att rensa alla de för närvarande konfigurerade reglerna kan du utfärda kommandot flush.

iptables -F

Lämna ett svar

Din e-postadress kommer inte publiceras. Obligatoriska fält är märkta *