Kuidas seadistada Iptablesi tulemüür teenustele kaugjuurdepääsu lubamiseks Linuxis - 8. osa


Tutvustame Linux Foundationi sertifitseerimisprogrammi

1. osast - Selle LFCE ( Linux Foundation Certified Engineer ) seeria Iptablesi kohta tuletate meelde, et andsime tulemüüri põhikirjelduse: haldamise mehhanism võrku tulevad ja sealt väljuvad paketid.\"Hallata" all mõtleme tegelikult:

  1. lubada või takistada teatud pakettide sisenemist meie võrku või sealt lahkumist.
  2. Muude pakettide edastamine võrgu ühest punktist teise.

põhineb etteantud kriteeriumidel.

Selles artiklis käsitleme, kuidas rakendada põhipakettide filtreerimist ja kuidas konfigureerida tulemüür iptablesiga, mis on netifiltri eesseade, mis on tulemüüriks kasutatav natiivne kernelmoodul.

Pange tähele, et tulemüür on ulatuslik teema ja see artikkel ei ole mõeldud põhjalikuks juhendiks selle kohta, mida sellest teada on, vaid pigem lähtepunktiks selle teema sügavamale uurimisele. Küll aga vaatame teemat uuesti selle seeria 10. osas , kui uurime mõningaid Linuxi tulemüüri konkreetseid kasutusjuhtumeid.

Tulemüürist võib mõelda kui rahvusvahelisest lennujaamast, kuhu reisilennukid tulevad ja lähevad peaaegu ööpäev läbi. Tuginedes mitmetele tingimustele, näiteks isiku passi kehtivusele või tema päritoluriigile (kui tuua mõned näited), võidakse tal lubada teatud riiki siseneda või sealt lahkuda.

Samal ajal saavad lennujaama ohvitserid suunata inimesi vajadusel liikuma lennujaama ühest kohast teise, näiteks kui neil on vaja läbida tolliteenused.

Lennujaama analoogia võib meile selle ülejäänud õpetuse ajal kasulik olla. Jätkates pidage meeles ainult järgmisi suhteid:

  1. Isikud = paketid
  2. tulemüür = lennujaam
  3. Riik nr 1 = Võrk nr 1
  4. Riik nr 2 = Võrk nr 2
  5. Ohvitseride poolt kehtestatud lennujaama eeskirjad = tulemüüri reeglid

Iptables - põhitõed

Madalal tasemel on tuum ise see, mis\"otsustab \" mida teha pakettidega, mis põhinevad reeglitel, mis on rühmitatud ahelatesse või lausetesse Need ahelad määratlevad, milliseid toiminguid tuleks teha, kui pakett vastab nende määratud kriteeriumidele.

Esimene iptablesi toiming seisneb selles, et otsustada, mida paketiga teha:

  1. Kas nõustute sellega (las see läbib meie võrgu)?
  2. Kas lükata see tagasi (takistada selle juurdepääsu meie võrgule)?
  3. Kas edastada (teisele ahelale)?

Igaks juhuks, kui mõtlete, miks seda tööriista nimetatakse iptables -iks, on see tingitud sellest, et need ahelad on korraldatud tabelitesse, kusjuures filtritabel on kõige paremini teada ja see on kasutatakse pakettfiltreerimise juurutamiseks koos kolme vaikeahelaga:

1. Ahel INPUT tegeleb võrku tulevate pakettidega, mis on mõeldud kohalikele programmidele.

2. Ahelat OUTPUT kasutatakse kohalikust võrgust pärinevate pakettide analüüsimiseks, mis saadetakse väljapoole.

3. Ahel EDASI töötleb pakette, mis tuleks edastada teise sihtkohta (nagu ruuteri puhul).

Kõigi nende ahelate jaoks on olemas vaikepoliitika, mis määrab, mida tuleks vaikimisi teha, kui paketid ei vasta ühelegi ahela reeglile. Iga ahela jaoks loodud reegleid ja vaikepoliitikat saate vaadata järgmise käsu käivitamisega:

# iptables -L

Saadaval on järgmised põhimõtted:

  1. ACCEPT → laseb paketi läbi. Võrku lubatakse kõik paketid, mis ei vasta ahelas olevatele reeglitele.
  2. DROP → viskab paketi vaikselt maha. Kõik paketid, mis ei vasta ahela ühele reeglile, takistavad võrku sisenemist.
  3. REJECT → lükkab paketi tagasi ja tagastab informatiivse teate. See ei toimi eriti vaikepoliitikana. Selle asemel on see mõeldud täiendama pakettide filtreerimise reegleid.

Kui otsustate, millist poliitikat te rakendate, peate arvestama iga lähenemisviisi plusside ja miinustega , nagu eespool selgitatud - pidage meeles, et ühtset tüüpi ei ole -kogu lahendus.

Reegli lisamiseks tulemüürile kutsuge käsk iptables järgmiselt:

# iptables -A chain_name criteria -j target

kus

  1. -A tähistab liidet (lisage praegune reegel ahela lõppu).
  2. ahela_nimi on kas INPUT, OUTPUT või FORWARD.
  3. sihtmärk on antud juhul rakendatav toiming või reegel (ACCEPT, REJECT või DROP).
  4. kriteeriumid on tingimuste kogum, mille alusel pakette uuritakse. See koosneb vähemalt ühest (tõenäoliselt rohkemast) järgmisest lipust. Sulgudes olevad valikud, mis on eraldatud vertikaalse ribaga, on üksteisega võrdsed. Ülejäänud tähistab valikulisi lüliteid:

[--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.

Liimime selle kõik kolme klassikalise näite abil, kasutades kahe esimese jaoks järgmist testikeskkonda:

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

Ja see on viimane näide

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

Kõigepealt määrame tulemüüri sisendpingide jaoks eeskirja DROP . See tähendab, et icmp-paketid lastakse vaikselt maha.

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

Enne osa REJECT jätkamist loputame kõik INPUT-ahela reeglid, et veenduda, et meie uus pakett testib pakette:

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

Väljamineva liikluse käsitlemisel tegeleme kettiga OUTPUT :

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

Pordide 2049 ja 111 sulgemiseks igasuguse liikluse jaoks käivitage NFSv4 serveris/tulemüüris järgmised käsud:

# 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üüd avame need sadamad ja vaatame, mis juhtub.

# 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

Nagu näete, suutsime pärast liikluse avamist ühendada NFSv4 aktsia.

Eelmistes näidetes näitasime, kuidas reegleid lisada ketidesse INPUT ja OUTPUT . Kui peaksime soovima need sisestada eelmääratud kohta, peaksime selle asemel kasutama lülitit -I (suurtähed i).

Peate meeles pidama, et reegleid hinnatakse üksteise järel ja et hindamine peatub (või hüppab), kui DROP või ACCEPT poliitika on vastavuses. Sel põhjusel võib tekkida vajadus reegleid vastavalt vajadusele ketiloendis üles või alla viia.

Selle näitamiseks kasutame triviaalset näidet:

Paneme järgmise reegli,

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

asendis 2) INPUT-ahelas (liigutades seega eelmist # 2 kui # 3)

Kasutades ülaltoodud seadistusi, kontrollitakse enne pordi 2049 kontrollimist liiklust, kas see on suunatud porti 80 .

Teise võimalusena võite reegli kustutada ja muuta ülejäänud reeglite sihtmärgiks REJECT (kasutades lülitit -R ):

# 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

Viimaseks, kuid mitte vähem oluliseks, peate meeles pidama, et tulemüüri reeglite püsivuse tagamiseks peate need salvestama faili ja seejärel taaskäivitama need automaatselt käivitamisel (kasutades teie valitud eelistatud meetodit või on teie levitamiseks saadaval).

Tulemüürireeglite salvestamine:

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

Reeglite taastamine:

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

Siin näeme sarnast protseduuri (tulemüüri reeglite käsitsi salvestamine ja taastamine), kasutades ülaltoodud vaikefaili asemel näivfaili nimega iptables.dump .

# iptables-save > iptables.dump

Nende muudatuste püsivaks muutmiseks saapades tehke järgmist.

Ubuntu : installige iptables-persistent pakett, mis laadib faili /etc/iptables/rules.v4 salvestatud reeglid.

# apt-get install iptables-persistent

CentOS : lisage faili /etc/sysconfig/iptables-config järgmised 2 rida.

IPTABLES_SAVE_ON_STOP="yes"
IPTABLES_SAVE_ON_RESTART="yes"

OpenSUSE : loetlege saidil /etc/sysconfig/SuSEfirewall2 lubatud pordid, protokollid, aadressid ja nii edasi (eraldage komadega).

Lisateavet leiate failist endast, mida on palju kommenteeritud.

Järeldus

Kuigi käesolevas artiklis toodud näited ei hõlma kõiki iptablesi kellasid ja vilesid, on nende eesmärk illustreerida, kuidas sissetuleva või väljuva liikluse lubamine ja keelamine.

Neile teist, kes olete tulemüüri fännid, pidage meeles, et vaatame seda teemat uuesti selle LFCE seeria 10. osa täpsemate rakendustega.

Andke mulle julgelt teada, kui teil on küsimusi või kommentaare.