Firewall iptables
Upcoming SlideShare
Loading in...5
×
 

Like this? Share it with your network

Share

Firewall iptables

on

  • 5,001 views

Pequeño tutorial de una configuración básica para un firewall "de tres patas" usando Iptables.

Pequeño tutorial de una configuración básica para un firewall "de tres patas" usando Iptables.

Statistics

Views

Total Views
5,001
Views on SlideShare
4,973
Embed Views
28

Actions

Likes
1
Downloads
190
Comments
1

1 Embed 28

http://ral-arturo.blogspot.com 28

Accessibility

Categories

Upload Details

Uploaded via as Adobe PDF

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
  • Buen tuto...
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

Firewall iptables Document Transcript

  • 1. Firewall con Iptables Arturo Borrero González arturo.borrero.glez@gmail.com Febrero 2011Documento bajo licencia “"CC-BY-SA 3.0"”.Usted es libre de copiar, modificar y redistribuir estedocumento, bajo la misma licencia.Este documento o uno muy similar puede encontrarse en http://www.ral-arturo.blogspot.com/.
  • 2. Firewall con iptables Febrero 2011INTRODUCCIÓN Este documento trata de explicar una manera (de las muchas que hay) de montar un firewall“de tres patas” para alojar una configuración de red similar a la que puede verse en el esquema deabajo.El software usado es Debian Squeeze (amd64) e iptables (incluidas en el kernel de linux).Arturo Borrero González Pag. 2/6
  • 3. Firewall con iptables Febrero 2011CUESTIONES PREVIAS Los elementos principales son la máquina con 3 interfaces que hace de router y los dosservidores en la DMZ.Vamos a suponer unas cuantas cuestiones previas, que nuestro firewall debe cumplir: 1. Los clientes de la red local deben tener acceso a internet transparente. Todos los servicios y protocolos. 2. En SERV1 hay un servidor WEB y SSH. En SERV2 hay un servidor SSH y un servidor WEB escuchando en el puerto 1312. 3. Aunque el router que nos conecta a internet hace NAT entre la dirección pública y nuestra red privada, es necesario hacer otra vez NAT en la interfaz eth1, dado que no podemos modificar la tabla de encaminamientos de router. 4. El la máquina router servirá SSH a internet a través del puerto 22220 y por el resto de interfaces por el puerto 22. 5. El puerto 22 de la máquina router será reenviado al puerto 22 de SERV2. 6. Debe de estar controlado el tráfico entrante/saliente de la DMZ hacia la LAN para evitar sorpresas.En el ejemplo que voy a mostrar vamos a crear un script para el servicio en /etc/init.d/. Este scriptnos permitirá alternar rápidamente entre poner y quitar el firewall, dejando siempre las reglas deencaminamiento y redirecciones intactas.El script es el siguiente (debe tener permisos de ejecución): /etc/init.d/iptables#!/bin/bashRETVAL=0# Función iniciar firewallstart() { echo "Adding hard firewall rules..." # fichero con reglas de iptables de firewall restrictivo sh /etc/iptables_close.conf RETVAL=0}# Funcioón detener firewallstop() { echo "Removing hard firewall rules..." # fichero con reglas de iptables de firewall abierto sh /etc/iptables_open.conf RETVAL=0}# Analizando parámetro recibidocase $1 in start) start ;; stop)Arturo Borrero González Pag. 3/6
  • 4. Firewall con iptables Febrero 2011 stop ;; restart) stop start ;; status) /sbin/iptables -L /sbin/iptables -t nat -L RETVAL=0 ;; *) echo "Usage: firewall {start|stop|restart|status}" RETVAL=1esacexitPara añadir el script de init.d al arranque del sistema y que nuestro debian lo adapte, tendremos quehacer:#uptade-rc.d /etc/init.d/iptables defaultsEL SCRIPT DE IPTABLES Ahora tendremos que crear los siguientes ficheros de configuración de iptables. Uno con lasreglas de encaminamiento y no las de firewall y otro con ambas. /etc/iptables_open.conf#!/bin/bash# VariablesIF_INET=eth1IF_LAN=eth2IF_DMZ=eth0IP_ROUTER_INET=192.168.0.2IP_ROUTER_DMZ=192.168.2.1IP_ROUTER_LAN=192.168.1.1IP_SERV1=192.168.2.150IP_SERV2=192.168.2.151RED_LAN=192.168.1.0/24RED_DMZ=192.168.2.0/24# Borrado de reglas anterioresiptables -Fiptables -t nat -F PREROUTINGiptables -t nat -F POSTROUTINGiptables -t filter -F# Politica por defectoArturo Borrero González Pag. 4/6
  • 5. Firewall con iptables Febrero 2011iptables -P FORWARD ACCEPT################### Nat y redirecciones #################### Nat en la interfaz eth1 hacia internetiptables -t nat -A POSTROUTING -o eth1 -j SNAT --to 192.168.0.2# Redirección de puertos para SERV1 (desde internet) a webiptables -t nat -A PREROUTING -i $IF_INET -p tcp --dport 80 -j DNAT --to-destination 192.168.2.150:80# Redirecciones de puertos para SERV2 (desde cualquier sitio) a webiptables -t nat -A PREROUTING -i $IF_INET -p tcp --dport 1312 -j DNAT --to-destination 192.168.2.151:1312iptables -t nat -A PREROUTING -i $IF_LAN -p tcp --dport 80 -d 192.168.2.151 -j DNAT --to-destination192.168.2.151:1312# El puerto 22 recibido desde internet será redireccionado a SERV2iptables -t nat -A PREROUTING -p tcp -i $IF_INET --dport 22 -j DNAT --to-destination 192.168.2.151:22A continuación, el fichero con la configuración de iptables “fuerte”: /etc/iptables_close.conf#!/bin/bash# VariablesIF_INET=eth1IF_LAN=eth2IF_DMZ=eth0IP_ROUTER_INET=192.168.0.2IP_ROUTER_DMZ=192.168.2.1IP_ROUTER_LAN=192.168.1.1IP_SERV1=192.168.2.150IP_SERV2=192.168.2.151RED_LAN=192.168.1.0/24RED_DMZ=192.168.2.0/24# Borrado de reglas anterioresiptables -Fiptables -t nat -F PREROUTINGiptables -t nat -F POSTROUTINGiptables -t filter -F################## Nat y redirecciones ################### Ejecuto el fichero de iptables_open.conf, que tiene la configuración de NAT y redirecciones.sh /etc/iptables_open.conf########### Firewall ############ Politicas por defectoiptables -P FORWARD DROPArturo Borrero González Pag. 5/6
  • 6. Firewall con iptables Febrero 2011# Se permite el trafico TCP desde internet a la DMZ (web, ssh)iptables -t filter -A FORWARD -i $IF_INET -p tcp --dport 80 -d $IP_SERV1 -j ACCEPTiptables -t filter -A FORWARD -i $IF_INET -p tcp --dport 22 -d $IP_SERV2 -j ACCEPTiptables -t filter -A FORWARD -i $IF_INET -p tcp --dport 1312 -d $IP_SERV2 -j ACCEPT# Se permite el tráfico TCP desde la DMZ a internet (web, ssh)iptables -t filter -A FORWARD -i $IF_DMZ -p tcp --sport 80 -s $IP_SERV1 -j ACCEPTiptables -t filter -A FORWARD -i $IF_DMZ -p tcp --sport 22 -s $IP_SERV2 -j ACCEPTiptables -t filter -A FORWARD -i $IF_DMZ -p tcp --sport 1312 -s $IP_SERV2 -j ACCEPT# Podriamos especificar puertos concretos como:#80 http, 443 https, 143 imap, 220 imap3, 993 imap3, 110 pop3, 995 pop3s, 110 pop3iptables -t filter -A FORWARD -i $IF_INET -p tcp -d $RED_LAN -m state --state ESTABLISHED -j ACCEPTiptables -t filter -A FORWARD -i $IF_INET -p udp --dport 1024: -d $RED_LAN -j ACCEPT# Se permite el tráfico TCP/UDP desde LAN a internetiptables -t filter -A FORWARD -i $IF_LAN -s $RED_LAN -p tcp --sport 1024: -j ACCEPTiptables -t filter -A FORWARD -i $IF_LAN -s $RED_LAN -p udp --dport 53 -j DROPiptables -t filter -A FORWARD -i $IF_LAN -s $RED_LAN -p udp --sport 1024: -j ACCEPT# Se permite el tráfico TCP desde LAN a DMZiptables -t filter -A FORWARD -i $IF_LAN -s $RED_LAN -d $IP_SERV1 -p tcp --dport 80 -j ACCEPTiptables -t filter -A FORWARD -i $IF_LAN -s $RED_LAN -d $IP_SERV2 -p tcp --dport 1312 -j ACCEPTiptables -t filter -A FORWARD -i $IF_LAN -s $RED_LAN -d $RED_DMZ -p tcp --dport 22 -j ACCEPT# Se permite el tráfico TCP desde DMZ a LANiptables -t filter -A FORWARD -i $IF_DMZ -s $IP_SERV1 -d $RED_LAN -p tcp --sport 80 -m state --stateESTABLISHED -j ACCEPTiptables -t filter -A FORWARD -i $IF_DMZ -s $IP_SERV2 -d $RED_LAN -p tcp --sport 1312 -m state --stateESTABLISHED -j ACCEPTiptables -t filter -A FORWARD -i $IF_DMZ -s $RED_DMZ -d $RED_LAN -p tcp --sport 22 -m state --stateESTABLISHED -j ACCEPTTendremos que gestionar los permisos adecuados de lectura/escritura/ejecución para estos ficheros.Copiando el script y sustituyendo las variables puede adaptarse rápida y fácilmente a lasnecesidades de otra red u otra configuración similar.Los firewall con Iptables pueden llegar a ser muy restrictivos y muy concretos en el tráfico que sepermite/deniega. Esta es una configuración bastante rápida y permisiva, pero eficaz como punto departida para un ajuste mucho más fino.Arturo Borrero González Pag. 6/6