PDA

Ver la versión completa : duda de como montar firewall iptables para servidor



ancabi
31-03-2009, 21:25
tengo un problema, llevo todo el dia peleando con iptables para poder hacer lo siguiente:

tengo un servidor con un windows 2003 el cual va al firewall linux a la interfaz eth0, este bloquea todo excepto el puerto para el ssh y mediante la interfaz eth1 va a internet para que un ordenador externo entre por ssh al servidor windows 2003

las ips son: 192.168.2.1 (router)
192.168.2.2 (eth1 del firewall)
192.168.1.1 (eht0 del firewall la cual va a la LAN)
192.168.1.2 (server 2003)

lo que crei mas facil era poner como politica general DROP y unicamente abrir el puerto 22 para el ssh pero esto se me complico y no me dejo

entonces hice algo parecido que fue poner que acepte todo, bloquear los puertos que no usa y hacer un FORWARD al 22 pero esto no me funciona

yo creo que no es mas del iptables sino que dentro del linux hay que hacer algun redireccionamiento o algo asi

dejo mi script por si sirve de algo



#!/bin/sh
echo -n Aplicando Reglas de Firewall...
## FLUSH de reglas
iptables -F
iptables -X
iptables -Z
iptables -t nat -F
## Establecemos politica por defecto
iptables -P INPUT ACCEPT
iptables -P OUTPUT ACCEPT
iptables -P FORWARD ACCEPT
iptables -t nat -P PREROUTING ACCEPT
iptables -t nat -P POSTROUTING ACCEPT
## Empezamos a filtrar
## Nota: eth1 es el interfaz conectado al router y eth0 a la LAN
# El localhost se deja
/sbin/iptables -A INPUT -i lo -j ACCEPT
# Al firewall tenemos acceso desde la red local
iptables -A INPUT -s 192.168.1.0/24 -i eth0 -j ACCEPT
iptables -A FORWARD -s 192.168.1.0/24 -i eth0 -p tcp --dport 22 -j ACCEPT
iptables -A FORWARD -s 0.0.0.0/0 -d 192.168.1.0/24 -i eth1 -p tcp --sport 22 -j ACCEPT

echo 1 > /proc/sys/net/ipv4/ip_forward

iptables -A INPUT -s 0.0.0.0/0 -p tcp --dport 1:1024 -j DROP
iptables -A INPUT -s 0.0.0.0/0 -p udp --dport 1:1024 -j DROP

echo " OK"
# Fin del script



Saludos

j8k6f4v9j
31-03-2009, 22:29
Hola ancabi.

Sí, la mejor política es la primera, sin duda.

El problema es que te deja enviar el primer paquete, pero no deja que entre la respuesta. Para que puedas recibir (haciéndote NAT el firewall) las respuestas necesitas una regla del tipo --state ESTABLISHED,RELATED, opción que has de definir dentro de una opción más general: -m state.

Otro motivo por el que nunca te funcionará una "lista blanca" de ese modo es que no estás permitiendo el tráfico en loopback.

Total, con el escenario que describes, e impidiendo el paso a todo excepto a ssh:




fail=0

## Borrado de reglas anteriores
iptables -F || fail=1
iptables -X || fail=1
iptables -Z || fail=1
iptables -t nat -F || fail=1

## Establecemos politica por defecto
iptables -P INPUT DROP || fail=1
iptables -P OUTPUT ACCEPT || fail=1
iptables -P FORWARD ACCEPT || fail=1

## Se permite al loopback
iptables -A INPUT -i lo -j ACCEPT
iptables -A OUTPUT -o lo -j ACCEPT

# Lo que te comentaba, lo que hemos pedido nosotros sí que puede entrar
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

# Y también ssh
iptables -A INPUT -p tcp --dport ssh -m state --state NEW,ESTABLISHED -j ACCEPT

Se puede mejorar mucho más, distinguiendo la procedencia de los paquetes (según de qué interfaz vengan, a qué MAC correspondan, qué IP, etc)

Salu2

ancabi
31-03-2009, 22:34
el manual que estuve leyendo no explicaba nada de lo de state, asiq no entiendo mucho el codigo aunq si vos decis que es asi te creo

el tema es que yo necesito que el ssh entre por el router y llegue al 2003 server, ya que la idea es que el firewall este para impedir ataque y demas al servidor, por eso todo lo que puse para que haga el forward a la interfaz eth0

me pondre a buscar a ver que es lo de state

saludos y gracias