Un firewall regulat, destul de popular în Ubuntu este iptables. Toate exemplele articolului sunt testate sub Ubutnu 14.04. Iptables este în esență o interfață de utilizator pentru gestionarea sistemului netfilter, care gestionează stiva de rețea Linux. Iptables compară fiecare pachet primit cu un set de reguli stabilite și decide ce să facă cu acesta.
Toate comenzile iptables trebuie executate numai cu privilegii de root, aceasta necesită:
- utilizați sudo (modul recomandat în Ubuntu);
- utilizați su sau sudo -i pentru a face mai sigur să rulați ca root;
- conectați-vă ca root.
Acest manual utilizează opțiunea de a lucra ca root - aceasta nu este o opțiune sigură deși, dar dacă introduceți adesea comenzi din consola ca root, tastând tot timpul sudo nu este practic. După ce ați configurat serverul în prealabil, atunci când rădăcina este minimizată, ar trebui să utilizați deja sudo.
Trebuie remarcat faptul că pentru IPv4 este folosit iptables, iar pentru IPv6 este ip6tables, iar dacă IPv6 nu este utilizat - puteți interzice imediat traficul în ip6tables:
# ip6tables -P INPUT DROP
# ip6tables -P DROP OUTPUT
# ip6tables -P FORWARD DROP
Dar dacă, după dezactivarea tuturor conexiunilor pe IPv6, actualizarea sistemului (actualizare aptitude) se oprește, va trebui să modificați setările.
Pentru a evita pierderea accesului la serverul de la distanță prin IPv4 în timpul experimentelor, trebuie să setați resetarea tuturor regulilor iptables o dată la fiecare 20 de minute de către cron:
# crontab -e
Adăugați o linie:
* / 20 * * * * / sbin / iptables -F
Acum, chiar dacă tot traficul este blocat accidental, la fiecare 20 de minute va exista o resetare a regulilor din tabela de filtrare a tabelei de firewall, care nu va pierde accesul la server. Pentru această opțiune, trebuie să luați în considerare politicile iptables implicite. Dacă paravanul de protecție nu este încă configurat de nimeni, apoi executați comanda iptables -S puteți vedea următoarele:
# iptables -S
-ACCEPTUL PENTRU INTRARE
-P PENTRU ACCEPTUL FORWARD
-P PENTRU ACCEPTAREA OUTPUTULUI
Aceste setări indică faptul că după ce toate regulile sunt resetate folosind iptables -F, tot traficul va fi permis. Dacă înlocuiți setările implicite cu DROP, așa cum sa procedat la începutul articolului pentru IPv6, atunci acestea vor funcționa chiar și după ce resetați setările cu pavilion -F. Adică, comanda iptables -F șterge TOATE setările firewall-ului din tabelul tabelelor de filtrare, cu excepția setărilor DEFAULT.
Toate setările iptables vor fi resetate după ce serverul este repornit, inclusiv lanțurile INPUT, FORWARD, OUTPUT, care, după pornirea serverului, vor ajunge la starea ACCEPT. Același lucru este valabil și pentru setările implicite. Cum să nu pierdeți setările iptables și ip6tables la repornire vor fi scrise mai jos.
Tabel de reguli
Firewall-ul standard Ubuntu-iptables constă din cinci tabele: filtru. nat. mangle. brut și de securitate. Pentru a vedea setările dintr-o anumită tabelă, de exemplu din tabelul nat, trebuie să executați comanda: iptables -L -t nat. Tabela de filtrare este utilizată în mod implicit și, pentru a vedea ce reguli sunt deja incluse, tastați pur și simplu: iptables -L (fără a specifica numele tabelului). Implicit, iptables este configurat astfel încât totul să fie permis.
Filtru tabel - tabel pentru filtrarea traficului de intrare, ieșire și trecere (redirecționată). Pentru fiecare tip de trafic, tabela de filtrare utilizează propriul lanț: INPUT, OUTPUT și, respectiv, FORWARD.
Mangle - folosit pentru a modifica pachetele.
Există încă două tabele: prime și de securitate, pentru ceea ce sunt destinate, puteți vedea tastarea man iptables.
Configurarea regulilor iptables
Înainte de a configura regulile, pentru a nu bloca serviciile necesare, merită să examinați porturile deschise de pe server cu comanda:
Toate regulile iptables sunt aplicate imediat după comanda pentru a adăuga regula la firewall. Pentru a verifica acest lucru, puteți imediat să refuzați accesul la portul 80, cu excepția cazului în care, desigur, serverul web este configurat pe acesta, pentru o monitorizare relativ sigură a acțiunilor de blocare:
# iptables -U INPUT -p tcp -m tcp -dport 80 -j DROP
Acum vă puteți asigura că site-ul accesat de portul 80 nu este disponibil. Steagul -A adaugă regula chiar la capătul lanțului selectat. Deoarece comanda nu specifică numele tabelului de reguli (-t nume de tabel), se folosește tabela implicită: filter. Puteți elimina blocarea, așa cum a fost descris mai devreme, executând comanda iptables -F, dar ce se întâmplă dacă trebuie doar să eliminați o regulă și să lăsați restul neschimbat?
Ștergeți toate regulile din lanțul INPUT cu parametrul DROP:
# iptables -D INPUT -j DROP
Ștergeți numai regula specificată de INPUT -p tcp -m tcp -dport 81 -j DROP
# iptables -D INPUT -p tcp -m tcp -dport 80 -j DROP
Opțiunea -D înseamnă: ștergeți una sau mai multe reguli în funcție de următoarea condiție.
# iptables -L -n -v -line-numere
Acum ștergeți o regulă, știind numărul acesteia, puteți face acest lucru:
# iptables -D INPUT 1
Pentru a adăuga o regulă la un anumit loc, de exemplu, la prima linie, puteți utiliza această sintaxă:
# iptables -I INPUT 1 -s 4.4.4.4 -j ACCEPT
Toate regulile înregistrate anterior, inclusiv cele din linia 1, vor fi transferate la linia de mai jos.
Opțiunea -Z elimină contoarele și octeții de pachete.
DROP sau REJECT
DROP și REJECT resping conexiunea, dar REJECT încă trimite un pachet ICMP inițiatorului, cu mesajul că încercarea de conectare a fost respinsă. DROP - elimină pur și simplu pachetul primit fără a trimite un mesaj ca răspuns. În cazul unui atac DoS, REJECT va crea un trafic excesiv cu răspunsurile sale, deci dacă conexiunea este respinsă, este mai bine să utilizați DROP.
Documentația oficială recomandă utilizarea REJECT pentru a proteja împotriva scanării portului, deoarece DROP poate lăsa socket-uri deschise nefolosite pe server.
Resetare reguli: -F sau -X opțiune
În multe exemple, pavilionul -F și pavilionul -X sunt folosite pentru a curăța complet regulile:
# iptables -F
# iptables -X
Și este corect! Din moment ce -F elimină toate regulile personalizate create în lanțurile standard și personalizate, dar flagul -X elimină numele de șir personalizat create cu pavilionul -N. Schimbarea locurilor -F și -X nu este necesară, deoarece pentru a șterge un lanț personalizat, trebuie mai întâi să ștergeți regulile, în caz contrar lanțul nu va fi șters și un mesaj de eroare va fi afișat.
Setări de înregistrare
După ce configurați iptables și ip6tables și performanța rețelei de testare, setările trebuie să fie stocate în directorul / etc în fișiere cu nume: iptables.conf și ip6tables.conf (de fapt, calea și numele de fișier, puteți alege la alegerea lor):
# iptables-save> /etc/iptables.conf
# ip6tables-save> /etc/ip6tables.conf
Mai târziu, în directorul /etc/network/if-pre-up.d ar trebui să creeze fișierul iptables (/etc/network/if-pre-up.d/iptables # atingere), face executabilă (# chmod + x / etc / rețea /if-pre-up.d/iptables) și completați-l cu următorul conținut:
#! / bin / sh
iptables-restore ip6tables-restore
Acum, de fiecare dată când serverul este încărcat, înainte ca rețeaua să fie pornită, iptables și ip6tables vor încărca regulile din /etc/iptables.conf și /etc/ip6tables.conf. Dacă trebuie să descărcați regulile după ce rețeaua este activată, fișierul iptables poate fi creat în directorul /etc/network/if-up.d.
O cale alternativă este folosirea utilitarului iptables-persistent.
Dacă nu restabiliți setările iptables după pornirea serverului, paravanul de protecție va fi pornit cu setările implicite, inclusiv setările implicite (ACCEPT) pentru lanțurile tabelului de filtrare: INPUT, OUTPUT și FORWARD.
De asemenea, nu uitați să opriți resetarea iptables pe cron, dacă una a fost preconfigurată.
Un test sigur al setărilor este iptables-apply
Iptables-aplicație utilă. pentru a testa în siguranță setările iptables pe un server de la distanță. Esența muncii sale este după cum urmează: se aplică noile setări din fișierul specificat pentru o anumită perioadă de timp (implicit 10 sec.), Iar dacă utilizatorul la consola nu confirma noile setări prin apăsarea butonului Y, reveniți la setările iptables care au fost noi aplicații suplimentare.
iptables-apply -t 15 new_iptable_conf
În exemplul de mai sus, iptables-aplica imediat după pornire va aplica setările de firewall din fișierul new_iptable_conf și așteaptă confirmarea de la utilizator timp de 15 secunde. Și dacă utilizatorul nu confirmă noua configurație, vechea va fi returnată. Formatul fișierului iptables-apply este identic cu cel al salvării setărilor cu iptables-save.
Ie Pentru a testa în siguranță setările iptables, trebuie să: scrieți configurația curentă în fișierul new_iptable_conf: iptables-save> new_iptable_conf. apoi editați acest fișier și după aceea este sigur să testați noii parametri cu iptables-apply: iptables-apply -t 15 new_iptable_conf.