Tvorba firewallu – dokončenie II.

linux_server.jpg V pred­chád­za­jú­cej čas­ti sme po­kra­čo­va­li v té­me o tvor­be a napĺňa­ní jed­not­li­vých sek­cií náš­ho pa­ra­met­ri­zo­va­né­ho skrip­tu fi­rewal­lu. Má­me už napl­ne­né sek­cie de­fi­ní­cie sie­te, ini­cia­li­zá­cie fi­rewal­lu, sek­ciu vý­stup­ných pra­vi­diel a za­ča­li sme napĺňať sek­ciu vstup­ných pra­vi­diel. Zos­tá­va nám do­kon­čiť tú­to sek­ciu a sek­ciu deak­ti­vá­cie fi­rewal­lu. A to si uká­že­me v tej­to čas­ti.

Vstup­né pra­vid­lá
V tej­to čas­ti sme de­fi­no­va­li vý­nim­ky pre fi­rewall, aby sme ho moh­li ria­diť zvnút­ra aj zvon­ka po­mo­cou pro­to­ko­lu ssh, ale len z tu de­fi­no­va­ných IP ad­ries. Ďalej sme napl­ni­li re­ťa­ze lo­cal a wan pra­vid­la­mi pre už vy­tvo­re­né spo­je­nia a pre pro­to­kol ICMP, aby sme moh­li pin­go­vať. Ďal­šie po­kra­čo­va­nie tej­to sek­cie vstup­ných pra­vi­diel je na vý­pi­se č. 1.

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

  ec­ho -n "# Po­vo­le­nie TCP slu­zieb von­kaj­sou sie­tou... ";
  let a=0;
  for po­rt in ${EXTER­NAL_SER­VI­CE_TCP[@]} ; do
      ip­tab­les -A wan -p tcp  --dport "$po­rt" -j AC­CEPT ;
      let a=$a+1;
  do­ne;
  ec­ho "($a)";
  
###########################################################################
  
  ec­ho -n Po­vo­le­nie UDP slu­zieb von­kaj­sou sie­tou... ";
  let a=0;
  for po­rt in ${EXTER­NAL_SER­VI­CE_UDP[@]} ; do
      ip­tab­les -A wan -p udp --dport "$po­rt" -j AC­CEPT ;
      let a=$a+1;
  do­ne;
  ec­ho "($a)";
  ###########################################################################

  ec­ho -n "# Po­vo­le­nie TCP slu­zieb vnu­tor­nou sie­tou... ";
  let a=0;
  for po­rt in ${INTER­NAL_SER­VI­CE_TCP[@]} ; do
      ip­tab­les -A lo­cal -p tcp  --dport "$po­rt" -j AC­CEPT ;
      let a=$a+1;
  do­ne;
  ec­ho "($a)";
 ###########################################################################
  
  ec­ho -n "# Po­vo­le­nie UDP slu­zieb vnu­tor­nou sie­tou... ";
  let a=0;
  for po­rt in ${INTER­NAL_SER­VI­CE_UDP[@]} ; do
      ip­tab­les -A lo­cal -p udp --dport "$po­rt" -j AC­CEPT ;
      let a=$a+1;
  do­ne;
  ec­ho "($a)";

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

  # po­vo­le­nie spo­je­ní na loop­back
  ip­tab­les -A IN­PUT -i lo -j AC­CEPT
 ###########################################################################

  # Za­had­zo­va­nie in­va­lid­nych pac­ke­tov
  ip­tab­les -A IN­PUT -m sta­te --sta­te IN­VA­LID -j DROP
  ip­tab­les -A FORWARD -m sta­te --sta­te IN­VA­LID -j DROP

  # Z lo­kal­nej sie­te CEZ lo­kal­ny inter­fa­ce DO lo­cal IP ad­re­sy
  ip­tab­les -A IN­PUT -s "$INTER­NAL_NETWORK/$INTER­NAL_MASK" -i "$INTER­NAL_IN­TER­FA­CE" -d "$INTER­NAL_IP" -j lo­cal;

  # Z lo­kal­nej sie­te CEZ lo­kal­ny inter­fa­ce DO von­kaj­sej IP ad­re­sy
  ip­tab­les -A IN­PUT -s "$INTER­NAL_NETWORK/$INTER­NAL_MASK" -i "$INTER­NAL_IN­TER­FA­CE" -d "$EXTER­NAL_IP" -j lo­cal;

  # Z von­kaj­sej sie­te CEZ exter­ny inter­fa­ce DO von­kaj­sej IP 
  ip­tab­les -A IN­PUT -s ! "$INTER­NAL_NETWORK/$INTER­NAL_MASK" -i "$EXTER­NAL_IN­TER­FA­CE" -d "$EXTER­NAL_IP" -j wan;

  ec­ho 1 > /proc/sys/net/ipv4/ip_forward

  ec­ho "Pra­vid­la FW ak­cep­to­va­ne!"
  trap - 2 3
}
  ###########################################################################
#    Ko­niec vstup­nych pra­vi­diel                                           # ###########################################################################

V šty­roch cyk­loch po­vo­lí­me pri­po­je­nie na všet­ky po­rty TCP a UDP. Naj­prv na von­kaj­šom roz­hra­ní fi­rewal­lu, kto­ré pred­sta­vu­jú služ­by po­sky­to­va­né von­kaj­šej sie­ti, po­tom na vnú­tor­nom roz­hra­ní fi­rewal­lu, kto­ré pred­sta­vu­jú služ­by po­sky­to­va­né vnú­tor­nej sie­ti. Zoz­nam po­vo­le­ných po­rtov je za­se de­fi­no­va­ný v de­fi­nič­nej sek­cii fi­rewal­lu.

Ďalej po­vo­lí­me spo­je­nia v rám­ci po­čí­ta­ča, kto­ré po­uží­va­jú loop­back. Po­tom pris­tú­pi­me k pre­roz­de­ľo­va­niu pa­ke­tov do jed­not­li­vých re­ťa­zí. Naj­prv pre­poš­le­me všet­ky pa­ke­ty z vnú­tor­nej sie­te (zdro­jo­vá ad­re­sa z vnú­tor­nej sie­te, pri­ja­té na vnú­tor­nom roz­hra­ní a na vnú­tor­nej IP ad­re­se fi­rewal­lu) do re­ťa­ze "lo­cal". Ďalej pre­poš­le­me všet­ky pa­ke­ty z vnú­tor­nej sie­te (zdro­jo­vá ad­re­sa z vnú­tor­nej sie­te, pri­ja­té na vnú­tor­nom roz­hra­ní a na von­kaj­šej IP ad­re­se fi­rewal­lu) do re­ťa­ze "lo­cal". Na­ko­niec pre­poš­le­me všet­ky pa­ke­ty z von­kaj­šej sie­te (zdro­jo­vá ad­re­sa z inej ako vnú­tor­nej sie­te, pri­ja­té na von­kaj­šom roz­hra­ní a na von­kaj­šej IP ad­re­se fi­rewal­lu) do re­ťa­ze "wan".

Na zá­ver tej­to sek­cie za­pne­me sme­ro­va­nie pa­ke­tov cez fi­rewall za­pí­sa­ním hod­no­ty 1 do /proc/sys/net/ipv4/ip_forward.

Deak­ti­vá­cia fi­rewal­lu
Na ko­rek­tné vy­pnu­tie fi­rewal­lu ako služ­by (nie ce­lé­ho po­čí­ta­ča) je ne­vyh­nut­né, aby bol fi­rewall deak­ti­vo­va­ný. Tú­to sek­ciu vlo­ží­me do čas­ti pa­ra­met­ra STOP zá­klad­né­ho skrip­tu. Ob­sah sek­cie je na vý­pi­se č. 4.

  ip­tab­les -F
  ip­tab­les -F -t nat;

  ip­tab­les -F
  ip­tab­les -F wan

  ip­tab­les -X;
  ip­tab­les -X -t nat;

  ec­ho "Nas­ta­ve­nie stan­dar­dnej po­li­ti­ky na AC­CEPT"
  ip­tab­les -P IN­PUT AC­CEPT
  ip­tab­les -P OUT­PUT AC­CEPT
    ip­tab­les -P FORWARD AC­CEPT

V úvo­de tej­to sek­cie vy­ma­že­me všet­ky pra­vid­lá zo všet­kých re­ťa­zí vrá­ta­ne ta­buľ­ky NAT a da­né re­ťa­ze vy­ma­že­me. Na­ko­niec nas­ta­ví­me štan­dar­dnú po­li­ti­ku na ak­cep­to­va­nie, te­da ako ke­by sa neup­lat­ňo­va­li ni­ja­ké pra­vid­lá.

Po­uží­va­nie fi­rewal­lu
Ak už má­me kom­plet­ne na­pí­sa­ný skript, po­me­nu­je­me ho jed­noz­nač­ným náz­vom, nap­rík­lad fi­rewall. Ulo­ží­me ho do vhod­nej ad­re­sá­ro­vej štruk­tú­ry, te­da tam, kde ho bu­de mož­né jed­no­duc­ho spúš­ťať a za­sta­vo­vať. Kaž­dý správ­ca má svoj vlast­ný št­ýl uk­la­da­nia ním vy­tvo­re­ných skrip­tov, niek­to to uk­la­dá do ad­re­sá­rov /bin ale­bo /root, to pre­to, aby ne­mu­sel pri vo­la­ní skrip­tu za­dá­vať úpl­nú ces­tu k sú­bo­ru. Je však vhod­nej­šie uk­la­dať všet­ky svo­je skrip­ty do ad­re­sá­ra /etc či do je­ho po­dad­re­sá­rov, nap­rík­lad /etc/sys­con­fig. Pre­čo? Keď nas­ta­ne si­tuácia, že bu­de­me mu­sieť či už z har­dvé­ro­vých, ale­bo sof­tvé­ro­vých dô­vo­dov prein­šta­lo­vať li­nuxový server, sta­čí, ak si od­zá­lo­hu­je­me ad­re­sár /etc (pre nas­ta­ve­nia sie­te a iných rôz­nych prog­ra­mov), ad­re­sár /var/www (pre na­šu web strán­ku), prí­pad­ne eš­te do­mov­ské ad­re­sá­re. Os­tat­né ad­re­sá­re sa pri rein­šta­lá­cii pre­ma­žú. A ak v náh­li­vos­ti za­bud­ne­me, že sme v ad­re­sá­ri /bin ma­li ulo­že­ný skript fi­rewal­lu a ne­má­me od­lo­že­nú je­ho ak­tuál­nu kó­piu, bu­de­me veľ­mi smut­ní...

Po ulo­že­ní na vhod­né mies­to mu­sí­me nas­ta­viť, aby bol ten­to skript spus­ti­teľ­ný, te­da nas­ta­ví­me at­ri­bút x pre vlas­tní­ka – v tom­to prí­pa­de roo­ta prí­ka­zom

 [root@server /] # chmod 744 /etc/sys­con­fig/fi­rewall

Po­tom už sta­čí ov­lá­dať fi­rewall prí­kaz­mi:

[root@server /] # /etc/sys­con­fig/fi­rewall start
[root@server /] # /etc/sys­con­fig/fi­rewall stop
[root@server /] # /etc/sys­con­fig/fi­rewall res­tart

bez po­tre­by reš­tar­to­va­nia ce­lé­ho li­nuxové­ho server­a pri akej­koľ­vek zme­ne v nas­ta­ve­niach fi­rewal­lu.

Tak to je ce­lý skript fi­rewal­lu. Vy­skú­šaj­te, po­uží­vaj­te, mo­di­fi­kuj­te!

Ďal­šie čas­ti >>

Zdroj: Infoware 2/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