Mga parameter ng iptables. Pagsubok at pag-debug. Tingnan ang kasalukuyang configuration

Ang isang maaasahang firewall ay isa sa pinakamahalagang aspeto ng pagprotekta sa anumang modernong OS. Karamihan sa mga pamamahagi ng Linux ay naglalaman ng ilan iba't ibang instrumento firewall. Ang gabay na ito ay nakatuon sa isa sa mga pinakasikat - iptables.

Kaya, ang iptables ay karaniwang firewall, kasama sa karamihan ng mga distribusyon ng Linux bilang default (ginagawa ang mga nftable upang palitan ito). Sa katunayan, ang iptables ay isang user interface para sa pamamahala ng netfilter system, na namamahala naman sa Linux networking stack. Inihahambing ng iptables ang bawat papasok na packet sa isang set ng mga itinatag na panuntunan, at pagkatapos ay magpapasya kung ano ang susunod na gagawin dito.

Ang talakayan ay tungkol sa kung paano eksaktong gumagana ang iptables. Nakatuon ang artikulong ito sa mga praktikal na halimbawa na nagpapakita kung paano gumawa ng pangunahing hanay ng mga panuntunan para sa isang Ubuntu 14.04 server.

Mga pangunahing utos ng iptables

Ang seksyong ito ay naglalaman ng mga pangunahing utos na maaaring magamit upang lumikha ng isang kumplikadong hanay ng mga panuntunan at pamahalaan ang interface ng iptables sa kabuuan.

Tandaan: Ang mga utos ng iptables ay dapat patakbuhin na may mga pribilehiyo sa ugat. Nangangahulugan ito na kailangan mong gawin ang isa sa mga sumusunod:

  • mag-login bilang root user;
  • gumamit ng su o sudo -i upang palawakin ang root shell;
  • simulan ang lahat ng mga utos gamit ang sudo (inirerekumendang paraan sa Ubuntu).

SA manwal na ito Nalalapat ang huling opsyon.

Kaya, kailangan mo munang tingnan ang listahan ng kasalukuyang mga tuntunin ng iptables. Upang gawin ito, gamitin ang -L flag:

sudo iptables -L
Chain INPUT (patakaran ACCEPT)


target na prot opt ​​source destination
Chain OUTPUT (patakaran ACCEPT)
target na prot opt ​​source destination

Gaya ng nakikita mo, ang listahan ay naglalaman ng tatlong default na chain (INPUT, OUTPUT at FORWARD), bawat isa ay may default na set ng patakaran (kasalukuyang ACCEPT). Maaari mo ring makita ang mga pangalan ng column. Ngunit ang listahang ito ay hindi kasama ang mga panuntunan mismo, dahil ang Ubuntu ay hindi kasama ng isang default na hanay ng mga panuntunan.

Gamit ang -S flag, ang listahang ito ay maaaring matingnan sa ibang format na nagpapakita ng mga utos na kailangan para i-activate ang mga panuntunan at patakaran:

sudo iptables -S
-P INPUT TANGGAPIN
-P FORWARD TANGGAPIN
-P OUTPUT ACCEPT

Upang kopyahin ang mga pagsasaayos, kailangan mo lamang mag-type ng sudo iptables sa simula ng bawat linya ng resulta. (Depende sa iyong mga pagsasaayos, ang pamamaraang ito ay maaaring maging mas kumplikado nang kaunti kapag kumokonekta nang malayuan; kung ang mga patakaran na nagpapahintulot sa kasalukuyang koneksyon ay hindi pa naitakda, hindi mo dapat itakda ang patakaran sa DROP.)

Upang i-reset ang kasalukuyang mga panuntunan (kung mayroon man), i-type ang:

sudo iptables -F

Muli, sa sa yugtong ito Napakahalaga ng default na patakaran dahil hindi ito babaguhin ng nakaraang utos kahit na ang lahat ng mga panuntunan ay aalisin sa mga chain.

Bago i-reset ang mga panuntunan para sa isang malayuang koneksyon, dapat mong tiyakin na ang patakarang ACCEPT ay nakatakda sa INPUT at OUTPUT chain. Ginagawa ito tulad nito:

sudo iptables -P INPUT ACCEPT
sudo iptables -P OUTPUT ACCEPT
sudo iptables -F

Kapag nakagawa ka na ng mga panuntunang nagbibigay-daan sa mga malayuang koneksyon, maaari mong itakda ang patakarang DROP. Kaya, magpatuloy tayo sa paglikha ng mga patakaran.

Paglikha ng mga panuntunan sa iptables

Tulad ng nabanggit sa itaas, ang tutorial na ito ay nakatuon sa pagtatrabaho sa INPUT chain, dahil ito ang responsable para sa papasok na trapiko. Una, kailangan nating isaalang-alang ang panuntunang nabanggit na - ang panuntunang nagpapahintulot sa kasalukuyang koneksyon sa SSH.

Mukhang ganito:

sudo iptables -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT

Siyempre, maaaring mukhang hindi kapani-paniwalang kumplikado sa simula; Upang maunawaan ang panuntunang ito, pamilyar sa mga bahagi nito:

  • -Isang INPUT: flag -A nagdadagdag ( dugtungan) panuntunan hanggang sa dulo ng kadena. Ang bahaging ito ng command ay nagsasabi sa iptables na magdagdag ng panuntunan sa dulo ng INPUT chain.
  • -m conntrack: bilang karagdagan sa isang hanay ng mga pangunahing pag-andar, ang mga iptable ay mayroon ding isang hanay ng mga extension, o mga module, na responsable para sa mga karagdagang kakayahan sa firewall. Ang bahaging ito ng command ay nagpapahiwatig na ang user ay nangangailangan ng access sa mga function ng conntrack module. Binibigyang-daan ka ng module na ito na gumamit ng mga command na magpapasya kung ano ang gagawin sa isang packet batay sa kaugnayan nito sa mga nakaraang koneksyon.
  • --ctstate: isa sa mga utos na magagamit kapag tumatawag sa conntrack module. Binibigyang-daan ka ng utos na ito na subaybayan ang kaugnayan ng mga pakete sa iba pang mga pakete na natingnan na dati. Ito ay nakatakda sa ESTABLISHED (na tumatanggap ng mga packet na bahagi ng isang umiiral na koneksyon) at RELATED (tumatanggap ng mga packet na nauugnay sa isang naitatag na koneksyon). Ang bahaging ito ng panuntunan ang responsable para sa kasalukuyang session ng SSH.
  • jTANGGAPIN: Tinutukoy ang aksyon (target) na gagawin sa isang packet na tumutugma sa panuntunan. Sa kasong ito, ang iptables ay tatanggap ng mga packet na nakakatugon sa nakaraang pamantayan.

Dapat ilagay ang panuntunang ito sa simula upang matiyak na tumutugma ang mga kasalukuyang koneksyon sa mga panuntunan, tinatanggap, at lumabas sa chain nang hindi naaabot ang mga panuntunan sa DROP.

Sa pamamagitan ng paghiling ng listahan ng mga panuntunan, makikita mo ang mga pagbabago:

sudo iptables -L
Chain INPUT (patakaran ACCEPT)
target na prot opt ​​source destination
TANGGAPIN lahat -- kahit saan kahit saan ctstate RELATED, ESTABLISHED
Chain FORWARD (patakaran ACCEPT)
target na prot opt ​​source destination
Chain OUTPUT (patakaran ACCEPT)
target na prot opt ​​source destination

Kapag pamilyar ka na sa pangunahing syntax, gumawa ng ilan pang panuntunan na tumatanggap ng koneksyon.

Pagtanggap ng iba pang mahahalagang koneksyon

Dati natanggap ng iptables ang utos na huwag i-reset ang lahat kasalukuyang mga koneksyon, pati na rin tanggapin ang lahat ng koneksyon na nauugnay sa kanila. Ngayon ay kailangan mong lumikha ng mga panuntunan na tumatanggap ng mga koneksyon na hindi nakakatugon sa pamantayan sa itaas.

Iwanang bukas ang dalawang port: SSH port(Ginagamit ng gabay na ito ang default na port 22; kung binigay na halaga ay nabago, huwag kalimutang ipasok ang bagong halaga); Bukod dito, ipagpalagay natin na sa computer na ito ang web server ay tumatakbo sa port 80 bilang default (huwag idagdag ang panuntunang ito kung hindi).

Kaya, ang mga linya na kailangan mong gamitin upang lumikha ng mga naturang panuntunan ay ganito ang hitsura:

sudo iptables -A INPUT -p tcp --dport 22 -j ACCEPT
sudo iptables -A INPUT -p tcp --dport 80 -j ACCEPT

Tulad ng makikita mo, halos kapareho ang mga ito sa unang panuntunan; marahil mayroon silang mas simpleng istraktura. Mga bagong opsyon:

  • ptcp: pagpipiliang ito nagbibigay-daan sa mga packet na gumagamit ng TCP (isang flow-oriented protocol na ginagamit ng karamihan sa mga application dahil nagbibigay ito ng maaasahang komunikasyon) na dumaan.
  • dport: Available ang opsyong ito kapag ginagamit ang -p tcp flag. Tinutukoy nito ang papasok na port na dapat tumugma sa port ng packet. Lumalaktaw ang unang panuntunan Mga TCP packet, nakadirekta sa port 22, at tinatanggap ng pangalawang panuntunan ang trapiko ng TCP na papunta sa port 80.

Ngayon kailangan naming lumikha ng isa pang ACCEPT na panuntunan upang matiyak na gumagana ang server tulad ng inaasahan. Karaniwan, nakikipag-usap ang mga serbisyo sa pamamagitan ng pagpapalitan ng mga packet; Upang gawin ito, gumagamit sila ng network pseudo-ring interface - ang tinatawag na loopback device, na nagdidirekta ng trapiko pabalik sa pinagmulan nito, at hindi sa ibang mga computer.

Iyon ay, kung ang serbisyo 1 ay kailangang magtatag ng komunikasyon sa serbisyo 2 na nakikinig para sa mga koneksyon sa port 4555, pagkatapos ang serbisyo 1 ay nagpapadala ng isang packet sa port 4555 gamit ang isang loopback device. Ang pag-uugali na ito ay dapat pahintulutan dahil ito ay isang mahalagang kondisyon tamang operasyon ng maraming mga programa.

Upang gawin ito, idagdag ang sumusunod na panuntunan:

sudo iptables -I INPUT 1 -i lo -j ACCEPT

Medyo naiiba ito sa mga naunang tuntunin; tingnan mo itong mabuti:

  • akoINPUT 1: Ang -I flag ay nagsasabi sa iptables na magpasok ng isang panuntunan. Ang watawat na ito ay iba sa -A na watawat (na nagdaragdag lamang ng panuntunan sa dulo ng kadena); tinutukoy nito ang chain kung saan dapat idagdag ang panuntunan at ang lokasyon ng panuntunan sa loob nito. Sa kasong ito, ang panuntunan ay kailangang ipasok sa pinakadulo simula ng INPUT chain, bilang isang resulta kung saan ang lahat ng mga patakaran ay lilipat sa isang posisyon. Ang panuntunang ito ay dapat ilagay sa simula ng kadena, dahil ito ay isa sa mga pangunahing panuntunan at hindi dapat umasa sa iba.
  • ilo: Ang bahagi ng panuntunang ito ay nagpapahintulot sa mga packet na gumagamit ng lo interface ("lo" ay isa pang pangalan para sa loopback device). Nangangahulugan ito na ang anumang pakete na gumagamit interface na ito, dapat tanggapin.

Upang tingnan ang kasalukuyang mga panuntunan, gamitin ang -S na bandila, dahil ang -L na bandila ay hindi naglalabas ng ilang impormasyon (halimbawa, ang interface kung saan ang panuntunan ay nakatali, na napakahalaga sa kaso ng huling panuntunan):

sudo iptables -S
-P INPUT TANGGAPIN
-P FORWARD TANGGAPIN
-P OUTPUT ACCEPT
-A INPUT -i lo -j TANGGAPIN
-A INPUT -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
-A INPUT -p tcp -m tcp --dport 22 -j TANGGAPIN
-A INPUT -p tcp -m tcp --dport 80 -j TANGGAPIN

Paggawa ng DROP Rules

Kaya, sa ngayon, 4 na panuntunan ang nilikha na tumatanggap ng mga packet batay sa ilang pamantayan. Gayunpaman, kasalukuyang hindi hinaharangan ng server ang anumang iba pang mga packet.

Kung ang isang packet ay dumaan sa INPUT chain at hindi tumutugma sa alinman sa apat na panuntunan, ang default na patakaran (ACCEPT) ay isasagawa, na tatanggap sa packet sa isang paraan o iba pa. Ngayon ay kailangan itong baguhin.

Magagawa ito sa dalawang paraan, na may mga makabuluhang pagkakaiba.

Ang unang paraan ay i-edit ang default na patakaran ng INPUT chain; upang gawin ang ganitong uri:

sudo iptables -P INPUT DROP

Susubaybayan at ibababa ng patakarang ito ang lahat ng packet na hindi tumutugma sa alinman sa mga panuntunan ng INPUT chain. Ang isang kahihinatnan ng ganitong uri ng disenyo ay ang pagbagsak nito ng mga packet kahit na ang mga panuntunan mismo ay na-reset.

Siyempre, pinapataas nito ang antas ng seguridad ng server; gayunpaman, maaari itong magkaroon ng malubhang kahihinatnan kung ang gumagamit ay walang ibang paraan upang kumonekta sa server. Kadalasan, nagbibigay ang mga hosting provider ng web console upang kumonekta sa server kung sakaling magkaroon ng mga ganitong problema. Gumagana ang console na ito bilang isang virtual lokal na koneksyon, kaya hindi tutugon dito ang iptables.

Maaari mong awtomatikong i-reset ng server ang koneksyon kung tatanggalin ang mga panuntunan. Gagawin nitong mas secure at mahirap i-access ang server. Nangangahulugan din ito na maaari kang magpasok ng mga panuntunan sa dulo ng chain, at ang lahat ng hindi gustong mga packet ay ihuhulog.

Ang isang alternatibong diskarte ay ang magdagdag ng panuntunan sa dulo ng chain na nagtatapon ng lahat ng hindi tugmang packet, habang pinapanatili ang patakarang ACCEPT.

Upang ibalik ang patakarang ACCEPT sa INPUT chain, i-type ang:

sudo iptables -P INPUT ACCEPT

Ngayon ay maaari kang magdagdag ng isang panuntunan sa dulo ng chain na ito na mag-drop sa lahat ng hindi tugmang packet:

sudo iptables -A INPUT -j DROP

Sa ilalim ng normal na mga kondisyon ng pagpapatakbo, ang resulta ay magiging eksaktong kapareho ng paggamit sa patakarang DROP. Ibinabagsak ng panuntunang ito ang bawat packet na makakarating dito, na pumipigil sa mga packet na hindi tumutugma sa mga panuntunan na makarating sa server.

Karaniwan, ang pangalawang diskarte ay ginagamit kapag kinakailangan upang mapanatili ang patakarang ACCEPT na tumatanggap ng trapiko. Iyon ay, kahit na na-reset ang lahat ng mga panuntunan, maa-access pa rin ng user ang makina sa network. Binibigyang-daan ka ng diskarteng ito na isagawa ang mga default na pagkilos nang hindi kinakailangang baguhin ang patakaran na ilalapat sa walang laman na chain.

Siyempre, nangangahulugan din ito na ang anumang panuntunan na kailangang idagdag sa dulo ng chain ay dapat mauna bago ang panuntunan sa pag-reset. Magagawa ito alinman sa pamamagitan ng pansamantalang pag-alis ng panuntunan sa pag-reset:

sudo iptables -D INPUT -j DROP
sudo iptables -Isang INPUT new_rule
sudo iptables -A INPUT -j DROP

o sa pamamagitan ng paglalagay ng bagong panuntunan sa dulo ng chain (ngunit bago ang panuntunan sa pag-reset), na tumutukoy sa numero ng linya. Para maglagay ng panuntunan sa ika-4 na linya, i-type ang:

sudo iptables -I INPUT 4 new_rule

Kung mayroong maraming mga patakaran, ang pagkalkula ng numero ng linya nang manu-mano ay medyo may problema; sa kasong ito, maaaring bilangin ng mga iptable ang mga linya:

sudo iptables -L --line-numbers
Chain INPUT (policy DROP)

1 TANGGAPIN lahat -- kahit saan kahit saan
2 TANGGAPIN ang lahat -- kahit saan kahit saan ctstate RELATED, ESTABLISHED
3 TANGGAPIN ang tcp -- kahit saan kahit saan tcp dpt:ssh
4 TANGGAPIN tcp -- kahit saan kahit saan tcp dpt:http
Chain FORWARD (patakaran ACCEPT)
num target prot opt ​​source destination
Chain OUTPUT (patakaran ACCEPT)
num target prot opt ​​source destination

Nagbibigay-daan ito sa iyong i-verify na ang panuntunan ay naipasok sa tamang linya.

Sine-save ang mga setting ng iptables

Bilang default, mananatiling may bisa ang lahat ng hindi na-save na panuntunan hanggang sa mag-reboot ang susunod na server; Kaagad pagkatapos ng pag-reboot, mawawala ang mga hindi na-save na panuntunan.

Sa ilang mga kaso, ito ay kapaki-pakinabang dahil pinapayagan nito ang mga user na hindi sinasadyang na-block ang kanilang mga sarili upang makakuha ng access sa server. Gayunpaman, sa karamihan ng mga kaso mas maginhawa pa rin na i-save ang mga patakaran at i-load ang mga ito kapag nagsimula ang server.

Magagawa ito sa maraming paraan; Ang pinakasimpleng isa ay ang paggamit ng iptables-persistent package, na maaaring ma-download mula sa default na repositoryo ng Ubuntu:

sudo apt-get update
sudo apt-get install iptables-persistent

Sa panahon ng pag-install, lilinawin ng package kung ang kasalukuyang mga panuntunan ay kailangang i-save para magamit sa hinaharap. awtomatikong pag-download; Kung ang kasalukuyang mga panuntunan ay nasubok (nagbibigay-daan sa mga koneksyon sa SSH) at natutugunan ang lahat ng mga kinakailangan, maaari silang i-save.

Kapag kumpleto na ang pag-install, lalabas ang isang bagong serbisyo na tinatawag na iptables-persistent, na magsisimula kapag na-reboot ang server at ipagpatuloy ang mga naka-install na panuntunan.

Mga resulta

Tinutulungan ka ng gabay na ito na i-configure ang firewall ayon sa mga kinakailangan ng user. Siyempre, marami pang katulad na mga utility, at ang ilan sa mga ito ay maaaring mas madaling gamitin; Gayunpaman, ang iptables ay isa sa mga pinakamahusay na tool, kung dahil lang sa ipinapakita nito ang ilan sa mga pangunahing istruktura ng netfilter at kasama sa maraming system.

Mga Tag: ,

Sa artikulong ito sasabihin namin sa iyo kung paano i-configure ang mga iptable sa Linux. Malalaman mo kung ano ito at kung bakit kailangan mong i-configure ang function na ito. Pag-set up ng mga iptable sa Linux ay medyo simple.

Pagse-set up ng iptables sa Linux: Ano ang iptables?

Ang Iptables ay isang command line firewall utility na gumagamit ng nakadena na patakaran upang payagan o harangan ang trapiko. Kapag sinubukan ng isang koneksyon na itatag ang sarili nito sa iyong system, maghahanap ang iptables ng panuntunan sa listahan nito upang tumugma dito. Kung hindi niya ito mahanap, gagamitin nito ang default na pagkilos.

Ang mga Iptable ay halos palaging naka-pre-install sa anumang pamamahagi ng Linux. Para i-update/i-install ito, i-download lang ang iptables package:

sudo apt-get install iptables

Mayroong mga alternatibong GUI sa mga iptable gaya ng Firestarter, ngunit hindi ganoon kakomplikado ang iptables kung magpapatakbo ka lang ng ilang mga utos. Maging lubos na maingat kapag nagse-set up ng mga panuntunan sa iptables, lalo na kung gumagamit ka ng SSH'd sa server, dahil ang isang maling command ay maaaring i-lock out ka ng mahabang panahon hanggang sa ito ay manu-manong i-commit sa pisikal na makina.

Pagse-set up ng mga iptable sa Linux para sa mga dummies

By the way, napag-usapan na natin ito dati. Marahil ito ay magiging kawili-wili din sa iyo. Ang link ay matatagpuan sa itaas.

Ang pag-set up ng mga iptable sa Linux, tulad ng sinabi namin sa itaas, ay medyo simple. Ngunit bago ka magsimulang mag-set up, kailangan mong maging pamilyar sa mga pangkalahatang konsepto ng opsyon.

Mga uri ng circuit

Gumagamit ang Iptables ng tatlong magkakaibang circuit: input, forward, at output.

Input- Ginagamit ang chain na ito upang kontrolin ang pag-uugali ng mga papasok na koneksyon. Halimbawa, kung sinubukan ng isang user na mag-SSH sa iyong computer/server, susubukan ng iptables na itugma ang IP address at port sa isang panuntunan sa input chain.

Pasulong- Ginagamit ang chain na ito para sa mga papasok na koneksyon na hindi aktwal na naihatid sa lokal. Mag-isip tungkol sa isang router - ang data ay palaging ipinadala dito, ngunit bihirang aktwal na nakalaan para sa router mismo; Nire-redirect lang ang data sa landing page. Maliban kung gumagawa ka ng anumang pagruruta, NAT, o anumang bagay sa iyong system na nangangailangan ng pagpapasa, hindi mo na gagamitin ang chain na ito.

may isa maaasahang paraan tingnan kung gumagamit o nangangailangan ang iyong system ng forward chain.

Ang screenshot na ito ay isang server na tumatakbo nang ilang linggo at walang mga paghihigpit sa mga papasok o papalabas na koneksyon. Tulad ng nakikita mo, ang input chain ay nagproseso ng 11 GB ng mga packet, at ang output chain ay nagproseso ng 17 GB. Sa kabilang banda, ang forward chaining ay hindi kailangang magproseso ng isang solong packet. Ito ay dahil ang server ay hindi nagsasagawa ng anumang pagpapasa o hindi ginagamit bilang isang end-to-end na device.

Output - Ang chain na ito ay ginagamit para sa mga papalabas na koneksyon. Halimbawa, kung susubukan mong i-ping ang site ng linuxinsider, susuriin ng iptables ang output chain nito upang makita kung anong mga panuntunan ang nalalapat sa ping at linuxinsider bago magpasya kung papayagan o tanggihan ang pagtatangkang koneksyon.

Babala

Kahit na ang panlabas na pagsusuri ng host ay mukhang isang bagay na kakailanganin lamang na dumaan sa output chain, tandaan na ang input chain ay gagamitin din upang ibalik ang data. Kapag gumagamit ng mga iptable upang i-lock ang iyong system, tandaan na maraming mga protocol ang nangangailangan ng two-way na komunikasyon, kaya ang parehong input at output chain ay dapat na i-configure nang tama. Ang SSH ay isang karaniwang protocol na nakalimutan ng mga tao na paganahin sa parehong mga chain.

Default na Pag-uugali sa Patakaran

Bago mo simulan ang pag-configure ng mga partikular na panuntunan, dapat kang magpasya kung ano ang gusto mong maging default na gawi ng tatlong chain na ito. Sa madaling salita, ano ang gusto mong gawin ng mga iptable kung ang koneksyon ay hindi tumutugma sa anumang umiiral na mga panuntunan?

Upang makita kung aling mga chain ng patakaran ang na-configure upang pangasiwaan ang walang kaparis na trapiko, patakbuhin ang command na iptables -L.

Gaya ng nakikita mo, ginamit din namin ang grep command para makakuha ng mas malinis na resulta. Sa screenshot na ito, kasalukuyang naka-configure ang aming mga chain upang tanggapin ang trapiko.

Mas maraming beses kaysa sa hindi, gusto mong tanggapin ng iyong system ang mga koneksyon bilang default. Maliban kung binago mo dati ang mga patakaran sa chain ng patakaran, dapat na naka-configure na ang setting na ito. Sa anumang kaso, narito ang utos na tanggapin ang mga default na koneksyon:

iptables --patakaran INPUT ACCEPT
iptables --patakaran OUTPUT ACCEPT
iptables --patakaran FORWARD ACCEPT

Bilang default, sa isang tuntunin sa pagtanggap, maaari mong gamitin ang mga iptable upang tanggihan ang mga partikular na IP address o numero ng port habang patuloy na tinatanggap ang lahat ng iba pang koneksyon. Makakarating tayo sa mga utos na iyon sa isang minuto.

Kung mas gusto mong tanggihan ang lahat ng koneksyon at manu-manong tukuyin kung alin ang gusto mong payagan na kumonekta, dapat mong baguhin ang default na patakaran ng iyong mga circuit para tumanggi. Malamang na ito ay magiging kapaki-pakinabang lamang para sa mga server na naglalaman ng sensitibong impormasyon at kailanman ay konektado lamang sa pamamagitan ng parehong mga IP address.

iptables --patakaran INPUT DROP
iptables --patakaran OUTPUT DROP
iptables --patakaran FORWARD DROP

Mga Tugon sa Koneksyon

Kapag naka-configure ang default na mga patakaran sa chaining, maaari kang magsimulang magdagdag ng mga panuntunan sa mga iptable para malaman nito kung ano ang gagawin kapag nakatagpo ito ng koneksyon sa isang partikular na IP address o port. Sa gabay na ito, titingnan natin ang tatlo sa pinakakaraniwan at madalas na ginagamit na "mga sagot."

Tanggapin- payagan ang koneksyon.

Ihulog- I-drop ang koneksyon, kumilos na parang hindi ito nangyari. Pinakamainam ito kung hindi mo gustong malaman ng pinagmulan na umiiral ang iyong system.

Tanggihan— tanggihan ang koneksyon, ngunit magpadala ng mensahe ng error. Pinakamainam ito kung ayaw mo ng isang partikular na source na kumokonekta sa iyong system, ngunit gusto mong malaman nila na na-block sila ng iyong firewall.

Ang pinakamahusay na paraan upang ipakita ang pagkakaiba sa pagitan ng tatlong panuntunang ito ay ipakita kung ano ang hitsura nito kapag sinubukan ng isang PC na mag-ping ng Linux machine na may mga iptable na na-configure para sa bawat isa sa mga opsyong ito.

Pahintulot sa koneksyon:

Pag-alis ng koneksyon:

Pagtanggi sa Koneksyon:

Isang netmask o katangian upang ipahiwatig ang isang hanay ng mga IP address.

Pag-set up ng mga iptable sa Linux: Mga paraan ng koneksyon

Kung pinag-uusapan natin ang paksang "Pag-set up ng mga iptable sa Linux", kailangan nating pag-usapan ang tungkol sa mga pamamaraan ng koneksyon.

Payagan o harangan ang mga partikular na koneksyon
Sa mga naka-configure na patakaran, maaari mong i-configure ang mga iptable upang payagan o i-block ang mga partikular na address, hanay ng address, at port. Sa mga halimbawang ito, itatakda namin ang mga koneksyon sa DROP, ngunit maaari mong ilipat ang mga ito sa ACCEPT o REJECT, depende sa iyong mga pangangailangan at kung paano mo na-configure ang iyong mga policy chain.

Tandaan. Sa mga halimbawang ito, gagamitin namin ang iptables -A upang magdagdag ng mga panuntunan sa isang umiiral na chain. Magsisimula ang Iptables sa tuktok ng listahan at dumaan sa bawat panuntunan hanggang sa makahanap ito ng tumutugma dito. Kung kailangan mong magpasok ng isang panuntunan sa itaas ng isa pa, maaari mong gamitin ang iptables -I upang tukuyin ang numero na dapat nasa listahan.

Mga koneksyon mula sa parehong IP address

Ipinapakita ng halimbawang ito kung paano harangan ang lahat ng koneksyon mula sa IP address 10.10.10.10..

iptables -A INPUT -s 10.10.10.10 -j DROP

Mga koneksyon mula sa isang hanay ng mga IP address

Ipinapakita ng halimbawang ito kung paano i-block ang lahat ng IP address sa hanay ng network na 10.10.10.0/24. Maaari kang gumamit ng netmask o karaniwang forward slash para tumukoy ng hanay ng mga IP address.

iptables -A INPUT -s 10.10.10.0/24 -j DROP

iptables -A INPUT -s 10.10.10.0/255.255.255.0 -j DROP

Mga koneksyon sa isang partikular na port

Ipinapakita ng halimbawang ito kung paano harangan ang mga koneksyon sa SSH mula sa 10.10.10.10.

iptables -A INPUT -p tcp --dport ssh -s 10.10.10.10 -j DROP

Maaari mong palitan ang "ssh" ng anumang protocol o port number. Ang -p tcp na bahagi ng code ay nagsasabi sa iptables kung anong protocol ang ginagamit ng koneksyon. Kung hinaharangan mo ang isang protocol na gumagamit ng UDP sa halip na TCP, sa halip ay -p udp ang kakailanganin.

Ipinapakita ng halimbawang ito kung paano harangan ang mga koneksyon sa SSH mula sa anumang IP address.

iptables -A INPUT -p tcp --dport ssh -j DROP

Mga estado ng koneksyon

Tulad ng nabanggit namin kanina, maraming mga protocol ang nangangailangan ng two-way na komunikasyon. Halimbawa, kung gusto mong payagan ang mga koneksyon sa SSH sa iyong system, ang input at output circuit ay mangangailangan ng panuntunang idinagdag sa kanila. Ngunit, paano kung gusto mong payagan ang SSH na mag-log in sa iyong system? Hindi ba magreresulta din sa papalabas na mga pagtatangka sa SSH ang pagdaragdag ng panuntunan sa output chain?

Dito pumapasok ang mga estado ng koneksyon, na nagbibigay sa iyo ng opsyon na payagan ang two-way na komunikasyon, ngunit pinapayagan lamang ang mga one-way na koneksyon na magawa. Tingnan ang halimbawang ito kung saan pinapayagan ang mga koneksyon sa SSH MULA 10.10.10.10, ngunit ang mga koneksyon sa SSH SA 10.10.10.10 ay hindi. Gayunpaman, pinapayagan ang system na magpadala ng impormasyon sa SSH habang ang session ay naitatag na, na ginagawang posible ang komunikasyon ng SSH sa pagitan ng dalawang host.

iptables -A INPUT -p tcp --dport ssh -s 10.10.10.10 -m estado --estado BAGO, ITATAG -j TANGGAPIN

iptables -A OUTPUT -p tcp --sport 22 -d 10.10.10.10 -m state --state ESTABLISHED -j ACCEPT

Nagse-save ng mga pagbabago

Ang mga pagbabagong gagawin mo sa mga panuntunan ng iptables ay itatapon sa susunod na pagsisimula muli ng serbisyo ng iptables maliban kung maglalabas ka ng utos upang i-save ang mga pagbabago. Maaaring mag-iba ang utos na ito depende sa iyong pamamahagi:

sudo /sbin/iptables-save

Red Hat/CentOS:

/sbin/service iptables save

/etc/init.d/iptables save

Iba pang mga utos

Listahan ng kasalukuyang naka-configure na mga panuntunan sa iptables:

Ang pagdaragdag ng opsyong -v ay magbibigay sa iyo ng packet at byte na impormasyon, at ang pagdaragdag ng -n ay maglalaman ng lahat ng mga numeric na halaga. Sa madaling salita, ang mga hostname, protocol, at network ay nakalista bilang mga numero.

Upang i-clear ang lahat ng kasalukuyang naka-configure na panuntunan, maaari mong patakbuhin ang flush command.

Pagsasalin mula sa isang mahusay na mapagkukunang Ingles HowToGeek.

Kung mayroon ka pa ring mga katanungan sa paksang "Pagse-set up ng mga iptable sa Linux para sa mga dummies," maaari mong isulat ang mga ito sa form ng komento sa aming website.

Kung makakita ka ng error, mangyaring i-highlight ang isang piraso ng teksto at i-click Ctrl+Enter.

Ang IPTables ay isang utility na ginagamit upang pamahalaan ang isang firewall sa Linux. Ito ay isang malakas at maginhawang tool para sa at hindi gustong mga koneksyon. Ang buong proseso ay nakapaloob sa mga panuntunan ng iptables, na maaaring i-edit at tingnan. Ang mas detalyadong impormasyon ay ibinigay sa artikulo.

Kasaysayan ng paglikha

Upang IPTables sa Linux system IPFW firewall ang ginamit, hiniram sa BSD. Pagkatapos, sa bersyon 2.4 ng Linux kernel, nagsimula itong dumating kasama ang Netfilter firewall at ang IPTables utility para sa pamamahala nito. Sa pamamaraan ng gawain nito, ang lahat ng mga aspeto ay napanatili at bahagyang pinalawak na gumagana.

Istraktura at disenyo ng IPTables

Pagpasok firewall, dumaan ang package sa ilang pagsusuri. Maaaring ito ay checksum o anumang iba pang pagsusuri sa antas ng kernel. Pagkatapos ay oras na upang dumaan sa PREROUTING chain. Susunod, ito ay nasuri alinsunod sa kung saan ang pag-redirect sa susunod na chain ay nangyayari. Kung ang packet ay walang address, tulad ng, halimbawa, sa TCP, pagkatapos ito ay ipinadala sa FORWARD chain. Sa mga kaso kung saan mayroong isang partikular na address, ang INPUT chain ay sumusunod, at pagkatapos ay sa mga daemon o serbisyo kung saan ito nilayon. Ang tugon mula sa kanila ay dapat ding dumaan sa ilang mga kadena, halimbawa OUTPUT. Ang huling link sa prosesong ito ay ang POSTROUTING chain.

Ngayon ng kaunti tungkol sa mga kadena. Ang bawat isa sa kanila ay naglalaman ng ilang mga talahanayan. Maaaring ulitin ang kanilang mga pangalan, ngunit hindi ito nakakaapekto sa trabaho sa anumang paraan, dahil hindi sila magkakaugnay.

Ang mga talahanayan, sa turn, ay naglalaman ng ilang mga patakaran. Sa esensya, ang isang panuntunan ay isang tiyak na kundisyon na dapat matugunan ng package na sinusuri. Depende sa kinalabasan, ang isang tiyak na aksyon ay isinasagawa sa pakete.

Kaya, ang pagpasa sa lahat ng mga yugto ng network, ang packet ay sunud-sunod na binibisita ang lahat ng mga chain at sa bawat isa ay sinuri para sa pagsunod sa kondisyon ng isang tiyak na panuntunan. Kung ang talahanayan ay hindi nilikha ng gumagamit, ang default na aksyon ay isinasagawa, karaniwang ACCEPT, na nagbibigay-daan sa iyo upang magpatuloy sa paglipat, o DROP, na humihinto sa packet.

Ang mga preset na chain ay nasa mga sumusunod na kategorya:

  • PREROUTING. Paunang pagproseso ng lahat ng mga papasok na pakete.
  • INPUT. Kabilang dito ang mga packet na direktang ipinadala sa lokal na computer.
  • PAASA. Ginagamit para sa mga "transit packet" na sumusunod sa routing table.
  • OUTPUT. Ginagamit para sa mga papalabas na packet.
  • POSTROUTING. Ang huling yugto sa pagpasa ng papalabas na packet sa lahat ng chain.

Bilang karagdagan sa mga built-in na chain, ang mga user ay maaaring gumawa o magtanggal ng kanilang sarili.

Tingnan at pamahalaan ang mga panuntunan sa IPtables

Tulad ng nabanggit kanina, ang lahat ng mga chain ay naglalaman ng ilang mga kundisyon para sa mga pakete. Ginagamit ang utility ng IPTables upang tingnan at pamahalaan ang mga panuntunan ng IPTables. Ang bawat indibidwal na panuntunan ay isang linya na may isang hanay ng mga kondisyon para sa mga packet, pati na rin ang mga aksyon sa kanila, depende sa kinalabasan.

Ang format ng command ay ganito: iptables [-t name ng table na pinoproseso] command na tinatawag na [criteria] [aksyon na ginawa].

Maaaring tanggalin ang anumang bagay na nakapaloob. Kung isa itong parameter na tumutukoy sa isang talahanayan, gagamitin ang filter. Upang gumamit ng isang partikular na pangalan, kailangan mong idagdag ang -t switch. Binibigyang-daan ka ng tinatawag na command na i-trigger ang kinakailangang pagkilos, halimbawa, pagdaragdag ng panuntunan sa IPTables o pag-alis nito. Ang "pamantayan" ay nagpapahiwatig ng mga parameter kung saan magaganap ang pagpili. At sa "aksyon" ay may kilos na kailangang gawin kung matugunan ang kundisyon.

Mga utos para sa paglikha at pagtingin sa mga panuntunan sa IPTables

  • Idugtong(-A). Kapag ginagamit ang command, tinukoy mo ang chain at table kung saan mo gustong idagdag ang kinakailangang panuntunan. Ang halaga ng koponan ay ginagawa nito ito sa dulo ng listahan.
  • Tanggalin (-D). Gaya ng iminumungkahi ng pangalan, nagde-delete ito ng panuntunan. Bilang mga parameter, maaari mong tukuyin ang buong pangalan at ang mga numerong itinalaga sa kanila.
  • Palitan ang pangalan-chain (-E). Binabago ang pangalan ng chain. Tinukoy ng command ang lumang pangalan, pagkatapos ay ang bagong pangalan.
  • Flush (-F). Pag-clear ng ganap na lahat ng mga patakaran ng isang tiyak na talahanayan.
  • Ipasok (-I). Ang command na ito ay naglalagay ng kinakailangang panuntunan sa lokasyong ipinahiwatig ng numero.
  • Listahan(-L). Tingnan ang mga panuntunan ng Iptables. Kung walang tinukoy na talahanayan, gagamitin ang default na filter.
  • Patakaran (-P). Ginagamit ang default na patakaran para sa tinukoy na chain.
  • Palitan ang (-R). Binabago ang panuntunan sa ilalim tinukoy na numero, para sa kung ano ang kinakailangan.
  • Tanggalin-chain (-X). Tinatanggal ng command na ito ang lahat ng ginawang chain. Tanging ang mga na-preinstall na ang mananatili.
  • Zero (-Z). Nire-reset ang mga counter ng ipinadalang data sa tinukoy na chain.

Kaunti tungkol sa mga parameter ng pagpili ng packet

Maaari silang nahahati sa tatlong uri:

  • Pangkalahatang pamantayan. Maaari silang tukuyin para sa anumang mga patakaran. Hindi nila kailangan ang koneksyon ng mga espesyal na extension at module, at hindi rin nakasalalay sa kung aling protocol ang gagamitin.
  • Hindi pangkalahatang pamantayan. Magagamit ang mga ito kapag gumagamit ng pangkalahatang pamantayan.
  • tahasan. Upang magamit ang ganitong uri, kailangan mong ikonekta ang mga espesyal na plugin para sa netfilter. Bilang karagdagan, dapat mong gamitin ang -m switch sa command.

Ito ay nagkakahalaga ng pakikipag-usap ng kaunti tungkol sa mga madalas na nakatagpo na mga parameter na ginagamit kapag sinusuri ang mga packet:

  • Protocol (-p). Ipinapahiwatig ang protocol.
  • Pinagmulan (-mga). Tinutukoy ng parameter na ito ang IP address ng pinagmulan kung saan nanggaling ang packet. Maaari itong tukuyin sa maraming paraan. Isang partikular na host, address, o isang buong subnet.
  • Patutunguhan (-d). Address ng destinasyon ng package. Tulad ng nauna, maaari itong ilarawan sa maraming paraan.
  • In-interface (-i). Tinutukoy ang papasok na interface ng package. Pangunahing ginagamit para sa NAT o sa mga system na may maraming mga interface.
  • Out-interface (-o). Papalabas na interface.

Ilang halimbawa

Upang tingnan ang mga panuntunan sa IPTables? kailangan mong gamitin ang command - "iptables -L -t nat". Alamin ang pangkalahatang katayuan ng firewall - "iptables -L -n -v". Bilang karagdagan, binibigyang-daan ka ng utos na ito na tingnan ang mga panuntunan ng IPtables na magagamit sa buong system. Magpasok ng isang panuntunan sa isang tiyak na lugar sa talahanayan, halimbawa, sa pagitan ng una at pangalawang linya - "iptables -I INPUT 2 -s 202.54.1.2 -j DROP". Pagkatapos ay tingnan kung ito ay naidagdag - "iptables -L INPUT -n --line-numbers".

Upang harangan ang isang partikular na address, halimbawa, 12.12.12.12 - "iptables -A INPUT -s 12.12.12.12 -j DROP".

Tulong sa iptables - "man iptables". Kung kailangan mo ng impormasyon sa isang partikular na command, gamitin ang "iptables -j DROP -h".

Sa konklusyon

Gamitin Mga utos ng IPtables dapat gawin nang may pag-iingat, bilang maling setting(hindi alam) ay maaaring humantong sa mga pagkabigo sa network o kumpletong pagkabigo. Samakatuwid, ito ay nagkakahalaga ng pag-aaral ng mga manwal at mga tagubilin nang detalyado bago ang pagsasaayos. Sa mahusay na mga kamay, ang mga IPtable ay maaaring gawing isang maaasahang tagapagtanggol mga koneksyon sa network. Mga tagapangasiwa ng system aktibong ginagamit ang utility upang lumikha ng mga koneksyon na nakahiwalay sa hindi awtorisadong pag-access.

Isang maliit na paunang script (mga panuntunan, iptables faq) para sa isang desktop o isang simpleng server. Sa kasong ito, mga halimbawa ng pagtatrabaho sa mga port ng isa o ibang software na tumatakbo sa iyong computer. Ang mga pag-iingat sa seguridad ay dapat sundin sa anumang computer. Ang alamat na ang Linux ay mas ligtas ay hindi totoo; Mayroon ding mahusay na protektadong mga Windows system, pati na rin ang mga Linux system na bukas sa halos sinuman. Samakatuwid, ito ay nagkakahalaga pa rin ng pag-iisip nang kaunti proteksyon sa network kompyuter. Nasa ibaba ang ilang mga panuntunan sa iptables na maaaring maging kapaki-pakinabang sa simula.

Partikular kong pinalitan ang $IPT ng /sbin/iptables, kung ang isang tao ay nangangailangan lamang ng isang panuntunan, para hindi magbago ng anuman, kinopya lang nila ito at pinaandar. Natural, kakaunti pa ang rules dito, hindi iba't ibang mga VPN atbp., kung gusto mo, idagdag.

Ang mga linyang ito ay maaaring ganap na makopya sa isang script at simpleng isagawa. Para sa mga ordinaryong kaso, ito ay sapat na. Kung hindi ma-access ng anumang application ang network, ang pag-log ay espesyal na idinagdag. Buksan lamang ang tail -f /var/log/syslog (o sa iyo, kung iba sa Ubuntu) at panoorin! Kung mayroon kang mga tanong, idagdag ang mga ito sa talakayan, at sabay nating lutasin ang mga ito.

PS Bilang karagdagan sa mga panuntunang ito, isipin kung ano ang dapat mong kunin mula sa artikulong TCP Optimization.

Paano magtanggal ng panuntunan sa Iptables

Na-post ni Alexey Ubozhenko

Ilang beses kong nakatagpo ang katotohanan na kahit na sa pangkalahatan ay ang mga matatalinong tao ay gumagawa ng ganap na hindi mapapatawad na mga pagkakamali. Halimbawa, binuksan nila ang port kung saan tumatakbo ang database sa buong Internet.

Blog tungkol sa pangangasiwa ng system. Mga artikulo tungkol sa Linux, Windows, NetApp storage system at virtualization.

Madalas itong nangyayari sa mga nagsisimula sa DevOps na nagsusulat ng code sa buong buhay nila, at kasama na ngayon sa kanilang mga responsibilidad ang pag-set up ng mga server. Mayroong magandang tutorial online sa pangunahing setup firewall sa Linux at iba pang *nix, ngunit kadalasan ito ay mga sheet sa maraming screen. Kaya, umaasa ako na ang mas maigsi na tutorial na ito ay magiging kapaki-pakinabang sa isang tao.

Mahalaga! Napakadaling magkamaling mag-firewall ng makina kaya hindi mo na ito ma-access. Ito ay totoo lalo na para sa cloud hosting. Halimbawa, kung sa AWS isinara mo ang lahat ng port mula 1024 hanggang 65536, sa ilang kadahilanan ay naging sarado ang makina pagkatapos ng pag-reboot lahat sa pangkalahatan mga daungan. Kung naka-host ka sa cloud, mas mainam na mag-set up ng firewall sa pamamagitan ng web interface na ibinigay ng hosting.

Isang maliit na tala sa terminolohiya. Ang firewall na binuo sa Linux kernel ay tinatawag na Netfilter, at ang iptables ay isang utility para sa pamamahala ng firewall na ito. Maraming tao ang nagkakamali na naniniwala na ang firewall ay tinatawag na iptables. Mali ito. Sa pagsasabi ng isang bagay tulad ng "I-filter ko ang mga packet gamit ang mga iptable," ipinapakita mo sa iba ang iyong kamangmangan.

Sa pangkalahatan, anong uri ng mga problema ang maaaring malutas gamit ang Netfilter:

  • Payagan/tanggihan ang papasok na trapiko sa ilang mga port gamit ang ilang mga protocol (IPv4/IPv6, TCP/UDP) na may tinukoy na mga address(IP, MAC) o mga subnet;
  • Ang lahat ay pareho para sa papalabas na trapiko;
  • Maaari mong, halimbawa, ganap na huwag pansinin ang lahat ng ICMP packet;
  • Pagse-set up ng NAT, tingnan ang post tungkol sa pag-install at pag-configure ng OpenVPN;
  • Narinig ko na ang mga tunay na guru ay maaaring mag-set up ng DDoS at brute force na proteksyon, limitahan ang pag-access sa network sa mga partikular na application, user o grupo, at gumawa ng iba pang mga nakatutuwang bagay;

Nais kong tandaan na sa una ay personal kong nakita ang utility ng iptables na lubhang hindi maginhawa kumpara sa ipfw sa FreeBSD. Sa kabutihang palad, pagkatapos magtrabaho kasama ito sa loob ng ilang oras, ang lahat ng maraming mga flag na ito tulad ng -A, -D, -j at iba pa ay naging pamilyar, kaya maging mapagpasensya. Tingnan natin ang mga pangunahing utos.

Ipakita ang lahat ng mga panuntunan:

Maaari mong mapansin na ang Netfilter ay may ilang "chain" - kahit man lang INPUT, OUTPUT at FORWARD.

Ako mismo ay mayroon ding DOCKER chain sa aking makina. Sa unang pagkakataon, maaari mong isipin ang unang dalawa bilang lahat ng papasok at papalabas na trapiko, ayon sa pagkakabanggit, at pansamantalang kalimutan ang tungkol sa iba. Malaki ang pagkakataon na hindi mo na kakailanganin ang mga ito.

Alisin ang lahat ng panuntunan:

Baguhin ang patakaran (default na gawi) ng chain:

iptables -P INPUT DROP
iptables -P INPUT ACCEPT

Tanggihan ang pag-access mula sa host/subnet:

iptables -A INPUT -s 123.45.67.89 -j DROP
iptables -A INPUT -s 123.45.0.0/16-j DROP

Maaari mo ring gamitin ang mga domain name:

iptables -A INPUT -s example.ru -j DROP

Pagbabawal sa mga papalabas na koneksyon:

iptables -A OUTPUT -d 123.45.67.89 -j DROP

Maaari mong gamitin ang mga negasyon sa mga panuntunan:

iptables -A INPUT !-s 123.45.67.89 -j DROP

Pagtanggal ng panuntunan sa pamamagitan ng numero nito sa chain:

iptables -D INPUT 1

Pag-alis ng panuntunan batay sa kung ano ang ginagawa nito:

iptables -D INPUT -s 123.45.67.89 -j DROP

Ang -p na opsyon ay tumutukoy sa protocol. Maaari mong gamitin ang lahat, icmp, tcp, udp, o ang protocol number mula sa /etc/protocols. Tinutukoy ng --sport flag ang port kung saan ipinadala ang packet, at ang --dport flag ay tumutukoy sa destination port:

iptables -A INPUT -p tcp --sport80-j TANGGAPIN
iptables -A INPUT -p tcp --dport80-j TANGGAPIN

Paglalagay ng panuntunan sa simula ng isang chain:

iptables -I INPUT ...

O maaari mong tukuyin ang isang partikular na posisyon:

iptables-save >/etc/iptables.rules

Ibalik ang mga panuntunan:

iptables-restore

Ngayon tingnan natin ang ilang praktikal na halimbawa. Halimbawa, ito ang hitsura ng netsplit emulation sa isang pagsubok na sumusuri sa gawi ng isang application na gumagamit ng Akka Cluster:

run(node1, s"iptables -A INPUT -s $node2 -j DROP")
run(node1, s"iptables -A INPUT -s $node3 -j DROP")
run(node1, s"iptables -A OUTPUT -d $node2 -j DROP")
run(node1, s"iptables -A OUTPUT -d $node3 -j DROP")

Nangyayari ang pagpapanumbalik sa eksaktong parehong paraan, tanging ang -A na bandila ang papalitan ng -D na bandila.

Isa pang halimbawa. Kailangan mong malaman kung aling mga port ang nakikinig sa makina at isara ang mga hindi kailangan. Pumasok kami sa kotse at sinabing:

Halimbawang output:

Mga aktibong koneksyon sa Internet (mga server lamang)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Prog name
tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 3210/nginx
tcp 0 0 0.0.0.0:4369 0.0.0.0:* MAKINIG 1789/epmd
tcp 0 0 0.0.0.0:22 0.0.0.0:* MAKINIG 797/sshd
tcp 0 0 127.0.0.1:5432 0.0.0.0:* MAKINIG 990/postgres

Ang Nginx at SSHd ay tumingin sa Internet, ito ay normal. Ang PostgreSQL ay nakikinig lamang sa lokal na interface, kaya't wala ring problema doon. Ngunit lumalabas ang epmd (maaari mong suriin ito sa telnet mula sa ibang makina), at hindi ito mabuti. Maaari mo lamang isara ang port 4369. Kung paano ito gawin ay ipinakita sa itaas. O maaari kang pumunta nang higit pa at tanggihan ang lahat ng koneksyon mula sa labas patungo sa port 81 at mas luma:

iptables -A INPUT -m multiport \
-p tcp --dports81:65535!-s 127.0.0.0/8-j DROP

Ginagamit nito ang multiport extension, na nagbibigay-daan sa iyong tukuyin ang mga saklaw ng port.

Suriin natin kung gumagana ang lahat. Kung OK, i-save ang mga panuntunan:

iptables-save >/etc/iptables.rules

Upang ang mga patakaran ay kinuha kapag nag-boot ang system, lumikha kami bagong file/etc/network/if-pre-up.d/iptables:

iptables-restorelabasan0

... at sinasabi namin:

chmod +x /etc/network/if-pre-up.d/iptables

Ang pamamaraang ito ay sinubukan upang gumana sa Ubuntu 14.04 LTS.

Dapat din itong gumana sa Debian. Makakakita ka ng isang paglalarawan ng isang alternatibong paraan upang maibalik ang mga panuntunan ng firewall sa pagsisimula ng system sa nabanggit na tala tungkol sa OpenVPN.

Mga karagdagang materyales para sa mga gustong malaman ang higit pa tungkol sa Netfilter:

Paano ka magse-set up ng mga firewall sa iyong mga server?

Mga Tag: Linux, Seguridad, Mga Network.

Ang iptables command line utility ay ginagamit upang i-configure ang netfilter firewall na binuo sa isang Linux kernel-based system.

Ang pagtuturo na ito ay angkop kapwa para sa mga dummies na gustong maunawaan ang mga aspeto ng seguridad ng network, at para sa mga may karanasang propesyonal bilang cheat sheet.

Pagtatakda ng prinsipyo

Ang pangkalahatang syntax para sa paggamit ng mga iptable ay:

iptables -t<таблица> <команда> <цепочка>[numero]<условие> <действие>

<таблица>

Ang mga panuntunan sa netfilter ay ipinamamahagi sa 4 na talahanayan, bawat isa ay may sariling layunin (higit pang mga detalye sa ibaba). Tinukoy ito gamit ang -t switch, ngunit kung hindi tinukoy ang parameter na ito, isasagawa ang pagkilos para sa default na talahanayan - filter.

<команда>

Isinasaad ng mga utos kung anong uri ng pagkilos ang ginagawa namin sa netfilter, halimbawa, paggawa o pagtanggal ng panuntunan.

<цепочка>

Ang bawat talahanayan ay may mga kadena, para sa bawat isa kung saan ang mga panuntunan mismo ay nilikha. Halimbawa, para sa talahanayan ng filter sa itaas mayroong tatlong paunang natukoy na mga chain - INPUT (mga papasok na packet), OUTPUT (papalabas na mga packet) at FORWARD (mga packet ng transit).

[numero]

Ang ilang mga command ay nangangailangan ng pagtukoy sa numero ng panuntunan, halimbawa, upang tanggalin o i-edit.

<условие>

Inilalarawan ng isang kundisyon ang pamantayan para sa paggawa ng isang partikular na tuntunin.

<действие>

Well, actually, ano ang gagawin natin sa package kung nakakatugon ito sa criteria ng condition?

* in fairness, ito ay nagkakahalaga ng noting na ang action key ay hindi kailangang dumating sa dulo. Ang format na ito ay madalas na matatagpuan sa mga tagubilin at ginagawang mas madaling basahin ang mga panuntunan.

iptables key at mga halimbawa ng kanilang paggamit

Upang gumana sa mga talahanayan (iptables -t)

Ipaalala ko sa iyo na ang lahat ng mga panuntunan sa netfilter ay ipinamamahagi sa mga talahanayan. Upang gumana sa isang partikular na talahanayan, dapat mong gamitin ang -t switch.

Mga koponan

Tinutukoy ng mga sumusunod na key ang mga aksyon na ginagawa ng iptables utility.

Susi Paglalarawan at mga halimbawa
-A Pagdaragdag ng panuntunan sa dulo ng listahan:
iptables -A INPUT -s 192.168.0.15 -j DROP
tanggihan ang mga papasok na mensahe mula sa 192.168.0.15.
-D Pagtanggal ng panuntunan:
iptables -D INPUT 10
tanggalin ang panuntunan sa INPUT chain na may numero 10.
-ako Paglalagay ng panuntunan sa isang partikular na bahagi ng listahan:
iptables -I INPUT 5 -s 192.168.0.15 -j DROP
ipasok ang panuntunan 5th sa listahan.
-R Pinapalitan ang panuntunan.
iptables -R OUTPUT 5 -s 192.168.0.15 -j ACCEPT
palitan ang aming ika-5 tuntunin mula sa pagbabawal sa pagpapahintulot.
-F Pag-reset ng mga panuntunan sa isang chain.
iptables -F INPUT
-Z Nire-reset ang mga istatistika.
iptables -Z INPUT
-N Paglikha ng kadena.
iptables -N CHAINNEW
-X Pagtanggal ng chain.
iptables -X CHAINNEW
-P Tukuyin ang default na panuntunan.
iptables -P INPUT DROP
-E Palitan ang pangalan ng chain.
iptables -E CHAINNEW CHAINOLD

Mga tuntunin

Tinutukoy ng mga key na ito ang mga kondisyon ng panuntunan.

Susi Paglalarawan at mga halimbawa
-p Protocol ng network. Ang mga wastong opsyon ay TCP, UDP, ICMP, o LAHAT.
iptables -A INPUT -p tcp -j TANGGAPIN
payagan ang lahat ng mga papasok na tcp na koneksyon.
-s Source address - host name, IP address, o subnet sa CIDR notation.
iptables -A INPUT -s 192.168.0.50 -j DROP
tanggihan ang mga papasok na mensahe mula sa node 192.168.0.50
-d Address ng patutunguhan. Ang prinsipyo ng paggamit ay katulad ng nakaraang key -s.
iptables -A OUTPUT -d 192.168.0.50 -j DROP
tanggihan ang papalabas sa node 192.168.0.50
-i Ang network adapter kung saan dumarating ang mga packet (INPUT).
iptables -A INPUT -i eth2 -j DROP
huwag paganahin ang papasok na trapiko para sa Ethernet interface eth2.
-o Ang network adapter kung saan ipinapadala ang mga packet (OUTPUT).
iptables -A OUTPUT -o eth3 -j TANGGAPIN
Payagan ang mga papalabas na mensahe mula sa interface ng eth3 Ethernet.
--dport Port ng destinasyon.
iptables -A INPUT -p tcp --dport 80 -j ACCEPT
Payagan ang mga papasok na tawag sa port 80.
--isport Pinagmulan na port.
iptables -A INPUT -p tcp --sport 1023 -j DROP
ipagbawal ang mga papasok na mensahe mula sa port 1023.

Sinusuportahan din ng mga nakalistang key ang konstruksyon gamit ang sign ! .

Pagse-set up ng netfilter gamit ang iptables

Binabaligtad nito ang kundisyon, halimbawa,
iptables -A INPUT -s ! 192.168.0.50 -j DROP
tatanggihan ang koneksyon sa lahat ng mga host maliban sa 192.168.0.50.

Mga aksyon

Mga pagkilos na isasagawa sa isang pakete na tumutugma sa pamantayan ng kundisyon. Ang bawat talahanayan ay may sariling hanay ng mga pinapayagang pagkilos. Tinukoy gamit ang isang susi -j.

mesa Aksyon Paglalarawan
salain TANGGAPIN Pinapayagan ang pakete.
I-DROP Tinatanggihan ang pakete.
TANGGILAN Ipinagbabawal ang pagpapadala ng mensahe sa pinagmulan.
nat MASQUERADE Para sa mga papalabas na packet, pinapalitan ang source IP address ng address ng interface kung saan aalis ang packet.
SNAT Katulad ng MASQUERADE, ngunit nagpapahiwatig ng isang partikular na interface ng network na ang address ay gagamitin para sa panggagaya.
DNAT Pagpapalit ng address para sa mga papasok na pakete.
REDIRECT Nire-redirect ang kahilingan sa isa pang port sa parehong system.
mangle T.O.S. Pagbabago ng field ng TOS (pag-prioritize sa trapiko).
DSCP Pagbabago ng DSCP (pag-prioritize din ng trapiko).
TTL Baguhin ang TTL (packet lifetime).
H.L. Katulad ng TTL, ngunit para sa IPv6.
MARK Pagmarka ng package. Ginagamit para sa kasunod na pagsasala o paghubog.
CONNMARK Pagmamarka ng koneksyon.
TCPMSS Pagbabago ng halaga ng MTU.

Mga halimbawa ng karaniwang ginagamit na mga utos ng iptables

Pangkalahatang utos

Tingnan ang mga panuntunan kasama ang kanilang mga numero:

iptables -L --line-numbers

Para sa bawat talahanayan kailangan mong tingnan ang mga patakaran nang hiwalay:

iptables -t nat -L --line-numbers

Alisin ang lahat ng panuntunan:

Magtakda ng mga default na panuntunan:

iptables -P INPUT DROP

iptables -P OUTPUT DROP

* sa mga halimbawang ito, bilang default, ang deny rule (DROP) ay gagana para sa lahat ng papasok na (INPUT) at papalabas na (OUTPUT) na packet.

Payagan ang lahat

Paraan 1: Sa pamamagitan ng pagdaragdag ng panuntunan:

iptables -I INPUT 1 -j TANGGAPIN

iptables -I OUTPUT 1 -j ACCEPT

iptables -I FORWARD 1 -j ACCEPT

* Ang tatlong utos na ito ay gagawa ng mga panuntunan na nagbibigay-daan sa lahat ng papasok, papalabas at pagbibiyahe.

Paraan 2. Paglilinis ng mga panuntunan:

* dito muna namin aalisin ang lahat ng panuntunan (-F), pagkatapos ay itakda ang default na patakaran upang payagan ang papasok, papalabas at pagbibiyahe (-S).

Paraan 3. Hindi pagpapagana ng serbisyo (ito ay maginhawa upang pansamantalang huwag paganahin ang firewall upang masuri ang mga problema):

Paggawa gamit ang mga panuntunan

Magdagdag ng panuntunan sa dulo ng listahan:

iptables -A INPUT -p tcp --dport 25 -j ACCEPT

iptables -A INPUT -p tcp -s ! 192.168.0.25 —dport 993 -i eth0 -j TANGGAPIN

Magdagdag ng hanay ng port:

iptables -A INPUT -p tcp --dport 3000:4000 -j ACCEPT

* sa kasong ito, mula 3000 hanggang 4000.

Ipasok ang panuntunan:

iptables -I FORWARD 15 -p udp -d 8.8.8.8 --dport 53 -i eth1 -j ACCEPT

Pagpasa ng port

Mayroong dalawang paraan ng pag-setup.

1. PREROUTING + POSTROUTING rules:

iptables -t nat -A PREROUTING -p tcp -m tcp -d 19.8.232.80 —dport 22 -j DNAT —sa-destinasyon 192.168.1.15:2222

iptables -t nat -A POSTROUTING -p tcp -m tcp -s 192.168.1.15 —sport 2222 -j SNAT —to-source 19.8.232.80:22

* Saan 19.8.232.80 — ang address kung saan kami nakikinig sa mga kahilingan sa koneksyon; 22 - port para sa pagpapasa; 192.168.1.15 2222 - panloob na port.

2. PREROUTING + FORWARD na mga panuntunan:

iptables -t nat -A PREROUTING -p tcp -i eth1 --dport 22 -j DNAT --to-destination 192.168.1.15:2222

iptables -A FORWARD -p tcp -d 192.168.1.15 —dport 22 -m state —state na BAGO, ESTABLISHED, KAUGNAY -j ACCEPT

* Saan eth1— network interface kung saan kami nakikinig sa mga kahilingan; 22 - port para sa pagpapasa; 192.168.1.15 — panloob na IP address kung saan namin inililipat ang lahat ng mga kahilingan; 2222 - panloob na port.

Nagsisimula sa pag-setup

Payagan ang SSH:

iptables -A INPUT -p tcp --dport 22 -j ACCEPT

Itinakda namin ang patakaran na i-ban ang mga papasok na mensahe at payagan ang lahat ng papalabas na mensahe:

iptables -P OUTPUT ACCEPT

Lumilikha kami ng panuntunan para sa normal na operasyon ng apt-get:

iptables -A INPUT -p tcp --sport 80 -m state --state ESTABLISHED -j ACCEPT

Payagan ang ICMP (upang isagawa ang ping command):

iptables -A INPUT -p icmp -j TANGGAPIN

Mga panuntunan sa pag-save (permanenteng)

Bilang default, hihinto sa paggana ang lahat ng panuntunan pagkatapos ma-restart ang network o computer. Mayroong ilang mga paraan ng pagsasaayos upang i-save ang mga panuntunan pagkatapos ng pag-reboot.

Paraan 1. iptables-save

I-save ang mga panuntunan sa isang file:

iptables-save > /etc/iptables.rules

Buksan ang mga setting ng network:

vi /etc/network/interfaces

at idagdag ang linya:

pre-up iptables-restore< /etc/iptables.rules

Paraan 2: iptables-persistent

I-install ang iptables-persistent package:

apt install iptables-persistent

Upang i-save ang mga patakaran, ipasok ang command:

serbisyo iptables-persistent save

Paraan 3. serbisyo iptables

Gumagana sa mga mas lumang bersyon ng Linux:

Paraan 4: iptables.init

Gumagana sa CentOS:

/usr/libexec/iptables/iptables.init save

Ubuntu at CentOS

Sa mga modernong operating room Mga sistema ng Ubuntu at ang CentOS ay walang mga iptable bilang default.

Kailangan mong i-install ito o gumamit ng mas bagong mga utility.

Sa CentOS

Bilang regular na programa Ang pamamahala ng firewall ay gumagamit ng firewall-cmd. Para sa higit pang mga detalye, basahin ang mga tagubilin sa Paano i-configure ang firewalld sa CentOS.

Kung kailangan mong gumamit ng iptables, i-install ang package gamit ang utility:

yum install iptables-services

Huwag paganahin ang firewalld:

systemctl ihinto ang firewalld

systemctl huwag paganahin ang firewalld

Payagan at ilunsad ang mga iptable:

systemctl paganahin ang iptables

Sa Ubuntu

Ang ufw ay ginagamit na ngayon upang pamahalaan ang firewall.

Upang gumana sa iptables, i-install ang sumusunod na package:

apt-get install iptables-persistent

Huwag paganahin ang ufw:

# Networks# Security# UNIX# Ubuntu# Linux

Nakatulong ba sa iyo ang tagubiling ito?

SA LIKOD NG “PANDER NG APOY”:
FIREWALL (FIREWALL) AT GATEWAY SA INTERNET
SA DEBIAN GNU/LINUX 4.0 ETCH

Isang praktikal na gabay sa pag-aayos ng ligtas na pag-access sa Internet
mula sa isang hiwalay na computer at mula sa lokal na network sa Debian GNU/Linux 4.0 Etch
Isang maliit na teorya

Ang bawat pag-access sa Internet ay hindi lamang ginagawang posible na kumonekta sa iba't ibang mga server at site, ngunit lumilikha din ng potensyal na panganib ng pagtagos sa aming computer mula sa labas. Ang panganib na ito ay hindi dapat pabayaan, dahil sa kasalukuyan ang karamihan sa mga pagtatangka sa hindi awtorisadong pag-access sa mga computer ng gumagamit mula sa Internet ay bahagi ng isang mahusay na organisadong kriminal na negosyo. Pagkatapos na matagumpay na na-hack ang iyong system, susubukan nilang gamitin ang iyong computer upang magpadala ng spam o mga organisasyon ng DoS pag-atake sa iba pang mga computer, o para sa anumang iba pang karumal-dumal na layunin. Ang pagpapabaya sa panganib na ito pinakamahusay na senaryo ng kaso ay tataas ang iyong mga gastos sa trapiko at pabagalin ang iyong computer sa pinakamalala, ito ay maaaring hindi sinasadyang masangkot sa mga kriminal na aktibidad ng mga cyber group.

Ang sitwasyon ay pinalala ng katotohanan na sa ilang (pa rin) malawakang operating system, maraming mga port ang naiwang bukas bilang default, na nagpapahintulot sa isang umaatake mula sa Internet na kumonekta sa gumagamit nang hindi napapansin ng huli.

Upang maiwasan ang mga hindi awtorisadong koneksyon mula sa labas at upang i-filter ang papasok/papalabas na trapiko operating system isang espesyal na programa ang dapat gamitin - firewall(English firewall), na kilala rin bilang firewall At firewall. Inilalarawan sa ibaba madaling setup firewall sa isang libreng operating system Debian GNU/Linux 4.0.

Ang paggamit ng firewall ay nagiging partikular na nauugnay kung mayroon kang higit sa isang computer, ngunit network ng bahay o opisina, na ang mga computer ay nag-a-access sa Internet.

Kahit na ang isang maliit na lokal na network ay dapat na maayos na nakaayos. Sabihin nating mayroon kang high-speed Internet connection access point (halimbawa, isang ADSL modem) na may Ethernet (i.e., network) interface.

Mayroong isang tukso (na pinalakas ng hindi marunong magbasa ng mga rekomendasyon, tulad ng sa mga tagubilin para sa aking ADSL modem) na direktang ikonekta ang modem sa switch, at pagkatapos ay kumonekta sa switch Lahat mga lokal na network na computer. Sa kasong ito, dynamic na naglalabas ang modem sa pamamagitan ng switch mga lokal na IP address, ngunit lumalabas na ang bawat computer ay naiwang nag-iisa sa Internet! Ang modem o switch ay hindi maaaring maging hadlang sa isang masamang hangarin. Maaaring mag-scan ang isang umaatake Lahat mga computer ng isang lokal na network na nakaayos sa ganitong paraan.

Ang isang lohikal at ligtas na solusyon ay ang lumikha hadlang sa pagitan ng modem at lokal na network - sa anyo ng isang hiwalay na computer na may naka-configure na "wall of fire" (firewall) dito. Ang computer na ito ay may dalawang interface - ang isa ay "tumingin" sa Internet (i.e., ito ay pisikal na konektado sa modem), habang ang isa ay nakaharap sa lokal na network (at pisikal na konektado sa switch, kung saan ang iba pang mga computer ay din. konektado). Dahil ang aming computer na may firewall ay isa na ngayong hub para sa iba pang mga computer upang ma-access ang Internet, ito ay tinatawag din gateway( English gateway).

Sa tulad ng isang organisasyon ng lokal na network, ang posibilidad ng pag-hack ay makabuluhang nabawasan - ang umaatake ay "nakikita" lamang ang gateway mula sa Internet, at ang isang firewall ay naka-install sa gateway, at hindi madaling i-hack ito.

Pagse-set up ng mga iptable sa Linux para sa mga dummies

Ang mga lokal na network na computer ay maaaring mag-surf sa Internet at mananatiling medyo ligtas.

Pag-set up ng firewall gamit ang arno-iptables-firewall configurator

Upang ayusin ang isang firewall sa GNU/Linux ginagamit ang programa iptables, na, bilang panuntunan, ay agad na naka-install kapag nag-i-install ng karamihan sa mga distribusyon. SA Debian GNU/Linux Maaari mong suriin ito sa pamamagitan ng pagpapatakbo nito gamit ang mga karapatan ng administrator kakayahan. Kung kinakailangan, i-install namin iptables.

Gayunpaman, manu-manong pagsasaayos iptables ay isang hindi maliit na gawain at maaari lamang gawin ng mga espesyalista sa larangan pangangasiwa ng sistema. Samakatuwid, upang i-configure ang mga patakaran kung saan gagana ang firewall, mas mahusay na gamitin espesyal na configurator. SA Debian GNU/Linux ito ay isang programa arno-iptables-firewall. Sa sandaling inilunsad, nagtatanong ito ng isang serye ng mga tanong, batay sa kung saan ito ay bumubuo ng mga panuntunan para sa paggana ng firewall iptables.

I-type ang console na may mga karapatan ng superuser:

#aptitude i-install ang arno-iptables-firewall

Sa simula ng pag-install, tatanungin ng program kung gusto talaga naming mag-configure ng firewall dito. iptables:

Una, kailangan mong tukuyin ang panlabas na interface - "tumingin" sa Internet, i.e. konektado sa modem. Ang mga setting ng interface ay tinukoy sa configuration file /etc/network/interfaces. Halimbawa, maaaring ganito ang hitsura nito:

# Ito ang lo interface - tumuturo sa aming makina mismo. auto lo iface lo inet loopback address 127.0.0.1 netmask 255.0.0.0 # Ito ang interface ng eth0, na konektado sa Internet (ADSL modem) # Ang kakaiba nito ay ang IP address ay dynamic na itinalaga dito ng provider, # samakatuwid ito ay nakatakda pagpipilian ng dhcp auto eth0 iface eth0 inet dhcp # Ito ang interface na nakaharap sa lokal na network # Ang address ng lokal na network ay magiging 192.168.2.0/24 # Para sa mga layuning pangseguridad sa lokal na network, ang gateway ay may static na IP address- 192.168.2.1, # samakatuwid ang static na opsyon ay itinakda # Network mask - 255.255.255.0 # Ang broadcast address ng network sa kasong ito ay magiging 192.168.2.255 auto eth1 iface eth1 inet static address 192.168.2.15.255.255.255.255.255.255.255.255.255.255.25.25 .2.2 55

Kaya, tinitingnan ang mga setting /etc/network/interfaces, ipinapahiwatig namin sa configurator ng firewall na ang aming interface ay panlabas eth0:

Sa tanong kung bibigyan kami ng IP address mula sa provider pabago-bago(gamit ang DHCP protocol), sinasagot namin ng sang-ayon:

Ang susunod na tanong ay kung anong mga serbisyo ang ibibigay mula sa aming computer mga panlabas na gumagamit Internet. Wala kami! Hindi kami nakikibahagi sa propesyonal na web hosting at hindi namin nilayon na ipamahagi ang impormasyon sa labas. Iniwan namin na walang laman ang linya.

Pagkatapos ay mayroong tanong kung magbibigay kami ng anumang mga serbisyo sa UDP. Hindi rin - at iniiwan din naming walang laman ang linya!

Kailangan ba nating ma-ping mula sa labas ng mundo (ibig sabihin, upang suriin kung mayroong koneksyon sa computer kung saan naka-install ang firewall)? Sa aming kaso, ito ay lubos na katanggap-tanggap:

Kinukumpleto nito ang pag-setup para sa isang hiwalay na computer na hindi isang gateway ng lokal na network. Kung plano naming gamitin ang computer bilang gateway, kailangan naming sagutin ang ilan pang tanong. Ipinapahiwatig namin ang interface kung saan nakaharap ang gateway sa lokal na network - sa aming kaso ito ay eth1, gaya ng malinaw mula sa /etc/network/interfaces(kung hindi, para sa isang "malungkot" na computer, iwanang blangko ang field na ito):

Kapag tinanong kung papayagan ang pagsasalin ng NAT, i.e. pag-redirect ng trapiko mula sa Internet sa pamamagitan ng gateway sa lokal na network at pabalik, sumagot kami ng "oo" - ito ay isa sa aming mga pangunahing gawain sa kasong ito:

Pagkatapos ay lumitaw ang tanong: aling segment ng lokal na network ang maaaring ma-access sa pamamagitan ng pag-redirect sa mga panlabas na network? Ang lahat ng mga computer sa aming lokal na network ay may karapatang ma-access ang Internet; ipahiwatig muli ang halaga 192.168.2.0/24

Sa wakas, kinukumpirma namin ang aming pagnanais na ilunsad iptables wala karagdagang tseke mula sa aming panig, ang mga panuntunan para sa firewall ay awtomatikong nabuo ng configurator:

Pagkatapos nito, kung naging maayos ang lahat, ipapakita ang isang mensahe na katulad ng nasa ibaba. Lilitaw na ito sa tuwing magbo-boot ang gateway computer at ipaalam sa iyo na matagumpay na nailunsad ang firewall:

Arno's Iptables Firewall Script v1.8.8c ————————————————————————————- Naipasa ang mga pagsusuri sa katinuan...OK Detected IPTABLES module...

Naglo-load ng mga karagdagang IPTABLES module: Na-load ang lahat ng IPTABLES modules! Kino-configure ang /proc/…. Mga setting: Pag-enable ng anti-spoof gamit ang rp_filter Pag-enable ng proteksyon ng SYN-flood sa pamamagitan ng SYN-cookies Hindi pagpapagana sa pag-log ng mga martians Hindi pagpapagana sa pagtanggap ng mga mensaheng ICMP-redirect Pagtatakda ng max. dami ng sabay-sabay na koneksyon sa 16384 Pag-enable ng proteksyon laban sa mga source routed na packet Pagtatakda ng default na conntrack timeout Pag-enable ng pagbabawas ng kakayahan sa DoS'ing Setting Default TTL=64 Pag-disable sa ECN (Explicit Congestion Notification) Pag-enable ng suporta para sa Flushing route table ng dynamic na IP /proc/ setup tapos na... Mga panuntunan sa pag-flush sa talahanayan ng filter Pagtatakda ng mga default (secure) na mga patakaran Gamit ang loglevel na “info” para sa syslogd Pag-set up ng mga panuntunan sa firewall: ————————————————————————— - Pagtanggap ng mga packet mula sa lokal na loopback device Pag-enable sa pagtatakda ng maximum na laki ng packet sa pamamagitan ng MSS Pag-enable ng mangling TOS Pag-log ng mga stealth scan (nmap probes etc.) enabled Pag-log ng mga packet na may masamang TCP-flags enabled Pag-log ng INVALID packets disabled Pag-log ng fragmented packets enabled Pag-log ng pinagana ang pag-access mula sa mga nakareserbang address Pag-set up ng mga anti-spoof na panuntunan Pagbabasa ng mga custom na IPTABLES na panuntunan mula sa /etc/arno-iptables-firewall/custom-rules Naglo-load ng (user) na mga plugin Pag-set up ng patakaran sa INPUT para sa external net (INET): Pag-enable ng suporta para sa isang DHCP itinalagang IP sa (mga) panlabas na interface: eth0 Pinagana ang pag-log ng mga tahasang naka-block na mga host Pinagana ang pag-log ng mga tinanggihang koneksyon sa lokal na output na pinagana HINDI susuriin ang mga packet para sa mga pribadong source address na Pinapahintulutan ang buong mundo na magpadala ng mga ICMP-requests(ping) Pag-log ng nahulog na ICMP- request (ping) packets enabled Pag-log ng mga nalaglag na iba pang ICMP packets enabled Pag-log ng posibleng stealth scans enabled Pag-log ng (iba pa) na mga pagtatangka sa koneksyon sa PRIVILEGED TCP ports enabled Pag-log ng (iba pa) na mga pagtatangka sa koneksyon sa PRIVILEGED UDP ports enabled Pag-log ng (iba pa) na mga pagtatangkang koneksyon sa UNPRIVILEGED TCP ports enabled Ang pag-log ng (iba pa) na mga pagtatangka sa koneksyon sa UNPRIVILEGED na mga UDP port ay pinagana Pag-log ng iba pang mga IP protocol (hindi TCP/UDP/ICMP) na mga pagtatangka sa koneksyon Pinagana Pag-log ng ICMP pagbaha pinagana Paglalapat ng patakaran ng INET sa panlabas na (INET) interface: eth0 ( wala isang panlabas na subnet na tinukoy) Pagse-set up ng patakaran sa INPUT para sa (mga) panloob na (LAN) interface: eth1 Pagpapahintulot sa ICMP-requests(ping) Pagpapahintulot sa lahat ng (iba pang) protocol Pagse-set up ng FORWARD policy para sa internal (LAN) na interface(s): eth1 Pag-log ng tinanggihan ang LAN->INET FORWARD connections enabled Pag-set up ng LAN->INET policy: Pagpapahintulot sa ICMP-requests(ping) Allowing all (other) protocols Enabled masquerading(NAT) via external interface(s): eth0 Adding (internal) host(s) : 192. 168.2.0/24 IPINATUPAD ang seguridad para sa (mga) panlabas na interface sa FORWARD chain Ene 16 23:53:12 Nalalapat ang lahat ng panuntunan sa firewall.

Tandaan 1. Sa karamihan ng mga kaso, ang isang matagumpay na paglulunsad ng firewall ay nangyayari pagkatapos ng unang pakikipag-ugnayan sa configurator. Kung ang isang bagay ay hindi gumana, mahigpit na inirerekomenda na ulitin ang pagsasaayos sa pamamagitan ng pagpapatakbo muli ng configurator na may mga karapatan ng superuser:

# dpkg-reconfigure ang arno-iptables-firewall

Aalisin nito ang mga random na error na maaaring lumitaw kapag sumasagot sa mga tanong mula sa configurator sa panahon ng iyong unang karanasan sa pakikipag-usap dito. Kung hindi ito makakatulong, maaari mong subukang iwasto ito nang manu-mano configuration file mga programa arno-iptables-firewall, ibig sabihin: /etc/arno-iptables-firewall/firewall.conf. Maaaring makatulong na bisitahin ang home site ng lumikha ng programang ito sa: http://rocky.eld.leidenuniv.nl/. Naglalaman ito ng isang napaka-kaalaman na gabay sa pagtatrabaho sa programa, isang kawili-wiling FAQ at, bilang karagdagan, mayroong impormasyon tungkol sa mga bagong bersyon ng programa.

Tandaan 2. Hindi natin dapat kalimutan iyon wala Ang isang firewall ay hindi makakapagbigay ng 100% na garantiya ng seguridad ng pagpapatakbo ng iyong computer sa Internet. Gayunpaman, hindi maaaring pabayaan ang proteksyon ng firewall. Dapat nating gawin ang lahat sa ating makakaya upang pagkatapos ay magtiwala sa awa ng Diyos. "Maliban kung ingatan ng Panginoon ang lungsod, walang kabuluhan ang pagbabantay ng bantay."(Awit 126:1).

Pinagmulan ng artikulo

Sumulat ako ng isang post sa blog tungkol sa mga pangunahing kaalaman Mga panuntunan sa Iptables para sa isang production user ay matagal na ang nakalipas, at malamang na dapat mong basahin ito at ang kaugnay na artikulo sa Stateful Firewall.

Ngunit bago ang kernel 2.6.39 (na kasama at maaari mo itong gamitin para sa pag-whitelist ng IP kung mayroon kang higit sa 10 para i-whitelist (kung saan ang 10 ay arbitrary)).

Pagse-set up ng mga iptable para sa mga dummies

Ang estado ng unang handle na alam nating gusto nating tanggapin o tanggalin, at mga interface.

Kung gusto mo lang payagan ang IP lang, walang estado

malamang na makakatagpo ka ng mga problema na may kaugnayan dito at iminumungkahi kong gamitin ang kundisyon upang gawing mas madali ang iyong buhay. Halimbawa, ang hindi paglutas at tiyak na magdudulot ng mga problema para sa ilang partikular na aplikasyon.

Pangunahing responsable ang Iptables para sa packet filtering. Pagse-set up ng Iptables Ang mano-mano ay medyo mahirap na gawain. Huwag asahan na malaman ito "nagmamadali." Sa kabutihang palad, maraming mga tool na makakatulong sa iyo kung hindi mo pa naiisip ang mga iptable, ngunit kailangan mong ma-secure ang system: fwbuilder, firestarter, guarddog, arno firewall - mahalagang ito ay isang GUI para sa mga iptable. Walang malinaw na sagot kung alin ang mas mabuti. Nasa iyo ang pagpipilian. Gayunpaman, ang artikulo ngayon ay partikular na nakatuon sa mga iptable at nahahati sa dalawang bahagi: teorya at kasanayan. Ang pinaka-walang pasensya ay maaaring agad na kumpletuhin ang praktikal na bahagi, kahit na ang diskarte na ito ay hindi inirerekomenda.

Pansin! Ang lahat ng mga aksyon na may mga iptable ay ginagawa sa ngalan ng isang may pribilehiyong user!

Teorya

iptables entry format iptables [-t table] [command] [action] Halimbawa: iptables -t filter -A INPUT ACCEPT

Mga aksyon

  • ACCEPT - Tanggapin ang package
  • DROP - Mag-drop ng isang pakete
  • DNAT - I-convert ang Destination Address
  • SNAT - Baguhin ang papalabas na IP address sa packet header
  • LOG - Pag-log ng mga packet at kaganapan
  • MARK - Magtakda ng marka sa isang pakete
  • MASQUERADE - Baguhin ang papalabas na IP address sa packet header (pagkakaiba sa SNAT - gumagana sa mga dynamic na IP)
  • QUEUE - I-queue ang isang packet para sa pagproseso
  • REDIRECT - I-redirect ang isang packet/flow sa isa pang port
  • REJECT - I-drop ang packet + abiso malayong sistema tungkol doon. na tinanggihan ang kanyang pakete
  • RETURN - Itigil ang packet mula sa paglipat sa kahabaan ng kasalukuyang chain at ibalik ito sa calling chain

Mga koponan

  • -A - Magdagdag ng panuntunan sa chain
  • -D - Alisin ang isang panuntunan mula sa chain
  • -R - Palitan ang isang tuntunin ng isa pa
  • -I - Magpasok ng bagong panuntunan
  • -L - Ilista ang mga umiiral na panuntunan
  • -F - I-reset ang mga panuntunan
  • -Z - I-reset ang mga counter sa isang ibinigay na chain
  • -N - Lumikha ng bagong chain na may ibinigay na pangalan
  • -X - Tanggalin ang chain
  • -P - Itakda ang default na patakaran para sa napiling chain
  • -E - Palitan ang pangalan ng chain ng user

Pamantayan (pangkalahatan)

  • -p - Tukuyin ang uri ng protocol
  • -s - packet source IP address
  • -d - IP address ng tatanggap ng packet
  • -j - Tukuyin ang aksyon para sa panuntunan
  • -i - Interface kung saan natanggap ang packet
  • -o - Tukuyin ang pangalan ng output interface
  • -f - Ipalaganap ang panuntunan sa lahat ng mga fragment ng packet

Pamantayan ng TCP:

  • –tcp-flags - Tukuyin ang packet mask at mga flag

Pamantayan ng UDP:

  • –sport - Port kung saan ipinadala ang packet
  • –dport - Port kung saan naka-address ang packet

Higit pang mga detalye sa man iptables

Magsanay

Tingnan kasalukuyang configuration

$ sudo iptables -L Chain INPUT (policy ACCEPT) target prot opt ​​source destination Chain FORWARD (policy ACCEPT) target prot opt ​​source destination Chain OUTPUT (policy ACCEPT) target prot opt ​​source destination

Kung makakita ka ng ganito, nangangahulugan ito na hindi pa naka-configure ang iyong firewall at pinapayagan ang lahat. Ayusin natin ang sitwasyon.

Pagtatakda ng Default na Patakaran

  • iptables -P INPUT DROP - pagharang sa mga papasok na packet
  • iptables -P OUTPUT ACCEPT - payagan ang mga papalabas na packet
  • iptables -P FORWARD DROP - pagproseso ng mga packet na nakarating sa server mula sa ibang makina at naghihintay ng karagdagang pagpapasa. Sa halimbawa ay naka-block ito. Sa kasong ito, kakailanganin mong magdagdag ng mga panuntunan para sa mga pinagkakatiwalaang makina.

Dahil naka-block ang mga papasok na INPUT packet, isusulat namin ang sumusunod na panuntunan:

$ sudo iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT

Papayagan nito ang pagtanggap ng mga packet mula sa isang dating naitatag na koneksyon at pagtanggap ng mga bagong packet na nabuo ng koneksyon na ito.

O nagpapahiwatig ng uri ng protocol:

$ sudo iptables -A INPUT -p TCP -m state --state ESTABLISHED,RELATED -j ACCEPT $ sudo iptables -A INPUT -p UDP -m state --state ESTABLISHED, RELATED -j ACCEPT

Ngayon ang lokal na interface:

$ sudo iptables -A INPUT -i lo -j ACCEPT

  • BAGONG - data na nagsisimula ng bagong koneksyon.
  • ESTABLISHED - isang packet na nagmumula sa isang naitatag na koneksyon.
  • KAUGNAYAN - isang bagong data packet, ngunit nabuo ng isang lumang itinatag na koneksyon
  • INVALID - kaya malinaw

$ sudo iptables-save > /etc/iptables.up.rules

Paganahin ang mga panuntunang ito:

$sudo iptables-restore< /etc/iptables.up.rules

At tingnan ang pagkakaiba:

$sudo iptables -L

Ilunsad ang mga iptable sa pagsisimula ng system:

Sa /etc/init.d na direktoryo, lumikha ng file na tinatawag na iptables

$ sudo touch /etc/init.d/iptables

Isinulat namin ang sumusunod dito:

#!/bin/sh /sbin/iptables-restore< /etc/iptables.up.rules

Ginagawang executable ang iptables file:

$ sudo chmod +x /etc/init.d/iptables

Idagdag ito sa autorun

$ sudo update-rc.d -n iptables mga default

Ilunsad ang mga iptable kapag nakakonekta sa network:

$ sudo echo "#! /sbin/iptables-restore" > /etc/network/if-up.d/iptables.up.rules $ sudo iptables-save >> /etc/network/if-up.d/iptables. up.rules $ sudo chmod +x /etc/network/if-up.d/iptables.up.rules

Tandaan: sa anumang oras maaari mong suriin kung ang iyong mga panuntunan ay na-load sa pamamagitan lamang ng pagpasok ng iptables-save bilang root

Para sa archlinux, ang pag-save ng mga panuntunan sa iptables ay ginagawa gamit ang utos:

$ sudo rc.d i-save ang mga iptables