Zabranite icmp saobraćaj na vašem vpn-u. Cisco ACL za napredne

Dakle, nastavimo da se bavimo ACL-ovima. Ovaj put smo proširili ACL-ove. Preuzet ćemo topologiju iz prethodnog članka, nadam se da ste je temeljito proučili. Ako to nije slučaj, toplo preporučujem da ga pročitate kako bi materijali u ovom članku bili razumljiviji.

Prije svega, počeću od toga šta su prošireni ACL-ovi. Prošireni ACL-ovi vam omogućavaju da navedete protokol, odredišnu adresu i portove pored izvorne adrese. Kao i posebni parametri određenog protokola. Najbolje je učiti iz primjera, pa napravimo novi zadatak, komplicirajući prethodni. Usput, neko bi mogao biti zainteresiran da se nakon ovoga bavi pitanjima distribucije saobraćaja po prioritetu, preporučujem QoS Classification i Marking dobar članak, doduše na engleskom. Pa, za sada, vratimo se našem zadatku:

Zadatak.

  1. Dozvolite eho zahtjeve od hostova na mreži 192.168.0.0/24 do servera.
  2. Sa servera – zabrani eho zahtjeve prema internoj mreži.
  3. Dozvolite WEB pristup serveru sa čvora 192.168.0.11.
  4. Dozvolite FTP pristup sa hosta 192.168.0.13 na server.

Složen zadatak. Takođe ćemo to sveobuhvatno rešiti. Prije svega, pogledat ću sintaksu za korištenje proširenog ACL-a.

Proširene ACL opcije

<номер от 100 до 199> <действие permit, deny> <протокол> <источник> <порт> <назначение> <порт> <опции>

Brojevi portova su, naravno, naznačeni samo za TCP/UDP protokole. Mogu postojati i prefiksi ekv(broj porta jednak navedenom), gt/lt(broj porta je veći/manji od navedenog), neq(broj porta nije jednak navedenom), domet(opseg porta).

Imenovani ACL-ovi

Usput, pristupne liste mogu biti ne samo numerisane, već i imenovane! Možda će vam se ova metoda učiniti prikladnijom. Ovaj put ćemo uraditi upravo to. Ove naredbe se izvršavaju u kontekstu globalne konfiguracije i sintaksa je:

Ruter(config)#ip pristupna lista proširena<имя>

Dakle, krenimo sa formiranjem pravila.

  1. Dozvoljava pingove sa mreže 192.168.0.0/24 na server. dakle, echo-zahtjevi su protokol ICMP, izabraćemo našu podmrežu kao izvornu adresu, adresu servera kao odredišnu adresu, tip poruke – na dolaznom interfejsu echo, na izlazu - echo-reply. Router(config)#ip access-list extended INT_IN Router(config-ext-nacl)#permit icmp 192.168.0.0 0.0.0.255 host 10.0.0.100 echo Ups, šta nije u redu sa maskom podmreže? Da, ovo je trik ACL. Takozvani Divlja karta-maska. Izračunava se kao obrnuta maska ​​od uobičajene. One. 255.255.255.255 - Subnet maska. U našem slučaju, podmreža 255.255.255.0 , nakon oduzimanja ono što ostaje je pravedno 0.0.0.255 .Mislim da ovo pravilo ne treba objašnjenje? Protokol icmp, adresa izvora – podmreža 192.168.0.0/24 , odredišna adresa – host 10.0.0.100, vrsta poruke – echo(zahtjev). Inače, to je lako primijetiti host 10.0.0.100 ekvivalentno 10.0.0.100 0.0.0.0 .Ovo pravilo primjenjujemo na interfejs. Router(config)#int fa0/0
    Router(config-if)#ip access-group INT_IN u Pa, tako nešto. Sada, ako provjerite pingove, lako je vidjeti da sve radi dobro. Ovdje nas, međutim, čeka jedno iznenađenje, koje će se pojaviti nešto kasnije. Neću to još otkriti. Ko je pogodio - bravo!
  2. Sa servera – zabranjujemo sve eho zahtjeve prema internoj mreži (192.168.0.0/24). Definiramo novu imenovanu listu, INT_OUT, i pripajamo je interfejsu najbližem serveru.
    Router(config)#ip pristupna lista proširena INT_OUT
    Router(config-ext-nacl)#deny icmp host 10.0.0.100 192.168.0.0 0.0.0.255 echo
    Router(config-ext-nacl)#exit
    Router(config)#int fa0/1
    Router(config-if)#ip pristupna grupa INT_OUT in
    Dozvolite mi da objasnim šta smo uradili. Kreirao proširenu pristupnu listu pod nazivom INT_OUT, onemogućavajući protokol u njoj icmp sa tipom echo od domaćina 10.0.0.100 po podmreži 192.168.0.0/24 i primijenjen na ulaz interfejsa fa0/1, tj. najbliže serveru. Pokušavamo poslati ping sa servera.
    SERVER>ping 192.168.0.11
    Pingovanje 192.168.0.11 sa 32 bajta podataka:

    Odgovor od 10.0.0.1: Odredišni host nedostupan.
    Odgovor od 10.0.0.1: Odredišni host nedostupan.
    Odgovor od 10.0.0.1: Odredišni host nedostupan.
    Statistika pinga za 192.168.0.11:
    Paketi: Poslano = 4, Primljeno = 0, Izgubljeno = 4 (100% gubitak)
    Pa, činilo se da radi kako treba. Za one koji ne znaju kako slati pingove, kliknite na čvor koji nas zanima, na primjer server. Idite na karticu Desktop, tamo Command Prompt A sada, obećana šala. Pokušajte poslati ping sa hosta, kao u prvoj tački. PC>ping 10.0.0.100
    Pingovanje 10.0.0.100 sa 32 bajta podataka:
    Zahtjev je istekao.
    Zahtjev je istekao.
    Zahtjev je istekao.
    Zahtjev je istekao.

    Evo jednog za tebe. Sve je radilo! Zašto je prestalo? Ovo je obećano iznenađenje. Objašnjavam u čemu je problem. Da, prvo pravilo nije nestalo. Dopušta da se eho zahtjev pošalje serverskom čvoru. Ali gdje je dozvola za prosljeđivanje eho odgovora? Otišao je! Šaljemo zahtjev, ali ne možemo prihvatiti odgovor! Zašto je sve funkcionisalo ranije? Tada nismo imali ACL na interfejsu. fa0/1. A pošto nema ACL, onda je sve dozvoljeno. Moraćete da kreirate pravilo da biste dozvolili prijem icmp odgovora.

    Dodaj na listu INT_OUT

    Dodajmo isto na INT_IN listu.

    Router(config-ext-nacl)#permit icmp host 10.0.0.100 192.168.0.0 0.0.0.255 echo-reply

    Nemoj se žaliti. Sve ide odlično!

  3. Dozvoljavamo WEB pristup serveru sa čvora *.11 Mi radimo isto! Ovdje, međutim, morate znati nešto o tome kako se pozivi javljaju putem protokola sloja 4 (TCP, UDP). Port klijenta se bira proizvoljno > 1024, a port servera se bira u skladu sa uslugom. Za WEB, ovo je port 80 (http protokol). Podrazumevano, WEB servis je već instaliran na serveru, možete ga videti u postavkama čvora. Provjerite postoji li kvačica. I možete se povezati sa serverom tako što ćete izabrati prečicu „Web pretraživač“ na „Radnoj površini“ bilo kog čvora. Naravno, sada neće biti pristupa. Zato što imamo ACL-ove na sučeljima rutera, a oni nemaju nikakva pravila dozvole za pristup. Pa, hajde da kreiramo INT_IN pristupnu listu (koja je na interfejsu fa0/0) dodajte pravilo: Router(config-ext-nacl)#permit tcp host 192.168.0.11 gt 1024 host 10.0.0.100 eq 80 To jest, dozvoljavamo TCP protokol sa našeg hosta (proizvoljni port, > 1024) na server , HTTP port.

    I, naravno, suprotno pravilo je u listi INT_OUT (koja se nalazi na interfejsu fa0/1):

    Router(config-ext-nacl)#permit tcp host 10.0.0.100 eq 80 host 192.168.0.11 uspostavljen

    Odnosno, dozvoljavamo TCP iz luke 80 servera po hostu *.11 , a veza bi već trebala biti uspostavljena! Možda umjesto toga uspostavljena ukazuju na isto GT 1024, funkcionisaće jednako dobro. Ali značenje je malo drugačije.

    Odgovorite u komentarima šta bi bilo sigurnije?

  4. Dozvoljavamo FTP pristup sa *.13 čvora na server. Takođe nije ništa komplikovano. Pogledajmo kako se interakcija odvija putem FTP protokola. U budućnosti planiram da posvetim čitav niz članaka radu različitih protokola, jer je to veoma korisno u kreiranju preciznih (snajperskih) ACL pravila. Pa, za sada: Akcije servera i klijenta:+ Klijent pokušava da uspostavi vezu i šalje paket (koji sadrži indikaciju da će raditi u pasivnom režimu) na port 21 servera sa svog porta X (X > 1024, slobodan port) + Server šalje odgovor i prijavljuje svoj broj porta kako bi formirao podatke kanala Y (Y > 1024) klijentskom portu X, ekstrahiranom iz zaglavlja TCP paketa.+ Klijent pokreće komunikaciju za prijenos podataka na portu X+1 na port servera Y (preuzeto iz zaglavlja prethodne transakcije). Ovako nešto. Zvuči malo komplikovano, ali samo trebate to shvatiti. Dodajte pravila na INT_IN listu:

    dozvoli tcp host 192.168.0.13 gt 1024 host 10.0.0.100 eq 21
    dozvoli tcp host 192.168.0.13 gt 1024 host 10.0.0.100 gt 1024

    I dodajte pravila na INT_OUT listu:

    dozvoli tcp host 10.0.0.100 eq ftp host 192.168.0.13 gt 1024
    dozvoli tcp host 10.0.0.100 gt 1024 host 192.168.0.13 gt 1024

    Provjeravamo iz komandne linije sa komandom ftp 10.0.0.100, gdje se prijavljujemo koristeći naše vjerodajnice cisco:cisco(preuzeto iz podešavanja servera), tamo unesite komandu dir i videćemo da se podaci, kao i komande, uspešno prenose.

To je otprilike sve što se tiče proširenih pristupnih lista.

Dakle, pogledajmo naša pravila:

Ruter#sh pristup
Proširena IP lista pristupa INT_IN
dozvoli icmp 192.168.0.0 0.0.0.255 host 10.0.0.100 echo (17 podudaranja)
dozvoli icmp host 10.0.0.100 192.168.0.0 0.0.0.255 echo-reply
dozvoli tcp host 192.168.0.11 gt 1024 host 10.0.0.100 eq www (36 podudaranja)
dozvoli tcp host 192.168.0.13 gt 1024 host 10.0.0.100 eq ftp (40 podudaranja)
dozvoli tcp host 192.168.0.13 gt 1024 host 10.0.0.100 gt 1024 (4 podudaranja)
Proširena IP lista pristupa INT_OUT
deny icmp host 10.0.0.100 192.168.0.0 0.0.0.255 echo (4 podudaranja)
dozvoli icmp host 10.0.0.100 192.168.0.0 0.0.0.255 echo-reply (4 podudaranja)
dozvoli tcp host 10.0.0.100 eq www host 192.168.0.11 uspostavljen (3 podudaranja)
dozvoli tcp host 10.0.0.100 eq ftp host 192.168.0.13 gt 1024 (16 podudaranja)
dozvoli tcp host 10.0.0.100 gt 1024 host 192.168.0.13 gt 1024 (3 podudaranja)

Firewall je prva linija odbrane za bilo koji server i protiv njega ispravna podešavanja zavisi od toga da li napadač može dalje napredovati u svojim pokušajima da prodre u sistem. Savremeni fireware nudi mnoge sigurnosne mehanizme, pomoću kojih možete držati 99% napadača izvan kruga. I sve to bez potrebe kupovine skupe opreme i komercijalnog softvera.

Glavni cilj svih hakera je da dobiju pristup interpretatoru komandi servera kako bi iskoristili njegove mogućnosti u svoju korist. Najčešće se prodor u „svetinju nad svetinjama“ vrši korištenjem rupa u servisima ili pogađanjem lozinke (brute force) do jednog od njih (na primjer, ssh).

Skeniranje portova

Da bi identifikovao prisustvo ranjivih usluga na mašini, napadač vrši izviđanje pomoću skenera porta i razni sistemi otkrivanje ranjivosti. Obično se nmap koristi kao skener portova, koji može skenirati na desetine na razne načine au nekim slučajevima može otkriti verzije OS-a i usluge. Evo liste posebno popularnih nmap zastavica koje napadači obično koriste:

Nmap zastavice koje se koriste tokom skeniranja

  • -sT - normalno TCP skeniranje otvaranjem i prekidom veze sa navedenim portom;
  • -sS - SYN/ACK skeniranje, veza se prekida odmah nakon odgovora na zahtjev za otvaranje veze;
  • -sU - UDP skeniranje;
  • -sF - skeniranje u paketima sa postavljenom zastavom FIN;
  • -sX - skeniranje sa paketima sa postavljenim FIN, PSH i URG zastavicama;
  • -sN - skeniranje u paketima bez postavljenih zastavica.

Metoda protiv skeniranja je jednostavna i poznata svakom administratoru sistema. Sastoji se od jednostavnog zatvaranja svih servisa koji ne bi trebali biti vidljivi sa vanjske mreže. Na primjer, ako mašina pokreće ssh, samba i apache usluge, a samo web server sa korporativnom web stranicom treba da bude vidljiv iz vanjskog svijeta, tada se firewall može konfigurirati ovako:

Početno podešavanje iptablesa

outif="eth1"
iptables -F
iptables -i $outif -A INPUT \
-m conntrack\
--ctstate ESTABLISHED, POVEZANO \
-j PRIHVATI
iptables -i $outif -A INPUT -p tcp \
--dport 80 -j PRIHVATI
iptables -i $outif -P INPUT DROP
iptables -i $outif -P IZLAZ PRIHVATI

Početno podešavanje ipfw-a

outif="rl0"
ipfw dodaj dozvoli ip sa bilo kojeg na bilo koji \
preko lo0
ipfw dodaj dozvoli ip od mene na bilo koji \
preko $outif
ipfw dodaj dozvoli tcp od bilo kojeg meni \
uspostavljena putem $outif
ipfw dodaj dozvoli tcp sa bilo kojeg 80 \
meni preko $outif
ipfw dodaj deny ip iz bilo kojeg u bilo koji \
preko $outif

Početno podešavanje pf-a

outif="rl0"
postavite preskakanje na lo0
blokirati sve
onesvijestiti se na $outif od $outif \
u bilo koje stanje
proslijediti na $outif proto iz bilo kojeg \
na $outif port 80

Sva tri skupa pravila rade istu stvar - dozvoljavaju bilo kakvom prometu da prođe kroz loopback sučelje, dozvoljavaju prihvatanje paketa iz već uspostavljenih veza (tako da, na primjer, preglednik može primiti odgovor na zahtjev udaljenom serveru ), dozvoljava pozive na 80. port, blokirajući sve ostale i dozvoljavajući bilo kakve veze prema van. Imajte na umu da ako u primjerima iptables i ipfw izričito postavljamo pravila koja dozvoljavaju prijem paketa iz već uspostavljenih veza, onda je u slučaju pf-a bilo dovoljno navesti “keep state” u skupu pravila, dozvoljavajući sve odlazne veze.

Općenito, ova šema za zaštitu mrežnih usluga od skeniranja i upada funkcionira odlično, ali možemo ići dalje i konfigurirati firewall tako da se neke vrste skeniranja uopće ne mogu izvoditi. Tehnički to ne možemo učiniti za redovna skeniranja (nmap zastavice "-sT", "-sS" i "-sU") jednostavno zato što u tome nema ničeg kriminalnog, ali nestandardne tipove skeniranja poput "-sN" "-sF " i "-sX" generiraju pakete koje nije moguće kreirati legitimne aplikacije.

Stoga, bez ikakve sumnje, takve veze odbacujemo.

Metode za borbu protiv egzotičnih vrsta skeniranja

# Onemogućite FIN skeniranje
Linux> iptables -A INPUT –p tcp\
–m tcp\
--tcp-zastavice FIN,ACK FIN -j DROP
FreeBSD>
nije uspostavljena tcpflags fin
# Onemogući X-scan
Linux>
--tcp-zastavice FIN,SYN,RST,PSH,ACK,URG
FIN,SYN,RST,PSH,ACK,URG\
–j DROP
FreeBSD> ipfw dodaj odbijeni tcp iz bilo kojeg u bilo koji \
tcpflags fin, syn, rst, psh, ack, urg
# Onemogući N-skeniranje
Linux> iptables -A INPUT –p tcp –m tcp\
--tcp-zastavice FIN,SYN,RST,PSH,ACK,URG NONE –j DROP
FreeBSD> ipfw dodaj odbijeni tcp iz bilo kojeg u bilo koji \
tcpflags !fin, !syn, !prvo, !psh, !ack, !urg
U OpenBSD-u, sve ove linije mogu se zamijeniti jednostavnim unosom na početku
/etc/pf.conf:
ribati u svemu

Scrub direktiva omogućava mehanizam normalizacije paketa u kojem se fragmentirani paketi ponovo ujedinjuju, a paketi s nevažećim kombinacijama zastavica odbacuju. Pored egzotičnih tipova skeniranja, scrub vam takođe omogućava da se zaštitite od obmanjujućih sistema za otkrivanje upada (slanje visoko fragmentiranih paketa) i nekih vrsta DoS napada.

Da bismo se zaštitili od SYN/ACK skeniranja pokrenutih pomoću nmap "-sS" zastavice, možemo koristiti metod pasivnog otiska prsta OS koji je dostupan u pf i iptables/netfilter zaštitnim zidovima (od verzije 1.4.6). Tokom normalnog skeniranja (oznaka "-sT"), nmap koristi standardni interfejs socketa operativni sistem, tako da se takvo skeniranje gotovo ne razlikuje od toka običnih paketa (u nastavku ćemo pogledati neke od njegovih razlika), međutim, sa SYN/ACK skeniranjem, nmap generiše pakete nezavisno, tako da imaju neke karakteristike koje odaju njihov izvor . Metoda pasivne detekcije OS-a vam omogućava da identifikujete ove pakete i odbacite ih koristeći standardna pravila zaštitnog zida:

OpenBSD> brzo blokirajte iz bilo kojeg OS NMAP-a
Linux> iptables -I INPUT -p tcp -m osf --žanr NMAP \
-j DROP

Iptables/netfilter firewall osf modul koristi bazu podataka o otisku prsta koju su kompajlirali i ažurirali OpenBSD programeri (/etc/pf.os), tako da bi oba ova pravila trebala dati iste rezultate. Takođe je zanimljivo da oni mogu efikasno da se suprotstave funkciji detekcije OS-a uslužnog programa nmap ("-O" zastavica).

Sada smo zaštićeni od gotovo svih vrsta skeniranja, osim standardnog i glupog "-sT". Šta da radim s njim? To je zapravo jednostavno. Činjenicu skeniranja portova lako je uočiti jednostavnom analizom evidencije firewall-a. Ako je u kratkom vremenskom periodu bilo mnogo konekcija na razne portove, to znači da smo skenirani. Ostaje samo da se ova ideja prenese na pravila zaštitnog zida. Postoji odličan recept za iptables koji blokira sve koji su previše uporni u kucanju na neradne portove:

Borba protiv skeniranja sa iptables

# Provjerite lupanje na portovima koji ne rade (10 na sat)

--sekunde 3600 --broj pogodaka 10 --rttl -j POVRATAK
# Druga provjera kucanja na neradnim portovima (2 u minuti)
iptables -A INPUT -m nedavno --rcheck \
--sekunde 60 --broj pogodaka 2 --rttl -j POVRATAK
# Stavljamo adrese onih koji kucaju na listu
iptables -A INPUT -m nedavno --set
# Ispustite pakete od svih onih koji prekorače ograničenje za
broj priključaka
iptables -P INPUT -j DROP

Instaliranjem paketa xtables-addons, koji sadrži razvoj patch-omatic projekta, dobićemo pristup PSD (Port Scan Detect) modulu, implementiranom po slici i sličnosti demona scanlogd. Svi prethodni redovi mogu se lako zamijeniti jednostavnim pravilom:

# iptables -A INPUT -m psd -j DROP

Nažalost, u filterima paketa ipfw i pf nema ništa slično, ali to nije problem, jer se PortSentry daemon i scanlogd dobro suprotstavljaju skeniranjem portova.

Zabrana Icmp poruka

Također je dobra praksa zabraniti ICMP poruke koje bi mogle otkriti dodatne informacije o hostu ili se koristiti za izvođenje različitih zlonamjernih radnji (na primjer, modificiranje tablice usmjeravanja). Ispod je tabela koja navodi moguće tipove ICMP poruka:

Vrste ICMP poruka

  • 0 - eho odgovor (eho odgovor, ping)
  • 3 - odredište nedostupno (primatelj je nedostupan)
  • 4 - gašenje izvora (prigušivanje izvora, šaljite pakete sporije)
  • 5 - preusmjeravanje
  • 8 - eho zahtjev (eho zahtjev, ping)
  • 9 - reklama rutera
  • 10 - traženje rutera
  • 11 - premašeno je vrijeme života (istok životnog vijeka paketa)
  • 12 - IP zaglavlje loše (netačno zaglavlje IP paketa)
  • 13 - zahtjev za vremensku oznaku (zahtjev za vrijednost brojača vremena)
  • 14 - odgovor vremenske oznake (odgovor na zahtjev za vrijednost brojača vremena)
  • 15 - zahtjev za informacijama
  • 16 - informativni odgovor (odgovor na zahtjev za informacijama)
  • 17 - zahtjev za maskom adrese (zahtjev za mrežnu masku)
  • 18 - odgovor na masku adrese (odgovor na zahtjev mrežne maske)

Kao što vidite, odgovaranje na neke ICMP poruke može rezultirati otkrivanjem nekih informacija o hostu, dok druge mogu rezultirati modifikacijom tablice usmjeravanja, pa ih je potrebno onemogućiti.

Tipično, ICMP porukama 0, 3, 4, 11 i 12 je dozvoljen izlaz u vanjski svijet, dok se samo 3, 8 i 12 prihvataju kao ulaz Evo kako se to implementira u različitim zaštitnim zidovima:

Zabrana opasnih ICMP poruka

Linux> iptables -A INPUT -p icmp\
-icmp-tip 3,8,12 -j PRIHVATI
Linux> iptables -A IZLAZ -p icmp\
-icmp-tip 0,3,4,11,12 -j PRIHVATI
FreeBSD> ipfw add dozvoli icmp \
od bilo kojeg do $outif u \
preko $outif icmptype 3,8,12
FreeBSD> ipfw add dozvoli icmp \
od $outif do bilo kojeg izlaza \
preko $outif icmptype 0,3,4,11,12
OpenBSD> prođite u inet proto icmp \
od bilo kojeg do $outif \
icmp-type (3, 8, 12) čuva stanje
OpenBSD> proslijediti inet proto icmp \
od $outif do bilo kojeg \
icmp-type (0, 3, 4, 11, 12)\
zadržati stanje

Ako želite, možete blokirati sav ICMP promet, uključujući ping zahtjeve, ali to može utjecati na ispravan rad mreže.

Brute force

Izviđajući informacije o otvoreni portovi i OS, napadač pokušava da prodre u sistem, što može biti zasnovano na iskorišćavanju rupa u uslugama ili nagađanju lozinki. Firewall nam neće pomoći da spriječimo mogućnost hakovanja servisa, ali je lako usporiti proces brutalnog nametanja lozinki. Da bi se to uradilo, koriste se mogućnosti za ograničavanje broja paketa koji dolaze na mašinu sa jedne IP adrese. Evo kako to učiniti koristeći iptables:

Brute force zaštita sa iptables

# Lanac za provjeru veza
iptables -N brute_check
# Blokirajte adresu ako imate više od 60
sekundi je pokrenuo više od 2 veze

--ažuriranje --sekundi 60\
--hitcount 3 -j DROP
# Ako nije, dozvolite vezu i
dodajte adresu na listu
iptables -A brute_check -m nedavno\
--set -j PRIHVATI
# Obrišite INPUT lanac
iptables -F INPUT
# Pošalji brute_check lancu
svima koji pokušavaju da se povežu
22. luka

--ctstate NOVO -p tcp \
--dport 22 -j brute_check
iptables -P INPUT DROP

Isto se može učiniti koristeći pf:

Zaštita od grube sile upotrebom pf

# Kreirajte tabelu za grube sile
sto uporno
# Blokirajte sve koji uđu u to
blokiraj brzo iz
# Stavite u tabelu bruteforcera sve koji iniciraju više od dvije veze na portu 22 u minuti
proslijediti $ext_if inet proto tcp u $outif \
port 22 flags S/SA zadrži stanje \
(max-src-conn-rate 60/2, \preopterećenje flush)

ipfw firewall nema dovoljno funkcionalnosti da bi se efikasno suprotstavio brute forceru, tako da njegovi korisnici moraju koristiti alate višeg nivoa kao što su specijalni PAM moduli, sistemi za detekciju upada i programi poput sshguarda.

Prevara

Spoofing (spoofing izvorna adresa paketa) se može koristiti za izvođenje DoS napada ili zaobilaženje firewall-a. U prvom slučaju lažiranje daje ogromnu prednost napadaču, jer značajno komplikuje odgovor na napad (pakete koji pristižu sa potpuno različitim adresama pošiljaoca nije tako lako klasifikovati i blokirati) i odlaže proces zatvaranja novih veza (obično lažna adresa je nedostupna, tako da se veza zatvara tek nakon isteka vremenskog ograničenja). Lažno varanje, koje se sprovodi radi zaobilaženja sigurnosnih sistema, manje je opasno i u većini slučajeva se može kontrolisati.

Često, kada blokiraju eksterne mrežne usluge hosta, administratori sistema ih ostavljaju otvorenim za određeni raspon adresa (na primjer, za povezivanje sa svog kućnog stroja). Nakon što je otkrio jednu od ovih adresa, napadač može formirati paket koristeći ovu adresu kao povratnu adresu i tako se „provući“ kroz zaštitni zid. Tada može pogoditi redni broj TCP paketa i osigurati da usluga koja vjeruje povratnoj adresi izvodi željenu akciju. Ovo je vrlo težak napad za implementaciju, koji ipak može izvesti kompetentan stručnjak, a ako je riječ o UDP protokolu, onda to može učiniti čak i haker.

Na sreću, lako se zaštititi od ovih napada. Dovoljno je ne otvarati portove nezaštićenih servisa prema vanjskom svijetu, a u slučaju hitne potrebe koristiti sigurnosne sisteme samih servisa (na primjer, ssh certifikate) ili mehanizam „kucanja porta“ (o čemu se govori na kraju clanak).

Situacija postaje složenija kada je u pitanju mrežni most koji razdvaja internu i eksternu mrežu (ili dvije lokalne mreže). Odnosi poverenja iznutra lokalna mreža- Uobičajena stvar. Usluge su dostupne svima, bez autentifikacije, enkripcije itd. - samo ukusan zalogaj za provalnika. Budući da je na vanjskoj mreži, on može saznati mrežnu masku interne mreže i generirati pakete s odgovarajućom povratnom adresom, što će dovesti do pristupa svim lokalnim resursima. Ovo je zaista opasna situacija, ali se može lako spriječiti pravilnim zaštitnim zidom ili konfiguracijom OS-a.

Da biste to učinili, dovoljno je zabraniti prolaz paketima čije povratne adrese odgovaraju onima koje se koriste u internoj mreži sa vanjskog sučelja:

Linux> iptables -A INPUT -i $outif \
-s 192.168.1.0/24 -j DENY
FreeBSD> ipfw dodaj zabrani ip sa \
192.168.1.0/24 na bilo koji preko $outif
OpenBSD> blokiraj $outif iz \
192.168.1.0/24 na bilo koji

Kao alternativnu ili dodatnu sigurnosnu mjeru, možete (pa čak i trebate) koristiti posebne ipfw i pf direktive i postavke Linux kernela:

Linux> echo 1 > /proc/sys/net/ipv4/conf/all/rp_filter
FreeBSD> ipfw dodati deny ip iz bilo kojeg u bilo koji nije antispoof u
OpenBSD> brzi antispoof za $ext_if

Ove tri naredbe daju iste rezultate. Svi paketi čije povratne adrese odgovaraju mrežnoj maski drugog interfejsa se odbacuju.

Prednosti IPTABLES-a

Na kraju članka ćemo pogledati nekoliko zanimljivih karakteristika iptables/netfilter koje mogu biti korisne u zaštiti vašeg servera od upada. Počnimo s mehanizmom za daljinsko upravljanje firewall-om, koji se zove “kucanje porta”. Njegova suština je prisiliti firewall da izvrši određene radnje nakon povezivanja na dati port. Ispod je primjer pravila koja otvaraju SSH port na 10 sekundi nakon kucanja na port 27520:

iptables i kucanje portova
# Lanac za provjeru veza sa zaštićenim portom
iptables -N kuc
# Dozvolite vezu ako je došlo do kucanja u posljednjem
10 sekundi
iptables -Knock -m nedavno --rcheck --sekundi 10\
-j PRIHVATI
# Obriši INPUT
iptables -F INPUT
# Dozvolite sve što se odnosi na već uspostavljene veze
iptables -A INPUT -m conntrack\
--ctstate ESTABLISHED,RELATED -j PRIHVATI
# Svi pokušaji otvaranja veze na port 22 se šalju
za provjeru u lancu udarca

-p tcp --dport 22 -j kucanje
# Dodajte adresu osobe koja kuca na port 27520 na listu
iptables -A INPUT -m conntrack --ctstate NOVO \
-p tcp --dport 27520 -m nedavno --set
# Kada kucate na susjedne portove, uklonite adresu sa liste
iptables -A INPUT -m conntrack --ctstate NOVO -p tcp \
-m više portova --dport 27519,27521 -m nedavno --ukloni
# Zabrani sve
iptables -P INPUT DROP

Treće pravilo sa kraja dodaje adresu osobe koja kuca na listu. Ako ista mašina pristupi portu 22 u roku od 10 sekundi od kucanja, veza će biti uspostavljena. Pretposljednje pravilo je zaštita od "preterivanja". Ako napadač pokuša da kuca na sve portove uzastopno u nadi da će jedan od njih otvoriti port 22, ovo pravilo će funkcionirati i njegova adresa će biti uklonjena sa liste odmah nakon što je pogodi.

Drugi iptables uslužni program distribuira se u paketu xtables-addons (patch-o-matic) i zove se TARPIT. Ovo je radnja (isto kao ACCEPT ili DENY) koja "visi" vezu, sprečavajući napadača da je zatvori. Veza čiji paketi padaju u TARPIT će biti uspješno uspostavljena, ali će veličina prozora biti nula, tako da udaljena mašina neće moći slati podatke, trošeći svoje resurse, a veza će se zatvoriti tek nakon isteka vremena. TARPIT se može koristiti u hitnim slučajevima za zaštitu od DoS-a:

# iptables -A INPUT -p tcp -m tcp -dport 80 -j TARPIT

Ili da zavede napadača i da se bori protiv skenera
portovi (samo normalno TCP skeniranje, "-sT"):

# iptables -A INPUT -p tcp -m tcp --dport 80 -j PRIHVATI
# iptables -A INPUT -p tcp -m tcp --dport 25 -j PRIHVATI
# iptables -A INPUT -p tcp -m tcp -j TARPIT

Ova pravila stvaraju izgled sistema u kojem su svi portovi otvoreni, ali ako pokušate da se povežete na bilo koji od njih (osim 80 i 25), veze će se zamrznuti. Isti rezultat, ali bez propadanja veza, može se postići korištenjem akcije DELUDE, koja ispravno odgovara na sve pokušaje pokretanja veze, ali šalje RST paket kao odgovor na sve ostale pakete. Da biste dodatno zbunili napadača, možete koristiti akciju HAOS, koja nasumično aktivira jednu od dvije gore opisane radnje.

zaključci

Uz dovoljno znanja i pažljivog čitanja dokumentacije, možete stvoriti vrlo jak bastion kojem se neće biti tako lako približiti. Moderni firewall, a posebno pf i iptables, nude brojne zaštite od nepozvanih gostiju, koje možete dobiti potpuno besplatno.

Linkovi

  • sf.net/projects/sentrytools - PortSentry
  • www.openwall.com/scanlogd - scanlogd

Borba protiv curenja resursa

Kada koristite radnju TARPIT, obavezno dodajte sljedeće pravilo u konfiguraciju, inače će "opuštene" veze pojesti resurse kada ih obradi conntrack podsistem:

# iptables -t raw -I PREUSMIRANJE -p tcp --dport 25 -j NOTRACK

Kako možete konfigurisati računare za Windows kontrola 2000/XP/2003 blokirati Ping pakete? Windows 2000/XP/2003 ima ugrađeni mehanizam IP sigurnosti koji se zove IPSec (IP sigurnost). IPSec je protokol dizajniran da zaštiti pojedinačne TCP/IP pakete dok se prenose preko mreže.

Međutim, nećemo ulaziti u detalje o funkcioniranju i dizajnu IPsec-a, jer osim enkripcije, IPSec također može zaštititi vaš server ili radnu stanicu mehanizmom sličnim firewall-u.

Blokiranje PING-a na jednom računaru

Da blokiramo sve PING pakete sa i na računar, moramo kreirati IPSec politiku koja će blokirati sav ICMP saobraćaj. Prvo provjerite da li vaš računar odgovara na ICMP zahtjeve:

Za postavljanje jednog računara potrebno je slijediti ove korake:

Hajde da konfigurišemolista IP filterskih lista i akcija filtera

  1. Otvorite MMC prozor (Start > Pokreni > MMC).
  2. Dodajte dodatak za IP sigurnost i upravljanje politikama.
  1. Odaberite koji će računar biti pod kontrolom ove politike - u našem slučaju to je lokalni računar. Kliknite na Zatvori, a zatim kliknite na Ok.
  1. Desni klik na IP sigurnosne politike u lijevoj polovini MMC konzole. Odaberite Upravljanje listama IP filtera i radnjama filtera.
  1. Ne morate konfigurirati ili kreirati IP filter za ICMP (protokol u kojem PING radi), jer takav filter već postoji po defaultu - Sav ICMP promet.

Međutim, možete konfigurirati proizvoljno složen IP filter, na primjer, zabraniti pingiranje vašeg računala sa svih IP adresa, osim s nekoliko specifičnih. U jednom od sljedećih članaka o IPSec-u pobliže ćemo pogledati kreiranje IP filtera, ostanite sa nama.

  1. U prozoru Upravljanje listama IP filtera i radnjama filtera, pregledajte svoje filtere i ako je sve u redu, kliknite na karticu Upravljanje akcijama filtera. Sada moramo dodati akciju filtera koja će blokirati određeni promet, kliknite Dodaj.
  1. U prvom prozoru dobrodošlice kliknite na Next.
  2. U polje Naziv radnje filtera unesite Blokiraj i kliknite Dalje.
  1. U Općim opcijama akcije filtera odaberite Blokiraj, a zatim kliknite Sljedeće.
  1. Vratite se na prozor Upravljanje listama IP filtera i radnjama filtera i pregledajte svoje filtere i ako je sve u redu, kliknite Zatvori. U svakom trenutku možete dodati filtere i akcije filtriranja.

Sljedeći korak je da konfigurirate IPSec politiku i primijenite je.

Konfiguriranje IPSe politike

  1. U istoj MMC konzoli kliknite desni klik pod IP sigurnosne politike i odaberite Kreiraj IP sigurnosnu politiku.
  1. Preskočite pozdrav čarobnjaka klikom na Dalje.
  2. U polje IP Security Policy Name unesite naziv koji odgovara slučaju, na primjer „Blokiraj PING“. Kliknite na Next
  1. U prozoru Zahtjevi sigurnu vezu Poništite izbor u polju za potvrdu Aktiviraj pravilo zadanog odgovora. Kliknite na Next
  1. Označite polje za potvrdu Uredi svojstva i kliknite na Završi.
  1. Moramo dodati IP filtere i akcije filtriranja u novu IPSec politiku. U prozoru Nova IPSec politika kliknite na Dodaj
  1. Kliknite na Next.
  2. U prozoru Tunnel Endpoint, provjerite je li odabrana zadana vrijednost i kliknite na Next.

Firewall na Linux sistemu kontrolira program iptables (za ipv4) i ip6tables (za ipv6). Ovaj cheat sheet pokriva najčešće načine korištenja iptablesa za one koji žele zaštititi svoj sistem od hakera ili samo razumjeti postavku.

Znak # znači da se naredba izvršava kao root. Otvorite konzolu s root pravima unaprijed - sudo -i na Debian sustavima ili su na drugim.

1. Prikaži status.

# iptables -L -n -v

Uzorak izlaza naredbe za neaktivni zaštitni zid:

Lanac INPUT (policy ACCEPT 0 paketa, 0 bajtova) pkts bajtova ciljna prot opt ​​in out izvorno odredište Lanac NASLJED (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

Za aktivni zaštitni zid:

Lanac INPUT (politika DROP 0 paketa, 0 bajtova) pkts bajtova ciljna prot opt ​​in out izvorno odredište 0 0 DROP all -- * * 0.0.0.0/0 0.0.0.0/0 stanje INVALID 394 43586 ACCEPT all -- * * 0.0. 0.0/0 0.0.0.0/0 stanje POVEZANO, UTVRĐENO 93 17292 PRIHVATI sve -- br0 * 0.0.0.0/0 0.0.0.0/0 1 142 PRIHVATI sve -- lo * 0.0.0.0/0 . Lanac PROSLJEĐIVANJE (politika DROP 0 paketa, 0 bajtova) pkts bajtova ciljni prot opt ​​in out izvorno odredište 0 0 PRIHVATI sve -- br0 br0 0.0.0.0/0 0.0.0.0/0 0 0 DROP all -- * * 0.0. 0.0/0 0.0 .0.0/0 stanje INVALID 0 0 TCPMSS tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp zastavice:0x06/0x02 TCPMSS spoj na PMTU 0 0 PRIHVATI0 sve -- * * 0/. 0 0.0.0.0 /0 stanje POVEZANO,USPOSTAVLJENO 0 0 wanin all -- vlan2 * 0.0.0.0/0 0.0.0.0/0 0 0 wanout all -- * vlan2 0.0.0.0/0 0.0.0.0/0 0 0 PRIHVATI -- br0 * 0.0.0.0/0 0.0.0.0/0 Chain OUTPUT (policy ACCEPT 425 paketa, 113K bajtova) pkts bajtova cilj prot opt ​​in out izvor odredište Chain wanin (1 reference) pkts bajtova cilj prot opt ​​in out izvorno odredište Chain wanout (1 reference) pkts bajtova cilj prot opt ​​in out izvorno odredište

gdje:
-L: Prikaži listu pravila.
-v: Prikaz dodatnih informacija. Ova opcija prikazuje naziv interfejsa, opcije, TOS maske. Također prikazuje sufikse "K", "M" ili "G".
-n: Prikaži IP adresu i port kao brojeve (bez upotrebe DNS serveri da definišemo imena. Ovo će ubrzati prikaz.)

2. Prikažite listu pravila s brojevima linija.

# iptables -n -L -v --brojevi-linija

Uzorak izlaza:

Chain INPUT (policy DROP) broj cilj prot opt ​​izvor odredište 1 DROP all -- 0.0.0.0/0 0.0.0.0/0 stanje NEVAŽEĆE 2 PRIHVATI sve -- 0.0.0.0/0 0.0.0.0/0 stanje POVEZANO, ESTABLIRANO 3 PRIHVATI sve -- 0.0.0.0/0 0.0.0.0/0 4 PRIHVATI sve -- 0.0.0.0/0 0.0.0.0/0 Lanac FORWARD (policy DROP) broj cilj prot opt ​​izvor odredište 1 PRIHVATI sve -- 0,0 .0.0/0 0.0.0.0/0 2 DROP all -- 0.0.0.0/0 0.0.0.0/0 stanje INVALID 3 TCPMSS tcp -- 0.0.0.0/0 0.0.0.0/0 tcp zastavice:0x06/0x02 za TC PMTU 4 PRIHVATI sve -- 0.0.0.0/0 0.0.0.0/0 stanje POVEZANO, UTVRĐENO 5 wanin all -- 0.0.0.0/0 0.0.0.0/0 6 wanout all -- 0.0.0.0/0 0.0.0.0/0 7 PRIHVATI sve - - 0.0.0.0/0 0.0.0.0/0 Chain OUTPUT (policy ACCEPT) num cilj prot opt ​​izvor odredište Lanac wanin (1 reference) num cilj prot opt ​​izvor odredište Chain wanout (1 reference) br. ciljna prot opt ​​izvorna destinacija

Možete koristiti brojeve redova za dodavanje novih pravila.

3. Prikažite lanac pravila INPUT ili OUTPUT.

# iptables -L INPUT -n -v
# iptables -L IZLAZ -n -v --brojevi-linija

4. Zaustavite, pokrenite, ponovo pokrenite zaštitni zid.

Silama samog sistema:
# usluga ufw stop
# servis ufw start

Također možete koristiti iptables komande da zaustavite firewall i uklonite sva pravila:
# iptables -F
# iptables -X
# iptables -t nat -F
# iptables -t nat -X
# iptables -t mangl -F
# iptables -t mangl -X
# iptables -P ULAZ PRIHVATI
# iptables -P PRIHVATI IZLAZ
# iptables -P PRIHVATI NASLJED

gdje:
-F: Isprazni sva pravila.
-X: Izbrišite lanac.
-t table_name: Odaberite tablicu (nat ili mangle) i uklonite sva pravila.
-P: Odaberite zadane radnje (kao što su DROP, REJECT ili ACCEPT).

5. Izbrišite pravila zaštitnog zida.

Za prikaz broja reda s postojećim pravilima:

# iptables -L IZLAZ -n --brojevi redova
# iptables -L IZLAZ -n --brojevi-linija | manje
# iptables -L IZLAZ -n --brojevi-linija | grep 202.54.1.1

Hajde da dobijemo listu IP adresa. Samo pogledajte broj na lijevoj strani i izbrišite odgovarajući red. Na primjer, za broj 3:
# iptables -D INPUT 3

Ili pronađite izvornu IP adresu (202.54.1.1) i uklonite je iz pravila:
# iptables -D INPUT -s 202.54.1.1 -j DROP

gdje:
-D: Uklonite jedno ili više pravila iz lanca.

6. Dodajte pravilo u zaštitni zid.

Da bismo dodali jedno ili više pravila u lanac, prvo prikazujemo listu koristeći brojeve redova:
# iptables -L INPUT -n --brojevi-linija

Uzorak izlaza:

Lanac INPUT (policy DROP) broj cilj prot opt ​​izvor odredište 1 DROP all -- 202.54.1.1 0.0.0.0/0 2 PRIHVATI sve -- 0.0.0.0/0 0.0.0.0/0 stanje NOVO, ESTABLIRANO

Da biste umetnuli pravilo između redova 1 i 2:
# iptables -I INPUT 2 -s 202.54.1.2 -j DROP

Provjerimo da li je pravilo ažurirano:
# iptables -L INPUT -n --brojevi-linija

Izlaz će biti ovakav:

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 -- 202.54.1.2 0.0.0.0/0 3 ACCEPT all -- 0.0.0.0/0 0,0 0,0/0 stanje NOVO, ESTABLJENO

7. Sačuvajte pravila zaštitnog zida.

Preko iptables-save:
# iptables-save > /etc/iptables.rules

8. Vraćanje pravila.

Preko iptables-restore
# iptables-restore

9. Postavite zadane politike.

Da poništite sav promet:
# iptables -P INPUT DROP
# iptables -P IZLAZ DROP
# iptables -P NAPRIJED
# iptables -L -v -n

Nakon gornjih naredbi, niti jedan paket neće napustiti ovaj host.
# ping google.com

10. Blokirajte samo dolazne veze.

Da odbacite sve dolazne pakete koje niste inicirali, ali dozvolite odlazni saobraćaj:
# iptables -P INPUT DROP
# iptables -P NAPRIJED
# iptables -P PRIHVATI IZLAZ
# iptables -A ULAZ -m stanje --stanje NOVO,USPOSTAVLJENO -j PRIHVATI
# iptables -L -v -n

Odlazni paketi i oni koji su zapamćeni unutar uspostavljenih sesija su dozvoljeni.
# ping google.com

11. Resetujte adrese izolovanih mreža na javnoj mreži.

# iptables -A INPUT -i eth1 -s 192.168.0.0/24 -j DROP

Lista IP adresa za izolovane mreže:
10.0.0.0/8 -j (A)
172.16.0.0/12 (B)
192.168.0.0/16 (C)
224.0.0.0/4 (MULTICAST D)
240.0.0.0/5 (E)
127.0.0.0/8 (LOOPBACK)

12. Blokiranje određene IP adrese.

Da blokirate adresu napadača 1.2.3.4:
# iptables -A INPUT -s 1.2.3.4 -j DROP
# iptables -A INPUT -s 192.168.0.0/24 -j DROP

13. Blokirajte dolazne zahtjeve za portom.

Da blokirate sve dolazne zahtjeve na portu 80:
# iptables -A INPUT -p tcp --dport 80 -j DROP
# iptables -A INPUT -i eth1 -p tcp --dport 80 -j DROP

Za blokiranje zahtjeva za port 80 sa adrese 1.2.3.4:
# 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

14. Blokirajte zahtjeve na odlaznu IP adresu.

Da blokirate određenu domenu, saznajte njenu adresu:
# host -t na facebook.com

Zaključak: facebook.com ima adresu 69.171.228.40

Nađimo CIDR za 69.171.228.40:
#whois 69.171.228.40 | grep CIDR

zaključak:
CIDR: 69.171.224.0/19

Blokirajmo pristup 69.171.224.0/19:
# iptables -A IZLAZ -p tcp -d 69.171.224.0/19 -j ISPUSTI

Također možete koristiti domenu za blokiranje:
# iptables -A IZLAZ -p tcp -d www.facebook.com -j ISPUSTI
# iptables -A IZLAZ -p tcp -d facebook.com -j DROP

15. Snimite događaj i resetujte.

Za evidentiranje kretanja paketa prije resetiranja dodajte pravilo:

# 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

Hajde da proverimo dnevnik (podrazumevano /var/log/messages):
# rep -f /var/log/messages
# grep -i --color "IP SPOOF" /var/log/messages

16. Snimite događaj i resetujte (sa ograničenjem broja zapisa).

Da bismo izbjegli popunjavanje particije naduvanim dnevnikom, ograničavamo broj unosa pomoću -m. Na primjer, da snimite maksimalno 7 linija svakih 5 minuta:
# 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

16. Resetujte ili dozvolite saobraćaj sa određenih MAC adresa.

# iptables -A INPUT -m mac --mac-source 00:0F:EA:91:04:08 -j DROP
## *dozvoli samo za TCP port # 8080 sa mac adrese 00:0F:EA:91:04:07 * ##
# iptables -A INPUT -p tcp --destination-port 22 -m mac --mac-source 00:0F:EA:91:04:07 -j PRIHVATI

17. Dozvolite ili odbijte ICMP ping zahtjeve.

Da onemogućite ping:
# iptables -A INPUT -p icmp --icmp-tip echo-request -j DROP
# iptables -A INPUT -i eth1 -p icmp --icmp-tip echo-request -j DROP

Dozvolite određene mreže/hostove:
# iptables -A INPUT -s 192.168.1.0/24 -p icmp --icmp-tip echo-request -j PRIHVATI

Dozvoli samo dio ICMP zahtjeva:
### ** pretpostavlja da su zadane ulazne politike postavljene na DROP ** ###
# iptables -A INPUT -p icmp --icmp-tip echo-reply -j PRIHVATI
# iptables -A INPUT -p icmp --icmp-tip odredište-nedostupno -j PRIHVATI
# iptables -A INPUT -p icmp --icmp-tip vrijeme-premašeno -j PRIHVATI
## ** dozvoli nam da odgovorimo na zahtjev ** ##
# iptables -A INPUT -p icmp --icmp-tip echo-request -j PRIHVATI

18. Otvorite niz portova.

# iptables -A INPUT -m stanje --state NOVO -m tcp -p tcp --dport 7000:7010 -j PRIHVATI

19. Otvorite raspon adresa.

## dozvoli konekcije na port 80 (Apache) ako je adresa u rasponu od 192.168.1.100 do 192.168.1.200 ##
# iptables -A INPUT -p tcp --odredišni-port 80 -m iprange --src-opseg 192.168.1.100-192.168.1.200 -j PRIHVATI

## primjer za nat ##
# iptables -t nat -A POSTROUTING -j SNAT --to-source 192.168.1.20-192.168.1.25

20. Zatvorite ili otvorite standardne portove.

Zamijenite ACCEPT sa DROP da blokirate 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 PRIHVATI

## cups (usluga štampanja) udp/tcp port 631 za lokalnu mrežu ##
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 PRIHVATI

## sinhronizacija vremena preko NTP-a za lokalnu mrežu (udp port 123) ##
iptables -A INPUT -s 192.168.1.0/24 -m stanje --state NOVO -p udp --dport 123 -j PRIHVATI

## tcp port 25 (smtp) ##
iptables -A INPUT -m stanje --state NOVO -p tcp --dport 25 -j PRIHVATI

# portovi dns servera ##
iptables -A INPUT -m stanje --state NOVO -p udp --dport 53 -j PRIHVATI
iptables -A INPUT -m stanje --state NOVO -p tcp --dport 53 -j PRIHVATI

## http/https www port servera ##
iptables -A INPUT -m stanje --state NOVO -p tcp --dport 80 -j PRIHVATI
iptables -A INPUT -m stanje --state NOVO -p tcp --dport 443 -j PRIHVATI

## tcp port 110 (pop3) ##
iptables -A INPUT -m stanje --state NOVO -p tcp --dport 110 -j PRIHVATI

## tcp port 143 (imap) ##
iptables -A INPUT -m stanje --state NOVO -p tcp --dport 143 -j PRIHVATI

## Samba fajl server za lokalnu mrežu ##
iptables -A INPUT -s 192.168.1.0/24 -m stanje --state NOVO -p tcp --dport 137 -j PRIHVATI
iptables -A INPUT -s 192.168.1.0/24 -m stanje --state 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 --state NOVO -p tcp --dport 445 -j PRIHVATI

## proxy server za lokalnu mrežu ##
iptables -A INPUT -s 192.168.1.0/24 -m stanje --state NOVO -p tcp --dport 3128 -j PRIHVATI

## mysql server za lokalnu mrežu ##
iptables -I INPUT -p tcp --dport 3306 -j PRIHVATI

21. Ograničite broj paralelnih veza sa serverom za jednu adresu.

Za ograničenja se koristi modul connlimit. Da dozvoli samo 3 ssh veze po klijentu:
# iptables -A INPUT -p tcp --syn --dport 22 -m connlimit --connlimit-iznad 3 -j ODBIJAJ

Postavite broj HTTP zahtjeva na 20:
# iptables -p tcp --syn --dport 80 -m connlimit --connlimit-above 20 --connlimit-mask 24 -j DROP

gdje:
--connlimit-above 3: Određuje da se pravilo primjenjuje samo ako broj veza prelazi 3.
--connlimit-mask 24: Određuje mrežnu masku.

Pomoć oko iptablesa.

Da pronađete pomoć za iptables, koristite man:
$ man iptables

Da vidite pomoć za određene naredbe i ciljeve:
# iptables -j DROP -h

Provjeravam iptables pravilo.

Provjera otvorenih/zatvorenih portova:
# netstat -tulpn

Provjeravamo otvorenost/zatvorenost određene luke:
# netstat -tulpn | grep:80

Provjerimo da li iptables dozvoljava povezivanje na port 80:
# iptables -L INPUT -v -n | grep 80

Inače, otvorimo svima:
# iptables -A INPUT -m stanje --state NOVO -p tcp --dport 80 -j PRIHVATI

Provjerite koristeći telnet
$ telnet ya.ru 80

Možete koristiti nmap da provjerite:
$ nmap -sS -p 80 ya.ru

Iptables je odličan alat u rukama administratora. Ako se trebate lako i jednostavno zaštititi u desktop Ubuntu-u, onda trebate znati da postoji zgodan dodatak za konzole za iptables koji se zove UFW, a za njega postoji grafički program GUFW. Video materijal će vam pomoći da vaš Ubuntu učinite još sigurnijim.



Učitavanje...
Top