Articles

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.