Hvernig á að setja upp Iptables eldvegg til að virkja fjaraðgang að þjónustu í Linux - Part 8


Við kynnum Linux Foundation vottunaráætlunina

Þú munt muna úr hluta 1 – Um Iptables í þessari LFCE (Linux Foundation Certified Engineer) röð sem við gáfum grunnlýsingu á því hvað eldveggur er: vélbúnaður til að stjórna pakkar sem koma inn og yfirgefa netið. Með \stjórna er í raun átt við:

  1. Til að leyfa eða koma í veg fyrir að ákveðnir pakkar komist inn eða yfirgefi netið okkar.
  2. Til að framsenda aðra pakka frá einum stað á netinu til annars.

byggt á fyrirfram ákveðnum forsendum.

Í þessari grein munum við ræða hvernig á að innleiða grunn pakkasíun og hvernig á að stilla eldvegginn með iptables, framenda við netfilter, sem er innfædd kjarnaeining sem notuð er fyrir eldvegg.

Vinsamlegast hafðu í huga að eldveggur er viðamikið efni og þessari grein er ekki ætlað að vera yfirgripsmikil leiðarvísir til að skilja allt sem þarf að vita um það, heldur sem upphafspunktur fyrir dýpri rannsókn á þessu efni. Hins vegar munum við endurskoða efnið í 10. hluta af þessari röð þegar við skoðum nokkur sérstök notkunartilvik eldveggs í Linux.

Þú getur hugsað um eldvegg sem alþjóðaflugvöll þar sem farþegaflugvélar koma og fara nánast allan sólarhringinn. Byggt á ýmsum skilyrðum, svo sem gildi vegabréfs einstaklings eða upprunalands hans (svo nefnd séu nokkur dæmi), getur hann eða hún fengið að fara til eða yfirgefa ákveðið land eða ekki.

Jafnframt geta flugvallarverðir gefið fólki fyrirmæli um að fara frá einum stað á flugvellinum til annars ef þörf krefur, til dæmis þegar það þarf að fara í gegnum tollgæslu.

Okkur gæti fundist flugvallarlíkingin gagnleg í restinni af þessari kennslu. Hafðu bara í huga eftirfarandi sambönd þegar við höldum áfram:

  1. Persónur = Pakkar
  2. Eldveggur = Flugvöllur
  3. Land #1 = Net #1
  4. Land #2 = Net #2
  5. Flugvallarreglur framfylgt af yfirmönnum = eldveggsreglur

Iptables – Grunnatriðin

Á lágu stigi er það kjarninn sjálfur sem \ákveður hvað á að gera við pakka byggðar á reglum sem eru flokkaðar í keðjur, eða setningar Þessar keðjur skilgreina til hvaða aðgerða ætti að grípa þegar pakki samsvarar viðmiðunum sem þær tilgreina.

Fyrsta aðgerðin sem iptables tekur mun felast í því að ákveða hvað á að gera við pakka:

  1. Samþykkja það (láta það fara í gegnum netið okkar)?
  2. Hafna því (koma í veg fyrir að það komist á netið okkar)?
  3. Áframsenda það (í aðra keðju)?

Bara ef þú varst að velta fyrir þér hvers vegna þetta tól er kallað iptables, þá er það vegna þess að þessar keðjur eru skipulagðar í töflur, þar sem síutaflan er þekktust og sú sem er notað til að innleiða pakkasíun með þremur sjálfgefnum keðjum:

1. INPUT keðjan sér um pakka sem koma inn á netið, sem eru ætluð fyrir staðbundin forrit.

2. OUTPUT keðjan er notuð til að greina pakka sem eru upprunnin í staðarnetinu, sem á að senda út.

3. FORWARD keðjan vinnur úr pakkanum sem á að senda á annan áfangastað (eins og þegar um er að ræða bein).

Fyrir hverja þessara keðja er sjálfgefin regla, sem kveður á um hvað eigi að gera sjálfgefið þegar pakkar passa ekki við neinar reglur í keðjunni. Þú getur skoðað reglurnar sem búnar eru til fyrir hverja keðju og sjálfgefna stefnu með því að keyra eftirfarandi skipun:

# iptables -L

Tiltækar reglur eru sem hér segir:

  1. SAMÞYKKJA → hleypir pakkanum í gegn. Allir pakkar sem passa ekki við neinar reglur í keðjunni eru leyfðar inn á netið.
  2. DROP → sleppir pakkanum hljóðlega. Allir pakkar sem passa ekki við neinar reglur í keðjunni koma í veg fyrir að komast inn á netið.
  3. HAFA → hafnar pakkanum og skilar upplýsandi skilaboðum. Þessi sérstaklega virkar ekki sem sjálfgefin stefna. Þess í stað er því ætlað að bæta við reglum um pakkasíun.

Þegar það kemur að því að ákveða hvaða stefnu þú munt innleiða þarftu að íhuga kosti og galla við hverja nálgun eins og útskýrt er hér að ofan - athugaðu að það er engin ein stærð -öll lausn.

Til að bæta reglu við eldvegginn skaltu kalla iptables skipunina sem hér segir:

# iptables -A chain_name criteria -j target

hvar,

  1. -A stendur fyrir Append (bættu núverandi reglu við enda keðjunnar).
  2. chain_name er annað hvort INNPUT, OUTPUT eða FORWARD.
  3. markmið er aðgerðin eða stefnan sem á að beita í þessu tilviki (SAMÞYKKJA, HAFNA eða SLIPPA).
  4. viðmið er sett af skilyrðum sem skoða á pakkana út frá. Það er samsett úr að minnsta kosti einum (líklegast fleiri) af eftirfarandi fánum. Valmöguleikar innan sviga, aðskildir með lóðréttri strik, eru jafngildir hver öðrum. Restin táknar valfrjálsa rofa:

[--protocol | -p] protocol: specifies the protocol involved in a rule.
[--source-port | -sport] port:[port]: defines the port (or range of ports) where the packet originated.
[--destination-port | -dport] port:[port]: defines the port (or range of ports) to which the packet is destined.
[--source | -s] address[/mask]: represents the source address or network/mask.
[--destination | -d] address[/mask]: represents the destination address or network/mask.
[--state] state (preceded by -m state): manage packets depending on whether they are part of a state connection, where state can be NEW, ESTABLISHED, RELATED, or INVALID.
[--in-interface | -i] interface: specifies the input interface of the packet.
[--out-interface | -o] interface: the output interface.
[--jump | -j] target: what to do when the packet matches the rule.

Við skulum líma allt þetta í 3 klassísk dæmi með því að nota eftirfarandi prófunarumhverfi fyrir fyrstu tvö:

Firewall: Debian Wheezy 7.5 
Hostname: dev2.gabrielcanepa.com
IP Address: 192.168.0.15
Source: CentOS 7 
Hostname: dev1.gabrielcanepa.com
IP Address: 192.168.0.17

Og þetta fyrir síðasta dæmið

NFSv4 server and firewall: Debian Wheezy 7.5 
Hostname: debian
IP Address: 192.168.0.10
Source: Debian Wheezy 7.5 
Hostname: dev2.gabrielcanepa.com
IP Address: 192.168.0.15

Við munum fyrst skilgreina DROP stefnu fyrir inntaksping í eldvegginn okkar. Það er, icmp pökkum verður sleppt hljóðlega.

# ping -c 3 192.168.0.15
# iptables -A INPUT --protocol icmp --in-interface eth0 -j DROP

Áður en haldið er áfram með HAFA hlutann munum við skola allar reglur úr INPUT keðjunni til að tryggja að pakkarnir okkar verði prófaðir með þessari nýju reglu:

# iptables -F INPUT
# iptables -A INPUT --protocol icmp --in-interface eth0 -j REJECT
# ping -c 3 192.168.0.15

Við munum takast á við OUTPUT keðjuna þar sem við sjáum um útleið:

# iptables -A OUTPUT --protocol tcp --destination-port 22 --out-interface eth0 --jump REJECT

Keyrðu eftirfarandi skipanir á NFSv4 þjóninum/eldveggnum til að loka höfnum 2049 og 111 fyrir alls kyns umferð:

# iptables -F
# iptables -A INPUT -i eth0 -s 0/0 -p tcp --dport 2049 -j REJECT
# iptables -A INPUT -i eth0 -s 0/0 -p tcp --dport 111 -j REJECT

Nú skulum við opna þessar hafnir og sjá hvað gerist.

# iptables -A INPUT -i eth0 -s 0/0 -p tcp --dport 111 -j ACCEPT
# iptables -A INPUT -i eth0 -s 0/0 -p tcp --dport 2049 -j ACCEPT

Eins og þú sérð gátum við sett upp NFSv4 hlutinn eftir að umferðin var opnuð.

Í fyrri dæmunum sýndum við hvernig á að bæta reglum við INPUT og OUTPUT keðjurnar. Ef við viljum setja þá inn í fyrirfram ákveðna stöðu ættum við að nota -I (hástafi i) rofann í staðinn.

Þú þarft að muna að reglur verða metnar hver á eftir annarri og að matið hættir (eða hoppar) þegar DROP eða SAMTYKJA stefna er samsvörun. Af þeirri ástæðu gætir þú fundið fyrir þér að þurfa að færa reglur upp eða niður í keðjulistanum eftir þörfum.

Við munum nota léttvæg dæmi til að sýna fram á þetta:

Setjum eftirfarandi reglu,

# iptables -I INPUT 2 -p tcp --dport 80 -j ACCEPT

í stöðu 2) í INPUT keðjunni (þar með að færa fyrri #2 sem #3)

Með því að nota uppsetninguna hér að ofan verður umferð skoðuð til að sjá hvort henni sé beint á gátt 80 áður en gátt 2049 er leitað.

Að öðrum kosti geturðu eytt reglu og breytt markmiði reglna sem eftir eru í HAFA (með -R rofanum):

# iptables -D INPUT 1
# iptables -nL -v --line-numbers
# iptables -R INPUT 2 -i eth0 -s 0/0 -p tcp --dport 2049 -j REJECT
# iptables -R INPUT 1 -p tcp --dport 80 -j REJECT

Síðast en ekki síst þarftu að muna að til þess að eldveggsreglurnar séu viðvarandi þarftu að vista þær í skrá og endurheimta þær síðan sjálfkrafa við ræsingu (með því að nota þá aðferð sem þú velur eða þá sem er í boði fyrir dreifingu þína).

Að vista eldveggsreglur:

# iptables-save > /etc/iptables/rules.v4		[On Ubuntu]
# iptables-save > /etc/sysconfig/iptables		[On CentOS / OpenSUSE]

Endurheimt reglur:

# iptables-restore < /etc/iptables/rules.v4		[On Ubuntu]
# iptables-restore < /etc/sysconfig/iptables		[On CentOS / OpenSUSE]

Hér getum við séð svipaða aðferð (vistun og endurheimt eldveggsreglur með höndunum) með því að nota dummy skrá sem heitir iptables.dump í stað sjálfgefna eins og sýnt er hér að ofan.

# iptables-save > iptables.dump

Til að gera þessar breytingar viðvarandi á stígvélum:

Ubuntu: Settu upp iptables-persistent pakkann, sem mun hlaða reglunum sem vistaðar eru í /etc/iptables/rules.v4 skránni.

# apt-get install iptables-persistent

CentOS: Bættu eftirfarandi 2 línum við /etc/sysconfig/iptables-config skrána.

IPTABLES_SAVE_ON_STOP="yes"
IPTABLES_SAVE_ON_RESTART="yes"

OpenSUSE: Skráðu leyfðar gáttir, samskiptareglur, vistföng og svo framvegis (aðskilin með kommum) í /etc/sysconfig/SuSEfirewall2.

Nánari upplýsingar er að finna í skránni sjálfri, sem er mikið ummæli.

Niðurstaða

Dæmin sem gefin eru upp í þessari grein, þó að þau ná ekki yfir allar bjöllur og flautur af iptables, þjóna þeim tilgangi að sýna hvernig á að virkja og slökkva á umferð á komandi eða útleið.

Fyrir ykkur sem eruð aðdáendur eldveggs, hafið í huga að við munum endurskoða þetta efni með sértækari forritum í 10. hluta þessarar LFCE seríur.

Ekki hika við að láta mig vita ef þú hefur einhverjar spurningar eða athugasemdir.