Catalan Castellano  |  Aviso Legal  |  Contactar  |  Login  |  Mapa




Inicio  
  Esolit  
  Productos y  
soluciones

Soporte y
  documentación  

Ideas y
  tecnología  

Manual Nercure

  • 5 Configuració del tallafocs



  • A continuació aprendrà a configurar el servei de tallafocs que ofereix el sistema NSS.

    • Per visualitzar la configuració en memòria del tallafocs:

    #show net_filter

    net_filter {
    enabled
    equals yes
    default_forward {
    protocol icmp port :-
    }
    groups {
    -
    }
    ..
    ..

    El tallafocs que implementa NSS és del tipus Stateful firewall. Aquests tipus de tallafocs es caracteritzen per permetre el seguiment i el control de flux d'una sessió de dades la qual en aquest text anomenarem connexió. El tallafocs guarda a memòria informació de cada connexió que utilitza per decidir l'acceptació o no dels paquets que arriben. Un tallafocs d'aquestes característiques ofereix les següents avantatges en quan a la seguretat del sistema :

    • En lloc d'obrir ports de a la xarxa permanentment per certs protocols que sol·liciten ports arbitraris, el sistema solament obrirà ports durant el temps suficient perquè el paquet passi. Aquest fet disminueix la possibilitat d'introduir codi maliciós a la xarxa.

    • Evita atacs de denegació de servei, tals com la inundació de de paquets SYN ja que aquest tipus de firewalls estableix límits en les connexions.

    Existeixen 2 mètodes (cada un amb els seus paràmetres de configuració subjacents) que permeten la configuració del tallafocs. Ambdós mètodes no són mútuament excloents sinó que es poden utilitzar amb sinergia per la configuració del tallafocs. És més s'aconsella la utilització conjunta dels dos següents mètodes :

    • Configuració del tallafocs amb polítiques per defecte del sistema.

    • Configuració del tallafocs amb regles d'usuari

    El funcionament intern del tallafocs té relació amb els mètodes anteriorment descrits: quan arriba un paquet al sistema el tallafocs avaluarà les regles d'usuari, en el cas que no existeixi cap regla definida que coincideixi amb les característiques del paquets s'aplicaran les polítiques per defecte del sistema.

    Per motius de seguretat el sistema NSS ve configurat de fàbrica tal que no realitza forward de paquets per defecte, és a dir si desitja que el sistema realitzi el reenviament de paquets ho haurà de configurar amb un dels dos mètodes mostrats anteriorment.

    Les polítiques per defecte del sistema les defineix l'usuari però són de propòsit general, fàcils d'implementar i intuïtives i estableixen la configuració per defecte del tallafocs del sistema. Les polítiques per defecte del sistema estan definides pels següents paràmetres de configuració :

    • Slevels

    • Default forwards

    És un paràmetre de configuració del tallafocs que permet definir el sentit en que es permet efectuar connexions als recursos a la vegada que inherentment estableix el nivell de seguretat de les interfícies de xarxa del sistema.

    Cada interfície de xarxa te assignada un slevel que correspon a un número.Els sentits en que es permet efectuar les connexions s'especifiquen de la següent manera: és realitzarà el forward dels paquets pertanyents a connexions que han arribat al NSS per una interfície el slevel de la qual és més gran que el slevel de la interfície de sortida del paquet. Si vol que aquest valor sigui més gran o igual llavors haurà d'activar l'opció equals yes del tallafocs de la següent manera :

    #set net_filter equals enable

    • Per establir slevel=20 a la interfície eth1:

    #set interfaces eth1 slevel 20


    Il·lustració 4 :Sentit de les connexions permeses al NSS en funció dels slevels i el paràmetre equals.



    Els slevels són molt útils sobretot si disposa de hosts amb múltiples interfícies de xarxa , en aquests casos l'enfocament dels slevels facilita notablement a l'administrador la complicada configuració del tallafocs.




    Il·lustració 5: Sentit de les connexions permeses d'un host amb 4 interfícies de xarxa i els slevels especificats.






    Aquest paràmetre juntament amb els slevels permeten definir les polítiques per defecte del sistema. Els default forwards defineixen els recursos de la xarxa que es permet accedir respectant els sentits de connexió especificats amb els slevels.

    Cada default forwarding està format pels següents paràmetres:

    Especifica el protocol utilitzat en la comunicació per accedir als recursos. Els possibles protocols que accepta NSSOS són:

    • icmp: Internet Control Message Protocol

    • tcp: Transport Control Protocol

    • udp: User Datagram Protocol

    És el port utilitzat pel host que inicia la connexió, és aplicable a connexions efectuades amb els protocols TCP i UDP. El sistema per raons obvies no permetrà especificar aquest paràmetres amb connexions ICMP.

    El sport acostuma a ser un port aleatori per aquest motiu normalment voldrà establir aquest port com a qualsevol port (aquest fet l'assumeix el sistema si no s'especifica cap sport).

    Contràriament al sport el dport és de vital importància ja que permet especificar el recurs al qual permet accedir (en la direcció que ho permetin els slevels).

    El dport és aplicable a connexions mitjançant el protocol TCP i UDP, en connexions ICMP el sistema no permetrà introduir el dport per raons obvies.

    Suposi que ha configurat el sistema com indica la il·lustració 3 i vol configurar el sistema NSS tal que efectuï el forward de paquets per les connexions iniciades des de un host la petició del qual ha arribat al NSS per la eth0 i que va dirigida a un altre host el qual el NSS reenviaria per eth1.

    • Per visualitzar les interfícies de xarxa hi ha instal·lades al NSS:

    #show interfaces

    interfaces {
    eth0 {
    description -
    ip 62.0.0.1/24
    mtu 1500
    slevel 0
    enabled
      }
    eth1 {
    description -
    ip 192.168.3.1/24
    mtu 1500
    slevel 0
    enabled
      }
    }

    Com pot observar hi ha 2 interfícies de xarxa instal·lades i configurades.

    • Per permetre connexions en el sentit eth0-->eth1:

    #set interfaces eth0 slevel 0

    #set interfaces eth1 slevel 20

    #set net_filter equals disable

    #set net_filter enable

    A continuació ha de definir els recursos als quals permet accedir ja que els slevels no defineixen cap servei per si sols. Això ho pot fer amb els default forwards.

    • Per permetre el forward de paquets de peticions DNS:

    #set net_filter default_forward protocol tcp dport 53

    #set net_filter default_forward protocol udp dport 52

    • Per permetre a la vegada connexions de DNS en sentit invers eth0-->eth1 pot configurar les interfícies amb el mateix slevel i activar l'opció equals yes del tallafocs.

    #set net_filter enable

    #set interface eth0 slevel 0

    #set interface eth1 slevel 0

    #set net_filter equals enable

    Aquesta última configuració dels slevels pot ser útil en alguns escenaris d'interconnexió d'intranets donada la seva facilitat de configuració però no s'aconsella amb escenaris els quals el sistema NSS es connecti a Internet directament. El motiu es que per defecte es permet el forwarding ambdós sentits de tots els serveis definits. Per aquest motiu es recomana no abusar de les regles per defecte. Si vol ampliar els serveis que ofereix la xarxa és molt recomanable realitzar-ho a través de les regles d'usuari que s'explicaran acte seguit i configurar el sistema tal que el slevel de la interfície connectada a Internet sigui menor que el slevel de la interfície connectada a la intranet.

    Les regles d'usuari són útils en el cas que necessiti un major control i ajustament més precís en quant filtratge de paquets, ja sigui perquè vol limitar l'ús de certs recursos a un grup determinat d'usuaris o bé vol ajustar altres paràmetres de configuració de regles.

    L'avaluació d'un paquet per aplicar-li l'acció corresponent en les regles d'usuari segueix un procés seqüencial respecte a la definició de regles d'usuari en memòria. La primera regla definida a memòria és la primera que s'avalua. Primer s'avalua la primera regla, si el paquet no satisfà dita regla s'avalua la segona, i així per a totes les regles d'usuari definides al sistema NSS. Si existeix coincidència en alguna de les regles s'aplicarà al paquet l'acció (action) indicada a la regla .

    Com s'ha dit anteriorment si el paquet no satisfà cap de les regles d'usuari aleshores s'aplicaran les polítiques per defecte del sistema. Per exemple si té definides les següents regles d'usuari al tallafocs :

    #show net_filter

    ..
    rules {
      name dns1 {
      enabled
      source -
      destination -
      service dns1
      action accept
      log yes
      start_time -
      finish_time -
        }
      name regla1 {
      enabled
      source 0.0.0.0/0
      destination 192.168.3.0/24
      service www
      action accept
      start_time -
      finish_time -
        }
      }
    ..

    Primer s'avaluarà la regla 'dns1' seguidament la regla 'regla1' i aixíer totes les regles d'usuari definides .

    És important dir que l'activació d'alguns serveis del NSSOS pot entrar en conflicte en l' execució de les regles d'usuari. En aquest cas el sistema dóna preferència a l'execució dels serveis en detriment de les regles d'usuari. Aquest comportament es dóna per exemple si intenta afegir una regla amb acció de drop del port TCP 80 mantenint l'activació del proxy web en mode transparent.

    A continuació és detallaran els elements que intervenen en la creació d'una regla d'usuari :

    Els grups ens permeten agrupar un conjunt heterogeni d'adreces IP en un sol nom i fer referència al conjunt pel seu nom.

    • Per definir un grup d'adreçes IP buit anomenat ‘gruptreball' :

    #set net_filter group name gruptreball.

    • Per afegir una IP concreta al grup, o bé una xarxa sencera

    #set net_filter groups name gruptreball ip_member 192.168.3.22

    #set net_filter groups name gruptreball ip_member 192.168.1.0/24

    • Per visualitzar com ha quedat definit el grup de treball que s'ha creat:

    #show net_filter

    ..
    groups {
      name privilegiats {
      ip_member 192.168.3.2
      ip_member 192.168.3.0/24
        }
      name gruptreball {
      ip_member 192.168.3.22
      ip_member 192.168.1.0/24
        }
      }
    ..

    • Si vol eliminar un grup anteriorment definit:

    #del net_filer groups gruptreball

    • Per el·liminar tots els grups creats :

    #del net_filer groups all

    Els serveis serveixen per definir els recursos de xarxa ,cada servei està format pels següents camps :

    • sport

    • dport

    • protocol

    Per veure una descripció dels camps anteriors ho pot fer al capítol Default forwards.És imperatiu especificar el protocol en la definició del servei, en cas contrari el sistema reportarà un error al fer commit.

    En el cas que no especifiqui cap port font o destí el sistema interpretarà que es refereix a qualsevol port . Així doncs si per exemple no especifica ni el port font ni el port destí el sistema interpretarà que es refereix a totes les connexions al protocol especificat.

    Cal dir que el protocol ICMP és un protocol que no utilitza ports en la comunicació, és per aquest motiu que els camps sport i dport seran ignorats pels sistema si s'especifiquen en la definició d'un servei.

    Per exemple per definir el servei de FTP caldrà definir 2 serveis.

    • Pot definir aquest servei de la següent manera:

    #set net_filter service name ftp1 protocol tcp dport 21

    #set net_filter service name ftp2 protocol tcp dport 20

    • Per mostrar els serveis definits al sistema:

    #show net_filter

    ..
    services {
      name ftp1 {
      protocol tcp
      source_port -
      destination_port 21
        }
      name ftp2 {
      protocol tcp
      source_port -
      destination_port 20
        }
      }

    • Per eliminar un servei definit:

    #del net_filter services name ftp1

    • Per eliminar tots els serveis amb una sola comanda:

    #del net_filer services all

    Les marques són elements que serveixen per especificar el període de temps durant el qual una regla d'usuari romandrà activa al sistema. Cada regla definida pot contenir 2 marques de temps :

    • start_time

    • finish time

    Si al definir una regla no especifica cap valor en les marques de temps la regla romandrà permanentment activa al sistema. A continuació li detallem el format de les marques de temps :

    El següent format serveix tan per definir el camp start_time com el camp finish_time en la creació d'una regla i indiquen en quin moment s'iniciarà o bé finalitzarà el període de funcionament de la regla respectivament.

    El format d'una marca de temps consta de 5 camps que especifiquen la data i el temps. A continuació es mostra la relació entre els camps i els possibles valors d'aquests

    Camp minut hora dia mes Dia de la setmana
    Possibles valors 0-59 0-23 0-31 0-12 0-7
    0,7 : diumenge
    1 : dilluns
    2 : dimarts

    Si per exemple vol especificar que s'iniciï el funcionament d'una regla el dia 23 de setembre de cada any a les 22:00 haurà d'assignar '0 22 23 9 *' al camp start_time.

    No oblidi d'omplir els 5 camps en l'especificació de la marca de temps.

    Com pot observar en l'exemple anterior el caràcter '*' indica tots els possibles valors en el camp indicat. En aquest cas especifica que no mporta quin dia de la setmana cau el 23 de setembre en un determinat any.

    Si per exemple volgués fer el mateix que l'exemple anterior però solament els anys que el 23 de setembre coincideixi en divendres (p.ex l'any 2005): '0 22 23 9 5'

    A continuació es mostren alguns exemples més:

    • '5 0 * * *' : Indica cada dia a les 12:05

    • '15 14 1 * *' : Indica a les 2:15 PM el primer dia de cada mes

    Quan defineix una regla d'usuari el que s'està establint són les accions que realitzarà el sistema quan identifiqui paquets d'una connexió que prové d'un grup d'adreces IP font dirigida a un grup d'adreces IP destí utilitzant un servei determinat. Per crear una regla d'usuari es necessiten els següents paràmetres:

    • Source: Adreces IP font, es defineixen mitjançant un grup dels citats anteriorment o bé pot introduir directament una IP o xarxa sencera. Si no especifica cap valor en aquest camp el sistema automàticament assignarà 0.0.0.0/0 indicant qualsevol adreça IP.

    • Destination: Adreces IP destí, es defineixen com en el cas anterior. Si no s'especifica cap valor en aquest camp el sistema automàticament assignarà 0.0.0.0/0 indicant qualsevol adreça IP.

    • Service: És el recurs al que fa referència la regla, es defineix per un sol servei. Si defineix una regla sense aquest paràmetre i s'executa un commit el sistema reportarà un error al actualitzar el servei de tallafocs, i tornarà a un l'estat anterior.

    • Action : És l'acció que s'aplicarà al paquet quan aquest pertanyi a una connexió o intent de connexió que coincideixi amb els paràmetres anteriors. Les possibles accions que el sistema pot aplicar al paquet són les següents:

    • accept: El paquet es acceptat pel sistema i possiblement reenviat.

    • drop: El paquet és ignorat pel sistema.

    • reject: Igual que l'acció drop i a més s'envia un missatge d'error ICMP-port- unreachable al host ha enviat el paquet.

    • Start_time : És una marca de temps que indica el moment que s'iniciarà el funcionament de la regla al sistema.

    • Stop_time: És una marca de temps que indica en quin moment s'aturarà el funcionament de la regla en al sistema.

    Respecte els 2 últims paràmetres cal recordar que si no especifica cap valor la regla d'usuari quedarà habilitada de manera permanent.

    • Log: Indica si el sistema registrarà o no informació dels paquets de connexions que coincideixin amb els paràmetres la regla especificada. Una possible aplicació per aquesta opció és la depuració del tallafocs. Els possibles valors del camp log són:

    • yes: El sistema registra

    • no : El sistema no registra.

    Suposi que vol establir una regla (permanent) per permetre accés FTP al grup ‘gruptreball' definit anteriorment, a qualsevol servidor FTP, a més suposi que no ha modificat els slevels, es a dir que les interfícies contenen slevel=0 (Recordi que NSSOS inicialment no es permet forwarding en cap direcció).

    • Primer de tot com que inicialment no permet tràfic haurà de definir una regla d'usuari específica per permetre peticions de DNS. Això ho pot fer definint dos serveis més ja que el protocol DNS treballa sobre UDP i TCP.

    #set net_filter service name dns1 protocol tcp dport 53

    #set net_filter service name dns2 protocol udp dport 53

    • Seguidament pot crear les respectives regles, observar que si no especifica la destination_adress llavors el sistema interpreta qualsevol IP.

    #set net_filter rules name dnstcp53 enable source gruptreball service dns1 action accept

    #set net_filter rules name dnsudp53 enable source gruptreball service dns2 action accept

    • Ja té configurades les peticions de DNS. Per configurar accés FTP:

    #set net_filter rules name ftpport21 enable source gruptreball service ftp1 action accept

    #set net_filter rules name ftpport20 enable source gruptreball service ftp2 action accept

    Si no especifica enable, la regla s'activa per defecte ,si no s'especifica la acció a realitzar llavors per seguretat el sistema aplicarà l'acció drop. A més recordar que perquè els canvis que s'han realitzat a la configuració en memòria tinguin efecte s'ha de fer un commit.

    • Ara suposi que durant tot el matí (de 8:00 fins les 14:00) vol no permetre que els usuaris de la Intranet (veure Il·lustració 3) es connectin via web a Internet, a més a més vol enregistrar els intents de connexió a qualsevol servidor web. La regla d'usuari resultant seria la següent:

    #set net_filter rules name regla1 source 192.168.3.0/24 service www log yes start_time 0 8 * * * finish_time 0 14 * * *

    • Per eliminar una regla definida anteriorment :

    #del net_filter rules name nomregla

    • Per eliminar la regla d'usuari 'regla1' :

    #del net_filter rules name regla1

    • Si vol eliminar totes les regles d'usuari definides al sistema :

    #del net_filter rules all

    Es permet la modificació de qualsevol camp en la definició d'una regla.

    • Per modificar el camp de finish_time de la 'regla1'.

    #set net_filter rules name regla1 finish_time 0 14 * * *

    paquet paquet_entrada;
    regla regla_match;
    interface ientrada,isortida;
    algorisme TALLAFOCS_NSS és (paquet paquet_entrada)
      si (pertany_a_connexió_activa(paquet_entrada))
        reenviar(paquet);
      sinó
        regla_match=avaluació_regles_usuari(paquet_entrada);
        si (regla_match != NULL ) //avaluació de regles d'usuari
           si (regla_match.accio=='accept')
            crear_connexió(paquet_entrada);
            reenviar(paquet_entrada);
          sinó si (regla_match.accio=='reject')
            enviar_missatge_icmp_port_unreachable(paquet.ip_font);
          sinó si (regla_match.accio=='drop')
            ignorar(paquet);
          fisi
        sinó //avaluació dels default forwards
          ientrada=obtenir_interface_entrada(paquet);
          isortida=obtenir_interface_sortida(paquet);
          si ((slevel(ientrada) > slevel(isortida)) || ( slevel(ientrada)==slevel(isortida) && equals='yes'))
            si (existeix_default_forward(paquet))
              crear_connexió(paquet);
              reenviar(paquet);
            fisi
          fisi
        fisi
      fisi
    fi algorisme TALLAFOCS_NSS


    Capitol 4 | Index | Tornar al començament | Capitol 6
    ACCESOS RAPIDOS
    Cami de Valls, 81 - 87 43204 Reus (Tarragona) Telf:977300414 E-mail: soporte@esolit.com