Kuvaaja ezioman.
Tietoja iptablesista
iptables on komentorivipalomuuriohjelma, joka käyttää käytäntöketjuja sallimaan tai estämään liikennettä. Kun yhteys yrittää muodostaa itsensä järjestelmään, iptables etsii luettelonsa sääntöä vastaamaan sitä. Jos se ei löydä sitä, se käyttää oletustoimintoa.
iptables lähes aina esiasennettuna mihinkään Linux-jakeluun. Päivitä / asenna se vain hakeaksesi iptables-paketin:
sudo apt-get install iptables
Guta-vaihtoehtoja on iptables kuten Firestarter, mutta iptables ei ole kovin vaikeaa, kun sinulla on muutama komento alas. Haluat olla erittäin varovainen määrittäessäsi iptables-sääntöjä, varsinkin jos olet SSH'd palvelimelle, koska yksi väärä käsky voi lopettaa sinut pysyvästi, kunnes se on manuaalisesti kiinnitetty fyysiseen koneeseen.
Ketjutyypit
iptables käyttää kolmea eri ketjua: syöttö, eteenpäin ja ulostulo.
panos - Tätä ketjua käytetään ohjaamaan tulevien yhteyksien toimintaa. Jos käyttäjä esimerkiksi yrittää tehdä SSH: n tietokoneeseesi / palvelimellesi, iptables yrittää sovittaa IP-osoitteen ja portin syöttöketjun sääntöön.
Eteenpäin - Tätä ketjua käytetään tuleviin yhteyksiin, joita ei todellisuudessa toimiteta paikallisesti. Ajattele reitittimiä - tietoja lähetetään aina, mutta harvoin tosiasiallisesti tarkoitettu reitittimeen; tiedot siirretään vain kohteeseensa. Jollei teet jonkinlaista reititystä, NATingia tai jotain muuta järjestelmääsi, joka vaatii välittämistä, et edes käytä tätä ketjua.
On olemassa yksi varma tapa tarkistaa, tarvitsetko järjestelmää eteenpäin vai ketkä tarvitset eteenpäin.
iptables -L -v
ulostulo - Tätä ketjua käytetään lähtöyhteyksiin. Jos yrität esimerkiksi ping howtogeek.com, iptables tarkistaa sen tuotantoketjun nähdäksesi, mitä sääntöjä koskevat ping ja howtogeek.com ennen päätöksen tekemistä tai kieltämistä yhteysyrityksestä.
Varoitus
Vaikka ulkoisen isäntän pingaaminen näyttää jotain, joka tarvitsee vain ylittää tuotantoketjun, muista, että tietojen palauttamiseksi syöttöketjua käytetään myös. Kun käytät iptablesia järjestelmän lukitsemiseen, muista, että monet protokollat edellyttävät kaksisuuntaista viestintää, joten syöttö- ja lähtöketjut on määritettävä oikein. SSH on yhteinen protokolla, jonka ihmiset unohdetaan sallia molemmissa ketjuissa.
Politiikan ketjun oletuskäyttäytyminen
Ennen kuin menet ja määrität tiettyjä sääntöjä, sinun on päätettävä, mitkä haluat kolmen ketjun oletuskäyttäytymisestä. Toisin sanoen, mitä haluat iptablesilta, jos yhteys ei vastaa olemassa olevia sääntöjä?
Jos haluat nähdä, mitä käytäntöjasi on tällä hetkellä määritetty tekemättä vertaansa vailla olevaa liikennettä, avaa
iptables -L
komento.
Joskus enemmän kuin koskaan, sinun on hyvä, että järjestelmä hyväksyy yhteydet oletuksena. Ellet ole aiemmin tarkistanut käytäntöjen ketjun sääntöjä, tämä asetus olisi jo määritettävä. Joka tapauksessa, tässä on komento, jolla oletusarvoisesti hyväksy yhteydet:
iptables --policy INPUT ACCEPT
iptables --policy OUTPUT ACCEPT
iptables --policy FORWARD ACCEPT
Hyväksymissääntöä noudattaen voit käyttää iptablesia kieltämään tietyt IP-osoitteet tai porttinumeroita samalla, kun hyväksyvät edelleen kaikki muut yhteydet. Saamme nämä komennot hetken kuluttua.
Jos haluat mieluummin kieltää kaikki yhteydet ja määrittää manuaalisesti, mitkä yhteydet haluat sallia, sinun on muutettava ketjujen oletuskäytäntöä pudotettavaksi. Tämän tekeminen olisi luultavasti hyödyllistä vain palvelimille, jotka sisältävät arkaluonteisia tietoja ja joilla on vain samat IP-osoitteet.
iptables --policy INPUT DROP
iptables --policy OUTPUT DROP
iptables --policy FORWARD DROP
Yhteyskohtaiset vastaukset
Oletusketjupolitiikan asetusten mukaisesti voit aloittaa sääntöjen lisäämisen iptablesille, jotta se tietää, mitä tehdä, kun se havaitsee yhteyden tietystä IP-osoitteesta tai portista. Tässä oppaassa aiomme mennä läpi kolme kaikkein yksinkertaisinta ja yleisemmin käytettyä "vastausta".
Hyväksyä - Salli yhteys.
Pudota - Pudota yhteys, toimi niin kuin koskaan tapahtui. Tämä on parasta, jos et halua lähteen ymmärtävän, että järjestelmäsi on olemassa.
Hylätä - Älä salli yhteyttä, mutta lähetä virheen uudelleen. Tämä on parasta, jos et halua tietyltä lähteeltä yhteyttä järjestelmään, mutta haluat että he tietävät, että palomuuri estää heidät.
Paras tapa näyttää ero näiden kolmen säännön välillä on osoittaa, miltä näyttää, kun tietokone yrittää pingata Linux-koneeseen, jossa on jokin näistä asetuksista iptables.
Yhteyden salliminen:
Erityisten yhteyksien salliminen tai estäminen
Jos olet määrittänyt toimintoketjunsa, voit nyt määrittää iptables-sovelluksen sallimaan tai estämään tietyt osoitteet, osoitealueet ja portit. Näissä esimerkeissä asetamme yhteydet
DROP
mutta voit vaihtaa ne
ACCEPT
tai
REJECT
riippuen tarpeista ja siitä, miten olet määrittänyt toimintoketjunsa.
Huomaa: Näissä esimerkeissä aiomme käyttää
iptables -A
liittää sääntöjä olemassa olevaan ketjuun. iptables alkaa luettelonsa yläosasta ja kulkee kunkin säännön läpi, kunnes se löytää sen, että se vastaa. Jos haluat lisätä jonkin toisen säännön, voit käyttää sitä
iptables -I [chain] [number]
määrittää sen numeron, jonka pitäisi olla luettelossa.
Yhdistä yhdestä IP-osoitteesta
Tämä esimerkki näyttää, miten estetään kaikki IP-osoitteen 10.10.10.10 yhteydet.
iptables -A INPUT -s 10.10.10.10 -j DROP
Yhteydet useista IP-osoitteista
Tämä esimerkki näyttää, kuinka kaikki IP-osoitteet estetään 10.10.10.0/24-verkon alueella. Voit määrittää IP-osoitteiden alueen käyttämällä verkkopeaa tai vakiota viivaa.
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 satamaan
Tämä esimerkki näyttää, 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 protokolla- tai portinumerolla.
-p tcp
osa koodista kertoo iptablesille minkälainen yhteys protokolla käyttää. Jos olit estänyt protokollan, joka käyttää UDP: tä pikemminkin kuin TCP: tä, sitten
-p udp
olisi sen sijaan tarpeen.
Tämä esimerkki näyttää, kuinka estetään SSH-yhteydet mistä tahansa IP-osoitteesta.
iptables -A INPUT -p tcp --dport ssh -j DROP
Liitäntävaltiot
Kuten aiemmin mainitsimme, monet protokollat vaativat kaksisuuntaista viestintää. Jos haluat esimerkiksi sallia SSH-yhteydet järjestelmään, syöttö- ja tulostiketjut tarvitsevat lisäämään sääntöjä niihin. Mutta mitä vain haluat, että SSH tulee järjestelmäänsi sallimaan? Eikö lisäämällä sääntöä tuotantoketjuun sallivat myös lähtevät SSH-yritykset?
Siinä yhteydessä yhteysstatukset tulevat sisään, mikä antaa sinulle mahdollisuuden antaa kaksisuuntaista viestintää, mutta sallia vain yhden tapayhteyden muodostamisen. Katsokaa tätä esimerkkiä, jossa SSH-yhteydet 10.10.10.10 lähtien sallitaan, mutta SSH-yhteydet 10.10.10.10 eivät ole. Järjestelmä voi kuitenkin lähettää takaisin SSH: n tietoja niin kauan kuin istunto on jo vahvistettu, mikä mahdollistaa SSH-viestinnän 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
Tallenna muutokset
Muutokset, jotka teet iptables -sääntöihisi, romahtavat seuraavan kerran, kun iptables-palvelu käynnistyy uudelleen, ellet suorita komentokehotetta muutosten tallentamiseksi. Tämä komento voi vaihdella jakelusi mukaan:
ubuntu:
sudo /sbin/iptables-save
Red Hat / CentOS:
/sbin/service iptables save
Tai
/etc/init.d/iptables save
Muut komennot
Luettelo nykyisistä konfiguroiduista iptables-sääntöistä:
iptables -L
Lisäämällä
-v
vaihtoehto antaa sinulle pakettia ja tavua koskevia tietoja ja lisää
-n
luetellaan kaikki numeerisesti. Toisin sanoen - palvelimen nimet, protokollat ja verkot luetellaan numeroina.
Kaikkien tällä hetkellä määritettyjen sääntöjen tyhjentämiseksi voit antaa huuhtelukomennon.
iptables -F