Kako podesiti pametne telefone i računare. Informativni portal

Iptables prolaze na određenu adresu. Pošta i trenutne poruke

Mala početna skripta (pravila, iptables faq) za desktop ili jednostavan server. U ovom slučaju, primjeri rada s portovima jednog ili drugog softvera koji radi na vašem računalu. Sigurnosne mjere se moraju poštovati na svakom računaru. Mit da je Linux sigurniji nije tačan, sve ovisi o nespretnim rukama administratora. Postoje dobro zaštićeni Windows sistemi, kao i Linux sistemi koji su otvoreni za skoro svakoga. Stoga biste ipak trebali malo razmisliti o mrežnoj zaštiti vašeg računala. U nastavku su dodana neka pravila za iptables koja bi vam mogla dobro doći na početku.

Konkretno zamijenjen $ IPT sa /sbin/iptables, ako nekome treba samo jedno pravilo da ništa ne mijenja - samo kopiraj i izvrši. Naravno, ovdje je još uvijek malo pravila, nema različitih VPN-ova itd., ako želite, dodajte.

Ove linije se mogu u potpunosti kopirati u bilo koju skriptu i samo je izvršiti. Za obične slučajeve to je sasvim dovoljno. Ako bilo koja aplikacija ne može biti na mreži, posebno je dodano logovanje. Samo otvorite tail -f / var / log / syslog (ili vaš ako nije Ubuntu) i gledajte! Ako imate pitanja, dodajte ih u raspravu, zajedno ćemo ih riješiti.

PS Osim ovih pravila, razmislite o tome šta da uzmete iz članka o TCP optimizaciji.

Kako ukloniti pravilo u iptables

Objavio Alexey Uboženko

Nekoliko puta sam se susreo sa činjenicom da čak i ljudi koji uopšte nisu glupi prave apsolutno neoprostive greške. Na primjer, otvaraju port na kojem se pokreće baza podataka za cijeli Internet.

Blog sistemske administracije. Članci o Linuxu, Windowsu, NetApp skladištenju i virtuelizaciji.

Ovo je često slučaj za DevOps početnike koji su cijeli život kodirali, a sada njihove odgovornosti uključuju i postavljanje servera. Na mreži postoje dobri vodiči o osnovnom postavljanju zaštitnog zida u Linuxu i drugim * nix-ima, ali često su to listovi za mnoge ekrane. Dakle, nadamo se da će nekome biti od koristi ovaj sažetiji vodič.

Bitan! Vrlo je lako greškom ispaliti automobil na način da više nećete ući u njega. Ovo posebno važi za hosting u oblaku. Na primjer, ako u AWS-u zatvorite sve portove od 1024 do 65536, iz nekog razloga mašina se zatvara nakon ponovnog pokretanja. generalno sve luke. Ako hostujete u oblacima, najbolje je da konfigurišete svoj zaštitni zid preko hostovanog veb interfejsa.

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

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

  • Dozvoli / zabrani dolazni saobraćaj na određene portove koristeći specifične 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;
  • Konfigurisanje NAT-a, pogledajte post o instalaciji i konfigurisanju OpenVPN-a;
  • Čuo sam da pravi gurui mogu postaviti zaštitu od DDoS-a i grube sile, ograničiti pristup mreži određenim aplikacijama, korisnicima ili grupama i raditi druge lude stvari;

Imajte na umu da mi se iptables uslužni program u početku činio izuzetno nezgodnim u poređenju sa ipfw-om u FreeBSD-u. Srećom, nakon nekog vremena rada s njim, sve ove mnoge zastavice poput -A, -D, -j i druge postaju poznate, pa budite strpljivi. Pogledajmo glavne komande.

Prikaži sva pravila:

Možda ćete primijetiti da Netfilter ima neku vrstu "lanaca" - barem INPUT, OUTPUT i FORWARD.

Ja lično također imam Docker lanac na svom autu. Po prvi put, prva dva možete zamisliti kao sav dolazni i odlazni saobraćaj, respektivno, a na ostatak privremeno zaboravite. Velike su šanse da vam nikada neće trebati.

Uklonite sva pravila:

Lanac promjene politike (zadano ponašanje):

iptables -P INPUT DROP
iptables -P ULAZ PRIHVAT

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 primjer.com -j DROP

Zabrana odlaznih veza:

iptables -A OUTPUT -d 123.45.67.89 -j DROP

Negativi se mogu koristiti u pravilima:

iptables -A INPUT! -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 označava protokol. Možete koristiti sve, icmp, tcp, udp ili broj protokola iz / etc / protokola. Oznaka -sport označava port sa kojeg je paket poslan, a -dport označava odredišni port:

iptables -A INPUT -p tcp -sport80-j PRIHVATI
iptables -A INPUT -p tcp -dport80-j PRIHVATI

Umetnite pravilo na početak lanca:

iptables -I INPUT ...

Ili možete odrediti određenu poziciju:

iptables-save> /etc/iptables.rules

Pravila vraćanja:

iptables-restore

Pogledajmo sada nekoliko praktičnih primjera. Ovo je, na primjer, emulacija split mreže u testu koji provjerava ponašanje aplikacije koja koristi Akka Cluster:

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

Oporavak je potpuno isti, osim što je -A zastavica zamijenjena zastavicom -D.

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

Primjer 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:* LISTEN 1789 / epmd
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 797 / sshd
tcp 0 0 127.0.0.1:5432 0.0.0.0:* LISTEN 990 / postgres

Nginx i SSHd pretražuju internet, to je u redu. PostgreSQL sluša samo lokalni interfejs, tako da ni sa njim nema problema. Ali epmd strši (možete ga 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 zabraniti sve veze izvana na port 81 i starije:

iptables -A INPUT -m multiport \
-p tcp —dports81: 65535! -s 127.0.0.0/8-j DROP

Ovo koristi ekstenziju za više portova za određivanje raspona portova.

Provjeravamo da li sve radi. Ako je u redu, sačuvajte pravila:

iptables-save> /etc/iptables.rules

Da biste preuzeli pravila pri pokretanju sistema, kreirajte novu datoteku /etc/network/if-pre-up.d/iptables:

iptables-restoreizlaz0

... a mi kažemo:

chmod + x /etc/network/if-pre-up.d/iptables

Ova metoda je potvrđena da radi na Ubuntu 14.04 LTS.

Debian bi također trebao raditi. Opis alternativnog načina vraćanja pravila zaštitnog zida pri pokretanju sistema možete pronaći u već spomenutom članku o OpenVPN-u.

Dodatni resursi za one koji žele saznati više o Netfilteru:

Kako konfigurišete zaštitne zidove na vašim serverima?

Tagovi: Linux, Sigurnost, Mreže.

Uslužni program komandne linije iptables se koristi za konfigurisanje netfilter firewall ugrađenog u sistem baziran na jezgru Linuxa.

Ovaj priručnik je pogodan kako za lutke koji žele razumjeti aspekte mrežne sigurnosti, tako i za iskusne stručnjake kao varalicu.

Princip podešavanja

Opća sintaksa za korištenje iptables-a je:

iptables -t<таблица> <команда> <цепочка>[soba]<условие> <действие>

<таблица>

Netfilter pravila su raspoređena u 4 tabele, od kojih svaka ima svoju svrhu (više detalja u nastavku). Zadaje se ključem -t, ali ako ovaj parametar nije specificiran, akcija će se izvršiti za zadanu tablicu - filter.

<команда>

Naredbe pokazuju kakvu radnju izvodimo na netfilteru, na primjer, kreiranje ili brisanje pravila.

<цепочка>

Svaka tabela ima lance, za svaki od kojih se kreiraju sama pravila. Na primjer, za gornju tablicu filtera, postoje tri unaprijed definirana lanca - INPUT (dolazni paketi), OUTPUT (odlazni) i FORWARD (tranzit).

[soba]

Neke naredbe zahtijevaju navođenje broja pravila, na primjer, za brisanje ili uređivanje.

<условие>

Uvjet opisuje kriterije za obradu određenog pravila.

<действие>

Pa, u stvari, šta da radimo sa paketom ako odgovara kriterijumima uslova.

* Da budemo pošteni, vrijedi napomenuti da akcijski ključ ne mora ići na kraju. Samo što se ovaj format najčešće nalazi u uputama i olakšava čitanje pravila.

Iptables ključevi i primjeri njihove upotrebe

Za rad sa tabelama (iptables -t)

Podsjećamo, sva pravila u netfilteru su raspoređena po tabelama. Da biste radili sa određenom tablicom, morate koristiti -t prekidač.

Komande

Sljedeći ključevi određuju šta radi uslužni program iptables.

Ključ Opis i primjeri
-A Dodavanje pravila na kraj liste:
iptables -A INPUT -s 192.168.0.15 -j DROP
odbiti dolaz sa 192.168.0.15.
-D Uklanjanje pravila:
iptables -D ULAZ 10
obrišite pravilo u INPUT lancu pod brojem 10.
-Ja Umetanje pravila u određeni dio liste:
iptables -I INPUT 5 -s 192.168.0.15 -j DROP
umetnite pravilo 5. na listi.
-R Zamjena pravila.
iptables -R IZLAZ 5 -s 192.168.0.15 -j PRIHVATI
zamijenite naše 5. pravilo sa zabrane na dopuštenje.
-F Brisanje pravila u lancu.
iptables -F INPUT
-Z Resetiranje statistike.
iptables -Z INPUT
-N Kreiranje lanca.
iptables -N CHAINNEW
-X Brisanje lanca.
iptables -X CHAINNEW
-P Definiranje zadanog pravila.
iptables -P INPUT DROP
-E Preimenujte lanac.
iptables -E CHAINNEW CHAINOLD

Uslovi

Ovi ključevi definiraju uvjete pravila.

Ključ Opis i primjeri
-p Mrežni protokol. Važeće opcije su TCP, UDP, ICMP ili SVE.
iptables -A INPUT -p tcp -j PRIHVATI
dozvoliti sve dolazne tcp veze.
-s Izvorna adresa - ime hosta, IP adresa ili podmreža u CIDR notaciji.
iptables -A INPUT -s 192.168.0.50 -j DROP
odbiti dolaz sa hosta 192.168.0.50
-d Adresa odredišta. Princip upotrebe je sličan prethodnom prekidaču -s.
iptables -A OUTPUT -d 192.168.0.50 -j DROP
zabrani odlaz na host 192.168.0.50
-i Mrežni adapter preko kojeg se primaju paketi (INPUT).
iptables -A INPUT -i eth2 -j DROP
zabrani dolazni za ethernet interfejs eth2.
-o Mrežni adapter iz kojeg paketi odlaze (OUTPUT).
iptables -A IZLAZ -o eth3 -j PRIHVATI
dozvoli odlaz sa ethernet interfejsa eth3.
—Dport Odredišna luka.
iptables -A INPUT -p tcp -dport 80 -j PRIHVATI
dozvoli dolaz na port 80.
—Sport Izvorni port.
iptables -A INPUT -p tcp -sport 1023 -j DROP
odbiti dolaz sa porta 1023.

Navedeni ključevi također podržavaju konstrukciju pomoću znaka ! .

Postavljanje netfiltera sa iptables

Invertira uslov, na primjer
iptables -A INPUT -s! 192.168.0.50 -j DROP
će odbiti vezu sa svim hostovima osim 192.168.0.50.

Akcije

Radnje koje treba izvršiti na paketu koji odgovara kriterijima uvjeta. Svaka tabela ima svoj skup valjanih radnji. Navedeno pomoću ključa -j.

sto Akcija Opis
filter ACCEPT Rješava paket.
DROP Odbija paket.
REJECT Sprečava slanje poruke izvoru.
nat MASQUERADE Za odlazne pakete, zamjenjuje izvornu IP adresu adresom interfejsa sa kojeg paket odlazi.
SNAT Slično MASQUERADE, ali specificirajući specifično mrežno sučelje, čija adresa će se koristiti za lažiranje.
DNAT Prijevara adresa za dolazne pakete.
REDIRECT Preusmjerava zahtjev na drugi port na istom sistemu.
mangle TOS Modifikacija TOS polja (prioritet saobraćaja).
DSCP DSCP promjena (također prioritet saobraćaja).
TTL Promijenite TTL (životni vijek paketa).
HL Slično TTL-u, ali za IPv6.
MARK Označavanje paketa. Koristi se za naknadno filtriranje ili oblikovanje.
CONNMARK Označavanje priključka.
TCPMSS Promjena MTU vrijednosti.

Primjeri najčešće korištenih iptables naredbi

Uobičajene komande

Pogledajte pravila sa njihovim brojevima:

iptables -L —brojevi redova

Za svaku tabelu morate posebno pogledati pravila:

iptables -t nat -L --brojevi-linija

Uklonite sva pravila:

Postavite zadana pravila:

iptables -P INPUT DROP

iptables -P IZLAZ DROP

* u ovim primjerima, prema zadanim postavkama, za sve dolazne (INPUT) i odlazne (OUTPUT) pakete, pravilo odbijanja (DROP) će raditi.

Dozvoli sve

Metoda 1. Dodavanjem pravila:

iptables -I INPUT 1 -j PRIHVATI

iptables -I IZLAZ 1 -j PRIHVATI

iptables -I PROSLJEDI 1 -j PRIHVATI

* ove tri komande će kreirati pravila koja dozvoljavaju sve dolazne, odlazne i tranzitne pakete.

Metoda 2. Čišćenjem pravila:

* ovdje prvo uklanjamo sva pravila (-F), a zatim postavljamo zadanu politiku - dozvoli ulazni, odlazni i tranzitni (-S).

Metoda 3. Onemogućavanje usluge (zgodno je onemogućiti zaštitni zid na neko vrijeme radi dijagnosticiranja problema):

Rad sa pravilima

Dodajte pravilo na kraj liste:

iptables -A INPUT -p tcp -dport 25 -j PRIHVATI

iptables -A INPUT -p tcp -s! 192.168.0.25 —dport 993 -i eth0 -j PRIHVATI

Dodajte raspon portova:

iptables -A INPUT -p tcp -dport 3000: 4000 -j PRIHVATI

* u ovom slučaju od 3000 do 4000.

Umetni pravilo:

iptables -I PROSLJEDI 15 -p udp -d 8.8.8.8 -dport 53 -i eth1 -j PRIHVATI

Port forwarding

Postoje dva načina za konfiguraciju.

1. Pravila PREPROUTIRANJE + POSTROUTIRANJE:

iptables -t nat -A PREUSMIRANJE -p tcp -m tcp -d 19.8.232.80 —dport 22 -j DNAT —do odredišta 192.168.1.15:2222

iptables -t nat -A POSTROUTING -p tcp -m tcp -s 192.168.1.15 —sport 2222 -j SNAT —za izvor 19.8.232.80:22

* gdje 19.8.232.80 - adresu na kojoj slušamo zahtjeve za povezivanje; 22 - port za prosleđivanje; 192.168.1.15 2222 - interni port.

2. Pravila PREUSMIRANJA + PROSLJEĐIVANJA:

iptables -t nat -A PREUSMIRANJE -p tcp -i eth1 —dport 22 -j DNAT —do odredišta 192.168.1.15:2222

iptables -A NAPRED -p tcp -d 192.168.1.15 —dport 22 -m stanje —stanje NOVO, UTVRĐENO, POVEZANO -j PRIHVATI

* gdje eth1- mrežni interfejs na kojem slušamo zahtjeve; 22 - port za prosleđivanje; 192.168.1.15 - internu IP adresu na koju prenosimo sve zahtjeve; 2222 - interni port.

Pokretanje podešavanja

Dozvoli SSH:

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

Postavili smo politiku zabrane dolaznih i dopuštamo sve odlazne:

iptables -P IZLAZ PRIHVAT

Kreirajte pravilo da apt-get radi ispravno:

iptables -A INPUT -p tcp —sport 80 -m stanje —stanje ESTABLISHED -j PRIHVATI

Dozvoli ICMP (za ping komandu):

iptables -A INPUT -p icmp -j PRIHVATI

Pravila čuvanja (trajna)

Podrazumevano, sva pravila prestaju da rade nakon ponovnog pokretanja mreže ili računara. Postoji nekoliko načina za konfiguriranje pravila kako bi se pravila sačuvala nakon ponovnog pokretanja.

Metoda 1.iptables-save

Pravila spremamo u fajl:

iptables-save> /etc/iptables.rules

Otvorite mrežne postavke:

vi / etc / mreža / sučelja

i dodajte red:

pre-up iptables-restore< /etc/iptables.rules

Metoda 2.iptables-persistent

Instalirajte iptables-persistent paket:

apt install iptables-persistent

Da sačuvate pravila, unesite naredbu:

service iptables-persistent save

Metoda 3.service iptables

Radi na starijim verzijama Linuxa:

Metoda 4.iptables.init

Radi na CentOS-u:

/usr/libexec/iptables/iptables.init sačuvati

Ubuntu i CentOS

Na modernim Ubuntu i CentOS operativnim sistemima podrazumevano ne postoji iptables.

Morate ga instalirati ili koristiti novije uslužne programe.

Na CentOS-u

Firewall-cmd se koristi kao standardni program za upravljanje zaštitnim zidom. Za više detalja, pročitajte upute Kako konfigurirati firewalld u CentOS-u.

Ako trebate koristiti iptables, instalirajte uslužni paket:

yum install iptables-services

Onemogući firewalld:

systemctl stop firewalld

systemctl onemogući firewalld

Omogućavamo i pokrećemo iptables:

systemctl omogući iptables

U Ubuntu

Ufw se sada koristi za upravljanje firewall-om.

Za rad sa iptablesom, instalirajte sljedeći paket:

apt-get install iptables-persistent

Onemogući ufw:

# Umrežavanje # Sigurnost # UNIX # Ubuntu # Linux

Da li vam je ovaj vodič bio od pomoći?

IZA POŽARNOG ZIDA:
FIREWALL (FIREWALL) I INTERNET GATEWAY
DEBIAN GNU / LINUX 4.0 ETCH

Praktični vodič za organiziranje sigurnog pristupa Internetu
sa zasebnog računala i iz lokalne mreže u Debian GNU / Linux 4.0 Etch
Malo teorije

Svaka konekcija na Internet ne samo da omogućava povezivanje na različite servere i sajtove, već stvara i potencijalnu opasnost od prodora u naš računar izvana. Ovu opasnost ne treba zanemariti, jer je većina pokušaja neovlaštenog pristupa računarima korisnika sa interneta danas dio dobro organiziranog kriminalnog poslovanja. Nakon uspješnog kompromitiranja vašeg sistema, oni će pokušati da iskoriste vaš računar ili za slanje neželjene pošte, ili za organiziranje DoS napada na druge računare, ili za bilo koje druge podle svrhe. Zanemarivanje ove opasnosti u najboljem slučaju će povećati vaše troškove saobraćaja i usporiti performanse vašeg računara; u najgorem slučaju, može vas nesvjesno uključiti u kriminalne aktivnosti sajber grupa.

Situaciju otežava činjenica da su u nekim (još uvijek) raširenim operativnim sistemima mnogi portovi po defaultu ostavljeni otvoreni, što omogućava napadaču da se poveže s interneta na korisnika a da ovaj nije svjestan.

Da biste spriječili neovlašteno povezivanje izvana i filtrirali dolazni/odlazni promet u operativnom sistemu, treba koristiti poseban program - firewall(engleski firewall), poznat i kao firewall i firewall... Ispod je jednostavan primjer postavljanja zaštitnog zida u besplatnom operativnom sistemu. Debian GNU / Linux 4.0.

Upotreba zaštitnog zida postaje posebno relevantna ako imate više od jednog računara, ali kućnu ili kancelarijsku mrežučiji računari idu na mrežu.

Čak i mala lokalna mreža mora biti pravilno organizirana. Recimo da imate pristupnu tačku velike brzine Internetu (na primjer, ADSL modem) sa Ethernet (tj. mrežnim) sučeljem.

Postoji iskušenje (podgrijano nepismenim preporukama, kao, na primjer, u uputama za moj ADSL modem) da spojite modem direktno na switch, a zatim spojite na switch sve računara lokalne mreže. U ovom slučaju, modem dinamički izdaje lokalne IP adrese preko prekidača, ali ispada da je svaki računar ostavljen sam s internetom! Ni modem ni komutator ne mogu postati prepreka loše volje. Napadač može skenirati sve računara lokalne mreže organizovane na ovaj način.

Logično i sigurno rješenje je stvaranje barijera između modema i lokalne mreže - u obliku zasebnog računara na kojem je konfigurisan "firewall" (firewall). Ovaj računar ima dva interfejsa - jedan "gleda" na Internet (tj. fizički je povezan sa modemom), drugi je usmeren na lokalnu mrežu (i fizički je povezan sa prekidačem na koji su i ostali računari povezan). Pošto je naš računar sa zaštitnim zidom sada čvorna tačka za druge računare za pristup Internetu, on se takođe naziva gateway(engleski pristupnik).

S takvom organizacijom lokalne mreže vjerovatnoća hakovanja je značajno smanjena - napadač "vidi" samo gateway sa Interneta, a na gatewayu je instaliran firewall i nije ga lako hakirati.

Postavljanje iptablesa na Linux za lutke

Računari lokalne mreže mogu surfati Internetom i ostati relativno sigurni.

Konfiguriranje firewall-a korištenjem arno-iptables-firewall konfiguratora

Za organizaciju firewall-a GNU / Linux program se koristi iptables, koji se po pravilu odmah instalira prilikom instaliranja većine distribucija. V Debian GNU / Linux ovo možete provjeriti pokretanjem s administratorskim pravima sposobnost... Ako je potrebno, instalirajte iptables.

Međutim, ručna konfiguracija iptables je netrivijalan zadatak i mogu ga obavljati samo stručnjaci iz oblasti sistemske administracije. Stoga je za konfiguriranje pravila po kojima će firewall raditi, bolje koristiti specijalni konfigurator... V Debian GNU / Linux Ovaj program arno-iptables-firewall... Kada se pokrene, postavlja niz pitanja, na osnovu kojih generiše pravila za funkcionisanje firewall-a. iptables.

U konzolu upisujemo sa pravima superkorisnika:

#aptitude instaliraj arno-iptables-firewall

Na početku instalacije, program će pitati da li zaista želimo da konfigurišemo firewall sa njim. iptables:

Prvo, potrebno je navesti eksterno sučelje – „gledanje“ na Internet, tj. spojen na modem. Postavke interfejsa su definisane u konfiguracionoj datoteci / etc / mreža / sučelja... Na primjer, to može izgledati ovako:

# Ovo je lo interfejs - pokazuje na samu našu mašinu. auto lo iface lo inet loopback adresa 127.0.0.1 netmask 255.0.0.0 # Ovo je eth0 interfejs, koji je povezan na Internet (ADSL modem) # Njegova posebnost je u tome što mu IP adresu dodeljuje ISP dinamički, # tako da dhcp auto eth0 opcija je postavljena iface eth0 inet dhcp # Ovo je sučelje koje je okrenuto prema lokalnoj mreži # Adresa lokalne mreže će biti 192.168.2.0/24 # Iz sigurnosnih razloga u lokalnoj mreži, gateway ima statičku IP adresu - 192.168.2.1, # stoga je postavljena statička opcija # Mrežna maska ​​- 255.255.255.0 # Adresa mrežnog emitiranja u ovom slučaju će biti 192.168.2.255 auto eth1 iface eth1 inet statična adresa 192.168.2.1 net 192.168.2.1 net.525.52.52.

Dakle, gledajući postavke / etc / mreža / sučelja, ukazujemo konfiguratoru zaštitnog zida da je naš vanjski interfejs eth0:

Na pitanje da li nam provajder daje IP adresu dinamički(koristeći DHCP), odgovaramo potvrdno:

Sljedeće pitanje je koje usluge će se pružati sa našeg računara vanjskim korisnicima interneta. Nemamo ga! Ne bavimo se profesionalnim web hostingom i ne namjeravamo distribuirati informacije van. Ostavljamo red prazan.

Zatim dolazi pitanje da li ćemo pružati bilo kakve usluge preko UDP-a. Također ne - i također ostavite prazan red!

Da li nas treba pingovati iz vanjskog svijeta (tj. provjeriti postoji li veza sa računarom na kojem je instaliran firewall)? U našem slučaju, ovo je sasvim prihvatljivo:

Ovim se završava konfiguracija za pojedinačni računar koji nije LAN gateway. Ako namjeravamo koristiti računar kao gateway, moramo odgovoriti na još nekoliko pitanja. Označavamo sučelje s kojim je gateway okrenut prema lokalnoj mreži - u našem slučaju jeste eth1 kao što je vidljivo iz / etc / mreža / sučelja(u suprotnom, za "usamljeni" računar ostavite ovo polje praznim):

Na pitanje da li dozvoliti NAT prevod, tj. preusmjeravanje prometa s Interneta preko gatewaya na lokalnu mrežu i obrnuto, odgovaramo s "da" - ovo je jedan od naših glavnih zadataka u ovom slučaju:

Tada se postavlja pitanje: koji segment lokalne mreže može biti primljen putem prosljeđivanja na eksterne mreže? Svi računari lokalne mreže imaju pravo pristupa Internetu; ponovo postavite vrijednost 192.168.2.0/24

Konačno, potvrđujemo našu želju za lansiranjem iptables bez dodatne provjere s naše strane automatski generiranih pravila zaštitnog zida od strane konfiguratora:

Nakon toga, ako je sve prošlo kako treba, prikazuje se poruka slična onoj ispod. Sada će se pojaviti pri svakom pokretanju gateway računara i obavještavati o uspješnom pokretanju zaštitnog zida:

Arno je Iptables Firewall Script v1.8.8c -------------------------- Sanity provjere prošlo ... OK Otkriven iptables modul ...

Učitavanje dodatnih IPTABLES modula: Svi IPTABLES moduli su učitani! Konfiguriranje /proc /…. postavke: Omogućavanje anti-spoof-a sa rp_filter Omogućavanje SYN-flood zaštite preko SYN-kolačića Onemogućavanje evidentiranja marsovaca Onemogućavanje prihvatanja ICMP-redirect poruka Postavljanje maks. količina istovremenih konekcija do 16384 Omogućavanje zaštite od izvornih rutiranih paketa Podešavanje zadanih vremenskih ograničenja conntrack Omogućavanje smanjenja mogućnosti DoS-a. Podešavanje Default TTL = 64 Onemogućavanje ECN-a (Explicit Congestion Notification) Omogućavanje podrške za dinamičku IP adresu. .. Pravila za ispiranje u tabeli filtera Postavljanje zadanih (sigurnih) politika Upotreba "info" na nivou dnevnika za syslogd Postavljanje pravila zaštitnog zida: ——————————————————————— —— - Prihvatanje paketa sa lokalnog loopback uređaja Omogućavanje postavljanja maksimalne veličine paketa putem MSS-a Omogućavanje mangling TOS-a Omogućeno evidentiranje skrivenih skeniranja (nmap sonde itd.) Omogućeno Evidentiranje paketa sa lošim TCP-zastavicama. omogućeno Evidentiranje pristupa sa rezervisanih adresa omogućeno Postavljanje pravila protiv lažiranja Čitanje prilagođenih IPTABLES pravila iz / etc / arno-iptables-firewall / custom-rules Učitavanje (korisničkih) dodataka Podešavanje politike INPUT za eksternu mrežu (INET): Ena bling podrška za DHCP dodijeljen IP na vanjskim sučeljima: eth0 Omogućeno evidentiranje eksplicitno blokiranih hostova Omogućeno evidentiranje odbijenih lokalnih izlaznih veza. odbačenih ICMP-zahtjeva (ping) paketa omogućeno. Omogućeno evidentiranje ispuštenih drugih ICMP paketa. Omogućeno evidentiranje mogućih skrivenih skeniranja. Omogućeno evidentiranje (drugih) pokušaja povezivanja na PRIVILEGIRANI TCP portovi. ostalo) pokušaji povezivanja sa NEPRIVILEGIRANIM TCP portovima omogućeno. Omogućeno evidentiranje (drugih) pokušaja povezivanja na NEPRIVILEGIRANI UDP portovi. Omogućeno evidentiranje drugih IP protokola (ne TCP / UDP / ICMP) pokušaja povezivanja Omogućeno evidentiranje ICMP poplava Primjena INET politike na eksterni (INET) interfejs: eth0 (bez specificirane eksterne podmreže) Postavljanje politike INPUT za interni (LAN) interfejs(e): eth1 Omogućavanje ICMP-zahtjeva (ping) A omogućavanje svih (ostalih) protokola Postavljanje politike FORWARD za interni (LAN) interfejs(e): eth1 Evidentiranje odbijenih LAN-> INET FORWARD veza omogućeno Postavljanje LAN-> INET politike: Dozvoljavanje ICMP-zahtjeva (ping) Dozvoljavanje svih (ostalo) ) protokoli Omogućavanje maskiranja (NAT) preko eksternog interfejsa: eth0 Dodavanje (internog) hosta: 192. 168.2.0 / 24 Sigurnost je SIGURAN za eksterni interfejs(e) u lancu FORWARD 16. januar 23:53:12 Primijenjena su sva pravila zaštitnog zida.

Napomena 1. U većini slučajeva, uspješno pokretanje firewall-a događa se nakon prve komunikacije s konfiguratorom. Ako nešto ne radi, toplo se preporučuje da ponovite konfiguraciju ponovnim pokretanjem konfiguratora s pravima superkorisnika:

# dpkg-reconfigure arno-iptables-firewall

Ovo će eliminisati povremenu grešku koja bi mogla nastati pri odgovaranju na pitanja konfiguratora tokom prvog iskustva sa njim. Ako ni ovo ne pomogne, možete pokušati ručno ispraviti konfiguracijsku datoteku programa. arno-iptables-firewall, odnosno: /etc/arno-iptables-firewall/firewall.conf... Možda bi bilo od pomoći da posjetite početnu stranicu kreatora ovog programa na http://rocky.eld.leidenuniv.nl/. Sadrži vrlo informativan priručnik za rad sa programom, zanimljiva FAQ i, osim toga, informacije o novim verzijama programa.

Napomena 2. Ne zaboravite to niko zaštitni zid ne može dati 100% garanciju sigurnosti računara na Internetu. Međutim, ne možete zanemariti zaštitu vatrozida. Moramo učiniti sve što je u našoj moći da se tada oslonimo na milost Božju. "Ako Gospod ne sačuva grad, uzalud je stražar"(Ps. 126:1).

Izvor članka

Davno sam napisao post na blogu o osnovnim Iptables pravilima za radnog korisnika i vjerovatno biste ga trebali pročitati i srodni članak o Stateful firewall-u.

Ali pre kernela 2.6.39 (koji uključuje i možete ga koristiti za stavljanje na belu listu ako imate više od 10 za belu listu (gde je 10 proizvoljno)).

Postavljanje iptablesa za lutke

Prvo stanje ručke za koje znamo da želimo prihvatiti ili ukloniti, i sučelja.

Ako samo želite dozvoliti samo IP, bez državljanstva

veća je vjerovatnoća da ćete naići na probleme s ovim i predlažem da koristite državu da biste olakšali svoj život. Na primjer, ne rješava i sigurno će uzrokovati probleme za određene aplikacije.

Glavni zadatak firewall(firewall) filtriranje i obrada paketa koji prolaze kroz mrežu. Kada analizira ulazni paket, zaštitni zid odlučuje o sudbini ovog paketa: baci paket ( DROP), prihvatite paket ( ACCEPT) ili uradite nešto drugo s njim.

V Linux firewall je modul kernela koji se zove netfilter i predstavlja skup kukica za rad sa mrežnim stekom. Interfejs za modifikaciju pravila po kojima firewall obrađuje pakete je pomoćni program iptables za IPv4 i uslužni program ip6tables za IPv6.

Sav posao filtriranja saobraćaja obavlja jezgro sistema. Iptables nije demon i ne kreira nove procese na sistemu. Uključite ili isključite iptables to samo šalje signal kernelu. Visoka brzina filtriranja postiže se analizom samo zaglavlja paketa.

Na glavne karakteristike iptables vezati:

  • filtriranje saobraćaja na osnovu adresa pošiljaoca i primaoca paketa, brojeva portova;
  • preusmjeravanje paketa prema određenim parametrima;
  • organizacija pristupa mreži (SNAT);
  • prosljeđivanje portova iz globalne mreže u lokalnu mrežu (DNAT);
  • ograničavanje broja priključaka;
  • postavljanje prometnih kvota;
  • izvršavanje pravila prema rasporedu;

Razmotrimo glavni proces rada iptables(izvor slike rigacci.org).

Dolazni paket prvo stiže do mrežnog uređaja, nakon čega ga drajver presreće i prenosi kernelu. Nakon toga, paket se propušta kroz veći broj tabela i tek tada se prenosi lokalnoj aplikaciji ili preusmjerava na drugi sistem, ako se radi o tranzitnom paketu.

V iptables koriste se tri vrste tablica:

  1. mangle- koristi se za izmjene zaglavlja paketa;
  2. nat- koristi se za prevođenje mrežnih adresa;
  3. filter- za filtriranje saobraćaja;

Mangle table

Glavna svrha stola mangle- unošenje promjena u zaglavlje paketa. U ovoj tabeli se mogu izvršiti sljedeće radnje:

  • postavljanje bita Type of Service;
  • postavljanje polja Time To Live;
  • postavljanje etikete na paket koji se može provjeriti u drugim pravilima;

Lanci u stolu mangle:

  • PRERAUTIRANJE- koristi se za izmjene paketa na ulazu u iptables, prije odluke o rutiranju;
  • POSTROUTING- koristi se za izmjenu paketa na izlazu iz iptablesa, nakon odluke o rutiranju;
  • INPUT- koristi se za izmjene paketa prije nego što se prebace u lokalnu aplikaciju;
  • IZLAZ- koristi se za modifikaciju paketa koji dolaze iz aplikacije unutar iptablesa;
  • NAPRIJED- koristi se za izmjene tranzitnih paketa;

Nat table

Tabela se koristi za translaciju mrežnih adresa i kada se naiđe na paket za uspostavljanje nove veze. U ovoj tabeli se mogu izvršiti sljedeće radnje:

  • DNAT (prevod mrežne adrese odredišta)- konverzija odredišne ​​adrese u zaglavlju paketa;
  • SNAT (prevod izvorne mrežne adrese)- promjena izvorne adrese paketa;
  • MASQUERADE- koristi se u iste svrhe kao SNAT ali vam omogućava rad sa dinamičkim IP adresama;

Lanci u ovoj tabeli:

  • PRERAUTIRANJE- koristi se za izmjene paketa na ulazu u iptables;
  • IZLAZ- koristi se za prevođenje adresa u paketima prije daljeg rutiranja;
  • POSTROUTING- koristi se za pretvaranje paketa prije slanja u mrežu;

Tabela filtera

Tabela se koristi za filtriranje paketa. U ovoj tabeli postoje tri lanca:

  1. INPUT- lanac za dolazne pakete;
  2. NAPRIJED- lanac za prosleđene (tranzitne) pakete;
  3. IZLAZ- lanac za odlazne pakete;

Paket koji prolazi kroz ove lance može biti podložan radnjama: ACCEPT, DROP, REJECT, LOG.

Da rezimiramo, paket koji stiže prolazi kroz lanac pravila. Svako pravilo sadrži stanje i svrha(akcija). Ako paket zadovoljava uslov, onda se šalje do cilja, u suprotnom se na paket primjenjuje sljedeće pravilo u lancu. Ako paket ne zadovoljava nijedan od uslova u lancu, tada se na njega primjenjuje zadana akcija.

Lanac sto
filter nat mangle
INPUT + +
NAPRIJED + +
IZLAZ + + +
PRERAUTIRANJE + +
POSTROUTING + +

Iptables uslužni program

Instaliranje iptablesa

# za Arch Linux yaourt -S iptables # Za Ubuntu sudo apt-get install iptables

Pokretanje iptablesa

# pod Arch Linuxom sudo systemctl omogući iptables sudo systemctl start iptables # Pod Ubuntu sudo servisom iptables start

Pravila čuvanja

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

Vraćanje pravila iz datoteke

Iptables-restore< firewall-config

Svako pravilo unutra iptables je posebna linija formirana prema određenim pravilima i koja sadrži kriterije i radnje. Općenito, pravilo ima sljedeći format:

Iptables [-t tablica] naredba

  • t table - specificira ime tabele za koju će se kreirati pravilo;
  • naredba - naredba koja definira akciju iptables- dodati pravilo, izbrisati pravilo itd.;
  • podudaranje - postavlja kriterijume testiranja po kojima se utvrđuje da li paket podleže pravilu ili ne;
  • cilj/skok - koja radnja treba biti izvedena kada je kriterij ispunjen;

Iptables komande:

  • -A - dodajte pravilo u lanac, pravilo će biti dodato na kraj lanca;
  • -D - ukloniti pravilo iz lanca;
  • -R - zamijeniti jedno pravilo drugim;
  • -I - ubaciti novo pravilo u lanac;
  • -L - prikazuje listu pravila u navedenom lancu;
  • -F - briše sva pravila u navedenom lancu;
  • -Z - resetujte sve brojače u navedenom lancu;
  • -N - kreirati novi lanac sa navedenim imenom;
  • -X - brisanje lanca;
  • -P - postavlja zadanu politiku za lanac;
  • -E - preimenovati korisnički lanac;

Primjeri Iptables komandi

Paketi se mogu filtrirati prema sljedećim parametrima:

Izvor paketa

Opcija -s se koristi za filtriranje prema izvoru. Na primjer, zabranit ćemo sve dolazne pakete sa hosta 192.168.1.95:

Iptables -A INPUT -s 192.168.1.95 -j DROP

Možete koristiti ime domene da odredite adresu hosta:

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

Također možete odrediti cjelinu za mrežu:

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

Možete koristiti i negaciju (znak!). Na primjer, svi paketi sa hosta koji nisu 192.168.1.96 bit će izbrisani:

Iptables - ULAZ! -s 192.168.1.96 -j DROP

Dozvolite prometu da teče na lokalnom hostu:

Iptables -A INPUT 1 -i lo -j PRIHVATI

Zapisivanje pokušaja lažiranja s prefiksom "IP_SPOOF A:" i prekid veze

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

Adresa odredišta

Da biste to učinili, trebate koristiti opciju -d. Na primjer, zabranit ćemo sve odlazne pakete hostu 192.168.1.95:

Iptables -A OUTPUT -d 192.168.156.156 -j DROP

Zabrani pristup resursu

Iptables -A IZLAZ -d vk.com -j ODBACI

Kao iu slučaju sa izvorom paketa, možete koristiti adrese za mreže i imena domena. Poricanje također djeluje.

Protokol

Opcija -p označava protokol. Može biti korišteno sve, icmp, tcp, udp ili broj protokola (od / etc / protokoli).

Dozvolite dolazne eho zahtjeve

Iptables -A INPUT -p icmp --icmp-tip echo-request -j PRIHVATI

Izvorni port

Dozvoli sve odlazne pakete sa porta 80:

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

Blokirajte sve dolazne zahtjeve na portu 80:

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

Da biste naveli port, morate navesti protokol (tcp ili udp). Može se koristiti negacija.

Otvoreni opseg portova

Iptables -A INPUT -m stanje --stanje NOVO -m tcp -p tcp --dport 7000: 7010 -j PRIHVATI

Odredišna luka

Dozvolite HTTP veze

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

Omogućavanje primanja podataka sa DHCP servera

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

  • Daljinski iskorištavanje softverskih grešaka kako bi se učinio neoperativnim;
  • Poplava- slanje ogromnog broja besmislenih paketa na adresu žrtve. Cilj poplave može biti komunikacijski kanal ili resursi stroja. U prvom slučaju, tok paketa zauzima cijelu propusnost i ne daje napadnutoj mašini mogućnost da obrađuje legitimne zahtjeve. U drugom, resursi mašine su zarobljeni korišćenjem višestrukih i vrlo čestih poziva bilo kojoj usluzi koja izvodi složenu operaciju koja zahteva mnogo resursa. To može biti, na primjer, dug poziv jednoj od aktivnih komponenti (skripte) web servera. Server troši sve resurse mašine na obradu zahteva napadača, a korisnici moraju da čekaju. Poplava može biti različita: ICMP poplava, SYN poplava, UDP poplava i HTTP poplava

Prikupljanje informacija o mrežnim vezama

Pogledajte otvorene veze

Netstat -ntu | awk "(print $5)" | rez -d: -f1 | sortiraj | uniq -c | sortirati -n

Broj konekcija na port 80

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

Dump TCP veze (na koju domenu zahtjevi najčešće idu)

Tcpdump -npi eth0 port domena

SYN poplave se mogu provjeriti prebrojavanjem broja poluotvorenih TCP veza

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

Zaštita od različitih vrsta poplava.

ICMP poplava. Vrlo primitivna metoda začepljenja propusnog opsega i stvaranja opterećenja na mrežnom stogu kroz monotono slanje ICMP ECHO zahtjeva (ping). Lako se detektuje analizom saobraćajnog toka u oba smjera: tokom ICMP napada poplave, oni su gotovo identični. Gotovo bezbolan način apsolutne zaštite zasniva se na onemogućavanju odgovora na ICMP ECHO zahtjeve:

Sysctl net.ipv4.icmp_echo_ignore_all = 1

Ili koristeći iptabels:

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

SYN flood. Jedan od uobičajenih načina ne samo da se začepi komunikacijski kanal, već i da se mrežni stog operativnog sistema dovede u stanje u kojem više ne može prihvatiti nove zahtjeve za povezivanje. Zasnovano na pokušaju inicijalizacije velikog broja istovremenih TCP veza slanjem SYN paketa s nepostojećom povratnom adresom. Nakon nekoliko pokušaja slanja paketa ACK odgovora na nedostupnu adresu, većina operativnih sistema će staviti neusklađenu vezu u red čekanja. I tek nakon n-tog pokušaja veza se zatvara. Pošto je protok ACK paketa veoma velik, ubrzo je red pun i kernel odbija da pokuša da otvori novu vezu. Najpametniji DoS botovi također analiziraju sistem prije početka napada kako bi poslali zahtjeve samo na otvorene vitalne portove. Lako je prepoznati takav napad: samo pokušajte da se povežete na jednu od usluga.

Uvod i istorijat

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

Projekti ipchains i ipfwadm promijenio način rada stog protokola Linux kernela, od ranije netfilter nije bilo načina da se u arhitekturi kernela uključe 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. V 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 modernim netfilterima - više od četiri), razgraničavajući lance pravila po zadatku: filtriranje, NAT i modifikacija paketa... Iptables je također proširio stanje u Linuxu dozvoljavajući stvaranje zaštitnih zidova na razini sesije.

Netfilter / iptables arhitektura

Preduvjeti ()

Kao što je gore pomenuto, Netfilter zahteva 2.6 kernel (ili najmanje 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 tabela), CONFIG_BRIDGE_NETFILTER, kao i brojni dodatni moduli: CONFIG_IP_NF_FILTER konekcija, CONFIG_IP_NF_FILTER obrazac povezivanja: CONFIG_IP_NIFTABLES_paket modula za povezivanje: , MARK, MULTIPORT, TOS, TCPMSS, STATE, UNCLEAN, OWNER), CONFIG_IP_NF_TARGET_ * (dodatne radnje u pravilima: REJECT, MASQUERADE, REDIRECT, LOG, TCPMSS), CONFIG_IPAT_NFIGEBCON_COMPGEBTGN_ i *drugi načini rada su CONFIG_IPAT_NFIGEBCON_COMPGGETGN_FIG_NFIGEBCON_COMPGGEBRID_ i drugi lanci za druge 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 tabeli rutiranja.

Motor za detekciju stanja (conntrack)

Iznad u tekstu je više puta spomenut pojam "određivanja stanja", 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 ection track ing, on je 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 na sirovom stolu... Na osnovu ovog stanja, paket pripada novo veza (stanje NOVO), već uspostavljena veza (stanje ESTABLISHED), dodatno na postojeći ( RELATED), ili na " drugome"(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 sloja sesije (peti). Uslužni program se koristi za kontrolu ovog mehanizma. conntrack, kao i parametar uslužnog programa iptables: -m conntrack ili -m stanje(zastarjelo). Conntrack pohranjuje stanje trenutnih veza u kernelu. Mogu se pogledati u / 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 pravila tabela, tabela i lanaca. 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 komanda zahtijeva root prava za svoj rad.

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 radnja definiranja ( 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 ( Na primjer: prenijeti paket na drugi lanac pravila, "odbaciti" paket, izdati poruku o grešci izvoru...).

Ispod su naredbe i parametri za iptables uslužni program:

Parametar Opis Primjer
Komande
--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) specificirana brojem(ovima) ili pravilom(ima). Prvi primjer uklanja sva pravila s brojevima 10,12 u svim lancima u tablicama filtera, drugi primjer uklanja dato pravilo iz tablice mangle 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 trenutne tabele. 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) Pregled postojećih 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 pravilo navedeno brojem 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 prenesenih podataka u lancu. iptables -Z INPUT
Parametri
--numerički (-n) Ne rješava adrese i protokole prilikom izlaza.
--line-brojevi Navedite brojeve pravila u izlazu (može se koristiti zajedno sa -L). iptables -L --brojevi-linija
--pomoć (-h) gde bez nje
-t stol Određuje ime tablice na kojoj će se izvršiti radnja. Primjer izbacuje nat tablicu u svim lancima. iptables -t nat -F
--verbose (-v) Detaljan zaključak. iptables -L -v

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

Kriteriji odabira 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 neuobičajeno), oni kriteriji koji se učitavaju implicitno i postaju dostupni, na primjer, kada se specificira opći kriterij --protokol tcp | udp | icmp... Prije upotrebe potrebno je da se povežete dodatno proširenje(ovo su neobične 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 naznačiti 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čitati, a implicitni automatski.

Mogu se koristiti svi kriterijumi sign! prije vrijednosti kriterija. To će značiti da se ovo pravilo primjenjuje na sve pakete koji ne odgovaraju ovom parametru. na primjer: kriterij --protokol! tcpće označavati da svi paketi koji ne da li TCP protokol odgovara pravilu. Međutim, najnovije verzije iptablesa (posebno 1.4.3.2 i novije) više ne podržavaju ovu sintaksu i ne zahtijevaju korištenje --protokol! tcp, a ! --protokol tcp daje 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šteni parametri odabira paketa:

Parametar Opis Primjer
Uobičajeni parametri
--protokol
(skraćenica -p)
Definira protokol. Opcije tcp, udp, icmp, svi ili bilo koji drugi protokol definiran u / etc / protokolima 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
  • Adrese skupova (podmreža): 10.10.10.3/24 ili 10.10.10.3/255.255.255.0

Strogo se ne preporučuje korištenje imena domena za koje je potrebno da se DNS upiti razriješe (razriješe), jer u fazi konfiguriranja netfilter DNS možda neće raditi ispravno. 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 pravila koja su već zapisana (stara adresa će ostati u njima). Ako navedete ime domene koje se razlaže u 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 nekoliko načina (pogledajte --source). iptables -A INPUT --odredište 192.168.1.0/24
--in-interface
(-i)
Definira 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 pretpostavljaju svi interfejsi koji počinju imenom + (npr. eth + - svi eth interfejsi). iptables -t nat -A PREUSMIRANJE --u sučelju eth0
--out-interface
(-o)
Definira interfejs iz kojeg će paket otići. Korisno za NAT i mašine sa više mrežnih interfejsa. Koristi se u LANCIMA OUTPUT, FORWARD i POSTROUTING. Moguće je koristiti znak "+". iptables -t nat -A POSTROUTING --in-interface eth1
Implicitni (negenerički) parametri
-p proto -h prikazuje pomoć o implicitnim parametrima protokola protokola. iptables -p icmp -h
--izvorni port
(--sport)
Izvorni port, moguć samo za --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

Status 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 povezani s njom. Na primjer - FTP u aktivnom načinu rada koristi različite veze za prijenos podataka. Ove veze su povezane.)
  • INVALID(Paketi koji se ne mogu identificirati iz ovog ili onog razloga. Na primjer, ICMP greške koje ne pripadaju postojećim vezama)
  • itd. (detaljnije u dokumentaciji)
iptables -A ULAZ -m stanje --stanje NOVO, USPOSTAVLJENO iptables -A ULAZ -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-izvor 00: 00: 00: 00: 00: 0

Akcije na pakete

Ovaj naslov bi bio ispravnije preformulisan u " Radnje na paketima koji odgovaraju kriterijima odabira Dakle, počiniti bilo koju radnje na paketima, morate postaviti ključ -j (--skok) i naznačiti koju konkretnu radnju treba izvršiti.

Akcije na paketima mogu imati sljedeće vrijednosti:

  • ACCEPT- paket napušta ovaj lanac i prenosi se na sljedeći (doslovno - PRIHVATI).
  • DROP- odbaciti paket koji ispunjava uslov, dok se paket ne prenosi u druge tabele/lankove.
  • REJECT- odbacite paket slanjem ICMP poruke pošiljaocu, dok se paket ne prenosi u druge tabele/lankove.
  • 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 stolovima.
  • DNAT- primijeniti adresu emitiranja 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 ostalim pravilima.
  • MASQUERADE- koristi se umjesto SNAT ako postoji dinamička IP veza (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 parametre.

Tabela ispod prikazuje primjere i opise dodatnih parametara:

Parametar Opis Primjer
DNAT (prevod mrežne adrese odredišta)
--do odredišta specificira koja IP adresa treba zamijeniti odredišnu adresu. 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 (). Primjer postavlja maksimalnu razinu evidentiranja za sve tcp pakete u tablici filtera lanca FORWARD. iptables -A NAPRIJED -p tcp -j LOG --debug na nivou dnevnika
--log-prefiks Postavlja tekst (prefiks) koji će se koristiti prije svih poruka iptables... (vrlo zgodno za ono što slijedi) Prefiks može sadržavati 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 ulazak u 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 asimilaciju ove teorije.

Sažetak

U ovom članku smo ukratko pokrili 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. Istovremeno, 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 "nelokalnom". Svaki lanac se sastoji od skupa tabela koje sadrže niz pravila. Svako pravilo se sastoji od određenog kriterija/kriterijuma za odabir mrežnog paketa i neke akcije s paketom koji odgovara ovim kriterijima. U skladu sa navedenim pravilima, bilo koja radnja se može izvršiti na paketu (na primjer, prenijeti na sljedeći / drugi lanac, odbaciti paket, izmijeniti sadržaj ili zaglavlja, itd.). Svaki lanac i svaka tabela imaju svoju svrhu, funkcionalnost i mjesto u putanji 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 se završava ili na odlaznom mrežnom sučelju ili se isporučuje lokalnom procesu/aplikaciji.

Književnost

Ovdje se nalazi dosta zanimljivih informacija na ruskom:

  • http://www.opennet.ru/docs/RUS/iptables/
  • http://ru.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

Pozdrav, Mc.Sim!

Linux ima ugrađeni zaštitni zid koji se zove Netfilter. Prema službenoj web stranici projekta:

netfilter je zbirka sistemskih poruka unutar Linux kernela koja omogućava modulima kernela da registruju funkcije povratnog poziva iz mrežnog steka. Registrovana funkcija povratnog poziva obrađuje svaki paket koji prolazi kroz mrežni stog.

Firewall u Linuxu kontrolira iptables, koji ima funkciju filtriranja IPv4, ip6tables filtrira IPv6. Ovaj vodič objašnjava kako naučiti kako koristiti Netfilter (iptables) na CentOS / RHEL / Fedora / Redhat Enterprise Linux. Ovaj članak pruža osnovne primjere konfiguracije iptables u Linuxu za zaštitu od upada.

Primjeri korištenja iptables

  • Većina akcija navedenih u ovom članku napisana je uz pretpostavku da će se izvršiti kao root iz bash-a ili bilo koje druge moderne ljuske. Nemojte unositi komande na udaljenom sistemu, jer sami možete onemogućiti pristup.
  • Za demo svrhe koristio sam ubuntu 10.04, ali komande bi trebale raditi sa bilo kojom modernom distribucijom.
Prikaz statusa vašeg zaštitnog zida
Unesite sljedeću naredbu kao root:
# iptables -L -n -v
Primjer odgovora:
Lanac INPUT (policy ACCEPT 0 paketa, 0 bajtova) pkts bajtova ciljni prot opt ​​in out izvorno odredište Chain FORWARD (policy ACCEPT 0 paketa, 0 bajtova) pkts bajtova cilj prot opt ​​in out izvorno odredište Chain OUTPUT (policy ACCEPT 0 paketi, 0 bajtova ) pkts bajtova ciljni prot opt ​​in out izvorno odredište
Ovaj odgovor znači da zaštitni zid nije aktivan.
I, na primjer, ovo će pokazati da je firewall u Linuxu aktivan:

Lančani INPUT (politika PRIHVATI 1810K paketa, 126M bajtova) pkts bajtova ciljna zaštita isključiti izvor odredište 7418K 1070M PRIHVATI udp - * * 0.0.0.0/0 0.0.0.0/0 udp dpt: 819 th 0 p. 0.0.0.0/0 0.0.0.0/0 tcp dpt: 2222 zastavice: 0x17 / 0x02 stanje NOVI lanac PROSLJEĐIVANJE (politika PRIHVATI 5628K paketa, 482M bajtova) pkts bajtova ciljna zaštita uključivanje 0x17 / 0x02 stanje 0x17 / 0x02 stanje 0.0. 0.0 .0.0 / 0 0.0.0.0/0 tcp dpt: 1111 stanje NOVO, POVEZANO, UTVRĐENO 599K 539M PRIHVATI udp - eth0 * 0.0.0.0/0 10.1.1.6 udp1.1.1.1.1.1.1.1 udp . 4959K paketa, 880M bajtova) pkts bajtova ciljni prot opt ​​in out izvorno odredište
Ključevi u primjeru znače:

  • L: Navedite pravila.
  • v: Prikazuje detaljne informacije. Ovaj taster će prikazati naziv interfejsa, parametre pravila i TOS maske. Brojači paketa i bajtova će takođe biti prikazani na listi, sa sufiksom "K", "M" ili "G" u zavisnosti od potrebnog množitelja.
  • n: Ne rješavajte IP adrese, prikaz u digitalnom obliku. Ubrzava povlačenje.
Dodajte prekidač --line-numbers da vidite pravila s brojevima redova, na primjer:
# iptables -n -L -v --brojevi-linija
Da vidite INPUT ili OUTPUT pravila, upišite:
# iptables -L INPUT -n -v # iptables -L OUTPUT -n -v --brojevi-linija
Zaustavite, ponovo pokrenite, pokrenite zaštitni zid
Ako imate CentOS / RHEL / Fedora Linux, unesite:
# service iptables stop # service iptables start # service iptables restart
Da biste očistili iptables pravila vlastitim sredstvima, unesite:
# iptables -F # iptables -X # iptables -t nat -F # iptables -t nat -X # iptables -t mangle -F # iptables -t mangle -X # iptables -P INPUT ACCEPT # iptables -P OUTPUT ACCEPT # iptables -P NASLJEDITI PRIHVATI
Ključevi u primjeru znače:
  • F: Briše sva pravila (ispiranje).
  • X: Izbrišite lanac
  • t <таблица>: Odaberite tabelu i izbrišite pravila.
  • P: Postavite zadanu politiku (kao što je DROP, REJECT ili ACCEPT).
Uklanjanje pravila zaštitnog zida
Za prikaz broja reda zajedno s drugim informacijama za postojeća pravila, unesite:
# iptables -L OUTPUT -n --brojevi-redova # iptables -L IZLAZ -n --brojevi-redova | manje # iptables -L IZLAZ -n --brojevi-linija | grep 8.8.8.8
Dobićete listu IP adresa. Pogledajte broj na lijevoj strani i unesite broj da biste ga izbrisali. Na primjer, da izbrišete red broj 4, unesite:
# iptables -D INPUT 4
Ili pronađite izvor IP 202.54.1.1 i uklonite ga iz pravila:
# iptables -D INPUT -s 202.54.1.1 -j DROP
Ključ u primjeru znači:
  • D: uklonite jedno ili više pravila iz navedenog lanca
Dodavanje pravila zaštitnog zida
Za umetanje jednog ili više pravila u specificirani lanac, općenito se koristi sljedeća sintaksa. Prvo saznajte broj linije:
# iptables -L INPUT -n --brojevi-linija
Izlaz na primjer:
Chain INPUT (policy DROP) broj cilj prot opt ​​izvor odredište 1 DROP all - 202.54.1.1 0.0.0.0/0 2 ACCEPT all - 0.0.0.0/0 0.0.0.0/0 stanje NOVO, ESTABLISHED
Da biste umetnuli pravilo između 1 i 2, unesite:
# iptables -I INPUT 2 -s 8.8.8.8 -j DROP
Da vidite ažurirana pravila, unesite:
# iptables -L INPUT -n --brojevi-linija
Izlaz na primjer:
Lanac INPUT (policy DROP) broj cilj prot opt ​​izvor odredište 1 DROP all - 202.54.1.1 0.0.0.0/0 2 DROP all - 8.8.8.8 0.0.0.0/0 3 ACCEPT all - 0.0.0.0/0 0.. / 0 stanje NOVO, USPOSTAVLJENO
Čuvanje pravila zaštitnog zida
Da sačuvate pravila zaštitnog zida na CentOS / RHEL / Fedora Linux, unesite:
# servis iptables sačuvaj
Na drugim distribucijama
iptables-save> /root/my.active.firewall.rules
ili
iptables-save
Vraćanje pravila zaštitnog zida
Da vratite pravila zaštitnog zida iz datoteke /root/my.active.firewall.rules, unesite:
# iptables-restore< /root/my.active.firewall.rules
Da vratite pravila zaštitnog zida na CentOS / RHEL / Fedora Linux, unesite:
# service iptables restart
Postavljanje zadanih pravila zaštitnog zida
Blokiraj sav saobraćaj:
# iptables -P INPUT DROP # iptables -P OUTPUT DROP # iptables -P NAPRIJED DROP # iptables -L -v -n
Blokiraj samo dolazni saobraćaj:
# iptables -P INPUT DROP # iptables -P NAPRIJED DROP # iptables -P OUTPUT ACCEPT
Blokiranje mrežnih adresa lokalne mreže na vanjskom sučelju
IP lažiranje je napad koji koristi IP adresu hosta kojem vjeruje u IP paketima poslanim žrtvi kao povratnu adresu. Pakete sa izvornim adresama koje se ne mogu usmjeriti treba odbaciti koristeći sljedeću sintaksu:
# iptables -A INPUT -i eth1 -s 192.168.0.0/24 -j DROP # iptables -A INPUT -i eth1 -s 10.0.0.0/8 -j DROP
Raspon IPv4 adresa za privatne mreže (uvjerite se da su blokirane na vanjskom sučelju)
  • 10.0.0.0/8 -j (A)
  • 172.16.0.0/12 (B)
  • 192.168.0.0/16 ©
  • 224.0.0.0/4 (MULTICAST D)
  • 240.0.0.0/5 (E)
  • 127.0.0.0/8 (LOOPBACK)
IP blokiranje
Da blokirate IP adresu 1.2.3.4, unesite:
# iptables -A INPUT -s 1.2.3.4 -j DROP
Blokiranje dolaznih zahtjeva za portovima
Da blokirate sve zahtjeve na portu 80, unesite:
# iptables -A INPUT -p tcp --dport 80 -j DROP # iptables -A INPUT -i eth1 -p tcp --dport 80 -j DROP
Da blokirate port 80 samo za IP 1.2.3.4, unesite:
# iptables -A INPUT -p tcp -s 1.2.3.4 --dport 80 -j DROP # iptables -A INPUT -i eth1 -p tcp -s 192.168.1.0/24 --dport 80 -j DROP
Blokiranje izlaznog IP-a
Da blokirate odlazni promet s određenog hosta ili domene, kao što je web stranica, unesite:
host -t web-mjesta
Odgovor bi bio:
stranica ima adresu 95.211.41.31
Zabilježite svoju IP adresu i unesite sljedeću naredbu da blokirate sav odlazni promet sa 95.211.41.31:
# iptables -A IZLAZ -d 95.211.41.31 -j ISPUSTI
Možete koristiti maske:
# iptables -A OUTPUT -d 192.168.1.0/24 -j DROP # iptables -A OUTPUT -o eth1 -d 192.168.1.0/24 -j DROP
Također možete koristiti ime domene, unesite:
# iptables -A IZLAZ -p tcp -d www..ru -j DROP
Iako dokumentacija kaže da se ne preporučuje korištenje imena domene umjesto IP adrese.
Evidentiranje i blokiranje paketa
Unesite sljedeću naredbu da prijavite i blokirate lažiranje IP-a na javnom sučelju pod nazivom eth1:
# iptables -A INPUT -i eth1 -s 10.0.0.0/8 -j LOG --log-prefiks "IP_SPOOF A:" # iptables -A INPUT -i eth1 -s 10.0.0.0/8 -j DROP
Podrazumevano, sve se evidentira u fajl. / var / log / poruke.

Komentar od:

Bolje je to ne činiti, posebno za saobraćaj koji je jasno lijevom stranom. LOG se može umetnuti samo s ograničenjem -m, inače će svaki DoS napad biti mnogo puta efikasniji: zapravo, indirektno, napadač dobija direktnu putanju intenzivnog uticaja direktno na sistem datoteka servera.
Kako to učiniti ispravno piše u nastavku
Evidentiranje i blokiranje paketa sa ograničenim brojem unosa u dnevnik
Opcija -m može ograničiti broj kreiranih unosa dnevnika po jedinici vremena. Ovo se koristi za sprječavanje poplave datoteke dnevnika. Da snimite najviše 7 snimaka u 5 minuta, unesite:
# iptables -A INPUT -i eth1 -s 10.0.0.0/8 -m limit --limit 5 / m --limit-burst 7 -j LOG --log-prefiks "IP_SPOOF A:" # iptables -A INPUT -i eth1 -s 10.0.0.0/8 -j DROP
Blokirajte ili dozvolite promet sa Mac adrese
Koristite sljedeću sintaksu:
# iptables -A INPUT -m mac --mac-source 00: 19: 99: 3C: AB: 23 -j DROP ## * prihvata samo promet za TCP port # 8080 od mac 00: 19: 99: 3C: AB: 22 * ## # iptables -A INPUT -p tcp --destination-port 22 -m mac --mac-source 00: 19: 99: 3C: AB: 22 -j ACCEPT
Odbijte ili dopustite ICMP zahtjeve za ping
Unesite sljedeću naredbu da blokirate ICMP zahtjeve:
# iptables -A INPUT -p icmp --icmp-tip echo-request -j DROP # iptables -A INPUT -i eth1 -p icmp --icmp-tip echo-request -j DROP
Ping odgovori također mogu biti ograničeni na određene mreže ili hostove:
# iptables -A INPUT -s 192.168.1.0/24 -p icmp --icmp-tip echo-request -j PRIHVATI
Sljedeći primjer prihvaća samo ograničenu vrstu ICMP zahtjeva:
### ** pretpostavlja da je zadana politika INPUT postavljena na DROP ** ############## iptables -A INPUT -p icmp --icmp-type echo-reply -j ACCEPT iptables -A INPUT -p icmp --icmp-tip odredište-nedostupno -j PRIHVATI iptables -A INPUT -p icmp --icmp-tip vrijeme-premašeno -j PRIHVATI ## ** sav naš server da odgovori na pingove ** ## iptables - A INPUT -p icmp --icmp-tip eho-zahtjev -j PRIHVATI
Otvaranje niza IP adresa
Koristite sljedeću sintaksu da otvorite raspon IP adresa:
## prihvata samo vezu sa tcp portom 80 (Apache) ako je IP između 192.168.1.100 i 192.168.1.200 ## iptables -A INPUT -p tcp --destination-port 80 -m iprange --src-range 192.1008. 192.168.1.200 -j PRIHVATI
## nat primjer ## iptables -t nat -A POSTROUTING -j SNAT --to-source 192.168.1.20-192.168.1.25
Zatvaranje ili otvaranje javnih luka
Slijedi sintaksa za otvaranje i zatvaranje uobičajenih TCP i UDP portova:
Zamijenite ACCEPT sa DROP za blokiranje porta: ## otvori port ssh tcp port 22 ## iptables -A INPUT -m stanje --state NOVO -m tcp -p tcp --dport 22 -j PRIHVATI iptables -A INPUT -s 192.168. 1.0 / 24 -m stanje --state NOVO -p tcp --dport 22 -j ACCEPT ## otvorene čaše (usluga štampanja) udp / tcp port 631 za LAN korisnike ## iptables -A INPUT -s 192.168.1.0/24 - p udp -m udp --dport 631 -j PRIHVATI iptables -A INPUT -s 192.168.1.0/24 -p tcp -m tcp --dport 631 -j ACCEPT ## dozvoli sinhronizaciju vremena preko NTP-a za lan korisnike (otvori udp port 123) ## iptables -A INPUT -s 192.168.1.0/24 -m stanje --state NOVO -p udp --dport 123 -j PRIHVATI ## otvori tcp port 25 (smtp) za sve ## iptables -A INPUT - m stanje --state NOVO -p tcp --dport 25 -j PRIHVATI # otvori portove dns servera za sve ## iptables -A INPUT -m state --state NOVO -p udp --dport 53 -j PRIHVATI iptables -A INPUT -m stanje --stanje NOVO -p tcp --dport 53 -j PRIHVATI ## otvori http / https (Apache) port servera za sve ## iptables -A INPUT -m stanje --state NOVO -p tcp --dport 80 -j PRIHVATI iptables -A INPUT -m stanje --stanje NOVO -p tcp --dport 443 -j PRIHVATI ## otvori tcp port 110 (pop3) za sve ## iptables -A INPUT -m stanje --state NOVO -p tcp --dport 110 -j PRIHVATI ## otvori tcp port 143 (imap) za sve ## iptables -A INPUT -m stanje --state NOVO -p tcp --dport 143 -j PRIHVATI ## otvoreni pristup serveru datoteka Samba samo za lan korisnike ## iptables -A ULAZ -s 192.168.1.0/24 -m stanje --stanje NOVO -p tcp --dport 137 -j PRIHVATI iptables -A INPUT -s 192.168.1.0/24 -m stanje --stanje NOVO -p tcp - dport 138 -j PRIHVATI iptables -A INPUT -s 192.168.1.0/24 -m stanje --state NOVO -p tcp --dport 139 -j PRIHVATI iptables -A INPUT -s 192.168.1.0/24 -m stanje --stanje NOVO -p tcp --dport 445 -j PRIHVATI ## otvoreni pristup proxy serveru samo za lan korisnike ## iptables -A INPUT -s 192.168.1.0/24 -m stanje --state NOVO -p tcp --dport 3128 - j PRIHVATI ## otvoreni pristup mysql serveru samo za lan korisnike ## iptables -I INPUT -p tcp --dport 3306 -j PRIHVATI
Ograničite broj istovremenih konekcija na server za svakog klijenta po IP-u
Za postavljanje takvih ograničenja možete koristiti modul connlimit. Da ograničite ne više od 3 SSH veze po hostu, unesite:
# iptables -A INPUT -p tcp --syn --dport 22 -m connlimit --connlimit-above 3 -j ODBIJA
Postavite HTTP zahtjeve na 20:
# iptables -p tcp --syn --dport 80 -m connlimit --connlimit-above 20 --connlimit-mask 24 -j DROP
Parametri u primjeru,
  • --connlimit-above 3: Da li je broj postojećih veza veći od 3.
  • --connlimit-mask 24: Grupni domaćini

Definicija itablice- uslužni program komandne linije, je standardni interfejs za upravljanje radom firewall-a (firewall) netfilter za Linux kernele 2.4, 2.6, 3.x, 4.x. Uslužni program iptables zahtijeva privilegije superkorisnika (root).

Mi ćemo se pozabaviti iptables i ne možete bez malog teoretskog uvoda.

Da biste ispravno sastavili pravila zaštitnog zida, morate razumjeti kako paketi općenito idu i šta se s njima događa.

Redoslijed kretanja tranzitnih paketa

Korak sto Lanac Bilješka
1
2 mangle PRERAUTIRANJE Obično se ovaj niz koristi za unošenje promjena u zaglavlje paketa, na primjer za promjenu bitova TOS itd..
3 nat PRERAUTIRANJE Ovaj lanac se koristi za prevođenje mrežnih adresa ( ). se izvršava kasnije u drugom lancu.
4 Donošenje odluke o daljem usmjeravanju, tj. u ovom trenutku se odlučuje kuda će paket otići - na lokalnu aplikaciju ili na drugi čvor na mreži.
5 mangle NAPRIJED Zatim paket ide u lanac NAPRIJED mangle tables.
6 Filter NAPRIJED U lancu NAPRIJED primaju se samo oni paketi koji idu na drugi host. Ovdje se mora izvršiti svo filtriranje tranzitnog saobraćaja. Ne zaboravite da promet prolazi kroz ovaj lanac u oba smjera, svakako uzmite u obzir ovu okolnost kada pišete pravila filtriranja.
7 mangle POSTROUTING Ovaj lanac je namijenjen da izvrši promjene u zaglavlju paketa nakon što se donese posljednja odluka o usmjeravanju.
9 nat POSTROUTING Ovaj lanac je prvenstveno namijenjen za Izvorni prevod mrežne adrese... Ovdje se također izvodi maskiranje ( Maskiranje).
9 Izlazno mrežno sučelje (na primjer eth1).

Za lokalnu aplikaciju (dolazni paketi)

Korak sto Lanac Bilješka
1 Ulazni mrežni interfejs (npr. eth0)
2 mangle PRERAUTIRANJE Obično se koristi za unošenje promjena u zaglavlje paketa, na primjer za postavljanje bitova TOS itd.
3 nat PRERAUTIRANJE Prijevod adrese ( Prevod mrežne adrese odredišta).
4 Odlučite se za rutiranje.
5 mangle INPUT Paket ulazi u lanac INPUT mangle tables. Ovdje se mijenjaju zaglavlje paketa prije nego što se prosljeđuje lokalnoj aplikaciji.
6 filter INPUT Ovdje se filtrira dolazni saobraćaj. Zapamtite da svi dolazni paketi adresirani na nas prolaze kroz ovaj lanac, bez obzira na to iz kojeg su interfejsa došli.
7 Lokalni proces / aplikacija (tj. serverski program ili klijentski program)

Iz lokalnih procesa (odlazni paketi)

Korak sto Lanac Bilješka
1 Lokalni proces (tj. serverski program ili klijentski program).
2 Odlučite se za rutiranje. Ovdje se odlučuje kuda će paket dalje ići - na koju adresu, preko kojeg mrežnog interfejsa itd.
3 mangle IZLAZ Ovdje unosite promjene u zaglavlje paketa. Izvođenje filtriranja u ovom lancu može imati negativne posljedice.
4 nat IZLAZ Ovaj lanac se koristi za translaciju mrežnih adresa (NAT) u paketima koji potiču iz procesa lokalnog firewall-a.
5 Filter IZLAZ Ovdje se filtrira odlazni promet.
6 mangle POSTROUTING Lanac POSTROUTING Tabele mangle se uglavnom koriste za pravila koja moraju izvršiti promjene u zaglavlju paketa prije nego što ono napusti zaštitni zid, ali nakon što se donese odluka o rutiranju. Ovaj lanac sadrži sve pakete, kako tranzitne, tako i one koje kreiraju lokalni firewall procesi.
7 nat POSTROUTING Ovdje je izvršeno Izvorni prevod mrežne adrese... Izbjegavajte filtriranje paketa u ovom lancu kako biste izbjegli neželjene nuspojave. Međutim, ovdje također možete zaustaviti pakete, primjenjujući zadanu politiku. DROP.
8 Mrežni interfejs (npr. eth0)

Kako razumemo, postoje tri glavne tabele:

  • mangle- Ova tabela je namenjena operacijama na klasifikaciji i obeležavanju paketa i veza, kao i modifikaciji zaglavlja paketa (TTL i TOS polja).
  • filter- glavna tabela za filtriranje paketa, koja se podrazumevano koristi. Zapravo, u ovoj tabeli se dešava filtriranje paketa.
  • nat- Omogućava nat da radi ako želite da koristite svoj računar kao ruter. Ovdje su postavljena pravila rutiranja.

Za sto nat primjenjive radnje:

  • MASQUERADE

Akcija DNAT(Prevođenje mrežne adrese odredišta) prevodi odredišne ​​adrese u zaglavlja paketa. Drugim riječima, ova akcija preusmjerava pakete na adrese koje nisu navedene u zaglavljima paketa.

SNAT(Prevod mrežne adrese izvora) se koristi za promjenu izvornih adresa paketa. Ovom akcijom podijelite jednu eksternu IP adresu između računara na lokalnoj mreži za pristup Internetu. U ovom slučaju, zaštitni zid koristi SNAT, automatski vrši naprijed i nazad translaciju adresa, čime je omogućeno povezivanje sa serverima na Internetu sa računara u lokalnoj mreži.

maskiranje ( MASQUERADE) se koristi u iste svrhe kao SNAT, ali za razliku od potonjeg, MASQUERADE opterećuje sistem. Ovo se dešava zato što se svaki put kada je ova radnja potrebna, traži se IP adresa za mrežni interfejs naveden u akciji, dok za SNAT IP adresa je naznačena direktno. Međutim, zbog ove razlike, MASQUERADE može raditi u slučajevima sa dinamičkom IP adresom, tj. kada se povežete na internet, recite kroz JPP, SLIP ili DHCP.

iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o eth0 -j MASQUERADE

Izvrši MASQUERADE za sve pakete koji dolaze iz mreže 10.8.0.0 na eth0 interfejs. Radi jasnoće, recimo da imamo dvije mrežne kartice i dvije mreže. Treba nam mreža 10.8.0.0/24 (prva mrežna kartica) bi mogla ići, recimo, na Internet putem eth0 ( druga mrežna kartica)

  • sirovo- Dizajniran za izvođenje radnji s paketima prije nego što ih sistem obradi.

Sama zadana tabela filter.

  • INPUT- upravlja prometom koji ide direktno do samog hosta.
  • NAPRIJED- omogućava vam filtriranje tranzitnog saobraćaja.
  • IZLAZ- omogućava vam da filtrirate promet koji potiče od samog hosta.

Akcija na paketu.

  • ACCEPT- preskakanje paketa. Paket napušta trenutni osnovni lanac i nastavlja dalje.
  • REJECT- blokirati paket i obavijestiti njegov izvor o odbijanju.
  • DROP- blokirati paket bez obavještavanja izvora o odbijanju. Poželjnije je filtriranje prometa na sučeljima povezanim na Internet, jer snižava informacijski sadržaj skeniranja host portova od strane napadača.
  • LOG- upisati zapis o paketu u log fajl.

Ispostavilo se da imamo lanac [tabela - filter] - [saobraćaj - INPUT] - [akcija - DROP] Logika akcija samo se čini komplikovanom. Mislim da ćemo to shvatiti na primjerima i sve će postati jednostavno.

Iptables komande:

  • -A dodajte pravilo na kraj lanca.
  • -D uklonite pravilo.
  • -Ja ubacite pravilo sa željenim brojem.
  • -L ispisati sva pravila u trenutnom lancu.
  • -S zaključiti sva pravila.
  • -F obrisati sva pravila.
  • -N kreirati lanac.
  • -X izbrišite lanac.
  • -P postavite zadanu akciju.

Počnimo razumjeti s konkretnim primjerima.

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

-A dodati novo pravilo, INPUT za dolazne pakete, -p protokol, jedan od tcp, udp, udplite, icmp, icmpv6, esp, ah, sctp,
mh, - - dport odredišni port 80 (opcija samo za protokol), -j odaberite radnju ako se pravilo podudara, ACCEPT dopustiti. Odnosno, dozvolite dolazni tcp saobraćaj na portu 80.

Navedeni ključevi također podržavaju konstrukciju pomoću znaka ! . Invertira uslov, na primjer:

iptables -A INPUT -s! 192.168.0.50 -j DROP

-s izvorna adresa - ime hosta (www.help.com), IP adresa ili podmreža u CIDR notaciji (192.168.0.1/16), ! inverzija, DROP zabraniti. Zabrani sav dolazni promet osim izvora 192.168.0.50 (da nije bilo ! , zatim demanti samo sa 192.168.0.50)

iptables -A INPUT -s 192.168.0.50 -j DROP

Zabrani dolazni saobraćaj sa ip - 192.168.0.50 .

Lista kriterija pravila:

  • -p Protokol, protokol se također može specificirati korištenjem broja ili imena prema listi datoj u / etc / protokolima. Bilo koji protokol se može specificirati pomoću riječi all ili broja 0. Postoje i dodatni parametri za protokol.: —Sport(—izvorni port) Omogućava vam da odredite odlazni port (ili njihov opseg). —Dport(—Odredišna luka) Omogućava vam da odredite odredišni port (ili njihov raspon).
  • -s Određuje adresu pošiljaoca. Adresa može biti IP adresa (moguće sa maskom), ime domene (u posljednja dva slučaja, prije dodavanja pravila u lanac, ime se rješava u IP adresu).
  • -i Određuje dolazni mrežni interfejs. Ako navedeno ime sučelja završava sa "+" (na primjer, eth +), tada sva sučelja čija imena počinju navedenim imenom (etho, eth1) odgovaraju kriterijima.
  • -d Određuje adresu primaoca. Sintaksa je ista -s .
  • -o Definira odlazni mrežni interfejs. Sintaksa je ista -i.

Isti kriterijumi se mogu kombinovati.

iptables -A INPUT -i eth0 -s 192 .168.0.0 -j DROP

Zabrani dolazne pakete sa interfejsa eth0 i ip 192 .168.0.0... I na interfejsu eth1 paketi će proći.

Šta ako ti za početak ne znaš koji port da otvoriš, na primjer, želite da FTP server radi u pasivnom režimu. Modul conntrack o stanju veze će pomoći, a tačnije kriterij - ctstate. Modul je povezan tagom -m.

iptables -A INPUT -m conntrack -ctstate UTVRĐEN, POVEZAN -j PRIHVATI

iptables -A INPUT -m conntrack —ctstate NOVO -p tcp —dport 21 -j PRIHVATI # Dozvoli otvaranje veza na TCP portu 21.

Moguća stanja:

  • NOVO- veza nije otvorena, odnosno paket je prvi u vezi.
  • ESTABLISHED- paket se odnosi na već uspostavljenu vezu. Obično se takvi paketi primaju bez dodatnog filtriranja, kao što je slučaj sa RELATED.
  • RELATED- paket otvara novu vezu koja je logički povezana sa već uspostavljenim, na primjer, otvaranje kanala podataka u pasivnom FTP modu. Veza dobija status RELATED ako je povezan s drugim spojem koji ima atribut ESTABLISHED.
  • INVALID- Oznaka INVALID znači da se paket ne može identificirati i stoga ne može imati određeni status.

iptables -A ULAZ -m stanje -stanje UTVRĐENO, POVEZANO -j PRIHVATI

S tate i deološki prethodnik conntrack-a, ima jedan parametar --state, koji je sličan --ctstate parametru modula conntrack (ali, za razliku od njega, ne podržava DNAT i SNAT stanja).

Pogledajmo nakratko tabelu oporezivanja koja se može naći u datoteci /proc/net/ip_conntrack. Ovo sadrži listu svih aktivnih veza.

Tcp 6 300 UTVRĐENI src = 128. *. *. * Dst = 194. *. *. * Sport = 52524 dport = 2223 src = 194. *. *. * Dst = 128. *. *. * Sport = 2223 dport = 52524 oznaka = 0 upotreba = 2

Prvi je, kao što je jasno, protokol, zatim decimalni broj (što znači da ne znam), zatim vijek trajanja veze. Dalje, stanje je USPOSTAVLJENO, odnosno veza je već uspostavljena, dešava se i NEREPLIED, što znači da još nije bilo odgovornog saobraćaja. Slede adrese pošiljaoca i primaoca, port pošiljaoca i primaoca. Dalje, tačno je suprotno, odnosno, ASSURED ova zastavica označava da je veza pouzdano uspostavljena i ovaj zapis neće biti izbrisan kada se dostigne maksimalni mogući broj praćenih veza.

Neke karakteristike protokola.

TCP veza se uvijek uspostavlja prijenosom tri paketa, koji inicijaliziraju i uspostavljaju vezu preko koje će se podaci prenositi u budućnosti. Sesija počinje prenosom SYN paket, kao odgovor na koji se prenosi SYN / ACK paketa i potvrdite uspostavljanje paketa veze ACK .

Čim je tragač ugledao prvi ( SYN) paket, zatim mu dodeljuje status NOVO... Čim drugi paket ( SYN / ACK), tada se vezi dodeljuje status ESTABLISHED.

Kod UDP protokola je sve malo drugačije, ovaj protokol ne predviđa uspostavljanje i zatvaranje veze, ali najveća mana je nedostatak informacija o redoslijedu pristizanja paketa. Ali sa stanovišta tracera, sve je isto kao i kod TCP-a. Prvi paket koji stigne dobija status NOVO.Čim pošaljete paket odgovora, status se dodeljuje ESTABLISHED. Jedina razlika je u tome što se status ASSURED dodjeljuje samo kada je nekoliko paketa već razmijenjeno.

Evidentiranje aplikacija pravila.

iptables vam daje mogućnost evidentiranja pojedinačnih paketa i događaja. Za to se primjenjuje akcija LOG.

iptables -A INPUT -p tcp —syn -j LOG —informacije na nivou dnevnika —log-prefiks "INPUT paketi"

—Log-nivo Koristi se za postavljanje nivoa dnevnika. Za kompletnu listu nivoa, pogledajte syslog.conf man. Obično se mogu postaviti sljedeći nivoi: debug, info, biljeska, upozorenje, upozoriti, err, greška, krit, uzbuna, emerge i panika... Dnevnici se zapisuju u datoteku syslog.

—Prefiks dnevnika Taster postavlja tekst (prefiks) koji će se koristiti prije svih poruka iptables... Poruke sa određenim prefiksom se tada mogu lako pronaći, na primjer, pomoću grep... Prefiks može imati do 29 znakova, uključujući razmake.

Jun 1 17:12:20 debian kernel: INPUT paketi IN = eth0 OUT = MAC = 02: 1e: 6d: 00: e2: 1c: 00: 01: e8: 11: 73: 69: 08: 00 SRC4.9 = 125 12.95 DST = 194.87.239.104 LEN = 40 TOS = 0x00 PREC = 0x00 TTL = 52 ID = 38690 PROTO = TCP SPT = 12557 DPT = 23 WINDOW = 1460 $ RESSYN 0xUR0

Popularne iptables komande za upravljanje.

iptables -L -n --brojevi-linijaPogledajte listu pravila.

-n broj porta i IP u digitalnom obliku.

—Brojevi linija broj linije.

iptables -F Potpuno resetirajte pravila.

iptables -P ULAZ PRIHVAT Zadana pravila za INPUT tablicu.
iptables -P IZLAZ PRIHVAT Zadana pravila za OUTPUT tablicu.
iptables -P NASLJEDNI DROP Zadana pravila za tablicu FORWARD.

iptables -D ULAZ 1Brisanje pravila po broju u lancu.

iptables -D INPUT -s 123.45.67.89 -j DROP Uklanjanje pravila na osnovu onoga što radi.

iptables -I INPUT ... Umetnite pravilo na početak lanca.

iptables -I INPUT 3 ... Ili možete odrediti određenu poziciju.

REDIRECT

Akcija REDIRECT je dizajnirana da preusmjeri pakete s jednog skupa portova na drugi unutar jednog sistema, bez napuštanja domaćina.
REDIRECT radi samo u PREROUTING i OUTPUT lancima tabele nat... Dakle, opseg je ograničen samo na preusmjeravanje. Ovo se najčešće koristi za transparentni proxy, kada se klijent iz lokalne mreže povezuje na port 80, a gateway preusmjerava pakete na lokalni proxy port:

iptables -t nat -A PREUSMIRANJE -p tcp —dport 80 -j PREUSMJERI —na port 3128

Nova pravila se ne pohranjuju automatski i neće stupiti na snagu nakon ponovnog pokretanja servera. Stoga, nakon promjene iptablesa, moramo sačuvati promjene.

iptables - restauracija> / etc / iptablesUčitaj pravila iz datoteke.

Način spremanja i učitavanja pravila je po vašem nahođenju. Upoznali smo se samo sa osnovama teorije iptablesa, naravno, postoji mnogo više opcija prilagođavanja. Više detalja o čemu ćemo reći u drugičlanak.

Top srodni članci