Si të konfiguroni telefonat inteligjentë dhe PC. Portali informativ
  • në shtëpi
  • Gabimet
  • Konceptet themelore të iptables në Linux. Vendosja e netfilterit me iptables

Konceptet themelore të iptables në Linux. Vendosja e netfilterit me iptables

Detyra kryesore muri i zjarrit(firewall) filtrimi dhe përpunimi i paketave që kalojnë nëpër rrjet. Kur analizoni një paketë hyrëse, muri i zjarrit vendos fatin e kësaj pakete: hidhni paketën ( RËZË), pranoni paketën ( PRANOJ) ose bëni diçka tjetër me të.

V Linux muri i zjarrit është një modul kernel i quajtur netfilter dhe është një grup grepash për të punuar me stakun e rrjetit. Ndërfaqja për modifikimin e rregullave me të cilat muri i zjarrit përpunon paketat është mjeti i dobishëm iptables për IPv4 dhe shërbime ip6 tabela për IPv6.

E gjithë puna e filtrimit të trafikut kryhet nga bërthama e sistemit. Iptables nuk është një demon dhe nuk krijon procese të reja në sistem. Aktivizo ose çaktivizoje iptables thjesht po dërgon një sinjal në kernel. Shpejtësia e lartë e filtrimit arrihet duke analizuar vetëm titujt e paketave.

Tek veçoritë kryesore iptables lidhen:

  • filtrimi i trafikut bazuar në adresat e dërguesit dhe marrësit të paketave, numrat e portave;
  • ridrejtimi i paketave sipas parametrave të caktuar;
  • organizimi i aksesit në rrjet (SNAT);
  • përcjellja e portit nga rrjeti global në rrjetin lokal (DNAT);
  • kufizimi i numrit të lidhjeve;
  • vendosja e kuotave të trafikut;
  • zbatimi i rregullave sipas orarit;

Le të shqyrtojmë procesin kryesor të punës iptables(burimi i imazhit rigacci.org).

Paketa hyrëse së pari arrin në pajisjen e rrjetit, pas së cilës kapet nga drejtuesi dhe transmetohet në kernel. Pas kësaj, paketa kalon nëpër një numër tabelash dhe vetëm atëherë ajo transmetohet në aplikacionin lokal ose ridrejtohet në një sistem tjetër, nëse është një paketë transit.

V iptables përdoren tre lloje tabelash:

  1. lëmsh- përdoret për të bërë ndryshime në kokën e paketës;
  2. nat- përdoret për të përkthyer adresat e rrjetit;
  3. filtër- për të filtruar trafikun;

Tavolinë e rrafshët

Qëllimi kryesor i tabelës lëmsh- duke bërë ndryshime në kokën e paketës. Në këtë tabelë mund të kryhen veprimet e mëposhtme:

  • vendosja e bitit të llojit të shërbimit;
  • vendosja e fushës Time To Live;
  • vendosja e një etikete në një paketë që mund të kontrollohet në rregulla të tjera;

Zinxhirët në tavolinë lëmsh:

  • PARAPROUTING- përdoret për të bërë ndryshime në paketat në hyrje të iptables, përpara se të vendosni për rrugëtimin;
  • POSTROUTING- përdoret për të bërë ndryshime në paketa në dalje nga iptables, pasi të vendoset për rrugëtimin;
  • HYRJE- përdoret për të bërë ndryshime në paketa përpara se ato të transferohen në aplikacionin lokal;
  • PRODHIM- përdoret për të modifikuar paketat që vijnë nga aplikacioni brenda iptables;
  • PËRPARA- përdoret për të bërë ndryshime në paketat tranzit;

Tabela Nat

Tabela përdoret për përkthimin e adresës së rrjetit dhe kur haset një paketë për të krijuar një lidhje të re. Në këtë tabelë mund të kryhen veprimet e mëposhtme:

  • DNAT (Përkthimi i adresës së rrjetit të destinacionit)- konvertimi i adresës së destinacionit në kokën e paketës;
  • SNAT (Përkthimi i adresës së rrjetit burimor)- ndryshimi i adresës së burimit të paketës;
  • MASKARADA- përdoret për të njëjtat qëllime si SNAT por ju lejon të punoni me adresa IP dinamike;

Zinxhirët në këtë tabelë:

  • PARAPROUTING- përdoret për të bërë ndryshime në pako në hyrje të iptables;
  • PRODHIM- përdoret për të përkthyer adresat në pako përpara rrugëtimit të mëtejshëm;
  • POSTROUTING- përdoret për konvertimin e paketave përpara dërgimit të tyre në rrjet;

Tabela e filtrit

Tabela përdoret për filtrimin e paketave. Ekzistojnë tre zinxhirë në këtë tabelë:

  1. HYRJE- zinxhir për paketat hyrëse;
  2. PËRPARA- zinxhir për paketat e përcjella (transit);
  3. PRODHIM- zinxhir për paketat dalëse;

Një paketë që kalon nëpër këto zinxhirë mund t'i nënshtrohet veprimeve: PRANOJ, RËZË, REFUZOJE, REGJISTRI.

Për ta përmbledhur, paketa e mbërritur kalon nëpër zinxhirin e rregullave. Çdo rregull përmban gjendje dhe qëllimi(veprim). Nëse paketa plotëson kushtin, atëherë ajo dërgohet në objektiv, përndryshe rregulli tjetër në zinxhir zbatohet në paketë. Nëse paketa nuk plotëson asnjë nga kushtet në zinxhir, atëherë veprimi i paracaktuar zbatohet për të.

Zinxhir tabela
filtër nat lëmsh
HYRJE + +
PËRPARA + +
PRODHIM + + +
PARAPROUTING + +
POSTROUTING + +

Shërbimi Iptables

Instalimi i iptables

# për Arch Linux yaourt -S iptables # Për Ubuntu sudo apt-get instaloni iptables

Duke ekzekutuar iptables

# nën Arch Linux sudo systemctl aktivizoni iptables sudo systemctl start iptables # Nën shërbimin sudo të Ubuntu nisin iptables

Rregullat e ruajtjes

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

Rivendosja e rregullave nga një skedar

Iptables-rivendos< firewall-config

Çdo rregull në iptablesështë një linjë e veçantë e formuar sipas rregullave të caktuara dhe që përmban kritere dhe veprime. Në terma të përgjithshëm, rregulli ka formatin e mëposhtëm:

Komanda Iptables [-t table]

  • tabela t - specifikon emrin e tabelës për të cilën do të krijohet rregulli;
  • komanda - një komandë që përcakton një veprim iptables- shtoni një rregull, fshini një rregull, etj .;
  • përputhje - vendos kriteret e testimit me të cilat përcaktohet nëse një paketë i nënshtrohet rregullit apo jo;
  • objektivi / kërcimi - çfarë veprimi duhet të kryhet kur kriteri plotësohet;

Komandat e Iptables:

  • -A - shtoni një rregull në zinxhir, rregulli do të shtohet në fund të zinxhirit;
  • -D - hiqni rregullin nga zinxhiri;
  • -R - zëvendësoni një rregull me një tjetër;
  • -I - fut një rregull të ri në zinxhir;
  • -L - shfaq listën e rregullave në zinxhirin e specifikuar;
  • -F - pastron të gjitha rregullat në zinxhirin e specifikuar;
  • -Z - rivendosni të gjithë numëruesit në zinxhirin e specifikuar;
  • -N - krijoni një zinxhir të ri me emrin e specifikuar;
  • -X - fshini zinxhirin;
  • -P - vendos politikën e paracaktuar për zinxhirin;
  • -E - riemërtoni zinxhirin e përdoruesit;

Shembuj të komandave të Iptables

Paketat mund të filtrohen sipas parametrave të mëposhtëm:

Burimi i paketës

Opsioni -s përdoret për të filtruar sipas burimit. Për shembull, ne do të mohojmë të gjitha paketat hyrëse nga hosti 192.168.1.95:

Iptables -A INPUT -s 192.168.1.95 -j DROP

Ju mund të përdorni një emër domaini për të specifikuar adresën e hostit:

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

Ju gjithashtu mund të specifikoni të gjithë për rrjetin:

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

Mund të përdorni edhe mohimin (shenjën!). Për shembull, të gjitha paketat nga hostet përveç 192.168.1.96 do të fshihen:

Iptables -NJË HYRJE! -s 192.168.1.96 -j DROP

Lejo që trafiku të rrjedhë në localhost:

Iptables -A INPUT 1 -i lo -j PRANOJ

Regjistrimi i përpjekjeve për mashtrim me prefiksin "IP_SPOOF A:" dhe heqja e lidhjes

Iptables -A INPUT -i eth1 -s 10.0.0.0/8 -j LOG --log-prefiksi "IP_SPOOF A:" iptables -A INPUT -i eth1 -s 10.0.0.0/8 -j DROP

Adresa e destinacionit

Për ta bërë këtë, duhet të përdorni opsionin -d. Për shembull, ne do t'i mohojmë të gjitha paketat dalëse te hosti 192.168.1.95:

Iptables -A OUTPUT -d 192.168.156.156 -j DROP

Refuzo qasjen në burim

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

Ashtu si në rastin e burimit të paketës, mund të përdorni adresat për rrjetet dhe emrat e domeneve. Mohimi gjithashtu funksionon.

Protokolli

Opsioni -p tregon protokollin. Mund të përdoret të gjitha, icmp, tcp, udp ose numrin e protokollit (nga / etj / protokollet).

Lejo kërkesat e jehonës hyrëse

Iptables -A INPUT -p icmp --icmp-lloj jehonë-kërkesë -j ACCEPT

Porta e burimit

Lejo të gjitha paketat dalëse nga porti 80:

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

Blloko të gjitha kërkesat hyrëse në portin 80:

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

Për të specifikuar portin, duhet të specifikoni protokollin (tcp ose udp). Mund të përdoret mohimi.

Hap gamën e portit

Iptables -A INPUT -m gjendje --state NEW -m tcp -p tcp --dport 7000: 7010 -j ACCEPT

Porti i destinacionit

Lejo lidhjet HTTP

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

Lejon marrjen e të dhënave nga serveri DHCP

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

  • Telekomanda shfrytëzimi i gabimeve të softuerit për ta bërë atë jofunksional;
  • Përmbytje- dërgimi i një numri të madh të paketave të pakuptimta në adresën e viktimës. Objektivi i përmbytjes mund të jetë një kanal komunikimi ose burime makinerie. Në rastin e parë, rryma e paketave merr të gjithë gjerësinë e brezit dhe nuk i jep makinës së sulmuar aftësinë për të përpunuar kërkesat legjitime. Në të dytin, burimet e makinës kapen duke përdorur thirrje të shumta dhe shumë të shpeshta për çdo shërbim që kryen një operacion kompleks dhe intensiv me burime. Kjo mund të jetë, për shembull, një thirrje e gjatë në një nga komponentët (skriptin) aktiv të serverit në internet. Serveri shpenzon të gjitha burimet e makinës në përpunimin e kërkesave të sulmuesit, dhe përdoruesit duhet të presin. Përmbytja mund të jetë e ndryshme: përmbytje ICMP, përmbytje SYN, përmbytje UDP dhe përmbytje HTTP

Mbledhja e informacionit në lidhje me lidhjet e rrjetit

Shikoni lidhjet e hapura

Netstat -ntu | awk "(print 5 $)" | prerë -d: -f1 | renditi | uniq -c | rendit -n

Numri i lidhjeve në portën 80

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

Deponimi i lidhjes TCP (në cilin domen shkojnë më shpesh kërkesat)

Domeni i portit Tcpdump -npi eth0

Vërshimet SYN mund të kontrollohen duke numëruar numrin e lidhjeve gjysmë të hapura TCP

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

Mbrojtje kundër llojeve të ndryshme të përmbytjeve.

Përmbytja e ICMP. Një metodë shumë primitive e bllokimit të gjerësisë së brezit dhe krijimit të ngarkesave në grupin e rrjetit përmes dërgimit monoton të kërkesave ICMP ECHO (ping). Ai zbulohet lehtësisht duke analizuar fluksin e trafikut në të dy drejtimet: gjatë një sulmi të përmbytjes ICMP, ato janë pothuajse identike. Një mënyrë pothuajse pa dhimbje e mbrojtjes absolute bazohet në çaktivizimin e përgjigjeve ndaj kërkesave të ICMP ECHO:

Sysctl net.ipv4.icmp_echo_ignore_all = 1

Ose duke përdorur iptabels:

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

SYN përmbytje. Një nga mënyrat e zakonshme jo vetëm për të bllokuar kanalin e komunikimit, por edhe për të vendosur grupin e rrjetit të sistemit operativ në një gjendje ku nuk mund të pranojë më kërkesa për lidhje të reja. Bazuar në një përpjekje për të inicializuar një numër të madh lidhjesh të njëkohshme TCP duke dërguar një paketë SYN me një adresë kthimi që nuk ekziston. Pas disa përpjekjeve për të dërguar një paketë përgjigjeje ACK në një adresë të paarritshme, shumica e sistemeve operative do të vendosin në radhë lidhjen e parregulluar. Dhe vetëm pas përpjekjes së n-të lidhja mbyllet. Meqenëse fluksi i paketave ACK është shumë i madh, së shpejti radha mbushet dhe kerneli refuzon të përpiqet të hapë një lidhje të re. Bots më të zgjuar DoS gjithashtu analizojnë sistemin përpara fillimit të një sulmi në mënyrë që të dërgojnë kërkesa vetëm për të hapur portet vitale. Është e lehtë të identifikosh një sulm të tillë: thjesht përpiquni të lidheni me një nga shërbimet.

Konceptet kryesore në iptables janë:

    Rregulla - përbëhet nga një kriter, një veprim dhe një numërues. Nëse paketa përputhet me kriterin, një veprim zbatohet në të dhe numërohet. Kriteri mund të ekzistojë ose të mos ekzistojë - atëherë kriteri "të gjitha paketat" supozohet në mënyrë implicite. Gjithashtu nuk është e nevojshme të specifikoni një veprim - në mungesë të një veprimi, rregulli do të funksionojë vetëm si një numërues. Rregullat për secilin zinxhir aktivizohen sipas radhës që shfaqen, kështu që rendi është i rëndësishëm.

    • Kriteri është një shprehje boolean që analizon vetitë e një pakete dhe/ose një lidhjeje dhe përcakton nëse kjo paketë e veçantë përputhet me rregullin aktual. Kriteret lidhen me "DHE" logjike.

      Veprimi - një përshkrim i veprimit që do të kryhet me paketën dhe/ose lidhjen nëse ato bien në objektin e këtij rregulli. Veprimet do të përshkruhen më në detaje më poshtë.

      Counter është një komponent i një rregulli që siguron llogaritjen e numrit të paketave që bien nën kriterin e këtij rregulli. Numëruesi gjithashtu merr parasysh vëllimin e përgjithshëm të paketave të tilla në bajt.

    Një zinxhir është një sekuencë e renditur rregullash. Zinxhirët mund të ndahen në me porosi dhe bazë.

    • Zinxhiri bazë është zinxhiri i krijuar si parazgjedhje kur tabela inicializohet. Çdo paketë, në varësi të faktit nëse është e destinuar për vetë hostin, e krijuar prej tij, apo është kalimtare, duhet të kalojë nëpër grupin e saj të caktuar të zinxhirëve bazë të tabelave të ndryshme. Përveç kësaj, zinxhiri bazë ndryshon nga zinxhiri i përdoruesit në atë që ka një "politikë të parazgjedhur". Ky veprim vlen për ato paketa që nuk janë përpunuar nga rregullat e tjera të këtij zinxhiri dhe zinxhirët e thirrur prej tij. Emrat e zinxhirëve bazë janë gjithmonë me shkronja të mëdha (PREROUTING, INPUT, FORWARD, OUTPUT, POSTROUTING).

      Zinxhiri i personalizuar - Një zinxhir i krijuar nga përdoruesi. Mund të përdoret vetëm brenda tabelës së vet. Rekomandohet që të mos përdorni emra me shkronja të mëdha për vargje të tilla për të shmangur konfuzionin me vargjet bazë dhe veprimet inline.

    Një tabelë është një koleksion zinxhirësh bazë dhe me porosi, të bashkuar nga një qëllim i përbashkët funksional. Emrat e tabelave (si dhe modulet e kritereve) shkruhen me shkronja të vogla, pasi, në parim, ato nuk mund të bien ndesh me emrat e zinxhirëve të përdoruesve. Kur thirret komanda iptables, tabela specifikohet në formatin -t table_name. Nëse nuk specifikohet në mënyrë eksplicite, përdoret tabela e filtrit.

Analiza:

# Filtri i rregullave të tabelës së hedhjes$ sudo iptables-save -c -t filter # Filter Tabela * filter # Zinxhirët INPUT, FORWARD, OUTPUT, politikat dhe numëruesit e tyre: PRANIMI I HYRJES [19302: 9473669]: PRANOJA PËRPARA [0: 0]: PRANIMI I INPUTIT [5462736: 4247599532] # Rregulla: "" - numëruesi i rregullave, "-A INPUT" - zinxhir, "-i em1 -p tcp -m tcp --dport 22" - kriteret, "-j ACCEPT" - veprim[17: 1020] -A HYRJE -i em1 -p tcp -m tcp --dport 22 -j PRANO KOMITET

Arkitekturë

Në sistemin netfilter, paketat kalohen përmes zinxhirëve. Një zinxhir është një listë e renditur rregullash dhe çdo rregull mund të përmbajë kritere dhe një veprim ose tranzicion. Kur një paketë kalon nëpër zinxhir, sistemi netfilter kontrollon nga ana tjetër nëse paketa i plotëson të gjitha kriteret e rregullit tjetër dhe nëse po, atëherë kryen një veprim (nëse nuk ka kritere në rregull, atëherë veprimi kryhet për të gjitha paketat që kalojnë nëpër rregull). Ka shumë opsione për kriteret e mundshme. Për shembull, një paketë përputhet me kriterin –burimi 192.168.1.1 nëse kreu i paketës tregon se dërguesi është 192.168.1.1. Lloji më i thjeshtë i kërcimit, -jump, thjesht e hedh paketën në fillim të një zinxhiri tjetër. Ju gjithashtu mund të specifikoni një veprim duke përdorur –jump. Veprimet standarde të disponueshme në të gjitha zinxhirët janë ACCEPT (kapërcej), DROP (fshij), QUEUE (transferim në një program të jashtëm për analizë) dhe RETURN (kthim në zinxhirin e mëparshëm për analizë). Për shembull, komandat

Iptables -A INPUT --burimi 192.168.1.1 --jump ACCEPT iptables -A INPUT --jump other_chain

do të thotë "shtoni rregullat e mëposhtme në fund të zinxhirit INPUT: lërini paketat nga 192.168.1.1 të kalojnë, dhe gjithçka që mbetet është të dërgohen për analizë në zinxhirin other_chain."

Zinxhirët

Ekzistojnë 5 lloje të zinxhirëve standardë të integruar në sistem:

    PREROUTING - për përpunimin fillestar të paketave hyrëse.

    INPUT - për paketat hyrëse të adresuara drejtpërdrejt në procesin lokal (klient ose server).

    PËRPARA - për paketat hyrëse të ridrejtuara jashtë (vini re se paketat e përcjella kalojnë së pari përmes zinxhirit PREROUTING, pastaj FORWARD dhe POSTROUTING).

    OUTPUT - për paketat e krijuara nga proceset lokale.

    POSTROUTING - për përfundimin e paketave dalëse.

Ju gjithashtu mund të krijoni dhe shkatërroni zinxhirët tuaj duke përdorur programin iptables.

Tabelat

Zinxhirët janë të organizuar në 4 tabela:

    Raw - shihet përpara se paketa të dërgohet në sistemin e përkufizimit të gjendjes. Përdoret rrallë, për shembull, për të shënuar paketa që NUK duhet të përpunohen nga sistemi shtetëror. Për ta bërë këtë, veprimi NOTRACK është specifikuar në rregull. Përmban zinxhirë PREROUTING dhe OUTPUT.

    Mangle - përmban rregullat për modifikimin (zakonisht të kokës) të paketave IP. Mbështet veprimet TTL (Koha për të jetuar), TOS (Lloji i Shërbimit) dhe MARK (për ndryshimin e fushave TTL dhe TOS dhe për ndryshimin e shënuesve të paketave), ndër të tjera. Rrallë e nevojshme dhe mund të jetë e rrezikshme. Përmban të pesë zinxhirët standardë.

    Nat - Kërkon vetëm për paketat që krijojnë një lidhje të re (sipas sistemit shtetëror). Mbështet veprimet DNAT, SNAT, MASQUERADE, REDIRECT. Përmban zinxhirët PREROUTING, OUTPUT dhe POSTROUTING.

    Filter - tabela kryesore, e përdorur si parazgjedhje nëse emri i tabelës nuk është specifikuar. Përmban zinxhirë INPUT, FORWARD dhe OUTPUT.

Zinxhirët me të njëjtin emër, por në tabela të ndryshme janë objekte krejtësisht të pavarura. Për shembull, raw PREROUTING dhe Mangle PREROUTING zakonisht përmbajnë një grup të ndryshëm rregullash; paketat kalojnë nëpër zinxhirin e papërpunuar PREROUTING fillimisht dhe më pas përmes mantelit PREROUTING.

shtetet

Në sistemin netfilter, çdo paketë që kalon përmes mekanizmit të zbulimit të gjendjes mund të ketë një nga katër gjendjet e mundshme:

    E RE - paketa hap një sesion të ri. Një shembull klasik është një paketë TCP me flamurin SYN.

    E THEMEL - Paketa është pjesë e një sesioni ekzistues.

    LIDHUR - paketa hap një sesion të ri të lidhur me një seancë tashmë të hapur. Për shembull, gjatë një sesioni pasiv FTP, klienti lidhet me portin 21 të serverit, serveri i tregon klientit numrin e një porti të dytë, të zgjedhur rastësisht, dhe më pas klienti lidhet me portin e dytë për të transferuar skedarë. Në këtë rast, sesioni i dytë (transferimi i skedarëve në portin e dytë) shoqërohet me një sesion tashmë ekzistues (lidhja origjinale me portin 21).

    E PAVALETË - të gjitha paketat e tjera.

Diagrami i kalimit të tavolinave dhe zinxhirëve

Diagrami i thjeshtuar i kalimit të tavolinave dhe zinxhirëve:

Diagrami i detajuar:

Konfigurimi bazë

Më poshtë është një shembull i një konfigurimi bazë statik të iptables. Kur ruani dhe ngarkoni një konfigurim të tillë, duhet të merrni parasysh mundësinë për të bërë ndryshime në të nga shërbime të tjera, për shembull Fail2ban. Përveç kësaj, kur përdorni adresimin IPv6, konfigurimi për IPv6 duhet të kryhet në mënyrë të pavarur nga IPv4.

IPv4

sudo iptables-save

Krijo një skript me një grumbull rregullash iptables:

sudo nano / etj / rrjeti / if-up.d / iptables-rules

Kopjoni kodin e mëposhtëm:

#! / sbin / iptables-restore -A INPUT -p icmp -j ACCEPT -A INPUT -i lo -j ACCEPT -A HYRJE -j REFUZO -- refuzoj-me icmp-host-i ndaluar -A PËRPARA -m conntrack - ctstate TË LIDHUR, I KRYERUAR -j PRANO -A PËRPARA -p icmp -j PRANO -A PËRPARA -j REFUZO -- refuzoj-me icmp-host-i ndaluar # -A OUTPUT -p icmp -j PRANOJ # -A OUTPUT -o lo - j PRANOJ # -A OUTPUT -j REJECT --refuzo-me icmp-host-i ndaluar KOMPJONI

Ne shtojmë rregullat e nevojshme, duke marrë parasysh iptables-save.

sudo chmod + x / etj / rrjet / if-up.d / iptables-rules sudo / etj / rrjet / if-up.d / iptables-rules

IPv6

Shikimi i konfigurimit aktual:

sudo ip6tables-save

Krijoni një skript me një grumbull rregullash ip6tables:

sudo nano / etj / rrjeti / if-up.d / ip6tables-rules

Kopjoni kodin e mëposhtëm:

#! / sbin / ip6tables-restore # Tabela e filtrit dhe zinxhirët e saj* filtri: INPUT ACCEPT [0: 0]: PËRPARA PRANO [0: 0]: OUTPUT ACCEPT [0: 0] # Lejo lidhjet e lidhura dhe të vendosura-A INPUT -m conntrack --ctstate RELATED, THE ESTABLISHED -j ACCEPT # Lejo trafikun icmp të shërbimit-A HYRJE -p ipv6-icmp -j PRANOJ # Lejo trafikun e besuar në ndërfaqen loopback-A HYRJE -i lo -j PRANOJ # Këtu mund të futni rregulla shtesë për zinxhirin INPUT # Mos lejo çdo gjë tjetër për INPUT-A HYRJE -j REJECT --refuzo-me icmp6-adm-i ndaluar # Rendi dhe kuptimi i rregullave për zinxhirët FORWARD dhe OUTPUT është i njëjtë si për INPUT-A PËRPARA -m conntrack --ctstate LIDHUR, I KRIJUAR -j ACCEPT -A PËRPARA -p ipv6-icmp -j ACCEPT -A PËRPARA -j REFUZO --refuzoj-me icmp6-adm-i ndaluar # Filtrimi i zinxhirit OUTPUT dekurajohet fuqimisht # -A OUTPUT -m conntrack --ctstate LIDHUR, I KRYERUAR -j ACCEPT # -NJË DALIM -p ipv6-icmp -j PRANOJ# -A DALJE -o lo -j PRANOJ # -A OUTPUT -j REJECT --refuzo-me icmp6-adm-i ndaluar KOMPJONI

Ne shtojmë rregullat e nevojshme, duke marrë parasysh ip6tables-save.

Ruani dhe mbyllni: Ctrl + O, Enter, Ctrl + X

Ne e bëjmë skriptin të ekzekutueshëm dhe ngarkojmë rregullat iptables:

sudo chmod + x / etc / rrjet / if-up.d / ip6tables-rules sudo / etc / network / if-up.d / ip6tables-rules

Rregulla shtesë

Më poshtë janë disa nga rregullat më të përdorura. Zinxhirët INPUT / OUTPUT përdoren për të filtruar trafikun lokal. Për trafikun transit, duhet të përdorni zinxhirin FORWARD.

Qasje në distancë

# remote.ssh -A INPUT -p tcp -m conntrack --ctstate NEW -m tcp --dport 22 -j ACCEPT # remote.rdp -A INPUT -p tcp -m conntrack --ctstate NEW -m tcp --dport 3389 -j ACCEPT # remote.vnc -A INPUT -p tcp -m conntrack --ctstate NEW -m tcp --dport 5900 -j ACCEPT

Shërbimet e internetit dhe skedarëve

# web.http, web.https -A INPUT -p tcp -m conntrack --ctstate NEW -m multiport -A INPUT -p tcp -m conntrack --ctstate NEW -m tcp --dport 21 -j ACCEPT

Posta dhe mesazhe të menjëhershme

# mail.pop3, mail.pop3s -A INPUT -p tcp -m conntrack --ctstate NEW -m multiport --dports 110, 995 -j ACCEPT # mail.imap, mail.imaps -A INPUT -p tcp -m conntrack --ctstate NEW -m multiport --dports 143, 993 -j ACCEPT # mail.smtp, mail.smtps -A INPUT -p tcp -m conntrack --ctstate NEW -m multiport --dports 25, 465 -j ACCEPT # im.xmpp -A INPUT -p tcp -m conntrack --ctstate NEW -m multiport --dports 5222, 5223 -j ACCEPT # im.icq.oscar -A INPUT -p tcp -m conntrack --ctstate NEW -m tcp --dport 5190 -j PRANOJ

Shërbimet e Rrjetit

# network.openvpn.vpn -A INPUT -p udp -m conntrack --ctstate NEW -m udp --dport 1194 -j ACCEPT # network.squid.proxy -A INPUT -p udp -m conntrack --ctstate NEW -m udp --dport 3128 -j ACCEPT # network.dns -A INPUT -p tcp -m conntrack --ctstate NEW -m tcp --dport 53 -j ACCEPT -A INPUT -p udp -m conntrack --ctstate NEW -m udp --dport 53 -j ACCEPT # network.ntp -A INPUT -p udp -m conntrack --ctstate NEW -A INPUT -p udp -m conntrack --ctstate NEW -m udp --dport 69 -j ACCEPT # network.dhserver.dhcp.discover-request-A INPUT -p udp -m conntrack --ctstate NEW -m udp --sport 68 --dport 67 -j PRANO # network.dhclient.dhcp.discover-request # -A OUTPUT -p udp -m conntrack --ctstate NEW -m udp --sport 68 --dport 67 -j ACCEPT # network.dhserver.dhcp.offer-ack # -A OUTPUT -p udp -m conntrack --ctstate NEW -m udp --sport 67 --dport 68 -j ACCEPT

Testimi dhe korrigjimi

Shikimi i konfigurimit aktual për IPv4 dhe IPv6:

sudo iptables-save sudo ip6tables-save

Prerjet

Gjurmimi

Modulet e kernelit

Shikoni modulet e ngarkuara:

lsmod | grep -E "^ ip | ^ nf" | rendit

Është i përshtatshëm për të përdorur plotësimin automatik për të ngarkuar module shtesë: 2x Tab

sudo modprobe nf sudo modprobe module-load.d

Çdo kompjuter i lidhur në rrjet është në rrezik potencial. Ka shumë kërcënime në rrjet, duke filluar nga programet që do të përpiqen të depërtojnë në sistem në çdo mënyrë dhe duke përfunduar me hakerat që duan të kenë akses në kompjuterin që u nevojitet. Dhe softueri i instaluar në kompjuter mund të përmbajë dobësi ende të panjohura dhe të parregulluara, të cilat mund të bëhen një vrimë sigurie.

Nëse për kompjuterët në shtëpi kjo nuk është shumë e rëndësishme, pasi ata janë të lidhur me rrjetin përmes ruterave dhe NAT, të cilët i fshehin ato nga rrjeti i jashtëm, atëherë për serverët është më i rëndësishëm se kurrë. Sistemi operativ Linux ka një mur zjarri shumë fleksibël dhe të besueshëm iptables të integruar në kernel.

Është me ndihmën e këtij programi që sistemi mbrohet nga ndërhyrjet e jashtme, përcjellja e portit, si dhe shumë veprime të tjera me trafikun. Por dobësia e tij është se është pak e ndërlikuar për t'u vendosur. Ky artikull do të mbulojë vendosjen e iptables për dummies. Shpresoj që pas kësaj të mund të përdorni me siguri aftësitë themelore të iptables.

Iptables dhe nënsistemi Netfilter janë ndërtuar në kernel Linux për mjaft kohë. Të gjitha paketat e rrjetit që kalojnë nëpër kompjuter, dërgohen nga kompjuteri ose janë të destinuara për kompjuterin, kerneli drejton përmes filtrit iptables. Atje, këto paketa janë të përshtatshme për kontrolle dhe më pas për çdo kontroll, nëse kalohet, kryhet veprimi i specifikuar. Për shembull, paketa kalon në kernel për t'u dërguar në programin e synuar, ose për t'u hedhur poshtë.

Llojet e paketave

Të gjitha paketat ndahen në tre lloje: hyrëse, dalëse dhe kaluese. Inbox janë ato që janë dërguar në këtë kompjuter, në dalje janë ato që janë dërguar nga ky kompjuter në rrjet. Dhe ato që kalojnë janë paketa që thjesht duhet të përcillen më tej, për shembull, nëse kompjuteri juaj vepron si një ruter.

Prandaj, në filtrin iptables, të gjitha paketat ndahen në tre zinxhirë të ngjashëm:

  • Input- përpunon paketat hyrëse dhe lidhjet. Për shembull, nëse një përdorues i jashtëm përpiqet të lidhet me kompjuterin tuaj nëpërmjet ssh ose ndonjë faqe interneti ju dërgon përmbajtjen e saj kur kërkohet nga shfletuesi. Të gjitha këto paketa do të përfundojnë në këtë zinxhir;
  • përpara- ky zinxhir përdoret për kalimin e lidhjeve. Kjo përfshin paketat që dërgohen në kompjuterin tuaj, por nuk janë të destinuara për të, ato thjesht përcillen përmes rrjetit në destinacionin e tyre. Siç thashë, kjo vërehet në ruterat ose, për shembull, nëse kompjuteri juaj shpërndan wifi;
  • prodhimit- ky zinxhir përdoret për paketat dalëse dhe lidhjet. Kjo përfshin paketat që u krijuan kur përpiqeni të bëni ping në një sajt ose kur hapni shfletuesin tuaj dhe përpiqeni të hapni ndonjë sajt.

Por nëse mendoni se thjesht mund ta mbyllni plotësisht zinxhirin e hyrjes për të rritur sigurinë, atëherë gaboheni shumë. Rrjeti përdor të dy zinxhirët hyrës dhe dalës. Për shembull, ju përpiqeni të bëni ping, të dhënat dërgohen përmes daljes, por përgjigja vjen përmes hyrjes. E njëjta gjë ndodh kur shfletoni faqe dhe aktivitete të tjera. Por zinxhiri përpara mund të mos përdoret fare nëse kompjuteri juaj nuk është një ruter. Pra, konfigurimi i iptables duhet të bëhet me shumë kujdes.

Rregullat dhe veprimet

Përpara se të kaloni në krijimin e një liste rregullash iptables, duhet të merrni parasysh se si funksionojnë dhe çfarë janë. Për çdo lloj pakete, mund të vendosni një sërë rregullash që do të kontrollohen me radhë për pajtueshmërinë me paketën, dhe nëse paketa përputhet, atëherë zbatoni veprimin e specifikuar në rregull për të. Rregullat formojnë një zinxhir, kështu që hyrja, dalja dhe përpara quhen zinxhirë, ose zinxhirë rregullash. Mund të ketë disa veprime:

  • PRANOJ- lejoni që paketa të kalojë më tej përgjatë zinxhirit të rregullave;
  • RËZË- hiqni paketimin;
  • REFUZOJE- refuzoni paketën, dërguesit do t'i dërgohet një mesazh se paketa është refuzuar;
  • REGJISTRI- të bëjë një regjistrim në lidhje me paketën në skedarin log;
  • RADHE- dërgoni një paketë në një aplikacion të personalizuar.

Rregullat mund të kontrollojnë çdo përputhje, për shembull, me IP, nga porti i marrësit ose dërguesit, titujt e paketave dhe shumë më tepër. Nëse një paketë nuk përputhet me asnjë nga rregullat, atëherë veprimi i paracaktuar zbatohet në të, zakonisht ACCEPT.

Kur të kemi kuptuar rregullat, mund të kthehemi te zinxhirët. Përveç atyre të listuara më sipër, ekzistojnë dy zinxhirë rregullash shtesë:

  • prerouting- paketa hyn në këtë zinxhir përpara se të përpunohet nga iptables, sistemi nuk e di ende se ku do të dërgohet, për hyrje, dalje apo përcjellje;
  • postrouting- të gjitha paketat kaluese që kanë kaluar tashmë zinxhirin përpara janë përfshirë këtu.

Por kjo nuk është e gjitha. Kemi edhe tabela iptables, me të cilat është gjithashtu e dëshirueshme të kuptohen.

Ipatables

Ekziston një nivel tjetër abstraksioni mbi zinxhirët e rregullave në iptables, dhe ky janë tabelat. Ka disa tabela në sistem, dhe të gjitha ato kanë një grup standard të zinxhirëve hyrës, përpara dhe dalës. Tabelat përdoren për të kryer veprime të ndryshme në pako, për shembull, për modifikim ose filtrim. Tani kjo nuk është aq e rëndësishme për ju dhe do të mjaftojë të dini se filtrimi i paketave iptables kryhet në tabelën e filtrave. Por ne do t'i mbulojmë të gjitha:

  • të papërpunuara- projektuar për të punuar me qese të papërpunuara, ndërsa ato ende nuk janë përpunuar;
  • lëmsh- të destinuara për modifikimin e paketave;
  • nat- Ofron nat për të punuar nëse dëshironi të përdorni kompjuterin tuaj si ruter;
  • filtër- tabela kryesore për filtrimin e paketave, e përdorur si parazgjedhje.

Me pothuajse gjithçka në teori, tani le të shohim programin e linjës së komandës iptables, i cili përdoret për të menaxhuar sistemin iptables.

Shërbimi Iptables

Nënsistemi iptables dhe netfilter janë të integruara në kernel, por një grup shërbimesh për menaxhimin e gjithë kësaj nuk ofrohet gjithmonë me sistemin. Për të instaluar programin në Ubuntu, shkruani:

sudo apt instaloni iptables

Në shpërndarjet e bazuara në Fedora, instalimi i iptables është paksa i ndryshëm:

sudo yum instaloni iptables

Pasi të përfundojë instalimi i iptables, mund të kaloni te konfigurimi, por së pari le të shohim sintaksën e programit. Zakonisht komanda duket si kjo:

-t zinxhir veprim tavoline Opsione shtesë

Tani le të shohim parametrat iptables, tabela tregon tabelën me të cilën duhet të punohet, ky parametër mund të hiqet, veprimi është veprimi i dëshiruar, për shembull, krijoni ose fshini një rregull, dhe parametrat shtesë përshkruajnë veprimin dhe rregullin për t'u kryer.

Mbetet të shqyrtojmë veprimet kryesore që iptables ju lejon të kryeni:

  • -A- shtoni një rregull në zinxhir;
  • - ME- kontrolloni të gjitha rregullat;
  • -D- hiqni rregullin;
  • - Unë- të vendosë një rregull me numrin e kërkuar;
  • -L- shfaq të gjitha rregullat në zinxhirin aktual;
  • -S- shfaq të gjitha rregullat;
  • -F- të qartësojë të gjitha rregullat;
  • -N- krijoni një zinxhir;
  • -X- fshini zinxhirin;
  • -P- vendosni veprimin e paracaktuar.

Opsione shtesë për rregullat:

  • -fq- specifikoni protokollin, një nga tcp, udp, udplite, icmp, icmpv6, esp, ah, sctp,
    mh;
  • -s- specifikoni adresën ip të pajisjes që dërgon paketën;
  • -d- specifikoni adresën IP të marrësit;
  • -i- ndërfaqja e rrjetit hyrës;
  • -o- ndërfaqja e rrjetit dalës;
  • -j- zgjidhni një veprim nëse rregulli përputhet.

Tani mund të vazhdoni të shikoni shembuj se si është konfiguruar iptables.

Shembuj të konfigurimit të Iptables

Ne do të shqyrtojmë disa shembuj bazë që të mund të konsolidoni atë që lexoni më sipër.

Lista e rregullave

Së pari, le të shohim se si kryhet kërkimi i rregullave iptables, opsioni -L është i mjaftueshëm për këtë:

Ju gjithashtu mund të specifikoni zinxhirin e dëshiruar për të shfaqur rregullat vetëm për të:

iptables -L INPUT

Rregullat e pastrimit

Ju nuk mund të çaktivizoni iptables thjesht duke ndaluar shërbimin e përditësimit të rregullave iptables përmes systemd ose madje duke hequr grupin e shërbimeve të konfigurimit. Nënsistemi punon në nivel kernel dhe nuk varet nga ajo që keni instaluar atje. Prandaj, nëse bëni diçka të gabuar, do t'ju duhet të pastroni rregullat. Për ta bërë këtë, ekzekutoni:

Ose thjesht për një zinxhir specifik:

sudo iptables -F Hyrja

Më lejoni t'ju kujtoj se të gjitha këto veprime kryhen për tabelën e paracaktuar - filtrin.

Rregullat e parazgjedhura

Siç thashë tashmë, nëse asnjë rregull nuk është i përshtatshëm për një paketë, atëherë veprimi i paracaktuar zbatohet për të. Mund të vendoset duke përdorur opsionin -p:

sudo iptables -p HYRJE PRANO
$ sudo iptables -p PRANOJMË PARAQITJE
$ sudo iptables -p DORË PËRPARA

Në këtë shembull, ne lejojmë zinxhirët INPUT dhe OUTPUT, por nuk lejojmë FORWARD.

Bllokimi i paketave

Për të bllokuar paketat, ne mund të përdorim veprimin DROP, mund të filtrojmë paketat që duhet të bllokohen me shumë kritere, për shembull, protokolli, adresa ip, maska ​​e rrjetit, porta dhe shumë më tepër.

Kështu do të duket komanda, e cila ju lejon të shtoni një rregull iptables për të bllokuar të gjitha paketat hyrëse nga 10.10.10.10:

sudo iptables -A INPUT -s 10.10.10.10 -j DROP

Dhe tani paketat dalëse në të njëjtën adresë:

Bllokimi i intervalit IP bëhet në mënyrë të ngjashme. Për ta bërë këtë, duhet të përdorni maskën e rrjetit 10.10.10.0/24. Këto do të jenë të gjitha adresat nga 10.10.10.0 deri në 10.10.10.255:

sudo iptables -A INPUT -s 10.10.10.0/24 -j DROP

Ose një version i zgjeruar i maskës:

sudo iptables -A INPUT -s 10.10.10.0/255.255.255.0 -j DROP

Gjithashtu mund të bllokoni të gjitha lidhjet hyrëse ssh:

sudo iptables -A INPUT -p tcp --dport ssh -s 10.10.10.10 -j DROP

Siç mund ta shihni, shtimi i një rregulli iptables është shumë i lehtë.

Heqja e rregullave

Fshirja e rregullave iptables kryhet në të njëjtën mënyrë si krijimi i të rejave, vetëm në vend të opsionit A, duhet të përdorni opsionin D. Së pari, shikoni listën e rregullave:

Për shembull, kjo është mënyra se si mund të fshini rregullin iptables që u krijua në të dytën:

sudo iptables -A OUTPUT -s 10.10.10.10 -j DROP

Ju gjithashtu mund të pastroni plotësisht iptables duke ekzekutuar komandën me opsionin -F:

IPTables është një mjet i përdorur për të menaxhuar muret e zjarrit në Linux. Është një mjet i fuqishëm dhe i dobishëm për lidhjet e padëshiruara. I gjithë procesi është i mbështjellë në rregullat iptables, të cilat mund të modifikohen dhe shikohen. Për më shumë informacion, shihni artikullin.

Historia e krijimit

Përpara IPTables në Linux përdorën murin e zjarrit IPFW, të huazuar nga BSD. Më pas, me kernelin 2.4 Linux, ai erdhi me murin e zjarrit Netfilter dhe mjetin IPTables për ta menaxhuar atë. Në metodologjinë e punës së saj janë ruajtur të gjitha aspektet dhe janë zgjeruar paksa funksionalisht.

Struktura dhe struktura e IPT-tabelave

Kur një paketë hyn në murin e zjarrit, ajo kalon nëpër disa kontrolle. Mund të jetë një kontroll ose ndonjë analizë tjetër e nivelit të kernelit. Pastaj është radha për të kaluar nëpër zinxhirin PREROUTING. Më pas, kontrollohet sipas të cilit ndodh ridrejtimi në zinxhirin tjetër. Nëse paketa nuk ka një adresë, si, për shembull, në TCP, atëherë ajo drejtohet në zinxhirin FORWARD. Në rastet kur ka një adresë specifike, vijon zinxhiri INPUT dhe më pas demonët ose shërbimet për të cilat është menduar. Përgjigja prej tyre duhet gjithashtu të kalojë nëpër disa zinxhirë, për shembull OUTPUT. Lidhja e fundit në këtë proces është zinxhiri POSTROUTING.

Tani pak për zinxhirët. Secila prej tyre përmban disa tabela. Emrat e tyre mund të përsëriten, por kjo nuk ndikon në asnjë mënyrë në punë, pasi ato nuk janë të ndërlidhura.

Tabelat, nga ana tjetër, përmbajnë disa rregulla. Në fakt, një rregull është një kusht i caktuar që duhet të plotësohet nga paketa që kontrollohet. Në varësi të rezultatit, një veprim i caktuar kryhet në paketë.

Kështu, duke kaluar nëpër të gjitha fazat e rrjetit, paketa viziton në mënyrë sekuenciale të gjithë zinxhirët dhe në secilin kontrollohet për pajtueshmërinë me kushtin e një rregulli të caktuar. Nëse tabela nuk gjenerohet nga përdoruesi, atëherë kryhet veprimi i paracaktuar, në thelb, është ACCEPT, i cili ju lejon të vazhdoni të lëvizni më tej, ose DROP, i cili ndalon paketën.

Zinxhirët e paracaktuar vijnë në kategoritë e mëposhtme:

  • PARAPROUTING... Përpunimi fillestar i të gjitha paketave hyrëse.
  • HYRJE... Këtu përfshihen ato paketa që dërgohen direkt në kompjuterin lokal.
  • PËRPARA... Përdoret për "paketat transit" që ndjekin tabelën e rrugëzimit.
  • PRODHIM... Përdoret për paketat dalëse.
  • POSTROUTING... Faza e fundit në kalimin e të gjithë zinxhirëve nga paketa dalëse.

Përveç zinxhirëve të integruar, përdoruesit mund të krijojnë ose fshijnë të tyret.

Shikimi dhe Menaxhimi i Rregullave të IPTables

Siç u përmend më herët, të gjithë zinxhirët përmbajnë kushte të caktuara për paketat. Shërbimi IPTables përdoret për të parë dhe menaxhuar rregullat e IPTables. Çdo rregull individual është një linjë me një sërë kushtesh për paketat, si dhe veprime mbi to, në varësi të rezultatit.

Formati i komandës duket si ky: iptables [-t emri i tabelës së përpunuar] quhet komanda [kriteret] [veprimi që do të kryhet].

Çdo gjë që përmbahet mund të hiqet. Nëse ky është një parametër që specifikon një tabelë, atëherë do të përdoret filtri. Për të përdorur një emër specifik, duhet të shtoni çelësin -t. Komanda e thirrur ju lejon të thirrni veprimin e kërkuar, për shembull, të shtoni ose hiqni një rregull IPTables. "Kriteri" specifikon parametrat me të cilët do të bëhet përzgjedhja. Dhe te “aksioni” zbatohet veprimi, i cili duhet të kryhet nëse plotësohet kushti.

Komandat për krijimin dhe shikimin e rregullave të IPTables

  • Shtojca (-A). Kur përdorni komandën, ju specifikoni zinxhirin dhe tabelën në të cilën dëshironi të shtoni rregullin e kërkuar. Vlera e ekipit është se e bën atë në fund të të gjithë listës.
  • Fshij (-D). Siç nënkupton edhe emri, ai heq rregullin. Si parametra, mund të specifikoni emrin e plotë dhe numrat që u janë caktuar atyre.
  • Riemërto-zinxhiri (-E). Ndryshon emrin e zinxhirit. Komanda specifikon emrin e vjetër, pastaj emrin e ri.
  • Flush (-F). Pastrimi absolutisht i të gjitha rregullave të një tabele specifike.
  • Fut (-I). Kjo komandë fut rregullin e kërkuar në vendin e treguar nga numri.
  • Lista (- L). Shikimi i rregullave iptables. Nëse nuk specifikohet asnjë tabelë, atëherë do të përdoret filtri i paracaktuar.
  • Politika (-P). Përdoret politika e paracaktuar për zinxhirin e specifikuar.
  • Zëvendësoni (-R). Ndryshon rregullin nën numrin e specifikuar në atë të kërkuar.
  • Zinxhiri i fshirjes (-X). Kjo komandë fshin të gjithë zinxhirët e krijuar. Do të mbeten vetëm ato të para-instaluara.
  • Zero (-Z). Do të rivendosë numëruesit e të dhënave të transmetuara në zinxhirin e specifikuar.

Pak për parametrat e përzgjedhjes së paketës

Ato mund të ndahen përafërsisht në tre lloje:

  • Kriteret e përgjithshme... Ato mund të specifikohen për çdo rregull. Ata nuk kërkojnë lidhjen e shtesave dhe moduleve speciale, dhe gjithashtu nuk varen nga cili protokoll do të përdoret.
  • Jo kritere të përgjithshme. Ato vihen në dispozicion duke përdorur kritere të përgjithshme.
  • E qartë. Për të përdorur këtë lloj, duhet të lidhni shtojca speciale për netfilter. Përveç kësaj, komanda duhet të përdorë çelësin -m.

Vlen të flasim pak për parametrat e hasur shpesh të përdorur në analizën e paketave:

  • Protokolli (-p). Tregon protokollin.
  • Burimi (-s). Ky parametër përcakton adresën IP të burimit nga erdhi paketa. Mund të specifikohet në disa mënyra. Një host specifik, adresë ose një nënrrjet i tërë.
  • Destinacioni (-d). Adresa e destinacionit të paketës. Gjithashtu, si ai i mëparshmi, mund të përshkruhet në disa mënyra.
  • Ndërfaqja e brendshme (-i). Specifikon ndërfaqen hyrëse të paketës. Përdoret kryesisht për NAT ose në sisteme me ndërfaqe të shumta.
  • Ndërfaqja e jashtme (-o). Ndërfaqja dalëse.

Disa shembuj

Për të parë rregullat e IPTables nat? ju duhet të përdorni komandën - "iptables -L -t nat". Kontrolloni statusin e përgjithshëm të murit të zjarrit - "iptables -L -n -v". Përveç kësaj, kjo komandë ju lejon të shihni rregullat e IPTables që janë të disponueshme në të gjithë sistemin. Fusni një rregull në një vend të caktuar në tabelë, për shembull, midis rreshtit të parë dhe të dytë - "iptables -I INPUT 2 -s 202.54.1.2 -j DROP". Pastaj shikoni nëse është shtuar - "iptables -L INPUT -n --line-numbers".

Për të bllokuar një adresë specifike, për shembull 12.12.12.12 - "iptables -A INPUT -s 12.12.12.12 -j DROP".

Referenca e Iptables - "man iptables". Nëse keni nevojë për informacion mbi një komandë specifike - "iptables -j DROP -h".

Së fundi

Përdorni komandat IPTables me kujdes, pasi konfigurimi i gabuar (pa vetëdije) mund të çojë në dështime të rrjetit ose dështim të plotë. Prandaj, ia vlen të studioni manualet dhe udhëzimet në detaje përpara se të konfiguroni. Në duart e duhura, IPTables mund të shndërrohen në një mbrojtës të besueshëm të lidhjeve të rrjetit. Administratorët e sistemit përdorin në mënyrë aktive programin për të krijuar lidhje të izoluara nga aksesi i paautorizuar.

Në këtë artikull, ne do t'ju tregojmë se si të vendosni iptables në Linux. Do të mësoni se çfarë është dhe pse duhet ta konfiguroni këtë funksion. Konfigurimi i iptables në Linuxështë mjaft e drejtpërdrejtë.

Konfigurimi i iptables në Linux: Çfarë është iptables?

Iptables është një mjet i murit të zjarrit të linjës së komandës që përdor politikën e zinxhirit për të lejuar ose bllokuar trafikun. Kur një lidhje përpiqet të vendoset në sistemin tuaj, iptables kërkon një rregull në listën e tij që të përputhet me të. Nëse nuk e gjen, ai përdor veprimin e paracaktuar.

Iptables pothuajse gjithmonë vjen i parainstaluar në çdo shpërndarje Linux. Për ta përditësuar / instaluar atë, thjesht shkarkoni paketën iptables:

sudo apt-get instaloni iptables

Ka alternativa GUI ndaj iptables si Firestarter, por iptables nuk është aq i vështirë nëse ekzekutoni vetëm disa komanda. Jini jashtëzakonisht të kujdesshëm kur vendosni rregullat iptables, veçanërisht nëse përdorni SSH'd në server, sepse një komandë e gabuar mund t'ju bllokojë për një kohë të gjatë derisa të rregullohet manualisht në makinën fizike.

Vendosja e iptables në Linux për dummies

Nga rruga, ne kemi folur tashmë për këtë. Ndoshta do t'ju interesojë gjithashtu. Lidhja mund të gjendet më lart.

Vendosja e iptables në Linux, siç thamë më lart, është mjaft e thjeshtë. Por, para se të filloni konfigurimin, duhet të njiheni me konceptet e përgjithshme të opsionit.

Llojet e zinxhirit

Iptables përdor tre zinxhirë të ndryshëm: hyrje, përcjellje dhe dalje.

Input- Ky zinxhir përdoret për të kontrolluar sjelljen e lidhjeve hyrëse. Për shembull, nëse një përdorues përpiqet të instalojë SSH në kompjuterin / serverin tuaj, iptables do të përpiqet të përputhet me adresën IP dhe portin me një rregull në zinxhirin e hyrjes.

Përpara- ky zinxhir përdoret për lidhjet hyrëse që aktualisht nuk janë dorëzuar në nivel lokal. Mendoni për një ruter - të dhënat dërgohen gjithmonë tek ai, por rrallë janë të destinuara për vetë ruterin; Të dhënat thjesht ridrejtohen në faqen e uljes. Nëse nuk po bëni ndonjë rrugëtim, NAT ose çfarëdo tjetër në sistemin tuaj që kërkon përcjellje, nuk do ta përdorni as këtë zinxhir.

Ekziston një mënyrë e besueshme për të kontrolluar nëse sistemi juaj po përdor ose ka nevojë për një zinxhir të drejtpërdrejtë.

Kjo pamje e ekranit është për një server që funksionon për disa javë dhe nuk ka kufizime të lidhjes hyrëse ose dalëse. Siç mund ta shihni, zinxhiri i hyrjes përpunoi 11 GB paketa dhe zinxhiri i daljes përpunoi 17 GB. Nga ana tjetër, një zinxhir i drejtë nuk ka nevojë të përpunojë një paketë të vetme. Kjo për shkak se serveri nuk kryen ndonjë përcjellje ose nuk përdoret si një pajisje nga skaji në skaj.

Dalja - Ky zinxhir përdoret për lidhjet dalëse. Për shembull, nëse përpiqeni të bëni ping në faqen linuxinsider, iptables do të kontrollojë zinxhirin e tij të daljes për të parë se cilat rregulla zbatohen për ping dhe linuxinsider përpara se të vendosë nëse do të lejojë ose refuzojë përpjekjen e lidhjes.

Paralajmërim

Edhe pse vërtetimi i hostit të jashtëm duket si diçka që duhet vetëm të përshkohet përmes zinxhirit të daljes, kini parasysh se zinxhiri i hyrjes do të përdoret gjithashtu për të kthyer të dhëna. Kur përdorni iptables për të kyçur sistemin tuaj, mbani mend se shumë protokolle kërkojnë komunikim të dyanshëm, kështu që të dy zinxhirët në rrjedhën e sipërme dhe të poshtme duhet të konfigurohen saktë. SSH është një protokoll i përgjithshëm që njerëzit harrojnë ta lejojnë në të dy zinxhirët.

Sjellja e parazgjedhur e politikës

Përpara se të filloni të vendosni rregulla specifike, duhet të vendosni se çfarë dëshironi të bëjë sjellja e paracaktuar e këtyre tre rrjetave. Me fjalë të tjera, çfarë dëshironi të bëjnë iptables nëse lidhja nuk përputhet me ndonjë nga rregullat ekzistuese?

Për të parë se cilat zinxhirë politikash janë konfiguruar për të trajtuar trafikun e pakrahasueshëm, ekzekutoni komandën iptables -L.

Siç mund ta shihni, ne përdorëm gjithashtu komandën grep për të marrë një rezultat më të pastër. Në këtë pamje të ekranit, zinxhirët tanë janë aktualisht të konfiguruar për të marrë trafik.

Më shumë kohë sesa jo, dëshironi që sistemi juaj të pranojë lidhjet si parazgjedhje. Nëse nuk i keni ndryshuar më parë rregullat e zinxhirit të politikave, ky cilësim duhet të konfigurohet tashmë. Gjithsesi, këtu është komanda për të pranuar lidhjet e paracaktuara:

iptables --politika INPUT PRANON
iptables --politika REZULTIMI PRANON
iptables --politika PËRPARA PRANO

Si parazgjedhje, në një rregull pranimi, ju mund të përdorni iptables për të refuzuar adresat IP specifike ose numrat e porteve ndërsa vazhdoni të pranoni të gjitha lidhjet e tjera. Do të arrijmë te ato ekipe brenda një minute.

Nëse preferoni të refuzoni të gjitha lidhjet dhe të specifikoni manualisht cilat dëshironi të lejoni lidhjen, duhet të ndryshoni politikën e paracaktuar të qarqeve për të refuzuar. Kjo ndoshta do të jetë e dobishme vetëm për serverët që përmbajnë informacione të ndjeshme dhe vetëm ndonjëherë të njëjtat adresa IP do të lidhen me ta.

iptables --policy INPUT DOP
iptables --politika RËNIA E REZULTATEVE
iptables --politika PËRPARA DORËZIM

Përgjigjet e lidhjes

Me konfigurimin e politikave të parazgjedhura të zinxhirit, mund të filloni të shtoni rregulla në iptables për të ditur se çfarë të bëni kur ndeshet me një lidhje me një adresë IP ose port të caktuar. Në këtë udhëzues, ne do të mbulojmë tre nga "përgjigjet" më të zakonshme dhe të përdorura shpesh.

Pranoje- lejoni lidhjen.

Bie- Lëre lidhjen, vepro sikur nuk ka ndodhur kurrë. Kjo është më mirë nëse nuk dëshironi që burimi të dijë se sistemi juaj ekziston.

Refuzo- mohoni lidhjen, por dërgoni një mesazh gabimi. Kjo është më mirë nëse nuk dëshironi që një burim specifik të lidhet me sistemin tuaj, por dëshironi që ata të dinë se muri i zjarrit po i bllokonte.

Mënyra më e mirë për të treguar ndryshimin midis këtyre tre rregullave është të tregosh se si duket kur një PC përpiqet të bëjë ping në një makinë Linux duke përdorur iptables të konfiguruar për secilin prej këtyre parametrave.

Leja e lidhjes:

Heqja e një lidhjeje:

Refuzimi i lidhjes:

Netmask ose karakteristikë për të treguar një sërë adresash IP.

Konfigurimi i iptables në Linux: Metodat e lidhjes

Nëse flasim për "Konfigurimin e iptables në Linux", atëherë duhet të flisni për metodat e lidhjes.

Lejo ose blloko lidhje specifike
Me politikat e konfiguruara, ju mund të konfiguroni iptables për të lejuar ose bllokuar adresa specifike, diapazon adresash dhe porte. Në këta shembuj, ne do të krijojmë lidhje DROP, por ju mund t'i ndërroni ato në PRANO ose REJECT, në varësi të nevojave tuaja dhe mënyrës se si i konfiguroni zinxhirët tuaj të politikave.

Shënim. Në këta shembuj, ne do të përdorim iptables -A për të shtuar rregulla në një zinxhir ekzistues. Iptables fillon në krye të listës dhe kalon nëpër çdo rregull derisa të gjejë një që përputhet me të. Nëse duhet të futni një rregull mbi një tjetër, mund të përdorni iptables -I për të specifikuar numrin që do të listohet.

Lidhje nga një adresë IP

Ky shembull tregon se si të bllokohen të gjitha lidhjet nga adresa IP 10.10.10.10 ..

iptables -A INPUT -s 10.10.10.10 -j DROP

Lidhje nga një sërë adresash IP

Ky shembull tregon se si të bllokohen të gjitha adresat IP në rangun e rrjetit 10.10.10.0/24. Ju mund të përdorni një maskë rrjeti ose një pjerrësi standarde për të specifikuar një sërë adresash IP.

iptables -A INPUT -s 10.10.10.0/24 -j DROP

iptables -A INPUT -s 10.10.10.0/255.255.255.0 -j DROP

Lidhjet me një port të caktuar

Ky shembull tregon se si të bllokoni lidhjet SSH nga 10.10.10.10.

iptables -A INPUT -p tcp -dport ssh -s 10.10.10.10 -j DROP

Ju mund të zëvendësoni "ssh" me çdo protokoll ose numër porti. Pjesa -p tcp e kodit i tregon iptables se cilën lidhje po përdor protokolli. Nëse keni bllokuar një protokoll që përdor UDP dhe jo TCP, atëherë kërkohet -p udp.

Ky shembull tregon se si të bllokoni lidhjet SSH nga çdo adresë IP.

iptables -A INPUT -p tcp -dport ssh -j DROP

Gjendjet e lidhjes

Siç e përmendëm më herët, shumë protokolle kërkojnë komunikim të dyanshëm. Për shembull, nëse doni të lejoni lidhjet SSH në sistemin tuaj, qarqet e sipërme dhe të poshtme do të kenë nevojë për një rregull që t'u shtohet atyre. Por, çka nëse dëshironi që të lejohet hyrja SSH në sistemin tuaj? A do të rezultonte shtimi i rregullit në zinxhirin e jashtëm dhe në përpjekjet e SSH-së dalëse?

Këtu hyjnë gjendjet e lidhjes, të cilat ju japin mundësinë për të lejuar komunikime të dyanshme, por lejojnë vetëm lidhje njëkahëshe. Shikoni këtë shembull ku lejohen lidhjet SSH NGA 10.10.10.10, por lidhjet SSH TE 10.10.10.10 jo. Sidoqoftë, sistemi lejohet të dërgojë reagime mbi SSH për sa kohë që seanca është krijuar tashmë, duke bërë të mundur komunikimin SSH midis dy hosteve.

iptables -A INPUT -p tcp --dport ssh -s 10.10.10.10 -m gjendje --state I RI, I KRIJUAR -j PRANO

iptables -A OUTPUT -p tcp --sport 22 -d 10.10.10.10 -m gjendje --state E THEMELUAR -j PRANO

Ruajtja e ndryshimeve

Ndryshimet që bëni në rregullat iptables do të rikthehen herën tjetër që shërbimi iptables të riniset nëse nuk ekzekutoni komandën për të ruajtur ndryshimet. Kjo komandë mund të ndryshojë në varësi të shpërndarjes suaj:

sudo / sbin / iptables-save

Red Hat / CentOS:

/ sbin / shërbimi iptables ruaj

/etc/init.d/iptables save

Komanda të tjera

Lista e rregullave të iptables të konfiguruara aktualisht:

Shtimi i opsionit -v do t'ju japë informacion për paketat dhe bajtet, ndërsa shtimi i -n do të përmbajë të gjitha vlerat numerike. Me fjalë të tjera, emrat e hosteve, protokollet dhe rrjetet renditen si numra.

Për të pastruar të gjitha rregullat e konfiguruara aktualisht, mund të lëshoni komandën flush.

Përkthim nga një burim i shkëlqyer në anglisht HowToGeek.

Nëse keni ende ndonjë pyetje në lidhje me temën "Konfigurimi i iptables në Linux për dummies", atëherë mund t'i shkruani ato në formularin e komenteve në faqen tonë të internetit.

Nëse gjeni një gabim, ju lutemi zgjidhni një pjesë të tekstit dhe shtypni Ctrl + Enter.

Artikujt kryesorë të lidhur