Configurarea firewall cu iptables pe ubuntu

Având servere în centre de date sigure din Europa. Deschideți nor VPS server / VDS pe un SSD rapid în 1 minut!

Cel mai bun Web Hosting:
- va proteja datele împotriva accesului neautorizat într-un centru european de date securizat
- va plăti cel puțin în Bitcoin.
- Acesta va pune distribuție

- protecție împotriva atacurilor DDoS-
- gratuit de backup
- Uptime 99,9999%
- DPC - TIER III
- ISP - NIVELULUI I

Suport în 24/7/365 rusă lucra cu persoane juridice și persoane fizice. Ai nevoie de acum 24 de bază și 72 GB RAM. Vă rog!

Tarifele noastre competitive dovedesc că cele mai ieftine de găzduire pe care nu a știut!

O chestiune de minute, selectați configurația, să plătească și CMS pe un VPS este gata.
Bani Înapoi - 30 de zile!

Carduri bancare, moneda electronică prin intermediul unor terminale QIWI, Webmoney, PayPal, Novoplat și altele.

Pune o intrebare 24/7/365 Suport

Găsiți răspunsurile în baza noastră de date, și să respecte recomandările din

intrare

Robust firewall - una dintre cele mai importante aspecte ale protecției oricărui sistem de operare moderne. Cele mai multe distribuții Linux conțin mai multe instrumente diferite de firewall. Acest manual este dedicat unuia dintre cele mai populare - iptables.

Astfel, iptables - un firewall standard, este inclusă în cele mai multe distribuții Linux, în mod implicit (nftables dezvoltat pentru ao înlocui). De fapt, iptables - este interfața cu utilizatorul pentru a controla sistemul netfilter, care, la rândul său, controlează stiva de rețea Linux. iptables compară fiecare pachet de intrare la un set de reguli stabilite și apoi să decidă ce să facă în continuare.

iptables Comenzi de bază

Această secțiune conține comenzile de bază, cu care puteți crea un set complex de reguli și iptables pentru a gestiona interfata ca un întreg.

Amintiți-vă. comanda iptables trebuie executată cu rădăcină privilegii. Acest lucru înseamnă că trebuie să faceți una dintre următoarele:

  • conectați ca utilizator root;
  • utilizați su sau sudo -i, pentru a extinde teaca rădăcină;
  • pentru a începe toate comenzile cu sudo (metoda recomandată în Ubuntu).

Acest manual este utilizat pentru a doua opțiune.

sudo iptables -L
Lanțului de intrare (politica ACCEPT)
țintă Prot destinație sursă opt
Chain FORWARD (politica ACCEPT)
țintă Prot destinație sursă opt
Lanțul de ieșire (politica ACCEPT)
țintă Prot destinație sursă opt

După cum puteți vedea, lista conține trei lanțuri implicite (intrare, ieșire și înainte), fiecare dintre care este stabilită politica implicită (în momentul în care ACCEPT). Puteti vedea, de asemenea, numele coloanelor. Dar această listă nu este regulile ei înșiși, deoarece navele Ubuntu fără un set de reguli prestabilite.

sudo iptables -S
-P INPUT ACCEPT
-P FORWARD ACCEPT
-P IEȘIRE ACCEPT

Pentru a reproduce configurația, trebuie doar să introduceți iptables sudo la începutul fiecărui rând rezultat. (În funcție de configurație, această procedură poate fi un pic mai complicat atunci când dial-up, iar în cazul în care regulile permit conexiunea curentă, nu a fost încă instalat, nu ar trebui să setați DROP politica).

Pentru a reseta regulile actuale (dacă există), tip:

sudo iptables -F

Din nou, în acest stadiu, politica implicită este foarte importantă, deoarece aceasta nu se va schimba cu ajutorul comenzii anterioare, în ciuda faptului că toate regulile vor fi eliminate din lanț.

Înainte de a reseta regula atunci când conectarea de la distanță, asigurați-vă că de intrare și de ieșire lanțuri set de politici ACCEPT. Acest lucru se face după cum urmează:

sudo iptables -P INPUT ACCEPT
sudo iptables -P OUTPUT ACCEPT
sudo iptables -F

Prin crearea de reguli care permit o conexiune la distanță, puteți seta politicile DROP. Deci, se procedează în mod direct la crearea de reguli.

Crearea de reguli iptables

După cum sa menționat mai sus, acest ghid este axat pe a face cu lanțul INPUT, deoarece este responsabil pentru traficul de intrare. Mai întâi trebuie să ia în considerare regula deja menționată - o regulă care permite curent SSH-conexiune.

Se pare ca acest lucru:

sudo iptables -A INPUT -m conntrack --ctstate ESTABLISHED, RELATED -j ACCEPT

Desigur, poate părea la prima incredibil de dificil; Pentru a înțelege această regulă, se referă la componentele sale:

Această regulă ar trebui să fie plasate la început pentru a vă asigura că legătura existentă cu aceleași reguli, luate în și în afara circuitului, înainte de a ajunge regula DROP.

Cere o listă de reguli, este posibil să vezi modificările:

sudo iptables -L
Lanțului de intrare (politica ACCEPT)
țintă Prot destinație sursă opt
ACCEPT toate - oriunde oriunde ctstate conexe, STABILIT
Chain FORWARD (politica ACCEPT)
țintă Prot destinație sursă opt
Lanțul de ieșire (politica ACCEPT)
țintă Prot destinație sursă opt

După ce a familiarizat cu sintaxa de bază, de a crea mai multe reguli, conexiunea gazdă.

Adoptarea altor conexiuni importante

Iptables primit anterior o comandă să nu renunțe la toate conexiunile actuale, precum și de a lua toate conexiunile aferente. Acum trebuie să creați o regulă care acceptă conexiuni care nu îndeplinesc criteriile de mai sus.

Lăsați deschise două porturi: SSH Port (acest tutorial folosește portul implicit - 22, în cazul în care valoarea a fost schimbat, asigurați-vă că pentru a introduce o nouă valoare); În plus, presupunem că pe acest server de web rulează pe portul 80 de calculator implicit (nu adăugați această regulă, în cazul în care nu este).

Astfel, linia care urmează să fie utilizate pentru a crea astfel de reguli sunt după cum urmează:

sudo iptables -A INPUT -p tcp --dport 22 -j ACCEPT
sudo iptables -A INPUT -p tcp --dport 80 -j ACCEPT

După cum puteți vedea, ele sunt foarte asemănătoare cu prima regulă; Poate că ei au chiar și o structură mai simplă. Noi opțiuni:

  • -ptcp. Această opțiune transmite pachete folosind TCP (protocol orientat pe flux, care este utilizat de majoritatea aplicațiilor, deoarece oferă o conexiune fiabilă).
  • -dport. Această opțiune este disponibilă atunci când se utilizează steagul tcp -p. Acesta indică un port de intrare, care ar trebui să se potrivească cu pachetul de port. Prima regula permite pachetele TCP destinate pentru portul 22, iar a doua regulă ia-TCP trafic merge la portul 80.

Acum, avem nevoie pentru a crea o altă regulă ACCEPT, pentru a vă asigura că serverul funcționează corespunzător. De obicei, serviciile interacționează prin schimbul de pachete; Pentru a face acest lucru, ei folosesc conexiune de rețea Pseudo-inel - dispozitivul de loopback așa-numita, care direcționează traficul inapoi la sursa, și nu pe alte computere.

Asta este, dacă este necesar, de serviciu 1 pentru a stabili o conexiune cu serviciul 2, pentru a asculta conexiunile pe portul 4555, serviciul de 1 trimite un pachet la portul 4555 folosind dispozitivul loopback. Acest comportament ar trebui să fie permisă, deoarece este o condiție importantă pentru activitatea corectă a multor programe.

Pentru a face acest lucru, se adaugă următoarea regulă:

sudo iptables -I INPUT 1 -j ACCEPT lo -I

Este un pic diferit de normele anterioare; consideră că este mai detaliat:

  • -IINPUT 1. -I pavilion spune iptables inserați (insert) regula. Acest flag este diferit de pavilion -A (care pur și simplu face ca o regulă, în capătul catenei); el subliniază lanțul, în cazul în care doriți să faceți o regulă, și locația regulii în ea. În acest caz, regula este necesară introducerea în la începutul lanțului INPUT, astfel încât toate regulile se vor deplasa în sus cu o poziție. Această regulă trebuie să fie plasate la începutul lanțului, deoarece este una dintre regulile de bază și nu ar trebui să depindă de alții.
  • și OIM. componenta reguli transmite pachete care utilizează interfața lo ( «lo» - este un alt nume pentru dispozitivul de loopback). Acest lucru înseamnă că orice pachet care utilizează această interfață care urmează să fie adoptate.

sudo iptables -S
-P INPUT ACCEPT
-P FORWARD ACCEPT
-P IEȘIRE ACCEPT
-O intrare -j ACCEPT lo -i
-O intrare -m conntrack --ctstate CONEXE, STABILIT -j ACCEPT
-O intrare -p tcp -m tcp --dport 22 -j ACCEPT
-O intrare -p tcp -m tcp --dport 80 -j ACCEPT

Crearea de reguli DROP

Deci, în momentul în care a fost creat 4 reguli, care iau pachetele pe baza anumitor criterii. Cu toate acestea, chiar acum serverul încă nu blochează alte pachete.

În cazul în care pachetul trece prin lanțul INPUT, și nu îndeplinește oricare dintre cele patru reguli, politica implicită (ACCEPT) va fi efectuată, care oricum va lua pachetul. Acum trebuie să fie schimbat.

Acest lucru se poate face în două moduri, care sunt diferențe destul de semnificative.

Prima modalitate - pentru a edita politica implicită a lanțului INPUT; Pentru a face acest lucru, tip:

sudo iptables -P INPUT DROP

Această politică va urmări și toate pachetele care nu îndeplinesc niciuna dintre regulile lanțului de intrare. O consecință a acestui design este că acesta va fi resetat chiar și după pachetele de resetare se reguli.

Desigur, acest lucru crește nivelul de securitate al serverului; Cu toate acestea, aceasta poate duce la consecințe grave în cazul în care utilizatorul nu are nici un alt mod de a se conecta la server. Cel mai adesea, furnizori de gazduire web oferă console bazate pe web pentru a se conecta la server în cazul unor astfel de probleme. Această consolă funcționează ca o conexiune LAN virtuală, deoarece iptables nu reacționează la ea.

Puteți face serverul resetează automat conexiunea, în cazul în care sunt eliminate regulile. Acest lucru va face serverul mai sigure și inaccesibile. De asemenea, înseamnă că puteți face regulile la sfârșitul lanțului, în timp ce toate pachetele nedorite sunt eliminate.

O abordare alternativă este după cum urmează: la sfârșitul lanțului trebuie să facă o regulă să renunțe la toate pachetele neconforme, menținând în același timp o politică de ACCEPT.

Pentru a reveni INPUT ACCEPT lanț de politică, de tip:

sudo iptables -P INPUT ACCEPT

Acum puteți adăuga la sfârșitul regulii de lanț, care ar scadea toate pachetele sunt inadecvate:

sudo iptables -A INPUT -j DROP

În condiții normale de funcționare, rezultatul va fi exact la fel ca atunci când se utilizează politica DROP. Această regulă se resetează fiecare pachet pe care acesta ajunge la un server care previne pachet, nu respectă regulile.

Practic, este utilizat atunci când este necesar a doua abordare pentru a menține ACCEPT politica care ia de trafic. Asta este, chiar dacă resetați toate regulile, utilizatorul poate avea acces la o mașină de pe rețea. Această abordare vă permite să efectuați acțiunea implicită fără a fi nevoie de a schimba politica, care va fi aplicat la un șir gol.

Desigur, aceasta înseamnă, de asemenea, că orice regulă pe care doriți să le adăugați la sfârșitul lanțului trebuie resetat înainte de regula. Acest lucru se poate face prin eliminarea sau regula de resetare temporar:

sudo iptables -D INPUT -j DROP
sudo iptables -A INPUT novoe_pravilo
sudo iptables -A INPUT -j DROP

sau prin introducerea unei noi reguli în cele din urmă cu lanț (dar înainte de a nu putea suporta regula) prin specificarea unui număr de linie. Pentru a adăuga o regulă în rândul 4, introduceți:

sudo iptables -I INPUT 4 novoe_pravilo

În cazul în care o mulțime de reguli pentru a calcula numărul liniei manual este problematică; într-un astfel de caz poate iptables rând numărul:

sudo iptables -L---line numere
Lanțului de intrare (DROP Politica)
Num-țintă Prot sursă opt destinație
1 ACCEPT toate - oriunde oriunde
2 ACCEPT toate - oriunde oriunde ctstate conexe, STABILIT
3 ACCEPT tcp - oriunde oriunde Dpt tcp: ssh
4 ACCEPT tcp - oriunde oriunde tcp Dpt: http
Chain FORWARD (politica ACCEPT)
Num-țintă Prot sursă opt destinație
Lanțul de ieșire (politica ACCEPT)
Num-țintă Prot sursă opt destinație

Acest lucru face sigur că regula a fost introdusă în rândul.

Configurarea iptables Salvarea

În mod implicit, toate regulile nesalvate se aplică până la următoarea repornire a serverului; imediat după repornire regulile nesalvate se vor pierde.

În unele cazuri, este util, deoarece permite utilizatorilor să se blocheze în mod accidental pentru a avea acces la server. Cu toate acestea, în cele mai multe cazuri este mai convenabil să se mențină regulile și să le încărcați la pornire.

Acest lucru se poate face în mai multe moduri; cel mai ușor dintre ele - folosesc pachetul iptables-persistente care pot fi descarcate din depozit implicit Ubuntu:

sudo apt-get update
sudo apt-get install iptables-persistente

În timpul instalării, pachetul va specifica dacă să păstreze normele actuale au nevoie de încărcare automată a în continuare; În cazul în care au fost testate normele actuale (vă permit să creați SSH-conexiuni) și să îndeplinească toate cerințele, acestea pot fi salvate.

Doar pack întreabă dacă să păstreze normele existente trebuie să fie IPv6 (acestea sunt setate folosind ip6tables utilitar care monitorizează pachetele IPv6 de intrare în același fel de mult).

La finalizarea instalării noului serviciu va fi numit iptables-persistente, care vor fi rulate atunci când repornește server și reînnoiască regulile.

Acest ghid vă ajută să configurați firewall-ul în funcție de cerințele utilizatorului. Desigur, există foarte multe utilități similare, iar unele dintre ele pot fi mai ușor de utilizat; Cu toate acestea, iptables - una dintre cele mai bune instrumente, în cazul în care numai pentru că prezintă o structură netfilter de bază și încorporate în multe sisteme.

articole similare