În posta anterioară Am văzut configurația IPTables pentru a funcționa ca un firewall. Acum putem vedea cum să creăm aceste scripturi, astfel încât regulile să fie executate automat la pornirea sistemului și, de asemenea, cum putem elimina sau opri aceste reguli pentru o clipă.
Înainte de a face scenariul și de a vă arăta cum arată, să vorbim puțin despre NAT și despre conceptul a ceea ce vrem să facem cu acest echipament.
NAT și contextul exemplului.
Când vorbim despre NAT, putem confunda acest lucru cu rutare, deoarece ambele sunt responsabile de conectarea a două rețele diferite între ele. Adevărata diferență este că rutare se aplică pentru a trece de la o rețea locală la alta, iar această altă rețea se poate conecta la un router și poate ieși la Internet.
În timp ce, atunci când vorbim despre NAT, vorbim despre rutarea pachetelor dintr-o rețea locală sau privată către o rețea publică sau Internet. Face acest lucru mascând pachetele prin plasarea IP-ului public cu care merge pe Internet. Cu alte cuvinte, nu avem nevoie de un router, deoarece IP-ul public este deținut direct de computerul GNU / Linux.
Vom lucra cu sloganul că folosim Linux-ul nostru ca router / firewall pentru a ieși pe internet dintr-o rețea locală. Dar aici pot apărea două scenarii.
- Că Linux-ul nostru se află între routerul furnizorului de servicii și rețeaua locală.
În acest caz, între router și Linux-ul nostru ar exista o rețea, iar între Linux și rețeaua locală ar exista o altă rețea diferită. Aceasta înseamnă că routerul nostru nu ar trebui să facă NAT ca atare, cu o rutare simplă a traficului, așa cum este explicat în posta anterioară Ar fi bine.
- Că Linux-ul nostru are o interfață conectată la rețeaua locală și prin cealaltă interfață primește direct un IP public cu care navighează.
Aceasta înseamnă că Linux-ul nostru trebuie să facă NAT, astfel încât pachetele să poată ajunge pe Internet.
Atunci, în scopul acestui mic laborator, vom spune că Linux-ul nostru primește direct un IP public și astfel vom putea testa efectele NAT.
Pentru a face NAT folosim apoi sintaxa
iptables -t nat -A POSTROUTING -O eth1 -j MASCHERADE
Unde eth1 este interfața unde primim IP-ul public, adică unde mergem la Internet.
Crearea scriptului iptables
Să presupunem că: 172.26.0.0 este rețeaua noastră locală și 81.2.3.4 este IP-ul public cu care mergem pe internet. (este un ip static). Am interfețele eth0 (rețea locală)
eth1 (Rețea publică).
Practic, constă în crearea unui script care poate fi apelat din /etc/init.d/firestop (de exemplu). și din acest script putem începe, opri sau verifica starea configurației noastre, la fel cum facem cu orice daemon de sistem.
Să presupunem că regulile mele IPTABLES SUNT:
#! / bin / bash # Paravan de protecție al casei mele. # Numele fișierului / etc / firewall_on # De Jlcmux Twitter: @Jlcmux # # Politica de bază. iptables -P INPOUT DROP iptables -P OUTPUT DROP iptables -P FORWARD DROP # #NAT pentru a partaja Internetul de la eth0 la eth1 iptables -t nat -A POSTROUTING -O eth1 -j SNAT - la sursă 81.2.3.4 # # Permiteți conexiunile de intrare inițiate de iptables -O state FORWARD -m state --stable STABILIT, RELATAT -j ACCEPT # # Autorizat iptables de trafic de ieșire-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
Explicaţie:
Scenariul face practic următoarele:
- Mai întâi restricționați toate navigația, conexiunile și traficul. (Politici de bază pentru firewall)
- Apoi creați NAT cu eth1 de destinație. indicând faptul că avem un IP public static "81.2.3.4"
- Deschide porturile necesare pentru a primi pachetele de conexiuni inițiate de mine.
- Acceptă trafic HTTP, HTTPS și DNS de ieșire.
Dacă am dori să ne folosim echipamentul pentru a naviga, ar trebui să repetăm liniile și să schimbăm FORWARD la INPUT sau OUTPUT, după caz.
Anulați scriptul.
Acum vom crea un script care suprascrie toate cele de mai sus și lasă computerul curat de toate acestea. (În scopuri de testare sau vrem doar să oprim firewall-ul).
#! / bin / bash # Paravan de protecție al casei mele. # Numele fișierului / etc / firewall_off # De Jlcmux Twitter: @Jlcmux # # Ștergerea regulilor iptables -F # # Aplicarea politicilor implicite (tot traficul acceptat) iptables -P INPUT ACCEPT iptables -P OUTPUT ACCEPT iptables -P FORWARD ACCEPT
Automatizare.
Acum trebuie să creăm scriptul în interior /etc/init.d/ iar serviciul pornește automat și îl putem gestiona într-un mod mai confortabil.
#! / bin / bash # Paravan de protecție al casei mele. # Numele fișierului /etc/init.d/ firewall # De Jlcmux Twitter: @Jlcmux case $ 1 în start) / etc / firewall_on ;; stop) / etc / firewall_off ;; status) iptables -L ;; *) echo "Sintaxă greșită. Valid = /etc/init.d/ firewall start | stop | status ;; esac
Explicaţie:
Acest ultim scenariu l-am introdus /etc/init.d/ cu denumirea firewall. Deci, dacă vrem să gestionăm firewall-ul, putem folosi comanda /etc/init.d/ firewall start. În același mod îl putem opri sau vedea starea.
Acum vom edita fișierul /etc/rc.local și punem ceva de genul: /etc/init.d/ firewall start pentru a începe cu sistemul.
De asemenea. Aceasta este a doua parte. Sper că vă aduce ceva pentru voi toți. În următoarea vedem Proxy și IDS.
Dacă folosiți Debian, există un pachet în repo (iptables-persistent) care face exact acest lucru, eliberează regulile curente în /etc/iptables/rules.v4 sau v6 în funcție de ceea ce utilizați și apoi vi le aplică pentru dvs. când ridicați sistemul.
În practică, pentru a curăța configurația unui firewall convențional iptables (și utilizarea NAT nu ar fi așa din punctul meu de vedere), în majoritatea cazurilor ar fi suficientă o reglare și resetarea politicilor implicite la ACCEPT.
Dar, în teorie, și din câte știu, pe lângă aceasta trebuie să ștergeți șirurile care nu sunt implicite și să resetați contoare. Acțiuni care trebuie luate în considerare că, pe lângă „filtrare”, există și alte tabele (pentru aceasta este obligatoriu să citiți fișierul „/ proc / net / ip_tables_names”).
Apropo, ortodoxia spune că un firewall trebuie să fie deja activat înainte ca rețeaua să fie activă. Nu știu cum se realizează în celelalte sisteme Linux, dar în tipul Debian scriptul ar putea fi adaptat și setat în directorul „/etc/network/if-pre-up.d/”.
Firewall bun pentru toată lumea. 😉
Buna ziua, postarea este foarte buna. Am citit cele 2 volume întregi.
Se așteaptă următorul 🙂
O întrebare din ignoranța mea, continuăm cu iptables, dar pentru mai multe versiuni de kernel avem nftables, deja testez, întrebările sunt, nftables este ceva beta în ceea ce privește iptables? Vor fi utilizate iptables în continuare mult mai mult timp?
Mulţumesc.
nftables include toate funcționalitățile iptables, ip6tables, arptables și ebtables, toate folosind o nouă infrastructură atât în kernelspace cât și în spațiul utilizatorilor, care asigură performanțe mai bune și funcționalități îmbunătățite. nftables va înlocui iptables și toate celelalte instrumente menționate, dar nu deocamdată, cel puțin până când nu se utilizează mai mult nftables ca atare.
post foarte bun, am vrut să citesc mai multe, deoarece este foarte bine explicat .. salutări mulțumesc contribuție excelentă
Salut! Foarte bine ambele post.
Ca contribuție, ați putea adăuga la final în această parte:
"Acum vom edita fișierul /etc/rc.local și vom pune ceva de genul: /etc/init.d/firestop start, astfel încât să înceapă cu sistemul."
Adăugați acest lucru la rc.local.
dacă [-x /etc/init.d/ firewall]; atunci
/etc/init.d/ firewall start
fi
Ceea ce înseamnă că dacă „firewall” are permisiuni de execuție, executați-l, dacă nu.
Dacă doriți ca „firewall-ul” să nu pornească, trebuie doar să eliminați permisiunile.
De exemplu: chmod + x /etc/init.d/ firewall
să-l facă să ruleze la fiecare pornire sau ...
chmod -x /etc/init.d/ firewall
pentru a o dezactiva complet.
Salutări!