Acest ghid va discuta despre cum să configurați și să utilizați regulile iptables pe un sistem Ubuntu pentru a vă securiza rețeaua. Fie că sunteți un utilizator novice Linux sau un administrator de sistem experimentat, din acest ghid și într-un fel sau altul, veți afla ceva util despre iptables.
Iptables sunt preinstalate pe Ubuntu și pe majoritatea distribuțiilor bazate pe Debian. Ubuntu împachetează și firewall-ul GUFW, o alternativă grafică pe care o puteți folosi pentru a lucra cu iptables.
NOTĂ: Pentru a utiliza și configura iptables, veți avea nevoie de privilegii sudo pe sistemul dvs. Puteți afla mai multe despre sudo din următorul tutorial.
Acum, că știi ce este Iptables, hai să ne scufundăm direct!
Cum se utilizează iptables pentru a gestiona traficul IPv4?
Pentru a utiliza Iptables pentru rețeaua IPv4 și gestionarea traficului, trebuie să înțelegeți următoarele:
Comanda Iptables
Iptables oferă o selecție de opțiuni care vă permit să vă personalizați și să reglați regulile dvs. iptables. Să discutăm câțiva dintre acești parametri și să vedem ce fac.
NOTĂ: Puteți configura un set de reguli care gestionează un anumit subset, cunoscut sub numele de lanțuri iptables.
Parametri Iptables
Înainte de a începe crearea și configurarea regulilor iptables, să înțelegem mai întâi elementele de bază ale iptables, cum ar fi sintaxa generală și argumentele implicite.
Luați în considerare comanda de mai jos:
sudo iptables -I INPUT -s 192.168.0.24 -j DROPComanda de mai sus le spune iptables să creeze o regulă în lanț. Regula renunță la toate pachetele de pe adresa IP 192.168.0.24.
Să examinăm comanda, linie cu linie, pentru a o înțelege mai bine.
- Prima comandă iptables apelează utilitarul din linia de comandă iptables.
- Următorul este argumentul -I folosit pentru inserare. Argumentul de inserare adaugă o regulă la începutul lanțului iptables și astfel i se atribuie o prioritate mai mare. Pentru a adăuga o regulă la un anumit număr din lanț, utilizați argumentul -I urmat de numărul la care ar trebui atribuită regula.
- Argumentul -s ajută la specificarea sursei. Prin urmare, folosim argumentul -s urmat de adresa IP.
- Parametrul -j cu iptables specifică saltul către o anumită țintă. Această opțiune setează acțiunea pe care o vor efectua Iptables odată ce există un pachet de potrivire. Iptables oferă patru ținte principale în mod implicit, acestea includ: ACCEPT, DROP, LOG și REJECT.
Iptables oferă o selecție de parametri pe care îi puteți utiliza pentru a configura diferite reguli. Diferiții parametri pe care îi puteți utiliza pentru a configura regulile iptables includ:
Parametrul regulii Iptables | Descriere |
---|---|
-s -sursa | Specificați sursa, care poate fi o adresă, un nume de gazdă sau un nume de rețea. |
-p -protocol | Specifică protocolul de conexiune; de exemplu, TCP, UDP etc. |
-d -destinare | Specifică destinația, care poate fi o adresă, un nume de rețea sau un nume de gazdă. |
-j-salt | Setează acțiunile iptables care vor fi efectuate după găsirea unui pachet. |
-o -interfață | Setează interfața prin care iptable trimite pachetul. |
-i-in-interface | Setează interfața utilizată pentru stabilirea pachetelor de rețea. |
-c -set-counters | Permite administratorului să seteze contoare de octeți și pachete pentru o regulă specificată. |
-lanțul g -goto | Parametrul specifică faptul că procesarea ar trebui să continue în lanțul setat de utilizator la întoarcere. |
-f -fragment | Spune iptables să aplice regula numai pentru a doua și următoarele fragmente ale pachetelor fragmentate. |
Opțiuni Iptables
Comanda iptables acceptă o gamă largă de opțiuni. Unele obișnuite includ:
Opțiune | Descriere |
---|---|
-A -aplicați | Adaugă o regulă la sfârșitul unui lanț specificat |
-D-ștergeți | Elimină o regulă din lanțul specificat |
-F -flush | Elimină toate regulile, una câte una |
-L-listă | Afișează toate regulile din lanțul specificat |
-Eu -inser | Inserează o regulă în lanțul specificat (transmisă ca număr, când nu este specificat un număr; regula se adaugă în partea de sus) |
-C -verifică | Interogări pentru potrivirea unei reguli; cerință într-o regulă specificată |
-v -verbos | Afișează mai multe detalii când este utilizat cu parametrul -L |
-N-lanț nou | Adaugă un nou lanț definit de utilizator |
-X-șterge-lanț | Elimină un lanț specific definit de utilizator |
Tabele Iptables
Kernel-ul Linux are tabele implicite care găzduiesc un set de reguli conexe. Aceste tabele implicite au un set de lanțuri implicite, dar utilizatorii pot personaliza regulile adăugând reguli definite de utilizator.
NOTĂ: Tabelele implicite vor depinde în mare măsură de configurația Kernel și de modulele instalate.
Iată tabelele iptables implicite:
1: Tabelele de filtrare
Tabelul de filtrare este un tabel implicit care conține lanțuri utilizate pentru filtrarea pachetelor de rețea. Unele dintre lanțurile implicite din acest tabel includ:
Lanţ | Descriere |
---|---|
Intrare | Iptables utilizează acest lanț pentru orice pachete de intrare către sistem, i.e., pachetele care merg către socket-urile de rețea locală. |
Ieșire | Iptables utilizează lanțul de ieșire pentru pachete generate local, i.e., pachetele care ies din sistem. |
Redirecţiona | Acest lanț este ceea ce utilizează Iptables pentru pachetele direcționate sau redirecționate prin intermediul sistemului. |
2: Tabelele NAT
NAT sau Network Address Table este un dispozitiv de rutare folosit pentru a modifica sursa și ținta adreselor IP dintr-un pachet de rețea. Utilizarea principală a tabelului NAT este conectarea a două rețele într-un interval de adrese private cu rețeaua publică.
NAT a fost dezvoltat pentru a sprijini mascarea adreselor IP reale, permițând ca adresele IP private să ajungă la rețeaua exterioară. Acest lucru ajută la protejarea detaliilor despre rețelele interne de a fi dezvăluite în rețelele publice.
Tabelul NAT este utilizat atunci când un pachet inițiază o nouă conexiune.
Iptables au un tabel implicit pentru adresarea NAT. Acest tabel are trei lanțuri principale:
Lanţ | Descriere |
---|---|
PREROUTING | Permite modificarea informațiilor despre pachete înainte de a ajunge în lanțul INPUT utilizat pentru pachetele primite |
IEȘIRE | Rezervat pentru pachetele create local, i.e., înainte de a avea loc rutare de rețea |
POSTROUTING | Permite modificarea pachetelor de ieșire - Pachete care părăsesc lanțul OUTPUT |
Diagrama de mai jos prezintă o imagine de ansamblu la nivel înalt a acestui proces.
Utilizați comanda de mai jos pentru a vizualiza tabelele de rutare NAT.
iptables -t nat -n -v -L3: Mesele Mangle
Tabelul mangle este utilizat în principal pentru modificarea specială a pachetelor. În termeni simpli, este folosit pentru a modifica antetele IP ale unui pachet de rețea. Modificarea pachetelor poate include schimbarea unei valori TTL a pachetului, modificarea hopurilor valabile de rețea pentru un pachet etc.
Tabelul conține următoarele lanțuri implicite:
Lanţ | Descriere |
---|---|
PREROUTING | Rezervat pentru pachetele primite |
POSTROUTING | Folosit pentru pachetele de ieșire |
INTRARE | Folosit pentru pachetele care intră direct în server |
IEȘIRE | Folosit pentru pachete locale |
Redirecţiona | Rezervat pentru pachetele dirijate prin sistem |
4: Tabelele brute
Scopul principal al tabelului brut este de a configura excepții pentru pachetele care nu sunt destinate a fi tratate de sistemul de urmărire. Tabelul brut setează un marcaj NOTRACK pe pachete, solicitând caracteristica conntrack să ignore pachetul.
Conntrack este o caracteristică de rețea a nucleului Linux care permite nucleului Linux să urmărească toate conexiunile de rețea, permițând nucleului să identifice pachetele care alcătuiesc un flux de rețea.
Tabelul brut are două lanțuri principale:
Lanţ | Descriere |
---|---|
PREROUTING | Rezervat pentru pachetele primite de interfețele de rețea |
IEȘIRE | Rezervat pentru pachetele inițiate de procese locale |
5: Tabelul de securitate
Utilizarea principală a acestui tabel este setarea mecanismului intern de securitate pentru îmbunătățirea securității pentru Linux (SELinux) care marchează pe pachete. Marca de securitate se poate aplica pentru fiecare conexiune sau pachet.
Este folosit pentru regulile de control obligatoriu al accesului și este al doilea tabel accesat după tabelul de filtrare. Oferă următoarele lanțuri implicite:
Lanţ | Descriere |
---|---|
INTRARE | Rezervat pentru pachetele primite în sistem |
IEȘIRE | Folosit pentru pachetele create local |
REDIRECŢIONA | Folosit pentru pachete direcționate prin sistem |
După ce ne-am uitat la Iptables implicite, să mergem un pas mai departe și să discutăm cum să lucrăm cu regulile iptables.
Cum se lucrează cu regulile iptables?
Regulile Iptables se aplică în ordine crescătoare. Aceasta înseamnă că prima regulă dintr-un anumit set este aplicată mai întâi, urmată de a doua, apoi a treia și așa mai departe, până la ultima.
Datorită acestei funcții, iptables vă împiedică să adăugați reguli într-un set folosind parametrul -A; trebuie să utilizați -I, urmat de numărul sau golindu-l pentru a adăuga în partea de sus a listei.
Afișarea Iptables
Pentru a vizualiza iptables, utilizați comanda iptables -L -v pentru IPv4 și ip6tables -L -v pentru IPv6.
Introducerea regulilor
Pentru a insera reguli într-un set, trebuie să le poziționați în ordinea exactă, respectând regulile folosite de același lanț. Puteți vizualiza lista regulilor dvs. iptables cu comanda așa cum s-a discutat mai sus:
sudo iptables -L -vDe exemplu, pentru a insera o regulă care permite conexiunile primite la portul 9001 prin TCP, trebuie să specificăm numărul regulii lanțului INPUT care respectă regulile de trafic pentru web.
sudo iptables -I INPUT 1 -p TCP --dport 9001 -m state --state NEW -j ACCEPTDupă ce vizualizați iptables-urile actuale, ar trebui să vedeți noua regulă în set.
sudo iptables -L -v
Înlocuirea regulilor
Funcționalitatea de înlocuire funcționează similar pentru a insera, totuși, folosește comanda iptables -R. De exemplu, pentru a modifica regula de mai sus și a seta portul 9001 să refuze, noi:
sudo iptables -R INPUT 1 -p TCP --port 9001 -m state --state NEW -j REJECTȘtergerea unei reguli
Pentru a șterge o regulă, trecem numărul regulii. De exemplu, pentru a șterge regula de mai sus, putem specifica astfel:
sudo iptables -D INPUT 1În majoritatea distribuțiilor Linux, iptables sunt goale pentru IPv4 și IPv6. Prin urmare, dacă nu ați adăugat nicio regulă nouă, veți obține o ieșire similară cu cea prezentată mai jos. Acest lucru este riscant, deoarece înseamnă că sistemul permite tot traficul de intrare, de ieșire și rutat.
Să intrăm în modul de configurare a iptables:
Cum se configurează iptables?
Există numeroase moduri de configurare a regulilor iptables. Această secțiune folosește exemple pentru a vă arăta cum să setați reguli utilizând adrese IP și porturi.
Blocarea și permiterea traficului prin porturi
Puteți utiliza un anumit port pentru a bloca sau permite tot traficul de pe o interfață de rețea. Luați în considerare următoarele exemple:
sudo iptables -A INPUT -j ACCEPT -p TCP --destination-port 1001 -i wlan0Comenzile de mai sus permit traficul pe portul 1001 TCP de pe interfața wlan0.
sudo iptables -A INPUT -j DROP -p TCP --destination-port 1001 -i wlan0Această comandă face opusul comenzii de mai sus, deoarece blochează tot traficul de pe portul 1001 pe wlan0.
Iată o inspecție atentă a comenzii:
- Primul argument (-A) adaugă o nouă regulă la sfârșitul lanțului de tabel.
- Argumentul INPUT adaugă regula specificată în tabel.
- Argumentul DROP stabilește acțiunea care trebuie efectuată ca ACCEPT, respectiv DROP. Aceasta înseamnă că, odată ce un pachet se potrivește, acesta este abandonat.
- -p specifică protocolul ca TCP și permite trecerea traficului pe alte protocoale.
- -destination-port setează regula pentru a accepta sau renunța la tot traficul destinat portului 1001.
- -eu
spune iptables să aplice regula traficului care vine pe interfața wlan0.
NOTĂ: Iptables nu înțeleg pseudonimele interfeței de rețea. Astfel, într-un sistem cu mai multe interfețe virtuale, va trebui să definiți adresa de destinație manual și explicit.
De exemplu:
sudo iptables -A INPUT -j DROP -p TCP --destination-port 1001 -i wlan0 -d 192.168.0.24Adresele IP pe lista albă și pe lista neagră
Puteți crea reguli firewall folosind iptables. Un exemplu este oprirea întregului trafic și permiterea traficului de rețea numai de la adrese IP explicite.
Exemplu:
iptables -A INPUT -m state --state STABILIT, RELATAT -j ACCEPTiptables -A INPUT -i lo -m comment --comment "Permite conexiuni loopback" -j ACCEPT
iptables -A INPUT -p icmp -m comentariu - comentariu „Permiteți Ping să funcționeze așa cum era de așteptat” -j
ACCEPT
iptables -A INPUT -s 192.168.0.1/24 -j ACCEPTĂiptables -A INPUT -s 192.168.0.0 -j ACCEPTĂ
iptables -P INPUT DROP
iptables -P FORDARD DROP
Prima linie stabilește o regulă pentru a permite toate adresele IP sursă din 192.168.0.1/24 subrețea. De asemenea, puteți utiliza CIDR sau adrese IP individuale. În următoarea comandă, setăm regula pentru a permite tot traficul conectat la conexiunile existente. În comenzile finale, stabilim o politică pentru ca INPUT și FORWARD să renunțe la toate.
Utilizarea iptables pe IPv6
Comanda Iptables funcționează numai pe IPv4. Pentru a utiliza iptables pe IPv6, trebuie să utilizați comanda ip6tables. Ip6tables folosește tabele raw, filter, security și mangle. Sintaxa generală pentru ip6tables este similară cu iptables și acceptă, de asemenea, opțiuni de potrivire iptables, cum ar fi adăugați, ștergeți etc.
Luați în considerare utilizarea paginilor manuale ip6tables pentru mai multe informații.
Exemplu de seturi de reguli iptables pentru securitatea rețelei
Crearea regulilor de firewall adecvate va depinde în principal de serviciul care rulează pe un sistem și de porturile utilizate. Cu toate acestea, iată câteva reguli de bază pentru configurarea rețelei pe care le puteți utiliza pentru a vă securiza sistemul:
1: Permiteți traficul interfeței Loopback și respingeți toate loopback-urile provenite de la alte interfețe
iptables -A INPUT -i lo -j ACCEPT (Puteți utiliza și ip6tables)iptables -A INPUT ! -i lo -s 127.0.0.0 -j REJECT (se aplică și tabele ip6)
2: refuzați toate cererile de ping
iptables -A INPUT -p icmp -m state --state NEW --icmp-type 8 -j REJECT3: Permiteți conexiuni SSH
iptables -A INPUT -p tcp --port 22 -m state --state NEW -j ACCEPTAcestea sunt exemple de comenzi pe care le puteți utiliza pentru a vă securiza sistemul. Cu toate acestea, configurația va depinde în mare măsură de ce sau de cine doriți să accesați diverse servicii.
PRUDENȚĂ: Dacă preferați să dezactivați complet IPv6, asigurați-vă că decomentați linia, deoarece acest lucru va încetini procesul de actualizare:
precedence :: ffff: 0: 0/96 100 găsite în / etc / gai.conf .
Asta pentru că managerul de pachete APT rezolvă domeniul oglindă din IPv6 datorită apt-get update.
Cum să implementați regulile iptables?
Pentru a implementa iptables-ul pe Ubuntu sau alte sisteme bazate pe Debian, începeți prin crearea a două fișiere, ip4 și ip6, pentru adresele lor IP respective.
În oricare dintre fișiere, adăugați regulile pe care doriți să le aplicați în fișierele corespunzătoare - regulile IPv4 la fișierul ip4 și regulile IPv6 la fișierul ip6.
Apoi, trebuie să importăm regulile folosind comanda:
sudo iptables-restore < /tmp/ip4 (replace filename for IPv6)Apoi, puteți verifica dacă regulile s-au aplicat folosind comanda:
sudo iptables -L -vUn ghid rapid persistent pentru iptables
Ubuntu și distribuțiile obișnuite bazate pe Debian, vin cu un pachet persistent iptables care vă permite să aplicați regulile firewall-ului cu ușurință la repornire. Pachetul oferă fișiere pe care le puteți utiliza pentru a seta reguli pentru IPv4 sau IPv6 și poate fi aplicat automat la pornire.
De asemenea, puteți utiliza reguli firewall folosind UFW sau GUFW. Luați în considerare următorul tutorial pentru a afla cum să utilizați UFW.
Cum se instalează iptables-persistent?
Asigurați-vă că aveți instalat iptables-persistent pe sistemul dvs. Folosiți dpkg pentru a verifica dacă aveți pachetul instalat.
Dacă nu, utilizați următoarea comandă:
sudo apt-get install iptables-persistent
Vi se va solicita de două ori să salvați atât regulile curente IPv4, cât și regulile IPv6. Faceți clic pe Da pentru a salva ambele reguli.
Faceți clic pe da pentru a salva IPv6.
După finalizarea instalării, verificați dacă aveți subdirectorul iptables, așa cum se arată în imaginea de mai jos.
Acum puteți utiliza regulile.v4 și reguli.v6 pentru a adăuga reguli iptables și acestea vor fi aplicate automat de iptables-persistent. Fișierele sunt fișiere text simple pe care le puteți edita cu ușurință utilizând orice editor de text la alegere.
Concluzie
În acest tutorial, am abordat elementele de bază ale iptables. Începând cu lucrul cu iptables, comenzi de bază, tabele iptables implicite și parametri.
Din ceea ce ați învățat, ar trebui să fiți în măsură să utilizați iptables pentru a crea reguli firewall care vă ajută să vă securizați sistemul.