Securizarea rețelei dvs. cu Iptables - Proxy - NAT - IDS: PARTEA 1

Această postare încearcă să clarifice puțin despre modul în care funcționează rețelele și despre cum să transformăm echipamentul nostru Linux într-un router care asigură puțin mai mult rețeaua noastră, fie acasă, fie chiar de afaceri. Deci, să trecem la treabă:

Acest conținut se bazează pe cartea „Linux - Administrarea sistemului și funcționarea serviciilor de rețea” - Sébastien BOBILLIER

Rutare și filtrare

Pentru a vorbi și a înțelege despre rutare putem defini mai întâi care este rolul routerului? Pentru aceasta putem spune că un router, pe lângă crearea unei rețele și permiterea conexiunii cu alte echipamente (știind că putem face acest lucru cu un AP, Switch, Hub sau altele) are capacitatea de a conecta două rețele diferite între ele.

router

După cum putem vedea în imagine, există o rețea locală "10.0.1.0" care este creată de router și ajunge la una dintre cele două interfețe ale acestuia. Apoi, routerul de pe cealaltă interfață are o altă rețea, cu IP-ul său public cu care se poate conecta la Internet. Funcția de rutare este practic să servească ca intermediar între aceste două rețele, astfel încât acestea să poată comunica.

Linux ca router.

Bineînțeles, Linux Kernel are deja capacitatea de a face „redirecționare”, dar în mod implicit este dezactivat, așa că, dacă dorim ca Linux-ul nostru să facă acest lucru, trebuie să mergem la fișier.

/proc/sys/net/ipv4/ip_forward

Acolo vom descoperi că este un fișier care conține doar un „0” zero, ceea ce trebuie să facem este să-l schimbăm într-un „1” pentru a activa acest comportament. Din păcate, acest lucru este șters când repornim computerul, pentru a-l lăsa activat implicit trebuie să folosim comanda:

sysctl net.ipv4.ip_forward=1

Sau editați-l direct în fișier /etc/sysctl.conf. În funcție de distribuție, această configurație poate fi, de asemenea, într-un fișier din  /etc/sysctl.d/.

În mod implicit, Linux-ul nostru trebuie să aibă o tabelă de rutare, care este în general configurația rețelei noastre LAN și conexiunea la router. Dacă vrem să vedem această rutare, putem folosi două comenzi:

route -n

o

netstat -nr

Ambele comenzi ar trebui să revină la fel.

Captură de ecran din 2014 09:30:18

În general, această configurație este suficientă pentru ca Linux-ul dvs. să servească drept gateway și alte computere pot naviga prin computerul nostru. Acum, dacă dorim ca Linux-ul nostru să conecteze două sau mai multe rețele, fie că sunt locale sau nu, de exemplu, putem folosi rutele statice.

Să presupunem că Linux-ul meu are două interfețe de rețea, prima are o conexiune la Internet a cărei rețea este 172.26.0.0 și a doua (10.0.0.0) are câteva computere dintr-o altă rețea locală. Dacă vrem să direcționăm pachetele către acea altă rețea, putem folosi:

route add -net 10.0.0.0 netmask 255.0.0.0 gw 172.26.0.8

În general este:

route add -net REDDESTINO netmask MASCARA gw IPDELLINUX

dacă dăm traseu -n indiferent dacă această rețea există sau nu, această rutare va fi fixată în tabelul nostru.

Captură de ecran din 2014 09:30:18

Dacă vrem să eliminăm direcționarea menționată, putem folosi

route del -net 10.0.0.0 netmask 255.0.0.0

iptables.

Practic iptables este utilizat pentru filtrarea pachetelor, de ieșire, de intrare sau altele, ceea ce îl face un instrument excelent pentru gestionarea traficului de rețea. Ei bine, iptables, la fel cum ne permite să filtrăm traficul aceluiași computer, ne permite și să filtrăm traficul care trece prin el. (Redirecționare). Iptables pot fi împărțite în tabele, lanțuri și acțiuni.

  • Panouri:  practic pot exista două tabele, filtru, pentru a filtra pachete și  nat pentru a traduce adrese, adică pentru a trece de la o rețea la alta.
  • Lanţuri: Lanțul se referă la tipul de trafic pe care vrem să îl filtrăm sau să înotăm, adică la ce trafic urmează să aplicăm tabelele? și pot fi:  INTRARE: Trafic de intrare, IEȘIRE: trafic de ieșire sau REDIRECŢIONA: Traficul care trece prin el, dar nu este propria conexiune.
  • Poate apărea, de asemenea POSTOUTARE, Folosit pentru a trata pachetul într-un anumit mod după ce a fost direcționat.
  • acţiuni: Acțiunile sunt practic acțiunea care trebuie efectuată cu lanțul. Această acțiune poate fi CĂDERE BRUSCA, care doar distruge acel trafic sau ACCEPT. care permite traficului să facă acțiunea respectivă.

Regulile IPTABLES sunt salvate și executate în ordinea în care au fost create și, dacă o regulă șterge o regulă anterioară, se aplică întotdeauna ultima regulă din ordine.

Politici de firewall.

În general, firewall-urile funcționează în mod natural în două moduri:

  1. Permiteți tot traficul, cu excepția sau
  2. Nu permiteți trafic, cu excepția ...

Pentru a aplica politici, utilizați IPTABLES - LANȚ DE ACȚIUNE P

Unde șirul reprezintă tipul de trafic (INPUT, OUTPUT, FORWARD, POSTROUTING ...) și acțiunea este DROP SAU ACCEPT.

Să vedem un exemplu.

Captură de ecran din 2014 09:30:18

Aici vedem că la început am reușit să fac ping, apoi i-am spus IPTABLES că tot traficul OUTPUT era DROP sau nu era permis. Apoi i-am spus IPTABLES să o accepte.

Dacă vom construi un firewall de la zero, trebuie să aplicăm întotdeauna regulile de (Nu permiteți niciun trafic, cu excepția ... Pentru aceasta, atunci aplicăm regulile

iptables -P INPUT DROP iptables -P OUTPUT DROP iptables -P FORDARD DROP
Dacă se aplică aceste politici, nu vor avea niciun tip de conexiune
.

Pentru a returna, scriem același lucru și înlocuim DROP cu ACCEPT.

În acest moment, întrucât tot traficul este refuzat, începem să le spunem IPTABLE-urilor ce trafic poate avea.

Sintaxa este:

iptables -A cadena -s ip_orgigen -d ip_destino -p protocolo --dport puerto -j acción

În cazul în care:

String = INPUT, OUTPUT sau FORWARD

origine_ip = Originea pachetelor, acesta poate fi un singur IP sau o rețea și în acest caz trebuie să specificăm masca).

destinație_ip = unde merg pachetele. acesta poate fi un singur IP sau o rețea și în acest caz trebuie să specificăm masca).

protocol = indică protocolul folosit de pachete (icmp, tcp, udp ...)

port = portul de destinație al traficului.

actiune = DROP sau ACCEPT.

Exemplu:

Captură de ecran din 2014 09:30:19

Se aplică TOATE politicile restricționate.

Captură de ecran din 2014 09:30:19

Apoi adăugăm regulile pentru a putea avea trafic prin portul 80 HTTP și 443 HTTPS, cu protocolul TCP. Apoi portul 53 Se aplică pentru ca clientul DNS să rezolve domeniile, altfel nu veți naviga. Acest lucru funcționează cu protocolul UDP.

Linia:

iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

Acest lucru se datorează următoarelor: Când efectuați o cerere HTTP, de exemplu, vă conectați la portul 80 al serverului, dar serverul pentru a returna informațiile trebuie să se conecteze cu dvs. prin orice port. (În general mai mare de 1024).

Deoarece toate porturile noastre sunt închise, acest lucru nu va fi realizat decât dacă deschidem toate porturile mai mari de 1024 (idee greșită). Ceea ce spune acest lucru este că tot traficul de intrare care provine dintr-o conexiune pe care am stabilit-o eu este acceptat. Adică, o legătură pe care, în principiu, am început-o.

Atunci când introducem OUTPUT în reguli, acest lucru se aplică doar echipamentelor în cauză, dacă folosim echipamentul nostru ca router pentru a permite aceste conexiuni, trebuie să schimbăm OUTPUT în FORWARD. Deoarece traficul trece prin computer, dar nu este pornit de acesta
Toate aceste reguli sunt șterse după repornire, deci trebuie să creați scripturi astfel încât să înceapă în mod implicit. Dar vom vedea acest lucru în următorul

Sper că ți-au plăcut aceste informații. În următoarea voi vorbi despre NAT, Proxy și scripturi pentru Firewal.


Lasă comentariul tău

Adresa ta de email nu va fi publicată. Câmpurile obligatorii sunt marcate cu *

*

*

  1. Responsabil pentru date: Miguel Ángel Gatón
  2. Scopul datelor: Control SPAM, gestionarea comentariilor.
  3. Legitimare: consimțământul dvs.
  4. Comunicarea datelor: datele nu vor fi comunicate terților decât prin obligație legală.
  5. Stocarea datelor: bază de date găzduită de Occentus Networks (UE)
  6. Drepturi: în orice moment vă puteți limita, recupera și șterge informațiile.

  1.   Rogelio pinto el a spus

    Aceasta este baza pe care o iau mulți antreprenori pentru a-și fabrica propriile firewall-uri, de aceea există pe piață atât de multe mărci de firewall-uri cu Linux încorporat, unele bune și altele nu atât.

  2.   Heber el a spus

    Articol excelent. Aștept cu nerăbdare partea a doua.

  3.   Milton el a spus

    Foarte bună explicație, m-a ajutat să înțeleg proxy-ul muncii mele. Mulțumesc

  4.   faustod el a spus

    Buna Jlcmux,

    Excelent, mi-a plăcut foarte mult, când va fi disponibilă cealaltă parte?

    Salutări și mulțumiri pentru distribuire

    1.    @Jlcmux el a spus

      Mulțumesc pentru comentariu.

      Am trimis cealaltă parte ieri, în cursul zilei cred că o vor publica.

      Salutări.

  5.   Israel el a spus

    Foarte bun prieten prieten @ Jlcmux, chiar am învățat cu el, deoarece mi-a lămurit câteva îndoieli pe care le aveam de ceva timp, apropo nu te-ar deranja să împărtășești cartea sursei articolului, cea a lui Sébastien BOBILLIER, bine slau2s și acum pentru a vedea partea a 2-a, salu2s.

    1.    @Jlcmux el a spus

      Bună ziua Vă mulțumim că ați comentat Israel.

      Se pare că am cartea în formă fizică. Dar am găsit acest link pe Google Books. http://books.google.com.co/books?id=zxASM3ii4GYC&pg=PA356&lpg=PA356&dq=S%C3%A9bastien+BOBILLIER+Linux+%E2%80%93+Administraci%C3%B3n+del+sistema+y+explotaci%C3%B3n+de+los+servicios+de+red#v=onepage&q=

      Cred că este complet.

  6.   Ariel el a spus

    Articol foarte bun, adaug o întrebare: Care ar fi avantajul utilizării Linux ca router, dacă există, cu privire la un hardware dedicat acestuia? Sau este doar pentru exerciții fizice? Știu că există distribuții dedicate, dar nu știu dacă vor salva computerele vechi sau vor oferi mai multă flexibilitate în configurare.

    1.    @Jlcmux el a spus

      Ei bine, cred că avantajele și dezavantajele depind de scenariul în care urmează să implementați acest lucru. De ce cu siguranță nu veți cumpăra un UTM sau ceva de genul acesta pentru casa dvs.? Și poate și pentru o afacere mică care nu își poate permite. De asemenea, este bun ca exercițiu, deoarece vă ajută să înțelegeți toată logica acestui lucru și puteți configura mai bine un FWall dedicat. În plus, aproape toate aceste dispozitive cu adevărat, ceea ce au este Embedded Linux.

      Salutări.

  7.   Ariel el a spus

    Bună, o întrebare, puteți genera o interfață „artificială” în Linux pentru rutare similară între rețele? (stil de urmărire a pachetelor) pentru a lucra cu mașini virtuale? de exemplu, dacă am eth0 (pentru că am un singur card, desigur) pot crea eth1 pentru a crea o altă rețea? Foarte bun tutore!

    1.    plin de viață el a spus

      Desigur, în Linux puteți crea interfețe virtuale. Dacă aveți eth0, puteți avea eth0: 0, eth0: 1, eth0: 2 ... etc.

  8.   chinoloco el a spus

    Deci bine, mulțumesc pentru distribuire