[logo]
Browse Files
[view] viewing ns8-0x07.txt [[save][+][close]]
=-[ 0x07 ]-================================================================== 
=-[ NetSearch Ezine #8 ]-==================================================== 
=-[ Instalaci?e OpenBSD e Iniciacion a Packet Filter ]-=================== 
=-[ por Pantarhei ]-========================================================= 
 
 
 
 
Instalaci?el sistema operativo 
--------------------------------- 
 
Arrancaremos la instalaci?esde el CD-ROM, para ello insertamos el CD de 
OpenBSD y cambiamos en la BIOS la opci?ara que arranque desde el CD-ROM. 
Una vez hecho esto y al arrancar nos encontramos con que se nos presenta un 
prompt:  
 
boot>  
 
Desde aqu?odr?os hacer cosas como configurar ciertas partes del kernel 
sin tener que recompilarlo, cargar un kernel alternativo, arrancar en modo 
monousuario, y muchas m?cosas, pero de momento le daremos a la tecla 
"Enter" o dejaremos pasar unos segundos que con eso ya nos vale para la 
instalaci?Se carga el kernel en memoria y comienza a reconocer nuestros 
dispositivos... Lo siguiente:  
 
(I)nstall, (U)pgrade or (S)hell?  
 
Pulsamos 'I'.  
 
Specify terminal type [vt100]: 
 
Escogemos el tipo de terminal que queramos. Despu?nos pregunta si queremos 
usar todo el disco para OpenBSD, pues s?Se nos presenta otro prompt, desde 
el que configuraremos los slices ("particiones") de nuestra OpenBSD. Si 
tecleamos '?' veremos todos los comandos que tenemos a nuestra disposici? 
Con 'p' se nos muestran todos los slices ya existentes, de los cuales siempre 
existir?c' que simboliza el tama?el disco y no ocupa nada de espacio. La 
tecla 'a' nos sirve para a?r slices, as?ue a?mos las que nos hagan 
falta. El slice 'a' se usa normalmente para la partici?a? y la 'b' para 
la swap.  
 
Es importante resaltar que tenemos dos maneras para indicar el tama?e los 
slices, en megabytes y en sectores. A?remos siempre primero la swap parWa 
que quede primero en la geometr?del disco por si nos da por aumentar el 
tama?e nuestras dem?slices. El offset siempre dejamos el que sale por 
defecto, y el tama?n megas lo damos a?endo 'M' al final (400M p.ej). Si 
quisi?mos a?rlo en sectores pues ser?como si di?mos el tama?n 
kilobytes y ser?algo as?omo el doble de lo que queramos a?r en megas 
(si queremos tener una swap de 200 megas y damos el tama?n sectores, 
ser? unos 800000 sectores, que saldr? 395 MB m?o menos).  
 
Ya s?nos queda indicar el tipo de sistema de ficheros 4.4BSD y el punto de 
montaje, para la swap ninguno. 'w' para guardar la tabla de particiones y 'q' 
para salir. En la siguiente pantalla podemos indicar los puntos de montaje 
pero ya los pusimos, as?ue tecleamos 'done', y formatear?os slices con el 
sistema de ficheros antes indicado. Nos dar?a posibilidad de a?r slices 
en otro disco, pero como no queremos pues seguimos.  
 
Lo siguiente ser?a configuraci?e la red. Pondremos los valores seg?
nuestra red. S?indicar que existen varios drivers seg?a tarjeta de red 
que usemos, as?ue el nombre del interfaz de red ethernet se llamar?si 
usamos una Realtek rl0, si usamos una Intel fxp0, ne0 para realtek's 
antiguas, (en linux siempre se llamar?eth*), etc. Tras esto nos dara la 
posibilidad de escapar a la shell, pero seguimos adelante, e introduciremos 
la contrase?e root en el siguiente prompt. 
 
Lo ?mo ser?e donde queremos instalar los paquetes. Si tenemos una 
conexi?al que una adsl (de cualquier tipo) es una buena opci?nstalar 
via ftp/http, ya que tarda como mucho 1 hora m?o menos todo el sistema.  
Nosotros como ahora mismo no tenemos conexi? internet lo hacemos desde 
CD-ROM y seleccionando los paquetes a instalar. Los que ya vienen por defecto 
son necesarios para que funcione el sistema con lo m?mo.  
 
 
Cortafuegos en OpenBSD 
---------------------- 
 
PF son las siglas de Packet Filter que sustituy? anterior firewall que 
llevaba de serie OpenBSD, el IPF. Este ten?una licencia tal que s?
permit?a su creador, Darren Reed, hacer modificaciones sobre el c?o, as?
que cada d?recib?varios mails de desarrolladores OpenBSD ofreciendo 
soluciones a partes de su firewall mal codeadas o de bajo rendimiento. 
Algunas cosas que citaba Theo de Raadt en una entrevista publicada en 
kerneltrap.org fueron por ejemplo el pobre tratamiento de los mbufs para ipv6 
(skb's en Linux, buffers de inet), no se pod? usar reglas bidireccionales 
en un bridge, la s?axis de las reglas se pod?mejorar, el c?o de la 
zona de usuario era muy fr?l, etc. Finalmente se cansaron de que Darren no 
aceptara todas las modificaciones que los desarrolladores le ofrec? y 
decidieron quitarlo del sistema a partir de la release 3.0. A partir de este 
problema de licencia se removieron otros muchos paquetes del ?ol de ports.  
 
PF se cre?tonces con la misma idea que IPF, pero con las modificaciones 
que los desarrolladores quer? hacerle, as?mejor? sintaxis pudi?ose 
agrupar las reglas en listas, tipo "... from {172.26.0.0/16, 192.168.1.0/24 } 
...", lo que en IPF vendr?a dividirse en dos reglas. Se a??a nueva 
directiva llamada "scrub", que permit?"normalizar" paquetes IP, esto se 
refiere a que con esta directiva, por ejemplo, si una determinada cantidad de 
paquetes que se dirige a nuestra m?ina van fragmentados, y ello no era 
necesario en el env? esta directiva en vez de pasar fragmento a fragmento a 
la pila tcpip para que all?e reensamblen los reensambla en el firewall, 
para que pasen como un solo paquete. Esto lo hacen algunos programas para 
poder pasar ciertos datos a trav?de firewalls o para evadir IDS como Snort. 
 
Se a? una tabla de estado para sesiones TCP que m?adelante se comentar?
soporta ipv6, incorpora un sistema f?l para sistemas con IP din?ca. Se 
pueden filtrar los t?cos protocolos TCP, UDP, ICMP, y se incorpora el 
protocolo ESP. El firewall tambi?permite hacer NAT.  Actualmente se est?
trabajando en una nueva directiva "antispoof" y se est?haciendo mejoras en 
su rendimiento y corrigiendo algunos fallos, que siempre los hay.  
 
PF usa entonces un fichero del que lee las reglas de filtrado as?omo las de 
nateado y normalizaci?e paquetes, pero hemos de guardar un orden en dicho 
fichero para las reglas: primero podemos colocar ciertas opciones, luego ir?
las de normalizaci?nateado, y filtrado. El fichero con los filtros lo 
cargaremos en el kernel con una utilidad llamada pfctl que comentar?ras 
explicar las directivas. Existen otro tipo de aplicaciones para PF que 
trabajan con ?a trav?de un interfaz que se nos proporciona a trav?de 
ioctl.  
 
El funcionamiento de un firewall es analizar cada paquete que pasa por ?y 
en base a las reglas decide que hacer con el paquete. PF no decide que hacer 
con el paquete cuando coincide con una regla, sino que sigue analizando las 
reglas, y la ?ma que coincida es la que se lleva a cabo. Si ninguna regla 
coincide con el paquete, por defecto se decide pasarlo. Por lo tanto 
deberemos seguir a la hora de hacer nuestro fichero de reglas un filtrado de 
lo m?general a lo m?espec?co. Para cada paquete que coincide con una 
regla se puede pasar con la directiva "pass" o bloquear con "block".  
 
Para explicar el funcionamiento a la hora de parsear el fichero lo mejor ser?
ver el t?co ejemplo:  
 
block in all 
pass in all 
 
La primera regla se aplica a todo paquete entrante, pero como dije antes PF 
no se para ah?sino sigue leyendo. La siguiente regla tambi?se aplica al 
tr?co entrante, por lo tanto, como no hay mas reglas, se aplica la ?ma 
que coincide con el paquete, en este caso es nuestra regla "pass in all", por 
lo tanto el paquete se pasa a la pila. A veces no es este el funcionamiento 
que desear?os en nuestro firewall, as?ue existe una directiva que cambia 
este comportamiento de "la ?ma regla coincidente decide que hacer":  
 
 webserver="172.26.0.5/32" 
 
 block in quick all 
 pass in from any to $webserver 
 
Como veis se nos permite el uso de variables para hacer m?sencilla la 
lectura de las reglas. La directiva importante aqu?s "quick". Como veis se 
permite el uso de variables para una mejor lectura. La segunda regla como 
podreis ver es f?l de entender: pasa el tr?co entrante que venga desde 
una ip cualquiera (any) al servidor web, pero esta regla nunca llega a 
cumplirse. La directiva "quick" aplicada a una regla cambia el comportamiento 
del firewall haciendo que esa sea nuestra ?ma regla coincidente, por lo 
tanto lee la primera regla que bloquea todo el tr?co entrante, no sigue 
leyendo del fichero, y descarta el paquete.  
 
Una vez visto el funcionamiento vamos a ir introduciendo m?directivas en 
base a las que filtrar. 
 
 webserver="172.26.0.5/32" 
 intranet="172.26.0.0/24" 
 un_ports="1025 >< 65535" # as?ndicaremos los rangos de puertos 
               
        pass in quick on rl0 proto tcp from $intranet port $un_ports to 
        $webserver port = 80 
        
        block in quick all 
 
Leamos las reglas para aclarar las nuevas directivas: dejo pasar tr?co 
entrante tcp que proviene del interfaz rl0 (nombre de interfaz cuando el 
chipset es realtek), con ip origen 172.26.0.0/24 y puerto origen cualquiera 
entre 1025 y 65535, con ip destino 172.26.0.5 y puerto destino el 80. Si el 
tr?co entrante no cumple estos requisitos pasar? la siguiente regla, que 
bloquea todo el tr?co entrante. Los comentarios van tras el s?olo #.  
B?camente este es el funcionamiento m?simple. Para referirnos al tr?co 
saliente cambiar?os la palabra "in" por "out". No es necesario especificar 
tanto par?tro como puerto origen, protocolo y dem?como podreis imaginar.  
 
Es tambi?posible filtrar en base a las "banderas" (de aqu?n adelante 
"flags") de los paquetes TCP: SYN, ACK, RST, PUSH, FIN, URG, CWR, ECE. Nos 
referiremos a ellas por su inicial, salvo en el caso de CWR, que lo haremos 
con la W:  
 
 webserver="172.26.0.5/32" 
 intranet="172.26.0.0/24" 
 un_ports="1025 >< 65535" # as?ndicaremos los rangos de puertos 
                              # o para rangos excluyentes: 1025<>65535 
              
 block in all 
 
 pass in on rl0 proto tcp from $intranet to $webserver port = 80 
        flags S/SA 
 
Vereis que he eliminado ciertos par?tros, eso va a vuestro gusto. S?
pasar?los paquetes tcp que vengan del interfaz rl0 desde una ip de la 
intranet a nuestro servidor web en el puerto 80 y que contenga, del conjunto 
de flags que forman el SA (SYN, ACK), el bit SYN activado. As?si tenemos 
"flags X/Y", estamos indicando que s?queremos que evalue las flags 
indicadas en Y, y de dicho conjunto, que s?las que est?en X est?
activadas. En definitiva, ser?como decir que queremos que las de X est?
activadas (= 1) y las de Y desactivadas (= 0). Podemos indicar s?el primer 
conjunto o s?el segundo tal que quede "flags S" (el segundo conjunto por 
defecto ser? las dem?flags) o "flags /S" (el primer conjunto ser? las 
dem?flags).  
 
Tenemos una opci?uy interesante llamada "keep state": 
 
 ftpserver="172.26.0.5/32" 
 
 block in all 
 pass in on rl0 proto tcp from any to $ftpserver port = 21 
        flags S/SA keep state 
 
Lo normal ser?que si usamos un cortafuegos delante de un servidor ftp, el 
servidor ftp lo tengamos en modo pasivo, para saber que puertos abre para la 
transferencia de ficheros y dejarlos abiertos en el cortafuegos. Para evitar 
esto tenemos "keep state". Hace exactamente lo que dice, "guardar el estado" 
de la conexi?As?podremos poner una regla que pase s?el SYN de 
principio de conexi?y una vez que esta regla coincide, se crea una entrada 
para esa conexi?n una "tabla de estado" y autom?camente deja pasar todos 
los paquetes de esa comunicaci?As?ismo, se borra dicha entrada de la 
tabla de estado cuando se cierra la conexi? cuando se agota el tiempo de 
espera (timeout), que podemos configurarlo nosotros mismos en el cortafuegos 
con una opci?timeout" y tambi?el n?o m?mo de entradas en la tabla 
de estado para dicha regla con "max".  
 
Cuando existen entradas en dicha tabla de estado y un paquete entra a nuestro 
cortafuegos, este lo primero que hace es comprobar el n?o de secuencia 
(ISN) del paquete con el de la tabla de estado, y as?abe si el paquete 
pertenece o no a la entrada de la tabla. Con esto evitamos spoofing de 
direcciones. Tiene otra ventaja tal y como dice en la p?na man de pf, y es 
que si tenemos una tabla de estado con 50.000 entradas s?se necesitan 16 
comparaciones para saber si pertenece o no a algun estado; en caso de que no, 
pasar?a ser visto por las reglas de filtrado siguientes.  Un ejemplo con 
las opciones de keep state:  
 
ftpserver="172.26.0.5/32" 
 
pass in proto tcp from any to $ftpserver port 21 flags S/SA keep state (max 
100)  
 
Algo importante que destacar es la posibilidad de logear s?ciertos 
paquetes o todos los paquetes que pasan por una comunicaci?on keep state. 
Si tenemos la regla anterior:  
 
pass in log on rl0 proto tcp from any to $ftpserver port = 21  
        ^^^ 
flags S/SA keep state 
 
logear??los paquetes que pasen por el interfaz rl0, protocolo tcp con 
direcci?estino nuestro servidor FTP, puerto destino 21 y con el flag SYN 
activado. Si en vez de "log" ponemos "log-all" logear?oda la comunicaci?
(s?con "keep state" o "modulate state"). Todo se logea al interfaz pflog0 
y en formato pcap de tcpdump, as?ue para visualizar el tr?co hacemos 
"tcpdump -i pflog0"  (no os preocupeis por el mensaje que os dar?l 
principio), Si arrancamos el demonio "pflogd" escribir?l tr?co al 
/var/log/pflog . 
 
Con "keep state" hemos conseguido evitar que un usuario malicioso spoofee su 
direcci? intervenga en la comunicaci?basando la seguridad de la misma 
en el ISN. Como bien sabemos existen pilas y pilas, unas con un procedimiento 
de generaci?e ISN's m?d?les a la hora de romperlas y otras m?
fuertes. Para reforzar la seguridad en este punto en sistemas operativos que 
generen ISN's d?les se a? la opci?modulate state", que en base a los 
ISN's genera otros de m?"calidad", con lo que cubrimos otro importante 
aspecto de la seguridad. Esta caracter?ica lleva impl?to el uso de "keep 
state" y s?se aplica a conexiones TCP l?amente. As?os quedar? 
 
pass in log-all on rl0 proto tcp from any to $ftpserver port = 21 flags 
S/SA modulate state 
 
Otra caracter?ica es la que se define como una "normalizaci?e paquetes".  
Se aplica con la directiva "scrub" y consiste en reensamblar los fragmentos 
IP de un paquete antes de pasar por las reglas del cortafuegos. Esto cubre 
otro aspecto importante de seguridad que es la prevenci?e ataques de 
fragmentaci?e paquetes IP para poder pasar ciertos paquetes a trav?de un 
cortafuegos. Adem?de esto, podemos cambiar el bit DF (Don't Fragment), el 
TTL (Time To Live) m?mo (paquetes IP) y el MSS (Maximun Segment Size)  
m?mo (paquetes TCP).  
 
Algo que pod?os echar de menos de IPFilter es la posibilidad de agrupar 
reglas, por ejemplo seg?l interfaz, de manera que pod?os agrupar una 
serie de reglas que pertenecieran al interfaz rl0, entonces, si un paquete va 
al interfaz rl1 al cortafuegos le bastar?con mirar la primera regla del 
grupo de reglas de rl0 para saber que ya no tiene que leer m?reglas de ese 
grupo. Pero Packet Filter tambi?cubre ese aspecto, y lo hace 
autom?camente, sin directivas. Si por ejemplo tenemos una serie de reglas: 
 
 
block in quick on rl0 from 10.0.0.0/8 to any 
block in quick on rl0 from 172.16.0.0/12 to any 
block in quick on rl0 from 192.168.0.0/16 to any 
block in quick on rl0 from 255.255.255.255/32 to any 
 
 
Si un paquete se recibe por el interfaz rl1, PF mirar?a primera regla de 
este grupo de 4, y como van dirigidas a los paquetes que vayan al interfaz 
rl0, pasar?as 3 siguientes. Esta caracter?ica s?funciona cuando las 
reglas son consecutivas, por ello hemos de tener ordenadas nuestras reglas 
seg?ste orden: 
 
1. Por interfaz 
2. Por protocolo 
3. Por direcci?e origen 
4. Por puerto de origen 
5. Por direcci?e destino 
6. Por puerto de destino 
 
As?ue ordenaremos las reglas primero por interfaz, despu? dentro del 
grupo del interfaz por protocolo, etc.  
 
Espero terminar dentro de poco el art?lo documentando un poco m?el Packet 
Filter. 
 
Sugerencias, comentarios:  
 
pantarhei@funfatal.org o pantarhei@2500hz.net 
 
 
Pantarhei 
 
 
 
0x00
[zip] ezine-netsearch/ns008.zip [[save][+][close]]
The NetSearch E-Zine - Numero VIII - Volumen II
FilePreviewDate/TimeFilesizeViewsDownloads Actions
[file] nextract.c-07-05-03 06:0315,485 bytes862 [+][save]
[file] ns8-0x00.txt-07-05-03 06:259,718 bytes902 [+][save]
[file] ns8-0x01.txt-07-05-03 06:153,442 bytes771 [+][save]
[file] ns8-0x02.txt-03-26-03 21:2710,916 bytes861 [+][save]
[file] ns8-0x03.txt-01-07-90 18:1214,578 bytes871 [+][save]
[file] ns8-0x04.txt-07-01-03 02:2622,498 bytes741 [+][save]
[file] ns8-0x05.txt-07-05-03 05:585,255 bytes661 [+][save]
[file] ns8-0x06.txt-01-07-90 18:2653,907 bytes4041 [+][save]
[file] ns8-0x07.txt-01-07-90 18:5416,345 bytes892 [+][save]
[file] ns8-0x08.txt-07-05-03 05:4611,938 bytes652 [+][save]
[file] ns8-0x09.txt-07-05-03 05:468,802 bytes591 [+][save]
[file] ns8-0x0a.txt-07-05-03 05:4628,996 bytes721 [+][save]
[file] ns8-0x0b.txt-07-05-03 05:4738,309 bytes841 [+][save]
[file] ns8-0x0c.txt-07-05-03 05:47997 bytes641 [+][save]
Comments
[comments]Add a CommentAuthor/MessageReleaseTime/Date Actions
User: [ Login ]
Message:


Human check: 
4 + 6 ?
[comment]Anonimo_fe44 > http://penney.athost.net/shopA-d/index.html Free Shi...ns008.zipOct/26/08 07:40-
[comment]Anonimo_c5b4 > http://penney.athost.net/shopB-d/index1.html Jc Penn...ns008.zipOct/26/08 07:40-
[comment]Anonimo_5d9e > http://yugioh.fusedtree.com/shopC-qw/index3.html Dec...ns008.zipOct/24/08 18:03-
[comment]Anonimo_1da4 > http://disney-channel-game.freespaceway.com/N-disney...ns008.zipOct/14/08 22:19-
[comment]mandingo     > para cuando el nuevo ezine?ns008.zipAug/12/08 15:58-
 
 
[dir] ezine-netsearch [+][close]
spanish reversing ezine
NameDescriptionTime/DateFilesize Views DownloadsComments Actions
[zip] ns008.zipThe NetSearch E-Zine - Numero VIII - Volum...Jul/09/2008 14:0178,426 bytes168205 [+][save]
[zip] ns007.zipThe NetSearch E-Zine - Numero VII - Volume...Jul/09/2008 14:01316,143 bytes6575 [+][save]
[zip] ns006.zipThe NetSearch E-Zine - Numero VI - Volumen IIJul/09/2008 14:01346,463 bytes6775 [+][save]
[zip] ns005.zipThe NetSearch E-Zine - Numero V - Volumen IJul/09/2008 14:01101,366 bytes73105 [+][save]
[zip] ns004.zipThe NetSearch E-Zine - Numero IV - Volumen IJul/09/2008 14:01101,383 bytes7575 [+][save]
[zip] ns003.zipThe NetSearch E-Zine - Numero III - Volumen IJul/09/2008 14:0181,886 bytes8085 [+][save]
[zip] ns002.zipThe NetSearch E-Zine - Numero II - Volumen IJul/09/2008 14:0149,632 bytes7095 [+][save]
[zip] ns001.zipThe NetSearch E-Zine - Numero I - Volumen IJul/09/2008 14:0145,216 bytes80145 [+][save]
RepoZipBrowser v1.16 by Mandingo - Copyleft 2008 - Yoire.com