Diferencia entre revisiones de «Cortafuegos»

De Guía Ubuntu
Saltar a: navegación, buscar
Línea 9: Línea 9:
  
 
Para los paranoicos, explico un modo muy simple de implementar iptables con el fin de cerrar todos los puertos que queramos de nuestro pc.
 
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.
+
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.
 
No obstante me voy a centrar en alguien que puede ser un usuario normal y que desea lo siguiente:
 
No obstante me voy a centrar en alguien que puede ser un usuario normal y que desea lo siguiente:
  
Línea 21: Línea 21:
 
  $ sudo apt-get install -test 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.
+
É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 asi, muy sencillo:
+
El script que yo tengo, sin entrar en detalles viene a ser algo así, muy sencillo:
  
 
  <nowiki>#!/bin/bash
 
  <nowiki>#!/bin/bash
Línea 109: Línea 109:
  
  
Logicamente las lineas van juntas. Solo se aplican las lineas no comentadas con # , las otras son para mi servidor.
+
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:
+
El fichero se puede llamar por ejemplo firewall.sh , debemos darle permisos de ejecución:
  
 
  $ chmod +x firewall.sh
 
  $ chmod +x firewall.sh
Línea 123: Línea 123:
 
  $ sudo iptables -L
 
  $ sudo iptables -L
  
que viene a ser algo asi:
+
que viene a ser algo así:
  
 
  <nowiki>root@platas:/home/herje # iptables -L
 
  <nowiki>root@platas:/home/herje # iptables -L
Línea 144: Línea 144:
 
root@platas:/home/herje #</nowiki>
 
root@platas:/home/herje #</nowiki>
  
Solo falta hacer que las reglas se carguen al inicio, para ello copiamos el script en /etc/init.d y lo ponemos por default:
+
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 cp firewall.sh /etc/init.d/
Línea 150: Línea 150:
  
 
Y listo con esto tenemos nuestro firewall funcionando.
 
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.
+
Agradezco cualquier aclaración, complemento etc. teniendo en cuenta que está pensado para un user casero y sin grandes pretensiones.
  
 
{{esbozo}}
 
{{esbozo}}
  
 
[[Categoría:Administración del sistema]][[Categoría:Seguridad]]
 
[[Categoría:Administración del sistema]][[Categoría:Seguridad]]

Revisión de 21:22 8 nov 2006

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 núcleo 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

É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.

Este artículo es, por ahora, sólo un esbozo.
Ampliándolo ayudarás a mejorar Guía Ubuntu.