Páginas

miércoles, 28 de octubre de 2009

Cortafuegos conexion a Internet compartida IP WAN estatica

Construir nuestra propia caja cortafuegos en hardware x86 para nuestra conexión a Internet por cable o DSL utilizano nuestra distribución GNU-Linux favorita.

Tendremos una conexión a Internet compartida y un cortafuegos, necesitamos saber que componentes de hardware utilizar.

Aunque existen distribuciones de GNU-Linux especializadas en cortafuegos o firewall para este ensayo utilizaremos:

- Un portatil con GNU-Linux Debian Lenny con dos interfaces de red. Una alámbrica que la llamaremos tal y como la nombre mi sistema "eth0" y otra interface de nombre "wlan0" inalámbrica, la 3945ABG Intel Centrino.
- Un segundo pc de sobremesa con Ubuntu 9.04 instalado y un cable cruzado puente para pasarle la conexión a Internet.

Lo primero es desactivar el cortafuegos si lo tenemos activado. Puede ser necesario instalar los paquetes net-tools, ifrename y Nmap en ambos pc's.

Configuración de tarjetas de interfaz de red en Debian:
Configuramos la tarjeta NIC LAN con una IP estática del tipo c para nuestro esquema de red privada. No asignaremos la dirección LAN con DHCP. Configuraremos la interfaz WAN con la información proporcionado por nuestro ISP, o sea, una dirección ip local estática y una dirección PUBLICA dinámica. No nos conectamos a internet todavía.

Editamos el archivo interfaces con vim, ¿porque vi? porque respeta el formato, para que quede así:
# vim interfaces
## /etc/network/interfaces

# The loopback network interface
auto lo
iface lo inet loopback

# lan interface
auto eth0
iface eth0 inet static
address 10.0.0.10
netmask 255.255.255.0
network 10.0.0.0
broadcast 10.0.0.255

#wan interface
auto wlan0
iface wlan0 inet static
address 78.122.0.45
netmask 255.255.255.0
gateway 192.168.153.1

Guardamos y cerramos

Estos datos se los proporciona su ISP

Ahora, fijamos los nombres de las interfaces con ifrename:
Primero buscamos las direcciones MAC de nuestras interfaces con ifconfig
$ ifconfig -a
eth0 Link encap:Ethernet HWaddr 00:21:9b:e2:cd:44
......
wlan0 Link encap:Ethernet HWaddr 00:1f:dd:ff:a0:3c

En este momento introducimos nuestros nombres de interfaces y direcciones MAC en /etc/iftab. Si no existe el archivo iftab deberá crearlo.

# vim /etc/iftab
## /etc/iftab
eth0 mac 00:21:9b:e2:cd:44
wlan0 mac 00:1f:dd:ff:a0:3c

La dirección LAN la dirección de la pasarela o gateway que será instalada en todos los pc's de nuestra LAN.

En el pc de sobremesa con el que queremos compartir la conexión a Internet la configuración de la tarjeta eth0 alámbrica será ip fija gw 10.0.0.10 y los dns de su ISP:
ip 10.0.0.20
netmask 255.255.255.0
gateway 10.0.0.10
dns1 80.58.61.250
dns2 80.58.61.254

Añadiremos estos parámetros del kernel al archivo /etc/sysctl.conf necesarios para la conexión a Internet compartida.
#vim /etc/sysctl.conf
net.ipv4.ip_forward = 1
net.ipv4.icmp_echo_ignore_broadcasts = 1
net.ipv4.tcp_syncookies = 1
net.ipv4.conf.all.accept_source_route = 0

Llamaremos /usr/local/bin/firewall_nat al siguiente guion copielo y hágalo ejecutable en rw para root con chmod 0700. Es justo decir que este guion es obra de Schroder autora de Networking Linux.

#!/bin/sh
##/usr/local/bin/firewall_nat
#iptables firewall script for sharing
#broadband Internet, with no public services

#define variables
ipt="/sbin/iptables"
mod="/sbin/modprobe"
LAN_IFACE="eth0"
WAN_IFACE="wlan0"

#basic set of kernel modules
$mod ip_tables
$mod ip_conntrack
$mod iptable_filter
$mod iptable_nat
$mod iptable_mangle
$mod ipt_LOG
$mod ipt_limit
$mod ipt_state
$mod ipt_MASQUERADE

#add these for IRC and FTP
$mod ip_nat_ftp
$mod ip_nat_irc
$mod ip_conntrack_ftp
$mod ip_conntrack_irc

# Flush all active rules and delete all custom chains
$ipt -F
$ipt -t nat -F
$ipt -t mangle -F
$ipt -X
$ipt -t nat -X
$ipt -t mangle -X

#Set default policies
$ipt -P INPUT DROP
$ipt -P FORWARD DROP
$ipt -P OUTPUT ACCEPT
$ipt -t nat -P OUTPUT ACCEPT
$ipt -t nat -P PREROUTING ACCEPT

$ipt -t nat -P POSTROUTING ACCEPT
$ipt -t mangle -P PREROUTING ACCEPT
$ipt -t mangle -P POSTROUTING ACCEPT

#this line is necessary for the loopback interface
#and internal socket-based services to work correctly
$ipt -A INPUT -i lo -j ACCEPT

#Enable IP masquerading
$ipt -t nat -A POSTROUTING -o $WAN_IFACE -j MASQUERADE

#Enable unrestricted outgoing traffic, incoming
#is restricted to locally-initiated sessions only
$ipt -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
$ipt -A FORWARD -i $WAN_IFACE -o $LAN_IFACE -m state --state ESTABLISHED,RELATED -j ACCEPT
$ipt -A FORWARD -i $LAN_IFACE -o $WAN_IFACE -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT

# Accept important ICMP messages
$ipt -A INPUT -p icmp --icmp-type echo-request -j ACCEPT
$ipt -A INPUT -p icmp --icmp-type time-exceeded -j ACCEPT
$ipt -A INPUT -p icmp --icmp-type destination-unreachable -j ACCEPT

#Reject connection attempts not initiated from inside the LAN
$ipt -A INPUT -p tcp --syn -j DROP

Los nuevos parámetros sysctl debe abrirlos:
# /sbin/sysctl -p

Ejecute firewall_nat
# /usr/local/bin/firewall_nat

Conectese a la interfaz WAN utilizando su interfaz wireless:
# /sbin/ifup wlan0
# iwconfig wlan0 essid "WLAN_LIN"
# iwconfig wlan0 essid "WLAN_LIN" key 43303031443230333183303133
# dhclient wlan0

Después de ejecutar dhclient wlan0, Verá algo como:
Internet Systems Consortium DHCP Client V3.1.1
Copyright 2004-2008 Internet Systems Consortium.
All rights reserved.
For info, please visit http://www.isc.org/sw/dhcp/

wmaster0: unknown hardware address type 801
wmaster0: unknown hardware address type 801
Listening on LPF/wlan0/00:1f:dd:ff:a0:3c
Sending on LPF/wlan0/00:1f:dd:ff:a0:3c
Sending on Socket/fallback
DHCPDISCOVER on wlan0 to 255.255.255.255 port 67 interval 8
DHCPDISCOVER on wlan0 to 255.255.255.255 port 67 interval 11
DHCPOFFER from 10.185.228.9
DHCPREQUEST on wlan0 to 255.255.255.255 port 67
DHCPACK from 10.185.228.9
bound to 192.168.1.34 -- renewal in 122773 seconds.

Conectese al portátil desde el pc sobremesa utilizando un cable cruzado, interfaz eth0 y los datos mencionados anteriormente utilizando un gestor de redes o manualmente:
# eth0 pc_sobremesa
ip 10.0.0.20
netmask 255.255.255.0
gateway 10.0.0.10
dns1 80.58.61.250
dns2 80.58.61.254

Ya tiene que poder enviar ping desde y hacia las ip's 10.0.0.20 y 10.0.0.10 y navegar por Internet desde cualquiera de los dos pc's.

Linux es genial!

No hay comentarios:

Publicar un comentario