Diferencia entre revisiones de «Cortafuegos»
(→Filtro de mac's) |
(→Filtro de mac's) |
||
Línea 177: | Línea 177: | ||
$ chmod 666 /proc/sys/net/ipv4/ip_forward | $ chmod 666 /proc/sys/net/ipv4/ip_forward | ||
$ echo "1" > /proc/sys/net/ipv4/ip_forward | $ echo "1" > /proc/sys/net/ipv4/ip_forward | ||
− | + | ||
y luego nos fijamos que nuestro '''firewall.sh''' contenga lo siguiente, y que no contenga algo que interfiera con esto | y luego nos fijamos que nuestro '''firewall.sh''' contenga lo siguiente, y que no contenga algo que interfiera con esto | ||
Revisión de 04:11 2 feb 2007
Contenido
Descripción
Un cortafuegos o firewall es una herramienta que facilita la protección contra intrusos que pretenden acceder a nuestro ordenador sin nuestro consentimiento.
Existen variedad de cortafuegos en GNU/Linux, en modo texto y en modo gráfico.
Modo gráfico (GUI)
Firestarter
El más destacable por su sencillez de manejo es Firestarter.
Para instalarlo, lée Primeros pasos/Añadir aplicaciones.
Modo texto (Terminal)
Iptables
Otra opción es utilizar la herramienta iptables. En el siguiente artículo publicado por herje en http://www.ubuntu-es.org/node/422 muestra como hacerlo fácil:
Para los paranoicos, explico un modo muy simple de implementar iptables con el fin de cerrar todos los puertos que queramos de nuestro pc. Iptables es un sistema firewall muy potente incluido en el núcleo de Linux y que requiere una serie de conocimientos. Hay cientos de tutoriales en la red. Es aconsejable no setear iptables con cualquier script copiado de la red, puesto que iptables está capacitado para dejar tu sistema como se dice en román paladino abierto de piernas (desconozco si el script se hay puesto aquí es bueno o te valdrá a tí... esto es un wiki colectivo y cada red es diferente!!!). Podemos buscar otros scripts muy completos e información del funcionamiento de iptables en el manual del autoren bulma.net, aquí (inglés) y aquí (inglés), o preguntandole a google. No obstante me voy a centrar en alguien que puede ser un usuario normal y que desea lo siguiente:
- Cerrar todos los puertos de entrada
- Navegar por internet
- Permitir el acceso a internet de cualquier aplicación que él inicie.
- Permitir la libre navegación de la LAN de confianza si la tiene
En primer lugar instalamos el paquete iptables:
$ sudo apt-get install -test iptables
Ésto nos activará el servicio por defecto. Sólo queda implementar el script de iptables con nuestras reglas y hacer que se carguen al inicio.
El script que yo tengo, sin entrar en detalles viene a ser algo así, muy sencillo:
#!/bin/bash #-s Especifica una dirección de origen #-d Especifica una dirección de destino #-p Especifica un prototocolo #-i Especifica un interface de entrada #-o Especifica un interface de salida #-j Especifica la acción a ejecutar sobre el paquete #--sport Puerto de origen #--dport Puerto de destino #Borrar todas las reglas iptables -F #Politica general.Cerramos todo.Dejamos entrar y salir lo solicitado iptables -P INPUT DROP iptables -P OUTPUT ACCEPT iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT iptables -A OUTPUT -m state --state ESTABLISHED,RELATED -j ACCEPT ###OTRAS PROTECCIONES#### # Quitamos los pings. /bin/echo "1" > /proc/sys/net/ipv4/icmp_echo_ignore_all # No respondemos a los broadcast. /bin/echo "1" > /proc/sys/net/ipv4/icmp_echo_ignore_broadcasts # Para evitar el spoofing nos aseguramos de que la dirección # origen del paquete viene del sitio correcto. for interface in /proc/sys/net/ipv4/conf/*/rp_filter; do /bin/echo "1" > ${interface} done # Los ICMPs redirigidos que pueden alterar la tabla de rutas. for interface in /proc/sys/net/ipv4/conf/*/accept_redirects; do /bin/echo "0" > ${interface} done # No guardamos registros de los marcianos. /bin/echo "1" > /proc/sys/net/ipv4/conf/all/log_martians # Asegurar, aunque no tenga soporte el nucleo, q no hay forward. /bin/echo "0" > /proc/sys/net/ipv4/ip_forward ###Reglas de los puertos#### # Permitimos que se conecten a nuestro servidor web. #iptables -A INPUT -m state --state NEW -p TCP --dport 80 -j ACCEPT #Abrimos ssh a la red. #iptables -A INPUT -s 172.26.0.3 -p TCP --dport 22 -j ACCEPT #iptables -A INPUT -s 172.26.0.4 -p TCP --dport 22 -j ACCEPT #iptables -A INPUT -s 172.26.0.5 -p TCP --dport 22 -j ACCEPT #iptables -A INPUT -p TCP --dport 22 -j ACCEPT # Permitimos la comunicación con el servidor dns iptables -A INPUT -p UDP --dport 53 -j ACCEPT iptables -A INPUT -p TCP --dport 53 -j ACCEPT #Permitimos uso de ftp. #iptables -A INPUT -p TCP --dport 21 -j ACCEPT #Permitimos acceso pop3. #iptables -A INPUT -p TCP --dport 110 -j ACCEPT # Permitimos uso de smtp #iptables -A INPUT -p TCP --dport 25 -j ACCEPT #Permitimos acceso imap. #iptables -A INPUT -p TCP --dport 143 -j ACCEPT #iptables -A INPUT -p UDP --dport 143 -j ACCEPT #Permitimos todo el trafico de la LAN iptables -A INPUT -s 172.26.0.2 -j ACCEPT iptables -A INPUT -s 172.26.0.4 -j ACCEPT iptables -A INPUT -s 172.26.0.5 -j ACCEPT #Dejamos a localhost, para mysql, etc.. iptables -A INPUT -i lo -j ACCEPT
Lógicamente las líneas van juntas. Sólo se aplican las líneas no comentadas con # , las otras son para mi servidor.
El fichero se puede llamar por ejemplo firewall.sh , debemos darle permisos de ejecución:
$ chmod +x firewall.sh
Ahora si aplicamos el script de este modo:
$ sudo sh firewall.sh
podemos ver la salida de iptables haciendo:
$ sudo iptables -L
que viene a ser algo así:
root@platas:/home/herje # iptables -L Chain INPUT (policy DROP) target prot opt source destination ACCEPT all -- anywhere anywhere state RELATED,ESTABLISHED ACCEPT udp -- anywhere anywhere udp dpt:domain ACCEPT tcp -- anywhere anywhere tcp dpt:domain ACCEPT all -- glorioso anywhere ACCEPT all -- minime anywhere ACCEPT all -- placebo anywhere ACCEPT all -- anywhere anywhere Chain FORWARD (policy ACCEPT) target prot opt source destination Chain OUTPUT (policy ACCEPT) target prot opt source destination ACCEPT all -- anywhere anywhere state RELATED,ESTABLISHED root@platas:/home/herje #
Sólo falta hacer que las reglas se carguen al inicio, para ello copiamos el script en /etc/init.d y lo ponemos por default:
$ sudo cp firewall.sh /etc/init.d/ $ sudo update-rc.d firewall.sh defaults
Y listo con esto tenemos nuestro firewall funcionando. Agradezco cualquier aclaración, complemento etc. teniendo en cuenta que está pensado para un user casero y sin grandes pretensiones.
Filtro de mac's
Últimamente las tecnologías inalámbricas hacen necesario el uso del filtro de mac como una potente herramienta a la hora de seleccionar a quienes queremos que se conecten a nuestra red inalambrica. Esto sin embargo, no nos asegura que no puedan tener acceso, lo que si nos asegura es que tendrán que trabajar mucho más, lo que les puede costar lo suficiente como para que dejen de intentarlo, y sin más, supondremos, para este ejemplo, que la WLAN se llama ath0, y que la mac de nuestro laptop es CA:FE:DE:C0:C0, luego debemos fijarnos que nuestro firewal.sh contenga las siguientes lineas (obviamente también debemos fijarnos que en otras partes no interfiramos con lo de a continuación):
# Debemos fijarnos que la política de entrada sea # no permitir el acceso a nada iptables -P INPUT DROP
#Permitimos que salga todo el tráfico de la WLAN iptables -A OUTPUT -o ath0 -j ACCEPT
#Solo permitimos que entren las siguientes mac's iptables -A INPUT -m mac --mac-source CA:FE:DE:C0:C0 -j ACCEPT
Ahora bien, si lo que queremos es en que nuestro laptop, además de podernos conectar a nuestro computador, podamos conectarnos con la red que tiene acceso la LAN del computador, que llamaremos eth0, debemos fijarnos además que exista una buena coneccion entre eth0 y ath0
#Permitimos que existan conexiones entre las LAN (esto incluye a las WLAN) $ chmod 666 /proc/sys/net/ipv4/ip_forward $ echo "1" > /proc/sys/net/ipv4/ip_forward
y luego nos fijamos que nuestro firewall.sh contenga lo siguiente, y que no contenga algo que interfiera con esto
#Permitimos todas las conexiones que van desde ath0 hacia eth0 iptables -A FORWARD -i eth0 -o ra0 -m state --state ! INVALID -j ACCEPT #Son permitidas solo las conexiones ya establecidas o relacionadas con #las conexiones ya establecidas iptables -A FORWARD -i ra0 -o eth0 -m state --state ESTABLISHED,RELATED -j ACCEPT
Por último, lo más probable es que la red que tiene acceso la LAN, eth0 del computador, tenga un firewall que imposibilite la conexión de nuestro laptop, por lo cual debemos enmascarar a nuestro laptop frente a la red, para ello debemos colocarle una mascara a todo lo que salga de la LAN eth0
#Todo lo que sale de eth0 se enmascara iptables -t nat -A POSTROUTING -o ra0 -j MASQUERADE
Este artículo es, por ahora, sólo un esbozo.
Ampliándolo ayudarás a mejorar Guía Ubuntu.