17/11/07

sistemas de seguridad : firewalls

Una vez sabiendo cuales son los servicios con los que dispone nuestro sistema, entonces podremos decidir cuales de ellos son accesibles y cuales no. Bueno en realidad el problema es un poco mas complicado ya que cuando nuestro sistema se encuentra en medio de dos redes tendremos que decidir desde que red sera accesible un servidor y desde cual no. Pero eso mas que nada es problema de planificación, por lo que tendremos que pensar un poquito mas y estructurarlo tranquilamente ( siempre ayuda el papel y el lápiz =D ).
Una de las herramientas de seguridad que podemos utilizar son los famosos firewalls que no es nada mas que un sistema que nos permite definir reglas a evaluar cuando un paquete de red pasa por nuestro host. Ya hablando de paquetes que están en nuestro host hay tres situaciones diferentes que podemos evaluar .

1. Un paquete que sale de nuestra maquina y que sale hacia otra
2.Un paquete externo que viene desde otra maquina, pero tiene un destino que no es nuestra maquina.
3.Un paquete de origen externo que viene de otra maquina con destino ala nuestra.

Entonces lo que nos permite hacer un firewall es abrir o no las puertas, la salida o llegada de estos paquetes. Por ejemplo una de las reglas mas típicas de los firewalls escrita con simples palabras es la siguiente “ si llega un paquete desde internet con destino al puerto 80 de mi maquina, entonces, no dejarlo pasar”.

Ahora bien lo que tenemos que hacer es adecuar las reglas necesarias de firewall a nuestro sistema. Hay muchas formas, técnicas y combinaciones posibles de instalar un firewall.

Ahora veremos IPTABLES que como su nombre nos dice trabaja con tablas, y estas tablas trabajan con unas cadenas de reglas echas por nosotros.
Hay tres cadenas INPUT, OUTPUT y FORWARD, estas son cadenas para definir reglas para lo que ingresa, lo que sale y lo que pasa por nuestro sistema.

Esta es una forma básica del comando iptables.

iptables [definición] [cadena] [opción] [acción]

El parámetro [definición] es un parámetro general, ademas que es seguido de las especificaciones de cadena. En esta parte hay varias opciones posibles como :

A --> para agregar una nueva regla ala cadena
D --> para borrar la regla
L --> para visualizar la lista de reglas definidas

En el parámetro [opciones] es donde definimos los filtros.



todo lo que sale a internet
todo lo que biene desde la ip 200.133.145.12 hacia mi maquina:80
todo lo que sale de mi maquina hacia la ip 200.133.145.12

En la parte de [acción] se pone lo que tiene que hacer cuando una regla se cumple, ya sea permitirla o rechazarla.

Vamos a ver unos cuantos ejemplos para facilitar esto.

iptables -A INPUT -tcp –dport 80 -j ACCEPT

Con este ejemplo creamos una regla con [-A] para la cadena [INPUT] en la cual definimos que todo lo que entre por el puerto [80] del protocolo [TCP] sea [-p tcp –dport ] aceptado [-j AECCEPT].

ojo: siempre requiere el parametro -p para saber aque protocolo referirse la regla.

iptables -A INPUT -p icmp -j DROP

Con este ejemplo filtramos y descartamos todo lo que ingresa por el protocolo ICMP a nuestra maquina.

iptables -A OUTPUT -p tcp -d 192.168.44.4 -j REJECT

En este ejemplo en lugar de definir una regla de firewall para todo lo que entra, lo hicimos para lo que sale de nuestra maquina y se dirige a la ip 192.168.44.4 ,
esta acción [REJECT] rechaza dicho paquete y como no definimos ningún puerto rechazara todo.

Podemos utilizar una política de funcionamiento, que consiste en en rechazar todo lo que entra y después crear nuestras reglas excepcionales para dicha politica.



iptables -P INPUT DENY -------> denegamos TODO
iptables -A INPUT -p tcp –dport 23 -j ACEPT ------->abrimos lo que necesitemos
iptables -A INPUT -p tcp –dport 80 -j ACEPT

De esta forma tenemos nuestro sietema con unos pocos puertos abiertos.



-------> -A (crear regla)
-------> -D (Borramos regla)
-------> INPUT (ingreso)
-------> OUTPUT (egreso)
-------> FORWARD (paso)
-------> -p (definimos protocolo)
-------> --dport (definimos puerto)
-------> -s (definimos fuente)
-------> -d (destino)
-------> -i (dispositivo de red)
-------> ACCEPT (aceptar)
-------> DROP (descartar)
-------> REJECT (rechazar)

iptables -L -------> vemos el listado de als reglas que tenemos definidas.

iptables -F -------> hacemos un borrado a todas las listas definidas.

Para guardar las reglas que definimos ( porque una ver apagada la maquina se pierden todas las reglas definidas y que flojera hacer las de nuevo no? ).

manera sencilla y restablecerlas diariamente.

cd /sbin --> directorio de archivos de iptables

iptables-save -c > nombre_del_archivo --> nombre que quieras

iptables-restore nombre_del_archivo --> creo que esta explicito

Si queremos que cada ves que iniciemos la maquina sola se restablezcan las reglas definidas solo has te un script.

2 comentarios:

Anónimo dijo...

Oi, achei seu blog pelo google está bem interessante gostei desse post. Gostaria de falar sobre o CresceNet. O CresceNet é um provedor de internet discada que remunera seus usuários pelo tempo conectado. Exatamente isso que você leu, estão pagando para você conectar. O provedor paga 20 centavos por hora de conexão discada com ligação local para mais de 2100 cidades do Brasil. O CresceNet tem um acelerador de conexão, que deixa sua conexão até 10 vezes mais rápida. Quem utiliza banda larga pode lucrar também, basta se cadastrar no CresceNet e quando for dormir conectar por discada, é possível pagar a ADSL só com o dinheiro da discada. Nos horários de minuto único o gasto com telefone é mínimo e a remuneração do CresceNet generosa. Se você quiser linkar o Cresce.Net(www.provedorcrescenet.com) no seu blog eu ficaria agradecido, até mais e sucesso. If is possible add the CresceNet(www.provedorcrescenet.com) in your blogroll, I thank. Good bye friend.

Anónimo dijo...

Interesante, saludos.