Cum se configurează smartphone-uri și PC-uri. Portal informativ
  • Acasă
  • știri
  • Configurarea netfilter folosind iptables. Un set minim de reguli Iptables pentru sarcini tipice

Configurarea netfilter folosind iptables. Un set minim de reguli Iptables pentru sarcini tipice

Sarcina principală firewall(firewall) filtrarea și procesarea pachetelor care trec prin rețea. Când se analizează un pachet de intrare, firewall-ul decide soarta acestui pachet: aruncați pachetul ( CĂDERE BRUSCA), acceptați pachetul ( ACCEPT) sau faceți altceva cu el.

V Linux firewall-ul este un modul kernel numit netfilter și este un set de cârlige pentru lucrul cu stiva de rețea. Interfața pentru modificarea regulilor prin care firewall-ul procesează pachetele este utilitarul iptables pentru IPv4 și utilitate ip6tables pentru IPv6.

Toate lucrările de filtrare a traficului sunt efectuate de nucleul sistemului. Iptables nu este un demon și nu creează procese noi în sistem. Porniți sau opriți iptables este doar trimite un semnal către nucleu. Viteza mare de filtrare se realizează prin analizarea numai a antetelor pachetelor.

La principalele caracteristici iptables raporta:

  • filtrarea traficului pe baza adreselor expeditorului și destinatarului pachetelor, numere de port;
  • redirecționarea pachetelor în funcție de anumiți parametri;
  • organizarea accesului la rețea (SNAT);
  • port forwarding de la rețeaua globală la rețeaua locală (DNAT);
  • limitarea numărului de conexiuni;
  • stabilirea cotelor de trafic;
  • executarea regulilor conform programului;

Să luăm în considerare procesul principal de lucru iptables(sursa imaginii rigacci.org).

Pachetul primit ajunge mai întâi la dispozitivul de rețea, după care este interceptat de driver și transmis către kernel. După aceea, pachetul este trecut printr-un număr de tabele și abia apoi este transmis către aplicația locală sau redirecționat către alt sistem, dacă este un pachet de tranzit.

V iptables se folosesc trei tipuri de tabele:

  1. calandru- folosit pentru a face modificări la antetul pachetului;
  2. nat- folosit pentru traducerea adreselor de rețea;
  3. filtru- pentru a filtra traficul;

Masa Mangle

Scopul principal al tabelului calandru- efectuarea de modificări la antetul pachetului. În acest tabel, pot fi efectuate următoarele acțiuni:

  • setarea bitului tip de serviciu;
  • setarea câmpului Time To Live;
  • stabilirea unei etichete pe un pachet care poate fi verificată în alte reguli;

Lanțuri în masă calandru:

  • PRERUUTARE- folosit pentru a face modificări la pachetele de la intrarea în iptables, înainte de a decide despre rutare;
  • POSTRUTARE- folosit pentru a face modificări la pachete la ieșirea din iptables, după ce a decis rutarea;
  • INTRARE- este folosit pentru a face modificări la pachete înainte ca acestea să fie transferate în aplicația locală;
  • IEȘIRE- folosit pentru modificarea pachetelor provenite din aplicație în interiorul iptables;
  • REDIRECŢIONA- folosit pentru a face modificări la pachetele de tranzit;

Masa Nat

Tabelul este utilizat pentru traducerea adresei de rețea și atunci când se întâlnește un pachet pentru a stabili o nouă conexiune. În acest tabel, pot fi efectuate următoarele acțiuni:

  • DNAT (Traducerea adresei rețelei de destinație)- conversia adresei de destinație în antetul pachetului;
  • SNAT (Source Network Address Translation)- schimbarea adresei sursă a pachetului;
  • MASCARADĂ- folosit în aceleași scopuri ca și SNAT dar vă permite să lucrați cu adrese IP dinamice;

Lanțuri din acest tabel:

  • PRERUUTARE- este folosit pentru a face modificări la pachete la intrarea în iptables;
  • IEȘIRE- folosit pentru a traduce adrese în pachete înainte de rutarea ulterioară;
  • POSTRUTARE- folosit pentru a converti pachete înainte de a le trimite în rețea;

Tabel de filtrare

Tabelul este folosit pentru filtrarea pachetelor. Există trei lanțuri în acest tabel:

  1. INTRARE- lanț pentru pachetele primite;
  2. REDIRECŢIONA- lanț pentru pachetele redirecționate (de tranzit);
  3. IEȘIRE- lanț pentru pachete de ieșire;

Un pachet care trece prin aceste lanțuri poate fi supus unor acțiuni: ACCEPT, CĂDERE BRUSCA, RESPINGE, BUTURUGA.

Pentru a rezuma, pachetul care ajunge trece prin lanțul de reguli. Fiecare regulă conține condițieși scop(acțiune). Dacă pachetul îndeplinește condiția, atunci este trimis către țintă, în caz contrar, următoarea regulă din lanț este aplicată pachetului. Dacă pachetul nu îndeplinește niciuna dintre condițiile din lanț, atunci i se aplică acțiunea implicită.

Lanţ masa
filtru nat calandru
INTRARE + +
REDIRECŢIONA + +
IEȘIRE + + +
PRERUUTARE + +
POSTRUTARE + +

Utilitar Iptables

Instalarea iptables

# pentru Arch Linux yaourt -S iptables # Pentru Ubuntu sudo apt-get install iptables

Rularea iptables

# sub Arch Linux sudo systemctl enable iptables sudo systemctl start iptables # Sub Ubuntu sudo service iptables start

Reguli de salvare

# pentru Arch Linux sudo sh -c "iptables-save> /etc/iptables/iptables.rules" # pentru Ubuntu sudo sh -c "iptables-save> /etc/iptables.rules"

Restaurarea regulilor dintr-un fișier

Iptables-restaurare< firewall-config

Fiecare regulă în iptables este o linie separată formată după anumite reguli și care conține criterii și acțiuni. În termeni generali, regula are următorul format:

Comanda Iptables [-t table].

  • t table - specifică numele tabelului pentru care va fi creată regula;
  • comandă - o comandă care definește o acțiune iptables- adăugați o regulă, ștergeți o regulă etc.;
  • potrivire - stabilește criteriile de testare prin care se stabilește dacă un pachet este supus regulii sau nu;
  • țintă / săritură - ce acțiune trebuie efectuată atunci când criteriul este îndeplinit;

Comenzi Iptables:

  • -A - adăugați o regulă la lanț, regula va fi adăugată la capătul lanțului;
  • -D - scoateți rigula din lanț;
  • -R - înlocuiește o regulă cu alta;
  • -I - introduceți o nouă regulă în lanț;
  • -L - afișează lista de reguli din lanțul specificat;
  • -F - șterge toate regulile din lanțul specificat;
  • -Z - resetează toate contoarele din lanțul specificat;
  • -N - creează un lanț nou cu numele specificat;
  • -X - șterge lanțul;
  • -P - setează politica implicită pentru lanț;
  • -E - redenumiți lanțul de utilizatori;

Exemple de comenzi Iptables

Pachetele pot fi filtrate după următorii parametri:

Sursa pachetului

Opțiunea -s este folosită pentru a filtra după sursă. De exemplu, vom refuza toate pachetele primite de la gazda 192.168.1.95:

Iptables -A INPUT -s 192.168.1.95 -j DROP

Puteți utiliza un nume de domeniu pentru a specifica adresa gazdei:

Iptables -A INPUT -s test.host.net -j DROP

De asemenea, puteți specifica întregul pentru rețea:

Iptables -A INPUT -s 192.168.1.0/24 -j DROP

Puteți folosi și negația (semnul!). De exemplu, toate pachetele de la gazde altele decât 192.168.1.96 vor fi șterse:

Iptables -O INTRARE! -s 192.168.1.96 -j DROP

Permite traficului să circule pe localhost:

Iptables -A INTRARE 1 -i lo -j ACCEPT

Înregistrarea încercărilor de falsificare cu prefixul „IP_SPOOF A:” și întreruperea conexiunii

Iptables -A INPUT -i eth1 -s 10.0.0.0/8 -j LOG --log-prefix „IP_SPOOF A:” iptables -A INPUT -i eth1 -s 10.0.0.0/8 -j DROP

Adresa de destinatie

Pentru a face acest lucru, trebuie să utilizați opțiunea -d. De exemplu, vom refuza toate pachetele de ieșire către gazda 192.168.1.95:

Iptables -A OUTPUT -d 192.168.156.156 -j DROP

Interziceți accesul la resursă

Iptables -A OUTPUT -d vk.com -j REJECT

Ca și în cazul sursei pachetului, puteți utiliza adrese pentru rețele și nume de domenii. Negarea funcționează și.

Protocol

Opțiunea -p indică protocolul. Poate fi utilizat toate, icmp, tcp, udp sau numărul de protocol (de la / etc / protocoale).

Permiteți solicitările de ecou primite

Iptables -A INPUT -p icmp --icmp-type echo-request -j ACCEPT

Port sursă

Permiteți toate pachetele de ieșire din portul 80:

Iptables -A INPUT -p tcp --sport 80 -j ACCEPT

Blocați toate solicitările primite pe portul 80:

Iptables -A INPUT -p tcp --dport 80 -j DROP

Pentru a specifica portul, trebuie să specificați protocolul (tcp sau udp). Negația poate fi folosită.

Deschideți intervalul de porturi

Iptables -A INPUT -m stare --state NOU -m tcp -p tcp --dport 7000: 7010 -j ACCEPT

Portul de destinație

Permite conexiuni HTTP

Iptables -A INPUT -p tcp --dport 80 -j ACCEPT iptables -A INPUT -p tcp -i eth0 --dport 22 -j ACCEPT

Permiterea primirii datelor de la serverul DHCP

Iptables -A INPUT -p UDP --dport 68 --sport 67 -j ACCEPT

  • la distanta exploatarea erorilor software pentru a-l face inoperant;
  • Potop- trimiterea unui număr mare de pachete fără sens la adresa victimei. Ținta inundației poate fi un canal de comunicare sau resurse ale mașinii. În primul caz, fluxul de pachete ocupă întreaga lățime de bandă și nu oferă mașinii atacate capacitatea de a procesa cereri legitime. În al doilea, resursele mașinii sunt captate folosind apeluri multiple și foarte frecvente către orice serviciu care efectuează o operațiune complexă, care necesită mult resurse. Acesta poate fi, de exemplu, un apel lung la una dintre componentele active (script) ale serverului web. Serverul cheltuiește toate resursele mașinii pentru a procesa cererile atacatorului, iar utilizatorii trebuie să aștepte. Flood poate fi diferit: ICMP flood, SYN flood, UDP flood și HTTP flood

Colectarea de informații despre conexiunile la rețea

Vedeți conexiunile deschise

Netstat -ntu | awk „(tipărește 5 $)” | tăiat -d: -f1 | sortare | uniq -c | sortare -n

Numărul de conexiuni la portul 80

Netstat -na | grep ": 80 \" | wc -l

Dump conexiune TCP (la care domeniu merg cel mai des cererile)

Domeniul portului Tcpdump -npi eth0

Inundațiile SYN pot fi verificate prin numărarea numărului de conexiuni TCP pe jumătate deschise

Netstat -na | grep ": 80" | grep SYN_RCVD

Protecție împotriva diferitelor tipuri de inundații.

Inundație ICMP. O metodă foarte primitivă de a înfunda lățimea de bandă și de a crea încărcări pe stiva de rețea prin trimiterea monotonă a solicitărilor ICMP ECHO (ping). Este ușor de detectat analizând fluxul de trafic în ambele sensuri: în timpul unui atac de inundații ICMP, acestea sunt aproape identice. O modalitate aproape nedureroasă de protecție absolută se bazează pe dezactivarea răspunsurilor la solicitările ICMP ECHO:

Sysctl net.ipv4.icmp_echo_ignore_all = 1

Sau folosind iptabels:

Iptables -A INPUT -p icmp -j DROP --icmp-type 8

SYN inundație. Una dintre modalitățile comune nu numai de a înfunda canalul de comunicație, ci și de a pune stiva de rețea a sistemului de operare într-o stare în care nu mai poate accepta noi cereri de conectare. Bazat pe o încercare de a inițializa un număr mare de conexiuni TCP concurente prin trimiterea unui pachet SYN cu o adresă de retur inexistentă. După mai multe încercări de a trimite un pachet de răspuns ACK la o adresă inaccesibilă, majoritatea sistemelor de operare vor pune în coadă conexiunea nestabilită. Și numai după a n-a încercare conexiunea este închisă. Deoarece fluxul de pachete ACK este foarte mare, în curând coada este plină și nucleul refuză să încerce să deschidă o nouă conexiune. Cei mai inteligenți roboți DoS analizează, de asemenea, sistemul înainte de a începe un atac pentru a trimite cereri doar pentru a deschide porturi vitale. Este ușor să identifici un astfel de atac: încearcă doar să te conectezi la unul dintre servicii.

IPTables este un utilitar folosit pentru a gestiona firewall-uri în Linux. Este un instrument puternic și la îndemână pentru conexiunile nedorite. Întregul proces este înglobat în reguli iptables, care pot fi editate și vizualizate. Pentru mai multe informații, consultați articolul.

Istoria creației

Inainte de IPTables pe Linux a folosit firewall-ul IPFW, împrumutat de la BSD. Apoi, cu nucleul Linux 2.4, a venit cu firewall-ul Netfilter și utilitarul IPTables pentru a-l gestiona. În metodologia muncii ei, toate aspectele au fost păstrate și ușor extinse funcțional.

Structura și structura IPTables

Când un pachet intră în firewall, trece prin mai multe verificări. Poate fi o sumă de control sau orice altă analiză la nivel de kernel. Apoi este rândul de a trece prin lanțul PREROUTING. În continuare, se verifică în funcție de care are loc redirecționarea către următorul lanț. Dacă pachetul nu are o adresă, ca, de exemplu, în TCP, atunci este direcționat către lanțul FORWARD. În cazurile în care există o anumită adresă, urmează lanțul INPUT și apoi demonii sau serviciile pentru care este destinat. Răspunsul de la ei trebuie să treacă și prin mai multe lanțuri, de exemplu OUTPUT. Veriga finală în acest proces este lanțul POSTROUTING.

Acum puțin despre lanțuri. Fiecare dintre ele conține mai multe tabele. Numele lor pot fi repetate, dar acest lucru nu afectează în niciun fel munca, deoarece nu sunt interconectate.

Tabelele, la rândul lor, conțin mai multe reguli. De fapt, o regulă este o anumită condiție care trebuie îndeplinită de pachetul care se verifică. În funcție de rezultat, se efectuează o anumită acțiune asupra pachetului.

Astfel, parcurgând toate etapele rețelei, pachetul vizitează secvențial toate lanțurile și în fiecare este verificată respectarea condiției unei anumite reguli. Dacă tabelul nu este generat de utilizator, atunci acțiunea implicită este efectuată, practic, este ACCEPT, care vă permite să continuați deplasarea mai departe, sau DROP, care oprește pachetul.

Lanțurile prestabilite vin în următoarele categorii:

  • PRERUUTARE... Procesarea inițială a tuturor pachetelor primite.
  • INTRARE... Aceasta include acele pachete care sunt trimise direct la computerul local.
  • REDIRECŢIONA... Folosit pentru „pachetele de tranzit” care urmează tabelul de rutare.
  • IEȘIRE... Folosit pentru pachetele de ieșire.
  • POSTRUTARE... Ultima etapă în trecerea tuturor lanțurilor de către pachetul de ieșire.

Pe lângă lanțurile încorporate, utilizatorii își pot crea sau șterge propriile lor.

Vizualizarea și gestionarea regulilor IPTables

După cum am menționat mai devreme, toate lanțurile conțin anumite condiții pentru pachete. Utilitarul IPTables este folosit pentru a vizualiza și gestiona regulile IPTables. Fiecare regulă individuală este o linie cu un set de condiții pentru pachete, precum și acțiuni asupra acestora, în funcție de rezultat.

Formatul comenzii arată astfel: iptables [-t numele tabelului procesat] numită comandă [criterii] [acțiune care trebuie efectuată].

Orice conținut în poate fi omis. Dacă acesta este un parametru care specifică un tabel, atunci filtrul va fi utilizat. Pentru a utiliza un nume specific, trebuie să adăugați comutatorul -t. Comanda invocată vă permite să invocați acțiunea necesară, de exemplu, adăugați sau eliminați o regulă IPTables. „Criteriile” specifică parametrii după care va avea loc selecția. Iar în „acțiune” se aplică acțiunea, care trebuie efectuată dacă condiția este îndeplinită.

Comenzi pentru crearea și vizualizarea regulilor IPTables

  • Adăugați (-A). Când utilizați comanda, specificați lanțul și tabelul la care doriți să adăugați regula necesară. Valoarea echipei este că o face în partea de jos a întregii liste.
  • Șterge (-D). După cum sugerează și numele, elimină regula. Ca parametri, puteți specifica atât numele complet, cât și numerele alocate acestora.
  • Redenumiți lanțul (-E). Schimbă numele lanțului. Comanda specifică numele vechi, apoi numele nou.
  • Flush (-F).Ștergeți absolut toate regulile unui anumit tabel.
  • Inserați (-I). Această comandă introduce regula necesară în locul indicat de număr.
  • Lista (- L). Vizualizarea regulilor iptables. Dacă nu este specificat niciun tabel, atunci va fi folosit filtrul implicit.
  • Politică (-P). Este utilizată politica implicită pentru lanțul specificat.
  • Înlocuiți (-R). Schimbă regula sub numărul specificat cu cea necesară.
  • Șterge-lanț (-X). Această comandă șterge toate lanțurile create. Vor rămâne doar cele preinstalate.
  • Zero (-Z). Va reseta contoarele datelor transmise în lanțul specificat.

Câteva despre parametrii de selecție a pachetului

Ele pot fi împărțite aproximativ în trei tipuri:

  • Criterii generale... Ele pot fi specificate pentru orice reguli. Nu necesită conectarea unor extensii și module speciale și, de asemenea, nu depind de ce protocol va fi utilizat.
  • Nu sunt criterii generale. Ele sunt puse la dispoziție folosind criterii generale.
  • Explicit. Pentru a utiliza acest tip, trebuie să conectați pluginuri speciale pentru netfilter. În plus, comanda trebuie să folosească comutatorul -m.

Merită să vorbim puțin despre parametrii frecvent întâlniți folosiți în analiza pachetelor:

  • Protocol (-p). Indică protocolul.
  • Sursa (-s). Acest parametru definește adresa IP a sursei din care provine pachetul. Poate fi specificat în mai multe moduri. O anumită gazdă, adresă sau o întreagă subrețea.
  • Destinație (-d). Adresa de destinație a pachetului. De asemenea, ca și precedentul, poate fi descris în mai multe moduri.
  • În interfață (-i). Specifică interfața de intrare a pachetului. Utilizat mai ales pentru NAT sau pe sisteme cu interfețe multiple.
  • Interfață în afara (-o). Interfață de ieșire.

Câteva exemple

Pentru a vedea regulile IPTables nat? trebuie să utilizați comanda - "iptables -L -t nat". Verificați starea generală a paravanului de protecție - „iptables -L -n -v”. În plus, această comandă vă permite să vedeți regulile IPTables care sunt disponibile în întregul sistem. Introduceți o regulă într-un anumit loc din tabel, de exemplu, între prima și a doua linie - „iptables -I INPUT 2 -s 202.54.1.2 -j DROP”. Apoi vedeți dacă a fost adăugat - "iptables -L INPUT -n --line-numbers".

Pentru a bloca o anumită adresă, de exemplu 12.12.12.12 - „iptables -A INPUT -s 12.12.12.12 -j DROP”.

Referință Iptables - „man iptables”. Dacă aveți nevoie de informații despre o anumită comandă - „iptables -j DROP -h”.

In cele din urma

Utilizați comenzile IPTables cu prudență, deoarece configurarea incorectă (fără să știți) poate duce la defecțiuni ale rețelei sau la defecțiuni complete. Prin urmare, merită să studiați manualele și instrucțiunile în detaliu înainte de configurare. În mâinile potrivite, IPTables poate fi transformat într-un protector de încredere al conexiunilor de rețea. Administratorii de sistem folosesc în mod activ utilitarul pentru a crea conexiuni izolate de accesul neautorizat.

Principiul de setare

Sintaxa generală pentru utilizarea iptables este:

iptables -t<таблица> <команда> <цепочка>[cameră]<условие> <действие>

<таблица>

Regulile Netfilter sunt distribuite pe 4 tabele, fiecare având propriul său scop (mai multe detalii mai jos). Este specificat cu tasta -t, dar dacă acest parametru nu este specificat, acțiunea va fi efectuată pentru tabelul implicit - filtru.

<команда>

Comenzile indică ce fel de acțiune facem pe netfilter, de exemplu, creați sau ștergeți o regulă.

<цепочка>

Fiecare tabel are lanțuri, pentru fiecare dintre acestea fiind create regulile în sine. De exemplu, pentru tabelul de filtrare de mai sus, există trei lanțuri predefinite - INPUT (pachete de intrare), OUTPUT (ieșire) și FORWARD (tranzit).

[cameră]

Unele comenzi necesită specificarea unui număr de regulă, de exemplu, pentru ștergere sau editare.

<условие>

O condiție descrie criteriile pentru procesarea unei anumite reguli.

<действие>

Ei bine, de fapt, ce facem cu pachetul dacă se încadrează în criteriile condiției.

* Pentru a fi corect, merită remarcat faptul că tasta de acțiune nu trebuie să ajungă la sfârșit. Doar că acest format se găsește cel mai des în instrucțiuni și facilitează citirea regulilor.

Chei Iptables și exemple de utilizare a acestora

Pentru lucrul cu tabele (iptables -t)

Ca o reamintire, toate regulile din netfilter sunt răspândite pe tabele. Pentru a lucra cu un anumit tabel, trebuie să utilizați comutatorul -t.

Comenzi

Următoarele chei determină ce face utilitarul iptables.

Cheie Descriere și exemple
-A Adăugarea unei reguli la sfârșitul listei:
iptables -A INPUT -s 192.168.0.15 -j DROP
refuza venitul din 192.168.0.15.
-D Eliminarea unei reguli:
iptables -D INTRARE 10
ștergeți regula din lanțul INPUT numerotat 10.
-Eu Inserarea unei reguli într-o anumită parte a listei:
iptables -I INPUT 5 -s 192.168.0.15 -j DROP
introduceți regula a 5-a pe listă.
-R Înlocuirea regulii.
iptables -R IEȘIRE 5 -s 192.168.0.15 -j ACCEPT
înlocuiți a 5-a regulă de la interzicere la permisivă.
-F Curățarea regulilor din lanț.
iptables -F INPUT
-Z Resetarea statisticilor.
iptables -Z INPUT
-N Crearea lanțului.
iptables -N CHAINNEW
-X Ștergerea unui lanț.
iptables -X CHAINNEW
-P Definirea unei reguli implicite.
iptables -P INPUT DROP
-E Redenumiți lanțul.
iptables -E CHAINNEW CHAINOLD

Condiții

Aceste chei definesc condițiile regulii.

Cheie Descriere și exemple
-p Protocol de rețea. Opțiunile valide sunt TCP, UDP, ICMP sau ALL.
iptables -A INTRARE -p tcp -j ACCEPT
permiteți toate conexiunile TCP de intrare.
-s Adresă sursă - nume de gazdă, adresă IP sau subrețea în notație CIDR.
iptables -A INPUT -s 192.168.0.50 -j DROP
refuza intrarea de la gazda 192.168.0.50
-d Adresa de destinatie. Principiul de utilizare este similar cu comutatorul -s anterior.
iptables -A OUTPUT -d 192.168.0.50 -j DROP
refuza trimiterea către gazdă 192.168.0.50
-i Adaptorul de rețea prin care sunt primite pachetele (INPUT).
iptables -A INPUT -i eth2 -j DROP
refuză intrarea pentru interfața ethernet eth2.
-o Adaptor de rețea de la care pleacă pachetele (OUTPUT).
iptables -A IEȘIRE -o eth3 -j ACCEPT
permite ieșirea de la interfața ethernet eth3.
--dport Portul de destinație.
iptables -A INTRARE -p tcp --dport 80 -j ACCEPT
permite intrarea pe portul 80.
--sportul Port sursă.
iptables -A INPUT -p tcp --sport 1023 -j DROP
refuza intrarea din portul 1023.

Cheile enumerate susțin și construcția folosind semnul ! ... Acesta inversează starea, de exemplu
iptables -A INPUT -s! 192.168.0.50 -j DROP
va refuza conexiunea la toate gazdele, cu excepția 192.168.0.50.

Acțiuni

Acțiuni care trebuie efectuate pe un pachet care corespunde criteriilor condiției. Fiecare tabel are propriul său set de acțiuni valide. Specificat folosind o cheie -j.

masa Acțiune Descriere
filtru ACCEPT Rezolvă pachetul.
CĂDERE BRUSCA Respinge pachetul.
RESPINGE Împiedică trimiterea mesajului către sursă.
nat MASCARADĂ Pentru pachetele de ieșire, înlocuiește adresa IP sursă cu adresa interfeței din care pleacă pachetul.
SNAT Similar cu MASQUERADE, dar specificând o interfață de rețea specifică, a cărei adresă va fi folosită pentru falsificare.
DNAT Falsificarea adreselor pentru pachetele primite.
REDIRECŢIONA Redirecționează cererea către un alt port pe același sistem.
calandru TOS Modificarea câmpului TOS (prioritizarea traficului).
DSCP Modificare DSCP (de asemenea, prioritizarea traficului).
TTL Modificați TTL (durata de viață a pachetului).
HL Similar cu TTL, dar pentru IPv6.
MARCĂ Marcarea pachetului. Folosit pentru filtrarea sau modelarea ulterioară.
CONNMARK Marcarea conexiunii.
TCPMSS Modificarea valorii MTU.

Exemple de comenzi iptables utilizate în mod obișnuit

Comenzi comune

Vedeți regulile cu numerele lor:

iptables -L --line-numbers

Pentru fiecare tabel, trebuie să vă uitați la regulile separat:

iptables -t nat -L --line-numbers

Eliminați toate regulile:

Setați regulile implicite:

iptables -P INPUT DROP

iptables -P OUTPUT DROP

* în aceste exemple, implicit, pentru toate pachetele de intrare (INPUT) și de ieșire (OUTPUT), regula de refuzare (DROP) va funcționa.

Permite Toate

Metoda 1. Prin adăugarea unei reguli:

iptables -I INTRARE 1 -j ACCEPT

iptables -I IEȘIRE 1 -j ACCEPT

iptables -I FORWARD 1 -j ACCEPT

* aceste trei comenzi vor crea reguli care permit toate pachetele de intrare, de ieșire și de tranzit.

Metoda 2. Prin curățarea regulilor:

* aici eliminăm mai întâi toate regulile (-F), apoi setăm politica implicită - permiteți intrarea, ieșirea și tranzitul (-S).

Metoda 3. Dezactivarea serviciului (este convenabil să dezactivați firewall-ul pentru un timp pentru diagnosticarea problemelor):

serviciul iptables se opreste

Lucrul cu reguli

Adăugați o regulă la sfârșitul listei:

iptables -A INTRARE -p tcp --dport 25 -j ACCEPT

iptables -A INPUT -p tcp -s! 192.168.0.25 --dport 993 -i eth0 -j ACCEPT

Adăugați intervalul de porturi:

iptables -A INTRARE -p tcp --dport 3000: 4000 -j ACCEPT

* în acest caz, de la 3000 la 4000.

Inserați regula:

iptables -I FORWARD 15 -p udp -d 8.8.8.8 --dport 53 -i eth1 -j ACCEPT

Blocați o anumită adresă IP de la portul 25:

iptables -I INTRARE 1 -s 1.1.1.1 -p tcp --dport 25 -j DROP

Port forwarding

Există două moduri de configurare.

1. Reguli PRERUTARE + POSTRUTARE:

iptables -t nat -A PREROUTING -p tcp -m tcp -d 19.8.232.80 --dport 22 -j DNAT --to-destination 192.168.1.15:2222

iptables -t nat -A POSTROUTING -p tcp -m tcp -s 192.168.1.15 --sport 2222 -j SNAT --to-source 19.8.232.80:22

* Unde 19.8.232.80 - adresa la care ascultam cererile de conectare; 22 - port pentru expediere; 192.168.1.15 - adresa IP internă, către care transferăm toate solicitările; 2222 - port intern.

2. Reguli de PRE-RUTARE + FORWARD:

iptables -t nat -A PREROUTING -p tcp -i eth1 --dport 22 -j DNAT --to-destination 192.168.1.15:2222

iptables -A FORWARD -p tcp -d 192.168.1.15 --dport 22 -m stare --state NOU, STABILIT, RELATED -j ACCEPT

Iptables este în primul rând responsabil pentru filtrarea pachetelor. Configurarea manuală a iptables este o sarcină destul de descurajantă. Nu vă așteptați să vă dați seama de acest instantaneu. Din fericire, există multe instrumente care vă pot ajuta dacă încă nu v-ați dat seama de iptables și aveți nevoie urgent să securizați sistemul: fwbuilder, firestarter, guarddog, arno firewall - de fapt, aceasta este o interfață grafică pentru iptables. Răspunsul fără echivoc este că nu există mai bun. Depinde de tine să alegi. Cu toate acestea, articolul de astăzi este dedicat în mod special iptables și este împărțit în două părți: teorie și practică. Cei mai nerăbdători pot face partea practică imediat, deși această abordare nu este recomandată.

Atenţie! Toate acțiunile cu iptables sunt efectuate în numele utilizatorului privilegiat!

Teorie

Format de înregistrare iptables iptables [-t table] [comandă] [acțiune] Exemplu: iptables -t filter -A ACCEPT DE INTRARE

Acțiuni

  • ACCEPT - Accept pachet
  • DROP - Aruncă un pachet
  • DNAT - Convertiți adresa de destinație
  • SNAT - Schimbați adresa IP de ieșire în antetul pachetului
  • LOG - Jurnal pachete și evenimente
  • MARK - Pune un semn pe un pachet
  • MASQUERADE - Schimbați adresa IP de ieșire în antetul pachetului (spre deosebire de SNAT - lucrați cu IP dinamic)
  • QUEUE - Pune în coadă un pachet pentru procesare
  • REDIRECT - Redirecționează pachetul / fluxul către alt port
  • REJECT - Aruncă pachetul + anunță sistemul de la distanță despre asta. că pachetul ei a fost respins
  • RETURN - Opriți mișcarea pachetului de-a lungul lanțului curent și reveniți la lanțul de apelare

Comenzi

  • -A - Adăugați regula la lanț
  • -D - Scoateți rigula din lanț
  • -R - Înlocuiește o regulă cu alta
  • -I - Introdu o nouă regulă
  • -L - Enumeră regulile existente
  • -F - Resetează regulile
  • -Z - Punerea la zero a contoarelor din lanțul specificat
  • -N - Creează un lanț nou cu numele dat
  • -X - Șterge lanțul
  • -P - Setați politica implicită pentru lanțul selectat
  • -E - Redenumiți lanțul personalizat

Criterii (generale)

  • -p - Specificați tipul de protocol
  • -s este IP-ul sursă al pachetului
  • -d - adresa IP a destinatarului pachetului
  • -j - Specificați acțiunea pentru regulă
  • -i - Interfața de la care a fost primit pachetul
  • -o - Specificați numele interfeței de ieșire
  • -f - Extinde regula la toate fragmentele pachetului

Criterii TCP:

  • –Tcp-flags - Specificați masca de pachete și steaguri

Criterii UDP:

  • –Sport - Portul din care a fost trimis pachetul
  • –Dport - Portul către care este adresat pachetul

Mai multe în man iptables

Practică

Vizualizarea configurației curente

$ sudo iptables -L Chain INPUT (policy ACCEPT) target prot opt ​​​​sursă destinație Chain FORWARD (policy ACCEPT) target prot opt ​​​​source destination Chain OUTPUT (policy ACCEPT) target prot opt ​​​​source destination

Dacă vezi așa ceva, atunci firewall-ul tău nu este încă configurat și permite totul. Să reparăm situația.

Setarea politicii implicite

  • iptables -P INPUT DROP - blochează pachetele primite
  • iptables -P OUTPUT ACCEPT - permite pachetele de ieșire
  • iptables -P FORWARD DROP - procesează pachetele care au ajuns la server de la o altă mașină și așteaptă o redirecționare ulterioară. În exemplu, este blocat. În acest caz, va trebui să adăugați reguli pentru mașinile de încredere.

Deoarece pachetele INPUT primite sunt blocate, să scriem regula:

$ sudo iptables -A INPUT -m stare --state RELATED, ESTABLISHED -j ACCEPT

Acest lucru va permite să primiți pachete de la o conexiune stabilită anterior și să acceptați pachete noi generate de această conexiune.

Sau specificând tipul de protocol:

$ sudo iptables -A INTRARE -p TCP -m stare --state ESTABLISHED, RELATED -j ACCEPT $ sudo iptables -A INPUT -p UDP -m stare --state ESTABLISHED, RELATED -j ACCEPT

Acum interfața locală:

$ sudo iptables -A INPUT -i lo -j ACCEPT

  • NOU - date care încep o nouă conexiune.
  • ESTABLISHED - un pachet care vine de la o conexiune deja stabilită.
  • RELATED - pachet de date nou, dar generat de vechea conexiune stabilită
  • INVALID - atât de înțeles

$ sudo iptables-save> /etc/iptables.up.rules

Activați aceste reguli:

$ sudo iptables-restore< /etc/iptables.up.rules

Și vezi diferența:

$ sudo iptables-L

Lansarea iptables la pornirea sistemului:

În directorul /etc/init.d, creați un fișier numit iptables

$ sudo touch /etc/init.d/iptables

În el prescriem următoarele:

#! / bin / sh / sbin / iptables-restore< /etc/iptables.up.rules

Să facem fișierul iptables executabil:

$ sudo chmod + x /etc/init.d/iptables

Adăugați-l la autorun

$ sudo update-rc.d -n iptables implicite

Rularea iptables pe conexiune la rețea:

$ sudo echo "#! / sbin / iptables-restore"> /etc/network/if-up.d/iptables.up.rules $ sudo iptables-save >> /etc/network/if-up.d/iptables. up.rules $ sudo chmod + x /etc/network/if-up.d/iptables.up.rules

Notă: oricând puteți verifica dacă regulile sunt încărcate prin simpla introducere a iptables-save de la rădăcină

Pentru archlinux, salvarea regulilor iptables se face cu comanda:

$ sudo rc.d salva iptables

Un mic script inițial (reguli, iptables faq) pentru un desktop sau un server simplu. În acest caz, exemple de lucru cu porturile unuia sau altuia software care rulează pe computerul dvs. Măsurile de securitate trebuie respectate pe orice computer. Mitul că Linux este mai sigur nu este adevărat, totul depinde de mâinile stângace ale administratorului. Există sisteme Windows bine protejate, precum și sisteme Linux care sunt deschise aproape oricui. Prin urmare, ar trebui să vă gândiți încă puțin la protecția rețelei computerului dvs. Mai jos sunt adăugate câteva reguli iptables care ar putea fi utile la început.

Înlocuit în mod specific $ IPT cu / sbin / iptables, dacă cineva are nevoie de o singură regulă pentru a nu schimba nimic - doar copiați și executați. Desigur, există încă puține reguli aici, nu există VPN-uri diferite etc., dacă doriți, adăugați.

Aceste linii pot fi copiate în întregime în orice script și doar executați-l. Pentru cazuri obișnuite, acest lucru este suficient. Dacă vreo aplicație nu poate intra online, înregistrarea a fost adăugată special. Doar deschideți tail -f / var / log / syslog (sau al dumneavoastră dacă nu este Ubuntu) și urmăriți! Dacă aveți întrebări, adăugați-le în discuție, o vom rezolva împreună.

PS Pe lângă aceste reguli, gândiți-vă ce să luați din articolul Optimizare TCP.

Cum să eliminați o regulă în iptables

Postat de Alexey Ubozhenko

De câteva ori am dat peste faptul că până și oamenii care nu sunt proști în general fac greșeli absolut de neiertat. De exemplu, ei deschid portul pe care rulează baza de date către întregul Internet.

Blog de administrare a sistemului. Articole despre Linux, Windows, stocarea NetApp și virtualizare.

Acesta este adesea cazul începătorilor DevOps care au programat toată viața, iar acum responsabilitățile lor includ și configurarea serverelor. Există tutoriale bune pe net despre configurarea de bază a firewall-ului în Linux și alte * nix, dar adesea acestea sunt foi pentru multe ecrane. Deci, sperăm că cineva va găsi util acest tutorial mai concis.

Important! Este foarte ușor să trageți din greșeală o mașină în așa fel încât să nu mai intrați în ea. Acest lucru este valabil mai ales pentru găzduirea în cloud. De exemplu, dacă în AWS închideți toate porturile de la 1024 la 65536, din anumite motive, aparatul este închis după o repornire. in general toate porturi. Dacă găzduiți în cloud, cel mai bine este să vă configurați firewall-ul prin interfața web găzduită.

O notă rapidă despre terminologie. Firewall-ul încorporat în nucleul Linux se numește Netfilter, iar iptables este utilitarul pentru gestionarea acestui firewall. Mulți oameni cred în mod eronat că firewall-ul se numește iptables. Nu este adevarat. A spune ceva de genul „Filtrez pachetele cu iptables” le arată altora că sunteți analfabet.

În general, ce sarcini pot fi rezolvate folosind Netfilter:

  • Permite / interzice traficul de intrare către anumite porturi folosind protocoale specifice (IPv4 / IPv6, TCP / UDP) de la adresele 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 postarea despre instalarea și configurarea OpenVPN;
  • Am auzit că guru adevărați pot configura protecție împotriva DDoS și a forței brute, pot restricționa accesul la rețea la anumite aplicații, utilizatori sau grupuri și pot face alte lucruri nebunești;

Rețineți că utilitarul iptables mi s-a părut la început extrem de incomod în comparație cu ipfw din FreeBSD. Din fericire, după ce am lucrat cu el o vreme, toate aceste steaguri precum -A, -D, -j și altele devin familiare, așa că aveți răbdare. Să aruncăm o privire la comenzile principale.

Afișați toate regulile:

Este posibil să observați că Netfilter are un fel de „lanțuri” - cel puțin INPUT, OUTPUT și FORWARD.

Eu personal am și un lanț Docker pe mașină. 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:

Schimbați înlănțuirea politicii (comportament implicit):

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.com -j DROP

Interzicerea conexiunilor de ieșire:

iptables -A OUTPUT -d 123.45.67.89 -j DROP

Negativele pot fi folosite în reguli:

iptables -A INPUT! -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 indică protocolul. Puteți utiliza all, icmp, tcp, udp sau numărul de protocol din / etc / protocoale. Steagul -sport indică portul din care a fost trimis pachetul, iar -dport indică portul de destinație:

iptables -A INTRARE -p tcp -sport80-j ACCEPT
iptables -A INTRARE -p tcp -dport80-j ACCEPT

Introduceți o regulă la începutul unui lanț:

iptables -I INTRARE...

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

iptables-save> /etc/iptables.rules

Restabiliți regulile:

iptables-restore

Acum să ne uităm la câteva exemple practice. Aceasta este, de exemplu, emularea unei divizări de rețea într-un test care verifică comportamentul unei aplicații care utilizează Akka Cluster:

rulați (nodul1, 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")

Recuperarea este exact aceeași, cu excepția faptului că steagul -A este înlocuit cu steagul -D.

Alt exemplu. Este necesar să aflați ce porturi ascultă pe aparat și să le închideți pe cele suplimentare. Mergem la mașină și spunem:

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:* LISTEN 797 / sshd
tcp 0 0 127.0.0.1:5432 0.0.0.0:* LISTEN 990 / postgres

Nginx și SSHd navighează pe internet, asta e în regulă. PostgreSQL ascultă doar interfața locală, deci nu există nicio problemă cu aceasta. Dar epmd-ul iese în evidență (puteți verifica cu telnet de la o altă mașină), iar acest lucru nu este bun. Puteți închide doar portul 4369. Cum se face 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:

iptables -A INPUT -m multiport \
-p tcp —dports81: 65535! -s 127.0.0.0/8-j DROP

Aceasta utilizează extensia multiport pentru a specifica intervalele de porturi.

Verificăm dacă totul funcționează. Dacă OK, salvați regulile:

iptables-save> /etc/iptables.rules

Pentru a prelua regulile la pornirea sistemului, creați un fișier nou /etc/network/if-pre-up.d/iptables:

iptables-restoreieșire0

...si spunem:

chmod + x /etc/network/if-pre-up.d/iptables

Această metodă a fost verificată pentru a funcționa pe Ubuntu 14.04 LTS.

Ar trebui să funcționeze și Debian. Puteți găsi o descriere a unei modalități alternative de a restabili regulile firewall la pornirea sistemului în articolul deja menționat despre OpenVPN.

Resurse suplimentare pentru cei care doresc să afle mai multe despre Netfilter:

Cum configurezi firewall-urile pe serverele tale?

Etichete: Linux, Securitate, Rețele.

Utilitarul de linie de comandă iptables este folosit pentru a configura firewall-ul netfilter încorporat într-un sistem bazat pe kernel Linux.

Acest manual este potrivit atât pentru manechinilor care doresc să înțeleagă aspectele securității rețelei, cât și specialiștilor cu experiență ca o foaie de cheat.

Principiul de setare

Sintaxa generală pentru utilizarea iptables este:

iptables -t<таблица> <команда> <цепочка>[cameră]<условие> <действие>

<таблица>

Regulile Netfilter sunt distribuite pe 4 tabele, fiecare având propriul său scop (mai multe detalii mai jos). Este specificat cu tasta -t, dar dacă acest parametru nu este specificat, acțiunea va fi efectuată pentru tabelul implicit - filtru.

<команда>

Comenzile indică ce fel de acțiune facem pe netfilter, de exemplu, creați sau ștergeți o regulă.

<цепочка>

Fiecare tabel are lanțuri, pentru fiecare dintre acestea fiind create regulile în sine. De exemplu, pentru tabelul de filtrare de mai sus, există trei lanțuri predefinite - INPUT (pachete de intrare), OUTPUT (ieșire) și FORWARD (tranzit).

[cameră]

Unele comenzi necesită specificarea unui număr de regulă, de exemplu, pentru ștergere sau editare.

<условие>

O condiție descrie criteriile pentru procesarea unei anumite reguli.

<действие>

Ei bine, de fapt, ce facem cu pachetul dacă se încadrează în criteriile condiției.

* Pentru a fi corect, merită remarcat faptul că tasta de acțiune nu trebuie să ajungă la sfârșit. Doar că acest format se găsește cel mai des în instrucțiuni și facilitează citirea regulilor.

Chei Iptables și exemple de utilizare a acestora

Pentru lucrul cu tabele (iptables -t)

Ca o reamintire, toate regulile din netfilter sunt răspândite pe tabele. Pentru a lucra cu un anumit tabel, trebuie să utilizați comutatorul -t.

Comenzi

Următoarele chei determină ce face utilitarul iptables.

Cheie Descriere și exemple
-A Adăugarea unei reguli la sfârșitul listei:
iptables -A INPUT -s 192.168.0.15 -j DROP
refuza venitul din 192.168.0.15.
-D Eliminarea unei reguli:
iptables -D INTRARE 10
ștergeți regula din lanțul INPUT numerotat 10.
-Eu Inserarea unei reguli într-o anumită parte a listei:
iptables -I INPUT 5 -s 192.168.0.15 -j DROP
introduceți regula a 5-a pe listă.
-R Înlocuirea regulii.
iptables -R IEȘIRE 5 -s 192.168.0.15 -j ACCEPT
înlocuiți a 5-a regulă de la interzicere la permisivă.
-F Curățarea regulilor din lanț.
iptables -F INPUT
-Z Resetarea statisticilor.
iptables -Z INPUT
-N Crearea lanțului.
iptables -N CHAINNEW
-X Ștergerea unui lanț.
iptables -X CHAINNEW
-P Definirea unei reguli implicite.
iptables -P INPUT DROP
-E Redenumiți lanțul.
iptables -E CHAINNEW CHAINOLD

Condiții

Aceste chei definesc condițiile regulii.

Cheie Descriere și exemple
-p Protocol de rețea. Opțiunile valide sunt TCP, UDP, ICMP sau ALL.
iptables -A INTRARE -p tcp -j ACCEPT
permiteți toate conexiunile TCP de intrare.
-s Adresă sursă - nume de gazdă, adresă IP sau subrețea în notație CIDR.
iptables -A INPUT -s 192.168.0.50 -j DROP
refuza intrarea de la gazda 192.168.0.50
-d Adresa de destinatie. Principiul de utilizare este similar cu comutatorul -s anterior.
iptables -A OUTPUT -d 192.168.0.50 -j DROP
refuza trimiterea către gazdă 192.168.0.50
-i Adaptorul de rețea prin care sunt primite pachetele (INPUT).
iptables -A INPUT -i eth2 -j DROP
refuză intrarea pentru interfața ethernet eth2.
-o Adaptor de rețea de la care pleacă pachetele (OUTPUT).
iptables -A IEȘIRE -o eth3 -j ACCEPT
permite ieșirea de la interfața ethernet eth3.
— Dport Portul de destinație.
iptables -A INTRARE -p tcp -dport 80 -j ACCEPT
permite intrarea pe portul 80.
— Sportul Port sursă.
iptables -A INPUT -p tcp -sport 1023 -j DROP
refuza intrarea din portul 1023.

Cheile enumerate susțin și construcția folosind semnul ! .

Configurarea netfilter cu iptables

Acesta inversează starea, de exemplu
iptables -A INPUT -s! 192.168.0.50 -j DROP
va refuza conexiunea la toate gazdele, cu excepția 192.168.0.50.

Acțiuni

Acțiuni care trebuie efectuate pe un pachet care corespunde criteriilor condiției. Fiecare tabel are propriul său set de acțiuni valide. Specificat folosind o cheie -j.

masa Acțiune Descriere
filtru ACCEPT Rezolvă pachetul.
CĂDERE BRUSCA Respinge pachetul.
RESPINGE Împiedică trimiterea mesajului către sursă.
nat MASCARADĂ Pentru pachetele de ieșire, înlocuiește adresa IP sursă cu adresa interfeței din care pleacă pachetul.
SNAT Similar cu MASQUERADE, dar specificând o interfață de rețea specifică, a cărei adresă va fi folosită pentru falsificare.
DNAT Falsificarea adreselor pentru pachetele primite.
REDIRECŢIONA Redirecționează cererea către un alt port pe același sistem.
calandru TOS Modificarea câmpului TOS (prioritizarea traficului).
DSCP Modificare DSCP (de asemenea, prioritizarea traficului).
TTL Modificați TTL (durata de viață a pachetului).
HL Similar cu TTL, dar pentru IPv6.
MARCĂ Marcarea pachetului. Folosit pentru filtrarea sau modelarea ulterioară.
CONNMARK Marcarea conexiunii.
TCPMSS Modificarea valorii MTU.

Exemple de comenzi iptables utilizate în mod obișnuit

Comenzi comune

Vedeți regulile cu numerele lor:

iptables -L —numere-linii

Pentru fiecare tabel, trebuie să vă uitați la regulile separat:

iptables -t nat -L --line-numbers

Eliminați toate regulile:

Setați regulile implicite:

iptables -P INPUT DROP

iptables -P OUTPUT DROP

* în aceste exemple, implicit, pentru toate pachetele de intrare (INPUT) și de ieșire (OUTPUT), regula de refuzare (DROP) va funcționa.

Permite Toate

Metoda 1. Prin adăugarea unei reguli:

iptables -I INTRARE 1 -j ACCEPT

iptables -I IEȘIRE 1 -j ACCEPT

iptables -I FORWARD 1 -j ACCEPT

* aceste trei comenzi vor crea reguli care permit toate pachetele de intrare, de ieșire și de tranzit.

Metoda 2. Prin curățarea regulilor:

* aici eliminăm mai întâi toate regulile (-F), apoi setăm politica implicită - permiteți intrarea, ieșirea și tranzitul (-S).

Metoda 3. Dezactivarea serviciului (este convenabil să dezactivați firewall-ul pentru un timp pentru diagnosticarea problemelor):

Lucrul cu reguli

Adăugați o regulă la sfârșitul listei:

iptables -A INTRARE -p tcp -dport 25 -j ACCEPT

iptables -A INPUT -p tcp -s! 192.168.0.25 —dport 993 -i eth0 -j ACCEPT

Adăugați intervalul de porturi:

iptables -A INPUT -p tcp -dport 3000: 4000 -j ACCEPT

* în acest caz, de la 3000 la 4000.

Inserați regula:

iptables -I FORWARD 15 -p udp -d 8.8.8.8 -dport 53 -i eth1 -j ACCEPT

Port forwarding

Există două moduri de configurare.

1. Reguli PRERUTARE + POSTRUTARE:

iptables -t nat -A PREROUTING -p tcp -m tcp -d 19.8.232.80 —dport 22 -j DNAT —la destinație 192.168.1.15:2222

iptables -t nat -A POSTROUTING -p tcp -m tcp -s 192.168.1.15 —sport 2222 -j SNAT —la sursă 19.8.232.80:22

* Unde 19.8.232.80 - adresa la care ascultam cererile de conectare; 22 - port pentru expediere; 192.168.1.15 2222 - port intern.

2. Reguli de PRE-RUTARE + FORWARD:

iptables -t nat -A PREROUTING -p tcp -i eth1 —dport 22 -j DNAT —la destinație 192.168.1.15:2222

iptables -A FORWARD -p tcp -d 192.168.1.15 —dport 22 -m stare —state NOU, STABILIT, RELATED -j ACCEPT

* Unde et1- interfata de retea pe care ascultam cereri; 22 - port pentru expediere; 192.168.1.15 - adresa IP internă, către care transferăm toate solicitările; 2222 - port intern.

Se începe configurarea

Permite SSH:

iptables -A INTRARE -p tcp -dport 22 -j ACCEPT

Am stabilit politica de interzicere a intrării și de a permite toate ieșirile:

iptables -P ACCEPT IEȘIRE

Creați o regulă pentru ca apt-get să funcționeze corect:

iptables -A INPUT -p tcp —sport 80 -m stare —state ESTABLISHED -j ACCEPT

Permite ICMP (pentru comanda ping):

iptables -A INTRARE -p icmp -j ACCEPT

Reguli de salvare (permanente)

În mod implicit, toate regulile nu mai funcționează după repornirea rețelei sau a computerului. Există mai multe moduri de a configura regulile pentru a păstra regulile după o repornire.

Metoda 1.iptables-salvare

Salvăm regulile într-un fișier:

iptables-save> /etc/iptables.rules

Deschideți setările de rețea:

vi / etc / rețea / interfețe

si adauga linia:

pre-up iptables-restore< /etc/iptables.rules

Metoda 2.iptables-persistent

Instalați pachetul iptables-persistent:

apt install iptables-persistent

Pentru a salva regulile, introduceți comanda:

service iptables-salvare persistentă

Metoda 3.serviciu iptables

Funcționează pe versiuni mai vechi de Linux:

Metoda 4.iptables.init

Funcționează pe CentOS:

/usr/libexec/iptables/iptables.init salvare

Ubuntu și CentOS

Nu există iptables în mod implicit pe sistemele de operare moderne Ubuntu și CentOS.

Trebuie să îl instalați sau să utilizați utilitare mai noi.

Pe CentOS

Firewall-cmd este folosit ca program standard de gestionare a paravanului de protecție. Pentru mai multe detalii, citiți instrucțiunea Cum să configurați firewalld în CentOS.

Dacă trebuie să utilizați iptables, instalați pachetul de utilitate:

yum instalează iptables-services

Dezactivați firewalld:

systemctl opri firewalld

systemctl dezactivează firewalld

Activem și rulăm iptables:

systemctl activa iptables

În Ubuntu

Ufw este acum folosit pentru a gestiona firewall-ul.

Pentru a lucra cu iptables, instalați următorul pachet:

apt-get install iptables-persistent

Dezactivați ufw:

# Rețea # Securitate # UNIX # Ubuntu # Linux

Ți-a fost de ajutor acest tutorial?

Dincolo de zidul de foc:
FIREWALL (FIREWALL) ȘI INTERNET GATEWAY
DEBIAN GNU / LINUX 4.0 ETCH

Un ghid practic pentru organizarea accesului securizat la Internet
de pe un computer separat și dintr-o rețea locală în Debian GNU / Linux 4.0 Etch
Un pic de teorie

Fiecare conexiune la Internet nu numai că face posibilă conectarea la diverse servere și site-uri, dar creează și un potențial pericol de pătrundere în computerul nostru din exterior. Acest pericol nu trebuie neglijat, deoarece cele mai multe încercări de acces neautorizat la computerele utilizatorilor de pe Internet astăzi fac parte dintr-o afacere criminală bine organizată. După o compromitere cu succes a sistemului dvs., ei vor încerca să vă folosească computerul fie pentru a trimite spam, fie pentru a organiza atacuri DoS pe alte computere sau în orice alte scopuri nefaste. Neglijarea acestui pericol, în cel mai bun caz, vă va crește costurile de trafic și vă va încetini performanța computerului; în cel mai rău caz, vă poate implica fără să știți în activitățile criminale ale grupurilor cibernetice.

Situația este agravată de faptul că în unele sisteme de operare (încă) răspândite, multe porturi rămân deschise implicit, ceea ce permite unui atacator să se conecteze de la Internet la utilizator fără ca acesta din urmă să fie conștient.

Pentru a preveni conexiunile neautorizate din exterior și pentru a filtra traficul de intrare/ieșire în sistemul de operare, trebuie utilizat un program special - firewall(Firewall englezesc), cunoscut și sub numele firewallși firewall... Mai jos este un exemplu simplu de configurare a unui firewall într-un sistem de operare gratuit. Debian GNU / Linux 4.0.

Utilizarea unui firewall devine deosebit de relevantă dacă aveți mai multe computere, dar rețea de acasă sau de birou ale căror computere intră online.

Chiar și o mică rețea locală trebuie organizată corespunzător. Să presupunem că aveți un punct de acces la Internet de mare viteză (de exemplu, un modem ADSL) cu o interfață Ethernet (adică de rețea).

Există o tentație (încălzită de recomandări analfabete, ca, de exemplu, în instrucțiunile pentru modemul meu ADSL) de a conecta modemul direct la comutator și apoi de a conecta la comutator toate calculatoare ale rețelei locale. În acest caz, modemul emite în mod dinamic adrese IP locale prin intermediul comutatorului, dar se dovedește că fiecare computer rămâne singur cu Internetul! Nici un modem, nici un comutator nu pot deveni un obstacol pentru un nedoritor. Un atacator poate scana toate calculatoare ale unei rețele locale organizate în acest fel.

Soluția logică și sigură este crearea barierăîntre modem și rețeaua locală - sub forma unui computer separat cu un „firewall” (firewall) configurat pe acesta. Acest computer are două interfețe - una „se uită” la Internet (adică este conectată fizic la modem), cealaltă este direcționată către rețeaua locală (și este conectată fizic la comutatorul la care sunt și celelalte computere). conectat). Deoarece computerul nostru cu un firewall este acum un punct nodal pentru alte computere pentru a accesa Internetul, se mai numește poarta de acces(gateway engleză).

Cu o astfel de organizare a rețelei locale, probabilitatea de hacking este redusă semnificativ - un atacator „vede” doar poarta de acces de pe Internet, iar un firewall este instalat pe gateway și nu este ușor să-l piratați.

Configurarea iptables pe Linux pentru manechini

Calculatoarele din rețeaua locală pot naviga pe internet și pot rămâne relativ sigure.

Configurarea unui firewall folosind configuratorul arno-iptables-firewall

Pentru a organiza un firewall în GNU/Linux se foloseste programul iptables, care, de regulă, este instalat imediat la instalarea majorității distribuțiilor. V Debian GNU/Linux puteți verifica acest lucru rulând cu drepturi de administrator aptitudini... Dacă este necesar, instalați iptables.

Cu toate acestea, configurare manuală iptables este o sarcină nebanală și poate fi realizată doar de specialiști în domeniul administrării sistemului. Prin urmare, pentru a configura regulile după care va funcționa firewall-ul, este mai bine să utilizați configurator special... V Debian GNU/Linux Acest program arno-iptables-firewall... La lansare, pune o serie de întrebări, pe baza cărora generează reguli de funcționare a firewall-ului. iptables.

Introducem în consola cu drepturi de superutilizator:

#aptitude instalează arno-iptables-firewall

La începutul instalării, programul ne va întreba dacă vrem cu adevărat să configuram firewall-ul cu acesta. iptables:

În primul rând, trebuie să specificați interfața externă - „căutând” pe Internet, adică. conectat la modem. Setările interfeței sunt definite în fișierul de configurare / etc / rețea / interfețe... De exemplu, poate arăta astfel:

# Aceasta este interfața lo - indică către mașina noastră în sine. auto lo iface lo inet loopback address 127.0.0.1 netmask 255.0.0.0 # Aceasta este interfața eth0, care este conectată la Internet (modem ADSL) # Particularitatea sa este că adresa IP îi este atribuită dinamic de către ISP, # deci opțiunea dhcp auto eth0 este setată iface eth0 inet dhcp # Aceasta este interfața care face față rețelei locale # Adresa rețelei locale va fi 192.168.2.0/24 # Din motive de securitate în rețeaua locală, gateway-ul are o adresă IP statică - 192.168.2.1, # prin urmare opțiunea statică este setată # Net mask - 255.255.255.0 # Adresa de difuzare a rețelei în acest caz va fi 192.168.2.255 auto eth1 iface eth1 inet adresa statică 192.168.2.1 netmask 25.25.255.25.

Deci, uitându-mă la setări / etc / rețea / interfețe, indicăm configuratorului firewall că interfața noastră externă este eth0:

Când este întrebat dacă furnizorul ne oferă o adresă IP dinamic(folosind DHCP), răspundem afirmativ:

Următoarea întrebare este ce servicii vor fi furnizate de pe computerul nostru utilizatorilor externi de internet. Nu avem niciunul! Nu suntem angajați în găzduire web profesională și nu intenționăm să distribuim informații în exterior. Lăsăm linia goală.

Apoi vine întrebarea dacă vom oferi servicii prin UDP. De asemenea, nu - și, de asemenea, lăsați linia goală!

Trebuie să fim ping din lumea exterioară (adică să verificăm dacă există o conexiune cu computerul pe care este instalat firewall-ul)? În cazul nostru, acest lucru este perfect acceptabil:

Aceasta completează configurația pentru un computer individual care nu este un gateway LAN. Dacă intenționăm să folosim computerul ca gateway, mai trebuie să răspundem la câteva întrebări. Indicăm interfața cu care gateway-ul se confruntă cu rețeaua locală - în cazul nostru este et1 după cum este evident din / etc / rețea / interfețe(în caz contrar, pentru un computer „singuratic”, lăsați acest câmp necompletat):

Când a fost întrebat dacă se permite traducerea NAT, de ex. redirecționând traficul de pe Internet prin gateway către rețeaua locală și invers, răspundem „da” - aceasta este una dintre sarcinile noastre principale în acest caz:

Atunci apare întrebarea: ce segment al rețelei locale poate fi admis prin redirecționare către rețele externe? Toate calculatoarele din rețeaua locală au dreptul de a accesa Internetul; setați din nou valoarea 192.168.2.0/24

În sfârșit, ne confirmăm dorința de lansare iptables fără verificare suplimentară din partea noastră a regulilor firewall generate automat de către configurator:

După aceea, dacă totul a mers bine, se afișează un mesaj similar cu cel de mai jos. Va apărea acum la fiecare pornire a computerului gateway și va informa despre lansarea cu succes a paravanului de protecție:

Scriptul Arno Iptables Firewall v1.8.8c ——————————————————————————- Verificările de sănătate au trecut... OK Modulul IPTABLES detectat...

Se încarcă module IPTABLES suplimentare: Toate modulele IPTABLES au fost încărcate! Configurare / proc /…. setări: Activarea anti-spoof cu rp_filter Activarea protecției SYN-flood prin SYN-cookies Dezactivarea înregistrării marțienilor Dezactivarea acceptării mesajelor de redirecționare ICMP Setarea max. Numărul de conexiuni simultane la 16384 Activarea protecției împotriva pachetelor direcționate sursă Setarea intervalelor de timp implicite pentru conntrack Activarea reducerii capacității de DoS Setarea TTL implicit = 64 Dezactivarea ECN (Notificare explicită de congestie) Activarea suportului pentru tabelul/proc/setarea rutei de spălare a IP-ului dinamic. .. Spălarea regulilor din tabelul de filtrare Setarea politicilor implicite (securizate) Utilizarea „informației” la nivel de jurnal pentru syslogd Configurarea regulilor firewall: ———————————————————————— ——— - Acceptarea pachetelor de la dispozitivul de loopback local. Activarea setarii dimensiunii maxime a pachetului prin MSS. Activarea TOS de deformare Înregistrarea scanărilor ascunse (sonde nmap etc.) activată Înregistrarea pachetelor cu semnale TCP proaste activată Înregistrarea pachetelor INVALIDE dezactivată Înregistrarea fragmentelor pachete activate Înregistrarea accesului de la adresele rezervate activată Configurarea regulilor anti-spoof Citirea regulilor IPTABLES personalizate de la / etc / arno-iptables-firewall / custom-rules Încărcarea pluginurilor (utilizatorului) Configurarea politicii INPUT pentru rețeaua externă (INET): Ena Suport bling pentru un IP alocat DHCP pe interfața (e) externă: eth0 Înregistrarea gazdelor blocate în mod explicit activată Înregistrarea conexiunilor de ieșire locale refuzate activată Pachetele NU vor fi verificate pentru adresele surselor private Permițând întregii lumi să trimită solicitări ICMP (ping) Înregistrare de pachete de solicitare ICMP (ping) abandonate activată Înregistrarea altor pachete ICMP abandonate activată Înregistrarea posibilelor scanări ascunse activată Înregistrarea (alte) încercări de conectare la porturi TCP PRIVILEGATE activată Înregistrarea (alte) încercări de conexiune la porturile UDP PRIVILEGATE activată Înregistrarea ( altele) încercări de conectare la porturi TCP NEPRIVILEGATE activate Înregistrarea (alte) încercări de conectare la porturi UDP NEPRIVILEGATE activată Înregistrarea altor protocoale IP (non TCP / UDP / ICMP) încercări de conexiune activată Înregistrarea inundațiilor ICMP activată Aplicarea politicii INET la exterior (INET) interfață: eth0 (fără o subrețea externă specificată) Configurarea politicii INPUT pentru interfața (e) internă (LAN): eth1 Permiterea solicitărilor ICMP (ping) A permiterea tuturor (alte) protocoale Configurarea politicii FORWARD pentru interfața (e) internă (LAN): eth1 Înregistrarea conexiunilor LAN-> INET FORWARD refuzate activată Configurarea politicii LAN-> INET: Permiterea solicitărilor ICMP (ping) Permiterea tuturor (altele) ) protocoale Activarea mascării (NAT) prin intermediul interfețelor externe: eth0 Adăugarea gazdei (interne): 192. 168.2.0 / 24 Securitatea este APLICATĂ pentru interfețele externe din lanțul FORWARD 16 ianuarie 23:53:12 Se aplică toate regulile firewall.

Nota 1.În cele mai multe cazuri, lansarea cu succes a firewall-ului are loc după prima comunicare cu configuratorul. Dacă ceva nu funcționează, se recomandă insistent să repetați configurația pornind din nou configuratorul cu drepturi de superutilizator:

# dpkg-reconfigure arno-iptables-firewall

Acest lucru va elimina o eroare ocazională care ar putea apărea atunci când răspundeți la întrebările configuratorului în timpul primei experiențe cu acesta. Dacă nici acest lucru nu ajută, puteți încerca să corectați manual fișierul de configurare al programului. arno-iptables-firewall, și anume: /etc/arno-iptables-firewall/firewall.conf... Poate fi util să vizitați site-ul principal al creatorului acestui program la http://rocky.eld.leidenuniv.nl/. Conține un manual foarte informativ pentru lucrul cu programul, un FAQ interesant și, în plus, există informații despre noile versiuni ale programului.

Nota 2. Nu uita asta nici unul un firewall nu poate oferi o garanție de 100% a securității unui computer pe Internet. Cu toate acestea, nu puteți neglija protecția firewall. Trebuie să facem tot ce ne stă în putere pentru a ne baza apoi pe mila lui Dumnezeu. „Dacă Domnul nu păzește cetatea, veghea este în zadar”(Ps. 126:1).

Sursa articolului

Am scris o postare pe blog despre regulile de bază Iptables pentru utilizatorul care lucrează cu mult timp în urmă și probabil ar trebui să o citiți și articolul aferent despre firewall-ul Stateful.

Dar pre-kernel-ul 2.6.39 (care include și îl puteți folosi pentru IP lista albă dacă aveți mai mult de 10 pentru lista albă (unde 10 este arbitrar)).

Configurarea iptables pentru manechine

Prima stare de mâner pe care știm că vrem să o acceptăm sau să o eliminăm și interfețele.

Dacă doriți doar să permiteți numai IP, apatrid

este mai probabil să întâmpinați probleme cu acest lucru și vă sugerez să folosiți starea pentru a vă ușura viața. De exemplu, nu se rezolvă și cu siguranță va cauza probleme pentru anumite aplicații.

Top articole similare