Gestionarea traficului de rețea este una dintre cele mai dificile sarcini cu care trebuie să se ocupe administratorii de sistem. El trebuie configurați paravanul de protecție în așa fel încât să îndeplinească cerințele sistemului și ale utilizatorilor pentru conexiunile de intrare și de ieșire, fără a lăsa sistemul vulnerabil la atacuri.
Aici e locul iptables
veni la îndemână. Iptables este un paravan de protecție linie de comandă Linux care permite administratorilor de sistem să gestioneze traficul de intrare și de ieșire printr-un set de reguli de tabel configurabile.
Iptables folosește un set de tabele care au lanțuri care conțin set de reguli încorporate sau definite de utilizator. Datorită acestora, un administrator de sistem poate filtra în mod corespunzător traficul de rețea al sistemului său.
În manualul iptables, există în prezent 3 tipuri de tabele:
FILTRU
- acesta este tabelul implicit, care conține lanțurile încorporate pentru: NAT
- un tabel care este consultat atunci când un pachet încearcă să creeze o nouă conexiune. Are următoarele încorporate: CALANDRU
- acest tabel este utilizat pentru modificarea pachetelor. Până la versiunea kernel 2.4 acest tabel avea doar două lanțuri, dar acum sunt 5: În acest articol, veți vedea câteva comenzi utile care vă vor ajuta să gestionați paravanul de protecție Linux box prin iptables. În scopul acestui articol, voi începe cu comenzi mai simple și voi merge la mai complex până la capăt.
În primul rând, ar trebui să știți cum să gestionați serviciul iptables în diferite distribuții Linux. Acest lucru este destul de ușor:
Pe Cent / RHEL 7 și Fedora 22+ # systemctl pornește iptables. # systemctl stop iptables. # systemctl reporniți iptables.
Pe Cent / RHEL 6/5 și Fedora # /etc/init.d/iptables start # /etc/init.d/iptables stop. # /etc/init.d/iptables reporniți.
Dacă doriți să verificați regulile existente, utilizați următoarea comandă:
# iptables -L -n -v.
Aceasta ar trebui să returneze o ieșire similară cu cea de mai jos:
Lanț INPUT (politică ACCEPT pachete 1129K, 415M octeți) pkts octeți țintă prot opțiune în sursa de ieșire destinație 0 0 ACCEPT tcp - lxcbr0 * 0.0.0.0/0 0.0.0.0/0 tcp dpt: 53 0 0 ACCEPT udp - lxcbr0 * 0.0.0.0/0 0.0.0.0/0 udp dpt: 53 0 0 ACCEPT tcp - lxcbr0 * 0.0.0.0/0 0.0.0.0/0 tcp dpt: 67 0 0 ACCEPT udp - lxcbr0 * 0.0.0.0/0 0.0.0.0/0 udp dpt: 67
Chain FORWARD (politică ACCEPT 0 pachete, 0 octeți) pkts octeți țintă prot opt în ieșire sursă destinație 0 0 ACCEPTE toate - * lxcbr0 0.0.0.0/0 0.0.0.0/0 0 0 ACCEPTE toate - lxcbr0 * 0.0.0.0/ 0 0.0.0.0/0
Ieșire în lanț (politică ACCEPT 354K pachete, 185M octeți) pkts octeți țintă prot opt în ieșire sursă destinație
Dacă preferați să verificați regulile pentru un anumit tabel, puteți utiliza -t
opțiune urmată de tabelul pe care doriți să îl verificați. De exemplu, pentru a verifica regulile din NAT
masă, puteți utiliza:
# iptables -t nat -L -v -n.
Dacă găsiți o activitate neobișnuită sau abuzivă de la o adresă IP, puteți bloca adresa IP respectivă cu următoarea regulă:
# iptables -A INPUT -s xxx.xxx.xxx.xxx -j DROP.
Unde trebuie să te schimbi „xxx.xxx.xxx.xxx”
cu adresa IP reală. Fiți foarte atenți când rulați această comandă, deoarece vă puteți bloca accidental propria adresă IP. -A
opțiunea adaugă regula la sfârșitul lanțului selectat.
În cazul în care doriți doar să blocați TCP trafic de la acea adresă IP, puteți utiliza fișierul -p
opțiune care specifică protocolul. În acest fel, comanda va arăta astfel:
# iptables -A INPUT -p tcp -s xxx.xxx.xxx.xxx -j DROP.
Dacă ați decis că nu mai doriți să blocați cererile de la o anumită adresă IP, puteți șterge regula de blocare cu următoarea comandă:
# iptables -D INPUT -s xxx.xxx.xxx.xxx -j DROP.
-D
opțiunea șterge una sau mai multe reguli din lanțul selectat. Dacă preferați să utilizați opțiunea mai lungă, puteți utiliza --șterge
.
Uneori poate doriți să blocați conexiunile de intrare sau de ieșire pe un anumit port. Este o măsură bună de securitate și ar trebui să vă gândiți cu adevărat la această problemă atunci când vă configurați firewall-ul.
Pentru a bloca conexiunile de ieșire pe un anumit port utilizați:
# iptables -A OUTPUT -p tcp --dport xxx -j DROP.
Pentru a permite conexiunile primite utilizați:
# iptables -A INPUT -p tcp --dport xxx -j ACCEPT.
În ambele exemple se schimbă „xxx”
cu portul real pe care doriți să-l permiteți. Dacă doriți să blocați UDP trafic în loc de TCP, pur și simplu schimbați „tcp”
cu "udp"
în regula iptables de mai sus.
Puteți permite mai multe porturi simultan, utilizând multiport, mai jos puteți găsi o astfel de regulă atât pentru conexiunile de intrare, cât și pentru cele de ieșire:
# iptables -A INPUT -p tcp -m multiport --dports 22,80,443 -j ACCEPT. # iptables -A OUTPUT -p tcp -m multiport --sports 22,80,443 -j ACCEPT.
Poate doriți să limitați anumite conexiuni pe un anumit port la o anumită rețea. Să presupunem că doriți să permiteți conexiuni de ieșire pe port 22
la rețea 192.168.100.0/24
.
O puteți face cu această comandă:
# iptables -A OUTPUT -p tcp -d 192.168.100.0/24 --dport 22 -j ACCEPT.
Unora dintre angajatori le place să blocheze accesul la Facebook angajaților lor. Mai jos este un exemplu de blocare a traficului către Facebook.
Notă: Dacă sunteți administrator de sistem și trebuie să aplicați aceste reguli, rețineți că s-ar putea ca colegii dvs. să nu mai vorbească cu dvs. :)
Mai întâi găsiți adresele IP folosite de Facebook:
# host facebook.com facebook.com are adresa 66.220.156.68.
# whois 66.220.156.68 | grep CIDR. CIDR: 66.220.144.0/20.
Apoi puteți bloca acea rețea Facebook cu:
# iptables -A OUTPUT -p tcp -d 66.220.144.0/20 -j DROP.
Rețineți că intervalul de adrese IP utilizat de Facebook poate varia în țara dvs.
Uneori poate doriți să redirecționați traficul unui serviciu către alt port. Puteți realiza acest lucru cu următoarea comandă:
# iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 25 -j REDIRECT --to-port 2525.
Comanda de mai sus redirecționează tot traficul de pe interfața de rețea eth0
, din port 25
la port 2525
. Puteți schimba porturile cu cele de care aveți nevoie.
Uneori, adresele IP pot solicita prea multe conexiuni către porturile web de pe site-ul dvs. web. Acest lucru poate cauza numeroase probleme și pentru a preveni astfel de probleme, puteți utiliza următoarea regulă:
# iptables -A INPUT -p tcp --port 80 -m limit --limit 100 / minute --limit-burst 200 -j ACCEPT.
Comanda de mai sus limitează conexiunile primite de la pe minut la 100
și stabilește o limită de explozie la 200
. Puteți modifica limita și limita-rafală la propriile cerințe specifice.
Unora dintre administratorii de sistem le place să blocheze cererile de ping primite din motive de securitate. Deși amenințarea nu este atât de mare, este bine să știți cum să blocați o astfel de solicitare:
# iptables -A INPUT -p icmp -i eth0 -j DROP.
Acces Loopback (acces de la 127.0.0.1
) este important și ar trebui să îl lăsați întotdeauna activ:
# iptables -A INPUT -i lo -j ACCEPT. # iptables -A OUTPUT -o lo -j ACCEPT.
Dacă doriți să înregistrați pachetele abandonate pe interfața de rețea eth0
, puteți utiliza următoarea comandă:
# iptables -A INPUT -i eth0 -j LOG --log-prefix "IPtables a scăzut pachete:"
Puteți modifica valoarea după "--log-prefix"
cu ceva la alegere. Mesajele sunt autentificate /var/log/messages
și le puteți căuta cu:
# grep "IPtables a renunțat la pachete:" / var / log / messages.
Puteți bloca accesul la sistemul dvs. de la o anumită adresă MAC utilizând:
# iptables -A INPUT -m mac --mac-source 00: 00: 00: 00: 00: 00 -j DROP.
Desigur, va trebui să vă schimbați "00:00:00:00:00:00"
cu adresa MAC reală pe care doriți să o blocați.
Dacă nu doriți să aveți prea multe conexiuni simultane stabilite de la o singură adresă IP pe un anumit port, puteți utiliza comanda de mai jos:
# iptables -A INPUT -p tcp --syn --dport 22 -m connlimit --connlimit-above 3 -j REJECT.
Comanda de mai sus nu permite mai mult de 3
conexiuni per client. Desigur, puteți schimba numărul portului pentru a se potrivi cu servicii diferite. De asemenea --conlimit-above
ar trebui să fie modificat pentru a corespunde cerințelor dvs.
Odată ce ați definit regulile iptables, veți dori să căutați din când în când și poate fi necesar să le modificați. O modalitate ușoară de a căuta în regulile dvs. este să utilizați:
# iptables -L $ table -v -n | grep $ string.
În exemplul de mai sus, va trebui să vă schimbați $ masa
cu tabelul propriu-zis în care doriți să căutați și $ string
cu șirul propriu-zis pentru care căutați.
Iată un exemplu:
# iptables -L INPUT -v -n | grep 192.168.0.100.
Cu iptables, puteți să vă definiți propriul lanț și să stocați reguli personalizate în acesta. Pentru a defini un lanț, utilizați:
# iptables -N filtru personalizat.
Acum puteți verifica dacă noul dvs. filtru este acolo:
# iptables -L.
Lanț INPUT (politica ACCEPTĂ) destinație sursă prot opt țintă.
Lanț înainte (politica ACCEPTĂ) destinație sursă prot opt țintă
Ieșirea lanțului (politica ACCEPTĂ) destinație sursă prot opt țintă
Lanţ filtru customizat(0 referințe) destinație sursă prot opt țintă
Dacă doriți să spălați lanțurile firewall, puteți utiliza:
# iptables -F.
Puteți spăla lanțuri de la o masă specifică cu:
# iptables -t nat -F.
Puteți schimba "nat"
cu masa propriu-zisă care lanțuri pe care doriți să le spălați.
Dacă doriți să salvați regulile firewall-ului, puteți utiliza fișierul iptables-salvați
comanda. Puteți utiliza următoarele pentru a salva și stoca regulile într-un fișier:
# iptables-save> ~ / iptables.rules.
Depinde de dvs. unde veți stoca fișierul și cum îl veți denumi.
Dacă doriți să restaurați o listă de reguli iptables, puteți utiliza iptables-restaurare
. Comanda arată astfel:
# iptables-restoreDesigur, calea către fișierul dvs. de reguli ar putea fi diferită.
21. Configurați regulile IPtables pentru conformitate PCI
Unii administratori de sistem ar putea fi obligați să își configureze serverele pentru a fi compatibile cu PCI. Există multe cerințe ale diferiților furnizori de conformitate PCI, dar sunt puține cele comune.
În multe dintre cazuri, va trebui să aveți mai multe adrese IP. Va trebui să aplicați regulile de mai jos pentru adresa IP a site-ului. Fiți foarte atenți atunci când utilizați regulile de mai jos și utilizați-le numai dacă sunteți sigur de ceea ce faceți:
# iptables -I INPUT -d SITE -p tcp -m multiport --dports 21,25,110,143,465,587,993,995 -j DROP.Dacă utilizați cPanel sau un panou de control similar, poate fi necesar să blocați și porturile acestuia. Iată un exemplu:
# iptables -I in_sg -d DEDI_IP -p tcp -m multiport --dports 2082,2083,2095,2096,2525,2086,2087 -j DROP.Notă: Pentru a vă asigura că îndepliniți cerințele furnizorului PCI, verificați cu atenție raportul acestora și aplicați regulile necesare. În unele cazuri, poate fi necesar să blocați traficul UDP și pe anumite porturi.
22. Permiteți conexiuni stabilite și conexe
Deoarece traficul de rețea este separat de cel de intrare și de ieșire, va trebui să permiteți traficul de intrare stabilit și conex. Pentru conexiunile primite, faceți acest lucru cu:
# iptables -A INPUT -m conntrack --ctstate STABILIT, RELATAT -j ACCEPT.Pentru utilizare exterioară:
# iptables -A OUTPUT -m conntrack --ctstate ESTABLISHED -j ACCEPT.23. Plasați pachetele nevalide în IPtables
Este posibil să aveți unele pachete de rețea marcate ca nevalide. Unele persoane pot prefera să înregistreze acele pachete, dar altele preferă să le renunțe. Pentru a renunța la pachetele nevalide, puteți utiliza:
# iptables -A INPUT -m conntrack --ctstate INVALID -j DROP24. Blocați conexiunea pe interfața de rețea
Unele sisteme pot avea mai multe interfețe de rețea. Puteți limita accesul la acea interfață de rețea sau puteți bloca conexiunile de la anumite adrese IP.
De exemplu:
# iptables -A INPUT -i eth0 -s xxx.xxx.xxx.xxx -j DROP.Schimbare „Xxx.xxx.xxx.xxx” cu adresa IP reală (sau rețea) pe care doriți să o blocați.
25. Dezactivați mesajele trimise prin IPTables
Dacă sistemul dvs. nu ar trebui să trimită e-mailuri, puteți bloca porturile de ieșire de pe porturile SMTP. De exemplu, puteți utiliza acest lucru:
# iptables -A OUTPUT -p tcp --dports 25.465.587 -j REJECT.Concluzie
Iptables este un firewall puternic de care puteți beneficia cu ușurință. Este vital pentru fiecare administrator de sistem să învețe cel puțin elementele de bază ale iptables. Dacă doriți să găsiți informații mai detaliate despre iptables și opțiunile sale, vă recomandăm să citiți manualul:
# om iptables.Dacă credeți că ar trebui să adăugăm mai multe comenzi la această listă, vă rugăm să ni le împărtășiți, trimițându-le în secțiunea de comentarii de mai jos.