iptables: Kuinka määrittää Linuxin palomuuri suojaamaan palvelintasi

iptables: Kuinka määrittää Linuxin palomuuri

iptables on palomuuri käytetään Linux-pohjaiset käyttöjärjestelmät. Vaikka viime vuosina meillä on oletuksena asennettuna nftables, voit silti käyttää iptables-syntaksia määrittääksesi palomuurin käyttöjärjestelmässämme, kuten Debianissa, Ubuntu ja jopa reitittimen palomuuri, jos se perustuu Linuxiin. Iptablesin tunteminen on erittäin tärkeää pitääksemme paikallisen verkkomme suojattuna tunkeutumisilta, koska iptables antaa meille mahdollisuuden sallia tai estää haluamamme liikenteen. Tänään tässä artikkelissa aiomme selittää, miten iptables toimii, ja edistyneitä käyttöesimerkkejä.

Iptablesin pääominaisuudet

iptables on ohjelmisto, joka toimii palomuurina tai palomuurina verkossamme. Se on erittäin tärkeä osa käyttöjärjestelmiä, ja se on erityisesti suunniteltu sallimaan valtuutettu pääsy ja estämään luvaton pääsy. Palomuuri muodostaa ohjauspisteen sekä saapuville että lähteville paketeille. Lisäksi on erittäin tärkeää ilmoittaa, että palomuuri suojaa eri verkkoja ylittävältä liikenteeltä, mutta se ei suojaa paikallista verkkoa saman aliverkon sisällä tapahtuvilta hyökkäyksiltä. .

iptables on palomuuri, joka on mukana Linux-järjestelmissä versiosta 2.4 lähtien, joten se on oletuksena sisäänrakennettu järjestelmiin, kuten Debian, Ubuntu, Linux Mint ja moniin muihin, vaikka tällä hetkellä nftablesia käytetään sisäisesti, koska iptablesia pidetään vanhana, vaikka nykyään iptables on edelleen laajalti käytössä Linux-järjestelmänhallinnan ja myös verkkohallinnon maailmassa.

Tässä palomuurissa on useita oletusarvoisesti luotuja taulukoita, joiden tarkoituksena on helpottaa huomattavasti erilaisten ketjujen ja sääntöjen lisäämistä. Erittäin tärkeä yksityiskohta on, että oletusarvoisesti meillä on kaikki asetettu "accept"-tilaan, eli kaikki liikenne on sallittua, liikenteen estävää sääntöä ei ole, joten aluksi tämä palomuuri on salliva, mutta voimme muuttaa oletuskäytäntöä hyvin helposti ja nopeasti.

Kun tiedämme tärkeimmät ominaisuudet, näytämme sinulle tämän palomuurin toiminnan ja arkkitehtuurin.

Toiminta ja arkkitehtuuri

Tämä palomuuri perustuu sääntöihin, jotka esittelemme peräkkäin, sen toiminta perustuu sääntöjen soveltamiseen, joiden toteuttamisesta palomuuri itse vastaa. Vaikka iptablesin käyttö saattaa aluksi tuntua yksinkertaiselta, jos haluat tehdä sen edistyneellä tavalla, se on monimutkaisempaa. Seuraavaksi näet yhteenvetokaavion iptablesin toiminnasta.

Iptables-rakenne perustuu taulukoihin, joista monet on jo luotu oletusarvoisesti. Taulukoiden sisällä on merkkijonot, joista olemme myös luoneet oletuksena. Lopuksi, ketjujen sisällä meillä on erilaisia ​​​​sääntöjä, jotka voimme määrittää. Seuraavassa kuvassa näet pienen kaavion siitä, miltä palomuurin arkkitehtuuri näyttäisi:

Oletuksena meillä on yhteensä neljä taulukkoa:

  • suodatinpöytä : se on oletustaulukko, jos emme määrittele taulukkoa säännön lisäämiseksi, se siirtyy aina suodatintaulukkoon. Tässä taulukossa meillä on yhteensä kolme oletusketjua, riippuen siitä, mikä meitä kiinnostaa, joudumme käyttämään yhtä tai toista ketjua: INPUT (nämä ovat paketteja saapuvaan suuntaan, itse palomuuriin), OUTPUT (ne ovat lähtevät paketit, palvelimelta ulos) ja FORWARD (käytetään suodattamaan paketteja, jotka kulkevat verkkoliittymästä toiseen).
  • Nat taulukko: tämä taulukko on vastuussa NAT:n tekemisestä, yksityisen IP:n muuttamisesta julkiseksi ja päinvastoin. NAT:ssa meillä on kolme ketjua: PREROUTING (muuttaa paketteja ennen niiden reitittämistä, tässä tehdään DNAT tai portin edelleenlähetys), POSTROUTING (muuttaa paketteja reitityksen jälkeen, tässä tehdään SNAT tai MASQUERADE) ja OUTPUT (määrittämän palomuurin luomat paketit NAT kulkee).
  • Mankeli taulukko: tämä taulukko on vastuussa pakettien muuttamisesta, siellä QoS on määritetty palvelun laatua, TCP-otsikoiden muuttamista varten jne. Tässä taulukossa on viisi ketjua: PREROUTING, INPUT, FORWARD, OUTPUT, POSTROUTING.
  • raaka taulukko – Tätä taulukkoa ei käytetä usein, koska paketit kulkevat ilman yhteyden tilaa. Meillä on ketju PREROUTING ja OUTPUT.

Seuraavassa kuvassa näet pienen yhteenvedon eri taulukoissa olevista ketjuista:

Toiminto säännön lisäämisen yhteydessä on seuraava:

  • Säännöillä, jotka lisäämme ketjuihin, on aina tavoite (-j säännössä).
  • Kun palomuuri vastaanottaa paketin, se tarkistaa, vastaako paketti sääntöä, jonka olemme käyttäneet. Jos se täsmää, kohdekomento suoritetaan, muussa tapauksessa se siirtyy seuraavaan sääntöön ketjun loppuun asti.
  • Säännöt tarkistetaan peräkkäisessä järjestyksessä ensimmäisestä viimeiseen. Järjestys on erittäin tärkeä, jos estämme kaiken ensin ja sallimme sitten jotain tarkempaa, estämme kaiken liikenteen ja tarkinta sääntöä ei tarkisteta.
  • Jos mikään sääntö ei täytä pakettia, käytetään ketjun politiikkaa, joka meillä on (globaali sääntö).

Eri sääntöjen tavoitteet ovat seuraavat:

  • ACCEPT: hyväksyy paketin ja siirtää sen seuraavalle tasolle, web-palvelimelle, SSH:lle, FTP:lle jne.
  • DROP: estää paketin eikä siirrä sitä seuraavalle tasolle.
  • QUEUE: on erityinen kohde, joka välittää paketin käyttäjätilan käsittelyyn tarkoitetussa jonossa. Tätä voidaan käyttää muiden ulkoisten ohjelmien suorittamiseen.
  • PALAUTUS: sillä on sama vaikutus kuin jos olisimme saavuttaneet ketjun loppuun. Jos sääntö oli jossakin oletusketjussa, ketjun käytäntö suoritetaan. Jos sääntö on käyttäjän määrittämässä ketjussa, se poistuu ja jatkuu ketjun läpi ennen hyppyä, juuri sen säännön jälkeen, jolla se hyppättiin.

Kun tiedämme kuinka se toimii ja sen arkkitehtuuri, näemme erilaisia ​​komentoja eri toimien suorittamiseksi.

 

Tärkeimmät komennot iptablesin käyttöön

Ensimmäinen asia, joka meidän on otettava huomioon tätä palomuuria määritettäessä, on se, että tarvitsemme pääkäyttäjän oikeudet erilaisten tilausten suorittamiseen. Niiden on ehdottomasti juostava, muuten se ei toimi. Seuraavissa komennoissa ei ole "sudoa", koska oletamme, että olet jo superkäyttäjä (sudo su).

Uusimmissa Linuxin versioissa ei ole mahdollista pysäyttää iptables-palvelua, jotta voimme sallia kaiken verkkoliikenteen ja jättää palomuurin oletusparametreilla, meidän on suoritettava seuraavat komennot:

  • sudo iptables -F
  • sudo iptables -X
  • sudo iptables -t nat -F
  • sudo iptables -t nat -X
  • sudo iptables -t mangle -F
  • sudo iptables -t mangle -X
  • sudo iptables -P INPUT ACCEPT
  • sudo iptables -P HYVÄKSY ETEENPÄIN
  • sudo iptables -P OUTPUT ACCEPT

Kun olemme tehneet tämän, palomuuri "nollataan" ja salli kaikki. Nyt kun tiedämme, kuinka se nollataan, katsotaanpa eri komennot.

 

Katso nykyiset taulukot

Jos haluat nähdä eri ketjujen ja sääntöjen sisällön tietyssä taulukossa, voit nähdä, miltä ne näyttäisivät:

  • iptables -t filter -list
  • iptables -t mangle -lista
  • iptables -t nat -lista
  • iptables -t raw -lista

 

Tärkeimmät argumentit ja miksi ne ovat

  • -t, –taulukkotaulukko Valitse haluamasi taulukko
  • -A, –lisää ketjun sääntömäärittely Lisäämme uuden säännön tiettyyn ketjuun
  • -C, –tarkista ketjun sääntömäärittely Tarkistamme, että tietyssä ketjussa on tietty sääntö
  • -D, –delete chain rule-specifikaatio Poistamme säännön, jonka laitamme tiettyyn ketjuun
  • -D, –delete chain rulenum Poistamme sääntönumeron X tietystä ketjusta
  • -I, –lisää ketju [sääntö] sääntömäärittely Lisäämme uuden ketjun numerolla tiettyyn taulukkoon
  • -R, –replace chain rulenum rule-specifikaatio Korvaa tietyn ketjun taulukossa, jota käytetään numeron siirtämiseen.
  • -L, –list [ketju] Näyttää listan ketjun säännöistä
  • -F, –flush [ketju] Tyhjennä kaikki säännöt tietystä ketjusta.
  • -Z, –nolla [ketju [sääntö]] Asettaa tietyn säännön laskurit nollaan.
  • -N, –uusi-ketju Luomme uuden ketjun tiettyyn taulukkoon
  • -X, –delete-chain [ketju] Poistamme tietyn ketjun (tyhjän) tietystä taulukosta
  • -P, –politiikkaketjun tavoite Käytämme oletuspolitiikkaa, se täyttyy, kun mikään ketjujen sääntö ei täyty.
  • -E, –rename-chain old-chain new-chain Nimeä aiemmin lisätty ketju uudelleen
  • -h, näytä apua
  • -v, –verbose Tuloste, jota käytetään yhdessä -L:n kanssa, jotta voidaan näyttää enemmän tietoa kuin -L-komento tarjoaa.
  • -n, -numeeriset IP-osoitteet ja porttinumerot näkyvät numeroina. Jos esimerkiksi suodatamme portin 80, tyypillisellä -L:llä tulee näkyviin www, ei 80.
  • -x, –tarkka Näyttää paketin ja tavulaskurin tarkan arvon sen sijaan, että käyttäisit arvoja K, M tai G.
  • –line-numbers Kun sääntöluettelo näytetään, se näyttää säännön tarkan numeron. Ihanteellinen käytettäessä –D:tä ja numeroa (poista) tai –I:tä ennen tai jälkeen mainitun säännön.

 

Pääehdot

  • -p , -protokollaprotokolla. Suodata paketti protokollan mukaan, määritetty protokolla voi olla: tcp, udp, Idplite, icmp, esp, ah, sctp.
  • -s , –lähdeosoite[/mask][,…] Paketin IP-lähdeosoite. Meillä voi olla IP tai aliverkko (ilmaisee maskin CIDR-muodossa). Voimme myös laittaa isäntänimiä (verkkotunnuksia, verkkosivustoja jne.), mutta se on huono idea, koska se ei ole tehokasta. Useita lähdeosoitteita voidaan määrittää (192.168.1.1,192.168.1.2, XNUMX), mutta se luo eri säännöt niiden täyttämiseksi.
  • -d , –kohdeosoite[/mask][,…] Paketin kohde-IP-osoite. Se käyttäytyy täsmälleen kuten -s.
  • -m , -ottelu. Määrittää, haluammeko kutsua iptablesin laajennettuja moduuleja tiettyjen toimien suorittamiseksi, kuten:
    • Aseta useita lähde- ja kohdeportteja (multiport-moduuli).
    • Ohjausliitännät (conntrack-moduuli).
    • Vältä raakaa voimaa (uusi moduuli, ihanteellinen SSH:lle).
    • Rajoita yhteyksien määrää (modulo limit ja connlimit).
    • IP-osoitealue (iprange).
  • -j , -hyppykohde. Määrittää säännön tavoitteen, jos haluamme hyväksyä, hylätä ja jopa välittää paketin toiseen ketjuun jatkokäsittelyä varten. Aina missä tahansa säännössä meillä on -j kertomaan sille, mitä haluamme tehdä. Jos emme lisää -j:tä, sääntö lisätään ja se laskee paketit, mutta se ei tee mitään. Jos käytämme -j:tä eteenpäin toiseen ketjuun, kun toinen ketju on valmis, se palaa alkuperäiseen.
  • -g , – meni ketjuun. Sitä käytetään välittämään liikenne toiseen ketjuun, mutta toisin kuin hyppy, se ei palaa alkuperäiseen ketjuun, josta se tuli.
  • -i , -käyttöliittymän nimi. Liittymän nimi, jonka kautta paketti vastaanotetaan. Se toimii vain syötemerkkijonoissa, kuten INPUT, FORWARD ja PREROUTING. Jos laitamme Se tarkoittaa kaikkea paitsi sitä käyttöliittymää. Jos laitamme +-merkin nimen loppuun, mikä tahansa käyttöliittymä, jossa on nimen alussa, nappaa sen tarkastettavaksi. Kuvitellaan eth0, eth1 ja eth2. Jos haluamme laittaa kaikki kolme, pelkkä eth+:n laittaminen riittää.
  • -o , –ulosliittymän nimi. Liittymän nimi, jonka kautta paketti lähtee. Se on voimassa vain tulostusmerkkijonoissa, kuten OUTPUT, FORWARD ja POSTROUTING.

 

Ehdot vain, jos käytät TCP:tä tai UDP:tä

Jos käytät TCP- tai UDP-protokollaa, saatat haluta suodattaa lähde- ja/tai kohdeportin numeron mukaan, jolloin voit käyttää kahta argumenttia:

  • –urheilu –lähde-portti. Valitse sallittavat tai estävät lähdeportit. Jos käytämme! sulkee pois.
  • –dport –kohde-portti. Valitse sallittavat tai estävät kohdeportit. Jos käytämme! sulkee pois.

Palomuurin edistyneelle määritykselle on monia muita ehtoja, mutta olemme jo listanneet perusehdot.

 

Aseta oletuskäytäntö

Käytäntöjä käytetään siten, että kun sääntöä ei löydy ketjusta, oletuskäytäntö suoritetaan. Kaikkien ketjujen oletuskäytäntö on ACCEPT, mutta vaihtoehtoja on kaksi: HYVÄKSY tai PUDOTA

-P, –politiikkaketjun kohde

Esimerkkejä:

  • iptables -P INPUT DROP
  • iptables -P Eteenpäin pudota
  • iptables -P TULOSTEN PUDOTUS

Tämän myötä internet loppuu, joten seuraavaksi meidän on alettava luoda sallivia sääntöjä.

Alla näet kaikki käytännöt eri taulukoissa:

  • iptables -t-suodatin -P (INPUT | OUTPUT | FORWARD) (ACCEPT | DROP)
  • iptables -P (INPUT | OUTPUT | EDELLEEN) (Hyväksy | PUDOTA)
  • iptables -t mangle -P (INPUT | OUTPUT | FORWARD | PREROUTING | POSTROUTING) (Hyväksy | PUDOTA)

 

Näytä palomuurin tila

Parametri -L näyttää määrittämämme säännöt. V antaa sinun saada lisätietoja yhteyksistä ja N palauttaa IP-osoitteet ja niitä vastaavat portit ilman, että DNS palvelin.

  • iptables -L -n -v

Tämä on yksi tärkeimmistä komennoista palomuurin tilan näkemiseksi.

 

iptablesin moduulit (-m vastaavuus).

 

moniporttinen

Se on iptablesin laajennus, joka antaa meille mahdollisuuden ryhmitellä samanlaiset säännöt eri TCP- ja UDP-porteilla yhdeksi. Multiportin avulla voit laittaa useita portteja ohitettuina, ja myös useita portteja peräkkäin, maksimi porttiargumentteja on 15. Esimerkki:

  • iptables –A TULO –p tcp –m moniportti –dports 80,81,1000:1200 –j HYVÄKSY

Tämän moduulin ansiosta meillä on mahdollisuus käyttää useita portteja samassa säännössä.

 

iprange

iprange antaa meille mahdollisuuden asettaa useita lähde- tai kohde-IP-osoitteita kerralla ilman, että meidän tarvitsee asettaa kymmeniä sääntöjä. Sen avulla voit myös laittaa sekä lähde- että kohde-IP:n, syntaksi on seuraava:

  • [!] – src-range ip-ip
  • [!]–dst-alue ip-ip

Tämän säännön toiminta on melko yksinkertaista, laitamme vain aloitus-IP:n ja loppu-IP:n.

 

Raja

Connlimit-moduuli vastaa IP-osoitteen tekemien samanaikaisten yhteyksien määrän rajoittamisesta, se on ihanteellinen yhteyksien määrän rajoittamiseen DoS:n välttämiseksi.

  • – rajoitus n asti. Tarkistamme, onko yhteyksien määrä yhtä suuri tai pienempi kuin N (silloin voimme sallia tai kieltää).
  • -connlimit-bove n . Tarkistamme, onko yhteyksien määrä suurempi kuin N (silloin voimme sallia tai kieltää).
  • –connlimit-mask prefix_length . Merkitsemme aliverkkoalueen mukaan (se on sama kuin isäntä, joka tekee 2 yhteyttä, kaksi samassa aliverkossa olevaa isäntä muodostaa kumpikin yhden yhteyden).
  • –connlimit-saddr. Käytä rajoitusta lähderyhmään, se on oletusarvo, jos mitään ei ole määritetty.
  • -connlimit-daddr. Sovelletaan rajoitusta kohderyhmään.

Oletetaan esimerkiksi, että haluamme sallia vain kaksi SSH-yhteyttä asiakasta kohti:

  • iptables -A INPUT -p tcp -dport 22 -m connlimit -connlimit-bove 2 -j DROP

Voimme kuitenkin tehdä täydentävän säännön, jossa hyväksytään enintään 2 yhteyttä.

 

jatka

Tätä moduulia käytetään yhteyksien seurantaan, sillä hallitaan pakettien tuloa ja ulostuloa ennen ja jälkeen yhteyden muodostamisen. Tässä moduulissa on useita vaihtoehtoja, mutta tärkein on -ctstate, jonka avulla voimme hyväksyä tai hylätä erityyppisiä paketteja. Ctstaten sisällä on useita osavaltioita, joista seuraavat erottuvat:

  • INVALID: Vastaanotettu paketti on virheellinen eikä kuulu mihinkään yhteyteen.
  • UUTTA: Uudet yhteydet, jotka on tehty tai jotka liittyvät yhteyteen, joka ei ole vielä kaksisuuntainen.
  • PERUSTETTU: Muodostuneet yhteydet, he käyvät läpi UUDEN ensin, koska he ovat saaneet vastauksen
  • LIITTYVÄT: Paketti, joka liittyy olemassa olevaan yhteyteen, mutta ei ole osa sitä, kuten passiivinen FTP.

Kuvitellaan, että haluamme käyttää mitä tahansa sivustoa, mutta emme halua, että kukaan ei käytä meitä.

  • iptables –P SIITÄNNÄT
  • iptables -A INPUT -m conntrack -ctstate PERUSTETTU, LIITTYVÄ -j HYVÄKSY

 

Raja

Rajoitusmoduulin avulla voimme rajoittaa sekä liikennettä että syslogiin kirjoitettavien lokien määrää yhteysyrityksinä. Sillä on kaksi pääargumenttia:

  • -raja N. Tämä argumentti määrittää keskimääräisten osumien enimmäismäärän sekunnissa (N/s), minuutissa (N/m), tunnissa (N/h) tai päivässä (N/d). N määrittää numeron
  • –rajapurske N. Ilmaisee pisimmän purskeen, joka voi tapahtua ennen raja-rajan tarkistamista.

Oletusarvo, jos mitään ei ole määritetty, on 3 ottelua tunnissa, 5:n purskeina. Kuvittele seuraava sääntö: "iptables -A INPUT -m limit -j LOG", toiminto on seuraava:

  • Kun tähän sääntöön osuu ensimmäisen kerran, ensimmäiset viisi pakettia kirjataan lokiin.
  • Myöhemmin kestää kaksikymmentä minuuttia ennen kuin paketti rekisteröidään uudelleen tällä säännöllä (3 ottelua 60 minuutin välillä vastaa 20 minuuttia, koska se on KESKIARVO).
  • Lisäksi joka XNUMX minuutti, joka kuluu ilman, että paketti saavuttaa sääntöä, purske hakee paketin.
  • Jos mitään ei tapahdu 100 minuuttiin, purske latautuu täyteen; sitten takaisin alkuperäiseen tilanteeseen.

 

viimeaikainen

Uusinta moduulia käytetään rajoittamaan yhteyksien määrää sekunnissa IP-tasolla. Tämä on ihanteellinen suojaamaan meitä SSH-porttiin kohdistuvilta hyökkäyksiltä, ​​koska hyökkääjä yrittää useita salasanoja. Jos esimerkiksi haluamme suojata SSH:ta, voimme suorittaa seuraavan säännön:

  • iptables -A INPUT -p tcp -dport 22 -m conntrack -ctstate UUSI -m viimeinen -joukko -nimi ssh -rsource
  • iptables -A INPUT -p tcp -dport 22 -m tila -tila UUSI -m viimeaikainen -rcheck -sekuntia 60 -osumamäärä 4 -nimi ssh -rsource -j DROP

Tämä sääntö sallii vain neljä yhteysyritystä 60 sekunnin sisällä, se on "liukuva" ikkuna.

 

NAT

Tämä palomuuri on myös vastuussa yhteytemme NAT:ista. Jotta voimme tehdä julkisen IP-osoitteen (tai rajapinnan, jolla on tämä julkinen IP-osoite) NAT:n, meidän on asetettava:

  • Staattinen SNAT: iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -o eth1 -j SNAT -to IP_eth1
  • Dynaaminen SNAT: iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -o eth1 -j MASQUERADE

Normaali asia on käyttää MASQUERADEa NAT:n tekemiseen riippumatta fyysisen tai loogisen liitännän IP-osoitteesta.

Porttien avaamiseksi meidän on lisättävä sääntö NAT-taulukon PREROUTING-ketjuun.

  • iptables -t nat -A PREROUTING -i eth1 -p tcp -dport 22 -j DNAT -määräpaikkaan 192.168.1.1

PREROUTING-taulukon avulla voimme myös muokata portteja lennossa, jotta jos saamme paketteja portissa 2121, voimme muuttaa sen portiksi 21.

  • iptables -t nat -A PREROUTING -i eth1 -p tcp –dport 2121 -j DNAT –määräpaikkaan 192.168.1.1:21

Kun tunnemme tämän palomuurin yksityiskohtaisesti, aiomme nähdä perusesimerkit ja myös edistyneimmät käyttöesimerkit.

 

Peruskäyttöesimerkkejä

Tämä palomuuri on erittäin täydellinen ja meillä on satoja komentoja, joita voimme suorittaa suorittaaksemme erilaisia ​​​​toimintoja. Tässä artikkelissa aiomme antaa sinulle joitain helposti ymmärrettäviä esimerkkejä tämän palomuurin ensimmäisestä lähestymistavasta.

Estä IP-osoite 192.168.1.10 saamasta yhteyttä palvelimellemme:

  • iptables -A INPUT -s 192.168.1.10 -j DROP

Estä IP-osoitteita 192.168.1.20, 192.168.1.30, 192.168.1.40, 192.168.1.50 saamasta viestiä palvelimellemme:

  • iptables -A INPUT -s 192.168.1.20,192.168.1.30,192.168.1.40,192.168.1.50 -j DROP

Estä koko 192.168.2.0/24-aliverkko kommunikoimasta palvelimellemme, lukuun ottamatta 192.168.2.20 IP-osoitetta, joka olisi sallittu:

  • iptables –A INPUT –s 192.168.2.20 –j HYVÄKSY
  • iptables –A INPUT –s 192.168.2.0/24 –j DROP

Estä IP-osoite 192.168.4.50, jotta emme voi muodostaa yhteyttä:

  • iptables –A OUTPUT –d 192.168.4.50 –j DROP

Estä IP-osoitteet 192.168.4.51 ja 192.168.4.52, jotta emme voi muodostaa yhteyttä:

  • iptables –A OUTPUT –d 192.168.4.51,192.168.4.52 –j DROP

Estä pääsy osoitteeseen www.google.es iptablesilta:

  • iptables –A OUTPUT –d www.google.es –j DROP

Haluamme estää pääsyn palvelimellemme MAC:lta 00:01:02:03:04:05, ja loput sallivat kaiken:

  • iptables -A TULO -m mac -mac-lähde 00:01:02:03:04:05 -j DROP

Haluamme sallia pääsyn palvelimellemme MAC-osoitteeseen MAC 00:01:02:03:04:06, ja loput kieltävät kaiken:

  • iptables -A TULO -m mac -mac-lähde 00:01:02:03:04:05 -j HYVÄKSY
    iptables -A SYÖTTÖ ​​-j DROP

Estä IP-osoite 192.168.1.10 pingatamasta palvelimeltamme:

  • iptables -A INPUT -s 192.168.1.10 -p icmp -j DROP

Estä IP-osoitteet 192.168.1.20, 192.168.1.30, 192.168.1.40, 192.168.1.50 palvelimeltamme pingistä (yksi sääntö):

  • iptables -A INPUT -s 192.168.1.20,192.168.1.30,192.168.1.40,192.168.1.50 -p icmp -j DROP

Estä koko 192.168.2.0/24-aliverkko, jotta ne eivät PING-lähetä palvelimellemme, paitsi IP-osoite 192.168.2.20, joka olisi sallittu:

  • iptables -A INPUT -s 192.168.2.20 -p icmp -j HYVÄKSY
    iptables -A INPUT -s 192.168.2.0/24 -p icmp -j DROP

Estä IP-osoite 192.168.4.50, jotta emme voi pingata sitä.

  • iptables -A OUTPUT -d 192.168.4.50 -p icmp -j DROP

Estä IP-osoitteet 192.168.4.51 ja 192.168.4.52, jotta emme voi pingata niitä.

  • iptables -A OUTPUT -d 192.168.4.51,192.168.4.52 -p icmp -j DROP

Estä pääsy osoitteeseen www.google.es iptablesilta.

  • iptables -A OUTPUT -d www.google.es -p icmp -j DROP

Kuten näet, toiminta on melko yksinkertaista säännöillä, jotka perustuvat IP-osoitteeseen alkuperän ja määränpään kanssa. Voisimme myös käyttää iprange-moduulia IP-osoitteiden määrittämiseen:

Estä useita IP-osoitteita 192.168.5.1 - 192.168.5.50 pingistämästä palvelimeltamme.

  • iptables -A OUTPUT -m iprange -dst-alue 192.168.5.1-192.168.5.50 -p icmp -j DROP

Voimme myös suodattaa ICMP-protokollan edistyneemmällä tavalla. Kuvitellaan, että meillä on käyttäjä, joka haluaa pingata minkä tahansa isäntäkoneen, mutta ei halua KETÄÄN voivan pingata häntä. Kuinka voimme tehdä sen iptablesilla, jos PING:llä itsessään on kaksisuuntainen viestintä?

  • iptables -A INPUT -s IP -p icmp -icmp-tyyppinen kaikupyyntö -j DROP

Estä kaikki saapuvat pääsyt eth0-liitännän kautta (vain) sallien näin eth1:n pääsyn.

  • iptables -A INPUT -i eth0 -j DROP
  • iptables -A SYÖTTÖ ​​-i eth1 -j HYVÄKSY

Estä lähtevä liikenne eth0-rajapinnassa (vain) sallien näin eth1:n pääsyn.

  • iptables -A OUTPUT -o eth0 -j DROP
  • iptables -A OUTPUT -o eth1 -j HYVÄKSY

Salli kaikki saapuva ja lähtevä liikenne eth0:ssa ja estä kaikki saapuva tai lähtevä liikenne eth1:ssä.

  • iptables -A SYÖTTÖ ​​-i eth0 -j HYVÄKSY
  • iptables -A OUTPUT -o eth0 -j HYVÄKSY
  • iptables -A INPUT -i eth1 -j DROP
  • iptables -A OUTPUT -o eth1 -j DROP

Jos haluat nähdä, miten TCP- ja UDP-protokollat ​​toimivat, tässä on joitain esimerkkejä:

Estä pääsy osoitteeseen www.google.es ja salli esimerkiksi kaikki muu (ping).

  • iptables -A OUTPUT -d www.google.es -p tcp -dport 80 -j DROP

Estä FTP-pääsy mihin tahansa IP-osoitteeseen tai verkkotunnukseen ja salli kaikki muu.

  • iptables -A OUTPUT -p tcp -dport 21 -j DROP

Estä SSH-pääsy IP-osoitteeseen 192.168.1.50 ja salli kaikki muu.

  • iptables -A OUTPUT -d 192.168.1.50 -p tcp -dport 22 -j DROP

Estä Telnetin pääsy 192.168.2.0-aliverkkoon ja salli kaikki muu.

  • iptables -A OUTPUT -d 192.168.2.0/24 -p tcp -dport 23 -j DROP

Estä 192.168.1.50 pääsy verkkopalvelimellemme.

  • iptables -A INPUT -s 192.168.1.50 -p tcp -dport 80 -j DROP

Estä 192.168.1.150 ja 192.168.1.151 pääsy SSH-palvelimellemme.

  • iptables -A INPUT -s 192.168.1.150,192.168.1.151 -p tcp -dport 22 -j DROP

Estä koko 192.168.2.0/24-aliverkon pääsy telnet-palveluumme

  • iptables -A INPUT -s 192.168.2.0/24 -p tcp -dport 23 -j DROP

Estä kaikkien pääsy OpenVPN-palvelimelle, paitsi IP-osoite 77.77.77.77, joka on sallittu.

  • iptables -A INPUT -s 77.77.77.77 -p tcp -dport 1194 -j HYVÄKSY
  • iptables -A SYÖTTÖ ​​-p tcp –tuki 1194 -j DROP

Estä DNS-pääsy 8.8.8.8:aan ja salli esimerkiksi kaikki muu (ping).

  • iptables -A OUTPUT -d 8.8.8.8 -p tcp -dport 53 -j DROP
  • iptables -A OUTPUT -d 8.8.8.8 -p udp -dport 53 -j DROP

Estä pääsy porttiin 1194 mille tahansa IP-osoitteelle tai verkkotunnukselle ja salli kaikki muu.

  • iptables -A INPUT -p udp -dport 1194 -j DROP

Meillä on DNS-palvelin palvelimellamme. Haluamme, että vain 192.168.1.0/24-aliverkon tietokoneet voivat kommunikoida sen kanssa ja estää kaikki muut pääsyt.

  • iptables -A INPUT -s 192.168.1.0/24 -p tcp -dport 53 -j HYVÄKSY
  • iptables -A INPUT -s 192.168.1.0/24 -p udp -dport 53 -j HYVÄKSY
  • iptables -A SYÖTTÖ ​​-p tcp –tuki 53 -j DROP
  • iptables -A INPUT -p udp -dport 53 -j DROP

Estä pääsy verkkopalvelimellemme IP-alueelta 192.168.100.0/24, joka tulee eth0-liittymästä.

  • iptables -A INPUT -s 192.168.100.0/24 -i eth0 -p tcp -dport 80 -j DROP

Estä pääsy ssh-palvelimellemme IP-alueelta 192.168.100.0/24, joka tulee eth1-liittymästä.

  • iptables -A INPUT -s 192.168.100.0/24 -i eth1 -p tcp -dport 22 -j DROP

 

Edistyneet käyttöesimerkit

Jos haluat oppia lisää iptablesista, tässä on joitain esimerkkejä, joissa käytämme connlimit-moduulia.

Salli vain 10 Telnet-yhteyttä asiakasta kohden.

  • iptables -A INPUT -p tcp -dport 23 -m connlimit -connlimit-bove 10 -connlimit-mask 32 -j DROP

Estä asiakkaan tekemä verkkoyhteys numeroon 5 asti (se ei ole kovin järkevää, mutta se on esimerkki).

  • iptables -A INPUT -p tcp -dport 80 -m connlimit -connlimit-upto 5 -connlimit-mask 32 -j DROP

Salli vain 10 Telnet-yhteyttä asiakasta kohden (tee se eri tavalla kuin yllä).

  • iptables -A INPUT -p tcp -dport 23 -m connlimit -connlimit-upto 10 -connlimit-mask 32 -j HYVÄKSY
  • iptables -A SYÖTTÖ ​​-p tcp –tuki 23 -j DROP

Salli vain 10 verkkoyhteyttä IP-alueella 10.0.0.0/8 ja estä, jos se ylittää tämän määrän.

  • iptables -A INPUT -s 10.0.0.0/8 -p tcp -dport 80 -m connlimit -connlimit-bove 10 -connlimit-mask 8 -j DROP

Salli vain 20 HTTP-yhteyttä jokaiselle asiakkaalle, heti kun se ylittyy, lähetämme TCP-nollauksen.

  • iptables -A INPUT -p tcp -dport 80 -m connlimit -connlimit-bove 20 -connlimit-mask 32 -j REJECT -hylkää-ja tcp-reset

Tai näin:

  • iptables -A INPUT -p tcp -syn -dport 80 -m connlimit -connlimit-bove 20 -connlimit-mask 32 -j REJECT -hylkää-tcp-reset

Kuten näette, tämä palomuuri on todella valmis, ja voimme tehdä paljon erittäin edistyneitä asetuksia hallitaksemme kaikkia saapuvia ja lähteviä yhteyksiä yksityiskohtaisesti.