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