Guía de configuración de Firewalls BarbedWire Marco Antonio

Anuncio
Guía de Configuración de Firewalls BarbedWire
Elaborada para la SSA en B.C.S.
Guía de configuración de
Firewalls BarbedWire
Elaborada para la SSA en B.C.S
Marco Antonio Castro Liera
Marco Antonio Castro Liera
[email protected]
Guía de Configuración de Firewalls BarbedWire
Elaborada para la SSA en B.C.S.
Guía de Configuración de Firewalls BarbedWire con CentOS 5.0.
Para la presente gúia asumiremos que en nuestro firewall se encuentra ya instalada la versión 5.0 de la
distribución de GNU/Linux, CentOS 5.0. Y se domina la forma de conectarse mediante una consola al
equipo.
Asimismo, el usuario deberá tener conocimientos generales sobre el trabajo con archivos en linux y la
edición de archivos de texto.
Es recomendable que se tengan conocimientos sobre TCP/IP y enrutamiento para entender el
funcionamiento del firewall.
Configuración de direcciones IP:
En el directorio /etc/sysconfig/network-scripts se encuentra un archivo de configuración para
cada una de las interfaces de red llamado ifcfg-DEV donde DEV se sustituye por el nombre del archivo
de dispositivo de la interfaz de red correspondiente, para el caso de los switches BarbedWire se cuenta
con 4 interfaces de red:
1.
2.
3.
4.
eth0
eth1
eth2
eth3
Para el ejemplo actual asumiremos que el firewall se encuentra conectado a la red homologada
201.147.242.112/28, con dos interfaces, eth0 con la IP 201.147.242.114 y eth0 con la IP 201.147.242.115
los archivos de configuración quedarían como sigue:
Archivo: /etc/sysconfig/network-scripts/ifcfg-eth0
# Intel Corporation 82557/8/9 [Ethernet Pro 100]
DEVICE=eth0
BOOTPROTO=none
BROADCAST=201.147.242.127
HWADDR=00:10:F3:0E:59:CA
IPADDR=201.147.242.114
NETMASK=255.255.255.240
NETWORK=201.147.242.112
ONBOOT=yes
GATEWAY=201.147.242.113
TYPE=Ethernet
USERCTL=no
IPV6INIT=no
PEERDNS=yes
Marco Antonio Castro Liera
[email protected]
Guía de Configuración de Firewalls BarbedWire
Elaborada para la SSA en B.C.S.
Archivo: /etc/sysconfig/network-scripts/ifcfg-eth3
# Intel Corporation 82541GI Gigabit Ethernet Controller
DEVICE=eth3
BOOTPROTO=none
HWADDR=00:10:F3:0E:59:C9
ONBOOT=yes
DHCP_HOSTNAME=hermes.com
TYPE=Ethernet
IPADDR=201.147.242.115
NETMASK=255.255.255.240
GATEWAY=201.147.242.113
USERCTL=no
IPV6INIT=no
PEERDNS=yes
Donde la línea DEVICE marca el nombre del archivo de dispositivo asociado a la interfaz de red,
BOOTPROTO el protocolo de configuración de la interfaz (none para IPs estáticas o dhcp para usar ese
protocolo), HWADDR contiene la dirección MAC de la interfaz, ONBOOT permite especificar si se activará
automáticamente la interfaz al arrancar el equipo, IPADDR permite especificar la dirección IP, NETMASK
la máscara de red, GATEWAY la dirección del router (puerta de enlace) en la red actual. El resto de las
líneas del archivo son opcionales.
La interfaz eth1 se encuentra conectada a la red local 10.3.1.0/20 por lo que el archivo de configuración
quedaría como sigue:
Archivo: /etc/sysconfig/network-scripts/ifcfg-eth1
# Intel Corporation 82557/8/9 [Ethernet Pro 100]
DEVICE=eth1
BOOTPROTO=none
HWADDR=00:10:F3:0E:59:CB
ONBOOT=yes
DHCP_HOSTNAME=hermes.com
TYPE=Ethernet
IPADDR=10.3.1.10
NETMASK=255.255.240.0
USERCTL=no
IPV6INIT=no
PEERDNS=yes
Ahora bien, la interfaz eth2 se encuentra deshabilitada por lo que el archivo de configuración sería:
Archivo: /etc/sysconfig/network-scripts/ifcfg-eth2
# Intel Corporation 82541GI Gigabit Ethernet Controller
DEVICE=eth2
BOOTPROTO=dhcp
HWADDR=00:10:F3:0E:59:C8
ONBOOT=no
DHCP_HOSTNAME=hermes.com
TYPE=Ethernet
Marco Antonio Castro Liera
[email protected]
Guía de Configuración de Firewalls BarbedWire
Elaborada para la SSA en B.C.S.
Habilitación de las consolas:
Para habilitar las consolas del dispositivo, deben de incluirse las líneas marcadas en negritas en el archivo
/etc/inittab:
Archivo: /etc/inittab
# Run gettys in standard runlevels
1:2345:respawn:/sbin/mingetty tty1
2:2345:respawn:/sbin/mingetty tty2
3:2345:respawn:/sbin/mingetty tty3
4:2345:respawn:/sbin/mingetty tty4
5:2345:respawn:/sbin/mingetty tty5
6:2345:respawn:/sbin/mingetty tty6
T0:2345:respawn:/sbin/agetty ttyS0 9600 vt100
T1:2345:respawn:/sbin/agetty ttyS1 9600 vt100
Si el router cuenta con dos salidas seriales para consola (modelo DPI 250E), se deben incluir ambas
líneas, en caso contratio (modelo DPI 100e) solo debe incluirse la primera línea
(T0:2345:respawn:/sbin/agetty ttyS0 9600 vt100).
Habilitación del reenvio de paquetes:
Para que el dispositivo enrute paquetes entre las iterfases activas, debemos prender el bit de
configuración de reenvio de paquetes en los archivos de configuración del kernel cada vez que arranque
el equipo, por lo que debe agregarse la línea marcada con negritas en el archivo /etc/rc.local
Archivo: /etc/rc.local
#!/bin/sh
#
# This script will be executed *after* all the other init scripts.
# You can put your own initialization stuff in here if you don't
# want to do the full Sys V style init stuff.
touch /var/lock/subsys/local
/bin/echo 1 > /proc/sys/net/ipv4/ip_forward
Configuración de IPTABLES:
La configuración de ipatbles puede hacerse mediante el comando iptables desde una terminal común o
mediante webmin. Cuando tengamos el firewall funcionando a nuestro gusto, se ejecuta el comando
service iptables save para guardar la configuración en los archivos de configuración de arranque de
iptables /etc/sysconfig/iptables.
Marco Antonio Castro Liera
[email protected]
Guía de Configuración de Firewalls BarbedWire
Elaborada para la SSA en B.C.S.
Archivo: /etc/sysconfig/iptables (como se provee el firewall)
# Generated by iptables-save v1.3.5 on Wed Jul 11 13:12:36 2007
*mangle
:PREROUTING ACCEPT [3139:269048]
:INPUT ACCEPT [3038:259852]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [2916:339551]
:POSTROUTING ACCEPT [2916:339551]
COMMIT
# Completed on Wed Jul 11 13:12:36 2007
# Generated by iptables-save v1.3.5 on Wed Jul 11 13:12:36 2007
*nat
:PREROUTING ACCEPT [103:9284]
:POSTROUTING ACCEPT [36:2445]
:OUTPUT ACCEPT [36:2445]
-A PREROUTING -i eth0 -p tcp -m tcp --dport 3389 -j DNAT --to-destination 10.3.1.10
-A PREROUTING -i eth0 -p udp -m udp --dport 3389 -j DNAT --to-destination 10.3.1.10
-A PREROUTING -i eth0 -p tcp -m tcp --dport 1433 -j DNAT --to-destination 10.3.1.10
-A PREROUTING -i eth0 -p udp -m udp --dport 1433 -j DNAT --to-destination 10.3.1.10
-A POSTROUTING -o eth3 -j SNAT --to-source 201.147.242.115
COMMIT
# Completed on Wed Jul 11 13:12:36 2007
# Generated by iptables-save v1.3.5 on Wed Jul 11 13:12:36 2007
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [2916:339551]
:RH-Firewall-1-INPUT - [0:0]
-A INPUT -j RH-Firewall-1-INPUT
-A FORWARD -j RH-Firewall-1-INPUT
-A RH-Firewall-1-INPUT -i lo -j ACCEPT
-A RH-Firewall-1-INPUT -p icmp -m icmp --icmp-type any -j ACCEPT
-A RH-Firewall-1-INPUT -p esp -j ACCEPT
-A RH-Firewall-1-INPUT -p ah -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
-A RH-Firewall-1-INPUT -p tcp -m state --state NEW -m tcp --dport 25 -j ACCEPT
-A RH-Firewall-1-INPUT -p tcp -m state --state NEW -m tcp --dport 22 -j ACCEPT
-A RH-Firewall-1-INPUT -p tcp -m state --state NEW -m tcp --dport 80 -j ACCEPT
-A RH-Firewall-1-INPUT -p tcp -m state --state NEW -m tcp --dport 110 -j ACCEPT
-A RH-Firewall-1-INPUT -p tcp -m state --state NEW -m tcp --dport 443 -j ACCEPT
-A RH-Firewall-1-INPUT -p tcp -m state --state NEW -m tcp --dport 53 -j ACCEPT
-A RH-Firewall-1-INPUT -p udp -m state --state NEW -m udp --dport 53 -j ACCEPT
-A RH-Firewall-1-INPUT -p tcp -m state --state NEW -m tcp --dport 10000 -j ACCEPT
-A RH-Firewall-1-INPUT -j REJECT --reject-with icmp-host-prohibited
COMMIT
# Completed on Wed Jul 11 13:12:36 2007
Tabla Mangle
En nuestro caso la tabla Mangle se encuentra vacía debido a que no hacemos transformaciones a los
paquetes reenviados.
Marco Antonio Castro Liera
[email protected]
Guía de Configuración de Firewalls BarbedWire
Elaborada para la SSA en B.C.S.
Tabla Filter
La tabla Filter incluye todas las reglas de filtrado de paquete y actualmente prohibe todos los paquetes
entrantes al firewall, a excepción de aquellos que se encuentren dirigidos a los puertos
●
●
●
●
●
●
●
25 (SMTP)
22 (SSH2
53 (DNS)
80 (HTTP)
110 (POP3)
443 (HTTPS)
10000 (WebMin)
-A
-A
-A
-A
-A
-A
-A
-A
-A
RH-Firewall-1-INPUT
RH-Firewall-1-INPUT
RH-Firewall-1-INPUT
RH-Firewall-1-INPUT
RH-Firewall-1-INPUT
RH-Firewall-1-INPUT
RH-Firewall-1-INPUT
RH-Firewall-1-INPUT
RH-Firewall-1-INPUT
-p
-p
-p
-p
-p
-p
-p
-p
-j
tcp -m
tcp -m
tcp -m
tcp -m
tcp -m
tcp -m
udp -m
tcp -m
REJECT
state --state
state --state
state --state
state --state
state --state
state --state
state --state
state --state
--reject-with
NEW -m tcp --dport 25 -j ACCEPT
NEW -m tcp --dport 22 -j ACCEPT
NEW -m tcp --dport 80 -j ACCEPT
NEW -m tcp --dport 110 -j ACCEPT
NEW -m tcp --dport 443 -j ACCEPT
NEW -m tcp --dport 53 -j ACCEPT
NEW -m udp --dport 53 -j ACCEPT
NEW -m tcp --dport 10000 -j ACCEPT
icmp-host-prohibited
y los dirigidos hacia el protocolo ICMP (esta línea puede eliminarse si no se necesita hacer ping al
firewall y se desean evitar ataques de DDOS (Como Smurfing).
-A RH-Firewall-1-INPUT -p icmp -m icmp --icmp-type any -j ACCEPT
La Tabla NAT
La tabla NAT permite la configuración de la traducción de direcciones de red, tanto para compartir una
salida a internet con una sola ip homologada, como para la redirección de paquetes entrantes hacia un
servidor de nuestra red local.
Esta tabla se configuró de tal forma que se reenvien las peticiones hechas a sqlserver hacia la IP
201.147.242.115 en los puertos de sqlserver sean redireccionadas hacia 10.3.1.10
-A
-A
-A
-A
PREROUTING
PREROUTING
PREROUTING
PREROUTING
-i
-i
-i
-i
eth3
eth3
eth3
eth3
-p
-p
-p
-p
tcp
udp
tcp
udp
-m
-m
-m
-m
tcp
udp
tcp
udp
--dport
--dport
--dport
--dport
3389
3389
1433
1433
-j
-j
-j
-j
DNAT
DNAT
DNAT
DNAT
--to-destination
--to-destination
--to-destination
--to-destination
10.3.1.10
10.3.1.10
10.3.1.10
10.3.1.10
Asimismo las computadoras en la red local podrán acceder a internet mediante esa ip homologada
-A POSTROUTING -o eth3 -j SNAT --to-source 201.147.242.115
Marco Antonio Castro Liera
[email protected]
Guía de Configuración de Firewalls BarbedWire
Elaborada para la SSA en B.C.S.
Agregando filtros a iptables
Si queremos filtar paquetes de la red local hacia internet tenemos varias opciones, por ejemplo, para
filtrar los paquetes dirigidos a la ip 172.16.10.1 podemos ejecutar el comando:
iptables -I FORWARD -d 172.16.10.1 -j DROP
para filtrar los paquetes provenientes de la ip 172.16.10.1 podemos ejecutar el comando:
iptables -I FORWARD -s 172.16.10.1 -j DROP
Para filtrar los paquetes dirigidos a puertos específicos podemos hacerlo mediante comandos que utilicen
las directivas –dport (puerto destino del socket) y -sport (puerto fuente del socket), por ejemplo, para
filtrar el rango de puertos que utilza emule ejecutaríamos los comandos:
iptables
iptables
-I FORWARD -p tcp --dport 4660:4670 -j DROP
-I FORWARD -p tcp --sport 4660:4670 -j DROP
a continuación se incluye un ejemplo que deshabilita varios programas de comparición peer to peer:
#cutoff emule/torrent
iptables -I FORWARD -p tcp -m multiport --dports
6881,6882,6883,6884,6885,6886,6887,6888,6889,1214 -j REJECT
iptables -I FORWARD -p udp -m multiport --dports
6881,6882,6883,6884,6885,6886,6887,6888,6889,1214 -j REJECT
iptables -I FORWARD -p tcp -m multiport --dports 6346,6347 -j REJECT
iptables -I FORWARD -p udp -m multiport --dports 6346,6347 -j REJECT
iptables -I FORWARD -p tcp -m multiport --dports
4711,4665,4661,4672,4662,8080,9955 -j REJECT
iptables -I FORWARD -p udp -m multiport --dports
4711,4665,4661,4672,4662,8080,9955 -j REJECT
iptables -I FORWARD -p tcp --dport 4242:4299 -j REJECT
iptables -I FORWARD -p udp --dport 4242:4299 -j REJECT
iptables -I FORWARD -p tcp --dport 6881:6999 -j REJECT
iptables -I FORWARD -p udp --dport 6881:6999 -j REJECT
Las líneas que incluyen listas de puertos aparecen en dos partes por cuestiones de espacio, recuerde
siempre que para guardar las reglas en el archivo de arranque puede hacerlo mediante el comando
service iptables save
Marco Antonio Castro Liera
[email protected]
Guía de Configuración de Firewalls BarbedWire
Elaborada para la SSA en B.C.S.
Le recomendamos hacer una copia del archivo de configuración /etc/sysconfig/iptables antes de
efectuar cualquiera de estas operaciones, de tal forma que pueda recuperarlo en casos de corrupción del
mismo.
Si desea una referencia completa sobre el funcionamiento de iptables, le recomendamos consultar la guía
hecha por Xabier Altadill Izura que puede descargarse desde
http://www.pello.info/filez/firewall/IPTABLES.pdf
Marco Antonio Castro Liera
[email protected]
Descargar