5 Configuració del tallafocs
A continuació aprendrà a configurar el servei de tallafocs que ofereix el sistema NSS.
#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 :
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ó :
É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
#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.
#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.
#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.
#set net_filter default_forward protocol tcp dport 53
#set net_filter default_forward protocol udp dport 52
#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.
#set net_filter group name gruptreball.
#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
#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
}
}
..
#del net_filer groups gruptreball
#del net_filer groups all
Els serveis serveixen per definir els recursos de xarxa ,cada servei està format pels següents camps :
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.
#set net_filter service name ftp1 protocol tcp dport 21
#set net_filter service name ftp2 protocol tcp dport 20
#show net_filter
..
services {
name ftp1 {
protocol tcp
source_port -
destination_port 21
}
name ftp2 {
protocol tcp
source_port -
destination_port 20
}
}
#del net_filter services name ftp1
#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 :
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:
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.
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ó).
#set net_filter service name dns1 protocol tcp dport 53
#set net_filter service name dns2 protocol udp dport 53
#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
#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.
#set net_filter rules name regla1 source 192.168.3.0/24 service www log yes start_time 0 8 * * * finish_time 0 14 * * *
#del net_filter rules name nomregla
#del net_filter rules name regla1
#del net_filter rules all
Es permet la modificació de qualsevol camp en la definició d'una regla.
#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
|