Aloittelijan opas iptables, Linux-palomuuri

Iptables on erittäin joustava palomuuriohjelma, joka on rakennettu Linux-käyttöjärjestelmille. Olitpa aloittelija Linux-nörtti tai järjestelmänvalvoja, on todennäköisesti jokin tapa, jolla iptables voi olla sinulle hyvä käyttö. Lue, kun näytämme sinulle kuinka monipuolisin Linux-palomuuri määritetään.

Kuva ezioman .

Tietoja iptablesista

iptables on komentorivin palomuuriohjelma, joka sallii tai estää liikenteen käytäntöketjuilla. Kun yhteys yrittää muodostaa itsensä järjestelmässäsi, iptables etsii luettelosta sääntöä, joka vastaa sitä. Jos se ei löydä sitä, se käyttää oletustoimintoa.

iptables on melkein aina esiasennettu mihin tahansa Linux-jakeluun. Päivitä / asenna se vain hakemalla iptables-paketti:

sudo apt-get install iptables

On GUI-vaihtoehtoja iptable-ohjelmille, kuten Firestarter, mutta iptables ei todellakaan ole niin vaikeaa, kun sinulla on muutama komento alas. Haluat olla äärimmäisen varovainen määrittäessäsi iptables-sääntöjä, varsinkin jos olet SSH-palvelimessa, koska yksi väärä komento voi lukita sinut pysyvästi, kunnes se on korjattu manuaalisesti fyysisessä koneessa.

Ketjujen tyypit

iptables käyttää kolmea eri ketjua: syöttö, eteenpäin ja lähtö.

Input - Tätä ketjua käytetään ohjaamaan saapuvien yhteyksien toimintaa. Esimerkiksi, jos käyttäjä yrittää SSH: tä tietokoneellesi / palvelimellesi, iptables yrittää sovittaa IP-osoitteen ja portin syöttöketjun sääntöön.

Välitä - Tätä ketjua käytetään saapuville yhteyksille, joita ei tosiasiallisesti toimiteta paikallisesti. Ajattele reititintä - tietoja lähetetään aina siihen, mutta harvoin tosiasiallisesti se on tarkoitettu itse reitittimelle; tiedot välitetään juuri kohteeseen. Ellet tee jonkinlaista reititystä, NAT-koodausta tai jotain muuta järjestelmässäsi, joka vaatii edelleenlähetystä, et edes käytä tätä ketjua.

On yksi varma tapa tarkistaa, käyttääkö järjestelmäsi / tarvitsee etuketjua.

iptables -L -v

Yllä oleva kuvakaappaus on palvelimesta, joka on ollut käynnissä muutama viikko, eikä sillä ole rajoituksia saapuville tai lähteville yhteyksille. Kuten näette, syöttöketju on käsitellyt 11 Gt paketteja ja ulostuloketju 17 Gt. Toisaalta eteenpäin suuntautuvaa ketjua ei ole tarvittu yhden paketin käsittelemiseen. Tämä johtuu siitä, että palvelin ei tee mitään edelleenlähetystä tai että sitä käytetään läpivirtauslaitteena.

Lähtö - Tätä ketjua käytetään lähteviin yhteyksiin. Esimerkiksi, jos yrität pingata howtogeek.com-sivua, iptables tarkistaa sen ketjun ja selvittää, mitä sääntöjä pingiin ja howtogeek.comiin liittyy, ennen kuin se tekee päätöksen yhteysyrityksen sallimisesta tai estämisestä.

Varoitus

Vaikka ulkoisen isännän pingaus näyttää olevan jotain, joka tarvitsee vain kulkea ulostuloketjussa, pidä mielessä, että tietojen palauttamiseksi käytetään myös syöttöketjua. Kun käytät järjestelmän lukitsemiseksi iptablesia, muista, että monet protokollat ​​edellyttävät kaksisuuntaista viestintää, joten sekä tulo- että lähtöketjut on määritettävä oikein. SSH on yleinen protokolla, jonka ihmiset unohtavat sallia molemmissa ketjuissa.

Käytäntöketjun oletuskäyttäytyminen

Ennen kuin menet sisään ja määrität tiettyjä sääntöjä, sinun on päätettävä, mitä haluat kolmen ketjun oletuskäyttäytymisen olevan. Toisin sanoen, mitä haluat iptablesin tekevän, jos yhteys ei vastaa mitään olemassa olevia sääntöjä?

Suorita iptables -Lkomento nähdäksesi, mitä käytäntöketjusi ovat tällä hetkellä määritetty tekemään verraton liikenne .

Kuten näette, käytimme myös grep-komentoa antamaan meille puhtaamman tuotoksen. Tässä kuvakaappauksessa ketjut ovat tällä hetkellä ajatelleet hyväksyvän liikenteen.

Useammin kuin ei, haluat, että järjestelmä hyväksyy yhteydet oletuksena. Ellet ole muuttanut käytäntöketjun sääntöjä aiemmin, tämä asetus on jo määritettävä. Joko niin, tässä on komento hyväksyä yhteydet oletusarvoisesti:

iptables --policy INPUT ACCEPT


iptables --policy OUTPUT ACCEPT


iptables --policy FORWARD ACCEPT

Oletusarvoisesti hyväksymissääntöä käyttämällä voit iptablesin avulla kieltää tietyt IP-osoitteet tai porttinumerot samalla, kun jatkat kaikkien muiden yhteyksien hyväksymistä. Pääset näihin komentoihin hetkessä.

Jos haluat mieluummin kieltää kaikki yhteydet ja määrittää manuaalisesti, mitkä haluat sallia yhteyden muodostamisen, sinun tulee muuttaa ketjujen oletuskäytäntö pudotettavaksi. Tämän tekeminen olisi todennäköisesti hyödyllistä vain palvelimille, jotka sisältävät arkaluontoisia tietoja ja joilla on aina samat IP-osoitteet.

iptables --policy INPUT DROP


iptables --policy OUTPUT DROP


iptables --policy FORWARD DROP

Yhteyskohtaiset vastaukset

Kun oletusketjukäytännöt on määritetty, voit aloittaa sääntöjen lisäämisen iptablesiin, jotta se tietää mitä tehdä, kun se kohdistaa yhteyden tiettyyn IP-osoitteeseen tai porttiin. Tässä oppaassa käymme läpi kolme perustavanlaatuisinta ja yleisimmin käytettyä vastausta.

Hyväksy - Salli yhteys.

Pudota - Katkaise yhteys, toimi kuten koskaan ei tapahtunut. Tämä on parasta, jos et halua lähteen ymmärtävän, että järjestelmäsi on olemassa.

Hylkää - Älä salli yhteyttä, mutta lähetä virhe. Tämä on parasta, jos et halua tietyn lähteen muodostavan yhteyttä järjestelmään, mutta haluat heidän tietävän, että palomuuri estää heidät.

Paras tapa näyttää ero näiden kolmen säännön välillä on näyttää, miltä se näyttää, kun tietokone yrittää pingata Linux-konetta kullekin näistä asetuksista määritetyillä iptables-tiedostoilla.

Yhteyden salliminen:

Yhteyden katkaiseminen:

Yhteyden hylkääminen:

Tiettyjen yhteyksien salliminen tai estäminen

Kun käytäntöketjut on määritetty, voit nyt määrittää iptables sallimaan tai estämään tietyt osoitteet, osoitealueet ja portit. Näissä esimerkeissä asetamme yhteydet tilaan DROP, mutta voit vaihtaa ne tilaan ACCEPTtai REJECT, tarpeidesi mukaan ja kuinka määritit käytäntöketjut.

Huomaa: Näissä esimerkeissä aiomme iptables -Alisätä sääntöjä olemassa olevaan ketjuun. iptables alkaa luettelonsa yläosasta ja käy läpi jokaisen säännön, kunnes löytää sopivan. Jos haluat lisätä säännön toisen yläpuolelle, voit iptables -I [chain] [number]määrittää sen numeron luettelossa sen avulla.

Yhteydet yhdestä IP-osoitteesta

Tämä esimerkki näyttää, kuinka kaikki yhteydet estetään IP-osoitteesta 10.10.10.10.

iptables -A INPUT -s 10.10.10.10 -j DROP

Yhteydet useilta IP-osoitteilta

Tämä esimerkki näyttää, kuinka kaikki IP-osoitteet estetään 10.10.10.0/24-verkkoalueella. Voit määrittää IP-osoitteiden alueen verkkomaskilla tai tavallisella kauttaviivalla.

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

tai

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

Yhteydet tiettyyn porttiin

Tämä esimerkki osoittaa, kuinka SSH-yhteydet estetään 10.10.10.10.

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

Voit korvata “ssh” millä tahansa protokollalla tai portin numerolla. -p tcpOsa koodista kertoo iptables Millainen yhteys protokollan käyttötarkoituksia. Jos estät protokollan, joka käyttää UDP: tä TCP: n sijaan, se -p udpolisi tarpeen sen sijaan.

Tämä esimerkki osoittaa, kuinka SSH-yhteydet voidaan estää mistä tahansa IP-osoitteesta.

iptables -A INPUT -p tcp --dport ssh -j DROP

Yhteystilat

Kuten aiemmin mainitsimme, monet protokollat ​​edellyttävät kaksisuuntaista viestintää. Esimerkiksi, jos haluat sallia SSH-yhteydet järjestelmään, tulo- ja lähtöketjut tarvitsevat säännön. Mutta entä jos haluat vain, että järjestelmään saapuva SSH sallitaan? Eikö säännön lisääminen lähtöketjuun salli myös lähteviä SSH-yrityksiä?

Siellä syntyvät yhteystilat, jotka antavat sinulle mahdollisuuden sallia kaksisuuntainen viestintä, mutta sallia vain yhdensuuntaisten yhteyksien muodostamisen. Katsotaanpa tätä esimerkkiä, jossa SSH-yhteydet FROM 10.10.10.10 ovat sallittuja, mutta SSH-yhteydet kohtaan 10.10.10.10 eivät ole sallittuja. Järjestelmällä on kuitenkin lupa lähettää takaisin tietoja SSH: n kautta, kunhan istunto on jo muodostettu, mikä tekee SSH-viestinnästä mahdollista näiden kahden isännän välillä.

iptables -A INPUT -p tcp --dport ssh -s 10.10.10.10 -m state --state NEW,ESTABLISHED -j ACCEPT

iptables -A OUTPUT -p tcp --sport 22 -d 10.10.10.10 -m state --state ESTABLISHED -j ACCEPT

Muutosten tallentaminen

Iptables-sääntöihin tekemäsi muutokset hylätään seuraavan kerran, kun iptables-palvelu käynnistetään uudelleen, ellet tee komentoa muutosten tallentamiseksi. Tämä komento voi vaihdella jakelustasi riippuen:

Ubuntu:

sudo /sbin/iptables-save

Red Hat / CentOS:

/sbin/service iptables save

Tai

/etc/init.d/iptables save

Muut komennot

Luettele tällä hetkellä määritetyt iptables-säännöt:

iptables -L

-vVaihtoehdon lisääminen antaa sinulle paketti- ja tavutiedot, ja lisäämällä -nkaikki luetellaan numeerisesti. Toisin sanoen - isäntänimet, protokollat ​​ja verkot luetellaan numeroina.

Voit tyhjentää kaikki tällä hetkellä määritetyt säännöt antamalla huuhtelukomennon.

iptables -F