This is an old revision of the document!


4. [5p] Blocare completă a traficului

Prezentare scurtă iptables (dați click)

Prezentare scurtă iptables (dați click)

iptables este un utilitar Linux care oferă și rol de firewall software. iptables folosește suportul nucleului pentru a intercepta pachete de rețea în diverse puncte ale trecerii acestora prin nucleu și a efectua acțiuni asupra acestora. Astfel de acțiuni sunt:

  • acceptarea pachetului (ACCEPT)
  • respingerea pachetului (REJECT)
  • aruncarea pachetului (DROP), similar cu respingerea dar nu se transmite nici o notificare de respingere către cel care a transmis pachetul inițial

O diagramă a drumului urmat de un pachet de rețea în nucleu este aici.

Comanda iptables înseamnă lucrul cu reguli de filtrare de la nivelul nucleului. În mod obișnuit se va preciza:

  • tipul de operație pe regulă (adăugare, ștergere, înlocuire, inserare)
  • punctul din nucleul în care trebuie să se găsească pachetul pentru a se aplica regula
  • regula în sine

De exemplu, comanda de mai jos are semnificația descrisă în continuare:

iptables -A FORWARD -d green -p tcp --dport telnet -j REJECT
  • -A: se adaugă regulă (este vorba de append, se adaugă la finalul listei de reguli);
  • FORWARD: regula se aplică pachetelor care vor fi rutate; alte variante sunt INPUT (pachetele primite direct de sistem) și OUTPUT (pachetele care pleacă de la sistem);
  • -d green: sunt selectate pachetele care au ca destinație adresa stației green;
  • -p tcp: pachetele selectate sunt pachete TCP;
  • --dport telnet: portul TCP destinație este portul specific protocolului telnet (adică portul 23, identificat din fișierul /etc/services)
  • -j REJECT: pachetul este respins

În tabela de filtrare aferentă iptables vom avea, așadar, o listă de reguli care sunt parcurse secvențial. Partea -A FORWARD identifică lanțul de reguli, partea -d green -p tcp --dport telnet este partea de match (ce pachete fac match pe regulă), iar partea -j REJECT este partea de acțiune (ce face regula cu pachetul).

Pentru început verificați că stația red poate accesa alte stații din rețea. Rulați comanda

root@red:~# ping -c 2 green
PING green (192.168.2.2) 56(84) bytes of data.
64 bytes from green (192.168.2.2): icmp_req=1 ttl=63 time=0.076 ms
64 bytes from green (192.168.2.2): icmp_req=2 ttl=63 time=0.067 ms
 
--- green ping statistics ---
2 packets transmitted, 2 received, 0% packet loss, time 999ms
rtt min/avg/max/mdev = 0.067/0.071/0.076/0.009 ms

Asocierile între porturi și protocoale (21 și FTP, 22 și SSH, 23 și telnet) sunt cele implicite. Acest lucru nu împiedică însă un administrator să configureze un serviciu să asculte pe un port diferit de cel implicit. Pentru a preveni transferul de fișiere și conectare de la distanță pe stația red vom bloca accesul la toate porturile. Pentru aceasta vom configura stația host pentru a bloca întreg traficul de la stația red.

root@host:~# iptables -A FORWARD -s red -j REJECT
root@host:~# iptables -L FORWARD -n -v
Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination         
    0     0 REJECT     all  --  *      *       192.168.1.2          0.0.0.0/0            reject-with icmp-port-unreachable

Comanda blochează întreg traficul de la stația red (opțiunea -s) pe care stația host l-ar fi rutat (lanțul FORWARD).

Verificați că stația red nu poate accesa alte stații. Rulați comenzile

root@red:~# ping -c 2 green
PING green (192.168.2.2) 56(84) bytes of data.
From host (192.168.1.1) icmp_seq=1 Destination Port Unreachable
From host (192.168.1.1) icmp_seq=2 Destination Port Unreachable
 
--- green ping statistics ---
2 packets transmitted, 0 received, +2 errors, 100% packet loss, time 999ms
 
root@red:~# telnet green
Trying 192.168.2.2...
telnet: Unable to connect to remote host: Connection refused
 
root@red:~# ftp green
ftp: connect: Connection refused
ftp> exit
 
root@red:~# ssh -l student green
ssh: connect to host green port 22: Connection refused

Observați că nu mai sosesc pachete de răspuns (sunt respinse de stația host), deci traficul de la stația red este blocat.

rl/labs/08/contents/04.1606812996.txt.gz · Last modified: 2020/12/01 10:56 by iulia.florea
CC Attribution-Share Alike 3.0 Unported
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0