Tässä oppaassa kerrotaan, kuinka määrität ja kuinka iptables-sääntöjä käytetään Ubuntu-järjestelmässä verkon suojaamiseksi. Olitpa aloittelija Linux-käyttäjä tai kokenut järjestelmänvalvoja, tästä oppaasta ja tavalla tai toisella opit jotain hyödyllistä iptablesista.
Iptables on esiasennettu Ubuntuun ja useimpiin Debian-pohjaisiin jakeluihin. Ubuntu myös pakkaa GUFW-palomuurin, graafisen vaihtoehdon, jota voit käyttää työskennellessäsi iptablesin kanssa.
MERKINTÄ: Tarvitset iptablesin käyttöä ja määritystä varten sudo-oikeudet järjestelmässäsi. Voit oppia lisää sudosta seuraavasta opetusohjelmasta.
Nyt kun tiedät mikä Iptables on, sukelkaamme sisään!
Kuinka iptablesia käytetään IPv4-liikenteen hallintaan?
Jos haluat käyttää Iptablesia IPv4-verkon ja liikenteen hallintaan, sinun on ymmärrettävä seuraava:
Iptables-komento
Iptables tarjoaa valikoiman vaihtoehtoja, joiden avulla voit mukauttaa ja virittää iptables-sääntöjä. Keskustellaan joitain näistä parametreista ja katsotaan, mitä ne tekevät.
MERKINTÄ: Voit määrittää joukon sääntöjä, jotka hallitsevat tiettyä osajoukkoa, joka tunnetaan nimellä iptables-ketjut.
Iptables-parametrit
Ennen kuin aloitamme iptables-sääntöjen luomisen ja määrittämisen, meidän on ensin ymmärrettävä iptablesin perusteet, kuten yleinen syntakse ja oletusargumentit.
Harkitse alla olevaa komentoa:
sudo iptables -I SYÖTTÖ -sarja 192.168.0.24 -j DROPYllä oleva komento käskee iptablesia luomaan säännön ketjuun. Sääntö pudottaa kaikki paketit IP-osoitteesta 192.168.0.24.
Tutkitaan komentoa rivi riviltä ymmärtääksesi sen paremmin.
- Ensimmäinen komento iptables kutsuu iptables komentorivin apuohjelmaa.
- Seuraava on -I argumentti, jota käytetään lisäykseen. Lisäysargumentti lisää säännön iptables-ketjun alkuun ja saa siten korkeamman prioriteetin. Jos haluat lisätä säännön ketjun tiettyyn numeroon, käytä -I-argumenttia ja numeroa, johon sääntö tulisi määrittää.
- -S-argumentti auttaa määrittämään lähteen. Siksi käytämme -s-argumenttia, jota seuraa IP-osoite.
- Parametri -j ja iptables määrittelee hypyn tiettyyn kohteeseen. Tämä vaihtoehto määrittää toiminnon, jonka Iptables suorittaa, kun on olemassa vastaava paketti. Iptables tarjoaa oletusarvoisesti neljä päätavoitetta, joihin kuuluvat: HYVÄKSY, PUDOT, LOKI ja Hylkää.
Iptables tarjoaa valikoiman parametreja, joiden avulla voit määrittää erilaisia sääntöjä. Eri parametreja, joita voit käyttää iptables-sääntöjen määrittämiseen, ovat:
Iptables-säännön parametri | Kuvaus |
---|---|
-s -lähde | Määritä lähde, joka voi olla osoite, isäntänimi tai verkon nimi. |
-p -protokolla | Määrittää yhteysprotokollan; esimerkiksi TCP, UDP jne. |
-d-määränpää | Määrittää kohteen, joka voi olla osoite, verkon nimi tai isäntänimi. |
-j -hypätä | Asettaa toiminnan, jonka iptables on suoritettava paketin löytämisen jälkeen. |
-o -out-käyttöliittymä | Asettaa käyttöliittymän, jonka kautta iptable lähettää paketin. |
-i -liitännässä | Asettaa verkkopakettien muodostamiseen käytetyn rajapinnan. |
-c -set-laskurit | Antaa järjestelmänvalvojan asettaa tavu- ja pakettilaskurit määritetylle säännölle. |
-g -goto-ketju | Parametri määrittää, että käsittelyä tulisi jatkaa käyttäjän asettamassa ketjussa palautuksen jälkeen. |
-f-fragmentti | Käskee iptablesia soveltamaan sääntöä vain fragmentoitujen pakettien toiseen ja seuraavaan fragmenttiin. |
Iptables-asetukset
Iptables-komento tukee monenlaisia vaihtoehtoja. Joitakin yleisiä ovat:
Vaihtoehto | Kuvaus |
---|---|
-A -liite | Lisää säännön määritetyn ketjun loppuun |
-D -poista | Poistaa säännön määritetystä ketjusta |
-F -huuhtelu | Poistaa kaikki säännöt yksi kerrallaan |
-L-lista | Näyttää kaikki määritetyn ketjun säännöt |
-Minä -aseta | Lisää sääntö määritettyyn ketjuun (välitetään numerona, kun numeroa ei ole määritetty; sääntö lisätään yläosaan) |
-C-tarkista | Kyselyt säännön vastaavuudesta; vaatimus tietyssä säännössä |
-v -verbose | Näyttää lisätietoja, kun sitä käytetään parametrin -L kanssa |
-N-uusi ketju | Lisää uuden käyttäjän määrittelemän ketjun |
-X -poista ketju | Poistaa tietyn käyttäjän määrittelemän ketjun |
Iptables-taulukot
Linux-ytimessä on oletustaulukot, joihin sisältyy joukko liittyviä sääntöjä. Näissä oletustaulukoissa on joukko oletusketjuja, mutta käyttäjät voivat muokata sääntöjä lisäämällä käyttäjän määrittämiä sääntöjä.
MERKINTÄ: Oletustaulukot riippuvat suuresti ytimen kokoonpanosta ja asennetuista moduuleista.
Tässä ovat oletusarvoiset iptables-taulukot:
1: Suodataulukot
Suodatustaulukko on oletustaulukko, joka sisältää ketjut, joita käytetään verkkopakettien suodattamiseen. Joitakin tämän taulukon oletusketjuja ovat:
Ketju | Kuvaus |
---|---|
Tulo | Iptables käyttää tätä ketjua kaikkiin järjestelmään saapuviin paketteihin, ts.e., paketit menevät lähiverkon pistorasioihin. |
Tuotos | Iptables käyttää lähtöketjua paikallisesti tuotettuihin paketteihin, ts.e., paketit menevät ulos järjestelmästä. |
Eteenpäin | Tätä ketjua käyttävät Iptables järjestelmän kautta reititettävät tai edelleenlähetetyt paketit. |
2: NAT-taulukot
NAT tai verkko-osoitetaulukko on reitityslaite, jota käytetään verkkopaketin lähde- ja kohde-IP-osoitteiden muokkaamiseen. NAT-taulukon pääkäyttö on kahden yksityisen osoitealueen verkon yhdistäminen julkiseen verkkoon.
NAT on kehitetty tukemaan todellisten IP-osoitteiden peittämistä, jolloin yksityiset IP-osoitealueet ulottuvat ulkopuoliseen verkkoon. Tämä auttaa suojaamaan sisäisten verkkojen yksityiskohtia julkisissa verkoissa.
NAT-taulukko otetaan käyttöön, kun paketti muodostaa uuden yhteyden.
Iptablesilla on oletustaulukko NAT-osoitteistusta varten. Tässä taulukossa on kolme pääketjua:
Ketju | Kuvaus |
---|---|
PREROUTING | Sallii pakettitietojen muokkaamisen ennen saapumista INPUT-ketjuun, jota käytetään saapuville paketeille |
LÄHTÖ | Varattu paikallisesti luotuihin paketteihin, ts.e., ennen verkon reititystä |
JÄLKETUOTE | Sallii lähtevien pakettien muokkaamisen - OUTPUT-ketjusta lähtevät paketit |
Alla oleva kaavio näyttää korkean tason yleiskatsauksen tästä prosessista.
Käytä alla olevaa komentoa nähdäksesi NAT-reititystaulukot.
iptables -t nat -n -v -L3: Mangle-taulukot
Mangle-taulukkoa käytetään pääasiassa pakettien erityiseen muokkaamiseen. Yksinkertaisesti sanottuna sitä käytetään verkkopaketin IP-otsikoiden muokkaamiseen. Pakettien muokkaaminen voi sisältää paketin TTL-arvon muuttamisen, kelvollisten verkkohyppyjen muuttamisen jne.
Taulukko sisältää seuraavat oletusketjut:
Ketju | Kuvaus |
---|---|
PREROUTING | Varattu saapuville paketeille |
JÄLKITUOTE | Käytetään lähteviin paketteihin |
TULO | Käytetään paketteihin, jotka tulevat suoraan palvelimelle |
LÄHTÖ | Käytetään paikallisiin paketteihin |
Eteenpäin | Varattu järjestelmän kautta reititetyille paketeille |
4: Raaka taulukot
Raakataulukon päätarkoitus on määrittää poikkeukset paketeille, joita ei ole tarkoitettu seurantajärjestelmän käsittelemiseksi. Raakataulukko asettaa NOTRACK-merkinnän paketeille, mikä kehottaa conntrack-ominaisuutta ohittamaan paketin.
Conntrack on Linux-ytimen verkko-ominaisuus, jonka avulla Linux-ydin voi seurata kaikkia verkkoyhteyksiä, jolloin ydin pystyy tunnistamaan verkkovirran muodostavat paketit.
Raakapöydässä on kaksi pääketjua:
Ketju | Kuvaus |
---|---|
PREROUTING | Varattu verkkoliitäntöjen vastaanottamille paketeille |
LÄHTÖ | Varattu paikallisten prosessien käynnistämille paketeille |
5: Turvallisuustaulukko
Tämän taulukon ensisijainen käyttötarkoitus on asettaa pakettiin merkitsevä sisäinen suojauksen parannus Linuxille (SELinux) suojausmekanismi. Suojausmerkki voidaan asettaa liitäntää tai pakettia kohden.
Sitä käytetään pakollisissa kulunvalvontasäännöissä ja se on toinen taulukko, jota käytetään suodatustaulukon jälkeen. Se tarjoaa seuraavat oletusketjut:
Ketju | Kuvaus |
---|---|
TULO | Varattu saapuville paketeille järjestelmään |
LÄHTÖ | Käytetään paikallisesti luotuihin paketteihin |
ETEENPÄIN | Käytetään järjestelmän kautta reititettyihin paketteihin |
Tarkastellessamme oletusarvoisia Iptables-sovelluksia, mennään askeleen pidemmälle ja keskustellaan siitä, miten työskennellä iptables-sääntöjen kanssa.
Kuinka työskennellä iptables-sääntöjen kanssa?
Iptables-sääntöjä sovelletaan nousevassa järjestyksessä. Tämä tarkoittaa, että ensin sovelletaan tietyn joukon ensimmäistä sääntöä, jota seuraa toinen, sitten kolmas ja niin edelleen, kunnes viimeinen.
Tämän toiminnon takia iptables estää sinua lisäämästä sääntöjä sarjaan parametrin -A avulla; sinun on käytettävä -I, jota seuraa numero tai tyhjentämällä se lisätäksesi luettelon yläosaan.
Näytetään Iptables
Voit tarkastella iptable-komentoja käyttämällä komentoa iptables -L -v IPv4: lle ja ip6tables -L -v IPv6: lle.
Lisätään sääntöjä
Jos haluat lisätä sääntöjä sarjaan, sinun on sijoitettava ne tarkkaan järjestykseen noudattaen saman ketjun sääntöjä. Voit tarkastella iptables-sääntöjen luetteloa yllä mainitulla komennolla:
sudo iptables -L -vEsimerkiksi, jotta voidaan lisätä sääntö, joka sallii saapuvat yhteydet porttiin 9001 TCP: n kautta, meidän on määritettävä säännön numero INPUT-ketjuun, joka noudattaa verkon liikennesääntöjä.
sudo iptables -I SYÖTTÖ 1 -p TCP --port 9001 -m tila --tila UUSI -j HYVÄKSYKun tarkastelet nykyisiä iptables-tiedostoja, sinun pitäisi nähdä uusi sääntö joukossa.
sudo iptables -L -v
Sääntöjen korvaaminen
Korvaustoiminto toimii samalla tavalla kuin lisäys, mutta se käyttää iptables -R -komentoa. Esimerkiksi, jos haluat muokata yllä olevaa sääntöä ja asettaa portin 9001 estämään, me:
sudo iptables -R INPUT 1 -p TCP --port 9001 -m-tila - state UUSI -j REJECTSäännön poistaminen
Säännön poistamiseksi välitämme säännön numeron. Esimerkiksi yllä olevan säännön poistamiseksi voimme määrittää seuraavasti:
sudo iptables -D TULO 1Useimmissa Linux-distroissa iptables on tyhjä joko IPv4: lle ja IPv6: lle. Siksi, jos et ole lisännyt mitään uutta sääntöä, saat samanlaisen tuloksen kuin alla on esitetty. Se on riskialtista, koska se tarkoittaa, että järjestelmä sallii kaiken saapuvan, lähtevän ja reititetyn liikenteen.
Tarkastellaan miten konfiguroidaan iptables:
Kuinka määrittää iptables?
IPptables-sääntöjen määrittämiseen on useita tapoja. Tässä osassa on esimerkkejä siitä, kuinka sääntöjä määritetään IP-osoitteiden ja porttien avulla.
Liikenteen estäminen ja salliminen satamien kautta
Voit käyttää tiettyä porttia estämään tai sallimaan kaiken liikenteen verkkoliitännässä. Harkitse seuraavia esimerkkejä:
sudo iptables -A INPUT -j ACCEPT -p TCP - määränpää-portti 1001 -i wlan0Yllä olevat komennot sallivat liikenteen portissa 1001 TCP wlan0-liitännällä.
sudo iptables -A TULO -j DROP -p TCP --kohde-portti 1001 -i wlan0Tämä komento tekee päinvastoin kuin yllä oleva komento, koska se estää kaiken liikenteen portissa 1001 wlan0: lla.
Tässä on komennon tarkka tarkastus:
- Ensimmäinen argumentti (-A) lisää uuden säännön taulukoketjun loppuun.
- INPUT-argumentti lisää määritetyn säännön taulukkoon.
- DROP-argumentti asettaa suoritettavan toiminnon vastaavasti ACCEPT ja DROP. Tämä tarkoittaa, että kun paketti sovitetaan yhteen, se pudotetaan.
- -p määrittelee protokollan, kuten TCP, ja sallii muiden protokollien liikenteen kulkevan.
- -kohde-portti asettaa säännön hyväksymään tai hylkäämään kaiken satamaan 1001 tarkoitetun liikenteen.
- -i
käskee iptablesin soveltamaan sääntöä wlan0-rajapinnalla tulevaan liikenteeseen.
MERKINTÄ: Iptables ei ymmärrä verkkoliitännän aliaksia. Siksi järjestelmässä, jossa on useampi kuin yksi virtuaalinen käyttöliittymä, sinun on määritettävä kohdeosoite manuaalisesti ja nimenomaisesti.
Esimerkiksi:
sudo iptables -A TULO -j DROP -p TCP --kohde-portti 1001 -i wlan0 -d 192.168.0.24IP-osoitteiden lisääminen sallittujen luetteloon ja mustalle listalle
Voit luoda palomuurisääntöjä iptablesin avulla. Yksi esimerkki on kaiken liikenteen pysäyttäminen ja verkkoliikenteen salliminen vain eksplisiittisistä IP-osoitteista.
Esimerkki:
iptables -A SYÖTTÖ -m-tila - tila PERUSTETTU, LIITTYVÄ -j HYVÄKSYiptables -A SYÖTTÖ -i lo -m kommentti - kommentti "Salli loopback-yhteydet" -j HYVÄKSY
iptables -A SYÖTTÖ -p icmp -m kommentti - kommentti "Anna Pingin toimia odotetulla tavalla" -j
HYVÄKSYÄ
iptables -A SYÖTTÖ -sarja 192.168.0.1/24 -j HYVÄKSYiptables -A SYÖTTÖ -sarja 192.168.0.0 -j HYVÄKSY
iptables -P INPUT DROP
iptables -P ETEENPUDOTUS
Ensimmäinen rivi asettaa säännön sallia kaikki lähteen IP-osoitteet 192: ssä.168.0.1/24 aliverkko. Voit myös käyttää CIDR: ää tai yksittäisiä IP-osoitteita. Seuraavassa komennossa asetamme säännön sallimaan kaiken olemassa oleviin yhteyksiin liitetyn liikenteen. Viimeisissä komennoissa asetamme käytölle, että INPUT ja FORWARD hylkäävät kaikki.
Iptablesin käyttäminen IPv6: lla
Iptables-komento toimii vain IPv4: ssä. Jos haluat käyttää iptablesia IPv6: ssa, sinun on käytettävä ip6tables-komentoa. Ip6tables käyttää raaka-, suodatin-, suojaus- ja mangle-taulukoita. IP6taulukoiden yleinen syntakse on samanlainen kuin iptables, ja se tukee myös yhteensopivia iptables-asetuksia, kuten liitä, poista jne.
Harkitse lisätietoja ip6tables-manuaalisten sivujen käyttämisestä.
Esimerkki iptables-verkkosuojaussääntöistä
Sopivien palomuurisääntöjen luominen riippuu pääasiassa järjestelmässä toimivasta palvelusta ja käytetyistä porteista. Tässä on kuitenkin joitain verkon kokoonpanosääntöjä, joita voit käyttää järjestelmän suojaamiseen:
1: Salli Loopback-rajapintaliikenne ja hylkää kaikki muista liitännöistä tulevat loopback-toiminnot
iptables -A SYÖTTÖ -i lo -j HYVÄKSY (Voit käyttää myös ip6taulukoita)iptables -TULO ! -minä lo -s 127.0.0.0 -j REJECT (myös ip6taulukot)
2: Hylkää kaikki ping-pyynnöt
iptables -A SYÖTTÖ -p icmp -m -tila --tila UUSI --icmp-tyyppi 8 -j Hylkää3: Salli SSH-yhteydet
iptables -A SYÖTTÖ -p tcp --portti 22 -m tila --tila UUSI -j HYVÄKSYNämä ovat esimerkkikomentoja, joita voit käyttää järjestelmän suojaamiseen. Kokoonpano riippuu kuitenkin suuresti siitä, mitä tai kenelle haluat käyttää erilaisia palveluita.
VAROITUS: Jos haluat poistaa IPv6: n kokonaan käytöstä, varmista, että poistat rivin kommentin, koska tämä hidastaa päivitysprosessia:
etusija :: ffff: 0: 0/96 100 löydetty tiedostosta / etc / gai.konf .
Tämä johtuu siitä, että APT-paketinhallinta ratkaisee peiliverkkotunnuksen IPv6: ssa apt-get-päivityksen vuoksi.
Iptables-sääntöjen käyttöönotto?
Voit ottaa iptable-tiedostot käyttöön Ubuntussa tai muussa Debian-pohjaisessa järjestelmässä aloittamalla luomalla kaksi tiedostoa, ip4 ja ip6, niiden IP-osoitteille.
Lisää kummassakin tiedostossa säännöt, jotka haluat ottaa käyttöön vastaavissa tiedostoissaan - IPv4-säännöt IP4-tiedostoon ja IPv6-säännöt IP6-tiedostoihin.
Seuraavaksi meidän on tuotava säännöt komennolla:
sudo iptables-palauta < /tmp/ip4 (replace filename for IPv6)Sitten voit tarkistaa, ovatko säännöt sovellettu, komennolla:
sudo iptables -L -vPika iptables-jatkuva opas
Ubuntu ja yleiset Debian-pohjaiset jakelut sisältävät iptables-pysyvän paketin, jonka avulla voit käyttää palomuurisääntöjäsi helposti uudelleenkäynnistyksen yhteydessä. Paketti sisältää tiedostoja, joiden avulla voit asettaa sääntöjä IPv4: lle tai IPv6: lle, ja niitä voidaan käyttää automaattisesti käynnistyksen yhteydessä.
Voit myös käyttää palomuurisääntöjä UFW: n tai GUFW: n avulla. Harkitse seuraavaa opetusohjelmaa oppiakseen UFW: n käytöstä.
Kuinka asentaa iptables-persistent?
Varmista, että järjestelmään on asennettu iptables-persistent. Käytä dpkg tarkistaaksesi, onko paketti asennettu.
Jos ei, käytä seuraavaa komentoa:
sudo apt-get install iptables-persistent
Sinua pyydetään kahdesti tallentamaan sekä nykyiset IPv4- että IPv6-säännöt. Tallenna molemmat säännöt napsauttamalla Kyllä.
Napsauta kyllä tallentaaksesi IPv6.
Kun asennus on valmis, tarkista, että sinulla on iptables-alihakemisto, kuten alla olevassa kuvassa näkyy.
Nyt voit käyttää sääntöjä.v4 ja säännöt.v6 lisätäksesi iptables-sääntöjä, ja iptables-persistent käyttää niitä automaattisesti. Tiedostot ovat yksinkertaisia tekstitiedostoja, joita voit helposti muokata millä tahansa valitsemallasi tekstieditorilla.
Johtopäätös
Tässä opetusohjelmassa olemme käsittäneet iptablesin perusteet. Aloitetaan työskentelystä iptablesin, peruskomentojen, oletusarvoisten iptables-taulukoiden ja parametrien kanssa.
Opitun perusteella sinun pitäisi pystyä käyttämään iptablesia luomaan palomuurisääntöjä, jotka auttavat suojaamaan järjestelmääsi.