Linux iptables palomuuri yksinkertaistettu esimerkkejä
edellisessä viestissä, puhuimme miten turvata Linux Server käyttäen karkaisu parhaita käytäntöjä. Jotkut ihmiset kysyivät minulta palomuuri-osiosta, joka oli lyhyt johdatus iptables-palomuuriin. Tänään keskustelemme yksityiskohtaisesti Linux iptables palomuuri ja miten turvata palvelinliikenteen käyttämällä että mahtava palomuuri.
Sisällysluettelo
Iptables on CentOS 7
Jos käytät CentOS 7: ää, huomaat, että firewalld hallitsee iptables, joten jos haluat palata iptables: iin, sinun on pysähdyttävä ja naamioitava firewalld.
$ systemctl stop firewalld$ systemctl mask firewalld
Asenna iptables-palvelu ja ota se käyttöön:
$ yum install iptables-services$ systemctl enable iptables
niin voit käynnistää sen:
$ systemctl start iptables
miten Linux-palomuuri toimii
Iptables-palomuuritoiminnot on rakennettu netfilter framework, joka on saatavilla Linux-ytimen paketteja suodatus.
Palomuurityyppejä
on olemassa kahdenlaisia palomuureja:
Stateless firewall process jokainen paketti on oma, se tarkoittaa, että se ei näe muita saman yhteyden paketteja.
tämän tyyppinen palomuuri välittää kaikista sen läpi kulkeneista paketeista, joten se tietää yhteyden tilan. Se antaa enemmän valvontaa liikenteeseen.
Netfilter sisältää taulukoita. Nämä taulukot sisältävät ketjuja, ja ketjut sisältävät yksittäisiä sääntöjä.
Jos paketti vastaa jotain sääntöä, iptables soveltaa sääntötoimintoa kyseiseen pakettiin.
toimet voivat olla: Hyväksy, Hylkää, Ohita tai siirrä paketti muihin sääntöihin lisää käsittelyä varten.
Netfilter voi käsitellä saapuvaa tai lähtevää liikennettä IP-osoitteen ja porttinumeron avulla.
iptables-komento hallinnoi ja määrittää Netfilterin.
ennen kuin alamme kirjoittaa palomuurikomentoja, meidän täytyy ymmärtää palomuurin rakennetta hieman, jotta voimme kirjoittaa palomuurisääntöjä helposti.
iptables-palomuuritaulukoissa
Netfilterissä on kolme taulukkoa, joissa voi olla käsittelysääntöjä.
iptables-suodatintaulukko on liikenteen käsittelyn päätaulukko.
toinen on Nat-taulukko, joka käsittelee NAT-sääntöjä.
kolmas pöytä on mankelipakettien mankelipöytä.
Taulukkoketjut
jokainen edellä mainittujen taulukoiden taulukko sisältää ketjuja; nämä ketjut ovat iptablesin sääntöjen säiliöitä.
suodatintaulukossa on eteenpäin -, Tulo-ja LÄHTÖKETJUT. Voit luoda mukautetun ketjun tallentaa sääntöjä sitä.
jos paketti on tulossa isännälle, iptables käsittelee sen SYÖTTÖKETJUN sääntöjen mukaan.
jos paketti on menossa toiseen isäntään, se tarkoittaa, että TULOSTUSKETJUN säännöt käsittelevät sen.
iptables käyttää ETUKETJUA sellaisten pakettien käsittelyyn, jotka ovat päässeet isäntään, mutta jotka on tarkoitettu toiseen isäntään.
Ketjukäytäntö
jokaisella suodatintaulukon ketjulla on käytäntönsä. Käytäntö on oletustoiminto, jonka iptables tekee.
politiikka voi olla pudota, hylätä ja hyväksyä.
hyväksy-käytäntö sallii pakettien läpäistä palomuurin. PUDOTUSKÄYTÄNTÖ pudottaa paketin ilmoittamatta siitä asiakkaalle. HYLKÄYSKÄYTÄNTÖ myös pudottaa paketin ja ilmoittaa siitä lähettäjälle.
turvallisuusnäkökulmasta kannattaa pudottaa kaikki isännälle tulevat paketit ja hyväksyä vain luotetuista lähteistä tulevat paketit.
lisäämällä iptables-säännöt
voit lisätä uuden säännön iptables-komennolla näin:
$ iptables -A INPUT -i eth1 -p tcp --dport 80 -d 1.2.3.4 -j ACCEPT
murretaan tämä komento palasiksi, jotta voimme ymmärtää kaiken siitä.
– a tarkoittaa, että lisäämme uuden säännön. Oletuksena iptables lisää kaikki uudet säännöt suodatintaulukkoon, ellet määritä toista taulukkoa.
– i-lippu määrittää laitteen, johon sääntöä sovelletaan. Jos et määritä laitetta, iptables soveltaa sääntöä kaikkeen saapuvaan liikenteeseen laitteista riippumatta.
– p-lippu määrittää käsiteltävän paketin protokollan, joka on meidän tapauksessamme TCP.
–dport-lippu määrittää kohdeportin, joka on 80.
– d määrittää kohteen IP-osoitteen, joka on 1.2.3.4. Jos kohdepaikan IP-osoitetta ei ole määritelty, sääntö koskisi kaikkea eth1: n saapuvaa liikennettä IP-osoitteesta riippumatta.
– j määrittää tehtävän toiminnon tai HYPPYTOIMINNON. Täällä me hyväksymme paketit hyväksymiskäytännön avulla.
yllä oleva sääntö sallii saapuvan HTTP-liikenteen, joka on portissa 80.
entä lähtevän liikenteen salliminen?
$ iptables -A OUTPUT -o eth1 -p tcp --sport 80 -j ACCEPT
voit lisätä tulostusketjuun sääntöjä-a-lipulla.
lähtevässä liikenteessä käytettävästä laitteesta käytetään-o-lippua.
– sport-lippu määrittää lähdeportin.
voit käyttää palvelun nimeä kuten http tai https Sportin tai dportin numeerisen porttinumeron sijaan. Kaikki palveluiden nimet ovat /etc / services-tiedostossa.
kannattaa käyttää palvelun nimeä porttinumeron sijaan, mikä helpottaa lukusääntöjen käyttöä.
iptables rules order
the iptables places new rules at the end of the chain. Voit lisätä sen alkuun käyttämällä-I-vaihtoehtoa.
sääntöjärjestyksellä on merkitystä, kuten näette nyt. Voit lisätä sääntösi juuri haluamaasi kohtaan käyttämällä I-lippua.
katso seuraavia sääntöjä ymmärtääksesi, miten sääntöjen järjestys vaikuttaa:
$ iptables -I INPUT 3 -i eth1 -p udp -j ACCEPT$ iptables -I INPUT 4 -i eth1 -p udp --dport 80 -j DROP
ensimmäinen sääntö hyväksyy kaiken UDP-liikenteen ET1: een, ja numero 3 on sääntöjärjestys.
toinen sääntö pudottaa satamaan 80 tulevan liikenteen.
ensimmäinen sääntö hyväksyy kaiken liikenteen, sitten toinen sääntö, jonka pitäisi pudottaa liikenne, ei tee mitään, koska iptables ohittaa liikenteen ensimmäisessä säännössä.
säännöissä pitäisi olla järkeä, sillä sääntöjen järjestys ketjussa ratkaisee.
listaa iptables-säännöt
voit luetella säännöt ketjussa käyttäen –l-lippua:
$ iptables -L INPUT
voit näyttää sääntöjen rivinumerot käyttämällä-rivinumeroita:
$ iptables -L INPUT --line-numbers
listassa näkyvät palveluiden nimet. Voit näyttää porttinumerot sen sijaan-n-valinnalla:
$ iptables -L INPUT -n --line-numbers
edellä mainittu sääntö nopeuttaa listausta, koska se estää iptables DNS-resoluutiota ja palveluhakuja.
voit luetella kaikkien ketjujen kaikki säännöt näin:
$ iptables -L -n --line-numbers
saadaksesi kuinka monta pakettia kukin sääntö käsittelee, voit käyttää-v-lippua:
$ iptables -L -v
Voit myös nollata laskurit käyttämällä-Z-lippua.
nyt voimme lisätä uuden säännön mihin tahansa ketjuun, voimme lisätä säännön tiettyyn järjestykseen ja voimme luetella säännöt mille tahansa ketjulle tai kaikille ketjuille, mutta entä säännön poistaminen?
sääntöjen poistaminen
voit poistaa säännön käyttämällä-D-lippua:
$ iptables -D INPUT -i eth1 -p tcp --dport 80 -d 1.2.3.4 -j ACCEPT
Tämä komento poistaa aiemmin määrittämäsi HTTP-säännön.
ennen kuin poistat säännön, Varmista vain säännön määrittely luettelemalla se ja poista se sitten.
säännön voi poistaa järjestysnumerolla sen sijaan, että kirjoittaisi sääntömäärittelyt.
$ iptables -D INPUT 2
tietyn ketjun kaikki säännöt voi poistaa käyttämällä-F-lippua, joka tarkoittaa kaikkien sääntöjen huuhtelua.
$ iptables -F INPUT
Jos unohdat mainita ketjun nimen käyttäessäsi-F-lippua, kaikki ketjun säännöt poistetaan.
korvaa säännöt
voit korvata olemassa olevat säännöt omalla säännölläsi käyttämällä-R-lippua:
$ iptables -R INPUT 1 -i eth1 -p tcp --dport httpht -d 1.2.3.4 -j ACCEPT
Tämä komento korvaa SYÖTTÖKETJUN ensimmäisen säännön kirjoitetulla säännöllä.
listaamalla tietty taulukko
listataksesi tietyn taulukon, käytä-t-lippua, jonka taulukon nimi on näin:
$ iptables -L -t nat
tässä listataan Nat-taulukon säännöt.
Iptables User Defined Chain
Jos haluat luoda käyttäjän määrittämän ketjun, käytä-n-lippua.
$ iptables -N MY_CHAIN
myös sen voi nimetä uudelleen käyttämällä-E-lippua.
$ iptables -E MY_CHAIN NEW_NAME
ja käyttäjän määrittämän ketjun voi poistaa käyttämällä-X-lippua.
$ iptables -X MY_CHAIN
Jos et mainitse ketjun nimeä käyttäessäsi-X-lippua, se poistaa kaikki käyttäjän määrittelemät ketjut. Et voi poistaa sisäänrakennettuja ketjuja, kuten INPUT ja OUTPUT.
uudelleenohjaus käyttäjän määrittelemään ketjuun
voit ohjata paketteja käyttäjän määrittelemään ketjuun, kuten sisäänrakennettuihin ketjuihin-J-lipulla.
$ iptables -A INPUT -p icmp -j MY_CHAIN
yllä oleva sääntö ohjaa kaiken ICMP-liikenteen ketjuun MY_CHAIN.
ketjujen oletuskäytännön asettaminen
voit käyttää-P-merkintää tietyn ketjun oletuskäytännön asettamiseen. Oletuskäytäntö voi olla Hyväksy, Hylkää ja pudota.
$ iptables -P INPUT DROP
joten nyt syöttöketju pudottaa kaikki tulevat paketit, ellei Kirjoita sääntöä, joka sallii mahdollisen saapuvan liikenteen.
syn tulvii
hyökkääjä lähettää SYN-paketteja vain suorittamatta TCP-kädenpuristusta, minkä seurauksena vastaanottavalla isännällä olisi paljon avattuja yhteyksiä, ja palvelimellasi tulee liian kiire vastata muille asiakkaille.
Voimme käyttää iptables-palomuurin rajamoduulia suojaamaan meitä SYN-tulvilta.
$ iptables -A INPUT -i eth1 -p tcp --syn -m limit --limit 10/second -j ACCEPT
tässä määritellään vain 10 SYN-pakettia sekunnissa. Voit säätää tätä arvoa verkon tarpeiden mukaan.
Jos tämä kuristaa verkkoasi, voit käyttää SYN-evästeitä.
Syn evästeet
In
/etc/sysctl.conf
tiedosto ja lisää tämä rivi:
net.ipv4.tcp_syncookies = 1
Tallenna ja lataa uudelleen.
$ sysctl -p
pudota virheelliset Tilapaketit
virheelliset tilapaketit ovat paketteja, jotka eivät kuulu mihinkään yhteyteen ja pudotat ne.
$ iptables -A INPUT -m state --state INVALID -j DROP
tämä sääntö pudottaa kaikki saapuvat virheelliset tilapaketit.
Drop hajanaisia paketteja
hajanaisia paketteja ovat rikkinäisiä paloja suurista epämuodostuneista paketeista, ja sinun tulee kirjoittaa säännöt niiden pudottamiseksi.
– f-lippu kertoo iptables-palomuurin valitsevan kaikki fragmentit. Joten jos et käytä iptables kuin reititin, voit pudottaa hajanaisia paketteja.
$ iptables -A INPUT -f -j DROP
Tallenna iptables-säännöt
Jos käynnistät palvelimesi uudelleen, menetät kaikki kirjoittamasi säännöt, joten miten jatkaa niitä?
voit tallentaa kaikki sääntösi iptables-save-komennolla, jos käytät Centosia tai Red Hatia.
iptables-save > /etc/sysconfig/iptables
CentOS 7: ssä voit tallentaa säännöt näin:
$ service iptables save
voit tallentaa tietyn taulukon kuten Vain suodatintaulukon:
$ iptables-save -t filter
myös iptables-restore voi palauttaa säännöt.
Debian-pohjaisissa distroissa voit käyttää iptables-persistent-pakettia sääntöjen tallentamiseen ja palauttamiseen.
Asenna se ensin:
$ apt-get install iptables-persistent
voit tallentaa ja palauttaa säännöt:
$ netfilter-persistent save
$ netfilter-persistent reload
toivon, että iptables-palomuuri on helppo. Tule takaisin.
Kiitos.
Likegeeksin perustaja. Olen työskennellyt Linux-järjestelmänvalvojana vuodesta 2010. Olen vastuussa ylläpitää, turvata, ja vianmääritys Linux-palvelimet useita asiakkaita ympäri maailmaa. Rakastan kirjoittaa shell ja Python skriptejä automatisoida työni.
Leave a Reply