Seguridad en tu red, ¡Ponte un firewall!

Ubuntu, Suse, Fedora... si lo tuyo es darle al pingüino, éste es tu foro.

Moderadores: neo22s, Ayu, Toti, golbergmasjunior, Spamcops

Avatar de Usuario
neo22s
Moderador
Moderador
Mensajes: 363
Registrado: Mié Dic 20, 2006 10:16 pm
Contactar:

Seguridad en tu red, ¡Ponte un firewall!

Mensajepor neo22s » Mié Dic 20, 2006 10:27 pm

Extraído: http://deambulando.wordpress.com/2006/0 ... -firewall/


Una tarde maravillosa, para comenzar un nuevo artículo.

En este nuevo, aprenderemos a montar un servidor firewall, para que nos puede ser útil?

1. para evitar intrusiones
2. tener controlada nuestra red
3. evitar según que virus
4. etc? etc?

Para mi el mejor que he probado nunca, y aunque es muy friki, es el IPTABLES, este es un servicio que se puede instalar en nuestro servidor, y que controla todos lo paquetes que llegan a nuestra red, antes de ser procesados por alguna aplicación.


Por lo tanto volvemos a las andadas, necesitaremos:

1. un pc con tarjeta de red ( no hace falta ninguna maravilla)
2. instalación de Ubuntu
3. conexión a internet

bien los que ya tengáis vuestro servidor Squid que explicamos ayer, podéis continuar y los que no, pues necesitareis lo anteriormente descrito.

Empecemos!

Antes de nada avisar:

Se ha de ir con mucho cuidado con la manipulación de un firewall ya que la incorrecta manipulacion de este puede bloquear su servidor lo cual no le dejará mas remedio que reiniciarlo. Vigila mucho con el script final, ya que si se equivoca en algún parametro, y lo pone en auto reinicio, no podra acceder mas a su maquina remotamente.

Una vez avisados?

¿¿Que puertos necesito??

Bien esto dependerá de su máquina y de los servicios que tengas instalados en el, yo me basaré en que tenéis una instalación como la que di ayer para el Squid. Igualmente doy un listado de servicios comunes:

21 - ftp (el servidor FTP, a dejar según utilización).
22 - ssh (el acceso al shell criptado, dejarlo abierto !).
23 - telnet (el acceso al shell no criptado, dejar en caso de avería).
25 - smtp (el servidor de correo entrante, dejar en la mayor parte de los casos).
53 - dns (el servidor DNS, dejar en la mayoría de los casos).
80 - http (servidor web, dejar).
110 - pop3 (el acceso a los e-mails, dejar en la mayoría de los casos).
143 - imap (acceso a los mails, dejar si no utiliza pop3).
443 - https (acceso al web criptado, dejar según sus preferencias de utilización).
901- swat (panel configuración samba, dejarlo)
10000 - webmin (panel de configuración de servidor, dejarlo).
8080- Squid (proxy cache)

Instalación

Para instalar iptables, deberemos de entrar vía comando de consola, o por SSH y picar:

aptitude install iptables

uala instalado, los que habíais seguido el manual de Squid no hacia falta D

Funcionamiento

doy ejemplos:

para listar las instrucciones existentes:

iptables ?L

Vamos a ocuparnos de la sección Input de momento(para el trafico entrante).

Autorizamos los puertos 22 y 80 :

iptables -A INPUT -i eth0 -p tcp ?dport 22 -j ACCEPT
iptables -A INPUT -i eth0 -p tcp ?dport 80 -j ACCEPT

-A INPUT : situamos nuestra instrucción a la entrada del firewall.
-i eth0 : aquí la interfaz ethernet que nos interesa. Para saberla picar ifconfig
-p tcp : el protocolo tratado es el TCP(solo tratamos este de momento).
?dport 22 : la instrucción va a ser aplicada sobre el puerto SSH (n° 22).
-j ACCEPT : aceptamos este tráfico.

Solo falta bloquear el resto (atención, es aquí donde el
firewall va a hacer verdadero efecto, compruebe que tiene bien
introducidoas sus instrucciones sino corre el riesgo de bloquear su servidor!) :

$ /sbin/iptables -A INPUT -i eth0 -j DROP

Tenemos dos opciones al nivel de esta instrucción.

Ya sea hacemos un DROP de los paquetes, es decir que si un paquete
llega y no está aceptado se borra. El cliente esperará de su parte una
respuesta en vano, hasta el timeout.
La segunda solución es relanzar los paquetes(REJECT en lugar de DROP).
Si un paquete no solicitado llega, se reenvia al cliente un error y el
no espera más porque hay una respuesta negativa.

Relanzar los paquetes es más propio pero eliminarlos es más seguro. En
efecto, imaginemos que alguien le envia paquetes repetidos sobre un
puerto, su servidor no los tratará mientras que con la regla reject
tomará su tiempo en responder.

Es tu elección ;)

El firewall está en acción. Prueba de escanear su servidor, únicamente
verá los puertos 21 y 80 abiertos. No se sorprenda si el scan es muy
lento, es a causa de la instrucción DROP.

Para poner a cero el firewall escribe :

iptables -F

OKKKKK esto tiene buena pintaaa

venga un ejemplo mas largo de lo que podría ser vuestro firewall(xxxxxx es la ip de la maquina que quieres permitir)

iptables -A INPUT -i eth0 -m state ?state ESTABLISHED,RELATED -j ACCEPT
iptables -A INPUT -i eth0 -p tcp ?dport 80 -j ACCEPT
iptables -A INPUT -i eth0 -p tcp ?dport 8080 -j ACCEPT
iptables -A INPUT -i eth0 -p tcp ?dport 901 ?source xx.xx.xx.xx -j ACCEPT
iptables -A INPUT -i eth0 -p tcp ?dport 10000 ?source xx.xx.xx.xx -j ACCEPT
iptables -A INPUT -i eth0 -p tcp ?dport 22 ?source xx.xx.xx.xx -j ACCEPT
iptables -A INPUT -i eth0 -j REJECT

Olé! es algo flojilla pero para empezar no esta nada nada mal!

Implementación

Que os creíais, que tendríais que poner todo eso cada vez que enciendes la maquina??? Nooooooooooooooooool

Vamos a automatizarlo con un pequeño script (me encanta esta parte ))

hacemos:

vi /etc/init.d/wall

y dentro (cópialo pero reemplaza las xxx por la ip permitida):



#######################INICIO###########################
# descripción: FirewallIPT=/sbin/iptablescase "$1" in

start)
$IPT -A INPUT -i eth0 -m state ?state ESTABLISHED,RELATED -j ACCEPT
$IPT -A INPUT -i eth0 -p tcp ?dport 8080 -j ACCEPT
$IPT -A INPUT -i eth0 -p tcp ?dport 80 -j ACCEPT
$IPT -A INPUT -i eth0 -p tcp ?dport 901?source xx.xx.xx.xx -j ACCEPT
$IPT -A INPUT -i eth0 -p tcp ?dport 10000 ?source xx.xx.xx.xx -j ACCEPT
$IPT -A INPUT -i eth0 -p tcp ?dport 22 ?source xx.xx.xx.xx -j ACCEPT
$IPT -A INPUT -i eth0 -j REJECT
exit 0
;;

stop)
$IPT -F INPUT
exit 0
;;
*)
echo "Usage: /etc/init.d/wall {start|stop}" exit 1 ;;

esac
############FIN#####################
escape+:+x para gravar

entonces picamos (para dar permisos al fichero):

chmod 700 /etc/init.d/wall

Ahora ya podemos hacer algo tan wapo como:

/etc/init.d/wall start
o
/etc/init.d/wall stop

buuuuuuuuuuuuuu que pasaadaaaaa

pero falta que se inicie con el arranque!

no problemo!

update-rc.d /etc/init.d/wall defaults

LISTOOOO!!!

En la próxima lección vamos a montar un Apache y un FTP!

Volver a “Linux”

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 1 invitado