Diferencia entre revisiones de «Cortafuegos»

De Guía Ubuntu
Saltar a: navegación, buscar
(Arreglado el formato)
Línea 12: Línea 12:
 
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:
  
-Cerrar todos los puertos de entrada
+
* Cerrar todos los puertos de entrada
-Navegar por internet
+
* Navegar por internet
-Permitir el acceso a internet de cualquier aplicación que él inicie.
+
* 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
+
* Permitir la libre navegación de la LAN de confianza si la tiene
  
 
En primer lugar instalamos el paquete iptables:
 
En primer lugar instalamos el paquete iptables:
  
#apt-get install -test iptables
+
$ 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.
 
Esto nos activará el servicio por defecto. Solo queda implementar el script de iptables con nuestras reglas y hacer que se carguen al inicio.
Línea 25: Línea 25:
 
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 asi, muy sencillo:
  
--------------------
+
<nowiki>#!/bin/bash
#!/bin/bash
+
  
 
#-s Especifica una dirección de origen
 
#-s Especifica una dirección de origen
Línea 107: Línea 106:
  
 
#Dejamos a localhost, para mysql, etc..
 
#Dejamos a localhost, para mysql, etc..
iptables -A INPUT -i lo -j ACCEPT
+
iptables -A INPUT -i lo -j ACCEPT</nowiki>
  
----------------------
 
  
 
Logicamente las lineas van juntas. Solo se aplican las lineas no comentadas con # , las otras son para mi servidor.
 
Logicamente las lineas van juntas. Solo se aplican las lineas no comentadas con # , las otras son para mi servidor.
Línea 115: Línea 113:
 
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
  
 
Ahora si aplicamos el script de este modo:
 
Ahora si aplicamos el script de este modo:
  
#sh firewall.sh
+
$ sh firewall.sh
  
 
podemos ver la salida de iptables haciendo:
 
podemos ver la salida de iptables haciendo:
  
#iptables -L
+
$ iptables -L
  
 
que viene a ser algo asi:
 
que viene a ser algo asi:
  
--------------------
+
<nowiki>root@platas:/home/herje # iptables -L
root@platas:/home/herje # iptables -L
+
 
Chain INPUT (policy DROP)
 
Chain INPUT (policy DROP)
 
target prot opt source destination
 
target prot opt source destination
Línea 145: Línea 142:
 
target prot opt source destination
 
target prot opt source destination
 
ACCEPT all -- anywhere anywhere state RELATED,ESTABLISHED
 
ACCEPT all -- anywhere anywhere state RELATED,ESTABLISHED
root@platas:/home/herje #
+
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:
 
Solo falta hacer que las reglas se carguen al inicio, para ello copiamos el script en /etc/init.d y lo ponemos por default:
  
#cp firewall.sh /etc/init.d/
+
$ cp firewall.sh /etc/init.d/
#update-rc.d firewall.sh defaults
+
$ update-rc.d firewall.sh defaults
  
 
Y listo con esto tenemos nuestro firewall funcionando.
 
Y listo con esto tenemos nuestro firewall funcionando.

Revisión de 16:11 3 sep 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 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:

$ 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:

$ sh firewall.sh

podemos ver la salida de iptables haciendo:

$ 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:

$ cp firewall.sh /etc/init.d/
$ 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.