[Previo por Fecha] [Siguiente por Fecha] [Previo por Hilo] [Siguiente por Hilo]

[Hilos de Discusión] [Fecha] [Tema] [Autor]

Re: [Linux]Servicios en Lan



Hola, Dios te bendiga.

On Wed, Sep 24, 2003 at 11:21:04AM -0500, dark wrote:
> Se cuenta con una Lan, la cual simplemente se utiliza para subir
> archivos via ftp (no se porque usan ftp, pero asi lo quieren) a otro
> servidor en internet, revisar correo del mismo servidor en internet
> via MS Outlook 2000 y navegar en la internet.
> La LAN se conecta a la internet via un proxylinux el cual usa una
> interface (eth0) para conectarse a un modem adsl y este a internet
> propiamente.

  <corte el esquema>

> Las maquinas 1,3,4 deben tener acceso a servicios en internet como
> el subir archivos a un servidor remoto via ftp, todas deben leer el
> correo desde el outlook 2000 y tambien al dichoso MSN (no me culpen
> a mi, asi lo quieren :| )
> Empece a ver lo de las iptables y en mi desesperacion ya no tengo
> alguna (le di flush) y entonces supongo que acepta todas las conexiones
> en todos los puertos de cualquier protocolo (0  seguridad!!).
> Lo unico que puede hacer, mas o menos, es instalar el squid y con
> eso, todas pueden ver paginas web (y leer su correo desde el web, pero
> lo quieren desde el Outlook) Pero no se como hacerle para conseguir
> el permitirles los demas servicios. Alguna sugerencia?
> Gracias por su tiempo.
> Ciao
> 
> Ah, me falto decir que mas maquinas 1,2,3,4 y 5 tiene como gateway el
> 192.168.181.1 (proxylinux).

<escudo-anti-distro-flame>
Este correo está algo grande y me apena decirles que si no usan(s)
Debian, no va a servir de mucho, ya que muchas de las cosas que digo
abajo están muy ligadas a la forma de hacer las cosas en Debian. Lo
siento, pero cómo Dark es devil_debian, pos me atreví. ;)
</escudo-anti-distro-flame>

Pues con algunos clientes y en la configuración actual de mi oficina,
lo que hago es configurar el fetchmail para que baje los correos desde
la computadora de internet al firewall de la intranet, y los clientes
de correo se configuran para que lean su correo desde la computadora
Linux. Para esto das de alta clones de los usuarios internos en Linux
e instalas algún server pop3 (yo uso el qmail). Configuras el
fetchmail para que funcioné en su propia cuenta de usuario con un
archivo de configuración global y ahi bajas el correo.

Mi configuración preferida de servidores/programas de correo es: exim
(mta), fetchmail (mta conexión intermitente), qmail (pop server), mutt
(mua). Parte porque algunos son por default en Debian y parte porque
los he usado ya desde hace un buen tiempo.

Lo anterior es para decirte que al exim, para que puedan escribir
correo hacia afera, lo tienes que configurar para que mande los
correos a un smarthost y crear un archivo /etc/email-addresses que
mapee los correos internos de tus usuarios a su dirección de correo
real en Internet. Obviamente tu smarthost es la computadora que esta
siempre en internet.

Creo que con lo anterior ya esta lo del correo. Ahora, en cuanto a las
reglas del iptables, pues yo uso la configuración básica 2 que viene
en el IP-Masquerading-HOWTO. Se supone que durante la explicación en
dicho howto te dan una configuración muy básica, y luego te dan un
ejemplo de una configuración con una seguridad un poquitín más fuerte,
pero bueno, es el que uso.

En el archivo masq-up que está más abajo, verás cómo se hace para que
sólo algunas computadoras salgan a internet:

$IPTABLES -A FORWARD -i $INTIF -o $EXTIF -j ACCEPT
# Comentar la linea anterior y descomentar/agregar las que si salen a
# internet después de esta.
#$IPTABLES -A FORWARD -i $INTIF -o $EXTIF -s 192.168.1.113/32 -j ACCEPT
$IPTABLES -A FORWARD -j drop-and-log-it

Así que si sólo la 1,3,4 tienen salida a internet, ponlo así:

#$IPTABLES -A FORWARD -i $INTIF -o $EXTIF -j ACCEPT
# Comentar la linea anterior y descomentar/agregar las que si salen a
# internet después de esta.
$IPTABLES -A FORWARD -i $INTIF -o $EXTIF -s 192.168.181.1/32 -j ACCEPT
$IPTABLES -A FORWARD -i $INTIF -o $EXTIF -s 192.168.181.3/32 -j ACCEPT
$IPTABLES -A FORWARD -i $INTIF -o $EXTIF -s 192.168.181.4/32 -j ACCEPT
$IPTABLES -A FORWARD -j drop-and-log-it

Ahora bien, si necesitas una explicación un poco más detallada que/de
lo anterior y lo que está abajo, entonces, si usas Debian y los
paquetes mencionados arriba, pos hechame un cable y te ayudo un poco
más, sino pos vuelve a escribir a la lista y nos dices que programas
de correo usas, que distribución, etc.; y que versiones. Así yo creo
que no yo, pero alguien más de la lista te puede ayudar un poco más (y
es que me declaro neofito en otras distros, jejeje).

Y ahora, los ejemplos de configuración de los programas mencionados,
la del exim, cómo es muy grande y es la que, desde mi punto de vista,
tiene menos problemas, la omití.

NOTA: en Debian cuando instalas el paquete del fetchmail, al
configurarlo, si lo configuras cómo un servicio del sistema, la sóla
existencia de este archivo lo activa. Aunque la primera vez sea
necesario: /etc/init.d/fetchmail start

----- Inicia: /etc/fetchmailrc 0600 fetchmail.fetchmail
defaults proto pop3

poll elservidor.interet.tuyo
	user user1 there is user1 here with password "user1pwd"
	user user2 there is user2 here with password "user2pwd"
	user user3 there is user3 here with password "user3pwd"
	user fulanito there is menganito here with password "fulanitopwd"
----- fin: /etc/fetchmailrc

----- Inicia: /etc//email-addresses 644 root.root
# This is /etc/email-addresses. It is part of the exim package
#
# This file contains email addresses to use for outgoing mail. Any local
# part not in here will be qualified by the system domain as normal.
#
# It should contain lines of the form:
#
#user: someone en isp com
#otheruser: someoneelse en anotherisp com
user1: user1 en elservidor interet tuyo
user2: user2 en elservidor interet tuyo
user3: user3 en elservidor interet tuyo
menganito: fulanito en elservidor interet tuyo
----- fin: /etc/email-addresses

NOTA 1: Debido a que el server linux tiene internet por cable, uso el
DHCP para la configuración de la IP.

NOTA 2: En Debian existe los directorios:
/etc/dhcp3/dhclient-enter-hook.d/
/etc/dhcp3/dhclient-exit-hook.d/
En los cuales se pueden poner scripts para cuando se ejecute el
dhclient, en estos directorios hay scripts de shell que su
autoejecutan cuando usas el dhclient. En mi caso, en el enter tengo
uno que corre el masq-down y en el exit tengo uno que ejecuta
condicionalmente el masq-up si se logro la conexión. Los incluyo, por
si las flys, pero si usas ppp (dial-up) ó pppoe (infinitum), basta con
que los pongas con los permisos adecuados en los directorios:
/etc/ppp/ip-up.d/
/etc/ppp/ip-down.d/
Respectivamente. (Esto en Debian, no se en otras distros).
Lo del masq-down al entrar, es para que las reglas viejas no nos
bloqueen al mismo dhclient cuando hace sus peticiones iniciales.

NOTA 3: Quité los comentarios para no ocupar mucho espacio en el
correo, pero los archivos masq-up y masq-down son prácticamente
iguales al ejemplo que viene en el IP-Masqerading-HOWTO. Así que si
necesitas ver que hacen dichos scripts, hechale una leída al HOWTO.

NOTA 4: Se asume un kernel 2.4.xx para usar iptables.

NOTA 5: Necesitas ajustar las IP's de tu red interna.

NOTA 6: Si alguien realmente bueno ve errores con esta configuración
del iptables, por favor avisenme. ;)

----- Inicia: /etc/dhcp3/masq-up 0644 root.root
#!/bin/sh

IPTABLES=/sbin/iptables
LSMOD=/sbin/lsmod
DEPMOD=/sbin/depmod
INSMOD=/sbin/insmod
GREP=/bin/grep
AWK=/usr/bin/awk
SED=/bin/sed
IFCONFIG=/sbin/ifconfig

EXTIF="eth1"
INTIF="eth0"
echo " External Interface:   $EXTIF"
echo " Internal Interface:   $INTIF"
echo " ---"

EXTIP="`$IFCONFIG $EXTIF | $AWK \
 /$EXTIF/'{next}//{split($0,a,":");split(a[2],a," ");print a[1];exit}'`"

echo "  External IP: $EXTIP"
echo "  ---"

INTNET="192.168.1.0/24"
INTIP="192.168.1.2/32"
echo "  Internal Network: $INTNET"
echo "  Internal IP:      $INTIP"
echo "  ---"

UNIVERSE="0.0.0.0/0"

echo "  - Verifying that all kernel modules are ok"
$DEPMOD -a

echo -en "    Loading kernel modules: "

echo -en "ip_tables, "
if [ -z "` $LSMOD | $GREP ip_tables | $AWK {'print $1'} `" ]; then
   $INSMOD ip_tables > /dev/null
fi

echo -en "ip_conntrack, "
if [ -z "` $LSMOD | $GREP ip_conntrack | $AWK {'print $1'} `" ]; then
   $INSMOD ip_conntrack > /dev/null
fi

echo -e "ip_conntrack_ftp, "
if [ -z "` $LSMOD | $GREP ip_conntrack_ftp | $AWK {'print $1'} `" ]; then
   $INSMOD ip_conntrack_ftp > /dev/null
fi

echo -en "                           ip_conntrack_irc, "
if [ -z "` $LSMOD | $GREP ip_conntrack_irc | $AWK {'print $1'} `" ]; then
   $INSMOD ip_conntrack_irc > /dev/null
fi

echo -en "iptable_nat, "
if [ -z "` $LSMOD | $GREP iptable_nat | $AWK {'print $1'} `" ]; then
   $INSMOD iptable_nat > /dev/null
fi

echo -e "ip_nat_ftp"
if [ -z "` $LSMOD | $GREP ip_nat_ftp | $AWK {'print $1'} `" ]; then
   $INSMOD ip_nat_ftp > /dev/null
fi

echo "  ---"
echo "  Enabling forwarding.."
echo "1" > /proc/sys/net/ipv4/ip_forward

echo "  Enabling DynamicAddr.."
echo "1" > /proc/sys/net/ipv4/ip_dynaddr

echo "  ---"
echo "  Clearing any existing rules and setting default policy to REJECT.."
$IPTABLES -P INPUT DROP
$IPTABLES -F INPUT
$IPTABLES -P OUTPUT DROP
$IPTABLES -F OUTPUT
$IPTABLES -P FORWARD DROP
$IPTABLES -F FORWARD
$IPTABLES -F -t nat

if [ -n "`$IPTABLES -L | $GREP drop-and-log-it`" ]; then
   $IPTABLES -F drop-and-log-it
fi
$IPTABLES -X
$IPTABLES -Z

# NO LOGGEAR... solo rechazar porque esto esta consumiendo mucho
# espacio de log y no he visto cómo funcione realmente.
#   rruiz - 9/Jun/2003
echo "  Creating a DROP chain.."
$IPTABLES -N drop-and-log-it
#$IPTABLES -A drop-and-log-it -j LOG --log-level debug --log-prefix "iptables:"
$IPTABLES -A drop-and-log-it -j REJECT

echo -e "\n   - Loading INPUT rulesets"
$IPTABLES -A INPUT -i lo -s $UNIVERSE -d $UNIVERSE -j ACCEPT
$IPTABLES -A INPUT -i $INTIF -s $INTNET -d $UNIVERSE -j ACCEPT
$IPTABLES -A INPUT -i $EXTIF -s $INTNET -d $UNIVERSE -j drop-and-log-it
$IPTABLES -A INPUT -i $EXTIF -p ICMP -s $UNIVERSE -d $EXTIP -j ACCEPT
$IPTABLES -A INPUT -i $EXTIF -s $UNIVERSE -d $EXTIP -m state --state \
  ESTABLISHED,RELATED -j ACCEPT
$IPTABLES -A INPUT -s $UNIVERSE -d $UNIVERSE -j drop-and-log-it

echo -e "   - Loading OUTPUT rulesets"
$IPTABLES -A OUTPUT -o lo -s $UNIVERSE -d $UNIVERSE -j ACCEPT
$IPTABLES -A OUTPUT -o $INTIF -s $EXTIP -d $INTNET -j ACCEPT
$IPTABLES -A OUTPUT -o $INTIF -s $INTIP -d $INTNET -j ACCEPT
$IPTABLES -A OUTPUT -o $EXTIF -s $UNIVERSE -d $INTNET -j drop-and-log-it
$IPTABLES -A OUTPUT -o $EXTIF -s $EXTIP -d $UNIVERSE -j ACCEPT
$IPTABLES -A OUTPUT -s $UNIVERSE -d $UNIVERSE -j drop-and-log-it

echo -e "   - Loading FORWARD rulesets"
echo "      - FWD: Allow all connections OUT and only existing/related IN"
$IPTABLES -A FORWARD -i $EXTIF -o $INTIF -m state --state ESTABLISHED,RELATED \
  -j ACCEPT
$IPTABLES -A FORWARD -i $INTIF -o $EXTIF -j ACCEPT
# Comentar la linea anterior y descomentar/agregar las que si salen a
# internet después de esta.
#$IPTABLES -A FORWARD -i $INTIF -o $EXTIF -s 192.168.1.113/32 -j ACCEPT
$IPTABLES -A FORWARD -j drop-and-log-it

echo "      - NAT: Enabling SNAT (MASQUERADE) functionality on $EXTIF"
$IPTABLES -t nat -A POSTROUTING -o $EXTIF -j SNAT --to $EXTIP

echo -e "\nDone.\n"
----- fin: /etc/dhcp3/masq-up

----- Inicia: /etc/dhcp3/masq-down 0644 root.root
#!/bin/sh

IPTABLES=/sbin/iptables
LSMOD=/sbin/lsmod
DEPMOD=/sbin/depmod
INSMOD=/sbin/insmod
GREP=/bin/grep
AWK=/usr/bin/awk
SED=/bin/sed
IFCONFIG=/sbin/ifconfig

EXTIF="eth1"
INTIF="eth0"
echo " External Interface:   $EXTIF"
echo " Internal Interface:   $INTIF"
echo " ---"

EXTIP="`$IFCONFIG $EXTIF | $AWK \
 /$EXTIF/'{next}//{split($0,a,":");split(a[2],a," ");print a[1];exit}'`"

echo "  External IP: $EXTIP"
echo "  ---"

INTNET="192.168.1.0/24"
INTIP="192.168.1.2/32"
echo "  Internal Network: $INTNET"
echo "  Internal IP:      $INTIP"
echo "  ---"

UNIVERSE="0.0.0.0/0"

echo "  - Verifying that all kernel modules are ok"
$DEPMOD -a

echo -en "    Loading kernel modules: "

echo -en "ip_tables, "
if [ -z "` $LSMOD | $GREP ip_tables | $AWK {'print $1'} `" ]; then
   $INSMOD ip_tables > /dev/null
fi

echo -en "ip_conntrack, "
if [ -z "` $LSMOD | $GREP ip_conntrack | $AWK {'print $1'} `" ]; then
   $INSMOD ip_conntrack > /dev/null
fi

echo -e "ip_conntrack_ftp, "
if [ -z "` $LSMOD | $GREP ip_conntrack_ftp | $AWK {'print $1'} `" ]; then
   $INSMOD ip_conntrack_ftp > /dev/null
fi

echo -en "                           ip_conntrack_irc, "
if [ -z "` $LSMOD | $GREP ip_conntrack_irc | $AWK {'print $1'} `" ]; then
   $INSMOD ip_conntrack_irc > /dev/null
fi

echo -en "iptable_nat, "
if [ -z "` $LSMOD | $GREP iptable_nat | $AWK {'print $1'} `" ]; then
   $INSMOD iptable_nat > /dev/null
fi

echo -e "ip_nat_ftp"
if [ -z "` $LSMOD | $GREP ip_nat_ftp | $AWK {'print $1'} `" ]; then
   $INSMOD ip_nat_ftp > /dev/null
fi

echo "  ---"
echo "  Enabling forwarding.."
echo "1" > /proc/sys/net/ipv4/ip_forward

echo "  Enabling DynamicAddr.."
echo "1" > /proc/sys/net/ipv4/ip_dynaddr

echo "  ---"
echo "  Clearing any existing rules and setting default policy to REJECT.."
$IPTABLES -P INPUT DROP
$IPTABLES -F INPUT
$IPTABLES -P OUTPUT DROP
$IPTABLES -F OUTPUT
$IPTABLES -P FORWARD DROP
$IPTABLES -F FORWARD
$IPTABLES -F -t nat
----- fin: /etc/dhcp3/masq-down

----- Inicia: /etc/dhcp3/dhclient-enter-hook.d/masquerade 0644 root.root
#!/bin/sh
/etc/dhcp3/masq-down
----- fin: /etc/dhcp3/dhclient-enter-hook.d/masquerade

----- Inicia: /etc/dhcp3/dhclient-exit-hook.d/masquerade 0644 root.root
#!/bin/sh

# si nos conectamos por cualquer motivo.
if [ x$reason = xBOUND ] || [ x$reason = xRENEW ] || \
   [ x$reason = xREBIND ] || [ x$reason = xREBOOT ]; then

   # Iniciamos el masquerading...
   /etc/dhcp3/masq-up
fi
----- fin: /etc/dhcp3/dhclient-exit-hook.d/masquerade

Espero que te sea de ayuda.

Saludos
Roberto Ruiz

--
A train stops at a train station; a bus stops at a bus station; on my
desk I have a workstation...


Lista de correo linux en opensource org mx
Preguntas linux-owner en opensource org mx
http://www.opensource.org.mx/



[Hilos de Discusión] [Fecha] [Tema] [Autor]