Cortafuegos
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. Entre ellos, el más destacable por su sencillez de manejo es Firestarter.
Para instalarlo, lée Primeros pasos/Añadir aplicaciones.
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 nucleo de Linux y que requiere una serie de conocimientos. Hay cientos de tutoriales en la red. 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
Esto nos activará el servicio por defecto. Solo 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 asi, 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
Logicamente las lineas van juntas. Solo se aplican las lineas 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 asi:
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 #
Solo 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.
Este artículo es, por ahora, sólo un esbozo.
Ampliándolo ayudarás a mejorar Guía Ubuntu.