In de Vorige bericht We zagen de configuratie van IPTables om te functioneren als een firewall. Nu kunnen we zien hoe we die scripts kunnen maken, zodat de regels automatisch worden uitgevoerd wanneer het systeem start, en ook hoe we die regels even kunnen elimineren of stoppen.
Laten we, voordat we het script maken en laten zien hoe het eruit ziet, een beetje praten over NAT en het concept van wat we met deze apparatuur willen doen.
NAT en context van het voorbeeld.
Als we het hebben over NAT, kunnen we dit verwarren met routing, aangezien beide verantwoordelijk zijn voor het verbinden van twee verschillende netwerken met elkaar. Het verschil is echt dat de routering wordt toegepast om van het ene lokale netwerk naar het andere te gaan en dat dit andere netwerk verbinding kan maken met een router en verbinding kan maken met internet.
Terwijl we het hebben over NAT, hebben we het over het routeren van pakketten van een lokaal of particulier netwerk naar een openbaar netwerk of internet. Het doet dit door de pakketten te maskeren door het openbare IP-adres te plaatsen waarmee het naar internet gaat. Dat wil zeggen, we hebben geen router nodig, omdat het openbare IP-adres rechtstreeks wordt bewaard door de computer met GNU / Linux.
We zullen dit doen met de slogan dat we onze Linux gebruiken als een router / firewall om vanaf een lokaal netwerk naar het internet te gaan. Maar hier kunnen twee scenario's verschijnen.
- Dat onze Linux zich tussen de router van de serviceprovider en het lokale netwerk bevindt.
In dit geval zou er tussen de router en onze Linux een netwerk zijn, en tussen de Linux en het lokale netwerk zou er een ander ander netwerk zijn. Dit betekent dat onze router geen NAT als zodanig hoeft te doen, met een eenvoudige verkeersroutering zoals uitgelegd in Vorige bericht Het zou goed zijn.
- Dat onze Linux een interface heeft die is verbonden met het lokale netwerk en via de andere interface direct een openbaar IP ontvangt waarmee hij navigeert.
Dit betekent dat onze Linux NAT moet doen zodat de pakketten het internet kunnen bereiken.
Voor de doeleinden van dit kleine laboratorium zullen we zeggen dat onze Linux rechtstreeks een openbaar IP-adres ontvangt en dus in staat is om de effecten van NAT te testen.
Om NAT te doen gebruiken we dan de syntaxis
iptables -t nat -A POSTROUTING -O eth1 -j MASQUERADE
Waar eth1 de interface is waar we het openbare IP-adres ontvangen, dat wil zeggen, waar we naar internet gaan.
Iptables-script maken
Stel dan dat: 172.26.0.0 ons lokale netwerk is en 81.2.3.4 het openbare IP-adres is waarmee we naar internet gaan. (het is een statisch ip). Ik heb de interfaces eth0 (lokaal netwerk)
eth1 (openbaar netwerk).
Het bestaat in feite uit het maken van een script dat kan worden aangeroepen vanuit /etc/init.d/firestop (bijvoorbeeld). en vanuit dit script kunnen we starten, stoppen of de status van onze configuratie controleren, zoals we doen met elke systeemdaemon.
Stel dat mijn IPTABLES-regels ZIJN:
#! / bin / bash # Firewall van mijn huis. # Bestandsnaam / etc / firewall_on # Door Jlcmux Twitter: @Jlcmux # # Basisbeleid. iptables -P INPOUT DROP iptables -P OUTPUT DROP iptables -P FORWARD DROP # #NAT om internet te delen van eth0 naar eth1 iptables -t nat -A POSTROUTING -O eth1 -j SNAT --to-source 81.2.3.4 # # Sta inkomende verbindingen toe geïnitieerd door my iptables -A FORWARD -m state --state ESTABLISHED, RELATED -j ACCEPT # # Geautoriseerd uitgaand verkeer iptables -A FORWARD -i eth0 -o eth1 -p tcp --dport 80 -j ACCEPT iptables -A FORWARD -i eth0 -o eth1 -p tcp --dport 443 -j ACCEPT iptables -A FORWARD -i eth0 -o eth1 -p udp --dport 53 -j ACCEPT
Uitleg:
Het script doet in principe het volgende:
- Beperk eerst alle navigatie, verbindingen en verkeer. (Basisfirewallbeleid)
- Maak vervolgens de NAT met de bestemming eth1. wat aangeeft dat we een statisch openbaar ip hebben «81.2.3.4»
- Het opent de poorten die nodig zijn om de door mij geïnitieerde pakketjes verbindingen te ontvangen.
- Accepteert uitgaand HTTP-, HTTPS- en DNS-verkeer.
Als we onze apparatuur willen gebruiken om te navigeren, moeten we de regels herhalen en FORWARD wijzigen in INPUT of OUTPUT, al naargelang het geval.
Annuleer script.
Nu gaan we een script maken dat al het bovenstaande opheft en de computer hiervan vrij laat. (Voor testdoeleinden of we willen gewoon de firewall uitschakelen).
#! / bin / bash # Firewall van mijn huis. # Bestandsnaam / etc / firewall_off # Door Jlcmux Twitter: @Jlcmux # # IPtables-regels verwijderen -F # # Standaardbeleid toepassen (alle verkeer geaccepteerd) iptables -P INPUT ACCEPT iptables -P OUTPUT ACCEPT iptables -P FORWARD ACCEPT
Automatiseren.
Nu moeten we het script binnenin maken /etc/init.d/ en de service start automatisch en we kunnen het op een comfortabelere manier beheren.
#! / bin / bash # Firewall van mijn huis. # Bestandsnaam /etc/init.d/ firewall # Door Jlcmux Twitter: @Jlcmux case $ 1 in start) / etc / firewall_on ;; stop) / etc / firewall_off ;; status) iptables -L ;; *) echo "Verkeerde syntaxis. Geldig = /etc/init.d/ firewall start | stop | status ;; esac
Uitleg:
Dit laatste script hebben we ingevoerd /etc/init.d/ met de naam brandmuur. Dus als we de firewall willen beheren, kunnen we het commando gebruiken /etc/init.d/ firewall start. Op dezelfde manier kunnen we het stoppen of de staat zien.
Nu gaan we het bestand bewerken /etc/rc.local en we zetten zoiets als: /etc/init.d/ firewall start zodat het begint met het systeem.
Ook. Dit is het tweede deel. Ik hoop dat het jullie allemaal iets oplevert. In de volgende zien we Proxy en IDS.
Als u Debian gebruikt, is er een pakket in de repo (iptables-persistent) dat precies dat doet, het dumpt de huidige regels in /etc/iptables/rules.v4 of v6, afhankelijk van wat u gebruikt, en past ze vervolgens op u toe wanneer je tilt het systeem op.
In de praktijk zou het voldoende zijn om de configuratie van een conventionele iptables-firewall op te schonen (en het gebruik van NAT zou het vanuit mijn standpunt niet zijn), in de meeste gevallen zou het voldoende zijn om de regels door te spoelen en het standaardbeleid terug te zetten naar ACCEPT.
Maar in theorie, en voor zover ik weet, moet je daarnaast ook de niet-standaard strings wissen en de tellers resetten. Uit te voeren acties rekening houdend met het feit dat er naast "filter" nog andere tabellen zijn (het is verplicht om hiervoor het bestand "/ proc / net / ip_tables_names" te lezen).
Trouwens, orthodoxie zegt dat een firewall al actief moet zijn voordat het netwerk dat is. Ik weet niet hoe het wordt bereikt in de andere Linux-systemen, maar in de Debian-systemen zou het script kunnen worden aangepast en ingesteld in de directory "/etc/network/if-pre-up.d/".
Goede firewall voor iedereen. 😉
Hallo, de post is erg goed. Ik heb de volledige 2 delen gelezen.
Wachten op de volgende 🙂
Een vraag uit mijn onwetendheid, we gaan door met iptables, maar voor verschillende kernelversies hebben we nftables, ik ben al aan het testen, de vragen zijn, is nftables iets bèta met betrekking tot iptables? Zullen iptables nog veel langer worden gebruikt?
Dank u.
nftables bevat alle functionaliteiten van iptables, ip6tables, arptables en ebtables, allemaal met behulp van een nieuwe infrastructuur in zowel kernelspace als gebruikersruimte, wat zorgt voor betere prestaties en verbeterde functionaliteit. nftables zal iptables en alle andere genoemde tools vervangen, maar voorlopig niet, niet in ieder geval totdat er een breder gebruik van nftables als zodanig is.
heel goed bericht, ik wilde meer lezen omdat het heel goed wordt uitgelegd .. groeten bedankt geweldige bijdrage
Hallo! Zeer goed beide posten.
Als bijdrage zou je aan het einde in dit deel kunnen toevoegen:
"Nu gaan we het bestand /etc/rc.local bewerken en zoiets als: /etc/init.d/ firewall start plaatsen zodat het begint met het systeem."
Voeg dit toe aan rc.local.
als [-x /etc/init.d/ firewall]; vervolgens
/etc/init.d/ firewall start
fi
Wat betekent dat als "firewall" uitvoeringsrechten heeft, deze moet worden uitgevoerd, zo niet.
Als u wilt dat de "firewall" niet start, hoeft u alleen de permissies te verwijderen.
Bijvoorbeeld: chmod + x /etc/init.d/ firewall
om het te laten draaien bij elke startup of ...
chmod -x /etc/init.d/ firewall
om het volledig uit te schakelen.
Groeten!