Tvorba firewallu – dokončenie I.

linux_server.jpg V pre­doš­lej čas­ti se­riá­lu sme za­ča­li tvo­riť fi­rewall v štý­le pa­ra­met­ri­zo­va­né­ho skrip­tu. Po­ve­da­li sme si, že ce­lý fi­rewall roz­de­lí­me do sek­cií, kto­ré eš­te pre preh­ľad­nosť od­de­lí­me op­tic­ky po­znám­ka­mi. Mi­nu­le sme do­kon­či­li sek­ciu de­fi­ní­cie sie­te, te­raz bu­de­me po­kra­čo­vať v jed­not­li­vých bo­doch, tak ako sme si ich sta­no­vi­li.

Ini­cia­li­zá­cia fi­rewal­lu
V tej­to sek­cii sa bu­dú nac­hád­zať prí­ka­zy na nas­ta­ve­nie štan­dar­dnej po­li­ti­ky fi­rewal­lu, kto­ré už po­zná­me. Ob­sah tej­to sek­cie je na vý­pi­se č. 1.

###########################################################################
#    Ini­cia­li­za­cia FI­REWAL­Lu                                              #
###########################################################################

  ec­ho "Nas­ta­ve­nie stan­dar­dnej po­li­ti­ky fi­rewal­lu:"
  ip­tab­les -P IN­PUT DROP;
  ip­tab­les -P OUT­PUT AC­CEPT;
  ip­tab­les -P FORWARD DROP;
  
  ip­tab­les -F;
  ip­tab­les -F -t nat;
  ip­tab­les -X;
  ip­tab­les -X -t nat;
  
  ip­tab­les -N lo­cal;
  ip­tab­les -N wan;

  # za­sta­ve­nie IP forwar­din­gu pred nas­ta­ve­ním pra­vi­diel
  ec­ho 0 > /proc/sys/net/ipv4/ip_forward 
  ec­ho "IN­PUT   -> DROP";
  ec­ho "OUT­PUT  -> AC­CEPT";
  ec­ho "FORWARD -> DROP";
  ec­ho "Pac­ket forwar­ding vy­pnu­ty po­čas ini­cia­li­za­cie FW."

  ###########################################################################
#    Ko­niec ini­cia­li­za­cie FI­REWAL­Lu                                       # ###########################################################################

  
  

Pri­bud­li prí­ka­zy ip­tab­les –F a ip­tab­les –X. Pa­ra­me­ter –F spô­so­bí vy­ma­za­nie pra­vi­diel v da­nej re­ťa­zi, pa­ra­me­ter –X po vý­ma­ze pra­vi­diel da­nú re­ťaz zru­ší. Nas­le­du­je vy­tvo­re­nie na­šich po­moc­ných re­ťa­zí lo­cal a wan. Je veľ­mi vhod­né, aby po­čas tvor­by pra­vi­diel fi­rewal­lu bo­lo vy­pnu­té forwar­do­va­nie pa­ke­tov. To do­siah­ne­me za­pí­sa­ním hod­no­ty 0 (nu­la) do sú­bo­ru /proc/sys/net/ipv4/ip_forward. Nes­mie­me však za­bud­núť po skon­če­ní ini­cia­li­zá­cie forwar­do­va­nie pa­ke­tov za­pnúť, inak server s fi­rewallom ne­bu­de pre­po­sie­lať pa­ke­ty z jed­nej sie­te do dru­hej.

Vý­stup­né pra­vid­lá
V tej­to sek­cii na­de­fi­nu­je­me pra­vid­lá pre vy­stu­pu­jú­ce pa­ke­ty z lo­kál­nej sie­te do von­kaj­šej sie­te. Ob­sah tej­to sek­cie je na vý­pi­se č. 2.

###########################################################################
#    Vy­stup­ne pra­vid­la                                                    #  ###########################################################################
  
  # Z lo­kal­nej sie­te FORWAR­DING na von­kaj­si inter­fa­ce
  ip­tab­les -A FORWARD -s "$INTER­NAL_NETWORK/$INTER­NAL_MASK" -o "$EXTER­NAL_IN­TER­FA­CE" -j AC­CEPT;

  # Nas­ta­ve­nie mas­ka­ra­dy vnu­tor­nej sie­te, ak je po­za­do­va­ne
  [ "$USE_MASQUERA­DE" == "yes" ] && ec­ho "# Mas­ko­va­ne spo­je­nie s" && \
  ip­tab­les -t nat -A PO­STROU­TING -s $INTER­NAL_NETWORK/$INTER­NAL_MASK -o $EXTER­NAL_IN­TER­FA­CE -j MASQUERA­DE;
    
  
  # Po­vo­le­nie uz vy­tvo­re­ných spo­je­ní z von­kaj­šej sie­te
  ip­tab­les -A FORWARD -s ! "$INTER­NAL_NETWORK/$INTER­NAL_MASK" -o "$INTER­NAL_IN­TER­FA­CE" -m sta­te --sta­te ES­TAB­LIS­HED -j AC­CEPT;

  # vset­ko os­tat­ne bu­de za­ho­de­ne (DROP­PED) de­faul­tnou po­li­ti­kou

  ###########################################################################
#    Ko­niec vy­stup­nych pra­vi­diel                                          #  ###########################################################################

V po­dsta­te vy­tvo­rí­me pra­vid­lá, kde po­vo­lí­me pa­ke­ty, kto­ré po­chád­za­jú z vnú­tor­nej sie­te (ma­jú IP ad­re­su z vnú­tor­nej sie­te) a od­chád­za­jú do von­kaj­šej sie­te. Tá­to po­dmien­ka za­brá­ni to­mu, aby sa ap­li­ko­va­li pra­vid­lá pre pa­ke­ty, kto­ré neo­pus­tia vnú­tor­nú sieť. A tu sa prá­ve uká­že krá­sa tak­to vy­tvo­re­né­ho skrip­tu. Všim­ni­me si, že v tej­to sek­cii, ale aj ce­lom skrip­te pra­cu­je­me s pre­men­ný­mi, kto­ré sme de­fi­no­va­li v sek­cii de­fi­ní­cie sie­te. Už ne­mu­sí­me stá­le za­pi­so­vať IP ad­re­sy a mas­ky, čís­la roz­hra­ní a po­dob­ne. Dru­há vý­ho­da je ľah­ká mo­di­fi­ká­cia ce­lé­ho skrip­tu. Ak sa nie­čo zme­ní v sie­ti, sta­čí pre­pí­sať iba sek­ciu de­fi­ní­cií, všet­ko os­tat­né zos­tá­va. Jed­no­duc­ho uni­ver­za­li­ta!

Ak sme nas­ta­vi­li po­dpo­ru maš­ka­rá­dy (te­da nas­ta­vi­li sme USE_MASQUERA­DE = yes), te­raz sa po­vo­lí maš­ka­rá­da pre pa­ke­ty, kto­ré po­chád­za­jú z vnú­tor­nej sie­te a od­chád­za­jú do von­kaj­šej sie­te. Na­ko­niec v tej­to čas­ti po­vo­lí­me v re­ťa­zi FORWARD vstup TCP pa­ke­tov, kto­ré sí­ce po­chád­za­jú z von­kaj­šej sie­te a vstu­pu­jú do fi­rewal­lu, ale pa­tria k už vy­tvo­re­ným spo­je­niam (ES­TAB­LIS­HED), te­da sú to v po­dsta­te od­po­ve­de na spo­je­nia ini­cia­li­zo­va­né z vnú­tor­nej sie­te. Zvyš­né pa­ke­ty, kto­ré sa dos­ta­li až sem, bu­dú za­ho­de­né štan­dar­dnou po­li­ti­kou fi­rewal­lu.

Vstup­né pra­vid­lá
V tej­to sek­cii nas­ta­ví­me pra­vid­lá pre vstup pa­ke­tov do fi­rewal­lu. Ob­sah sek­cie je na vý­pi­se č. 3.

###########################################################################
#    Vstup­ne pra­vid­la                                                     #  ###########################################################################

  #Po­vo­le­nie vstu­pu pre mior zvon­ka aj zvnut­ra na po­rt 222 - ssh
ip­tab­les -A IN­PUT -i eth1 -s 213.161.218.2 -d 10.12.14.2 -p tcp --dport 222 -j AC­CEPT
ip­tab­les -A IN­PUT -i eth1 -s 213.61.126.18 -d 10.12.14.2 -p tcp --dport 222 -j AC­CEPT
ip­tab­les -A IN­PUT -i eth0 -s 192.168.10.11 -d 192.168.10.1 -p tcp --dport 222 -j AC­CEPT

###########################################################################

  # Po­vo­le­nie exis­tu­ju­cich spo­je­ni
  ip­tab­les -A wan -d "$EXTER­NAL_IP" -m sta­te --sta­te ES­TAB­LIS­HED,RE­LA­TED -j AC­CEPT ;
  ip­tab­les -A lo­cal  -d "$EXTER­NAL_IP" -m sta­te --sta­te ES­TAB­LIS­HED,RE­LA­TED -j AC­CEPT ;
  ip­tab­les -A lo­cal  -d "$INTER­NAL_IP" -m sta­te --sta­te ES­TAB­LIS­HED,RE­LA­TED -j AC­CEPT ;

  # Po­vo­le­nie icmp z von­kaj­sej sie­te
  ip­tab­les -A wan -d "$EXTER­NAL_IP" -p icmp -j AC­CEPT ; 

  # Po­vo­le­nie icmp z vnu­tor­nej sie­te
  ip­tab­les -A lo­cal -d "$INTER­NAL_IP" -p icmp -j AC­CEPT ; 
  ip­tab­les -A lo­cal -d "$EXTER­NAL_IP" -p icmp -j AC­CEPT ; 
 ###########################################################################


Tá­to sek­cia sa skla­dá z nie­koľ­kých čas­tí. Naj­prv de­fi­nu­je­me vý­nim­ky pre fi­rewall. Pred­stav­me si, že chce­me ria­diť li­nuxový server s fi­rewallom po­mo­cou pro­to­ko­lu ssh z von­kaj­šej aj vnú­tor­nej sie­te. Chce­me však, aby sa na ten­to server da­lo pris­tú­piť iba z ur­či­tých vop­red de­fi­no­va­ných IP ad­ries, nap­rík­lad 213.161.218.2 a 213.61.126.18. Tie­to pra­vid­lá vlo­ží­me do re­ťa­ze IN­PUT.

Po­znám­ka:
Nes­mie­me za­bud­núť nas­ta­viť po­rt č. 222 aj v kon­fi­gu­rač­nom sú­bo­re prog­ra­mu ssh, inak by tak­to uve­de­né spo­je­nie ne­fun­go­va­lo!

V ďal­šej čas­ti bu­de­me napĺňať na­še re­ťa­ze lo­cal a wan. Naj­prv po­vo­lí­me už vy­tvo­re­né spo­je­nia, po­tom po­vo­lí­me pro­to­kol ICMP, aby sme moh­li pin­go­vať. Tú­to časť dob­re zváž­me, mož­no ju nec­há­me po do­bu nas­ta­vo­va­nia fi­rewal­lu, po­tom pin­go­va­nie z bez­peč­nos­tných dô­vo­dov rad­šej za­ká­že­me.

Na­bu­dú­ce bu­de­me po­kra­čo­vať.

Ďal­šie čas­ti >>

Zdroj: Infoware 1/2009



Ohodnoťte článok:
   
 

24 hodín

týždeň

mesiac

Najnovšie články

Li­nux prak­tic­ky ako server úvod
Linux ako server je pomerne zložitá technológia. Jej výhodou je určitá modularita, keď sa nemusí nastaviť celý server naraz, ale postupne. čítať »
 
Syn­chro­ni­zá­cia ča­su v Li­nuxe
V predchádzajúcich dvoch častiach sme si ukázali, že Linux a všeobecne open source softvér sa nenachádza iba v serveroch a počítačových sieťach, ale aj v iných zariadeniach bežnej domácej potreby a v oblasti hobby. čítať »
 
Za­ria­de­nia za­lo­že­né na Li­nuxe
V predchádzajúcej časti sme si spomenuli definície nie - ktorých pojmov z oblasti nášho záujmu, teda Linuxu. Vysvetlili sme si, čo je to Open Source, Public Domain, proprietárny softvér a GNU GPL. Tentoraz ukážeme, ako sa tieto pojmy využívajú v praxi. čítať »
 
Po­jmy z ob­las­ti
Tentoraz na chvíľu trochu odbočíme od bezpečnosti Linuxu a jeho siete. V tejto neštandardnej časti seriálu sa mu budeme venovať len okrajovo. čítať »
 
Bez­peč­nosť bez­drô­to­vých sie­tí II.
V predchádzajúcej časti sme sa začali zaoberať bezpečnosťou bezdrôtových sietí. Poukázali sme na rôzne faktory zneužitia siete, podstatu rizika a vysvetlili sme základné prvky bezpečnosti. čítať »
 
Bez­peč­nosť bez­drô­to­vých sie­tí I.
V predchádzajúcich častiach sme sa venovali bezpečnosti linuxového servera. Riešili sme firewall, bezpečnosť prístupu na internet, zaoberali sme sa demilitarizovanou zónou a podobne. čítať »
 
Údr­žba lo­gov – kon­fi­gu­rá­cia log­ro­ta­te
V predchádzajúcej časti sme sa venovali rotácii logov. Vysvetlili sme princíp ukladania logov, spôsob, ako sa rotujú, a uviedli sme niečo o tom, čo a ako treba nastaviť čítať »
 
Údr­žba lo­gov – ro­tá­cia
V predošlej časti sme sa zaoberali spôsobom logovania informácií na iný alebo vzdialený počítač a ukázali sme, ako riešiť problém s logovaním uzavretých procesov pomocou chroot. čítať »
 
 
 
  Zdieľaj cez Facebook Zdieľaj cez Google+ Zdieľaj cez Twitter Zdieľaj cez LinkedIn Správy z RSS Správy na smartfóne Správy cez newsletter