V příspěvek anterior Viděli jsme konfiguraci IPTable, aby fungovala jako Firewall. Nyní vidíme, jak tyto skripty vytvořit, aby se pravidla spouštěla automaticky při spuštění systému, a také to, jak můžeme tato pravidla na chvíli odstranit nebo zastavit.
Než provedeme skript a ukážeme vám, jak vypadá, promluvme si trochu o NAT a koncepci toho, co chceme s tímto vybavením dělat.
NAT a kontext příkladu.
Když mluvíme o NAT, můžeme to zaměnit za směrování, protože oba mají na starosti vzájemné propojení dvou různých sítí. Skutečný rozdíl je v tom, že směrování se používá k přechodu z jedné místní sítě do druhé a tato další síť se může připojit k routeru a jít na internet.
Zatímco když mluvíme o NAT, mluvíme o směrování paketů z místní nebo soukromé sítě do veřejné sítě nebo na internet. Dělá to maskováním paketů umístěním veřejné IP adresy, se kterou jde na internet. To znamená, že nepotřebujeme router, protože veřejná IP je přímo vlastněna počítačem GNU / Linux.
Budeme to pracovat se sloganem, že používáme náš Linux jako router / firewall pro přechod na internet z místní sítě. Ale zde se mohou objevit dva scénáře.
- Že náš Linux je mezi routerem poskytovatele služeb a místní sítí.
V tomto případě by mezi routerem a naším Linuxem byla síť a mezi Linuxem a místní sítí by byla jiná odlišná síť. To znamená, že náš router by nemusel dělat NAT jako takový, s jednoduchým směrováním provozu, jak je vysvětleno v příspěvek anterior Bude to dobré.
- Že náš Linux má rozhraní připojené k místní síti a prostřednictvím druhého rozhraní přijímá přímo veřejnou IP, se kterou se naviguje.
To znamená, že náš Linux musí dělat NAT, aby se pakety mohly dostat na internet.
Pro účely této malé laboratoře pak řekneme, že náš Linux přijímá veřejnou IP přímo a bude tak moci testovat účinky NAT.
K provedení NAT pak použijeme syntaxi
iptables -t nat -A POSTROUTING -O eth1 -j MASKÁRA
Kde eth1 je rozhraní, kde dostáváme veřejnou IP, tj. Kde jdeme na internet.
Vytváření skriptu iptables
Předpokládejme tedy, že: 172.26.0.0 je naše místní síť a 81.2.3.4 je veřejná IP, se kterou používáme internet. (je to statická IP). Mám rozhraní eth0 (místní síť)
eth1 (Veřejná síť).
V zásadě spočívá ve vytvoření skriptu, který lze volat například z /etc/init.d/firestop. a z tohoto skriptu můžeme spustit, zastavit nebo zkontrolovat stav naší konfigurace, jako to děláme s jakýmkoli systémovým démonem.
Předpokládejme, že moje pravidla IPTABLES JSOU:
#! / bin / bash # Firewall mého domu. # Název souboru / etc / firewall_on # Autor Jlcmux Twitter: @Jlcmux # # Základní zásady. iptables -P INPOUT DROP iptables -P OUTPUT DROP iptables -P FORWARD DROP # #NAT pro sdílení internetu z eth0 do eth1 iptables -t nat -A POSTROUTING -O eth1 -j SNAT --to-source 81.2.3.4 # # Povolit příchozí připojení zahájená mými iptables - A FORWARD --m state --state ESTABLISHED, RELATED -j ACCEPT # # Autorizovaný odchozí provoz iptables -A FORWARD -i eth0 -o eth1 -p tcp --dport 80 -j ACCEPT iptables -A dopředu -i eth0 -o eth1 -p tcp --dport 443 -j ACCEPT iptables -A dopředu -i eth0 -o eth1 -p udp --dport 53 -j ACCEPT
Vysvětlení:
Skript v zásadě dělá následující:
- Nejprve omezte veškerou navigaci, připojení a provoz. (Základní zásady brány firewall)
- Poté vytvořte NAT s cílovým eth1. což naznačuje, že máme statickou veřejnou IP «81.2.3.4»
- Otevírá porty nezbytné pro příjem paketů připojení iniciovaných mnou.
- Přijímá odchozí přenosy HTTP, HTTPS a DNS.
Pokud jsme chtěli použít naše zařízení k navigaci, měli bychom řádky opakovat a podle potřeby změnit VPRED na VSTUP nebo VÝSTUP.
Zrušit skript.
Nyní vytvoříme skript, který přepíše všechny výše uvedené a ponechá počítač od toho všeho čistý. (Pro účely testování nebo chceme vypnout bránu firewall).
#! / bin / bash # Firewall mého domu. # Název souboru / etc / firewall_off # Autor Jlcmux Twitter: @Jlcmux # # Odstranění pravidel iptables -F # # Použití výchozích zásad (veškerý provoz akceptován) iptables -P INPUT ACCEPT iptables -P OUTPUT ACCEPT iptables -P FORWARD ACCEPT
Automatizace.
Nyní musíme vytvořit skript uvnitř /etc/init.d/ a služba se spustí automaticky a my ji můžeme spravovat pohodlnějším způsobem.
#! / bin / bash # Firewall mého domu. # Název souboru /etc/init.d/ firewall # Autor Jlcmux Twitter: @Jlcmux případ $ 1 na začátku) / etc / firewall_on ;; stop) / etc / firewall_off ;; status) iptables -L ;; *) echo "Chybná syntaxe. Platné = /etc/init.d/ spuštění firewallu | stop | status ;; esac
Vysvětlení:
Tento poslední skript, který jsme vložili /etc/init.d/ se jménem firewall. Pokud tedy chceme spravovat bránu firewall, můžeme použít příkaz /etc/init.d/ spuštění brány firewall. Stejným způsobem to můžeme zastavit nebo vidět stav.
Nyní soubor upravíme /etc/rc.local a dali jsme něco jako: /etc/init.d/ spuštění brány firewall začít se systémem.
Také. Toto je druhá část. Doufám, že to vám všem něco přinese. V další vidíme Proxy a IDS.
Pokud používáte Debian, je v repo balíček (iptables-persistent), který to dělá přesně, vypíše aktuální pravidla v /etc/iptables/rules.v4 nebo v6 podle toho, co používáte, a poté je na vás použije, když zvednete systém.
V praxi by čištění konfigurace konvenčního firewallu iptables (a používání NAT by z mého pohledu nebylo tak), ve většině případů stačilo vyprázdnění pravidla a resetování výchozích zásad na ACCEPT.
Ale teoreticky, a pokud vím, musíte kromě toho také vyčistit nestandardní řetězce a resetovat čítače. Akce, které je třeba provést s přihlédnutím k tomu, že kromě „filtru“ existují i jiné tabulky (pro toto je povinné číst soubor „/ proc / net / ip_tables_names“).
Mimochodem, ortodoxie říká, že firewall musí být již spuštěn, než bude síť. Nevím, jak toho lze dosáhnout na jiných systémech Linux, ale na Debianu lze skript upravit a nastavit v adresáři „/etc/network/if-pre-up.d/“.
Dobrý firewall pro všechny. 😉
Dobrý den, příspěvek je velmi dobrý. Přečetl jsem celé 2 svazky.
Čekání na další 🙂
Otázka z mé nevědomosti pokračuje s iptables, ale pro několik verzí jádra máme nftables, již testuji, otázky jsou, je nftables něco beta s ohledem na iptables? Budou iptables použity mnohem déle?
Děkuju.
nftables zahrnuje všechny funkce iptables, ip6tables, arptables a ebtables, vše s využitím nové infrastruktury v kernelspace a uživatelském prostoru, což zajišťuje lepší výkon a lepší funkčnost. nftables nahradí iptables a všechny ostatní zmíněné nástroje, ale zatím ne, přinejmenším ne, dokud nebude rozšířenější používání nftables jako takových.
velmi dobrý příspěvek, chtěl jsem si přečíst více, protože je to velmi dobře vysvětleno .. pozdravy díky velký příspěvek
Ahoj! Velmi dobré oba příspěvky.
Jako příspěvek můžete v této části přidat na konec:
„Nyní upravíme soubor /etc/rc.local a vložíme něco jako: /etc/init.d/ spuštění brány firewall tak, aby to začínalo systémem.“
Přidejte toto do rc.local.
if [-x /etc/init.d/ firewall]; pak
/etc/init.d/ spuštění brány firewall
fi
Což znamená, že pokud má „firewall“ oprávnění ke spuštění, proveďte jej, pokud ne.
Pokud chcete, aby se „brána firewall“ nespustila, musíte pouze odebrat oprávnění.
Například: chmod + x /etc/init.d/ firewall
aby to fungovalo při každém spuštění nebo ...
chmod -x /etc/init.d/ firewall
úplně deaktivovat.
Zdravím!