Te paso una cuasi guía de configuración con política DROP por defecto

El 13 de marzo de 2013 15:43, Gino Alania <[email protected]> escribió:
>
> http://pello.info/blog/manuales/
>
>
> El 13 de marzo de 2013 12:22, luis cardenas <[email protected]> 
> escribió:
>>
>> Buenas Tardes estimados:
>>
>>
>> La siguiente es que me intereso instalar un firewall en centos usando ip 
>> tables, alguno tendria alguna guia rapida para configurar iptables.
>>
>>
>> Quiero denegar todo y aceptar uno por uno mis necesidades.
>> Otra cosa es q deseo saber si influye algo en el nateo si pongo mi firewall 
>> en dos redes.
>>
>> la 192.168.5.x red del router de telefonica
>> la red 192.168.1.x mi red local, influye esto algo en el nateo cuando se aga 
>> consultas a mi ip publica y apunte  mis servidored?  1.x saludos
>>
>> _______________________________________________
>> Lista de correo Linux-plug
>> Temática: Discusión general sobre Linux
>> Peruvian Linux User Group (http://www.linux.org.pe)
>>
>> Participa suscribiéndote y escribiendo a:  [email protected]
>> Para darte de alta, de baja  o hacer ajustes a tu suscripción visita:
>> http://voip2.voip.net.pe/mailman/listinfo/linux-plug
>>
>> IMPORTANTE: Reglas y recomendaciones
>> http://www.linux.org.pe/listas/reglas.php
>> http://www.linux.org.pe/listas/comportamiento.php
>> http://www.linux.org.pe/listas/recomendaciones.php
>>
>> Alojamiento de listas cortesia de http://cipher.pe
>
>
>
>
> --
> Gino Francisco Alania Hurtado
> NUCLEO Labs
>
> _______________________________________________
> Lista de correo Linux-plug
> Temática: Discusión general sobre Linux
> Peruvian Linux User Group (http://www.linux.org.pe)
>
> Participa suscribiéndote y escribiendo a:  [email protected]
> Para darte de alta, de baja  o hacer ajustes a tu suscripción visita:
> http://voip2.voip.net.pe/mailman/listinfo/linux-plug
>
> IMPORTANTE: Reglas y recomendaciones
> http://www.linux.org.pe/listas/reglas.php
> http://www.linux.org.pe/listas/comportamiento.php
> http://www.linux.org.pe/listas/recomendaciones.php
>
> Alojamiento de listas cortesia de http://cipher.pe




--
Clever Flores
Perú Linux SAC
Tel:       640-5800  Anexo 104
Blog:     http://www.perulinux.pe/blog/clever
Firewall Perimetral
---------------------------------------------------------------------------------------------------------

- El firewall de host (FIREWALL BASTION HOST) solo protege a la maquina local o 
servidor
y el firewall de red (FIREWALL PERIMETRAL) protege a la maquina local y redes 
que pudieran estar detras de ella


 DMZ 
(zona desmilitarizada)

correo   correo
firewall firewall
25       80        router firewall perimetral
993     443
tcp     tcp 

Esquema de un firewall Perimetral
------------------------------------------------------------------------

    DMZ 
______________                   
 ___     ___  |                 _____                             (    )
|  |    |  |  |                |     |                          (        )
|__|    |__|  |=====|ids|====> |     |=====|router adsl|=======>(  wlan  )
----    ----  |  deteccion     |     |                          (        )
_____________ |  de intrusos   |_____|                            (    )
                              -------        
servicios publicos             | Firewall perimetral
visibles en internet           |
                               |
                               |
                               Y                   LAN
            ____________________________________
           |  _____     _____                   |
           | |     |   |     |                  |
           | |     |   |     |                  |
           | |Fw   |   |Fw   |                  |
           | |_____|   |_____|                  |
           |  proxy     fileserver              |
           |____________________________________|

                   servidor de red

solo se debe permitir acceso 
FIREWALL A NIVEL DE KERNEL; selinux controla procesos y acceso de archivos y 
directorios) internos
proxy

=====================================
CONFIGURACION DE FIREWALL BASTION HOST

tareas principales de un firewall

1. filtrado de paquetes--------------------->firewall bastion
- INPUT paquete que entra al host
- OUTPUT paquete que salen del host


1. filtrado de paquetes |
2. nat                  |=================> firewall perimetral
- INPUT paquete que entra al host
- OUTPUT paquete que salen del host
- FORWARD paquetes que pasa por el host


000000000000000000000000000000000000000000000000000000000000000000000000000000000000

IPTABLES

OPTIONS:
-P      policy (politica por defecto) DROP, ACCEPT
-i      input interface
-o      output interface
-p      protocol (tcp,udp,icmp
-s      source address (IP o red de origen)
-d      destination address (IP o red de destino)
-t      table (tabla: filter, nat)
-A      chain (cadena
                filter: INPUT, OUTPUT, FORDWARD
                nat: PREROUTING, POSTROUTING
--sport source port (puerto de origen)
--dport destination port (puerto de destino)
-m      module (modulo adiccional cargado)
                ejemplo
                -m multiport me da opciones
                --sports (multiples puertos de origen)
-j      jump (indica que hacer con el paquete) (DROP, ACCEPT, REJECT, 
DNAT,SNAT,LOG)

----------------------------------------------------
-L      lista las reglas definidas
-n      no resuelve nombres de host

===============================

$>iptables -L -n ----------------------> muestra las reglas de la tabla de 
filtrado
$>iptables -L -n -t nat          -t nat ---------------> muestra las reglas del 
tabla NAT

$>service iptable stop

LUEGO DEBEMOS CONTROLAR LAS POLITICAS POR DEFECTO
(forma mas segura)
$>iptables -P INPUT DROP        |       
$>iptables -P OUTPUT DROP       |       deniega todo
$>iptables -P FORWARD DROP      |

DAR ACCESO A LOS SERVICIOS QUE SE EJECUTAN EN EL SERVIDOR
$>iptables -A INPUT -i lo -j ACCEPT     |
$>iptables -A OUTPUT -o lo -j ACCEPT    |       dando permiso total de entrada 
y salida al lookback

DANDO ACCESO AL SERVIDOR SSH
$>iptables -A INPUT -p tcp --dport 22 -m state --state NEW,ESTABLISHED,RELATED 
-j ACCEPT
$>iptables -A OUTPUT -p tcp --sport 22-m state --state ESTABLISHED,RELATED -j 
ACCEPT

DANDO ACCESO A NUESTRA MAQUINA COMO CLIENTE
permitir conectarnos a cualquier servidor SSH, http,ftp,https
$>iptables -A OUTPUT -p tcp -m multiport --dports 20,21,22,80,443 -m state 
--state NEW,ESTABLISHED,RELATED -j ACCEPT
$>iptables -A INPUT -p tcp -m multiport --sports 20,21,22,80,443 -m state 
--state ESTABLISHED,RELATED -j ACCEPT

permitir conectarnos a un servidor DNS
$>iptables -A OUTPUT -p udp --dport 53 -m state --state NEW,ESTABLISHED,RELATED 
-j ACCEPT
$>iptables -A INPUT -p udp --sport 53 -m state --state NEW,ESTABLISHED,RELATED 
-j ACCEPT



Creando un firewall Bastion Host
-----------------------------------------------------------------------------------------------------------

$> vim firewall-bastion
#!/bin/bash
# Firewall Bastion hecho por mi jejejej
# 2011

echo "limpiando todas las reglas"
service iptables stop

echo "Estableciendo la politica por defecto a DROP"
iptables -P INPUT  DROP
iptables -P OUTPUT DROP
iptables -P FORWARD DROP

echo "configurando INPUT y OUTPUT"
echo "dando acceso total al loopback"
# todo lo que entra y sale desde el loopback se acepta
iptables -A INPUT -i lo -j ACCEPT
iptables -A OUTPUT -o lo -j ACCEPT

################ Nuestro host como SERVIDOR  
######################################################3
echo "permitiendo acceso al servidor SSH (protocolo tcp, puerto 22) desde 
cualquier origen "
iptables -A INPUT -p tcp --dport 22 -m state --state NEW,ESTABLISHED,RELATED -j 
ACCEPT
iptables -A OUTPUT -p tcp --sport 22 -m state --state ESTABLISHED,RELATED -j 
ACCEPT

# ejemplo permitir SSH solo a la LAN
# iptables -A INPUT -i eth0 -p tcp -s 192.168.120.0/24 --dport 22 -m state 
--state NEW,ESTABLISHED,RELATED -j ACCEPT
# iptables -A OUTPUT -o eth0 -p tcp -d 192.168.120.0/24 --sport 22 --m state 
--state ESTABLISHED,RELATED -j ACCEPT


############### Nuestro host como cliente   
#############################################################
echo "habilitando navegacion a internet desde nuestro host hacia los puertos 
SSH,FTP,HTTP y HTTPS"
iptables -A OUTPUT -p tcp -m multiport --dports 20,21,22,80,443 -m state 
--state NEW,ESTABLISHED,RELATED -j ACCEPT 
iptables -A INPUT -p tcp -m multiport --sports 20,21,22,80,443 -m state --state 
ESTABLISHED,RELATED -j ACCEPT 

echo "habilitando las consultas DNS desde nuestro host"
iptables -A OUTPUT -p udp --dport 53 -m state --state NEW,ESTABLISHED,RELATED 
-j ACCEPT 
iptables -A INPUT -p udp --sport 53 -m state --state ESTABLISHED,RELATED -j 
ACCEPT 


###############  Reglas de Ping 
#########################################################################
echo "permitiendo el ping desde la LAN a nuestro host"
iptables -A INPUT  -p icmp --icmp-type echo-request -s 192.168.120.0/24  -m 
state --state NEW,ESTABLISHED,RELATED -j ACCEPT
iptables -A OUTPUT -p icmp --icmp-type echo-reply -d 192.168.120.0/24  -m state 
--state ESTABLISHED,RELATED -j ACCEPT

echo "haciendo ping desde nuestro host a la cualquier destino"
iptables -A OUTPUT -p icmp --icmp-type echo-request -m state --state 
NEW,ESTABLISHED,RELATED  -j ACCEPT
iptables -A INPUT  -p icmp --icmp-type echo-reply -m state --state 
ESTABLISHED,RELATED -j ACCEPT

$> chmod 755 firewall-bastion
$> ./firewall-bastion

Guardar las reglas del firewall de forma permanente
$> service iptables save
$> chkconfig iptables on


Creando un firewall Perimetral (Con DMZ y VPN)
---------------------------------------------------------------------------------------------------------------------
Habilitando el forwarding (editar el archivo de parámetros del kernel)
$> vim /etc/sysctl.conf     (modificar el valor del ipv4 forward)
net.ipv4.ip_forward = 1

Recargar las opciones del sysctl
$> sysctl -p 

Verificar el valor modificado
$> sysctl -a | grep ipv4.ip_forward

$> vim /root/firewall-perimetral
#!/bin/bash
# Firewall hecho por mi jejejej
# 2011

echo "limpiando todas las reglas"
service iptables stop

echo "Estableciendo la politica por defecto a DROP"
iptables -P INPUT  DROP
iptables -P OUTPUT DROP
iptables -P FORWARD DROP

echo "configurando INPUT y OUTPUT"
echo "dando acceso total al loopback"
# todo lo que entra y sale desde el loopback se acepta
iptables -A INPUT -i lo -j ACCEPT
iptables -A OUTPUT -o lo -j ACCEPT

echo "permitiendo acceso al servidor SSH (protocolo tcp, puerto 22) desde 
cualquier origen "
iptables -A INPUT -p tcp --dport 22 -j ACCEPT
iptables -A OUTPUT -p tcp --sport 22 -j ACCEPT

# ejemplito permitir SSH solo a la LAN
# iptables -A INPUT -i eth1 -p tcp -s 192.168.200.0/24 --dport 22 -j ACCEPT
# iptables -A OUTPUT -o eth1 -p tcp -d 192.168.200.0/24 --sport 22 -j ACCEPT

echo "permitiendo acceso a los puertos del VPN"
iptables -A INPUT -i eth0 -p udp -m multiport --dports 1194,1195 -j ACCEPT
iptables -A OUTPUT -o eth0 -p udp -m multiport --sports 1194,1195 -j ACCEPT

echo "haciendo ping desde el firewall a la LAN"
iptables -A OUTPUT -p icmp --icmp-type echo-request -d 192.168.200.0/24 -j 
ACCEPT
iptables -A INPUT  -p icmp --icmp-type echo-reply -s 192.168.200.0/24 -j ACCEPT

echo "haciendo ping desde la LAN al firewall"
iptables -A INPUT  -p icmp --icmp-type echo-request -s 192.168.200.0/24 -j 
ACCEPT
iptables -A OUTPUT -p icmp --icmp-type echo-reply -d 192.168.200.0/24 -j ACCEPT

echo "haciendo ping desde el firewall a la DMZ"
iptables -A OUTPUT -p icmp --icmp-type echo-request -d 192.168.3.0/24 -j ACCEPT
iptables -A INPUT  -p icmp --icmp-type echo-reply -s 192.168.3.0/24 -j ACCEPT

echo "haciendo ping desde la DMZ al firewall"
iptables -A INPUT  -p icmp --icmp-type echo-request -s 192.168.3.0/24 -j ACCEPT
iptables -A OUTPUT -p icmp --icmp-type echo-reply -d 192.168.3.0/24 -j ACCEPT

echo "habilitando navegacion a internet del propio firewall puertos 
SSH,FTP,HTTP y HTTPS (opcional)"
iptables -A OUTPUT -p tcp -m multiport --dports 20,21,22,80,443 -m state 
--state NEW,ESTABLISHED,RELATED -j ACCEPT 
iptables -A INPUT -p tcp -m multiport --sports 20,21,22,80,443 -m state --state 
ESTABLISHED,RELATED -j ACCEPT 

echo "habilitando las consultas DNS"
iptables -A OUTPUT -p udp --dport 53 -m state --state NEW,ESTABLISHED,RELATED 
-j ACCEPT 
iptables -A INPUT -p udp --sport 53 -m state --state ESTABLISHED,RELATED -j 
ACCEPT 

echo "haciendo ping desde el firewall a la INTERNET (Opcional)"
iptables -A OUTPUT -p icmp --icmp-type echo-request -m state --state 
NEW,ESTABLISHED,RELATED  -j ACCEPT
iptables -A INPUT  -p icmp --icmp-type echo-reply -m state --state 
ESTABLISHED,RELATED -j ACCEPT

echo "controlando el forward"
echo "trafico de WAN2DMZ"

echo "NAT de Destino al servidor web en DMZ con la IP Publica 200.31.102.132, 
protocolos HTTP y HTTPS"
iptables -t nat -A PREROUTING -i eth0 -p tcp -d 200.31.102.132 --dport 80 -j 
DNAT --to 192.168.3.2:80
iptables -t nat -A PREROUTING -i eth0 -p tcp -d 200.31.102.132 --dport 443 -j 
DNAT --to 192.168.3.2:443
echo "dando acceso al forward (paso de paquetes desde WAN al servidor web)"
iptables -A FORWARD -i eth0 -o eth2 -p tcp -d 192.168.3.2 -m multiport --dports 
80,443 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT 
iptables -A FORWARD -i eth2 -o eth0 -p tcp -s 192.168.3.2 -m multiport --sports 
80,443 -m state --state ESTABLISHED,RELATED -j ACCEPT 

echo "NAT de Destino al servidor de correo en DMZ con la IP Publica 
200.31.102.132, protocolos SMTP, Recepcion de Correo"
iptables -t nat -A PREROUTING -i eth0 -p tcp -d 200.31.102.132 --dport 80 -j 
DNAT --to 192.168.3.3:25
iptables -A FORWARD -i eth0 -o eth2 -p tcp -d 192.168.3.3 --dport 25 -m state 
--state NEW,ESTABLISHED,RELATED -j ACCEPT 
iptables -A FORWARD -i eth2 -o eth0 -p tcp -s 192.168.3.3 --sport 25 -m state 
--state ESTABLISHED,RELATED -j ACCEPT 

echo "NAT de Origen al servidor de correo en DMZ con la IP Publica 
200.31.102.132, protocolos SMTP, Envio de Correo"
iptables -t nat -A POSTROUTING -o eth0 -s 192.168.3.3 -j SNAT --to 
200.31.102.132
iptables -A FORWARD -i eth2 -o eth0 -p tcp -s 192.168.3.3 --sport 25 -m state 
--state NEW,ESTABLISHED,RELATED -j ACCEPT 
iptables -A FORWARD -i eth0 -o eth2 -p tcp -d 192.168.3.3 --dport 25 -m state 
--state ESTABLISHED,RELATED -j ACCEPT 


echo "trafico de DMZ2WAN (Opcional)"
echo "Haciendo que la DMZ salga a internet con la IP Publica 200.31.102.132"
iptables -t nat -A POSTROUTING -o eth0 -s 192.168.3.0/24 -j SNAT --to 
200.31.102.132
iptables -A FORWARD -i eth2 -o eth0 -p tcp -s 192.168.3.0/24 -m multiport 
--dports 20,21,22,80,443 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT 
iptables -A FORWARD -i eth0 -o eth2 -p tcp -d 192.168.3.0/24 -m multiport 
--sports 20,21,22,80,443 -m state --state ESTABLISHED,RELATED -j ACCEPT 
echo "acceso a las consultas DNS"
iptables -A FORWARD -i eth2 -o eth0 -p udp -s 192.168.3.0/24 --dport 53 -m 
state --state NEW,ESTABLISHED,RELATED -j ACCEPT 
iptables -A FORWARD -i eth0 -o eth2 -p udp -d 192.168.3.0/24 --sport 53 -m 
state --state ESTABLISHED,RELATED -j ACCEPT 

echo "trafico de LAN2DMZ (trafico seguro) accediendo al servidor web desde la 
LAN"
iptables -A FORWARD -i eth1 -o eth2 -p tcp -s 192.168.200.0/24 -d 192.168.3.2 
-m multiport --dports 80,443,3306 -m state --state NEW,ESTABLISHED,RELATED -j 
ACCEPT 
iptables -A FORWARD -i eth2 -o eth1 -p tcp -s 192.168.3.2 -d 192.168.200.0/24 
-m multiport --sports 80,443,3306 -m state --state ESTABLISHED,RELATED -j 
ACCEPT 

echo "trafico de LAN2WAN (control de lusers) acceso desde la LAN hacia la 
internet"
echo "Haciendo que la LAN salga a internet con la IP Publica 200.31.102.133"
iptables -t nat -A POSTROUTING -o eth0 -s 192.168.200.0/24 -j SNAT --to 
200.31.102.133
echo "dando salida libre al servidor proxy"
iptables -A FORWARD -i eth1 -o eth0 -p tcp -s 192.168.200.2 -m multiport 
--dports 20,21,80,443,8080 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT 
iptables -A FORWARD -i eth0 -o eth1 -p tcp -d 192.168.200.2  -m multiport 
--sports 20,21,80,443,8080 -m state --state ESTABLISHED,RELATED -j ACCEPT 
echo "el servidor proxy es tambien servidor DNS"
iptables -A FORWARD -i eth1 -o eth0 -p udp -s 192.168.200.2 --dport 53 -m state 
--state NEW,ESTABLISHED,RELATED -j ACCEPT 
iptables -A FORWARD -i eth0 -o eth1 -p udp -d 192.168.200.2 --sport 53 -m state 
--state ESTABLISHED,RELATED -j ACCEPT 

iptables -A FORWARD -i eth1 -o eth0 -p tcp -s 192.168.200.167 -m multiport 
--dports 80,443,1863 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT 
iptables -A FORWARD -i eth0 -o eth1 -p tcp -d 192.168.200.167  -m multiport 
--sports 80,443,1863 -m state --state ESTABLISHED,RELATED -j ACCEPT 

echo "temporalmente le doy salida libre a LAN hasta que configure un proxy"
iptables -A FORWARD -s 192.168.200.0/24  -m state --state 
NEW,ESTABLISHED,RELATED -j ACCEPT                                       
iptables -A FORWARD -d 192.168.200.0/24  -m state --state ESTABLISHED,RELATED 
-j ACCEPT      

#echo "dando salida libre a un PC, podra navegar sin proxy"
#iptables -A FORWARD -i eth1 -o eth0 -p tcp -s 192.168.200.165 -m multiport 
--dports 20,21,80,443,8080 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT 
#iptables -A FORWARD -i eth0 -o eth1 -p tcp -d 192.168.200.165 -m multiport 
--sports 20,21,80,443,8080 -m state --state ESTABLISHED,RELATED -j ACCEPT 

echo "Permitiendo el trafico de VPN"
echo "Dando  Acceso  hacia el  servidor de MySql a la Red Remota"
iptables -A FORWARD -p tcp -s 192.168.7.0/24  -d 192.168.200.164  -m multiport 
--dports 3306,80 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
iptables -A FORWARD -p tcp -s 192.168.200.164 -d 192.168.7.0/24 -m multiport 
--dports 3306,80 -m state --state ESTABLISHED,RELATED -j ACCEPT 

echo "Dando acceso al punto movil al servidor MySQL"
iptables -A FORWARD -i tun1  -p tcp -d 192.168.200.164  -m multiport --dports 
3306,80 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
iptables -A FORWARD -o tun1 -p tcp -s 192.168.200.164 -m multiport --dports 
3306,80 -m state --state ESTABLISHED,RELATED -j ACCEPT 


$> chmod 755 firewall-perimetral
$> ./firewall-perimetral

Guardar las reglas del firewall de forma permanente
$> service iptables save
$> chkconfig iptables on
_______________________________________________
Lista de correo Linux-plug
Temática: Discusión general sobre Linux
Peruvian Linux User Group (http://www.linux.org.pe)

Participa suscribiéndote y escribiendo a:  [email protected]
Para darte de alta, de baja  o hacer ajustes a tu suscripción visita:
http://voip2.voip.net.pe/mailman/listinfo/linux-plug

IMPORTANTE: Reglas y recomendaciones
http://www.linux.org.pe/listas/reglas.php
http://www.linux.org.pe/listas/comportamiento.php
http://www.linux.org.pe/listas/recomendaciones.php

Alojamiento de listas cortesia de http://cipher.pe

Responder a