I föregående inlägg såg vi hur man konfigurerar IPTables att fungera som en brandvägg. Nu kan vi se hur man skapar skript för att automatiskt köra regler när systemet startar, och även hur man tar bort eller tillfälligt stoppar dessa regler.
Innan vi gör manuset och visar hur det ser ut, låt oss prata lite om NAT och konceptet för vad vi vill göra med den här utrustningen.
NAT och sammanhang av exemplet.
När vi pratar om NAT kan vi förväxla detta med routing, eftersom båda har ansvaret för att ansluta två olika nätverk till varandra. Skillnaden är verkligen att routingen tillämpas för att gå från ett lokalt nätverk till ett annat och detta andra nätverk kan ansluta till en router och gå ut till Internet.
Medan vi pratar om NAT talar vi om dirigering av paket från ett lokalt eller privat nätverk till ett offentligt nätverk eller Internet. Det gör det genom att maskera paketen genom att placera den offentliga IP-adressen som den går till Internet. Med andra ord behöver vi ingen router, eftersom den offentliga IP: n ägs direkt av GNU / Linux-datorn.
Vi kommer att arbeta detta med sloganen att vi använder vår Linux som en router/brandvägg för att gå ut på Internet från ett lokalt nätverk. Men här kan två scenarier dyka upp.
- Att vår Linux är mellan routerns tjänsteleverantör och det lokala nätverket.
I det här fallet skulle det finnas ett nätverk mellan routern och vårt Linux-system, och ett annat nätverk mellan Linux-systemet och det lokala nätverket. Det betyder att vår router inte skulle behöva utföra NAT som sådan; enkel trafikrouting, som förklarades i föregående inlägg, skulle räcka.
- Att vår Linux har ett gränssnitt anslutet till det lokala nätverket och via det andra gränssnittet får det direkt en offentlig IP som den navigerar med.
Detta innebär att vår Linux måste göra NAT så att paketen kan nå Internet.
För syftet med detta lilla laboratorium då kommer vi att säga att vår Linux får en offentlig IP direkt och därmed kunna testa effekterna av NAT.
För att göra NAT använder vi sedan syntaxen
iptables -t nat -A FÖRSTÄLLNING -O eth1 -j MASQUERADE
Där eth1 är gränssnittet där vi tar emot den offentliga IP-adressen, det vill säga där vi går till Internet.
Skapar iptables-skript
Antag då att: 172.26.0.0 är vårt lokala nätverk och 81.2.3.4 är den offentliga IP-adressen som vi går till Internet med. (det är en statisk ip). Jag har gränssnitten eth0 (lokalt nätverk)
eth1 (Offentligt nätverk).
Det består i princip av att skapa ett skript som kan anropas från /etc/init.d/firestop (till exempel). och från det här skriptet kan vi starta, stoppa eller kontrollera status för vår konfiguration, som vi gör med alla systemdemon.
Antag att mina IPTABLES-regler är:
#! / bin / bash # Brandvägg i mitt hem. # Filnamn / etc / firewall_on # Av Jlcmux Twitter: @Jlcmux # # Grundläggande policy. iptables -P INPOUT DROP iptables -P OUTPUT DROP iptables -P FORWARD DROP # #NAT för att dela Internet från eth0 till eth1 iptables -t nat -A POSTROUTING -O eth1 -j SNAT --to-source 81.2.3.4 # # Tillåt inkommande anslutningar startade av mina iptables -A FRAMÅT -m-tillstånd --state ESTABLISHED, RELATED -j ACCEPT # # Auktoriserad utgående trafik iptables -A FORWARD -i eth0 -o eth1 -p tcp --dport 80 -j ACCEPT iptables -E FRAMÅT -i eth0 -o eth1 -p tcp --dport 443 -j ACCEPT iptables -A FORWARD -i eth0 -o eth1 -p udp --dport 53 -j ACCEPT
Förklaring:
Skriptet gör i princip följande:
- Begränsa först all navigering, anslutningar och trafik. (Grundläggande brandväggspolicyer)
- Skapa sedan NAT med destinationen eth1. vilket indikerar att vi har en statisk offentlig ip "81.2.3.4"
- Det öppnar de portar som är nödvändiga för att ta emot de paket med anslutningar som jag har initierat.
- Accepterar utgående HTTP-, HTTPS- och DNS-trafik.
Om vi ville använda vår utrustning för att navigera bör vi upprepa raderna och byta framåt till INPUT eller OUTPUT efter behov.
Avbryt skript.
Nu ska vi skapa ett skript som avbryter allt ovan och lämnar datorn ren från allt detta. (För teständamål eller så vill vi helt enkelt stänga av brandväggen).
#! / bin / bash # Brandvägg i mitt hem. # Filnamn / etc / firewall_off # Av Jlcmux Twitter: @Jlcmux # # Radera iptables-regler -F # # Tillämpa standardpolicyer (all trafik accepteras) iptables -P INPUT ACCEPT iptables -P OUTPUT ACCEPT iptables -P FORWARD ACCEPT
Automatisering.
Nu behöver vi skapa skriptet i /etc/init.d/ så att tjänsten startar automatiskt och vi kan hantera den enklare.
#! / bin / bash # Brandvägg i mitt hem. # Filnamn /etc/init.d/ brandvägg # Av Jlcmux Twitter: @Jlcmux fall $ 1 i början) / etc / firewall_on ;; stopp) / etc / firewall_off ;; status) iptables -L ;; *) eko "Fel syntax. Giltig = /etc/init.d/ brandvägg start | stopp | status ;; esac
Förklaring:
Vi placerar det här sista skriptet i /etc/init.d/ med namnet "firewall" . Om vi sedan vill hantera brandväggen kan vi använda kommandot /etc/init.d/firewall start. Vi kan också stoppa den eller kontrollera dess status på samma sätt.
Nu ska vi redigera filen /etc/rc.local och lägga till något i stil med: /etc/init.d/firewall start så att den startar med systemet.
Också. Detta är den andra delen. Jag hoppas att det ger något till er alla. I nästa ser vi Proxy och IDS.