Exemple Opennet iptables. Afișează starea firewall-ului dvs. Limitați numărul de conexiuni simultane la server pentru fiecare client prin IP

Conceput pentru începători. Vom încerca să umplem acest gol. Să ne uităm la elementele de bază ale regulilor de scriere, precum și la unele module suplimentare care va ajuta să ușureze viața.

    Totul este al tău hardware funcţional. Adică ați conectat toate echipamentele, modulele se încarcă, dispozitivele sunt vizibile în sistem. Este util să verificați mai întâi dacă o conexiune la Internet este posibilă fără iptables. Nu este nimic mai rău decât să te joci cu un program încăpățânat timp de multe ore, să-l înjure în zadar și apoi să realizezi că placa de rețea nu funcționează sau modemul este configurat incorect.

    Ai o idee despre tehnologii de rețea si esti familiarizat cu administrare Linuxși Gentoo Linux în special. Adică, aveți nevoie de abilități în lucrul cu lucruri de bază precum ifconfig, rc-update, /etc/conf.d/net și așa mai departe. Dacă acestea sunt încă sunete goale pentru dvs., atunci vă rugăm să studiați mai întâi Manualul Gentoo și Linux Help's Networking Basics 101

Rețea --->

Opțiuni de rețea---->

Filtrarea pachetelor de rețea (înlocuiește IPchains)--->

Configurare Netfilter

Să activăm toate opțiunile ca module (deși din punct de vedere al securității, modulele ar trebui să fie dezactivate cu totul; un nucleu monolitic este mai fiabil, deși mai lent).

Fiecare computer conectat la rețea este în pericol potențial. Există o mulțime de amenințări în rețea, de la programe care vor încerca să pătrundă în sistem în orice fel până la hackeri care vor să obțină acces la computerul de care au nevoie. O software instalat pe un computer poate conține vulnerabilități necunoscute și necorectate, care pot deveni o gaură de securitate.

Dacă acest lucru nu este foarte relevant pentru computerele de acasă, deoarece acestea sunt conectate la rețea prin routere și NAT, care le ascund de rețea externă, atunci pentru servere acest lucru este mai relevant ca niciodată. ÎN sistem de operare Linux are un firewall iptables foarte flexibil și de încredere încorporat în nucleu.

Cu ajutorul acestui program sistemul este protejat de intruziunile externe, redirecționarea portului și multe alte acțiuni cu trafic. Dar dezavantajul său este că este puțin greu de configurat. Acest articol va analiza configurarea iptables pentru manechine. Sper că după aceasta îl vei putea folosi cu încredere capabilități de bază iptables.

Subsistemul iptables și Netfilter au fost încorporate în sistem de ceva timp. Nucleul Linux. Toate pachete de rețea Mesajele care trec prin computer, sunt trimise de computer sau sunt destinate computerului sunt direcționate de kernel prin filtrul iptables. Acolo, aceste pachete pot fi verificate și apoi pentru fiecare verificare, dacă este trecută, se realizează acțiunea specificată în el. De exemplu, pachetul este transmis nucleului pentru trimitere programul țintă, sau aruncate.

Tipuri de pachete

Toate pachetele sunt împărțite în trei tipuri: de intrare, de ieșire și de trecere. Sosite sunt cele care au fost trimise către acest computer, cele de ieșire sunt cele trimise de pe acest computer în rețea. Și pachetele de trecere sunt pachete care pur și simplu trebuie să fie redirecționate în continuare, de exemplu dacă computerul dvs. acționează ca un router.

În consecință, în filtrul iptables, toate pachetele sunt împărțite în trei lanțuri similare:

  • Intrare- procesează pachetele și conexiunile primite. De exemplu, dacă orice utilizator extern încearcă să se conecteze la computerul dvs. prin ssh sau orice site web vă trimite conținutul acestuia la cererea browserului. Toate aceste pachete vor ajunge în acest lanț;
  • redirecţiona- acest lanț este folosit pentru trecerea conexiunilor. Aceasta include pachetele care sunt trimise către computerul dvs., dar nu sunt destinate acestuia, sunt pur și simplu trimise prin rețea la destinație. După cum am spus deja, acest lucru se observă pe routere sau, de exemplu, dacă computerul dvs. distribuie wifi;
  • ieșire- Acest lanț este folosit pentru pachete și conexiuni de ieșire. Aceasta include pachetele care au fost create atunci când ați încercat să faceți ping la un site sau când vă lansați browserul și încercați să deschideți orice site.

Dar dacă credeți că puteți închide complet lanțul de intrare pentru a crește securitatea, atunci vă înșelați foarte mult. Când rețeaua funcționează, sunt utilizate atât lanțurile de intrare, cât și de ieșire. De exemplu, încercați să faceți ping, datele sunt trimise prin ieșire, dar răspunsul vine prin intrare. Același lucru se întâmplă atunci când navigați pe site-uri web și alte activități. Dar lanțul înainte poate să nu fie folosit deloc dacă computerul nu este un router. Deci configurarea iptables trebuie făcută cu mare atenție.

Reguli și acțiuni

Înainte de a trece la crearea unei liste de reguli iptables, trebuie să luați în considerare modul în care funcționează și ce sunt. Pentru fiecare tip de pachet, puteți seta un set de reguli care vor fi verificate pe rând pentru conformitatea cu pachetul, iar dacă pachetul se potrivește, atunci i se va aplica acțiunea specificată în regulă. Regulile formează un lanț, deci input, output și forward se numesc lanțuri, lanțuri de reguli. Pot exista mai multe acțiuni:

  • ACCEPTA- permiteți pachetului să treacă mai departe de-a lungul lanțului de reguli;
  • PICĂTURĂ- scoateți pachetul;
  • RESPINGE- respingeți coletul, va fi trimis un mesaj expeditorului că coletul a fost respins;
  • Jurnalul- faceți o înregistrare despre pachet în fișierul jurnal;
  • COADĂ- trimiteți pachetul către aplicația utilizator.

Regulile pot verifica orice potrivire, de exemplu, după ip, după portul destinatar sau expeditor, antetele pachetelor și multe altele. Dacă un pachet nu se potrivește cu niciuna dintre reguli, atunci i se aplică acțiunea implicită, de obicei ACCEPT.

Când ne-am dat seama de reguli, ne putem întoarce la lanțuri. Pe lângă cele enumerate mai sus, există două lanțuri suplimentare de reguli:

  • prerutare- pachetul intră în acest lanț înainte de a fi procesat de iptables, sistemul nu știe încă unde va fi trimis, la intrare, ieșire sau redirecționare;
  • postrutare- toate pachetele de trecere care au trecut deja prin lanțul înainte merg aici.

Dar asta nu este tot. Avem și tabele iptables, cu care vrem să ne ocupăm și noi.

tabele ipatables

Deasupra lanțurilor de reguli din iptables există un alt nivel de abstractizare, iar acestea sunt tabele. Există mai multe tabele în sistem și toate au set standard lanțuri de intrare, înainte și ieșire. Tabelele sunt concepute pentru a funcționa acțiuni diferite peste pachete, de exemplu pentru modificare sau filtrare. Acum acest lucru nu este atât de important pentru tine și va fi suficient să știi că pachetele iptables sunt filtrate în tabelul de filtre. Dar le vom privi pe toate:

  • brut- concepute pentru a lucra cu ambalaje brute înainte ca acestea să fie procesate;
  • calandru- destinat modificarii pachetelor;
  • nat- oferă funcționalitate nat dacă doriți să folosiți computerul ca router;
  • filtra- tabelul principal pentru filtrarea pachetelor, utilizat implicit.

Aproape totul cu teoria, acum să ne uităm la utilitate linie de comandă iptables, care este folosit pentru a gestiona sistemul iptables.

Utilitar Iptables

Subsistemul iptables și netfilter sunt încorporate în nucleu, dar un set de utilitare pentru gestionarea tuturor acestora nu este întotdeauna furnizat împreună cu sistemul. Pentru a instala utilitarul pe Ubuntu, tastați:

sudo apt install iptables

Și pe distribuțiile bazate pe Fedora, instalarea iptables se face puțin diferit:

sudo yum instalează iptables

Odată ce instalarea iptables este finalizată, puteți trece la configurare, dar să ne uităm mai întâi la sintaxa utilitarului. De obicei comanda are așa ceva vedere generală:

-t lanț de acțiuni de masă parametri_addiționali

Acum să ne uităm la parametrii iptables, tabelul indică tabelul cu care se lucrează, acest parametru poate fi ratat, acțiunea este acțiunea necesară, de exemplu, creați sau ștergeți o regulă și opțiuni suplimentare descrie acțiunea și regula care trebuie efectuată.

Rămâne să luați în considerare principalele acțiuni pe care iptables vă permite să le efectuați:

  • -O- adăugați o regulă la lanț;
  • -CU- verifica toate regulile;
  • -D- ștergeți regula;
  • -Eu- introduceți o regulă cu numărul dorit;
  • -L- afișați toate regulile din lanțul curent;
  • -S- afișați toate regulile;
  • -F- ștergeți toate regulile;
  • -N- creați un lanț;
  • -X- ștergeți lanțul;
  • -P- setați acțiunea implicită.

Opțiuni suplimentare pentru reguli:

  • -p- specificați protocolul, unul dintre tcp, udp, udplite, icmp, icmpv6, esp, ah, sctp,
    mh;
  • -s- specificați adresa IP a dispozitivului care trimite pachetul;
  • -d- indicați adresa IP a destinatarului;
  • -i- interfata de retea de intrare;
  • -o- interfata de retea de iesire;
  • -j- selectați o acțiune dacă regula se potrivește.

Acum puteți continua să priviți exemple despre cum este configurat iptables.

Exemple de configurare Iptables

Vom analiza câteva exemple de bază, astfel încât să puteți consolida ceea ce ați citit mai sus.

Lista regulilor

În primul rând, să vedem cum să vizualizați regulile iptables, opțiunea -L este suficientă pentru asta:

De asemenea, puteți specifica lanțul dorit pentru a afișa regulile numai pentru acesta:

iptables -L INPUT

Reguli de compensare

Nu puteți dezactiva pur și simplu iptables prin oprirea serviciului de actualizare a regulilor iptables prin systemd sau chiar prin eliminarea setului de utilitare de configurare. Subsistemul funcționează la nivel de kernel și nu depinde de ceea ce ați instalat acolo. Prin urmare, dacă faceți ceva greșit, va trebui să ștergeți regulile. Pentru a face acest lucru, rulați:

Sau doar pentru un anumit lanț:

sudo iptables -F Intrare

Permiteți-mi să vă reamintesc că toate aceste acțiuni sunt efectuate pentru tabelul implicit - filtru.

Reguli implicite

După cum am spus deja, dacă nicio regulă nu corespunde unui pachet, atunci i se aplică acțiunea implicită. Poate fi specificat folosind opțiunea -p:

sudo iptables -p INTRARE ACCEPT
$ sudo iptables -p ACCEPT IEȘIRE
$ sudo iptables -p FORWARD DROP

În acest exemplu, permitem lanțurile INPUT și OUTPUT, dar dezactivăm FORWARD.

Blocarea pachetelor

Pentru a bloca pachetele, putem folosi acțiunea DROP, putem filtra pachetele care trebuie blocate după multe criterii, de exemplu, protocol, adresă IP, mască de rețea, port și multe altele.

Iată cum va arăta comanda, care vă permite să adăugați o regulă iptables pentru a bloca toate pachetele primite din 10.10.10.10:

sudo iptables -A INPUT -s 10.10.10.10 -j DROP

Și acum pachetele de ieșire la aceeași adresă:

Blocarea intervalului IP se face într-un mod similar. Pentru a face acest lucru, trebuie să utilizați masca de rețea 10.10.10.0/24. Acestea vor fi toate adresele începând de la 10.10.10.0 până la 10.10.10.255:

sudo iptables -A INPUT -s 10.10.10.0/24 -j DROP

Sau o versiune extinsă a măștii:

sudo iptables -A INPUT -s 10.10.10.0/255.255.255.0 -j DROP

De asemenea, puteți bloca toate conexiunile ssh de intrare:

sudo iptables -A INPUT -p tcp --dport ssh -s 10.10.10.10 -j DROP

După cum puteți vedea, adăugarea unei reguli iptables este foarte simplă.

Stergerea regulilor

Ștergerea regulilor iptables se face în același mod ca și crearea altora noi, doar că în loc de opțiunea A trebuie să utilizați opțiunea D. Mai întâi, uitați-vă la lista de reguli:

De exemplu, iată cum puteți șterge regula iptables care a fost creată a doua:

sudo iptables -A OUTPUT -s 10.10.10.10 -j DROP

De asemenea, puteți șterge complet iptables rulând comanda cu opțiunea -F:

De câteva ori am dat peste faptul că chiar și oamenii inteligenți în general o fac absolut greșeli de neiertat. De exemplu, deschid portul pe care rulează baza de date către întregul Internet. Acest lucru se întâmplă adesea începătorilor DevOps care au scris cod toată viața, iar acum responsabilitățile lor includ și configurarea serverelor. Există tutoriale bune online pe setare de bază firewall în Linux și alte *nix, dar adesea acestea sunt foi de pe multe ecrane. Deci, sper că acest tutorial mai concis va fi de folos cuiva.

Important! Este foarte ușor să dai firewall greșit la o mașină atât de mult încât nu o mai poți accesa. Acest lucru este mai ales adevărat găzduire în cloud. De exemplu, dacă în AWS închideți toate porturile de la 1024 la 65536, din anumite motive mașina se dovedește a fi închisă după o repornire totul in general porturi. Dacă sunteți găzduit în cloud, configurați firewall mai bun prin interfața web oferită de găzduire.

O mică notă despre terminologie. Firewall-ul încorporat în nucleul Linux se numește Netfilter, iar iptables este un utilitar pentru gestionarea acestui firewall. Mulți oameni cred în mod eronat că firewall-ul se numește iptables. Acest lucru este greșit. Spunând ceva de genul „Filtrez pachetele folosind iptables”, le arăți altora ignoranța ta.

În general, ce fel de probleme pot fi rezolvate folosind Netfilter:

  • Permite/interzice traficul de intrare către porturi specifice peste anumite protocoale (IPv4/IPv6, TCP/UDP) cu adrese specificate(IP, MAC) sau subrețele;
  • Totul este la fel pentru traficul de ieșire;
  • Puteți, de exemplu, să ignorați complet toate pachetele ICMP;
  • Configurarea NAT, vezi articolul despre un router bazat pe Raspberry Pi;
  • Am auzit că guru adevărați știu cum să configureze protecția împotriva DDoS și a forței brute și să limiteze accesul la rețea aplicatii specifice, utilizatori sau grupuri și să facă alte lucruri nebunești;

Observ că utilitarul iptables personal mi s-a părut extrem de incomod la început în comparație cu ipfw din FreeBSD. Din fericire, după ce am lucrat cu el de ceva timp, toate aceste multe steaguri precum -A, -D, -j și altele devin familiare, așa că aveți răbdare. Să ne uităm la comenzile de bază.

Afișați toate regulile:

iptables -L -n

Este posibil să observați că Netfilter are niște „lanțuri” - cel puțin INPUT, OUTPUT și FORWARD. Eu personal am și un lanț DOCKER pe aparat. Pentru prima dată, vă puteți gândi la primele două ca fiind tot traficul de intrare și respectiv de ieșire și uitați temporar de restul. Sunt șanse mari să nu ai deloc nevoie de ele.

Eliminați toate regulile:

iptables -F

Modificați politica (comportamentul implicit) al lanțului:

iptables -P INPUT DROP
iptables -P INTRARE ACCEPT

Interziceți accesul de la gazdă/subrețea:

iptables -A INPUT -s 123.45.67.89 -j DROP
iptables -A INPUT -s 123.45.0.0/ 16 -j DROP

De asemenea, puteți utiliza nume de domenii:

iptables -A INPUT -s example.ru -j DROP

Interzicerea conexiunilor de ieșire:

iptables -A OUTPUT -d 123.45.67.89 -j DROP

Puteți folosi negații în reguli:

iptables -O INTRARE!

-s 123.45.67.89 -j DROP

Ștergerea unei reguli după numărul ei din lanț:

iptables -D INTRARE 1

Eliminarea unei reguli pe baza a ceea ce face:

iptables -D INPUT -s 123.45.67.89 -j DROP Opțiunea -p specifică protocolul. Puteți utiliza all, icmp, tcp, udp sau numărul de protocol din /etc/protocols. Steagul - -sport indică portul din care a fost trimis pachetul și -

iptables -A INPUT -p tcp --sport 80 -j ACCEPT
iptables -A INTRARE -p tcp --dport 80 -j ACCEPT

Inserarea unei reguli la începutul unui lanț:

iptables -I INTRARE...

Sau puteți specifica o anumită poziție:

iptables -I INTRARE 3...

iptables-save > /etc/ iptables.rules

Restabiliți regulile:

iptables-restore< / etc/ iptables.rules

Acum să ne uităm la câteva exemple practice. Acesta este, de exemplu, cum arată emularea netsplit într-un test care verifică comportamentul unei aplicații care utilizează Akka Cluster:

rulați(nodul 1, s „iptables -A INPUT -s $node2 -j DROP”)
rulați(nodul 1, s „iptables -A INPUT -s $node3 -j DROP”)
rulați(nodul 1, s „iptables -A OUTPUT -d $node2 -j DROP”)
rulați(nodul 1, s „iptables -A OUTPUT -d $node3 -j DROP”)

Restaurarea are loc exact în același mod, doar steagul -A este înlocuit cu steagul -D.

Un alt exemplu. Trebuie să aflați ce porturi ascultă pe aparat și să le închideți pe cele inutile. Intrăm în mașină și spunem:

netstat -tuwpln

Exemplu de ieșire:

Conexiuni la internet active (numai servere)
Proto Recv-Q Trimitere-Q Adresă locală Adresă străină Stat PID/Nume program
tcp 0 0 0.0.0.0:80 0.0.0.0:* ASCULTĂ 3210/nginx
tcp 0 0 0.0.0.0:4369 0.0.0.0:* ASCULTĂ 1789/epmd
tcp 0 0 0.0.0.0:22 0.0.0.0:* ASCULTĂ 797/sshd
tcp 0 0 127.0.0.1:5432 0.0.0.0:* LISTEN 990/postgres

Nginx și SSHd se uită la Internet, acest lucru este normal. PostgreSQL ascultă doar interfața locală, deci nu există probleme nici cu aceasta. Dar epmd iese în evidență (puteți verifica cu telnet de pe o altă mașină), iar acest lucru nu este bun. Puteți închide doar portul 4369. Cum să faceți acest lucru a fost arătat mai sus. Sau puteți merge și mai departe și puteți refuza toate conexiunile din exterior la portul 81 și mai vechi.

oțel, nurcă, carne de vită, hârtie 28 septembrie 2010 la 19:47

noțiuni de bază pentru iptables folosind Debian ca exemplu prin ochii unui copil

Despre ce vom vorbi?

Totul este foarte simplu, explicând încă o dată pe forum noilor veniți în lumea Linux că da, din câte am înțeles, pe Internet nu puteți găsi un articol care să explice nu numai setările iptables, ci și câteva elemente de bază ale rețelei.
Așa că vă prezint atenției mica excursie De configurarea paravanului de protecțieîn Linux. Să ne aprofundăm în configurarea netfilter/iptables, fără îndoială, vom atinge și alte probleme aplicate, deoarece ne lipsesc răspunsurile cuprinzătoare la întrebările noastre... Și voi încerca să prezint totul aici cât mai clar posibil.

Cum arată

Vom lua în considerare o schemă tipică pentru birouri și apartamente, da, apartamente! Puțini oameni au propriul lor server mic acasă sub masă, dar cea mai mare parte a internetului de acasă este distribuit printr-un router și în cea mai mare parte sunt și firmware cu Linux.
Acesta este un aspect tipic de birou mic. Când un computer (server) este conectat la Internet, iar restul sunt conectați la Internet prin acest server.

Să mergem, încet...

Și deci ce avem:
  • server cu 2 plăci de rețea și Debian Lenny instalat pe el
  • implicit în Debian Lenny firewall - netfilter/iptables
  • rețea locală de N computere, toate conectate printr-un comutator, inclusiv serverul
ce este NAT
În primul rând, trebuie să înțelegem că vom configura cel mai obișnuit NAT (Network Address Translation). Pentru cei însetați, la final voi aminti și un server proxy folosind squid ca exemplu. După cum am spus deja, vom mesteca aproape totul.
Ce este NAT? De fapt, totul este simplu, toate computerele au o adresă fizică (MAC) și de rețea (IP). Noi în în acest moment Sunt interesat de adresele IP. Adresa IP din aceeași rețea trebuie să fie unică! Și cu standardul IPv4 actual, doar 4.294.967.296 (2 32) pot fi unici, ceea ce nu este deloc mult și aproape că au dispărut. dar nu vă faceți griji, IPv6 este pe cale să se răspândească și există o mulțime de adrese acolo!
Dar aici puteți observa că computerele sunt semnificativ în plus numere pe care le permite IPv4 sau spun că un prieten de acasă are aceeași adresă ca și tine! Și aici intervine NAT - vă permite să vă conectați rețele de calculatoare folosind o singură adresă IP între ele, acțiunea firewall se numește SNAT (NAT sursă sau substituție adrese sursă). Aceste. în 99% din cazuri, întregul birou accesează Internetul sub o singură adresă IP, în timp ce în interiorul biroului fiecare are propria sa. Puteți citi despre clasele de adrese IP pe Internet.

Acum că știm ce este NAT și pentru ce este necesar, putem trece direct la configurarea serverului.

trafic de tranzit
Toate comenzile sunt executate ca root (superutilizator). În Debian, așa-numitul trafic de tranzit este dezactivat implicit, adică. În mod implicit, operarea este furnizată doar ca o singură mașină. După cum probabil ați ghicit, fără trafic de tranzit nu există NAT. Pentru a-l activa, schimbați doar 1 cifră - $ echo 1 > /proc/sys/net/ipv4/ip_forward, Dar această setare se va bloca după o repornire, deci este mai bine să corectați configurația - $ nano /etc/sysctl.conf apoi căutăm linia #net.ipv4.ip_forward=1și eliminați hash (simbolul comentariului) de la începutul rândului și verificați dacă valoarea este 1! Acum puteți trece direct la configurarea iptables.
configurarea iptables
Există multe articole pe Internet despre cum să scrieți reguli în iptables și ce puteți face cu ajutorul lor. Am găsit că acesta este cel mai complet și mai plăcut de citit.
Și deci să începem. Mai întâi, să ștergem tabelele de reguli inutile, în cazul în care ar fi ceva inutil acolo...
$ iptables -F
$ iptables -t nat -F
$ iptables -t mangle -F

Excesul a fost curățat. Este foarte important să înțelegeți și să vă amintiți că regulile din iptables sunt aplicate ierarhic, adică. regula de mai sus va fi îndeplinită mai devreme. Toate lanțurile au politica ACCEPT în mod implicit - permit totul. care nu se încadrează în regulile acestui lanţ.
Să fim de acord că interfața cu care se confruntă rețeaua locală este eth0, iar interfața cu care se confruntă internetul este eth1, retea locala are adrese 192.168.0.0/24, iar furnizorul ne-a dat adresa statica 10.188.106.33 (deși nu „alb” - puteți căuta și tipurile de adrese IP pe Internet). Și așa scriem:
$ iptables -A FORWARD -i eth0 -o eth1 -s 192.168.0.0/24 -j ACCEPT
$ iptables -A FORWARD -i eth1 -o eth0 -d 192.168.0.0/24 -j ACCEPT
$ iptables -P FORWARD DROP

Astfel, am permis pachetelor de tranzit să treacă prin firewall pentru gama noastră de adrese IP și interzicem orice altceva.
Acum NAT însuși:
$ iptables -A POSTROUTING -s 192.168.0.0/24 -o eth1 -j SNAT --to-source 10.188.106.33
Acest lucru este suficient pentru ca NAT să funcționeze.
Lucruri mărunte...
Pe clienți, indicăm un ip din intervalul selectat și indicăm adresa IP a serverului nostru ca gateway (de obicei este atribuit mai întâi de la subrețea - voi lăsa acest lucru la discreția dvs.). Toate setările de rețea Pe server poți face asta:
$ nano /etc/network/interfaces specifică setările interfețelor de rețea.
acces la adâncimea rețelei printr-o poartă sau DNAT
Și atunci ai realizat că ai online Windows Server la care ai avut întotdeauna acces ușor prin RDP și apoi a apărut acest gateway Debian enervant! Totul este foarte simplu - trebuie doar să adăugați o regulă DNAT la iptable-urile noastre.
Ce fel de fiară este DNAT? DNAT (NAT de destinație sau înlocuire adresa destinatarului) - plăci de rețea lucrează în așa fel încât să accepte doar pachete adresate în mod specific lor, dar poți să mergi la serverul nostru dacă ip-ul sub care accesează Internetul se află în alte o duzină de mașini din biroul tău? Cum îi va ajunge cererea? De fapt, toate cererile de acest fel se confruntă cu poarta noastră. Și tot ce trebuie să facem este să stabilim regulile de lucru cu astfel de pachete.
$ iptables -A PREROUTING -i eth1 -p tcp -m tcp --dport 3389 -j DNAT --to-destination 192.168.0.2
Această regulă simplă va redirecționa toate pachetele care sosesc la gateway de pe Internet către Port TCP 3389 (acesta este ceea ce folosește Protocolul RDP) pe serverul intern Windows. Și, voila, totul funcționează pentru tine.
deci ce zici de calmarul tău preferat
Și, deși totul funcționează acum, toată lumea are internet și totul funcționează, unii încă au nevoie de un server proxy. Nu voi vorbi despre instalarea calmarului, voi arăta o regulă care să-l facă „transparent”. Trebuie doar să vă înregistrați în SQUID cuvânt magic transparente la locul potrivit și vom începe să procesăm corect cererile care cad asupra acestuia.
Noi scriem $ iptables -A PRERUTARE -d! 192.168.0.0/24 -i eth0 -p tcp -m multiport --dports 80,443 -j REDIRECT --to-ports 3128.
Și ce ne oferă asta? Acum toate cererile pentru pagini web de la stațiile dvs. de lucru prin protocoalele http(((80) și https(443) vor fi redirecționate către portul pe care îl ascultă squid. Primiți filtrare de conținut, informații despre cine a fost unde și ce a făcut pe internet, utilizatorul, fără a bănui nimic , functioneaza ca inainte...
putina siguranta
Ar trebui să vă protejați cel puțin puțin gateway-ul, așa că să mai adăugăm câteva reguli
$ iptables -A INTRARE -i lo -j ACCEPT
$ iptables -A INPUT -i eth0 -s 192.168.0.0/24 -j ACCEPT
$ iptables -A INPUT -i eth1 -m conntrack --ctstate RELATED,STABLISHED -j ACCEPT
$ iptables -P INPUT DROP

Astfel, orice comunicare directă cu gateway-ul a fost interzisă, cu excepția celor deja legături stabilite, adică cele care au fost inițiate de tine și pur și simplu primești răspunsuri la ele. Nu vă fie teamă, DNAT-ul nostru pur și simplu nu atinge aceste reguli...
de ce asa putin?
Articolul nu este cauciuc și încă nu poți spune despre tot... Am adus minim un set de acțiuni și concepte, astfel încât să puteți începe să stăpâniți un astfel de colos ca o poartă pe Linux. Aici puteți vorbi foarte, foarte mult timp, discutând multe aspecte și capacități ale netfilterului.

Total

După cum vedem, totul este cu adevărat simplu! Principalul lucru este să înțelegeți principiul de funcționare al rețelei și să nu vă fie teamă să configurați și să citiți manuale mari.
Sper că am reușit să adun suficiente informații pentru a începe prietenia ta cu routerele software bazate pe Linux.

Etichete: iptables, netfilter, NAT

În acest articol vă vom spune cum să configurați iptables pe Linux. Veți afla ce este și de ce trebuie să configurați această funcție. Configurarea iptables pe Linux este destul de simplu.

Configurarea iptables pe Linux: Ce este iptables?

Iptables este un utilitar de firewall de linie de comandă care utilizează politica înlănțuită pentru a permite sau bloca traficul. Când o conexiune încearcă să se stabilească pe sistemul dvs., iptables caută în lista sa o regulă care să se potrivească cu ea. Dacă nu îl găsește, recurge la acțiunea implicită.

Iptables vine aproape întotdeauna cu versiune preinstalată pe oricare distribuție Linux. Pentru a-l actualiza/instala, pur și simplu descărcați pachetul iptables:

sudo apt-get install iptables

Există alternative GUI la iptables, cum ar fi Firestarter, dar iptables nu este atât de complicat dacă rulați doar câteva comenzi. Fiți extrem de atenți când configurați regulile iptables, mai ales dacă utilizați SSH pe server, deoarece o comandă greșită vă poate bloca pentru o lungă perioadă de timp până când este trimisă manual pe mașina fizică.

Configurarea iptables pe Linux pentru manechini

Apropo, despre asta am mai vorbit deja. Poate că acest lucru va fi interesant și pentru tine. Link-ul poate fi găsit mai sus.

Configurarea iptables pe Linux, așa cum am spus mai sus, este destul de simplă. Dar înainte de a începe configurarea, trebuie să vă familiarizați cu concepte generale opțiuni.

Tipuri de circuite

Iptables folosește trei circuite diferite: intrare, direct și ieșire.

Intrare- Acest lanț este folosit pentru a controla comportamentul conexiunilor de intrare. De exemplu, dacă un utilizator încearcă să facă SSH în computerul/serverul dvs., iptables va încerca să potrivească adresa IP și portul cu o regulă din lanțul de intrare.

Redirecţiona- Acest lanț este utilizat pentru conexiunile de intrare care nu sunt efectiv livrate local. Gândiți-vă la un router - datele sunt întotdeauna trimise către acesta, dar rareori sunt destinate ruterului în sine; Datele sunt pur și simplu redirecționate către pagina de destinație. Dacă nu faci rutare, NAT sau orice altceva pe sistemul tău care necesită redirecționare, nici măcar nu vei folosi acest lanț.

Există unul mod de încredere verificați dacă sistemul dvs. folosește sau are nevoie de un lanț înainte.

Această captură de ecran este a unui server care rulează de câteva săptămâni și nu are restricții privind conexiunile de intrare sau de ieșire. După cum puteți vedea, lanțul de intrare a procesat 11 GB de pachete, iar lanțul de ieșire a procesat 17 GB. Pe de altă parte, înlănțuirea înainte nu trebuie să proceseze un singur pachet. Acest lucru se datorează faptului că serverul nu efectuează nicio redirecționare sau nu este utilizat ca dispozitiv end-to-end.

Ieșire - Acest lanț este utilizat pentru conexiunile de ieșire. De exemplu, dacă încercați să faceți ping pe site-ul linuxinsider, iptables va verifica lanțul său de ieșire pentru a vedea ce reguli se aplică pentru ping și linuxinsider înainte de a decide dacă să permită sau să respingă încercarea de conectare.

Avertizare

Chiar dacă verificarea gazdei externe arată ca ceva care ar trebui să treacă doar prin lanțul de ieșire, rețineți că lanțul de intrare va fi folosit și pentru a returna date. Când utilizați iptables pentru a vă bloca sistemul, amintiți-vă că multe protocoale necesită comunicare bidirecțională, astfel încât atât lanțurile de intrare, cât și de ieșire trebuie configurate corect. SSH este un protocol comun pe care oamenii uită să îl activeze pe ambele lanțuri.

Comportamentul implicit al politicii

Înainte de a începe configurarea unor reguli specifice, trebuie să decideți care doriți să fie comportamentul implicit al acestor trei lanțuri. Cu alte cuvinte, ce vrei să facă iptables dacă conexiunea nu se potrivește cu nicio regulă existentă?

Pentru a vedea ce lanțuri de politici sunt configurate pentru a gestiona traficul nepotrivit, rulați comanda iptables -L.

După cum puteți vedea, am folosit și comanda grep pentru a obține un rezultat mai curat. În această captură de ecran, lanțurile noastre sunt configurate în prezent să accepte trafic.

De multe ori, doriți ca sistemul dvs. să accepte conexiuni în mod implicit. Dacă nu ați modificat anterior regulile lanțului de politici, această setare ar trebui să fie deja configurată. În orice caz, iată comanda pentru a accepta conexiunile implicite:

iptables --policy INPUT ACCEPT
iptables --policy OUTPUT ACCEPT
iptables --policy FORWARD ACCEPT

În mod implicit, într-o regulă de acceptare, puteți folosi iptables pentru a respinge anumite adrese IP sau numere de port, continuând să acceptați toate celelalte conexiuni. Vom ajunge la acele comenzi într-un minut.

Dacă preferați să refuzați toate conexiunile și să specificați manual cărora doriți să le permiteți să se conecteze, trebuie să modificați politica implicită a circuitelor dvs. pentru a le refuza. Acest lucru va fi probabil util doar pentru serverele care conțin informații confidențialeși vor fi conectați la ei numai prin aceleași adrese IP.

iptables --policy INPUT DROP
iptables --policy OUTPUT DROP
iptables --policy FORWARD DROP

Răspunsuri de conectare

Cu politicile implicite de înlănțuire configurate, puteți începe să adăugați reguli la iptables, astfel încât să știe ce să facă atunci când întâlnește o conexiune la o anumită adresă IP sau port. În acest ghid, ne vom uita la trei dintre cele mai comune și frecvent utilizate „răspunsuri”.

Accepta— permite conectarea.

Picătură- Renunțați la conexiune, procedați ca și cum nu s-ar fi întâmplat niciodată. Acest lucru este cel mai bine dacă nu doriți ca sursa să realizeze că sistemul dvs. există.

Respinge— refuza conexiunea, dar trimite un mesaj de eroare. Acest lucru este cel mai bine dacă nu doriți ca o anumită sursă să se conecteze la sistemul dvs., dar doriți ca ei să știe că firewall-ul le-a blocat.

Cel mai bun mod de a arăta diferența dintre aceste trei reguli este să arăți cum arată atunci când un computer încearcă să facă ping mașină Linux cu iptables configurat pentru fiecare dintre aceste opțiuni.

Permisiune de conectare:

Eliminarea unei conexiuni:

Respingerea conexiunii:

O mască de rețea sau o caracteristică pentru a indica o serie de adrese IP.

Configurarea iptables pe Linux: metode de conectare

Dacă vorbim despre subiectul „Configurarea iptables pe Linux”, atunci trebuie să vorbim despre metodele de conectare.

Permiteți sau blocați anumite conexiuni
Cu politicile configurate, puteți configura iptables să permită sau să blocheze anumite adrese, intervale de adrese și porturi. În aceste exemple, vom seta conexiunile la DROP, dar le puteți comuta la ACCEPT sau REJECT, în funcție de nevoile dvs. și de modul în care v-ați configurat lanțurile de politici.

Nota. În aceste exemple vom folosi iptables -A pentru a adăuga reguli la un lanț existent. Iptables începe din partea de sus a listei și parcurge fiecare regulă până când găsește una care se potrivește cu ea. Dacă trebuie să inserați o regulă peste alta, puteți utiliza iptables -I pentru a specifica numărul care ar trebui să fie în listă.

Conexiuni de la aceeași adresă IP

Acest exemplu arată cum să blocați toate conexiunile de la adresa IP 10.10.10.10..

iptables -A INPUT -s 10.10.10.10 -j DROP

Conexiuni de la o serie de adrese IP

Acest exemplu arată cum să blocați toate adresele IP din intervalul de rețea 10.10.10.0/24. Puteți utiliza o mască de rețea sau o bară oblică standard pentru a specifica o serie de adrese IP.

iptables -A INPUT -s 10.10.10.0/24 -j DROP

iptables -A INPUT -s 10.10.10.0/255.255.255.0 -j DROP

Conexiuni la un anumit port

Acest exemplu arată cum să blocați conexiunile SSH din 10.10.10.10.

iptables -A INPUT -p tcp --dport ssh -s 10.10.10.10 -j DROP

Puteți înlocui „ssh” cu orice protocol sau număr de port. Partea -p tcp a codului spune iptables ce protocol folosește conexiunea. Dacă ați blocat un protocol care utilizează UDP mai degrabă decât TCP, atunci va fi necesar -p udp.

Acest exemplu arată cum să blocați conexiunile SSH de la orice adresă IP.

iptables -A INPUT -p tcp --dport ssh -j DROP

Stări de conexiune

După cum am menționat mai devreme, multe protocoale necesită comunicare în două sensuri. De exemplu, dacă doriți să permiteți conexiuni SSH la sistemul dvs., circuitele de intrare și ieșire vor avea nevoie de o regulă adăugată la ele. Dar, ce se întâmplă dacă doriți ca conectarea SSH în sistemul dvs. să fie permisă? Adăugarea unei reguli la lanțul de ieșire nu va duce și la încercări SSH de ieșire?

Aici intervin stările de conexiune, care vă oferă opțiunea de a permite comunicația bidirecțională, dar permit doar realizarea conexiunilor unidirecționale. Aruncă o privire la acest exemplu în care conexiunile SSH DE LA 10.10.10.10 sunt permise, dar conexiunile SSH LA 10.10.10.10 nu sunt. Cu toate acestea, sistemului i se permite să trimită înapoi informații prin SSH în timp ce sesiunea este deja stabilită, făcând posibilă comunicarea SSH între cele două gazde.

iptables -A INPUT -p tcp --dport ssh -s 10.10.10.10 -m stat --stat NOU,INSTABILIT -j ACCEPT

iptables -A IEȘIRE -p tcp --sport 22 -d 10.10.10.10 -m stat --state ESTABLISHED -j ACCEPT

Salvarea modificărilor

Modificările pe care le faceți regulilor iptables vor fi eliminate data viitoare când serviciul iptables este repornit, cu excepția cazului în care lansați o comandă pentru a salva modificările. Această comandă poate varia în funcție de distribuția dvs.:

sudo /sbin/iptables-save

Red Hat/CentOS:

/sbin/service iptables salvează

/etc/init.d/iptables salvează

Alte comenzi

Lista regulilor iptables configurate în prezent:

Adăugarea opțiunii -v vă va oferi informații despre pachete și octeți, iar adăugarea -n va conține totul valori numerice. Cu alte cuvinte, numele de gazdă, protocoalele și rețelele sunt listate ca numere.

Pentru a șterge toate regulile configurate în prezent, puteți rula comanda de golire.

Traducere dintr-o resursă excelentă în limba engleză HowToGeek.

Dacă mai aveți întrebări cu privire la subiectul „Configurarea iptables pe Linux pentru manechine”, le puteți scrie în formularul de comentarii de pe site-ul nostru.

Dacă găsiți o eroare, evidențiați o bucată de text și faceți clic Ctrl+Enter.