Ang Gabay ng Nagsisimula sa mga iptable, ang Linux Firewall

Ang Iptables ay isang lubos na kakayahang umangkop na utility ng firewall na binuo para sa mga operating system ng Linux. Kung ikaw man ay isang baguhang geek ng Linux o isang administrator ng system, marahil ay ilang paraan na maaaring mahusay na magamit sa iyo ang mga iptable. Basahin habang ipinakita namin sa iyo kung paano i-configure ang pinaka maraming nalalaman na firewall ng Linux.

Kuhang larawan ni ezioman.

Tungkol sa mga iptable

Ang iptables ay isang command-line firewall utility na gumagamit ng mga chain ng patakaran upang payagan o harangan ang trapiko. Kapag ang isang koneksyon ay sumusubok na maitaguyod ang sarili sa iyong system, ang mga iptable ay naghahanap ng isang panuntunan sa listahan nito upang maitugma ito. Kung hindi ito makahanap ng isa, magbabago ito sa default na pagkilos.

Ang mga iptable ay halos palaging may paunang naka-install sa anumang pamamahagi ng Linux. Upang i-update / i-install ito, kunin lang ang iptables package:

sudo apt-get install iptables

Mayroong mga kahalili na GUI sa mga iptable tulad ng Firestarter, ngunit ang iptables ay hindi talaga mahirap kapag mayroon kang ilang mga utos na nababa. Nais mong maging labis na maingat kapag nag-configure ng mga patakaran ng iptables, partikular kung ikaw ay SSH sa isang server, dahil ang isang maling utos ay maaaring permanenteng i-lock out ka hanggang sa manu-manong naayos ito sa pisikal na makina.

Mga Uri ng Chains

Gumagamit ang iptables ng tatlong magkakaibang kadena: input, forward, at output.

Input - Ginagamit ang kadena na ito upang makontrol ang pag-uugali para sa mga papasok na koneksyon. Halimbawa, kung susubukan ng isang gumagamit na SSH sa iyong PC / server, susubukan ng iptables na itugma ang IP address at port sa isang panuntunan sa input chain.

Pasulong - Ginagamit ang kadena na ito para sa mga papasok na koneksyon na hindi talaga naihahatid nang lokal. Mag-isip ng isang router - ang data ay palaging ipinapadala dito ngunit bihirang talagang nakalaan para sa router mismo; ang data ay naipasa lamang sa target nito. Maliban kung gumagawa ka ng ilang uri ng pagruruta, NATing, o iba pa sa iyong system na nangangailangan ng pagpapasa, ni hindi mo gagamitin ang kadena na ito.

Mayroong isang sigurado-sunog na paraan upang suriin kung gumagamit o kailangan ng iyong system ang / hindi kinakailangan ng chain ng pasulong.

iptables -L -v

Ang screenshot sa itaas 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 11GB ng mga packet at ang output chain ay naproseso ang 17GB. Ang forward chain, sa kabilang banda, ay hindi kinakailangan upang maproseso ang isang solong packet. Ito ay dahil ang server ay hindi gumagawa ng anumang uri ng pagpapasa o ginagamit bilang isang pass-through na aparato.

Paglabas - Ginagamit ang kadena na ito para sa mga papalabas na koneksyon. Halimbawa, kung susubukan mong i-ping howtogeek.com, susuriin ng iptables ang output chain upang makita kung ano ang mga patakaran tungkol sa ping at howtogeek.com bago magpasya na payagan o tanggihan ang pagtatangka sa koneksyon.

Ang babala

Kahit na ang pag-ping sa isang panlabas na host ay tila isang bagay na kakailanganin lamang na daanan ang output chain, tandaan na upang maibalik ang data, gagamitin din ang input chain. Kapag gumagamit ng mga iptable upang i-lock ang iyong system, tandaan na maraming mga protokol ang mangangailangan ng dalawang-daan na komunikasyon, kaya't ang parehong mga input at output chain ay kailangang mai-configure nang maayos. Ang SSH ay isang pangkaraniwang protokol na nakakalimutang payagan ng mga tao sa parehong kadena.

Patakaran sa Chain Default na Pag-uugali

Bago pumasok at i-configure ang mga tukoy na panuntunan, gugustuhin mong magpasya kung ano ang nais mong maging default na pag-uugali ng tatlong mga kadena. Sa madaling salita, ano ang gusto mong gawin ng mga iptable kung ang koneksyon ay hindi tumutugma sa anumang mayroon nang mga panuntunan?

Upang makita kung ano ang kasalukuyang naka-configure ang iyong mga chain ng patakaran sa hindi tugma na trapiko, patakbuhin ang iptables -L utos

Tulad ng nakikita mo, ginamit din namin ang utos ng grep upang bigyan kami ng mas malinis na output. Sa screenshot na iyon, ang aming mga kadena ay kasalukuyang may korte upang makatanggap ng trapiko.

Mas maraming beses kaysa sa hindi, gugustuhin mong tanggapin ng iyong system ang mga koneksyon bilang default. Maliban kung binago mo ang mga panuntunan sa kadena ng patakaran dati, dapat na na-configure ang setting na ito. Alinmang paraan, narito ang utos na tanggapin ang mga koneksyon bilang default:

iptables --policy INPUT ACCEPT


iptables --policy OUTPUT ACCEPT


iptables --policy FORWARD ACCEPT

Sa pamamagitan ng pag-default sa patakaran na tanggapin, maaari mong gamitin ang mga iptable upang tanggihan ang mga tukoy na mga IP address o numero ng port, habang patuloy na tanggapin ang lahat ng iba pang mga koneksyon. Makakarating kami sa mga utos na iyon sa isang minuto.

Kung mas gugustuhin mong tanggihan ang lahat ng mga koneksyon at manu-manong tukuyin kung alin ang nais mong payagan na kumonekta, dapat mong baguhin ang default na patakaran ng iyong mga kadena upang bumagsak. Ang paggawa nito ay maaaring maging kapaki-pakinabang lamang para sa mga server na naglalaman ng sensitibong impormasyon at mayroon lamang parehong mga IP address na kumonekta sa kanila.

iptables --policy INPUT DROP


iptables --policy OUTPUT DROP


iptables --policy FORWARD DROP

Mga Sagot na tukoy sa koneksyon

Sa iyong mga default na patakaran sa kadena na naka-configure, maaari mong simulang magdagdag ng mga panuntunan sa mga iptable upang malaman nito kung ano ang gagawin kapag nakatagpo ito ng isang koneksyon mula sa o sa isang partikular na IP address o port. Sa patnubay na ito, tatalakayin natin ang tatlong pinakahahalaga at karaniwang ginagamit na "mga tugon".

Tanggapin - Payagan ang koneksyon.

Patak - I-drop ang koneksyon, kumilos tulad ng hindi ito nangyari. Ito ay pinakamahusay kung hindi mo nais na mapagkukunan ng mapagkukunan na umiiral ang iyong system.

Tanggihan - Huwag payagan ang koneksyon, ngunit magpadala ng isang error. Mahusay ito kung hindi mo nais ang isang partikular na mapagkukunan na kumonekta sa iyong system, ngunit nais mong malaman nila na hinarangan sila ng iyong firewall.

Ang pinakamahusay na paraan upang maipakita ang pagkakaiba sa pagitan ng tatlong mga patakaran na ito ay upang ipakita kung ano ang hitsura nito kapag sinusubukan ng isang PC na i-ping ang isang Linux machine na may mga naka-configure na iptable para sa bawat isa sa mga setting na ito.

Pinapayagan ang koneksyon:

Inaalis ang koneksyon:

Tanggihan ang koneksyon:

Pinapayagan o Harangan ang Mga Tiyak na Koneksyon

Sa iyong mga kadena ng patakaran na naka-configure, maaari mo na ngayong i-configure ang mga iptable upang payagan o harangan ang mga tukoy na address, saklaw ng address, at port. Sa mga halimbawang ito, itatakda namin ang mga koneksyon sa PATULOG, ngunit maaari mong ilipat ang mga ito sa TANGGAPIN o TANGGIHAN, depende sa iyong mga pangangailangan at kung paano mo na-configure ang iyong mga kadena ng patakaran.

Tandaan: Sa mga halimbawang ito, gagamitin namin iptables -A upang idagdag ang mga patakaran sa mayroon nang kadena. Ang mga iptable ay nagsisimula sa tuktok ng listahan nito at dumaan sa bawat panuntunan hanggang sa makahanap ito ng isa na tumutugma. Kung kailangan mong magsingit ng panuntunan sa itaas ng isa pa, maaari mong gamitin iptables -ako [chain] [number] upang tukuyin ang bilang dapat itong nasa listahan.

Mga koneksyon mula sa isang solong IP address

Ipinapakita ng halimbawang ito kung paano i-block ang lahat ng mga koneksyon mula sa IP address 10.10.10.10.

iptables -A INPUT -s 10.10.10.10 -j DROP

Mga koneksyon mula sa isang saklaw ng mga IP address

Ipinapakita ng halimbawang ito kung paano i-block ang lahat ng mga IP address sa saklaw ng network na 10.10.10.0/24. Maaari kang gumamit ng isang netmask o karaniwang slash notation upang tukuyin ang saklaw ng mga IP address.

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

o

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

Mga koneksyon sa isang tukoy na port

Ipinapakita ng halimbawang ito kung paano i-block ang mga koneksyon sa SSH mula 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 numero ng port. Ang -p tcp Ang bahagi ng code ay nagsasabi sa mga iptable kung anong uri ng koneksyon ang ginagamit ng protokol. Kung nagba-block ka ng isang protocol na gumagamit ng UDP kaysa sa TCP, kung gayon -p udp ay kinakailangan sa halip.

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

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

Mga Estadong Koneksyon

Tulad ng nabanggit namin kanina, maraming mga protokol ang mangangailangan ng dalawang-daan na komunikasyon. Halimbawa, kung nais mong payagan ang mga koneksyon ng SSH sa iyong system, ang mga input at output chain ay mangangailangan ng isang tuntunin na idinagdag sa kanila. Ngunit, paano kung nais mo lamang ang SSH na pumasok sa iyong system na payagan? Hindi ba magpapahintulot sa pagdaragdag ng isang panuntunan sa kadena ng output sa mga papalabas na pagtatangka ng SSH?

Doon pumapasok ang mga estado ng koneksyon, na magbibigay sa iyo ng kakayahang kakailanganin mong payagan ang pakikipag-usap sa dalawang paraan ngunit pinapayagan lamang ang isang koneksyon na maitaguyod. Tingnan ang halimbawang ito, kung saan ang mga koneksyon ng SSH MULA sa 10.10.10.10 ay pinapayagan, ngunit ang mga koneksyon ng SSH SA 10.10.10.10 ay hindi. Gayunpaman, pinapayagan ang system na magpadala ng impormasyon pabalik sa SSH hangga't naitatag na ang sesyon, na ginagawang posible ang komunikasyon ng SSH sa pagitan ng dalawang host na ito.

iptables -A INPUT -p tcp --dport ssh -s 10.10.10.10 -m estado --state BAGO, NAGTATANG -j TANGGAP

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

Pag-save ng Mga Pagbabago

Ang mga pagbabagong gagawin mo sa iyong mga panuntunan sa iptables ay tatanggalin sa susunod na ang serbisyo ng iptables ay maaring i-restart maliban kung nagpatupad ka ng isang utos upang mai-save ang mga pagbabago. Ang utos na ito ay maaaring magkakaiba depende sa iyong pamamahagi:

Ubuntu:

sudo / sbin / iptables-save

Red Hat / CentOS:

/ sbin / service iptables makatipid

O kaya naman

/etc/init.d/iptables makatipid

Iba Pang Mga Utos

Ilista ang kasalukuyang mga na-configure na panuntunan sa iptable:

iptables -L

Pagdaragdag ng -v bibigyan ka ng opsyon ng packet at byte na impormasyon, at pagdaragdag -n ililista ang lahat ayon sa bilang. Sa madaling salita - ang mga hostname, protocol, at network ay nakalista bilang mga numero.

Upang i-clear ang lahat ng kasalukuyang naka-configure na mga panuntunan, maaari kang mag-isyu ng flush command.

iptables -F


$config[zx-auto] not found$config[zx-overlay] not found