Pag-secure ng iyong network gamit ang Iptables - Proxy - NAT - IDS: BAHAGI 1

Sinusubukan ng post na ito na linawin nang kaunti tungkol sa kung paano gumagana ang mga network at kung paano gawing isang Router ang aming kagamitan sa Linux na tinitiyak ng kaunti pa ang aming network, maging ito ay tahanan o kahit na negosyo. Kaya't magsimula tayo sa negosyo:

Ang nilalamang ito ay batay sa librong "Linux - System Administration at Network Services Operation" - Sébastien BOBILLIER

Pagruruta at pag-filter

Upang pag-usapan at maunawaan ang tungkol sa pagruruta maaari muna nating tukuyin kung ano ang pagpapaandar ng router? Para sa mga ito maaari nating sabihin na ang isang router, bilang karagdagan sa paglikha ng isang network at pinapayagan ang koneksyon sa iba pang mga kagamitan (alam na maaari naming gawin ito sa isang AP, Switch, Hub o iba pa) ay may kakayahang ikonekta ang dalawang magkakaibang mga network sa bawat isa.

router

Tulad ng nakikita natin sa imahe, mayroong isang lokal na network na "10.0.1.0" na nilikha ng router, at naabot ang isa sa dalawang interface nito. Pagkatapos ang router sa iba pang interface nito, ay may isa pang network, kasama ang pampublikong IP na kung saan maaari itong kumonekta sa Internet. Ang pag-andar sa pagruruta ay karaniwang upang magsilbi bilang isang tagapamagitan sa pagitan ng dalawang mga network na ito upang maaari silang makipag-usap.

Linux bilang isang router.

Naturally, ang Linux Kernel ay mayroon nang kakayahang gumawa ng "pagpapasa", ngunit sa pamamagitan ng default hindi ito pinagana, kaya kung nais naming gawin ng aming Linux ang gawaing ito dapat kaming pumunta sa file.

/proc/sys/net/ipv4/ip_forward

Malalaman doon na ito ay isang file na naglalaman lamang ng isang zero na "0", kung ano ang dapat nating gawin ay palitan ito ng isang isang "1" upang buhayin ang pag-uugaling ito. Sa kasamaang palad ay natanggal ito kapag na-restart namin ang computer, upang iwanang ito ay aktibo bilang default dapat naming gamitin ang utos:

sysctl net.ipv4.ip_forward=1

O i-edit ito nang direkta sa file /etc/sysctl.conf. Depende sa pamamahagi ng pagsasaayos na ito ay maaari ding sa isang file sa  /etc/sysctl.d/.

Bilang default ang aming Linux ay dapat magkaroon ng isang talahanayan ng pagruruta, na sa pangkalahatan ay ang pagsasaayos ng aming lan network at koneksyon sa router. Kung nais naming makita ang pagruruta na ito maaari kaming gumamit ng dalawang mga utos:

route -n

o

netstat -nr

Ang parehong mga utos ay dapat na bumalik sa pareho.

Screenshot mula sa 2014-09-30 18:23:06

Sa pangkalahatan, ang pagsasaayos na ito ay sapat para sa iyong Linux upang maghatid bilang isang Gateway at ang iba pang mga computer ay maaaring mag-navigate sa pamamagitan ng aming computer. Ngayon, kung nais naming kumonekta ang aming Linux ng dalawa o higit pang mga network, lokal man o hindi, halimbawa, maaari nating magamit ang mga static na ruta.

Ipagpalagay na ang aking Linux ay may dalawang mga interface ng network, ang una ay may koneksyon sa Internet na ang network ay 172.26.0.0 at ang pangalawa (10.0.0.0) ay may mga computer mula sa isa pang lokal na network. Kung nais naming mag-ruta ng mga packet sa ibang network na maaari naming magamit:

route add -net 10.0.0.0 netmask 255.0.0.0 gw 172.26.0.8

Sa pangkalahatan ito ay:

route add -net REDDESTINO netmask MASCARA gw IPDELLINUX

kung magbibigay tayo ruta -n hindi alintana kung mayroon ang network na ito o hindi, ang pagruruta na ito ay maaayos sa aming talahanayan.

Screenshot mula sa 2014-09-30 18:31:35

Kung nais naming alisin ang nasabing pagruruta maaari naming gamitin

route del -net 10.0.0.0 netmask 255.0.0.0

iptables.

Karaniwan ang iptables ay ginagamit para sa pag-filter ng mga packet, papalabas, papasok o iba pa, ginagawa itong isang mahusay na tool upang pamahalaan ang aming trapiko sa network. Sa gayon, mga iptable, tulad ng pinapayagan nitong i-filter ang trapiko mula sa parehong computer, pinapayagan din kaming i-filter ang trapikong dumadaan dito. (Pagpasa). Ang mga Iptable ay maaaring nahahati sa mga talahanayan, kadena, at pagkilos.

  • Mga board:  karaniwang maaaring mayroong dalawang mga talahanayan, salain, upang salain ang mga packet at  nat upang isalin ang mga address, iyon ay, upang ilipat mula sa isang network papunta sa isa pa.
  • Mga kadena: Ang kadena ay tumutukoy sa uri ng trapiko na nais nating salain o lumangoy, iyon ay, sa aling trapiko ilalagay natin ang mga talahanayan? at maaari silang maging:  INPUT: Papasok na trapiko, OUTPUT: papasok na trapiko o PAASA: Trapiko na dumadaan dito, ngunit hindi ito isang tamang koneksyon.
  • Maaari rin itong lumitaw POST-ROUTING, na kung saan ay ginagamit upang gamutin ang packet sa isang tiyak na paraan pagkatapos na ito ay na-redirect.
  • Mga aksyon: Karaniwang mga pagkilos ang kilos na isasagawa sa kadena. Ang pagkilos na ito ay maaaring DROP sinisira lang yan traffic or TANGGAPIN. na nagpapahintulot sa trapiko na gawin ang aksyon na iyon.

Ang mga patakaran ng IPTABLES ay nai-save at naisakatuparan sa pagkakasunud-sunod na nilikha, at kung ang isang patakaran ay magtatanggal ng nakaraang panuntunan, ang huling patakaran sa pagkakasunud-sunod ay palaging inilalapat.

Mga Patakaran sa Firewall.

Sa pangkalahatan, natural na gumagana ang mga firewall sa dalawang paraan:

  1. Payagan ang lahat ng trapiko maliban sa, o
  2. Huwag payagan ang anumang trapiko maliban sa ...

Upang maglapat ng mga patakaran, gamitin IPTABLES - P ACTION CHAIN

Kung saan ang string ay kumakatawan sa uri ng trapiko (INPUT, OUTPUT, FORWARD, POSTROUTING ...) at ang aksyon ay DROP O ACCEPT.

Tingnan natin ang isang halimbawa.

Screenshot mula sa 2014-09-30 18:53:23

Narito nakikita natin na noong una ay nakapag-ping ako, pagkatapos ay sinabi ko sa IPTABLES na ang lahat ng trapiko sa OUTPUT ay DROP o hindi pinapayagan. Pagkatapos sinabi ko sa IPTABLES na tanggapin ito.

Kung magtatayo kami ng isang firewall mula sa simula dapat naming palaging ilapat ang mga patakaran ng (Huwag payagan ang anumang trapiko maliban sa ... Para sa ito ay inilalapat namin ang mga patakaran

iptables -P INPUT DROP iptables -P OUTPUT DROP iptables -P FORWARD DROP
Kung nalalapat ang mga patakarang ito, wala silang anumang uri ng koneksyon
.

Upang bumalik ay nagsusulat kami ng pareho at pinalitan ang DROP ng ACCEPT.

Sa puntong ito, dahil tinanggihan ang lahat ng trapiko, nagsisimula kaming sabihin sa aming IPTABLES kung anong trapiko ang maaaring magkaroon nito.

Ang syntax ay:

iptables -A cadena -s ip_orgigen -d ip_destino -p protocolo --dport puerto -j acción

Saan:

String = INPUT, OUTPUT o FORWARD

pinagmulan_ip = Pinagmulan ng mga packet, maaari itong maging isang solong IP o isang network at sa kasong ito dapat nating tukuyin ang maskara).

patutunguhan_ip = kung saan pupunta ang mga packet. ito ay maaaring isang solong IP o isang network at sa kasong ito dapat nating tukuyin ang maskara).

protokol = ipinapahiwatig ang protokol na ginamit ng mga packet (icmp, tcp, udp ...)

port = patutunguhan port ng trapiko.

aksyon = PATULO o TANGGAP.

Halimbawa:

Screenshot mula sa 2014-09-30 19:26:41

Nalalapat ang LAHAT ng mga pinaghihigpitang patakaran.

Screenshot mula sa 2014-09-30 19:27:42

Pagkatapos ay idinagdag namin ang mga patakaran upang magkaroon ng trapiko sa pamamagitan ng port 80 HTTP at 443 HTTPS, kasama ang TCP protocol. Pagkatapos port 53 Ito ay inilapat para sa DNS client upang malutas ang mga domain, kung hindi man ay hindi ka mag-navigate. Gumagana ito sa proteksyon ng udp.

Ang linya:

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

Dahil ito sa sumusunod: Kapag gumawa ka ng isang kahilingan sa HTTP halimbawa, kumonekta ka sa port 80 ng server, ngunit ang server upang ibalik ang impormasyon ay kailangang kumonekta sa iyo sa pamamagitan ng anumang port. (Sa pangkalahatan ay higit sa 1024).

Tulad ng lahat ng aming mga port ay sarado na ito ay hindi makakamit maliban kung buksan namin ang lahat ng mga port na mas mataas sa 1024 (Masamang ideya). Ang sinasabi nito ay ang lahat ng papasok na trapiko na nagmumula sa isang koneksyon na itinaguyod ko mismo ay tinanggap. Ibig kong sabihin, isang koneksyon na sa prinsipyo nagsimula ako.

Kapag inilalagay ang OUTPUT sa mga patakaran, nalalapat lamang ito sa mga kagamitang pinag-uusapan, kung ginagamit namin ang aming kagamitan bilang isang router upang payagan ang mga koneksyon na ito, dapat naming baguhin ang OUTPUT sa FORWARD. Dahil ang trapiko ay dumadaan sa computer ngunit hindi nito pinasimulan
Ang lahat ng mga patakarang ito ay tinanggal pagkatapos ng pag-restart, kaya kailangan mong lumikha ng mga script upang magsimula sila bilang default. Ngunit makikita natin ito sa susunod

Sana nagustuhan mo ang impormasyong ito. Sa susunod na pag-uusapan ko ang tungkol sa NAT, Proxy at mga script para sa Firewal.


Iwanan ang iyong puna

Ang iyong email address ay hindi nai-publish. Mga kinakailangang patlang ay minarkahan ng *

*

*

  1. Responsable para sa data: Miguel Ángel Gatón
  2. Layunin ng data: Kontrolin ang SPAM, pamamahala ng komento.
  3. Legitimation: Ang iyong pahintulot
  4. Komunikasyon ng data: Ang data ay hindi maiparating sa mga third party maliban sa ligal na obligasyon.
  5. Imbakan ng data: Ang database na naka-host ng Occentus Networks (EU)
  6. Mga Karapatan: Sa anumang oras maaari mong limitahan, mabawi at tanggalin ang iyong impormasyon.

  1.   Rogelio pinto dijo

    Ito ang batayan na kinukuha ng maraming negosyante upang makagawa ng kanilang sariling mga firewall, iyon ang dahilan kung bakit maraming mga tatak ng mga firewall na may naka-embed na linux sa merkado, ilang mabuti at iba pa ay hindi gaanong gaanong.

  2.   Heber dijo

    Mahusay na artikulo Inaasahan ko ang pangalawang bahagi.

  3.   Milton dijo

    Napakagandang paliwanag, nakatulong ito sa akin na maunawaan ang proxy ng aking trabaho. Salamat

  4.   faustod dijo

    Kumusta Jlcmux,

    Mahusay, nagustuhan ko talaga ito, kailan magagamit ang ibang partido?

    Pagbati at salamat sa pagbabahagi

    1.    @Jlcmux dijo

      Salamat sa komento.

      Ipinadala ko ang iba pang bahagi kahapon, sa kurso ng araw sa palagay ko ilalathala nila ito.

      Pagbati.

  5.   Israel dijo

    Napakagandang artikulo ng kaibigan @ Jlcmux, talagang natutunan ko siya dahil nilinaw niya ang ilang mga pag-aalinlangan na mayroon ako para sa ilang oras, sa pamamagitan ng paraan hindi mo naisip na ibahagi ang aklat ng pinagmulan ng artikulo, iyon ng Sébastien BOBILLIER, mahusay slau2s at ngayon upang makita ang ika-2 bahagi, salu2s.

    1.    @Jlcmux dijo

      Kumusta Salamat sa pagkomento sa Israel.

      Mayroon akong libro sa pisikal na anyo. Ngunit nahanap ko ang link na ito sa Google Books. http://books.google.com.co/books?id=zxASM3ii4GYC&pg=PA356&lpg=PA356&dq=S%C3%A9bastien+BOBILLIER+Linux+%E2%80%93+Administraci%C3%B3n+del+sistema+y+explotaci%C3%B3n+de+los+servicios+de+red#v=onepage&q=

      Kumpleto yata.

  6.   Ariel dijo

    Napakagandang artikulo, nagdagdag ako ng isang katanungan: Ano ang kalamangan ng paggamit ng linux bilang isang router, kung mayroon man, patungkol sa isang hardware na nakatuon dito? O para lang sa ehersisyo? Alam kong may mga nakatuon na distrito ngunit hindi ko alam kung ang mga ito ay upang mai-save ang mga lumang PC o magbigay ng higit na kakayahang umangkop sa pagsasaayos.

    1.    @Jlcmux dijo

      Sa gayon, sa palagay ko ang mga pakinabang at kawalan ay nakasalalay sa senaryo kung saan mo ito ipapatupad. Bakit tiyak na hindi ka bibili ng UTM o ng tulad nito para sa iyong bahay? At marahil para sa isang maliit na negosyo na hindi rin kayang bayaran. Mabuti din ito bilang isang ehersisyo, dahil makakatulong ito sa iyo na maunawaan ang lahat ng lohika nito at mas mahusay mong mai-configure ang isang nakatuong FWall. Bilang karagdagan sa na halos lahat ng mga aparatong ito talaga kung ano ang mayroon sila ay naka-embed na Linux.

      Pagbati.

  7.   Ariel dijo

    Kumusta, isang katanungan, makakagawa ka ba ng isang "artipisyal" na interface sa linux para sa katulad na pagruruta sa pagitan ng mga network? (Style ng packet tracer) upang gumana sa mga virtual machine? hal kung mayroon akong eth0 (dahil mayroon akong isang kard ng kurso) maaari ba akong lumikha ng eth1 upang makagawa ng isa pang network? Napakagandang tutor!

    1.    masigla dijo

      Sa Linux maaari kang lumikha ng mga virtual interface, syempre. Kung mayroon kang eth0, maaari kang magkaroon ng eth0: 0, eth0: 1, eth0: 2 ... atbp

  8.   chinoloco dijo

    Napakaganda, salamat sa pagbabahagi