iptables – Administrare de baza a regulilor de Firewall in linux

iptables – Administrare de baza a regulilor de Firewall in linux

Descriere

Utilitar pentru linia de comanda ce ajuta la cofigurarea firewall-ului dat de kernelul Linux.  Acesta este folosit pentru setarea, pastrarea si modificarea regulilor de filtrare a pachetelor din retea. Iptables foloseste lanturi (chains) ce sunt seturi de reguli stocate in tabele. Aplicatia are definite implicit 5 tabele si permite adaugarea de noi tabele:

  1.  raw – tabel folosit pentru definirea regulilor de marcare si urmarirea pachetelor

  2.  filter – tabelul folosit pentru filtrarea pachetelor de date in functie de regulile puse in firewall

  3.  nat – tabel folosit pentru redirectionarea porturilor/adreselor IP

  4.  mangle – tabel folosit pentru modificarea pachetelor

  5.  security  – tabel folosit de SELinux pentru accesul regulilor de retea

 Regulile stabilesc traseul pachetelor de retea. Daca un pachet indeplineste regulile specificate acesta este trimis catre o destinatie. Destinatia (tinta) este fie un nou lant de reguli, fie una dintre urmatoarele valori:

  • Accept : pachetului ii este permisa trecerea spre sistem pentru a fi prelucrat
  • Drop: pachetului nu ii este permisa trecerea
  • Return: pachetul se intoarce spre a fi verificat de alt lant de reguli
  • Log:  Informaţiile despre pachet sunt trimise la daemonul syslog pentru logare; Iptables continua procesarea pachetului
  • Reject: funcţionează ca DROP, dar va trimite un mesaj de eroare (“connection reset” sau “destination host unreachable” catre sursa pachetului

In acest tutorial vom lucra cu tabelul implicit filter. Acest tabel are definite 3 lanturi de reguli:

  • Input: lant folosit pentru controlul pachetelor de retea destinate spre server
  • Forward: lant folosit pentru controlul pachetelor care au alta destinatie, dar traveseaza serverul
  • Output: lant ce este folosit pentru filtrarea pachetelor ce pleaca din server

Optiuni iptables

Cele mai uzuale optiuni pentru ce insotesc comanda IPTABLES:

-t <-table-> : Dacă nu specificaţi o tabela, tabela filter este asumata. Aşa cum am discutat înainte, tabelele posibile pot fi: filter, NAT, mangle

-j <target> : Salt la lanţul ţintă specificat în momentul cand pachetul se potriveste cu regula actuală.

-A sau –append : Adauga o regula la sfarsitul chainului

-F : Flush. Sterge toate regulile din tabela selectata.

-p <protocol-type> : Potrivire cu protocolul icmp, tcp, udp sau  all

-s <ip-address> : Potrivire cu adresa IP sursa

-d <ip-address> : Potrivire cu adresa IP destinatie

-i <interface-name> : Potrivire cu interfata de retea prin care intra pachetul

-o <interface-name> : Potrivire cu interfata de retea prin care iese pachetul

-m –state <state> : ESTABLISHED, NEW, RELATED, INVALID

In acest articol este prezentata o mica parte din potentialul utilitarului iptables. Acesta permite folosirea a sute de combinatii de comenzi cu reguli complexe, insa momentan este recomandata intelegerea conceptului de baza.

Instalarea

Pentru instalarea iptables se ruleaza comanda:

Ubuntu:

apt-get install iptables

CentOS:

yum install iptables

Pentru a verifica regulile existente de firewall vom rula comanda:

iptables -L -v

Exemple de comenzi

Exemplu de comanda pentru definirea unui lant de reguli, folosind cele mai uzuale optiuni:

iptables -A -i <interface> -p <protocol (tcp/udp) > -s <source> –dport <port no.>  -j <target>

Exemplu de comanda pentru accesul pachetelor pe porturile ssh, http si ssl pe server

iptables -A INPUT -p tcp –dport 22 -j ACCEPT

iptables -A INPUT -p tcp –dport 80 -j ACCEPT

iptables -A INPUT -p tcp –dport 443 -j ACCEPT

Exemplu de comanda pentru accesul pachetelor de la o adresa IP

sudo iptables -A INPUT -s 11.12.13.14 -j ACCEPT

Exemplu de comanda pentru blocarea pachetelor de la o adresa IP

iptables -A INPUT -s 11.12.13.14 -j DROP

Exemplu de comanda ce permite accesul ssh catre o adresa destinatie, insa impiedica accesul ssh pe server pentru aceeasi adresa:

iptables -A INPUT -p tcp —dport ssh -s 11.12.13.14 -m state —state NEW -j DROP

iptables -A OUTPUT -p tcp —sport 22 -d 11.12.13.14. -m state —state NEW,ESTABLISHED -J ACCEPT

Logarea

Logarea actiunilor asupra pachetelor se face folosind tinta LOG. Locatia logurilor depinde de tipul de distributie Linux si poate sa fie /var/log/syslog (Ubuntu) sau /var/log/messages (CentOS). Tinta LOG se poate folosi cu optiunea – – log-prefix, pentru a facilita cautarea ulterioara. Ca exemplu vom loga pachetele ce intra in server si au ca destinatie portul http inainte de a le bloca:

iptables -A INPUT -p tcp –dport 80 -j LOG

iptables -A INPUT -p tcp –dport 80 -j DROP

Pentru a sterge o anumita regula, mai intai vom lista un anumit numar de reguli si ulterior vom sterge regula dorita (de exemplu 2) folosind numarul de inregistrare:

iptables -L –line-numbers

iptables -D INPUT 2

Exemplu de comanda pentru a sterge toate regulile existente:

iptables -F

Salvarea regulilor

Regulile definite prin iptables sunt salvate in memoria temporara a sistemului si nu vor fi aplicate atunci cand serverul este restartat. De accea trebuie rulata comanda de salvare:  

Ubuntu:
/sbin/iptablessave

CentOS:
/sbin/service iptables save

sau

/etc/init.d/iptables save

Concluzie

Dupa cum observati, iptables este un utilitar versatil prin care se poate permite sau bloca accesul traficului de retea pe diferite distributii Linux. O folosire efectiva / in totalitate presupune setarea unei configurari de baza, la care se adauga reguli. Configurarea de baza va permite sa creati structura pentru permiterea sau blocarea traficului in general pentru ca apoi, prin adaugarea regulilor specific pentru porturi, protocoale si adrese IP sa puteti perfectiona structura firewall-ului.

Daca sunteti interesati in a citi mai multe despre iptables, aceasta este o buna resursa, la fel ca si manualul iptables.

Adauga un comentariu