Kako podesiti pametne telefone i računare. Informativni portal

Ključni koncepti iptablesa su.

IPTables je Linux uslužni program za upravljanje firewall-om. To je moćan i praktičan alat za neželjene veze. Cijeli proces je umotan u iptables pravila koja se mogu uređivati ​​i pregledavati. Više detalja je dato u članku.

Istorija stvaranja

Prije IPTables na Linux sistemu koristili su IPFW zaštitni zid, pozajmljen od BSD-a. Zatim, od 2.4 Linux kernela, dolazi sa zaštitnim zidom Netfilter i uslužnim programom IPTables za upravljanje njime. U metodologiji njenog rada svi aspekti su sačuvani i malo funkcionalno prošireni.

Struktura i struktura IPTables

Kada paket uđe u zaštitni zid, prolazi kroz nekoliko provjera. Ovo može biti kontrolni zbroj ili bilo koja druga analiza na nivou kernela. Tada je vrijeme da prođemo kroz lanac PREROUTING. Zatim se provjerava u skladu s kojim se preusmjeravanje na sljedeći lanac odvija. Ako paket nema adresu, kao što je, na primjer, u TCP-u, onda se usmjerava na lanac FORWARD. U slučajevima kada postoji određena adresa, slijedi INPUT lanac, a zatim demoni ili servisi za koje je namijenjen. Njihov odgovor također mora proći kroz nekoliko lanaca, na primjer OUTPUT. Poslednja karika u ovom procesu je lanac POSTROUTING.

Sada malo o lancima. Svaki od njih sadrži nekoliko tabela. Njihova imena se mogu ponavljati, ali to ni na koji način ne utiče na rad, jer nisu međusobno povezani.

Tabele pak sadrže nekoliko pravila. U stvari, pravilo je određeni uslov s kojim mora biti usklađen paket koji se provjerava. U zavisnosti od ishoda, na paketu se izvodi određena radnja.

Dakle, prolazeći kroz sve faze mreže, paket uzastopno posjećuje sve lance i u svakom se provjerava da li je usklađen sa uslovom određenog pravila. Ako tabela nije generisana od strane korisnika, tada se preduzima podrazumevana radnja, u osnovi, to je ACCEPT, što vam omogućava da nastavite dalje, ili DROP, što zaustavlja paket.

Unaprijed postavljeni lanci dolaze u sljedećim kategorijama:

  • PRERAUTIRANJE. Početna obrada svih dolaznih paketa.
  • INPUT. Ovo uključuje one pakete koji su usmjereni direktno na lokalni računar.
  • NAPRIJED. Koristi se za "tranzitne pakete" koji prate tabelu rutiranja.
  • IZLAZ. Koristi se za odlazne pakete.
  • POSTROUTING. Posljednja faza u prolazu odlaznog paketa svih lanaca.

Pored ugrađenih lanaca, korisnici mogu kreirati ili brisati svoje.

Pregled i upravljanje IPTables pravilima

Kao što je ranije spomenuto, svi lanci sadrže određene uvjete za pakete. IPTables uslužni program se koristi za pregled i upravljanje IPTables pravilima. Svako pojedinačno pravilo je linija sa skupom uslova za pakete, kao i akcijama na njima, u zavisnosti od ishoda.

Format naredbe izgleda ovako: iptables [-t ime tabele koja se obrađuje] naredba za pozivanje [kriterijuma] [akcija koja se treba izvršiti].

Sve što je priloženo može se izostaviti. Ako je to parametar tablice, tada će se koristiti filter. Da biste koristili određeno ime, morate dodati prekidač -t. Pozvana naredba vam omogućava da pozovete potrebnu radnju, na primjer, dodate pravilo IPTables ili ga uklonite. "Kriterijumi" određuju parametre prema kojima će se vršiti selekcija. A u "akciju" se primjenjuje radnja koja se izvodi ako je uvjet ispunjen.

Naredbe za kreiranje i pregled IPTables pravila

  • Dodati(-A). Kada koristite naredbu, specificirate lanac i tablicu u koju želite dodati potrebno pravilo. Vrijednost tima je što to radi na kraju cijele liste.
  • Izbriši (-D). Kao što naziv implicira, briše pravilo. Kao parametre, možete navesti i puno ime i brojeve koji su im dodijeljeni.
  • Preimenuj lanac (-E). Mijenja naziv lanca. Naredba specificira staro ime, a zatim novo ime.
  • Ispiranje (-F). Brisanje apsolutno svih pravila određene tabele.
  • Umetnite (-I). Ova komanda ubacuje traženo pravilo na mjesto označeno brojem.
  • Lista(-L). Pogledajte pravila Iptablesa. Ako nije navedena tabela, koristit će se zadani filter.
  • Politika (-P). Koristi se zadana politika za navedeni lanac.
  • Zamijenite (-R). Mijenja pravilo pod navedenim brojem u traženo.
  • Obriši lanac (-X). Ova komanda briše sve kreirane lance. Ostaće samo one unapred podešene.
  • Nula (-Z). Resetuje brojače prenetih podataka u navedenom lancu.

Nešto o opcijama odabira paketa

Oni se mogu grubo podijeliti u tri tipa:

  • Opći kriteriji. Mogu se specificirati za bilo koja pravila. Ne zahtijevaju povezivanje posebnih ekstenzija i modula, a također ne ovise o tome koji će se protokol koristiti.
  • Nisu opšti kriterijumi. Oni postaju dostupni kada se koriste opći kriteriji.
  • Eksplicitno. Da biste koristili ovaj tip, potrebno je povezati posebne dodatke za netfilter. Osim toga, u naredbi se mora koristiti prekidač -m.

Vrijedi popričati malo o parametrima koji se često susreću u analizi paketa:

  • Protokol (-p). Označava protokol.
  • Izvor(i). Ovaj parametar specificira IP adresu izvora iz kojeg je paket došao. Može se specificirati na nekoliko načina. Određeni host, adresa ili cijela podmreža.
  • Odredište (-d). Odredišna adresa paketa. Također, kao i prethodni, može se opisati na nekoliko načina.
  • Interfejs (-i). Određuje dolazni interfejs paketa. Uglavnom se koristi za NAT ili na sistemima sa više interfejsa.
  • Izlazni interfejs (-o). izlazni interfejs.

Nekoliko primjera

Da biste vidjeli IPTables nat pravila? trebate koristiti naredbu - "iptables -L -t nat". Saznajte opći status zaštitnog zida - "iptables -L -n -v". Osim toga, ova komanda vam omogućava da vidite pravila IPTables koja su dostupna u cijelom sistemu. Umetnite pravilo na određeno mjesto u tabeli, na primjer, između prvog i drugog reda - "iptables -I INPUT 2 -s 202.54.1.2 -j DROP". Zatim pogledajte da li je dodat - "iptables -L INPUT -n --line-numbers".

Za blokiranje određene adrese, na primjer, 12.12.12.12 - "iptables -A INPUT -s 12.12.12.12 -j DROP".

Pomoć za iptables - "man iptables". Ako su vam potrebne informacije o određenoj komandi - "iptables -j DROP -h".

Konačno

Koristite IPTables komande sa oprezom, jer pogrešna konfiguracija (nesvjesno) može dovesti do kvarova mreže ili njenog potpunog kvara. Stoga je vrijedno detaljno proučiti priručnike i upute prije konfiguracije. U vještim rukama, IPTables se može pretvoriti u pouzdanog zaštitnika mrežnih veza. Administratori sistema aktivno koriste uslužni program za kreiranje veza izolovanih od neovlašćenog pristupa.

Nekoliko puta sam se susreo sa činjenicom da čak i generalno inteligentni ljudi čine potpuno neoprostive greške. Na primjer, otvaraju port na kojem se baza podataka vrti na cijeli Internet. To je čest slučaj sa početnicima DevOps-a koji su cijeli život pisali kod, a sada u njihove dužnosti spada i postavljanje servera. Na webu postoje dobri vodiči o osnovnom postavljanju zaštitnog zida na Linuxu i drugim *nixima, ali često su to listovi za više ekrana. Dakle, nadam se da će ovaj sažetiji tutorijal nekome biti od koristi.

Bitan! Veoma je lako greškom postaviti zaštitni zid na mašinu tako da joj više nećete moći da pristupite. Ovo se posebno odnosi na hosting u oblaku. Na primjer, ako zatvorite sve portove od 1024 do 65536 u AWS-u, iz nekog razloga mašina se zatvara nakon ponovnog pokretanja generalno sve luke. Ako hostujete u oblacima, bolje je da konfigurišete firewall preko web interfejsa koji pruža hosting.

Mala napomena o terminologiji. Firewall ugrađen u Linux kernel zove se Netfilter, a iptables je uslužni program za upravljanje ovim firewall-om. Mnogi pogrešno vjeruju da se zaštitni zid zove iptables. Ovo nije istina. Reći nešto poput "filtriram pakete pomoću iptables" pokazuje vaše neznanje drugima.

Općenito, koji se zadaci mogu riješiti pomoću Netfilter-a:

  • Dozvoliti/zabraniti dolazni saobraćaj na određene portove koristeći određene protokole (IPv4/IPv6, TCP/UDP) sa određenih adresa (IP, MAC) ili podmreža;
  • Sve je isto za odlazni saobraćaj;
  • Možete, na primjer, potpuno zanemariti sve ICMP pakete;
  • Podešavanje NAT-a, pogledajte članak o ruteru zasnovanom na Raspberry Pi;
  • Čuo sam da pravi gurui mogu postaviti DDoS i zaštitu od grube sile, ograničiti pristup mreži određenim aplikacijama, korisnicima ili grupama i raditi druge lude stvari;

Napominjem da je meni lično uslužni program iptables isprva izgledao krajnje nezgodan u poređenju sa ipfw u FreeBSD-u. Srećom, nakon igranja s njim neko vrijeme, sve ove mnoge zastavice poput -A, -D, -j i druge postaju poznate, pa budite strpljivi. Pogledajmo osnovne komande.

Prikaži sva pravila:

iptables -L -n

Možda ćete primijetiti da Netfilter ima neke "lančane" (lance) - barem INPUT, OUTPUT i FORWARD. Ja lično također imam Docker lanac na svojoj mašini. Po prvi put, prva dva možete zamisliti kao sav dolazni i odlazni saobraćaj, respektivno, a na ostatak privremeno zaboravite. Velika je šansa da vam nikada neće trebati.

Uklonite sva pravila:

iptables -F

Promijenite politiku (podrazumevano ponašanje) lanca:

iptables -P INPUT DROP
iptables -P ULAZ PRIHVATI

Zabrani pristup sa hosta/podmreže:

iptables -A INPUT -s 123.45.67.89 -j DROP
iptables -A INPUT -s 123.45.0.0/ 16 -j DROP

Također možete koristiti nazive domena:

iptables -A INPUT -s example.ru -j DROP

Zabrana odlaznih konekcija:

iptables -A OUTPUT -d 123.45.67.89 -j DROP

Negativi se mogu koristiti u pravilima:

iptables - ULAZ ! -s 123.45.67.89 -j DROP

Brisanje pravila po broju u lancu:

iptables -D ULAZ 1

Uklanjanje pravila na osnovu onoga što radi:

iptables -D INPUT -s 123.45.67.89 -j DROP

Opcija -p specificira protokol. Možete koristiti sve, icmp, tcp, udp ili broj protokola iz /etc/protocols. Zastava - -sport specificira port sa kojeg je paket poslan, i - -dport specificira odredišni port:

iptables -A INPUT -p tcp --sport 80 -j PRIHVATI
iptables -A INPUT -p tcp --dport 80 -j PRIHVATI

Umetanje pravila na početak lanca:

iptables -I INPUT ...

Ili možete odrediti određenu poziciju:

iptables -I INPUT 3 ...

iptables-save > /etc/iptables.rules

Pravila vraćanja:

iptables restauracija< / etc/ iptables.rules

Pogledajmo sada nekoliko praktičnih primjera. Na primjer, ovako izgleda netsplit emulacija u testu koji provjerava ponašanje aplikacije koja koristi Akka Cluster:

pokreni (čvor1, s "iptables -A INPUT -s $node2 -j DROP")
pokreni (čvor1, s "iptables -A INPUT -s $node3 -j DROP")
pokreni (čvor1, s "iptables -A OUTPUT -d $node2 -j DROP")
pokreni (čvor1, s "iptables -A OUTPUT -d $node3 -j DROP")

Restauracija je potpuno ista, samo je -A zastavica zamijenjena sa -D zastavicom.

Još jedan primjer. Potrebno je otkriti koji portovi slušaju na mašini i zatvoriti dodatne. Idemo do auta i kažemo:

netstat-tuwpln

Uzorak izlaza:

Aktivne internetske veze (samo serveri)
Proto Recv-Q Send-Q Lokalna adresa Strana adresa Država PID/ime programa
tcp 0 0 0.0.0.0:80 0.0.0.0:* SLUŠAJ 3210/nginx
tcp 0 0 0.0.0.0:4369 0.0.0.0:* SLUŠAJ 1789/epmd
tcp 0 0 0.0.0.0:22 0.0.0.0:* SLUŠAJ 797/sshd
tcp 0 0 127.0.0.1:5432 0.0.0.0:* LISTEN 990/postgres

Nginx i SSHd gledaju na internet, to je u redu. PostgreSQL sluša samo lokalni interfejs, tako da ni sa njim nema problema. Ali epmd strši (možete provjeriti telnetom sa druge mašine), a ovo nije dobro. Možete zatvoriti samo port 4369. Kako to učiniti je prikazano iznad. Ili možete otići još dalje i odbiti sve veze izvana na port 81 i starije.

Uvod i istorijat

netfilter- Firewall (aka firewall, aka firewall, aka firewall...) je ugrađen u Linux kernel od verzije 2.4. Netfilterom upravlja pomoćni program iptables(Za IPv6 - ip6tables). Prije netfilter/iptables bio Ipchains, koji je bio dio Linux 2.2 kernela. Prije ipchaina u Linuxu je postojao tzv ipfw (IPV4 firewal), portirano sa BSD-a. Uslužni program za upravljanje je ipfwadm. Projekt netfilter/iptables osnovao je 1998. godine Rusty Russell (koji je također vodio prethodni razvoj). Godine 1999. formiran je Netfilter Core Team (skraćeno coreteam). Razvijeni zaštitni zid službeno je nazvan netfilter. U avgustu 2003. godine, Harald Welte je postao šef jezgre tima.

Projekti ipchains i ipfwadm promijenio rad steka protokola Linux kernela, od prije pojave netfilter u arhitekturi kernela nije bilo načina da se povežu dodatni moduli za upravljanje paketima. iptables zadržao glavnu ideju ipfwadm- lista pravila koja se sastoji od kriterija i radnje koja se izvodi ako paket odgovara kriterijima. AT ipchains uveden je novi koncept - mogućnost kreiranja novih lanaca pravila i tranzicije paketa između lanaca, a u iptablesima koncept je proširen na četiri tabele (u modernom netfilteru - više od četiri), razgraničavajući lance pravila po zadatku: filtriranje, NAT i modifikacija paketa. Takođe, iptables je proširio stanje u Linuxu, omogućavajući vam da kreirate firewall koji rade na nivou sesije.

Netfilter/iptables arhitektura

Preduvjeti ()

Kao što je gore spomenuto, Netfilter zahtijeva verziju kernela 2.6 (ili barem 2.3.15). Osim toga, ako su vam potrebne postavke CONFIG_NETFILTER, CONFIG_IP_NF_IPTABLES, CONFIG_IP_NF_FILTER (tabela filtera), CONFIG_IP_NF_NAT (nat tablica), CONFIG_BRIDGE_NETFILTER, kao i brojne dodatne module za povezivanje modula: CONFIG_NFTPGFIP_u tracking_u tracking FNF_CONFGFIPNFNFNFNFIP_u tracking_config_CONFIG_NETFILTER. dodatni tipovi obrazaca podudaranja paketa: LIMIT, MAC, MARK, MULTIPORT, TOS, TCPMSS, STATE, UNCLEAN, OWNER), CONFIG_IP_NF_TARGET_* (dodatne akcije u pravilima: REJECT, MASQUERADE, REDIRECT, LOG, TCGPMSIPspcontibility with TCGPMSSIPCONFITISI_COMPNSIPCONFIG. , CONFIG_BRIDGE_NF_EBTABLES i CONFIG_BRIDGE_EBT_* za način rada mosta, ostali CONFIG_IP_NF_* i CONFIG_IP6_NF_*. Također je korisno navesti CONFIG_PACKET.

kao što se vidi, nat table i mangle može modificirati primaoca ili pošiljatelja mrežnog paketa. Zbog toga se mrežni paket nekoliko puta provjerava u odnosu na tabelu rutiranja.

Mehanizam za otkrivanje stanja (conntrack)

Koncept "definicije države" je nekoliko puta spomenut u gornjem tekstu, zaslužuje posebnu temu za raspravu, ali ću se ipak ukratko dotaknuti ovog pitanja u sadašnjem postu. Uopšteno govoreći, mehanizam za određivanje stanja (aka državna mašina, aka conn odjeljak track ing, he conntrack) je dio filtera paketa i omogućava vam da odredite kojoj vezi/sesiji paket pripada. Conntrack analizira status svih paketa osim onih označenih kao NOTRACK u sirovoj tabeli. Na osnovu ovog stanja, paket pripada novo veza (stanje NOVO), već uspostavljena veza (stanje ESTABLISHED), dodatno na već postojeće RELATED), ili na " drugi"(nedefinirana) veza (stanje INVALID). Stanje paketa se utvrđuje na osnovu analize zaglavlja prenijetog TCP paketa. conntrack modul omogućava vam da implementirate zaštitni zid na nivou sesije (peti). Uslužni program se koristi za kontrolu ovog mehanizma. staza, kao i iptables uslužni parametar: -m conntrack ili -m stanje(zastarjelo). conntrack čuva stanje trenutnih veza u kernelu. Mogu se pogledati u datoteci /proc/net/nf_conntrack (ili /proc/net/ip_conntrack) .

Kako se misli ne bi pretvorile u nered, mislim da će ove kratke informacije biti dovoljne za razumijevanje daljnjeg materijala.

Upravljanje Netfilter pravilima mrežnog filtriranja (pomoću komande iptables)

iptables uslužni program je interfejs za upravljanje netfilter firewall. Ova komanda vam omogućava da uređujete tabela, tabele i lance. Kao što sam već rekao - svako pravilo je zapis/red koji sadrži izbor mrežnih paketa i iznad paketa koji odgovaraju specificiranom pravilu. iptables naredba zahtijeva root dozvole za pokretanje.

Općenito, format naredbe je sljedeći:

iptables [-t]

Svi parametri u uglastim zagradama - opciono. Podrazumevano je filter stol, ako treba da navedete drugu tabelu, onda bi trebalo da koristite ključ -t ukazujući ime. Nakon imena tabele slijedi , koji definira akciju ( Na primjer: ubacite pravilo, ili dodajte pravilo na kraj lanca, ili izbrišite pravilo). postavlja parametre odabira. označava koju radnju treba izvršiti ako se kriteriji odabira u pravilu podudaraju ( Na primjer: proslijediti paket drugom lancu pravila, "ispustiti" paket, izdati poruku o grešci izvoru...).

Slijede naredbe i opcije za iptables uslužni program:

Parametar Opis Primjer
Timovi
--dodati (-A) Dodajte navedeno pravilo u navedeni lanac i navedenu tablicu na KRAJ liste. iptables -A FORWARD kriterijumi -j akcija
--izbriši (-D) Briše pravilo(a) određena brojem(ovima) ili pravilo(ima). Prvi primjer uklanja sva pravila sa brojevima 10,12 u svim lancima, u tablicama filtera, drugi primjer uklanja dato pravilo iz mangle tablice u lancu PREROUTING. iptables -D 10.12
iptables -t mangl -D kriteriji PREROUTING -j akcija
--preimenuj-lanac (-E) Promijenite naziv lanca. iptables -E OLD_CHAIN ​​NEW_CHAIN
--ispiranje (-F) Briše sva pravila za trenutnu tabelu. Za sve pakete koji se odnose na već uspostavljene veze, primijenite terminalsku akciju ACCEPT - skip iptables -F
--umetnuti (-I) Umeće navedeno pravilo na lokaciju navedenu brojem. iptables -I PROSLJEĐUJEM 5 kriterija -j akcija
--list (skraćeno -L) Pregledajte postojeća pravila (bez eksplicitnog navođenja tabele - prikazuje se tabela filtera svih lanaca). iptables -L
--politika (-P) Postavlja zadanu politiku za dati lanac. iptables -t mangle -P PRERUTIRANJE DROP
--zamijeni (-R) Zamjenjuje numerirano pravilo onim navedenim u kriterijima. iptables -R POSROUTING 7 | kriterijumi -j radnja
--delete-chain (-X) Izbrišite SVE ručno kreirane lance (ostavite samo standardne INPUT, OUTPUT, FORWARD, PREROUTING i POSTROUTING). iptables -X
--nula (-Z) Resetuje brojače prenetih podataka u lancu. iptables -Z INPUT
Opcije
--numerički (-n) Ne rješava adrese i protokole prilikom izlaza.
--line-brojevi Navedite brojeve pravila prilikom izlaza (može se koristiti zajedno sa -L). iptables -L --brojevi-linija
--pomoć (-h) gde bez nje
-t stol Određuje ime tabele na koju će se izvršiti radnja. Primjer resetira nat tablicu u svim lancima. iptables -t nat -F
--verbose (-v) Detaljan izlaz. iptables -L -v

Kriterijumi (parametri) za odabir mrežnih paketa naredbe iptables

Kriterijumi za odabir mrežnih paketa prećutno podijeljeni u nekoliko grupa: opći kriteriji, implicitni kriteriji, eksplicitni kriteriji. mogu se koristiti u bilo kojim pravilima, ne zavise od tipa protokola i ne zahtijevaju učitavanje modula proširenja. (ja bih nazvao neopšti), oni kriteriji koji se implicitno učitavaju i postaju dostupni, na primjer, kada se specificira opći kriterij --protokol tcp|udp|icmp. Prije upotrebe morate se povezati dodatno proširenje(ovo su neke vrste dodaci za netfilter). Dodatne ekstenzije učitan pomoću parametra -m ili --match. Tako, na primjer, ako ćemo koristiti kriterije stanje, onda to moramo eksplicitno navesti u liniji pravila: -m stanje lijevo od korištenog kriterija. Razlika između eksplicitno i implicitno neopšte kriterijum je da se eksplicitni moraju eksplicitno učitavati, dok se implicitni učitavaju automatski.

U svim uslovima možete koristiti sign! prije vrijednosti kriterija. To će značiti da su svi paketi koji podliježu ovom pravilu ne odgovaraju ovom parametru.. na primjer: kriterij --protokol ! tcpće značiti da svi paketi koji ne su TCP protokoli koji se kvalificiraju za pravilo. Međutim, najnovije verzije iptables-a (posebno 1.4.3.2 i novije) više ne podržavaju ovu sintaksu i zahtijevaju korištenje --protokol ! tcp, a ! --protokol tcp, dajući sljedeću grešku:

Upotreba intrapozicionirane negacije (`--opcija ! ovo`) je zastarjela u korist ekstrapozicionirane (`! --opcija ovo`).

U nastavku u obliku tabele su najčešće korištene opcije odabira paketa:

Parametar Opis Primjer
Uobičajeni parametri
--protokol
(skraćeno -p)
Određuje protokol. Opcije tcp, udp, icmp, svi ili bilo koji drugi protokol definiran u /etc/protocols iptables -A INPUT -p tcp
--izvor
(-s, --src)
Izvorna IP adresa paketa. Može se definisati na nekoliko načina:
  • Jedan host: host.domain.tld, ili IP adresa: 10.10.10.3
  • Skup adresa (podmreža): 10.10.10.3/24 ili 10.10.10.3/255.255.255.0

Izričito se preporučuje da se ne koriste imena domena koja zahtijevaju DNS upite za rješavanje (razrješavanje), jer DNS možda neće raditi ispravno tokom faze konfiguracije netfilter-a. Također, imajte na umu da se imena rješavaju samo jednom - prilikom dodavanja pravila u lanac. Nakon toga, IP adresa koja odgovara ovom imenu može se promijeniti, ali to neće utjecati na već napisana pravila (zadržat će staru adresu). Ako navedete ime domene koje se razrješava na nekoliko IP adresa, tada će se za svaku adresu dodati posebno pravilo.

iptables -A INPUT -s 10.10.10.3
--odredište
(-d)
Odredišna IP adresa paketa. Može se definirati na više načina (pogledajte --source). iptables -A INPUT --odredište 192.168.1.0/24
--in-interface
(-i)
Određuje interfejs na koji je stigao paket. Korisno za NAT i mašine sa više mrežnih interfejsa. Koristi se u lancima INPUT, FORWARD i PREROUTING. Moguće je koristiti znak "+", tada se podrazumijeva korištenje svih interfejsa koji počinju imenom + (na primjer, eth+ - svi eth interfejsi). iptables -t nat -A PREUSMIRANJE --u sučelju eth0
--out-interface
(-o)
Određuje interfejs sa kojeg će paket otići. Korisno za NAT i mašine sa više mrežnih interfejsa. Koristi se u IZLAZNIM, FORWARD i POSTROUTING lancima. Možete koristiti znak "+". iptables -t nat -A POSTROUTING --in-interface eth1
Implicitni (ne-dijeljeni) parametri
-p proto -h prikazivanje pomoći o implicitnim parametrima protokola protokola. iptables -p icmp -h
--izvorni port
(--sport)
Izvorni port, moguć samo za protokole --protocol tcp, ili --protocol udp iptables -A INPUT --protocol tcp --izvorni port 25
--odredišna luka
(--dport)
Odredišni port, moguć samo za protokole --protocol tcp, ili --protemocol udp iptables -A INPUT --protokol udp --odredišni port 67
Eksplicitni parametri
-m stanje --stanje (zastarjelo)
on je
-m conntrack --ctstate

Stanje veze. Dostupne opcije:

  • NOVO(Svi paketi uspostavljaju novu vezu)
  • ESTABLISHED(Svi paketi koji pripadaju uspostavljenoj vezi)
  • RELATED(Paketi koji ne pripadaju uspostavljenoj vezi, ali su joj pridruženi. Na primjer - FTP u aktivnom načinu rada koristi različite veze za prijenos podataka. Ove veze su povezane.)
  • INVALID(Paketi koji se iz ovog ili onog razloga ne mogu identificirati. Na primjer, ICMP greške ne pripadaju postojećim vezama)
  • itd. (više detalja u dokumentaciji)
iptables -A INPUT -m stanje --stanje NOVO,USPOSTAVLJENOiptables -A INPUT -m conntrack --ctstate NOVO,USPOSTAVLJENO
-m mac --mac-izvor Određuje MAC adresu mrežnog čvora koji je poslao paket. MAC adresa mora biti u obliku XX:XX:XX:XX:XX:XX. -m mac --mac-source 00:00:00:00:00:0

Akcije na pakete

Ovaj naslov bi bilo bolje preformulisati kao " Radnje na paketima koji odgovaraju kriterijima odabira Dakle, počiniti bilo koju radnje na paketima, morate postaviti ključ -j (--skok) i navedite koju konkretnu radnju treba poduzeti.

Akcije na paketima mogu imati sljedeće vrijednosti:

  • ACCEPT- paket napušta ovaj lanac i prenosi se u sljedeći (doslovno - PRIHVATI).
  • DROP- odbaciti paket koji zadovoljava uslov, dok se paket ne prenosi u druge tabele/lankove.
  • REJECT- odbacite paket slanjem ICMP poruke pošiljaocu, dok se paket ne prenosi drugim tablicama/lancima.
  • RETURN- vratite paket u prethodni lanac i nastavite njegov prolaz počevši od sljedećeg pravila.
  • SNAT izvor u paketu. Može se koristiti samo u lancima POSTROUTIRANJE i IZLAZ u nat tabelama.
  • DNAT- primijeniti prijevod adrese odredište u paketu. Može se koristiti u lancu PRERAUTIRANJE u nat stolu. (u izuzetnim slučajevima - u OUTPUT lancu)
  • LOG- prijavite paket (poslan demonu) i obradite ga s drugim pravilima.
  • MASQUERADE- koristi se umjesto toga SNAT ako postoji veza sa dinamičkom IP (dozvoljeno je specificirati samo u lancu POSTROUTING nat tablice).
  • MARK- koristi se za postavljanje oznaka na paketima, proslijeđenih na obradu u dalja pravila.
  • i sl.

Osim ovih radnji, postoje i druge koje se mogu naći u dokumentaciji (možda ću uskoro dopuniti članak u toku savladavanja teme). Neke radnje imaju dodatne opcije.

Tabela ispod daje primjere i opise dodatnih opcija:

Parametar Opis Primjer
DNAT (prevod mrežne adrese odredišta)
--do odredišta specificira koja IP adresa treba biti zamijenjena kao odredišna adresa. U primjeru, u svim paketima tcp protokola koji stignu na adresu 1.2.3.4, ova adresa će biti zamijenjena sa 4.3.2.1. iptables -t nat -A PREUSMIRANJE -p tcp -d 1.2.3.4 -j DNAT --do odredišta 4.3.2.1
LOG
--log nivo Koristi se za postavljanje nivoa evidentiranja (). U primjeru, maksimalni nivo evidentiranja je postavljen za sve tcp pakete u tablici filtera lanca FORWARD. iptables -A NAPRIJED -p tcp -j LOG --debug na nivou dnevnika
--log-prefiks Određuje tekst (prefiks) za prefiks svih poruka iptables. (vrlo zgodno za kasnije) Prefiks može imati do 29 znakova, uključujući razmake. U primjeru, svi tcp paketi u tablici filtera lanca INPUT sa INRUT-filter prefiksom se šalju u syslog. iptables -A INPUT -p tcp -j LOG --log-prefiks "INRUT-filter"
--log-ip-options Omogućava vam da unesete različite informacije iz zaglavlja IP paketa. iptables -A NAPRIJED -p tcp -j LOG --log-ip-options
i sl...

Ovim se zaključuje teorija o mrežnom filteru netfilter / iptables. U sljedećem članku dat ću praktične primjere za savladavanje ove teorije.

Sažetak

U ovom članku smo vrlo kratko razmotrili osnovne koncepte mrežnog filtera u Linuxu. Dakle, netfilter/iptables podsistem je dio Linux kernela i koristi se za organiziranje različitih šema filtriranja i manipulaciju mrežnim paketima. U ovom slučaju svaki paket prolazi od mrežnog interfejsa do kojeg je stigao i dalje određenom lančanom rutom, ovisno o tome da li je namijenjen lokalnom sistemu ili "ne-lokalnom". Svaki lanac se sastoji od skupa tabela koje sadrže niz pravila. Svako pravilo se sastoji od određenog kriterija/kriterija za odabir mrežnog paketa i neke akcije na paketu koja ispunjava ove kriterije. U skladu sa datim pravilima, na paketu se može izvršiti bilo koja radnja (na primjer, prijenos na sljedeći/drugi lanac, ispuštanje paketa, izmjena sadržaja ili zaglavlja, itd.). Svaki lanac i svaka tabela imaju svoju svrhu, funkcionalnost i mjesto u putu paketa. Na primjer, za filtriranje paketa koristi se tablica filtera, koja se nalazi u tri standardna lanca i može biti sadržana u korisnički definiranim lancima. Putanja paketa završava ili na odlaznom mrežnom sučelju ili na isporuci lokalnom procesu/aplikaciji.

Književnost

Ovdje se nalazi dosta zanimljivih informacija na ruskom:

  • http://www.opennet.ru/docs/RUS/iptables/
  • http://en.wikibooks.org/wiki/Iptables

Detaljniji materijal dostupan je na buržoaskom ovdje:

  • http://www.frozentux.net/documents/ipsysctl-tutorial/
  • http://www.netfilter.org/documentation/index.html

S poštovanjem, Mc.Sim!

Pouzdan zaštitni zid je jedan od najvažnijih aspekata zaštite svakog modernog operativnog sistema. Većina Linux distribucija uključuje nekoliko različitih alata za zaštitni zid. Ovaj vodič se fokusira na jedan od najpopularnijih - iptables.

Dakle, iptables je standardni firewall koji je podrazumevano uključen u većinu Linux distribucija (nftables se razvija da ga zameni). U stvari, iptables je korisnički interfejs za upravljanje netfilter sistemom, koji zauzvrat upravlja Linux mrežnim stekom. iptables upoređuje svaki dolazni paket sa skupom utvrđenih pravila, a zatim odlučuje šta dalje s njim učiniti.

Radilo se o tome kako tačno iptables radi. Ovaj članak se fokusira na praktične primjere koji pokazuju kako kreirati osnovni skup pravila za Ubuntu 14.04 server.

Osnovne iptables komande

Ovaj odjeljak sadrži osnovne komande pomoću kojih možete kreirati složen skup pravila i općenito kontrolirati iptables interfejs.

Zapamti: iptables komande moraju biti pokrenute sa root privilegijama. To znači da morate učiniti jedno od sljedećeg:

  • prijavite se kao root korisnik;
  • koristite su ili sudo -i da proširite korijensku ljusku;
  • pokrenite sve komande sa sudo (preporučeni način u Ubuntu).

Ovaj vodič koristi potonju opciju.

Dakle, prvo morate pogledati listu trenutnih iptables pravila. Za ovo se koristi oznaka -L:

sudo iptables -L
Lančani INPUT (prihvaćam pravila)


ciljna prot opt ​​izvorna destinacija
Lančani IZLAZ (prihvaćam pravila)
ciljna prot opt ​​izvorna destinacija

Kao što vidite, lista sadrži tri podrazumevana lanca (INPUT, OUTPUT i FORWARD), svaki sa postavljenom podrazumevanom politikom (trenutno ACCEPT). Također možete vidjeti nazive kolona. Ali sama pravila nisu uključena u ovu listu, budući da se Ubuntu ne isporučuje sa skupom zadanih pravila.

Sa -S zastavicom, ova lista se može vidjeti u drugom formatu koji odražava naredbe potrebne za aktiviranje pravila i politika:

sudo iptables -S
-P ULAZ PRIHVATI
-P NASLJEDITI PRIHVATI
-P IZLAZ PRIHVATI

Da biste replicirali konfiguracije, sve što trebate učiniti je upisati sudo iptables na početak svake linije rezultata. (Ovisno o vašim konfiguracijama, ovaj postupak može biti malo složeniji kada se povezujete na daljinu; ako pravila koja dozvoljavaju trenutnu vezu nisu već postavljena, ne biste trebali postavljati politiku DROP.)

Za resetiranje trenutnih pravila (ako ih ima), upišite:

sudo iptables -F

Opet, defaultna politika je vrlo važna u ovom trenutku jer je neće promijeniti prethodna naredba iako su sva pravila uklonjena iz lanaca.

Prije resetiranja pravila na udaljenoj vezi, morate osigurati da lanci INPUT i OUTPUT imaju postavljenu politiku ACCEPT. Ovo se radi ovako:

sudo iptables -P PRIHVATI ULAZ
sudo iptables -P PRIHVATI IZLAZ
sudo iptables -F

Nakon što kreirate pravila koja dozvoljavaju udaljene veze, možete postaviti politiku DROP. Dakle, idemo direktno na kreiranje pravila.

Kreiranje iptables pravila

Kao što je gore pomenuto, ovaj vodič se fokusira na rad sa INPUT lancem, pošto je on odgovoran za dolazni saobraćaj. Prvo trebamo uzeti u obzir već spomenuto pravilo - pravilo koje dozvoljava trenutnu SSH vezu.

izgleda ovako:

sudo iptables -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j PRIHVATI

Naravno, u početku može izgledati neverovatno komplikovano; Da biste razumjeli ovo pravilo, upoznajte se s njegovim komponentama:

  • - ULAZ: zastava -A dodaje ( append) pravilo do kraja lanca. Ovaj dio naredbe govori iptables-u da doda pravilo na kraj INPUT lanca.
  • -m conntrack: pored skupa osnovnih funkcija, iptables ima i set ekstenzija, odnosno modula, koji su odgovorni za dodatne karakteristike firewall-a. Ovaj dio naredbe kaže da je korisniku potreban pristup funkcijama conntrack modula. Ovaj modul vam omogućava da koristite komande koje odlučuju šta da radite sa paketom na osnovu njegovog odnosa sa prethodnim konekcijama.
  • --ctstate: jedna od naredbi dostupnih prilikom pozivanja conntrack modula. Ova komanda vam omogućava da pratite odnos paketa prema drugim paketima koji su prethodno pregledani. Postavljeno je na ESTABLISHED (koji prihvata pakete koji su dio postojeće veze) i RELATED (prihvata pakete koji su povezani s već uspostavljenom vezom). Upravo je ovaj dio pravila odgovoran za trenutnu SSH sesiju.
  • jACCEPT: specificira radnju (cilj) koja će se izvršiti na paketu koji odgovara pravilu. U ovom slučaju, iptables će prihvatiti pakete koji ispunjavaju prethodne kriterije.

Ovo pravilo treba postaviti na početak kako bi se osiguralo da već postojeće veze odgovaraju pravilima, da budu prihvaćene i da napuste lanac prije nego dođu do DROP pravila.

Ako zatražite listu pravila, možete vidjeti promjene:

sudo iptables -L
Lančani INPUT (prihvaćam pravila)
ciljna prot opt ​​izvorna destinacija
PRIHVATI sve -- bilo gdje bilo gdje ctstate POVEZANO, ESTABLISHOVANO
Lanac FORWARD (prihvaćam pravila)
ciljna prot opt ​​izvorna destinacija
Lančani IZLAZ (prihvaćam pravila)
ciljna prot opt ​​izvorna destinacija

Sada kada ste upoznati sa osnovnom sintaksom, kreirajte još nekoliko pravila koja prihvataju vezu.

Uspostavljanje drugih važnih veza

Prethodno je iptables dobio instrukcije da ne ispušta sve trenutne veze, ali i da prihvati sve veze povezane s njima. Sada morate kreirati pravila koja prihvaćaju veze koje ne ispunjavaju gore navedene kriterije.

Ostavite dva porta otvorena: SSH port (ovaj vodič koristi podrazumevani port od 22; ako je ova vrednost promenjena, obavezno unesite novu vrednost); takođe, pretpostavimo da ovaj računar podrazumevano pokreće veb server na portu 80 (nemojte dodavati ovo pravilo ako nije).

Dakle, linije koje se koriste za kreiranje takvih pravila izgledaju ovako:

sudo iptables -A INPUT -p tcp --dport 22 -j PRIHVATI
sudo iptables -A INPUT -p tcp --dport 80 -j PRIHVATI

Kao što vidite, oni su vrlo slični prvom pravilu; možda imaju još jednostavniju strukturu. Nove opcije:

  • strtcp: Ova opcija omogućava prolazak paketa koji koriste TCP (protokol orijentiran na tok koji koristi većina aplikacija jer pruža pouzdanu komunikaciju).
  • dport: ova opcija je dostupna kada se koristi -p tcp zastavica. Određuje ulazni port kojem port paketa mora odgovarati. Prvo pravilo dozvoljava TCP pakete namenjene portu 22, a drugo pravilo prihvata TCP saobraćaj namenjen portu 80.

Sada moramo kreirati još jedno pravilo ACCEPT da bismo bili sigurni da server radi ispravno. Usluge obično komuniciraju razmjenom paketa; da bi to učinili, koriste mrežni pseudo-interfejs - takozvani loopback uređaj, koji usmjerava promet nazad na njegov izvor, a ne na druge računare.

To jest, ako servis 1 treba da uspostavi vezu sa uslugom 2 osluškujući veze na portu 4555, onda servis 1 šalje paket na port 4555 koristeći loopback uređaj. Ovo ponašanje treba dozvoliti jer je to važan uslov za ispravan rad mnogih programa.

Da biste to učinili, dodajte sljedeće pravilo:

sudo iptables -I INPUT 1 -i lo -j PRIHVATI

Malo se razlikuje od prethodnih pravila; razmotrite to detaljnije:

  • IINPUT 1: Oznaka -I govori iptables-u da ubaci pravilo. Ova zastavica se razlikuje od -A zastavice (koja jednostavno dodaje pravilo na kraj lanca); on specificira lanac u koji se pravilo dodaje i lokaciju pravila u njemu. U ovom slučaju, pravilo se mora umetnuti na samom početku INPUT lanca, zbog čega će se sva pravila pomjeriti za jednu poziciju. Ovo pravilo treba staviti na početak lanca, jer je jedno od glavnih pravila i ne treba da zavisi od ostalih.
  • ilo: Ova komponenta pravila dozvoljava paketima koji koriste lo sučelje ("lo" je drugo ime za loopback uređaj) da prođu. To znači da svaki paket koji koristi ovaj interfejs mora biti prihvaćen.

Za pregled trenutnih pravila koristite oznaku -S, jer zastavica -L ne prikazuje neke informacije (na primjer, sučelje na koje je pravilo vezano, što je vrlo važno u slučaju posljednjeg pravila):

sudo iptables -S
-P ULAZ PRIHVATI
-P NASLJEDITI PRIHVATI
-P IZLAZ PRIHVATI
-A ULAZ -i lo -j PRIHVATI
-A INPUT -m conntrack --ctstate POVEZANO,USPOSTAVLJENO -j PRIHVATI
-A ULAZ -p tcp -m tcp --dport 22 -j PRIHVATI
-A ULAZ -p tcp -m tcp --dport 80 -j PRIHVATI

Kreiranje DROP pravila

Dakle, trenutno su kreirana 4 pravila koja prihvataju pakete na osnovu određenih kriterijuma. Međutim, trenutno server još uvijek ne blokira nijedan drugi paket.

Ako paket prolazi kroz INPUT lanac i ne odgovara nijednom od četiri pravila, izvršit će se zadana politika (ACCEPT), koja će nekako prihvatiti paket. Sada to treba promijeniti.

To se može učiniti na dva načina, koji imaju prilično značajne razlike.

Prvi način je da uredite zadanu politiku lanca INPUT; za ovu vrstu:

sudo iptables -P INPUT DROP

Ovo pravilo će pratiti i ispustiti sve pakete koji se ne podudaraju ni sa jednim od pravila INPUT lanca. Jedna od posljedica ove vrste konstrukcije je da će ispustiti pakete čak i nakon što su sama pravila odbačena.

Naravno, ovo povećava nivo sigurnosti servera; međutim, ovo može imati ozbiljne posljedice ako korisnik nema drugog načina da se poveže sa serverom. Najčešće hosting provajderi pružaju web konzolu za povezivanje sa serverom u slučaju takvih problema. Takva konzola djeluje kao virtualna lokalna veza, tako da iptables neće odgovoriti na nju.

Možete podesiti da server automatski resetuje vezu ako se pravila izbrišu. Ovo će server učiniti sigurnijim i teže dostupnim. To također znači da možete dodati pravila na kraj lanca, a istovremeno će svi neželjeni paketi biti odbačeni.

Alternativni pristup je dodavanje pravila na kraju lanca koje ispušta sve nepodudarne pakete uz održavanje politike ACCEPT.

Da biste vratili politiku ACCEPT u INPUT lanac, otkucajte:

sudo iptables -P PRIHVATI ULAZ

Sada možete dodati pravilo na kraj ovog lanca koje će ispustiti sve nepodudarne pakete:

sudo iptables -A INPUT -j DROP

U normalnim radnim uvjetima, rezultat će biti potpuno isti kao kod korištenja DROP politike. Ovo pravilo ispušta svaki paket koji stigne do njega, što sprečava da paketi koji ne odgovaraju pravilima stignu do servera.

U osnovi, drugi pristup se koristi kada je potrebno zadržati politiku ACCEPT koja prihvata promet. To jest, čak i ako se sva pravila resetuju, korisnik može pristupiti mašini na mreži. Ovaj pristup vam omogućava da izvršite zadane radnje bez potrebe da mijenjate politiku koja će se primijeniti na prazan lanac.

Naravno, ovo također znači da svako pravilo koje treba dodati na kraj lanca mora doći prije pravila ispuštanja. To se može učiniti ili privremenim uklanjanjem pravila resetiranja:

sudo iptables -D INPUT -j DROP
sudo iptables -INPUT novo_pravilo
sudo iptables -A INPUT -j DROP

ili umetanjem novog pravila na kraj lanca (ali prije pravila resetiranja), navodeći broj linije. Da dodate pravilo u red 4, otkucajte:

sudo iptables -I INPUT 4 novo_pravilo

Ako postoji mnogo pravila, ručno izračunavanje broja reda je prilično problematično; u tom slučaju, iptables može numerisati redove:

sudo iptables -L --brojevi-linija
Lanac INPUT (politika DROP)

1 PRIHVATITE sve -- bilo gdje i bilo gdje
2 PRIHVATI sve -- bilo gdje bilo gdje ctstate POVEZANO, ESTABLIRANO
3 PRIHVATI tcp -- bilo gdje bilo gdje tcp dpt:ssh
4 PRIHVATI tcp -- bilo gdje bilo gdje tcp dpt:http
Lanac FORWARD (prihvaćam pravila)
num target prot opt ​​izvor odredište
Lančani IZLAZ (prihvaćam pravila)
num target prot opt ​​izvor odredište

Ovo vam omogućava da budete sigurni da je pravilo uneseno u ispravan red.

Čuvanje postavki iptablesa

Podrazumevano, sva nesačuvana pravila ostaju na snazi ​​do sledećeg ponovnog pokretanja servera; odmah nakon ponovnog pokretanja, nesačuvana pravila će biti izgubljena.

Ovo je korisno u nekim slučajevima, jer omogućava korisnicima koji su se slučajno blokirali da dobiju pristup serveru. Međutim, u većini slučajeva ipak je zgodnije sačuvati pravila i učitati ih kada se server pokrene.

To se može učiniti na nekoliko načina; najjednostavniji je da koristite iptables-persistent paket, koji se može preuzeti iz podrazumevanog Ubuntu repozitorija:

sudo apt-get update
sudo apt-get install iptables-persistent

Tokom instalacije, paket će odrediti da li trenutna pravila treba sačuvati za dalje automatsko učitavanje; ako su trenutna pravila testirana (omogućavaju SSH veze) i ispunjavaju sve zahtjeve, mogu se sačuvati.

Kada se instalacija završi, pojavit će se nova usluga pod nazivom iptables-persistent koja će se pokrenuti nakon ponovnog pokretanja servera i nastaviti sa uspostavljenim pravilima.

Rezultati

Ovaj vodič pomaže da se firewall konfiguriše u skladu sa zahtjevima korisnika. Naravno, postoji mnogo više takvih uslužnih programa, a neki od njih mogu biti lakši za korištenje; Ipak, iptables je jedan od najboljih alata, makar samo zato što pokazuje neke od osnovnih struktura netfiltera i uključen je u mnoge sisteme.

Tagovi: ,

Svaki računar spojen na mrežu je u potencijalnoj opasnosti. Na mreži postoji mnogo prijetnji, od programa koji će pokušati prodrijeti u sistem na bilo koji način do hakera koji žele pristupiti računaru koji im je potreban. A softver instaliran na računaru može sadržavati još nepoznate i nezakrpljene ranjivosti, koje mogu postati sigurnosna rupa.

Ako za kućne računare to nije previše relevantno, jer su povezani na mrežu preko rutera i NAT-a, koji ih skrivaju od vanjske mreže, onda je za servere to relevantnije nego ikad. U Linux operativnom sistemu, vrlo fleksibilan i pouzdan iptables firewall je ugrađen u kernel.

Uz pomoć ovog programa sistem je zaštićen od eksternih upada, prosljeđivanja portova, ali i mnogih radnji sa prometom. Ali njegov nedostatak je što ga je malo teško postaviti. Ovaj članak će pokriti konfiguriranje iptablesa za lutke. Nadam se da ćete nakon njega moći pouzdano koristiti osnovne karakteristike iptablesa.

Podsistem iptables i Netfilter je već dugo ugrađen u Linux kernel. Svi mrežni paketi koji prolaze kroz računar, šalju ih računar ili su namenjeni računaru, kernel usmerava kroz iptables filter. Tamo su ovi paketi podvrgnuti provjerama i onda se za svaku provjeru, ako je prošla, izvršava radnja navedena u njoj. Na primjer, paket se prosljeđuje kernelu kako bi se poslao ciljnom programu ili odbacio.

Vrste paketa

Svi paketi su podijeljeni u tri tipa: dolazni, odlazni i prolazni. Dolazni - oni koji su poslani na ovaj računar, odlazni - poslani sa ovog računara na mrežu. A oni koji prolaze su paketi koje samo treba proslijediti, na primjer, ako se vaš računar ponaša kao ruter.

Shodno tome, u filteru iptables, svi paketi su podijeljeni u tri slična lanca:

  • Input- obrađuje dolazne pakete i veze. Na primjer, ako se neki vanjski korisnik pokušava povezati s vašim računalom putem ssh-a ili bilo koje web stranice, poslat će vam svoj sadržaj na zahtjev pretraživača. Svi ovi paketi će završiti u ovom lancu;
  • naprijed- ovaj lanac se koristi za prolazne veze. Ovo uključuje pakete koji se šalju na vaš računar, ali nisu namijenjeni za njega, oni se jednostavno šalju preko mreže do cilja. Kao što sam rekao, to se primećuje na ruterima ili, na primer, ako vaš računar distribuira wifi;
  • izlaz- ovaj lanac se koristi za odlazne pakete i veze. Ovo uključuje pakete koji su generisani kada ste pokušali da pingujete web lokaciju ili kada pokrenete pretraživač i pokušate da otvorite bilo koju lokaciju.

Ali ako mislite da možete potpuno zatvoriti ulazni lanac kako biste povećali sigurnost, onda ste u velikoj zabludi. Kada mreža radi, koriste se i ulazni i izlazni lanci. Na primjer, pokušate pingovati, podaci se šalju kroz izlaz, ali odgovor dolazi kroz ulaz. Ista stvar se dešava prilikom pregledavanja sajtova i drugih aktivnosti. Ali prednji lanac se možda uopšte neće koristiti ako vaš računar nije ruter. Dakle, konfigurisanje iptablesa mora biti obavljeno vrlo pažljivo.

Pravila i radnje

Prije nego što pređete na kreiranje liste iptables pravila, morate razmotriti kako funkcionišu i šta su. Za svaki tip paketa možete postaviti skup pravila koja će se redom provjeravati za usklađenost s paketom, a ako se paket podudara, onda na njega primijeniti radnju specificiranu u pravilu. Pravila formiraju lanac, pa se ulaz, izlaz i prosljeđivanje nazivaju lanci, lanci pravila. Može biti nekoliko radnji:

  • ACCEPT- dozvoliti da paket prođe dalje duž lanca pravila;
  • DROP- ukloniti paket;
  • REJECT- odbiti paket, pošiljaocu će biti poslata poruka da je paket odbijen;
  • LOG- napraviti zapis o paketu u log fajlu;
  • QUEUE- poslati paket korisničkoj aplikaciji.

Pravila mogu provjeriti sva podudaranja, na primjer, po IP-u, portu primaoca ili pošiljaoca, zaglavlju paketa i još mnogo toga. Ako paket ne odgovara nijednom od pravila, tada se na njega primjenjuje zadana akcija, obično ACCEPT.

Kad shvatimo pravila, možemo se vratiti lancima. Pored gore navedenih, postoje dva dodatna lanca pravila:

  • prerouting- paket ulazi u ovaj lanac prije obrade iptables-a, sistem još ne zna gdje će biti poslat, na ulaz, izlaz ili prosljeđivanje;
  • postrouting- svi prolazni paketi koji su već prošli lanac naprijed stižu ovdje.

Ali to nije sve. Imamo i iptables tabele, sa kojima je takođe poželjno raditi.

ipatables

Iznad lanaca pravila u iptables, postoji još jedan sloj apstrakcije, a to su tabele. U sistemu postoji nekoliko tabela i sve imaju standardni skup ulaznih, prosleđih i izlaznih lanaca. Tabele se koriste za izvođenje različitih radnji na paketima, kao što su modifikacija ili filtriranje. Sada ovo nije toliko važno za vas i biće dovoljno da znate da se filtriranje iptables paketa vrši u tabeli filtera. Ali pogledaćemo ih sve:

  • sirovo- dizajnirani za rad sa sirovim pakovanjima, dok još nisu obrađena;
  • mangle- dizajniran za modificiranje paketa;
  • nat- omogućava nat rad ako želite da koristite računar kao ruter;
  • filter- glavna tabela za filtriranje paketa, koja se podrazumevano koristi.

Sa teorijom skoro sve, sada pogledajmo iptables uslužni program komandne linije, pomoću kojeg se upravlja sistemom iptables.

Iptables uslužni program

Podsistem iptables i netfilter ugrađeni su u kernel, ali set uslužnih programa za upravljanje svim tim nije uvijek isporučen sa sistemom. Da biste instalirali uslužni program na Ubuntu, otkucajte:

sudo apt install iptables

Na distribucijama zasnovanim na Fedora, instaliranje iptables-a je malo drugačije:

sudo yum install iptables

Kada je instalacija iptables završena, možete nastaviti s konfiguracijom, ali prvo pogledajmo sintaksu uslužnog programa. Naredba obično izgleda ovako:

-t lanac radnji stola Dodatne opcije

Sada pogledajmo iptables opcije, tabela specificira tabelu sa kojom treba raditi, ova opcija se može izostaviti, radnja je željena radnja, na primjer, kreiranje ili brisanje pravila, a dodatne opcije opisuju radnju i pravilo za biti izvedena.

Ostaje razmotriti glavne radnje koje vam iptables omogućava da izvršite:

  • -A- dodati pravilo u lanac;
  • -WITH- provjeriti sva pravila;
  • -D- izbrisati pravilo;
  • -Ja- ubaciti pravilo sa traženim brojem;
  • -L- prikazati sva pravila u trenutnom lancu;
  • -S- prikazati sva pravila;
  • -F- očistiti sva pravila;
  • -N- kreirati lanac;
  • -X- skinite lanac;
  • -P- postavite zadanu akciju.

Dodatne opcije za pravila:

  • -p- specificirajte protokol, jedan od tcp, udp, udplite, icmp, icmpv6, esp, ah, sctp,
    mh;
  • -s- navedite ip adresu uređaja koji šalje paket;
  • -d- navedite ip adresu primaoca;
  • -i- ulazni mrežni interfejs;
  • -o- odlazni mrežni interfejs;
  • -j- odaberite radnju ako se pravilo podudara.

Sada možemo prijeći na primjere kako je iptables konfiguriran.

Primjeri konfiguracije za Iptables

Pogledat ćemo nekoliko osnovnih primjera kako biste mogli konsolidirati sve što ste pročitali iznad.

Lista pravila

Prvo, pogledajmo kako se vrši traženje pravila iptablesa, za ovo je dovoljna opcija -L:

Također možete odrediti željeni lanac da prikažete pravila samo za njega:

iptables -L INPUT

Brisanje pravila

Ne možete jednostavno onemogućiti iptables zaustavljanjem usluge ažuriranja iptables pravila preko systemd-a, ili čak uklanjanjem skupa uslužnih programa za konfiguraciju. Podsistem radi na nivou kernela i ne zavisi od toga šta ste tamo instalirali. Stoga, ako učinite nešto pogrešno, morat ćete očistiti pravila. Da biste to učinili, pokrenite:

Ili samo za određeni lanac:

sudo iptables -F Unos

Podsjećam vas da se sve ove radnje izvode za zadanu tablicu - filter.

Zadana pravila

Kao što sam rekao, ako nijedno pravilo ne odgovara paketu, onda se na njega primjenjuje zadana akcija. Može se postaviti sa -p opcijom:

sudo iptables -p PRIHVATI ULAZ
$ sudo iptables -p PRIHVATI IZLAZ
$ sudo iptables -p PROSLJEDITI DROP

U ovom primjeru, omogućavamo INPUT i OUTPUT lance, ali onemogućavamo NAPRIJED.

Blokiranje paketa

Da blokiramo pakete, možemo koristiti akciju DROP, možemo filtrirati pakete koje trebamo blokirati prema mnogim kriterijima, kao što su protokol, IP adresa, mrežna maska, port i još mnogo toga.

Ovako će izgledati naredba koja vam omogućava da dodate iptables pravilo za blokiranje svih dolaznih paketa od 10.10.10.10:

sudo iptables -A INPUT -s 10.10.10.10 -j DROP

A sada odlazni paketi na istu adresu:

Blokiranje IP opsega radi se na sličan način. Da biste to učinili, trebate koristiti mrežnu masku 10.10.10.0/24. Ovo će biti sve adrese počevši od 10.10.10.0 do 10.10.10.255:

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

Ili proširena verzija maske:

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

Također možete blokirati sve dolazne ssh veze:

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

Kao što vidite, dodavanje iptables pravila je vrlo jednostavno.

Brisanje pravila

Brisanje iptables pravila se radi na isti način kao i kreiranje novih, ali umjesto opcije A, trebate koristiti opciju D. Prvo pogledajte listu pravila:

Na primjer, ovako možete izbrisati iptables pravilo koje je kreirano drugo:

sudo iptables -A OUTPUT -s 10.10.10.10 -j DROP

Također možete potpuno obrisati iptables tako što ćete pokrenuti naredbu s opcijom -F:

Top Related Articles