iptables

Ubuntu Iptables Cum să controlați traficul de rețea utilizând iptables?

Ubuntu Iptables Cum să controlați traficul de rețea utilizând iptables?
"… A utilitar Unix, spațiu utilizator, care oferă administratorilor de sistem posibilitatea de a configura regulile de filtrare a pachetelor IP implementate de modulul de filtrare net al nucleului.” Iptables acționează ca un firewall utilizând reguli de filtrare a pachetelor bazate pe diverse criterii, cum ar fi adresa IP, port și protocoale.

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 DROP

Comanda 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.

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 -L

3: 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 -v

De 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 ACCEPT

După 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 wlan0

Comenzile 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 wlan0

Această comandă face opusul comenzii de mai sus, deoarece blochează tot traficul de pe portul 1001 pe wlan0.

Iată o inspecție atentă a comenzii:

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.24

Adresele 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 ACCEPT
iptables -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 REJECT

3: Permiteți conexiuni SSH

iptables -A INPUT -p tcp --port 22 -m state --state NEW -j ACCEPT

Acestea 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 -v

Un 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.

Cele mai bune jocuri Oculus App Lab
Dacă sunteți proprietarul căștilor Oculus, atunci trebuie să fiți informați despre încărcarea laterală. Încărcarea laterală este procesul de instalare...
Top 10 jocuri de jucat pe Ubuntu
Platforma Windows a fost una dintre platformele dominante pentru jocuri din cauza procentului imens de jocuri care se dezvoltă astăzi pentru a sprijin...
Cele mai bune 5 jocuri arcade pentru Linux
În zilele noastre, computerele sunt mașini serioase folosite pentru jocuri. Dacă nu puteți obține noul scor mare, veți ști la ce mă refer. În această ...