13.07.2015 Views

SEGURIDAD EN UNIX Y REDES

SEGURIDAD EN UNIX Y REDES

SEGURIDAD EN UNIX Y REDES

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

204CAPÍTULO 12. CORTAFUEGOSdiferente utiliza la lista forward para enviarlo. Por último, la lista output se utiliza obviamenteantes de enviar un paquete por un interfaz de red. Los elementos de cada lista se denominan reglasy definen – junto a los targets, de los que hablaremos a continuación – qué hacer con los paquetesque cumplen ciertas características; si un paquete no cumple ninguna de las reglas que deciden quéhacer con él, lo mejor si queremos un sistema seguro es rechazarlo o denegarlo. Mediante ipchainspodemos definir listas, modificarlas y eliminarlas 2 y, más importante, definir las reglas para cadalista. Para estudiar las opciones de esta orden se pueden consultar las páginas ipchains(8),ipfw(4), ipchains-restore(8) e ipchains-save(8).Cuando un paquete cumple cumple una determinada regla de una chain definimos qué hacer conél mediante lo que ipchains denomina ‘objetivo’ o target (quizás una traducción menos literalpero más clarificadora sería ‘destino’). Aunque existen más targets, son tres los que más se suelenutilizar: accept permite el paso de un paquete, deny lo bloquea, y reject también lo bloqueapero a diferencia del anterior envía al origen una notificación mediante un mensaje icmp de tipodest unreach (siempre que el paquete bloqueado no sea también de tipo icmp). Realmente,aunque reject y deny nos parezcan igual de seguros – y de hecho en la mayoría de situacioneslo sean – siempre es más recomendable utilizar deny, ya que mediante mensajes icmp un posibleatacante podría conseguir información sobre nuestras políticas de filtrado, lo que podría llegar acomprometer nuestra seguridad.Veamos un ejemplo: imaginemos que deseamos denegar todo el tráfico icmp que llega a nuestramáquina Linux (realmente no sería recomendable filtrar los paquetes icmp de tipo 3); para ellodeberíamos ejecutar una sentencia como la siguiente:rosita:~# ipchains -A input -p icmp -j D<strong>EN</strong>Yrosita:~#Con la opción ‘-A’ estamos indicando que añadimos la regla a la chain especificada (‘input’,lo que viene a decir que la regla afecta a los paquetes entrantes), ‘-p’ nos permite especificar elprotocolo deseado (puede ser tcp, udp o icmp), y ‘-j’ indica el objetivo, en este caso deny; otrasopciones que nos podría haber sido útil son ‘-s’, que permite especificar la dirección de la máquinaorigen, y también ‘-L’, que muestra la configuración actual de nuestras políticas de filtrado:rosita:~# ipchains -LChain input (policy ACCEPT):Chain forward (policy ACCEPT):Chain output (policy ACCEPT):target prot opt source destination portsD<strong>EN</strong>Y icmp ------ anywhere anywhere any -> anyD<strong>EN</strong>Y icmp ------ anywhere anywhere any -> anyACCEPT icmp ------ anywhere anywhere any -> anyrosita:~#ipchains permite registrar mediante syslogd los paquetes que cumplan cierta regla – por normageneral, todos –. Un registro exhaustivo de las acciones que se toman en el núcleo con respecto alfiltrado de paquetes no es conveniente: la gran cantidad de información guardada hace imposibledetectar actividades sospechosas, y además no es difícil que se produzcan ataques de negación deservicio, ya sea por disco ocupado o por tiempo consumido en generar y guardar registros. Por tanto,lo habitual es almacenar sólamente los paquetes que no sean rutinarios (por ejemplo, intentos deconexión desde direcciones no autorizadas, ciertos paquetes icmp no habituales. . . ). El núcleo deLinux, a través de klogd y de syslogd, registra eventos con prioridad ‘info’ (al provenir del kernel,su tipo es obviamente ‘kernel’); si estos registros se almacenan en el fichero /var/adm/fwdata,sus entradas serán de la siguiente forma:rosita:~# tail -1 /var/adm/fwdata2 A excepción de las tres listas predefinidas, que no se pueden borrar.

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!