[Previo por Fecha] [Siguiente por Fecha] [Previo por Hilo] [Siguiente por Hilo]
[Hilos de Discusión] [Fecha] [Tema] [Autor]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/