Está en la página 1de 80

LOC: Linux Original Courseware

Correspondiente al Curso
LX4: Advanced Network Administrator

Pgina 1

Tabla de Contenidos
Captulo 1 ............................................................................................................................................................................................ 5 Introduccin a iptables.................................................................................................................................................................... 5 Qu es un Firewall?....................................................................................................................................................................... 5 Qu es iptables?............................................................................................................................................................................. 8 Creando un firewall con iptables .................................................................................................................................................... 9 Proteger la propia mquina ......................................................................................................................................................... 9 Firewall de una LAN con salida a internet............................................................................................................................... 11 Firewall de una LAN con salida a internet con DMZ.............................................................................................................. 15 Firewall puro y duro entre redes............................................................................................................................................... 19 Firewall con poltica por defecto DROP .................................................................................................................................. 22 Depurar el funcionamiento del firewall........................................................................................................................................ 24 Captulo 2 .......................................................................................................................................................................................... 25 Introduccin a Squid ..................................................................................................................................................................... 25 Software necesario ........................................................................................................................................................................ 25 Instalacin del software necesario................................................................................................................................................ 25 Antes de continuar ........................................................................................................................................................................ 26 Configuracin bsica. ................................................................................................................................................................... 26 Que puerto utilizar para Squid? Parmetro http_port............................................................................................................. 26 Cunta memoria utilizar? Parmetro cache_mem.................................................................................................................. 27 Cuanto desea almacenar de Internet en el disco duro? Parmetro cache_dir ........................................................................ 27 Aviso de problemas con la cache - Parmetro cache_mgr....................................................................................................... 28 Acceso FTP annimo a Servidores - Parmetro ftp_user ........................................................................................................ 28 Acceso FTP pasivo a traves de un Firewall - Parmetro ftp_passive...................................................................................... 28 Control de acceso ...................................................................................................................................................................... 28 Control de acceso - Listas......................................................................................................................................................... 28 Control de acceso - Reglas........................................................................................................................................................ 29 Aplicando Listas y Reglas de control de acceso. ..................................................................................................................... 29 Cache con aceleracin............................................................................................................................................................... 30 Estableciendo el idioma por defecto............................................................................................................................................. 31 Iniciando, reiniciando y aadiendo el servicio al arranque del sistema. ..................................................................................... 31 Ajustes para el Firewall o script de Enmascaramiento de IP....................................................................................................... 32 Use Iptables en lugar de ipchains. ............................................................................................................................................ 32 Re-direccionamiento de peticiones........................................................................................................................................... 32 Script ejemplo de Enmascaramiento de IP con iptables. ......................................................................................................... 33 Captulo 3 .......................................................................................................................................................................................... 35 Introduccin a FTP........................................................................................................................................................................ 35 El ABC de FTP ............................................................................................................................................................................. 35 La relacin cliente/servidor ...................................................................................................................................................... 35 Cmo conseguir la ltima versin de wu-ftpd?.......................................................................................................................... 36 Lectura de los README.......................................................................................................................................................... 36 Compilacin e instalacin de wu-ftpd...................................................................................................................................... 36 Configuracin de wu-ftpd............................................................................................................................................................. 37 Control de acceso a travs del archivo /etc/ftpaccess .............................................................................................................. 37 Configuraciones tpicas............................................................................................................................................................. 49 Configuracin del usuario annimo ......................................................................................................................................... 49 Configuracin del directorio FTP annimo.............................................................................................................................. 50 Configuracin de /etc/ftpaccess................................................................................................................................................ 51 Configuracin del directorio /incoming ................................................................................................................................... 51 Usuarios slo registrados y acceso mixto................................................................................................................................. 52

Pgina 2

Configuracin de un Servidor FTP Virtual .................................................................................................................................. 53 Conclusiones ................................................................................................................................................................................. 53 Captulo 4 .......................................................................................................................................................................................... 55 Introduccin al Cliente FTP.......................................................................................................................................................... 55 Ejecucin del Cliente FTP ............................................................................................................................................................ 55 Comandos del Cliente FTP ........................................................................................................................................................... 55 Salir de una sesin de FTP........................................................................................................................................................ 55 Obtener Ayuda .......................................................................................................................................................................... 55 Manipulacin de Archivos y Directorios ................................................................................................................................. 56 Transferencia de Archivos ............................................................................................................................................................ 56 Tipos de Transferencia.............................................................................................................................................................. 56 Transferencia Interactiva .......................................................................................................................................................... 56 Transferencia de archivos desde la mquina Remota a la Local ............................................................................................. 57 Transferencia de archivos desde la mquina Local a la Remota ............................................................................................. 57 Captulo 5 .......................................................................................................................................................................................... 58 Introduccin a Servidores de Correo Elecrnico (e-mail) ........................................................................................................... 58 Funciones de los mail servers ....................................................................................................................................................... 58 Relay.......................................................................................................................................................................................... 58 Recoleccin ............................................................................................................................................................................... 58 Spam y Virus................................................................................................................................................................................. 58 Servidores de e-mail conocidos .................................................................................................................................................... 59 QMail ........................................................................................................................................................................................ 59 SendMail ................................................................................................................................................................................... 59 Postfix........................................................................................................................................................................................ 60 Exim .......................................................................................................................................................................................... 60 SuSE Linux eMail Server 3.1 ................................................................................................................................................... 61 GLMail ...................................................................................................................................................................................... 61 Captulo 6 .......................................................................................................................................................................................... 62 Introduccin a SendMail............................................................................................................................................................... 62 Requisitos previos ..................................................................................................................................................................... 62 Resultados a obtener ................................................................................................................................................................. 62 Requerimientos mnimos .............................................................................................................................................................. 62 Procedimientos.............................................................................................................................................................................. 63 Preparativos............................................................................................................................................................................... 63 Verificando parmetros de red.................................................................................................................................................. 63 Confirmando la instalacin de Sendmail.................................................................................................................................. 64 Configurando Sendmail ................................................................................................................................................................ 64 Habilitando los servicios POP3 e IMAP ...................................................................................................................................... 69 Que hacer con el Spam?.............................................................................................................................................................. 70 El Servidor de Nombres (DNS).................................................................................................................................................... 71 Configuracin de los clientes de correo ....................................................................................................................................... 72 Captulo 7 .......................................................................................................................................................................................... 73 Introduccin a Horde (WebMail) ................................................................................................................................................. 73 Qu es Horde? ......................................................................................................................................................................... 73 Qu es IMP? ............................................................................................................................................................................ 73 Qu es Turba?.......................................................................................................................................................................... 73 Qu es Kronolith? ................................................................................................................................................................... 73 Qu es Jonah?.......................................................................................................................................................................... 73 Qu es WHUPS? ..................................................................................................................................................................... 73 Qu es Chora? ......................................................................................................................................................................... 73 Qu es Gollem? ....................................................................................................................................................................... 73 Solamente quiero WebMail. Por qu necesito Horde?............................................................................................................... 73 Cunto cuesta Horde? ............................................................................................................................................................. 74 En qu plataformas funciona Horde? ..................................................................................................................................... 74 Horde funciona en Windows 95 o en NT/2K/XP?................................................................................................................. 74

Pgina 3

Captulo 8 .......................................................................................................................................................................................... 75 Introduccin a Administracin Remota........................................................................................................................................ 75 Diferentes tipos de Administracin Remota ................................................................................................................................ 75 Control Remoto......................................................................................................................................................................... 75 Sesin Remota........................................................................................................................................................................... 75 Acceso Remoto ......................................................................................................................................................................... 75 Direcciones Web relacionadas...................................................................................................................................................... 76 Captulo 9 .......................................................................................................................................................................................... 77 Introduccin a TelNet ................................................................................................................................................................... 77 Telnet en Linux ............................................................................................................................................................................. 77 Telnet en Windows 2000 .............................................................................................................................................................. 77 Captulo 10 ........................................................................................................................................................................................ 79 Introduccin a SSH ....................................................................................................................................................................... 79 Software requerido........................................................................................................................................................................ 79 Archivos de configuracin............................................................................................................................................................ 79 Procedimientos.............................................................................................................................................................................. 79 Parmetro ListenAddress.......................................................................................................................................................... 79 Parmetro PermitRootLogin..................................................................................................................................................... 79 Parmetro X11Forwarding ....................................................................................................................................................... 79 Aplicando los cambios.................................................................................................................................................................. 80 Probando OpenSSH. ..................................................................................................................................................................... 80 Acceso por shell. ....................................................................................................................................................................... 80 Acceso por SFTP ...................................................................................................................................................................... 80

Pgina 4

Captulo 1
Introduccin a iptables
En este manual se muestran las habituales arquitecturas de redes con firewall y la forma de montar iptables para cada caso, con distintas opciones para cada ejemplo.

Qu es un Firewall?
Un firewall es un dispositivo que filtra el trfico entre redes, como mnimo dos. El firewall puede ser un dispositivo fsico o un software sobre un sistema operativo. En general debemos verlo como una caja con 2 (dos) o ms interfaces de red en la que se establecen una reglas de filtrado con las que se decide si una conexin determinada puede establecerse o no. Incluso puede ir ms all y realizar modificaciones sobre las comunicaciones, como el NAT. Esa sera la definicin genrica, hoy en da un firewall es un hardware especfico con un sistema operativo o una BIOS que filtra el trfico TCP/UDP/ICMP/IP y decide si un paquete pasa, se modifica, se convierte o se descarta. Para que un firewall entre redes funcione como tal debe tener al menos dos tarjetas de red. Esta sera la tipologa clsica de un firewall:

Figura 1: Esquema de firewall tpico entre red local e internet Esquema tpico de firewall para proteger una red local conectada a internet a travs de un router. El firewall debe colocarse entre el router (con un nico cable) y la red local (conectado al switch o al hub de la LAN) Dependiendo de las necesidades de cada red, puede ponerse uno o ms firewalls para establecer distintos permetros de seguridad en torno a un sistema. Es frecuente tambin que se necesite exponer algn servidor a internet (como es el caso de un servidor web, un servidor de correo, etc.), y en esos casos obviamente en principio se debe aceptar cualquier conexin a ellos. Lo que se recomienda en esa situacin es situar ese servidor en lugar aparte de la red, el que denominamos DMZ o zona desmilitarizada. El firewall tiene entonces tres entradas:

Figura 2: Esquema de firewall entre red local e internet con zona DMZ para servidores expuestos En la zona desmilitarizada se pueden poner tantos servidores como se necesiten. Con esta arquitectura, permitimos que el servidor sea accesible desde internet de tal forma que si es atacado y se gana acceso a l, la red local sigue protegida por el

Pgina 5

firewall. Esta estructura de DMZ puede hacerse tambin con un doble firewall (aunque como se ve se puede usar un nico dispositivo con al menos tres interfaces de red). Sera un esquema como este:

Figura 3: Esquema de firewall entre red local e internet con zona DMZ para servidores expuestos creado con doble firewall (permetro) Los firewalls se pueden usar en cualquier red. Es habitual tenerlos como proteccin de internet en las empresas, aunque ah tambin suelen tener una doble funcin: controlar los accesos externos hacia dentro y tambin los internos hacia el exterior; esto ltimo se hace con el firewall o frecuentemente con un proxy (que tambin utilizan reglas, aunque de ms alto nivel). Tambin, en empresas de hosting con muchos servidores, lo normal es encontrarnos uno o ms firewalls ya sea filtrando toda la instalacin o parte de ella:

Figura 4: Esquema de firewall entre redes, en la que solo se filtra y no se hace NAT

Pgina 6

Sea el tipo de firewall que sea, generalmente no tendr mas que un conjunto de reglas en las que se examina el origen y destino de los paquetes del protocolo TCP/IP. En cuanto a protocolos es probable que sean capaces de filtrar muchos tipos de ellos, no solo los TCP, tambin los UDP, los ICMP, los GRE y otros protocolos vinculados a vpns. Este podra ser (en pseudolenguaje) un conjunto de reglas de un firewall del primer grfico:
Poltica por defecto ACEPTAR. Todo lo que venga de la red local al firewall ACEPTAR Todo lo que venga de la ip de mi casa al puerto tcp 22 ACEPTAR Todo lo que venga de la ip de casa del jefe al puerto tcp 1723 ACEPTAR Todo lo que venga de hora.rediris.es al puerto udo 123 ACEPTAR Todo lo que venga de la red local y vaya al exterior ENMASCARAR Todo lo que venga del exterior al puerto tcp 1 al 1024 DENEGAR Todo lo que venga del exterior al puerto tcp 3389 DENEGAR Todo lo que venga del exterior al puerto udp 1 al 1024 DENEGAR

En definitiva lo que se hace es: Habilita el acceso a puertos de administracin a determinadas IPs privilegiadas Enmascara el trafico de la red local hacia el exterior (NAT, una peticin de un pc de la LAN sale al exterior con la IP pblica), para poder salir a internet Deniega el acceso desde el exterior a puertos de administracin y a todo lo que este entre 1 y 1024. Hay dos maneras de implementar un firewall: 1) Poltica por defecto ACEPTAR: en principio todo lo que entra y sale por el firewall se acepta y solo se denegar lo que se diga explcitamente. 2) Poltica por defecto DENEGAR: todo esta denegado, y solo se permitir pasar por el firewall aquellos que se permita explcitamente. Como es obvio imaginar, la primera poltica facilita mucho la gestin del firewall, ya que simplemente nos tenemos que preocupar de proteger aquellos puertos o direcciones que sabemos que nos interesa; el resto no importa tanto y se deja pasar. Por ejemplo, si queremos proteger una mquina linux, podemos hacer un netstat -ln (o netstat -an, o netstat puta | grep LISTEN), saber que puertos estn abiertos, poner reglas para proteger esos puertos y ya est. Para qu vamos a proteger un puerto que realmente nunca se va a abrir? El nico problema que podemos tener es que no controlemos que es lo que esta abierto, o que en un momento dado se instale un software nuevo que abra un puerto determinado, o que no sepamos que determinados paquetes ICMP son peligrosos. Si la poltica por defecto es ACEPTAR y no se protege explcitamente, podemos poner en riesgo la PC o Servidor que queremos proteger. En cambio, si la poltica por defecto es DENEGAR, a no ser que lo permitamos explcitamente, el firewall se convierte en un autntico MURO infranqueable. El problema es que es mucho ms difcil preparar un firewall as, y hay que tener muy claro como funciona el sistema (sea iptables o el que sea) y que es lo que se tiene que abrir sin caer en la tentacin de empezar a meter reglas super-permisivas. Esta configuracin de firewall es la recomendada, aunque no es aconsejable usarla si no se domina mnimamente el sistema. Uno de los objetos principales de este documento es mostrar la forma de crear este tipo de firewalls. Importante El orden en el que se ponen las reglas de firewall es determinante. Normalmente cuando hay que decidir que se hace con un paquete se va comparando con cada regla del firewall hasta que se encuentra una que le afecta (match), y se hace lo que dicte esta regla (aceptar o denegar); despus de eso NO SE MIRARN MS REGLAS para ese paquete. Cul es el peligro? Si ponemos reglas muy permisivas entre las primeras del firewall, puede que las siguientes no se apliquen y no sirvan de nada.

Pgina 7

Qu es iptables?
IPtables es un sistema de firewall vinculado al kernel de linux que se ha extendido enormemente a partir del kernel 2.4 de este sistema operativo. Al igual que el anterior sistema ipchains, un firewall de iptables no es como un servidor que lo iniciamos o detenemos o que se pueda caer por un error de programacin (aunque ha tenido alguna vulnerabilidad que permite DoS, pero nunca tendr tanto peligro como las aplicaciones que escuchan en determinado puerto TCP): iptables esta integrado con el kernel, es parte del sistema operativo. Cmo se pone en marcha? Realmente lo que se hace es aplicar reglas. Para ellos se ejecuta el comando iptables, con el que aadimos, borramos, o creamos reglas. Por ello un firewall de iptables no es sino un simple script de shell en el que se van ejecutando las reglas de firewall. Nota Se puede implementar un script de inicio en /etc/rc.d/init.d ( /etc/init.d) con el que hagamos que iptables se "inicie o pare" como un servicio ms. Lo podemos hacer nosotros o es probable que venga en la distribucin (como en RedHat por ejemplo). Tambin se pueden salvar las reglas aplicadas con el comando iptables-save en un fichero y gestionar ese fichero con una aplicacin o front-end desde la X o desde webmin. Si tenemos una mquina linux con soporte para iptables, tiene reglas aplicadas y empiezan a llegar/salir/pasar paquetes. Por ahora no es necesario que tengamos en cuenta cuantas placas de red hay, que direcciones IP tiene la mquina y olvidemos si el paquete entra o sale. Las reglas de firewall estn a nivel de kernel, y al kernel lo que le llega es un paquete y tiene que decidir que hacer con l. El kernel lo que hace es, dependiendo si el paquete es para la propia mquina o para otra mquina, consultar las reglas de firewall y decidir que hacer con el paquete segn mande el firewall. Este es el camino que seguira un paquete en el kernel:

Figura 5: Cuando un paquete u otra comunicacin llegan al kernel con iptables se sigue este camino Como se ve en el grfico, bsicamente se mira si el paquete esta destinado a la propia mquina o si va a otra. Para los paquetes (o datagramas, segn el protocolo) que van a la propia mquina se aplican las reglas INPUT y OUTPUT, y para filtrar paquetes que van a otras redes o mquinas se aplican simplemente reglas FORWARD. INPUT, OUTPUT y FORWARD son los tres tipos de reglas de filtrado. Antes de aplicar esas reglas es posible aplicar reglas de NAT: estas se usan para hacer redirecciones de puertos o cambios en las IPs de origen y destino. Veremos ejemplos ms adelante. E incluso antes de las reglas de NAT se pueden meter reglas de tipo MANGLE, destinadas a modificar los paquetes; son reglas poco conocidas y es probable que no las usen. Por tanto tenemos tres tipos de reglas en iptables: MANGLE NAT: reglas PREROUTING, POSTROUTING FILTER: reglas INPUT, OUTPUT, FORWARD.

Pgina 8

Creando un firewall con iptables


En este tutorial se ha intentado dar una breve introduccin sobre lo que es un firewall, sus tipologas bsicas y en concreto se presenta el sistema iptables. Ahora veremos configuraciones de firewall con iptables, empezando desde la ms bsica a las ms complejas, en las que se establece la denegacin como poltica por defecto. Nota Se recomienda encarecidamente ir practicando estas reglas en alguna mquina linux disponible, y especialmente hacer uso de la herramienta iptraf para depurar y comprobar el funcionamiento de iptables. Con iptraf podemos comprobar si las conexiones TCP/IP se llegan a establecer o no. Una conexin TCP/IP empieza con el three-way-handshake: La maquina que desea conectarse a otra enva un paquete con flag SYN Si la otra maquina acepta, enva un SYN/ACK Entonces la mquina establece la conexin. Si el firewall esta denegando la conexin, con iptraf veremos que la mquina origen slo manda paquetes con el flag SYN, y que del otro lado no sale nada. Saber usar iptraf nos ayudar mucho.

Proteger la propia mquina


Muy bien, tenemos una mquina linux conectada a internet y queremos protegerla con su propio firewall. Lo nico que tenemos que hacer es crear un script de shell en el que se van aplicando las reglas. Los scripts de iptables pueden tener este aspecto:
Saludo a la aficin (echo) Borrado de las reglas aplicadas actualmente (flush) Aplicacin de polticas por defecto para INPUT, OUPUT, FORWARD Listado de reglas iptables.

Ojo con el orden de las reglas


#!/bin/sh ## SCRIPT de IPTABLES - ejemplo del manual de iptables ## Ejemplo de script para proteger la propia mquina echo -n Aplicando Reglas de Firewall... ## FLUSH iptables iptables iptables iptables de reglas F X Z -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 # El localhost se deja (por ejemplo conexiones locales a mysql) /sbin/iptables -A INPUT -i lo -j ACCEPT # A nuestra IP le dejamos todo iptables -A INPUT -s 195.65.34.234 -j ACCEPT

Pgina 9

# A un colega le dejamos entrar al mysql para que mantenga la BBDD iptables -A INPUT -s 231.45.134.23 -p tcp --dport 3306 -j ACCEPT # A un diseador le dejamos usar el FTP iptables -A INPUT -s 80.37.45.194 -p tcp -dport 20:21 -j ACCEPT # El puerto 80 de www debe estar abierto, es un servidor web. iptables -A INPUT -p tcp --dport 80 -j ACCEPT # Y el resto, lo cerramos iptables -A INPUT -p tcp --dport iptables -A INPUT -p tcp --dport iptables -A INPUT -p tcp --dport iptables -A INPUT -p tcp --dport

20:21 -j DROP 22 -j DROP 3306 -j DROP 10000 -j DROP

echo " OK . Verifique que lo que se aplica con: iptables -L n " # Fin del script

Nota Se puede mejorar este script usando variables, se puede poner el comando con el path completo. No olvidarse de ponerle permisos de ejecucin con: chmod +x firewall-1.sh chmod 750 firewall-1.sh . En fin, ya se ve, un script de los ms simples, con unas pocas reglas con las que cerramos puertos al pblico a los que no tienen porque tener acceso, salvo el 80. Pero cualquiera con algo de ojo se habr dado cuenta de que ni se filtra el UDP ni el ICMP. Como mencionamos anteriormente, en este tipo de firewall es recomendable hacer un netstat para ver que puertos estn en estado de escucha (abiertos), y salvo que un rootkit nos haya modificado los binarios, netstat nos dar la informacin precisa que necesitamos. Cuidado Aunque nmap tambin nos muestra los puertos abiertos, dependiendo de cmo lo ejecutemos quiz no nos muestre todos los puertos, ya que suele mirar solo los ms conocidos Imaginemos que hemos dado un repaso a nuestro sistema, y ahora si que tenemos mejor identificados los puertos TCP y UDP abiertos. Pero, para estar seguros, al final del script cerraremos el rango de puertos del 1 al 1024, los reservados tanto para TCP como UDP. Reemplazamos el final del script anterior con:
# Hasta aqu el script es igual al ejemplo anterior # El puerto 80 de www debe estar abierto, es un servidor web. iptables -A INPUT -p tcp --dport 80 -j ACCEPT # Cerramos rango de los puertos privilegiados. Cuidado con este tipo de # barreras, antes hay que abrir a los que si tienen acceso. iptables -A INPUT -p tcp --dport 1:1024 -j DROP iptables -A INPUT -p udp --dport 1:1024 -j DROP # Y el resto, lo cerramos iptables -A INPUT -p tcp --dport 3306 -j DROP iptables -A INPUT -p tcp --dport 10000 -j DROP iptables -A INPUT -p udp --dport 10000 -j DROP echo " OK . Verifique que lo que se aplica con: iptables -L n " # Fin del script

Pgina 10

Nota Si estas reglas de filtrado las esta aplicando en una mquina remota (conectado remotamente) y tiene miedo de perder el control de la mquina remota, pruebe el script en una mquina local y asegrese de que aplica lo que usted quiere. Funcionar va a funcionar seguro.

Firewall de una LAN con salida a internet


Ahora vamos a ver una configuracin de firewall iptables para el tpico caso de red local que necesita salida a internet.

Figura 6: Esquema de firewall tpico entre red local e internet Qu es lo que hace falta? Obviamente, una regla que haga NAT hacia fuera (enmascaramiento en iptables), con lo que se hara dos veces NAT en el firewall y en el router. Entre el router y el firewall lo normal es que haya una red privada (192.168.1.1 y 192.168.1.2 por ejemplo), aunque dependiendo de las necesidades puede que los dos tengan IP pblica. El router se supone que hace un NAT completo hacia dentro (quiz salvo puerto 23), o sea que desde el exterior no se llega al router si no que de forma transparente se "choca" contra el firewall. Lo normal en este tipo de firewalls es poner la poltica por defecto de FORWARD en denegar (DROP), pero eso lo vemos ms adelante. Veamos como seran las reglas de este firewall-gateway:
#!/bin/sh ## SCRIPT de IPTABLES - ejemplo del manual de iptables ## Ejemplo de script para firewall entre red-local e internet echo -n Aplicando Reglas de Firewall... ## FLUSH iptables iptables iptables iptables de reglas F X Z -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: eth0 es el interfaz conectado al router y eth1 a la LAN # El localhost se deja (por ejemplo conexiones locales a mysql) /sbin/iptables -A INPUT -i lo -j ACCEPT # Al firewall tenemos acceso desde la red local iptables -A INPUT -s 192.168.10.0/24 -i eth1 -j ACCEPT # Ahora hacemos enmascaramiento de la red local # y activamos el BIT DE FORWARDING (imprescindible!!!!!) iptables -t nat -A POSTROUTING -s 192.168.10.0/24 -o eth0 -j MASQUERADE # Con esto permitimos hacer forward de paquetes en el firewall, o sea # que otras mquinas puedan salir a traves del firewall.

Pgina 11

echo 1 > /proc/sys/net/ipv4/ip_forward ## Y ahora cerramos los accesos indeseados del exterior: # Nota: 0.0.0.0/0 significa: cualquier red # Cerramos el rango de puerto bien conocido 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 # Cerramos un puerto de gestin: webmin iptables -A INPUT -s 0.0.0.0/0 -p tcp -dport 10000 -j DROP echo " OK . Verifique que lo que se aplica con: iptables -L -n" # Fin del script

Pero como somos muy malvados queremos que los empleados solamente puedan navegar por internet, denegando el acceso a Kazaa o edonkey. Esta sera una configuracin simple pero efectiva. Reemplazamos en el script anterior lo siguiente:
# Hasta aqu el script es igual al ejemplo anterior # Al firewall tenemos acceso desde la red local iptables -A INPUT -s 192.168.10.0/24 -i eth1 -j ACCEPT ## Ahora con regla FORWARD filtramos el acceso de la red local ## al exterior. Como se explica antes, a los paquetes que no van dirigidos al ## propio firewall se les aplican reglas de FORWARD # Aceptamos que vayan a puertos 80 iptables -A FORWARD -s 192.168.10.0/24 -i eth1 -p tcp --dport 80 -j ACCEPT # Aceptamos que vayan a puertos https iptables -A FORWARD -s 192.168.10.0/24 -i eth1 -p tcp --dport 443 -j ACCEPT # Aceptamos que consulten los DNS iptables -A FORWARD -s 192.168.10.0/24 -i eth1 -p tcp --dport 53 -j ACCEPT iptables -A FORWARD -s 192.168.10.0/24 -i eth1 -p udp --dport 53 -j ACCEPT # Y denegamos el resto. Si se necesita alguno, ya avisaran iptables -A FORWARD -s 192.168.10.0/24 -i eth1 -j DROP # Ahora hacemos enmascaramiento de la red local # y activamos el BIT DE FORWARDING (imprescindible!!!!!) iptables -t nat -A POSTROUTING -s 192.168.10.0/24 -o eth0 -j MASQUERADE # De aqu en adelante el script es igual al ejemplo anterior

Supongamos que este firewall tiene alguna funcin adicional: es un servidor proxy y adems es un servidor de correo. Darle funcionalidades de este tipo a un firewall no es recomendable, porque si no se protegen bien esos puertos o si no est actualizado el software pueden entrar en el firewall a base de exploits comprometiendo TODA la red local. De todas formas muchas empresas no se pueden permitir o no quieren tener una mquina para cada cosa, bastante les cuesta a muchas poner un firewall. Por tanto: si se aaden servicios que deben estar abiertos al pblico en el propio firewall, nos la estamos jugando, y se recomienda pasar el servicio a otra mquina y ponerla en la DMZ. Supongamos tambin que la empresa tiene empleados que viajan y que se conectan a internet desde su porttil y con una IP dinmica. Supongamos tambin que el jefe de la empresa quiere acceder a la red local desde casa con una conexin ADSL. Ahora en el firewall deberamos tener instalado un servidor SMTP, POP3, y un PPTPD. Nuestro script completo quedara as:
#!/bin/sh ## SCRIPT de IPTABLES - ejemplo del manual de iptables ## Ejemplo de script para firewall entre red-local e internet ## con servicios abiertos de puerto 25, 110, y 1723

Pgina 12

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: eth0 es el interfaz conectado al router y eth1 a la LAN # El localhost se deja (por ejemplo conexiones locales a mysql) iptables -A INPUT -i lo -j ACCEPT # Al firewall tenemos acceso desde la red local iptables -A INPUT -s 192.168.10.0/24 -i eth1 -j ACCEPT ## Abrimos el acceso a puertos de correo # Abrimos el puerto 25, hay que configurar bien el relay del servidor SMTP iptables -A INPUT -s 0.0.0.0/0 -p tcp --dport 25 -j ACCEPT # Abrimos el pop3 iptables -A INPUT -s 0.0.0.0/0 -p tcp --dport 110 -j ACCEPT # Y abrimos el puerto pptpd para la ip del adsl de casa del jefe iptables -A INPUT -s 211.45.176.24 -p tcp --dport 1723 -j ACCEPT ## Ahora con regla FORWARD filtramos el acceso de la red local ## al exterior. Como se explica antes, a los paquetes que no van dirigidos al ## propio firewall se les aplican reglas de FORWARD # Aceptamos iptables -A # Aceptamos iptables -A que vayan a puertos 80 FORWARD -s 192.168.10.0/24 -i eth1 -p tcp --dport 80 -j ACCEPT que vayan a puertos https FORWARD -s 192.168.10.0/24 -i eth1 -p tcp --dport 443 -j ACCEPT

# Aceptamos que consulten los DNS iptables -A FORWARD -s 192.168.10.0/24 iptables -A FORWARD -s 192.168.10.0/24 # Y denegamos el resto. Si se necesita iptables -A FORWARD -s 192.168.10.0/24

-i eth1 -i eth1 alguno, -i eth1

-p -p ya -j

tcp --dport 53 -j ACCEPT udp --dport 53 -j ACCEPT avisaran DROP

# Ahora hacemos enmascaramiento de la red local # y activamos el BIT DE FORWARDING (imprescindible!!!!!) iptables -t nat -A POSTROUTING -s 192.168.10.0/24 -o eth0 -j MASQUERADE # Con esto permitimos hacer forward de paquetes en el firewall, o sea # que otras mquinas puedan salir a traves del firewall. echo 1 > /proc/sys/net/ipv4/ip_forward ## Y ahora cerramos los accesos indeseados del exterior: # Nota: 0.0.0.0/0 significa: cualquier red # Cerramos el rango de puerto bien conocido iptables -A INPUT -s 0.0.0.0/0 -i eth0 -p tcp -dport 1:1024 -j DROP iptables -A INPUT -s 0.0.0.0/0 -i eth0 -p udp -dport 1:1024 -j DROP # Cerramos un puerto de gestin: webmin iptables -A INPUT -s 0.0.0.0/0 -i eth0 -p tcp --dport 10000 -j DROP

Pgina 13

# Y cerramos el puerto del servicio PPTPD, solo abierto para el jefe. iptables -A INPUT -s 0.0.0.0/0 -i eth0 -p tcp --dport 1723 -j DROP echo " OK . Verifique que lo que se aplica con: iptables -L -n" # Fin del script

Ms difcil todava! Ahora queremos compartir algn servicio pero de un servidor que tenemos dentro de la red local, por ejemplo el IIS de un servidor Windows 2000, y adems permitir la gestin remota por terminal server para esta mquina para una empresa externa. En este caso lo que hay que hacer es un redireccin de puerto. Antes de iptables esto se poda hacer fcilmente con un servidor como rinet. Rinet lo que hace es simplemente abrir un puerto en el firewall y al conectarse a l te lleva hasta el puerto de otra mquina, como una tubera. Con iptables podemos hacer redirecciones con una ventaja: no perdemos la informacin de IP origen, cosa que con rinet s ocurra. En fin, veamos la configuracin, con las nuevas reglas de DNAT:
#!/bin/sh ## SCRIPT de IPTABLES - ejemplo del manual de iptables ## Ejemplo de script para firewall entre red-local e internet ## con servicios abiertos de puerto 25, 110, y 1723 echo -n Aplicando Reglas de Firewall... ## FLUSH iptables iptables iptables iptables de reglas F X Z -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 ## REDIRECCIONES # Todo lo que venga por el exterior y vaya al puerto 80 lo redirigimos # a una maquina interna iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j DNAT --to 192.168.10.12:80 # Los accesos de un ip determinada a Terminal server se redirigen e esa # maquina iptables -t nat -A PREROUTING -s 221.23.124.181 -i eth0 -p tcp --dport 3389 -j DNAT --to 192.168.10.12:3389 ## Nota: eth0 es el interfaz conectado al router y eth1 a la LAN # El localhost se deja (por ejemplo conexiones locales a mysql) iptables -A INPUT -i lo -j ACCEPT # Al firewall tenemos acceso desde la red local iptables -A INPUT -s 192.168.10.0/24 -i eth1 -j ACCEPT ## Abrimos el acceso a puertos de correo # Abrimos el puerto 25, hay que configurar bien el relay del servidor SMTP iptables -A INPUT -s 0.0.0.0/0 -p tcp --dport 25 -j ACCEPT # Abrimos el pop3 iptables -A INPUT -s 0.0.0.0/0 -p tcp --dport 110 -j ACCEPT # Y abrimos el puerto pptpd para la ip del adsl de casa del jefe

Pgina 14

iptables -A INPUT -s 211.45.176.24 -p tcp --dport 1723 -j ACCEPT ## Ahora con regla FORWARD filtramos el acceso de la red local ## al exterior. Como se explica antes, a los paquetes que no van dirigidos al ## propio firewall se les aplican reglas de FORWARD # Aceptamos iptables -A # Aceptamos iptables -A que vayan a puertos 80 FORWARD -s 192.168.10.0/24 -i eth1 -p tcp --dport 80 -j ACCEPT que vayan a puertos https FORWARD -s 192.168.10.0/24 -i eth1 -p tcp --dport 443 -j ACCEPT

# Aceptamos que consulten los DNS iptables -A FORWARD -s 192.168.10.0/24 -i eth1 -p tcp --dport 53 -j ACCEPT iptables -A FORWARD -s 192.168.10.0/24 -i eth1 -p udp --dport 53 -j ACCEPT # Y denegamos el resto. Si se necesita alguno, ya avisaran iptables -A FORWARD -s 192.168.10.0/24 -i eth1 -j DROP # Ahora hacemos enmascaramiento de la red local # y activamos el BIT DE FORWARDING (imprescindible!!!!!) iptables -t nat -A POSTROUTING -s 192.168.10.0/24 -o eth0 -j MASQUERADE # Con esto permitimos hacer forward de paquetes en el firewall, o sea # que otras mquinas puedan salir a traves del firewall. echo 1 > /proc/sys/net/ipv4/ip_forward ## Y ahora cerramos los accesos indeseados del exterior: # Nota: 0.0.0.0/0 significa: cualquier red # Cerramos el rango de puerto bien conocido iptables -A INPUT -s 0.0.0.0/0 -i eth0 -p tcp -dport 1:1024 -j DROP iptables -A INPUT -s 0.0.0.0/0 -i eth0 -p udp -dport 1:1024 -j DROP # Cerramos un puerto de gestin: webmin iptables -A INPUT -s 0.0.0.0/0 -i eth0 -p tcp --dport 10000 -j DROP # Y cerramos el puerto del servicio PPTPD, solo abierto para el jefe. iptables -A INPUT -s 0.0.0.0/0 -i eth0 -p tcp --dport 1723 -j DROP echo " OK . Verifique que lo que se aplica con: iptables -L n " # Fin del script

Bueno ya tenemos montada la red, pero conviene insistir en que esta ltima configuracin, con las redirecciones y los servicios de correo funcionando en el firewall es bastante insegura. Qu ocurre si hackean el servidor IIS de la red local? Pues que el firewall no sirve de gran cosa, lo poco que podra hacer una vez se ha entrado en la red local es evitar escaneos hacia el exterior desde la mquina atacada, aunque para ello el firewall debiera tener una buena configuracin con denegacin por defecto. Si necesitamos ese servidor IIS, basta con comprar una placa de red y crear una DMZ.

Firewall de una LAN con salida a internet con DMZ


Bueno, esto se va complicando. Imaginemos que tenemos una red parecida a la anterior pero ahora hacemos las cosas bien y colocamos ese servidor IIS en una DMZ:

Pgina 15

Figura 7: Esquema de firewall entre red local e internet con zona DMZ para servidores expuestos. En este tipo de firewall hay que permitir: Acceso de la red local a internet. Acceso pblico al puerto TCP/80 y TCP/443 del servidor de la DMZ Acceso del servidor de la DMZ a una BBDD de la LAN Obviamente bloquear el resto de acceso de la DMZ hacia la LAN. Qu tipo de reglas son las que hay que usar para filtrar el trfico entre la DMZ y la LAN? Solo pueden ser las FORWARD, ya que estamos filtrando entre distintas redes, no son paquetes destinados al propio firewall.
#!/bin/sh ## SCRIPT de IPTABLES - ejemplo del manual de iptables ## Ejemplo de script para firewall entre red-local e internet con DMZ echo -n Aplicando Reglas de Firewall... ## FLUSH iptables iptables iptables iptables de reglas F X Z -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: eth0 es el interfaz conectado al router y eth1 a la LAN # Todo lo que venga por el exterior y vaya al puerto 80 lo redirigimos # a una maquina interna iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j DNAT --to 192.168.3.2:80 # Los accesos de un ip determinada HTTPS se redirigen e esa # maquina iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 443 -j DNAT --to 192.168.3.2:443 # El localhost se deja (por ejemplo conexiones locales a mysql) /sbin/iptables -A INPUT -i lo -j ACCEPT # Al firewall tenemos acceso desde la red local iptables -A INPUT -s 192.168.10.0/24 -i eth1 -j ACCEPT

Pgina 16

# Ahora hacemos enmascaramiento de la red local y de la DMZ # para que puedan salir haca fuera # y activamos el BIT DE FORWARDING (imprescindible!!!!!) iptables -t nat -A POSTROUTING -s 192.168.10.0/24 -o eth0 -j MASQUERADE iptables -t nat -A POSTROUTING -s 192.168.3.0/24 -o eth0 -j MASQUERADE # Con esto permitimos hacer forward de paquetes en el firewall, o sea # que otras mquinas puedan salir a traves del firewall. echo 1 > /proc/sys/net/ipv4/ip_forward ## Permitimos el paso de la DMZ a una BBDD de la LAN: iptables -A FORWARD -s 192.168.3.2 -d 192.168.10.5 -p tcp --dport 5432 -j ACCEPT iptables -A FORWARD -s 192.168.10.5 -d 192.168.3.2 -p tcp --sport 5432 -j ACCEPT ## permitimos abrir el Terminal server de la DMZ desde la LAN iptables -A FORWARD -s 192.168.10.0/24 -d 192.168.3.2 -p tcp --sport 1024:65535 --dport 3389 -j ACCEPT # hay que hacerlo en uno y otro sentido iptables -A FORWARD -s 192.168.3.2 -d 192.168.10.0/24 1024:65535 -j ACCEPT

-p

tcp

--sport

3389

--dport

# por que luego: # Cerramos el acceso de la DMZ a la LAN iptables -A FORWARD -s 192.168.3.0/24 -d 192.168.10.0/24 -j DROP ## Cerramos el acceso de la DMZ al propio firewall iptables -A INPUT -s 192.168.3.0/24 -i eth2 -j DROP ## Y ahora cerramos los accesos indeseados del exterior: # Nota: 0.0.0.0/0 significa: cualquier red # Cerramos el rango de puerto bien conocido 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 # Cerramos un puerto de gestin: webmin iptables -A INPUT -s 0.0.0.0/0 -p tcp -dport 10000 -j DROP echo " OK . Verifique que lo que se aplica con: iptables -L n " # Fin del script

Si las mquinas de la DMZ tienen una IP pblica hay que tener muchsimo cuidado de no permitir el FORWARD por defecto. Si en la DMZ hay IP pblica NO ES NECESARIO HACER REDIRECCIONES de puerto, sino que basta con rutar los paquetes para llegar hasta la DMZ. Este tipo de necesidades surgen cuando por ejemplo tenemos dos mquinas con servidor web (un Apache y un IIS); A cul de las dos le redirigimos el puerto 80? No hay manera de saberlo (con servidores virtuales tampoco), por eso se deben asignar IPs pblicas o en su defecto usar puertos distintos. Por tanto hay que proteger convenientemente toda la DMZ. Tampoco hara falta enmascarar la salida hacia el exterior de la DMZ, si tiene una IP pblica ya tiene una pata puesta en internet; obviamente hay que decirle al router como llegar hasta esa IP pblica. As podra ser esta red:

Pgina 17

Figura 8: Esquema de firewall entre red local e internet con zona DMZ para servidores expuestos usando IPs pblicas Y este podra ser el script para un firewall adecuado:
#!/bin/sh ## SCRIPT de IPTABLES - ejemplo del manual de iptables ## Ejemplo de script para firewall entre red-local e internet con DMZ ## pero con IPs pblicas. echo -n Aplicando Reglas de Firewall... ## FLUSH iptables iptables iptables iptables de reglas F X Z -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: eth0 es el interfaz conectado al router y eth1 a la LAN # El localhost se deja (por ejemplo conexiones locales a mysql) /sbin/iptables -A INPUT -i lo -j ACCEPT # Al firewall tenemos acceso desde la red local iptables -A INPUT -s 192.168.10.0/24 -i eth1 -j ACCEPT # Ahora hacemos enmascaramiento de la red local y de la DMZ para que puedan # salir haca fuera y activamos el BIT DE FORWARDING (imprescindible!!!!!) iptables -t nat -A POSTROUTING -s 192.168.10.0/24 -o eth0 -j MASQUERADE # Con esto permitimos hacer forward de paquetes en el firewall, o sea # que otras mquinas puedan salir a traves del firewall. echo 1 > /proc/sys/net/ipv4/ip_forward ## Permitimos el acceso desde el exterior a los puertos 80 y 443 de DMZ iptables -A FORWARD -d 212.194.89.152 -p tcp -dport 80 -j ACCEPT

Pgina 18

iptables -A FORWARD -d 212.194.89.152 -p tcp -dport 443 -j ACCEPT iptables -A FORWARD -d 212.194.89.150/30 -j DROP ## Permitimos el paso de la DMZ a una BBDD de la LAN: iptables -A FORWARD -s 212.194.89.152 -d 192.168.10.5 -p tcp --dport 5432 -j ACCEPT # en el otro sentido lo mismo iptables -A FORWARD -s 192.168.10.5 -d 212.194.89.152 -p tcp --sport 5432 -j ACCEPT ## permitimos abrir el Terminal server de la DMZ desde la LAN iptables -A FORWARD -s 192.168.10.0/24 -d 212.194.89.152 -p tcp --sport 1024:65535 -dport 3389 -j ACCEPT # hay que hacerlo en uno y otro sentido iptables -A FORWARD -s 212.194.89.152 -d 192.168.10.0/24 -p tcp --sport 3389 --dport 1024:65535 -j ACCEPT # por que luego: # Cerramos el acceso de la DMZ a la LAN iptables -A FORWARD -s 212.194.89.152 -d 192.168.10.0/24 -j DROP ## Cerramos el acceso de la DMZ al propio firewall iptables -A INPUT -s 212.194.89.152 -i eth2 -j DROP ## Y ahora cerramos los accesos indeseados del exterior: # Cerramos el rango de puerto bien conocido 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 # Cerramos un puerto de gestin: webmin iptables -A INPUT -s 0.0.0.0/0 -p tcp -dport 10000 -j DROP echo " OK . Verifique que lo que se aplica con: iptables -L -n" # Fin del script

Por qu hay que explicitar la abertura en uno y otro sentido? Porque la tercera regla cierra todo lo que va de la DMZ a la red local. Para abrir el puerto 3389 de TCP es imprescindible que un paquete de ida sea capaz de llegar hasta la DMZ y que a su vez pueda volver a la LAN. Esto de tener que especificar la abertura en uno y otro sentido ser el pan de cada da en un iptables con poltica DROP por defecto: mejor proteccin pero ms trabajo. Por qu se explicita el puerto de origen/destino 1024:65535 en la primera y segunda regla? Imaginemos que un hacker logra acceso a la mquina de la DMZ. Si no especificamos el puerto de destino en esas dos reglas, el hacker puede abrir CUALQUIER puerto de la LAN siempre que pueda establecer como puerto origen suyo el TCP/3389, cosa fcil para un hacker que sepa algo de C o que tenga el programa pertinente a mano. De todas formas el hacker tendra que saber que existe ese tipo de reglas, si es listo probara con puertos de gestin o con puertos NetBios. El problema es que se deja un vnculo con la LAN bien para administrarlo remotamente o para establecer relaciones de confianza y ah es donde reside el peligro. En las conexiones "legales" no se usa como puerto origen nada por debajo del 1024; cuando alguien se conecta a otro puerto en su extremo abre un puerto por encima del 1024. Especificndolo en la regla de firewall protegeremos un poco mejor la LAN, aunque los puertos por encima de 1024 estarn en peligro.

Firewall puro y duro entre redes


En este caso olvidmonos de redes locales y de NAT. Aqu solo tendremos reglas de filtrado INPUT y FORWARD. Pongamos que tenemos el siguiente escenario:

Pgina 19

Figura 9: Esquema de firewall entre redes, en la que solo se filtra y no se hace NAT En el firewall debemos indicar una serie de reglas para proteger los equipos que estn al otro lado de este dispositivo, todos ellos de la red 211.34.149.0/24. Cada uno de ellos da un servicio determinado, y puede estar gestionado desde distintas IPs, lo que significa que habr que dar acceso a determinados puertos de gestin (22, 3389, etc.). Este podra ser el aspecto del script del firewall:
#!/bin/sh ## SCRIPT de IPTABLES - ejemplo del manual de iptables ## Ejemplo de script para firewall entre redes. echo -n Aplicando Reglas de Firewall... ## FLUSH iptables iptables iptables iptables de reglas -F -X -Z -t nat F

## Establecemos politica por defecto iptables -P INPUT ACCEPT iptables -P OUTPUT ACCEPT iptables -P FORWARD ACCEPT ## Empezamos a filtrar ## Nota: eth0 es el interfaz conectado al router y eth1 a la LAN # A nuestro firewall tenemos acceso total desde la nuestra IP iptables -A INPUT -s 210.195.55.15 -j ACCEPT # Para el resto no hay acceso al firewall iptables -A INPUT -s 0.0.0.0/0 -j DROP

Pgina 20

## Ahora podemos ir metiendo las reglas para cada servidor ## Como sern paquetes con destino a otras mquinas se aplica FORWARD ## Servidor WEB 211.34.149.2 # Acceso a puerto 80 iptables -A FORWARD -d 211.34.149.2 -p tcp --dport 80 -j ACCEPT # Acceso a nuestra ip para gestionarlo iptables -A FORWARD -s 210.195.55.15 -d 211.34.149.2 -p tcp --dport 22 -j ACCEPT # El resto, cerrar iptables -A FORWARD -d 211.34.149.2 -j DROP ## Servidor MAIL 211.34.149.3 # Acceso a puerto 25, 110 y 143 iptables -A FORWARD -d 211.34.149.3 -p tcp --dport 25 -j ACCEPT iptables -A FORWARD -d 211.34.149.3 -p tcp --dport 110 -j ACCEPT iptables -A FORWARD -d 211.34.149.3 -p tcp --dport 143 -j ACCEPT # Acceso a gestion SNMP iptables -A FORWARD -s 210.195.55.15 -d 211.34.149.3 -p udp --dport 169 -j ACCEPT # Acceso a nuestra ip para gestionarlo iptables -A FORWARD -s 210.195.55.15 -d 211.34.149.3 -p tcp --dport 22 -j ACCEPT # El resto, cerrar iptables -A FORWARD -d 211.34.149.3 -j DROP ## Servidor IRC 211.34.149.4 # Acceso a puertos IRC iptables -A FORWARD -d 211.34.149.4 -p tcp --dport 6666:6668 -j ACCEPT # Acceso a nuestra ip para gestionarlo iptables -A FORWARD -s 210.195.55.15 -d 211.34.149.4 -p tcp --dport 22 -j ACCEPT # El resto, cerrar iptables -A FORWARD -d 211.34.149.4 -j DROP ## Servidor NEWS 211.34.149.5 # Acceso a puerto news iptables -A FORWARD -d 211.34.149.5 -p tcp --dport news -j ACCEPT # Acceso a nuestra ip para gestionarlo iptables -A FORWARD -s 213.194.68.115 -d 211.34.149.5 -p tcp --dport 22 -j ACCEPT # El resto, cerrar iptables -A FORWARD -d 211.34.149.5 -j DROP ## Servidor B2B 211.34.149.6 # Acceso a puerto 443 iptables -A FORWARD -d 211.34.149.6 -p tcp --dport 443 -j ACCEPT # Acceso a una ip para gestionarlo iptables -A FORWARD -s 81.34.129.56 -d 211.34.149.6 -p tcp --dport 3389 -j ACCEPT # El resto, cerrar iptables -A FORWARD -d 211.34.149.6 -j DROP ## Servidor CITRIX 211.34.149.7 # Acceso a puerto 1494 iptables -A FORWARD -d 211.34.149.7 -p tcp --dport 1494 -j ACCEPT

Pgina 21

# Acceso a una ip para gestionarlo iptables -A FORWARD -s 195.55.234.2 -d 211.34.149.7 -p tcp --dport 3389 -j ACCEPT # acceso a otro puerto quiza de BBDD iptables -A FORWARD -s 195.55.234.2 -d 211.34.149.7 -p tcp --dport 1434 -j ACCEPT iptables -A FORWARD -s 195.55.234.2 -d 211.34.149.7 -p udp --dport 1433 -j ACCEPT # El resto, cerrar iptables -A FORWARD -d 211.34.149.7 -j DROP echo " OK . Verifique que lo que se aplica con: iptables -L -n" # Fin del script

Con esta firewall y sobretodo gracias a las reglas de DROP que metemos tras especificar lo que dejamos abiertos, protegeremos de manera eficaz todos lo puertos abiertos de las mquinas.

Firewall con poltica por defecto DROP


Qu supone el hecho de establecer como poltica por defecto la denegacin? Se debe explicitar cada conexin permitida en los dos sentidos. Se debe conocer perfectamente qu debe estar abierto y qu no. Es mucho ms difcil de mantener y si se hace conviene hacerlo desde el principio. No todo es ms trabajo: tambin supone un firewall mucho ms seguro. En el ejemplo de la DMZ ya se presentaba esta situacin en las reglas forward de una a otra red. Para ilustrar el DROP por defecto, vamos a mostrar la configuracin del ejemplo anterior de firewall entre redes pero con poltica por defecto DROP.
#!/bin/sh ## SCRIPT de IPTABLES - ejemplo del manual de iptables ## Ejemplo de script para firewall entre redes con DROP por defecto echo -n Aplicando Reglas de Firewall... ## FLUSH iptables iptables iptables iptables de reglas -F -X -Z -t nat F

## Establecemos politica por defecto: DROP!!! iptables -P INPUT DROP iptables -P OUTPUT DROP iptables -P FORWARD DROP ## Empezamos a filtrar ## Nota: eth0 es el interfaz conectado al router y eth1 a la LAN # A nuestro firewall tenemos acceso total desde la nuestra IP iptables -A INPUT -s 210.195.55.15 -j ACCEPT iptables -A OUTPUT -d 210.195.55.15 -j ACCEPT # Para el resto no hay acceso al firewall # En principio esta de ms, pero si rebajamos los permisos temporalmente # nos cubre las espaldas iptables -A INPUT -s 0.0.0.0/0 -j DROP ## Ahora podemos ir metiendo las reglas para cada servidor ## Como sern paquetes con destino a otras mquinas se aplica FORWARD ## Servidor WEB 211.34.149.2 # Acceso a puerto 80 iptables -A FORWARD -d 211.34.149.2 -p tcp --dport 80 -j ACCEPT iptables -A FORWARD -s 211.34.149.2 -p tcp --sport 80 -j ACCEPT

Pgina 22

# Acceso a nuestra ip para gestionarlo iptables -A FORWARD -s 210.195.55.15 -d 211.34.149.2 -p tcp --dport 22 -j ACCEPT iptables -A FORWARD -s 211.34.149.2 -d 210.195.55.15 -p tcp --sport 22 -j ACCEPT ## Servidor MAIL 211.34.149.3 # Acceso a puerto 25, 110 y 143 iptables -A FORWARD -d 211.34.149.3 iptables -A FORWARD -s 211.34.149.3 iptables -A FORWARD -d 211.34.149.3 iptables -A FORWARD -s 211.34.149.3 iptables -A FORWARD -d 211.34.149.3 iptables -A FORWARD -s 211.34.149.3

-p -p -p -p -p -p

tcp tcp tcp tcp tcp tcp

--dport --sport --dport --sport --dport --sport

25 -j ACCEPT 25 -j ACCEPT 110 -j ACCEPT 110 -j ACCEPT 143 -j ACCEPT 143 -j ACCEPT

# Acceso a gestion SNMP iptables -A FORWARD -s 210.195.55.15 -d 211.34.149.3 -p udp --dport 169 -j ACCEPT iptables -A FORWARD -s 211.34.149.3 -d 210.195.55.15 -p udp --sport 169 -j ACCEPT # Acceso a nuestra ip para gestionarlo iptables -A FORWARD -s 210.195.55.15 -d 211.34.149.3 -p tcp --dport 22 -j ACCEPT iptables -A FORWARD -s 211.34.149.3 -d 210.195.55.15 -p tcp --sport 22 -j ACCEPT ## Servidor IRC 211.34.149.4 # Acceso a puertos IRC iptables -A FORWARD -d 211.34.149.4 -p tcp --dport 6666:6668 -j ACCEPT iptables -A FORWARD -s 211.34.149.4 -p tcp --sport 6666:6668 -j ACCEPT # Acceso a nuestra ip para gestionarlo iptables -A FORWARD -s 210.195.55.15 -d 211.34.149.4 -p tcp --dport 22 -j ACCEPT iptables -A FORWARD -s 211.34.149.4 -d 210.195.55.15 -p tcp --sport 22 -j ACCEPT ## Servidor NEWS 211.34.149.5 # Acceso a puerto news iptables -A FORWARD -d 211.34.149.5 -p tcp --dport news -j ACCEPT iptables -A FORWARD -s 211.34.149.5 -p tcp --sport news -j ACCEPT # Acceso a nuestra ip para gestionarlo iptables -A FORWARD -s 213.194.68.115 -d 211.34.149.5 -p tcp --dport 22 -j ACCEPT iptables -A FORWARD -s 211.34.149.5 -d 213.194.68.115 -p tcp --sport 22 -j ACCEPT # El resto, cerrar iptables -A FORWARD -d 211.34.149.5 -j DROP ## Servidor B2B 211.34.149.6 # Acceso a puerto 443 iptables -A FORWARD -d 211.34.149.6 -p tcp --dport 443 -j ACCEPT iptables -A FORWARD -s 211.34.149.6 -p tcp --sport 443 -j ACCEPT # Acceso a una ip para gestionarlo iptables -A FORWARD -s 81.34.129.56 -d 211.34.149.6 -p tcp --dport 3389 -j ACCEPT iptables -A FORWARD -s 211.34.149.6 -d 81.34.129.56 -p tcp --sport 3389 -j ACCEPT ## Servidor CITRIX 211.34.149.7 # Acceso a puerto 1494 iptables -A FORWARD -d 211.34.149.7 -p tcp --dport 1494 -j ACCEPT iptables -A FORWARD -s 211.34.149.7 -p tcp --sport 1494 -j ACCEPT # Acceso a una ip para gestionarlo iptables -A FORWARD -s 195.55.234.2 -d 211.34.149.7 -p tcp --dport 3389 -j ACCEPT iptables -A FORWARD -s 211.34.149.7 -d 195.55.234.2 -p tcp --sport 3389 -j ACCEPT # acceso a otro puerto quiza de BBDD iptables -A FORWARD -s 195.55.234.2 -d 211.34.149.7 -p tcp --dport 1434 -j ACCEPT

Pgina 23

iptables -A FORWARD -s 211.34.149.7 -d 195.55.234.2 -p tcp --sport 1434 -j ACCEPT # acceso a otro puerto quiza de BBDD iptables -A FORWARD -s 195.55.234.2 -d 211.34.149.7 -p udp --dport 1433 -j ACCEPT iptables -A FORWARD -s 211.34.149.7 -d 195.55.234.2 -p udp --sport 1433 -j ACCEPT echo " OK . Verifique que lo que se aplica con: iptables -L -n" # Fin del script

Ya esta, hemos levantado un verdadero muro entre internet y el conjunto de servidores que esta tras el firewall. No se puede ni hacer un ping a las mquinas, salvo que se haya dado acceso total a una IP. Si quisieramos dar acceso al ping, pondramos algo as: Es ms llevadero aplicar el DROP por defecto cuando el firewall es para la propia mquina. El primer escenario de esta manual trataba sobre este caso.

Depurar el funcionamiento del firewall


Programas tiles: iptraf Sin duda alguna uno de los programas ms prcticos para depurar el firewall es iptables, ya que con el podemos observar si la conexiones se establecen o no; es un programa de consola que es aconsejable controlar ya que muestra en tiempo real el trfico que atraviesa nuestra mquina con todo lujo de detalles: origen/destino de IPs y puertos, trfico total o trfico total segn la interfaz de red, etc Si vemos muchas conexiones simultneas y nos perdemos, existe la posibilidad de aplicar filtros para captar slo aquello que nos interesa. nmap La herramienta para escanear puertos por excelencia. Es una herramienta de consola rpida, efectiva y con multitud de opciones. Podemos usarla desde mquinas ajenas a nuestra red para comprobar si realmente el firewall esta filtrando correctamente y en cierta manera para hacernos una idea de que "visin" pueden tener los hackers de nuestro sistema. shell En el propio script del firewall podemos aadir algunas opciones para descubrir fallos de sintaxis en las reglas. Claro, imaginemos que tenemos un firewall de 40 lneas y una de ellas falla cuando ejecutamos el script. Cul es? Es probable que el mensaje de error no aclare lo suficiente, por eso se puede aadir algo as al final de cada regla:
... iptables -A INPUT -s 195.55.234.2 -j ACCEPT && echo " regla-21 ok" iptables -A INPUT -s 213.62.89.145 -j ACCEPT && echo " regla-22 ok" ...

Si la regla se ejecuta bien mostrar el mensajito de ok. Otra opcin sera ir eliminando o comentando reglas hasta dar con la regla que tiene la sintaxis incorrecta. Cabe resear que puede fallar una regla, pero a partir de ella el resto se ejecutan con normalidad.

Pgina 24

Captulo 2
Introduccin a Squid
Squid es el software para servidor Proxy ms popular y extendido entre los sistemas operativos basados sobre UNIX. Es muy confiable, robusto y verstil. Al ser software libre, adems de estar disponible el cdigo fuente, est libre del pago de costosas licencias por uso o con restriccin a un uso con determinado nmero de usuarios. Entre otras cosas, Squid puede hacer Proxy y cache con los protocolos HTTP, FTP, GOPHER y WAIS, Proxy de SSL, cache transparente, WWCP, aceleracin HTTP, cache de consultas DNS y otras muchas ms como filtracin de contenido y control de acceso por IP y por usuario.

Software necesario
Para poder llevar a cabo los procedimientos descritos en este captulo y documentos relacionados, usted necesitar tener instalado al menos lo siguiente:
squid-2.4.STABLE1 iptables-1.2.4 kernel-2.4.18-24

Todos los parches de seguridad disponibles para la versin de Red Hat que est utilizando.

Tmese en consideracin que, de ser posible, se debe utilizar siempre las versiones estables ms recientes de todo el software que vaya a instalar al realizar los procedimientos descritos en este captulo, a fin de contar con los parches de seguridad necesarios. Ninguna versin de Squid anterior a la 2.4.STABLE1 se considera como apropiada debido a fallas de seguridad de gran importancia, y ningn administrador competente utilizara una versin inferior a la 2.4.STABLE1. Por favor visite el sito Web de su distribucin predilecta para estar al tanto de cualquier aviso de actualizaciones de seguridad. Para Red Hat Linux 7.2, 7.3, 8.0 y 9 hay paquetera de actualizacin en los siguientes enlaces: ftp://updates.redhat.com/7.2/en/os/i386/, si su distribucin est basada en Red Hat 7.2 ftp://updates.redhat.com/7.3/en/os/i386/, si su distribucin est basada en Red Hat 7.3 ftp://updates.redhat.com/8.0/en/os/i386/, si su distribucin est basada en Red Hat 8.0 ftp://updates.redhat.com/9/en/os/i386/, si su distribucin est basada en Red Hat 9

Instalacin del software necesario.


Regularmente Squid no se instala de manera predeterminada a menos que especifique o contrario durante la instalacin del sistema operativo, sin embargo viene incluido en casi todas las distribuciones actuales. El procedimiento de instalacin es exactamente el mismo que con cualquier otro software:
mount /mnt/cdrom/ rpm -Uvh /mnt/cdrom/*/RPMS/squid-*.i386.rpm eject

Iptables se utilizar para generar las reglas necesarias para el guin de Enmascaramiento de IP. Se instala por defecto en todas las distribuciones actuales que utilicen kernel-2.4.

Pgina 25

Nota Es importante tener actualizado el kernel por diversas cuestiones de seguridad. No es recomendable utilizar versiones del kernel anteriores a la 2.4.18. Para referencia de cmo instalar paquetes RPM, y cmo actualizar el kernel, vea el LOC 1-2-3, Captulos 4 y 5.

Antes de continuar
Tenga en cuenta que este manual ha sido comprobado varias veces y ha funcionado en todos los casos y si algo no funciona solo significa que usted no lo ley a detalle y no sigui correctamente las indicaciones. Evite dejar espacios vacos en lugares indebidos. El siguiente es un ejemplo de como no debe des-comentarse un parmetro.
# Opcin incorrectamente des-comentada http_access 3128

El siguiente es un ejemplo de como si debe des-comentarse un parmetro.


# Opcin correctamente des-comentada http_access 3128

Configuracin bsica.
Squid utiliza el fichero de configuracin localizado en /etc/squid/squid.conf, y podr trabajar sobre este utilizando su editor de texto preferido. Existen un gran nmero de parmetros, de los cuales recomendamos configurar los siguientes:
http_port cache_mem cache_dir ftp_user ftp_passive Al menos una Lista de Control de Acceso Al menos una Regla de Control de Acceso httpd_accel_host httpd_accel_port httpd_accel_with_proxy

Que puerto utilizar para Squid? Parmetro http_port


Squid por defecto utilizar el puerto 3128 para atender peticiones, sin embargo se puede especificar que lo haga en cualquier otro puerto o bien que lo haga en varios puertos a la vez. En el caso de un Proxy Transparente, regularmente se utilizar el puerto 80 y se valdr del re-direccionamiento de peticiones de modo tal que no habr necesidad alguna de modificar la configuracin de los navegadores Web para utilizar el servidor Proxy. Bastar con utilizar como puerta de enlace al servidor. Es importante recordar que los servidores Web, como Apache, tambin utilizan dicho puerto, por lo que ser necesario reconfigurar el servidor Web para utiliza otro puerto disponible, o bien desinstalar o deshabilitar el servidor Web. Hoy en da ya no es del todo prctico el utilizar un Proxy Transparente, a menos que se trate de un servicio de Cyber-Caf u oficina pequea, siendo que uno de los principales problemas con los que lidian los administradores es el mal uso y/o abuso del acceso a Internet por parte del personal. Es por esto que puede resultar ms conveniente configurar un servidor Proxy con restricciones por contrasea, lo cual no puede hacerse con un Proxy Transparente, debido a que se requiere un dilogo de nombre de usuario y contrasea. Regularmente algunos programas utilizados comnmente por los usuarios suelen traer por defecto el puerto 8080 -servicio de cacheo WWW- para utilizarse al configurar que servidor proxy utilizar. Si queremos aprovechar esto en nuestro favor y

Pgina 26

ahorrarnos el tener que dar explicaciones innecesarias al usuario, podemos especificar que Squid escuche peticiones en dicho puerto tambin. Siendo as localice la seccin de definicin de http_port, y especifique:
# You may specify multiple socket addresses on multiple lines. # Default: http_port 3128 http_port 3128 http_port 8080

Si desea incrementar la seguridad, puede vincularse el servicio a una IP que slo se pueda acceder desde la red local. Considerando que el servidor utilizado posee una IP 192.168.1.254, puede hacerse lo siguiente:
#You may specify multiple socket addresses on multiple lines. # Default: http_port 3128 http_port 192.168.1.254:3128 http_port 192.168.1.254:8080

Cunta memoria utilizar? Parmetro cache_mem


El parmetro cache_mem establece la cantidad ideal de memoria para lo siguiente: Objetos en trnsito. Objetos Hot. Objetos negativamente almacenados en el cach. Los datos de estos objetos se almacenan en bloques de 4 Kb. El parmetro cache_mem especifica un lmite mximo en el tamao total de bloques acomodados, donde los objetos en trnsito tienen mayor prioridad. Sin embargo los objetos Hot y aquellos negativamente almacenados en el cach podrn utilizar la memoria no utilizada hasta que esta sea requerida. De ser necesario, si un objeto en trnsito es mayor a la cantidad de memoria especificada, Squid exceder lo que sea necesario para satisfacer la peticin. Por defecto se establecen 8 MB. Puede especificarse una cantidad mayor si as se considera necesario, dependiendo esto de los hbitos de los usuarios o necesidades establecidas por el administrador. Si se posee un servidor con al menos 128 MB de RAM, establezca 16 MB como valor para este parmetro:
cache_mem 16 MB

Cuanto desea almacenar de Internet en el disco duro? Parmetro cache_dir


Este parmetro se utiliza para establecer que tamao se desea que tenga el cache en el disco duro para Squid. Para entender esto un poco mejor, responda a esta pregunta: Cunto desea almacenar de Internet en el disco duro? Por defecto Squid utilizar un cache de 100 MB, de modo tal que encontrar la siguiente lnea:
cache_dir ufs /var/spool/squid 100 16 256

Se puede incrementar el tamao del cache hasta donde lo desee el administrador. Mientras ms grande el cache, ms objetos de almacenarn en ste y por lo tanto se utilizar menos el ancho de banda. La siguiente lnea establece un cache de 700 MB:
cache_dir ufs /var/spool/squid 700 16 256

Los nmeros 16 y 256 significan que el directorio del cache contendr 16 subdirectorios con 256 niveles cada uno. No modifique esto nmeros, no hay necesidad de hacerlo. Nota Es muy importante considerar que si se especifica un determinado tamao de cache y este excede al espacio real disponible en el disco duro, Squid se bloquear inevitablemente. Sea cauteloso con el tamao de cache especificado.

Pgina 27

Aviso de problemas con la cache - Parmetro cache_mgr.


Por defecto, si algo ocurre con el Cache, como por ejemplo que muera el proceso, se enviar un mensaje de aviso a la cuenta webmaster del servidor. Puede especificarse una distinta si acaso se considera conveniente.
cache_mgr su_nombre@su-dominio.net

Acceso FTP annimo a Servidores - Parmetro ftp_user


Al acceder a un servidor FTP de manera annima, por defecto Squid enviar como contrasea Squid@. Si se desea que el acceso annimo a los servidores FTP sea ms informativo, o bien si se desea acceder a servidores FTP que validan la autenticidad de la direccin de correo especificada como contrasea, puede especificarse la direccin de correo electrnico que uno considere pertinente.
ftp_user proxy@su-dominio.net

Acceso FTP pasivo a traves de un Firewall - Parmetro ftp_passive


Si se tiene un muro contrafuegos que no permite acceder a servidores FTP ms que de modo pasivo, debe habilitarse ftp_passive con el valor on.
ftp_passive on

Control de acceso
Es necesario establecer Listas de Control de Acceso que definan una red o bien ciertas maquinas en particular. A cada lista se le asignar una Regla de Control de Acceso que permitir o denegar el acceso a Squid. Procedamos a entender como definir unas y otras.

Control de acceso - Listas


Regularmente una lista de control de acceso se establece siguiendo la siguiente sintaxis:
acl [nombre de la lista] src [lo que compone a la lista]

Si uno desea establecer una lista de control de acceso que defina sin mayor trabajo adicional a toda la red local definiendo la IP que corresponde a la red y la mscara de la sub-red. Por ejemplo, si se tienen una red donde las mquinas tienen direcciones IP 192.168.1.n con mscara de sub-red 255.255.255.0, podemos utilizar lo siguiente:
acl miredlocal src 192.168.1.0/255.255.255.0

Tambin puede definirse una Lista de Control de Acceso invocando un fichero localizado en cualquier parte del disco duro, y en el cual se en cuenta una lista de direcciones IP. Ejemplo:
acl permitidos src "/etc/squid/permitidos"

El fichero /etc/squid/permitidos contendra algo como siguiente:


192.168.1.1 192.168.1.2 192.168.1.3 192.168.1.15 192.168.1.16 192.168.1.20 192.168.1.40

Lo anterior estara definiendo que la Lista de Control de Acceso denominada permitidos estara compuesta por las direcciones IP incluidas en el fichero /etc/squid/permitidos.

Pgina 28

Control de acceso - Reglas


Estas definen si se permite o no el acceso a Squid. Se aplican a las Listas de Control de Acceso. Deben colocarse en la seccin de reglas de control de acceso definidas por el administrador, es decir, a partir de donde se localiza la siguiente leyenda:
# INSERT YOUR OWN RULE(S) HERE TO ALLOW ACCESS FROM YOUR CLIENTS

La sintaxis bsica es la siguiente:


http_access [deny o allow] [lista de control de acceso]

En el siguiente ejemplo consideramos una regla que establece acceso permitido a Squid a la Lista de Control de Acceso denominada permitidos:
http_access allow permitidos

Tambin pueden definirse reglas valindose de la expresin !, la cual significa excepcin. Pueden definirse, por ejemplo, dos listas de control de acceso, una denominada lista1 y otra denominada lista2, en la misma regla de control de acceso, en donde se asigna una expresin a una de estas. La siguiente establece que se permite el acceso a Squid a lo que comprenda lista1 excepto aquello que comprenda lista2:
http_access allow lista1 !lista2

Este tipo de reglas son tiles cuando se tiene un gran grupo de IP dentro de un rango de red al que se debe permitir acceso, y otro grupo dentro de la misma red al que se debe denegar el acceso.

Aplicando Listas y Reglas de control de acceso.


Una vez comprendido el funcionamiento de la Listas y las Reglas de Control de Acceso, procederemos a determinar cuales utilizar para nuestra configuracin. Caso 1 Considerando como ejemplo que se dispone de una red 192.168.1.0/255.255.255.0, si se desea definir toda la red local, utilizaremos la siguiente lnea en la seccin de Listas de Control de Acceso:
acl todalared src 192.168.1.0/255.255.255.0

Habiendo hecho lo anterior, la seccin de listas de control de acceso debe quedar ms o menos del siguiente modo:
# Recommended minimum configuration: acl all src 0.0.0.0/0.0.0.0 acl manager proto cache_object acl localhost src 127.0.0.1/255.255.255.255 acl todalared src 192.168.1.0/255.255.255.0

A continuacin procedemos a aplicar la regla de control de acceso:


http_access allow todalared

Habiendo hecho lo anterior, la zona de reglas de control de acceso debera quedar ms o menos de este modo:
# INSERT YOUR OWN RULE(S) HERE TO ALLOW ACCESS FROM YOUR CLIENTS # http_access allow localhost http_access allow todalared http_access deny all

Pgina 29

La regla http_access allow todalared permite el acceso a Squid a la Lista de Control de Acceso denominada todalared, la cual est conformada por 192.168.1.0/255.255.255.0. Esto significa que cualquier mquina desde 192.168.1.1 hasta 192.168.1.254 podr acceder a Squid. Caso 2 Si solo se desea permitir el acceso a Squid a ciertas direcciones IP de la red local, deberemos crear un fichero que contenga dicha lista. Genere el fichero /etc/squid/lista, dentro del cual se incluirn solo aquellas direcciones IP que desea confirmen la Lista de Control de acceso. Ejemplo:
192.168.1.1 192.168.1.2 192.168.1.3 192.168.1.15 192.168.1.16 192.168.1.20 192.168.1.40

Denominaremos a esta lista de control de acceso como redlocal:


acl redlocal src "/etc/squid/lista"

Habiendo hecho lo anterior, la seccin de listas de control de acceso debe quedar ms o menos del siguiente modo:
# Recommended minimum configuration: acl all src 0.0.0.0/0.0.0.0 acl manager proto cache_object acl localhost src 127.0.0.1/255.255.255.255 acl redlocal src "/etc/squid/lista"

A continuacin procedemos a aplicar la regla de control de acceso:


http_access allow redlocal

Habiendo hecho lo anterior, la zona de reglas de control de acceso debera quedar ms o menos de este modo:
# INSERT YOUR OWN RULE(S) HERE TO ALLOW ACCESS FROM YOUR CLIENTS # http_access allow localhost http_access allow redlocal http_access deny all

La regla http_access allow redlocal permite el acceso a Squid a la Lista de Control de Acceso denominada redlocal, la cual est conformada por las direcciones IP especificadas en el fichero /etc/squid/lista. sto significa que cualquier mquina no incluida en /etc/squid/lista no tendr acceso a Squid.

Cache con aceleracin.


Cuando un usuario hace peticin hacia un objeto en Internet, este es almacenado en el cache de Squid. Si otro usuario hace peticin hacia el mismo objeto, y este no ha sufrido modificacin alguna desde que lo accedi el usuario anterior, Squid mostrar el que ya se encuentra en el cache en lugar de volver a descargarlo desde Internet. Esta funcin permite navegar rpidamente cuando los objetos ya estn en el cache de Squid y adems optimiza enormemente la utilizacin del ancho de banda. En la seccin HTTPD-ACCELERATOR OPTIONS deben habilitarse los siguientes parmetros:
httpd_accel_host virtual httpd_accel_port 0 httpd_accel_with_proxy on

Pgina 30

Si se trata de un Proxy transparente deben utilizarse con las siguientes opciones, considerando que se har uso del cache de un servidor web (Apache) como auxiliar:
# Debe especificarse la IP de cualquier servidor Web en la red local # o bien virtual httpd_accel_host virtual httpd_accel_port 80 httpd_accel_with_proxy on httpd_accel_uses_host_header on

La configuracin de Squid como proxy trasparente solo requiere complementarse utilizando una regla de iptables que se encargar de redireccionar peticiones hacindolas pasar por el puerto 8080.
/sbin/iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j REDIRECT --to-port 8080

Por defecto el parmetro httpd_accel_with_proxy viene con el valor off, es importante no olvidar cambiar este valor por on.

Estableciendo el idioma por defecto.


Squid incluye traduccin a distintos idiomas de las distintas pginas de error e informativas que son desplegadas en un momento dado. Dichas traducciones se pueden encontrar en /usr/lib/squid/errors/. Para poder hacer uso de las pginas de error traducidas al espaol, es necesario cambiar un enlace simblico localizado en /etc/squid/errors para que apunte hacia /usr/lib/squid/errors/Spanish en lugar de hacerlo hacia /usr/lib/squid/errors/English. Elimine primero el enlace simblico actual:
rm -f /etc/squid/errors

Coloque un nuevo enlace simblico apuntando hacia el directorio con los ficheros correspondientes a los errores traducidos al espaol. Para RedHat 7.x y 8.0
ln -s /usr/lib/squid/errors/Spanish /etc/squid/errors

Para RedHat 7.x y 8.0


ln -s /usr/share/squid/errors/Spanish /etc/squid/errors

Iniciando, reiniciando y aadiendo el servicio al arranque del sistema.


Una vez terminada la configuracin, ejecute el siguiente comando para iniciar por primera vez Squid:
/etc/rc.d/init.d/squid start service squid start

Si necesita reiniciar para probar cambios hechos en la configuracin, ejecute lo siguiente:


/etc/rc.d/init.d/squid restart service squid restart

Si desea que Squid inicie de manera automtica la prxima vez que inicie el sistema, ejecute lo siguiente:
/sbin/chkconfig --level 345 squid on

Lo anterior habilitar a Squid en los niveles de corrida 3, 4 y 5.

Pgina 31

Cuidado Usted NO tiene porque editar cosa alguna en /etc/rc.d/rc.local o /etc/inittab para que Squid -as como cualquier otro servicio- inicie en el arranque del sistema.

Ajustes para el Firewall o script de Enmascaramiento de IP.


A continuacin comentaremos algunos ajustes que pueden aadirse o editarse en el script del firewall, como el generado por herramientas como Firestarer (http://firestarter.sourceforge.net), o bien un simple script de Enmascaramiento de IP. Sugerimos utilizar Firestarer debido a que permite configurar tanto el enmascaramiento de IP como el firewall y la importancia que tiene la presencia de ste ltimo en un servidor que sirve como puerta de enlace para la red local.

Use Iptables en lugar de ipchains.


Desde el kernel 2.4, GNU/Linux utiliza Netfilter, el cual se configura a travs de iptables. La sintaxis cambia con respecto a ipchains, y a fin de permitir a los administradores darse tiempo de adaptarse, distribuciones como Red Hat incluyeron soporte para ipchains a manera de aplicacin de legado. Pudiendo utilizarse iptables no tiene sentido mantener instalado ipchains, que an es utilizado por defecto en Red Hat Linux 7.1 y 7.2. Se recomienda desinstalar ipchains y los paquetes que dependan de este. Es importante utilizar la ms reciente versin de iptables para la distribucin utilizada. Ninguna versin de iptables anterior a la 1.2.4 se considera como apropiada debido a fallas de seguridad de gran importancia, y ningn administrador competente utilizara una versin inferior a la 1.2.4. Por favor visite el sito Web de su distribucin predilecta para estar al tanto de cualquier aviso de actualizaciones de seguridad. Ejemplo: para Red Hat Linux 7.2, 7.3. 8.0 y 9 hay paquetes de actualizacin en los siguientes enlaces:
ftp://updates.redhat.com/7.2/en/os/i386/, si su distribucin es Red Hat Linux 7.2 ftp://updates.redhat.com/7.3/en/os/i386/, si su distribucin es Red Hat Linux 7.3 ftp://updates.redhat.com/8.0/en/os/i386/, si su distribucin es Red Hat Linux 8.0 ftp://updates.redhat.com/9/en/os/i386/, si su distribucin es Red Hat Linux 9

Antes de desinstalar ipchains, que se instala de modo pre-determinado en Red Hat Linux 7.x, primero debe eliminarse cualquier regla que pudiese existir.
/sbin/ipchains -X /sbin/ipchains -F /sbin/ipchains -Z

A continuacin debe removerse el mdulo de ipchains para permitir la carga del mdulo ip_tables.
/sbin/rmmod ipchains /sbin/modprobe ip_tables

Para terminar, si utiliza Red Hat Linux 7.2 y 7.3, se debe desinstalar ipchains y toda la paquetera que dependa de ste.
rpm -e ipchains lokkit gnome-lokkit firewall-config

Esto ajustes deben poder permitir utilizar iptables en lugar de ipchains sin mayor problema.

Re-direccionamiento de peticiones.
En un momento dado se requerir tener salida transparente hacia Internet para ciertos servicios, pero al mismo tiempo se necesitar re-direccionar peticiones hacia servicio WWW, WWW SSL, FTP, GOPHER o WAIS hacia el el puerto donde escucha peticiones Squid (8080), de modo que no haya salida alguna hacia alguno de estos protocolos sin que sta pase antes por Squid.

Pgina 32

El re-direccionamiento lo hacemos a travs de iptables. Considerando para este ejemplo que la red local se accede a travs de una interfaz eht0, el siguiente esquema ejemplifica un re-direccionamiento:
/sbin/iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j REDIRECT --to-port 8080

Lo anterior hace que cualquier peticin hacia el puerto 80 (servicio HTTP) hecha desde la red local hacia el exterior, se redireccionar hacia el puerto 8080 del servidor.

Script ejemplo de Enmascaramiento de IP con iptables.


El guin que mostramos en la tabla a continuacin considera que se dispone de dos interfaces: eth0 y eth1. Para nuestro ejemplo la red local se accede por la interfaz eth0 y la salida hacia Internet de hace por la interfaz eth1. Utilice Firestarer para configurar el enmascaramiento y muro contrafuegos siempre que sea posible. Cuidado Este script NO es sustituto para un script de firewall.

#!/bin/sh # cargamos los mdulos del kernel necesarios: modprobe ip_conntrack modprobe ip_conntrack_ftp modprobe ip_conntrack_irc modprobe ipt_REJECT modprobe ipt_REDIRECT modprobe ipt_TOS modprobe ipt_MASQUERADE modprobe ipt_LOG modprobe iptable_mangle modprobe iptable_nat modprobe ip_nat_ftp modprobe ip_nat_irc # Habilitamos el reenvo de direcciones IP if [ -e /proc/sys/net/ipv4/ip_forward ]; then echo 0 > /proc/sys/net/ipv4/ip_forward fi # Estableciendo poltica de reenvo del enmascaramiento iptables -t filter -P FORWARD DROP # Reenvo de trafico intento-externo y externo-interno iptables -t filter -A FORWARD -d 0/0 -s 192.168.1.0/255.255.255.0 -o eth0 -j ACCEPT iptables -t filter -A FORWARD -d 192.168.1.0/255.255.255.0 -j ACCEPT # Enmascaramiento de todo el trafico saliente # NOTA: la salida hacia Internet es por la interfaz eth0 iptables -t nat -A POSTROUTING -o eth1 -j MASQUERADE # No enmascararemos trfico externo iptables -t nat -A POSTROUTING -o eth1 -d 0/0 -j ACCEPT # Permitir al trfico iptables -t filter -A iptables -t filter -A iptables -t filter -A de la red interna ir a donde sea INPUT -s 192.168.1.0/255.255.255.0 T -d 0/0 -j ACCEPT OUTPUT -s 192.168.1.0/255.255.255.0 -d 0/0 -j ACCEPT OUTPUT -p icmp -s 192.168.1.0/255.255.255.0 -d 0/0 -j ACCEPT

# Re-direccionamiento hacia el puerto 8080 (donde Squid escucha peticiones) # para cualquier peticin originada desde la red local hacia servicios que # utilicen protocolo http, https y ftp.

Pgina 33

# Pueden aadirse ms re-direccionamientos a discrecin del administrador. # NOTA 1: la red local se accede con la interfaz eth1 # HTTP iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j REDIRECT --to-port 8080

Pgina 34

Captulo 3
Introduccin a FTP
FTP (File Transfer Protocol; Protocolo de Transferencia de Archivos) existe en Internet desde 1971. De forma extraordinaria, el protocolo ha permanecido con muy pocos cambios hasta hoy. Por otro lado, los clientes y los servidores son constantemente mejorados y refinados. Aqu se estudia la instalacin y configuracin de un servidor particularmente refinado, el servidor de FTP de la Universidad de Washington, ms conocido como wu-ftpd. La mayora de las distribuciones de Linux vienen con wu-ftpd como servidor de FTP por defecto. Muchos sitios comerciales no Linux tambin utilizan wu-ftpd en lugar del servidor que viene con sus variantes de UNIX por las mismas razones que wu-ftpd es el servidor que se ha elegido para Linux: su estabilidad, flexibilidad y seguridad. En lo que sigue analizaremos cmo bajarse la versin ltima de wu-ftpd y compilarla e instalarla. Tambin mostraremos cmo configurar su acceso privado, as como el acceso annimo. Y por ltimo, mostraremos cmo configurar dominios virtuales con wu-ftpd.

El ABC de FTP
El acto de transferir un archivo de un equipo a otro puede parecer trivial, pero en realidad no lo es. Primero describiremos paso a paso los detalles de la interaccin cliente/servidor de FTP. Aunque esta informacin no es crucial para ser capaz de conseguir configurar y arrancar un servidor FTP, es importante cuando necesite considerar temas de seguridad as como cuando se tengan problemas.

La relacin cliente/servidor
Cuando un cliente FTP se quiere conectar con un servidor FTP, elige un puerto alto al azar (un puerto con un nmero mayor que 1024) como su origen y el puerto 21 como destino en el servidor FTP (el puerto 21 es el puerto FTP definido como estndar). Una vez establecida la conexin, el cliente puede entrar e introducir comandos para navegar por los directorios del servidor FTP. Cuando el cliente hace la peticin de una transferencia de un archivo, el cliente reserva otro puerto alto aleatorio y empieza a escuchar por l. Enva su nmero de puerto nuevo al servidor FTP sobre la conexin existente. El servidor FTP toma ese nmero de puerto e inicializa una conexin nueva desde uno de sus puertos altos aleatorios a nmero de puerto que le proporciona el cliente. La conexin original se mantiene abierta para que el cliente y el servidor puedan seguir envindose informacin adicional fuera del mensaje (por ejemplo, interrumpir la transferencia). Este diseo, concebido a principios de los aos setenta, se asumi como algo razonable durante un largo perodo de tiempo en Internet: los usuarios de Internet son un grupo de amigos que se conocen bien. Se estaba de algn modo protegido por el hecho de que el ncleo de Internet lo fund la NSF (Nacional Science Fundation-Fundacin de ciencia nacional), y no se permita dentro a organizaciones comerciales a menos que trabajaran en conjunto con el instituto de investigacin. Los laboratorios de investigacin acadmicos y gubernamentales formaban la mayora de los usuarios. Alrededor de 1990-1991, la NSF dejo de correr con los gastos del ncleo de Internet e Internet se hizo comercial. Al principio, no era muy grande. Entonces lleg la World Wide Web, la Telaraa Mundial (WWW) y la poblacin de la Red explot (con los problemas de seguridad). Muchos sitios empezaron a usar firewalls para proteger sus redes internas del Gran Malvado Internet. Sin embargo, los firewalls consideran que las conexiones arbitrarias realizadas por los puertos altos desde Internet a los puertos altos de la red interna son una cosa mala. Como resultado, muchos firewalls implementan proxies a nivel de aplicacin para FTP, los cuales siguen la pista a las peticiones FTP y abren los puertos altos cuando se necesita recibir datos de un sitio remoto. Naturalmente, no todos los firewalls son tan elegantes. Muchos sitios confan en los filtrados de paquetes de los firewalls, los cuales no entienden los datos que pasan a travs de ellos, pero saben que los datos que se envan a un puerto alto son malos y as los devuelven. Este tipo de firewall no permite trabajar a FTP porque FTP confa en ser capaz de abrir una conexin de vuelta al cliente por un puerto alto. Ahora volvamos atrs en el tiempo y pensemos en cuando FTP fue creado y el ancho de banda era un lujo. Cuando alguien quera conseguir una transferencia de un archivo de una mquina A a una mquina B mientras tiene una sesin con la mquina C, el proceso de transferencia del archivo de la mquina A a la mquina C y desde C hasta la mquina B consuma un montn de ancho de banda. As que los diseadores del protocolo FTP dieron con una solucin: hacer posible que alguien situado en la

Pgina 35

mquina C transfiriera un archivo desde la mquina A hasta la B directamente. Esto se realiz gracias a una transferencia pasiva. Las transferencias pasivas se consiguen iniciando la conexin para transferencia de datos desde el lado del cliente en lugar de ser el servidor quien inicia la conexin. Desde el punto de vista de los firewalls, esto permite que los clientes continen seguros detrs del firewall sin la necesidad de reglas complejas que permitan la conexin de entrada.

Cmo conseguir la ltima versin de wu-ftpd?


Como el software de otros servidores, wu-ftpd experimenta actualizaciones y mejoras de sus componentes bsicos. Estas actualizaciones estn disponibles (va FTP, naturalmente) en ftp://ftp.wu-ftpd.org. El sitio Web, http://www.wu-ftpd.org, es tambin un buen lugar para conseguir informacin del estado del demonio wu-ftpd. Cuando se escribi este texto, la versin ltima de wu-ftpd era la 2.5.0; sin embargo, muchos CD-ROM se distribuyen con la 2.4.2VR17. Se recomienda la mejora, puesto que el grupo de desarrollo de wu-ftpd no soporta las versiones anteriores. La mejora es especialmente importante si hereda un sistema Linux (o cualquier otro sistema UNIX) que ejecute cualquier versin de wu-ftpd anterior al parche VR14, porque tiene un problema de seguridad ampliamente conocido que los chicos de los scripts han usado para romper sitios. Puede bajarse la Versin 2.5.0 desde ftp://ftp.wu-ftpd.org/pub/wu-ftpd/wu/ftpd-2.5.0.tar.gz. Una vez que se baje el paquete, necesitar realizar un tar sobre l con el siguiente comando:
# tar -xvzf wu-ftpd-2.5.0.tar.gz

Esto crear un subdirectorio llamado wu-ftpd-2.5.0 a partir del directorio actual, donde se desempaquetarn todos los archivos de cdigo fuente. Por motivos de consistencia, debera desempaquetar esto y cualquier otro software que compile en el directorio /usr/local/src.

Lectura de los README


Encontrar que wu-ftpd viene con varios archivos de documentacin en formato texto. Uno de estos archivos incluye el procedimiento de compilacin de wu-ftpd en varias plataformas (por si est interesado en hacerlo). Tmese algunos minutos para leer estos documentos. En esta versin, y en las futuras versiones, la documentacin que viene con el paquete contiene mucha informacin para encontrar recursos de ayuda online, as como notas sobre el paquete para los desarrolladores que quieran saber ms. Tambin es til leer la documentacin que viene con el paquete antes de entrar en cualquier foro de discusin con preguntas.

Compilacin e instalacin de wu-ftpd


Desde el subdirectorio en el que haya desempaquetado wu-ftpd, necesita escribir
# ./build 1nx

y ya est hecho. El script lleva a cabo el proceso de compilacin y verificacin por usted. Al final del proceso de compilacin, debera ver algo parecido a esto:
Executables are in bin directory: text data bss dec 125940 15156 72608 213704 5311 448 36 5795 4959 364 36 5359 5311 448 36 5795 2154 244 28 3026 Done hex 342c8 16a3 14ef 16a3 bd2 filename bin/ftpd bin/ftpcount bin/ftpshut bin/ftpwho bin/ckcontig

Si hay una configuracin existente, podra querer realizar una copia de los archivos de configuracin para que el proceso de instalacin no los sobrescriba. Los archivos que necesita guardar son stos:
/etc/ftpaccess /etc/ftpgroups /etc/ftphosts

Pgina 36

/etc/ftpusers

Una vez guardados, est todo preparado para realizar la instalacin. Si an no es el usuario root, use el comando su para convertirse en root. Entonces introduzca el comando
# ./build install

Esto provocar que todos los binarios y las pginas man se instalen en sus localizaciones adecuadas. Con los binarios en su sitio, estamos preparados para editar el archivo /etc/services para que el sistema sea capaz de unir los nmeros de puerto de FTP al servicio listado en /etc/inetd.conf. Asegrese de que /etc/services contiene las dos lneas siguientes:
ftp-data ftp 20/tcp 21/tcp

Ahora puede editar el archivo /etc/inetd.conf para que el sistema lance automticamente el servidor de FTP cuando alguien trate de conectarse a l. Para hacer los cambios, abra el archivo /etc/inetd.conf con un editor de textos. En la parte superior del archivo, debera encontrar una lnea que empieza con ftp. Si no encuentra esa lnea, entonces necesitar aadirla. Puede aadir esta lnea en cualquier posicin del archivo. Asegrese de que la lnea ftp del archivo /etc/inetd.conf dice lo siguiente:
ftp stream tcp nowait root /usr/sbin/tcpd in.ftpd -l -a

El archivo /etc/inetd.conf se gestiona con el programa inetd, el cual acta como una especie de super-servidor, que escucha las peticiones de red en lugar de otros servidores de aplicacin e inicia las aplicaciones servidores cuando detecta una peticin de conexin para ellas. Si el archivo de configuracin /etc/inetd.conf cambia, necesita enviarle al proceso inetd una seal indicndole que debe recargar su archivo de configuracin. Esto se hace de una de estas dos formas: 1. Ejecutando el comando siguiente:
kill -l `ps auxw | grep inetd | grep -v grep | awk '{ print $2}' `

2. Mire si su distribucin guarda el ID del proceso en el archivo /var/run/inetd.pid. Si es as, puede usar:
kill -1 'cat /var/run/inetd.pid'

Y debera ser capaz de realizar ftp sobre su propio sistema. No se preocupe si no puede entrar en l todava (explicaremos algunos detalles ms despus), pero al menos debera ser capaz de conseguir el smbolo del sistema FTP.

Configuracin de wu-ftpd
El paquete wu-ftpd viene con varios archivos de configuracin de ejemplo que son fciles de modificar e instalar en su servidor FTP. Ms tarde, presentaremos algunas configuraciones predefinidas por si tiene necesidad de un inicio rpido. Esta seccin se enfoca en los detalles que ofrece wu-ftpd. Encontrar una herramienta de referencia prctica en lugar de un tutorial, pero al menos echarle un vistazo est justificado.

Control de acceso a travs del archivo /etc/ftpaccess


El archivo /etc/ftpaccess contiene cinco tipos de comandos: Control de acceso. Informacin automtica para clientes. Configuracin de entrada. Permisos. Controles de tipo de archivo y directorio. Examinaremos cada comando especfico integrado en cada uno de los grupos.

Pgina 37

Control de acceso Controlar quin entra y quin no en el servidor FTP es un aspecto crucial de la gestin de un servidor. Los comandos siguientes le permiten hacer eso. CLASS El comando class define una clase nueva de usuarios en su sistema. No garantiza ni concede ningn derecho en especial, pero la definicin de una clase es necesaria para referenciar un grupo de usuarios en los comandos que se estudian ms tarde. El formato del comando class es
class nombre-clase tipo direccin...

Donde nombre-clase es el nombre de la clase nueva que defina. Tipo es uno de estos tres valores: anonymous, real o guest. Los usuarios anonymous (annimos) son justamente eso: usuarios que acceden al servidor sin tener ningn tipo de permiso explcito. Note que por definir una clase que permita usuarios annimos, no est configurando un FTP annimo. Los usuarios real (reales) deben tener una cuenta y una shell vlida en el sistema. En el caso de FTP, definimos una shell vlida como cualquier shell que aparezca en el archivo /etc/shells. Los usuarios guest (invitados) son aquellos que no tienen una cuenta real en el servidor, pero estn incluidos explcitamente en el grupo de invitados (se explica ms tarde). Por ltimo, direccin... es la lista de direcciones IP que se originan desde la clase definida. El asterisco (*) es un metacarcter que indica que todas las direcciones IP son vlidas para la clase definida.
class mi-clase anonymous 10.10.*

define la clase mi-clase, la cual consta nicamente de usuarios annimos cuyas direcciones IP comienzan por 10.10. Podemos tener tantas entradas de clase como queramos. AUTOGROUP El comando autogroup se usa para indicar a qu grupos de usuarios annimos de UNIX se pretende cuando se entra en el servidor FTP. Mediante la configuracin del grupo al que pertenece, puede retener un control ajustado sobre qu archivos puede o no puede tener acceso. El formato del comando autogroup es
autogroup nombre-grupo clases...

donde nombre-grupo es el nombre del grupo al que quiere que pertenezcan los usuarios annimos (observe que el nombre-grupo se debera corresponder con una entrada del archivo /etc/group) y clases... es una lista de clases a las que quiera afectar con este comando. Por ejemplo, si define tres clases,
class a anonymous,real class b anonymous,real,guest class c anonyrnous,real 10.10.* 192.168.5.* 192.168.7.10 192.168.7.11 192.168.7.12

puede especificar una clase autogroup como sta:


autogroup anonftp a b

Ahora alguien de las clases a o b que entre como annimo tiene que trabajar dentro de los

Pgina 38

lmites del grupo anonftp. DENY El comando deny le permite bloquear el acceso a su sistema basndose en la direccin IP de origen o en el nombre de mquina. El formato del comando deny es de esta forma:
deny direcciones archivo_mensaje

donde direccin es la direccin IP y el archivo_mensaje es el nombre de archivo del mensaje que quiera devolver cuando traten de conectarle. Por ejemplo, el comando
deny 192.168.66.7 /home/ftp/no_evil_crackers

debera provocar que los contenidos del archivo /home/ftp/no_evil_crackers se enviarn a cualquier usuario que trate de entrar en el servidor desde la direccin IP 192.168.66.7. Nota Debido a que la resolucin de nombres inversa es poco fiable, se recomienda que use slo direcciones IP. GUESTGROUP El comando guestgroup es til cuando tiene usuarios reales, pero que desea que sus privilegios se vean recortados de forma similar a los usuarios annimos. El formato del comando es:
guestgroup nombre-grupo...

donde nombre-grupo es el nombre de uno o ms grupos (tomado del /etc/group) que quiera restringir. Para restringir usuarios de esta forma, adems de la entrada en el archivo /etc/ft-paccess, necesita cambiar el formato de cada entrada de usuario del /etc/passwd. El formato nuevo debera tener su directorio /home situado entre los caracteres (/./). Antes de la barra debera estar el directorio raz efectivo y despus de la barra debera estar el directorio home del usuario efectivo. Por ejemplo, la entrada
cor:ilhsvmt1m8wh:256:1024:Carlos Rodriguez:/ftp/./cor:/bin/ftponly

significa que /ftp es el nuevo directorio raz relativo del usuario. Esto debera prevenir que el usuario vel el directorio /home real, o cualquier otro directorio de path. Debido a esto, necesita situar un directorio bin, etc y lib en /ftp donde existan las bibliotecas y binarios que permitan funcionar a ftp. Este aspecto es idntico a la configuracin de un usuario annimo, el cual se explica ms tarde. Relativo a /ftp habr un subdirectorio llamado cor, el cual ser el directorio home de entrada va FTP. Debido a que /bin/ftponly no es una shell real, no podra realizar un telnet al sistema. Sin embargo, asegrese de que /bin/ftponly se lista en el archivo /etc/shells. LIMIT El comando limit le permite controlar el nmero mximo de usuarios que pueden entrar en el sistema mediante FTP por clase y da de la semana. El formato del comando limit es
limit clase n fecha archivo-mensaje

donde clase es el nombre de la clase afectada, n es el nmero mximo, fecha es el da y la hora que se pennite entrar a los usuarios y archivo-mensaje es el archivo que se muestra a los usuarios que no puedan entrar. El formato de la entrada fecha es un poco difcil. El parmetro es de la forma de una cadena

Pgina 39

de texto delimitada por comas, donde cada opcin es para un da separado. De domingo a sbado toman la forma de Su, Mo, Tu, We, Th, Fr y Sa, respectivamente, y se pueden indicar todos los das de la semana con Wk. La hora va en formato militar, sin un smbolo de dos puntos separando horas y minutos. Un rango se especifica con el carcter guin (-). Por ejemplo, para limitar a la clase anonpeoples a un mximo de 25 de lunes a jueves durante todo el da y los viernes hasta las 7 de la tarde, debera usar la lnea
limit anonpeoples 25 MoTuWeTh,FrOOOO-1900 /home/ftp/.message.too_many

donde los contenidos del archivo /home/ftp/.message.too_many se devuelven al usuario si se excede el mximo.

Nota El soporte del comando limit es para aquellos servidores que tengan limitaciones en trminos de ancho de banda disponible, o para servidores que necesiten estar disponibles para otras tareas durante ciertos momentos. Por ejemplo, un servidor FTP que hace disponibles hojas de errores de productos debera ser accesible por los clientes durante las horas normales de oficina. Slo durante las horas de la noche, cuando el trfico de negocios cae hasta niveles aceptables, puede considerarse usar la mquina como coleccin de bandas discogrficas. El comando limit le permite llevar a cabo este tipo de configuracin. LOGINFAILS Este comando le permite limitar el nmero de entradas fallidas consecutivas de un usuario que se conecte. El formato del comando es
loginfails n

donde n es el nmero de entradas fallidas que quiera tolerar. Por ejemplo, si quiere que el sistema corte automticamente la conexin de alguien que falla en introducir su contrasea despus de tres veces, debera usar
loginfails 3

PRIVATE

A veces encontrar necesario compartir archivos con otros a los que no quiera darles una cuenta en el sistema, pero al mismo tiempo no quiere situar el archivo en un directorio de acceso pblico. Mediante la configuracin de un grupo pblico, pide a los clientes que usen los comandos SITE GROUP y SITE GPASS para incluirlos en los grupos privilegiados que quieren contrasea. Para que el servidor FTP soporte esta capacidad, necesita configurar el flag privado, usando el comando
private switch

donde switch es ON u OFF. Debido a que se requieren contraseas para estos grupos especiales, necesitar usar el archivo /etc/ftpgroups. El formato de un grupo de acceso en /etc/ftpgroups es
nombre-grupo-acceso:contrasea-encritada:grupo-real

donde nombre-grupo-acceso es el nombre que usa el cliente para referenciar el grupo especial, contrasea-encriptada es la contrasea que necesitan los usuarios para proporcionar (con SITE GPASS) para acceder al grupo y grupo-real es el grupo actual referenciado en el archivo /etc/group. Para generar la entrada de la contrasea encriptada de este archivo, necesita usar la funcin

Pgina 40

crypt. Se puede acceder a l a travs de este script de Perl:


#!/usr/bin/perl print "Introduzca la contrasea a encriptar: "; chop ($password=<STDIN>); print "LA contrasea encriptada es: ", crypt ($password, $password);

Simplemente escriba este script y gurdelo como un archivo. Cambie los permisos para hacerlo ejecutable (por ejemplo, chmod 755 mi-script-perl) y ejectelo. Escribiremos la contrasea que quiera introducir y mostraremos la cadena encriptada resultante. Control de mensajes Cuando un usuario entra en su sistema mediante FTP, encontrar til presentar algn tipo de mensaje a estos usuarios entrantes. En otras situaciones, encontrar prctico presentar un mensaje especial si introducen un directorio particular o realiza una cierta opcin. Esta seccin estudia cmo usar los comandos en el archivo /etc/ftpaccess de wu-ftpd para hacerlo. BANNER Este comando le permite presentar un mensaje a un usuario que se conecte al servicio FTP, pero que no ha entrado an. El formato de este comando es
banner nombre-archivo

donde nombre-archivo es el nombre de un archivo (con el path completo) que quiera mostrar. El archivo debe estar en formato texto ASCII. Por ejemplo:
banner /home/ftp/welcome_to_my_ftp_site

Nota Los administradores que gestionan servidores FTP muy utilizados comentan que un buen mensaje es crucial en la limitacin del nmero de usuarios. EMAIL El comando email le permite especificar la direccin de correo electrnico del administrador del sitio. Los comandos como message (que se explica ms tarde) usan la informacin tambin. El formato de este comando es
Email direccin

donde direccin es la direccin de correo del administrador del sistema. Debera considerar usar una direccin de correo genrica del tipo ftp@ftp.su-sitio.com y usarla en el archivo /etc/aliases para expandir ese alias a todos los administradores reales. Un ejemplo del comando email en accin es
email ftp@ftp.su-sitio.com

MESSAGE

El comando message es til cuando necesite configurar mensajes especiales para clases de usuarios especficas o para usuarios que entran en un directorio especfico. El formato de este comando es:
message archivo cuando clase...

donde archivo es el archivo que se mostrar al usuario, cuando es la condicin que deba cumplirse para mostrarse el mensaje y clase (que es opcional) es la lista de clases sobre la que se aplicar. El parmetro cuando puede tomar una de estas dos formas, LOGIN o CWD=path, y esta

Pgina 41

caracterstica es la que hace este comando diferente del comando banner. Si es LOGIN, el mensaje se visualizar despus de una entrada al sistema correcta. Si es CWD=path, el mensaje se mostrar cuando un usuario vaya al directorio path. El archivo del mensaje es un archivo de texto ordinario con algunas palabras claves. Estas palabras claves son las siguientes: Opcin
%T %F %C %E %R %L %U %M %N

Descripcin Hora local. Espacio libre de la particin en la que est situado el path. El directorio de trabajo actual. La direccin de correo electrnico especificado con el comando e-mail. Nombre de mquina cliente. Nombre de mquina servidor. Nombre de usuario proporcionado por la hora de entrada. Nmero mximo de usuarios permitidos en la clase login. Nmero de usuarios en la clase.

Un ejemplo del comando message en accin es


Message ./.demasiados.usuarios LOGIN anonusers

donde .demasiados.usuarios es un archivo parecido a ste:


Lo siento %R, pero se han alcanzado %N de los %M usuarios de %L. Estamos trabajando para conseguir un servidor ms grande pero mientras tanto le pedimos paciencia. Por favor, pruebe ms tarde. Su Administrador FTP, %E

Nota Los mensajes desencadenados por la entrada de usuarios annimos deben ser relativos al directorio FTP annimo. README El comando readme permite que el servidor informe automticamente a un usuario cuando se actualiza un archivo en particular. El comando toma la forma
Readme archivo cuando clase

donde archivo es el nombre de path completo del archivo que quiere que muestre el servidor FTP, cuando es cundo quiere que se le diga al usuario (el formato de cuando igual al del comando message) y clase es la clase sobre la que se aplicar. Los parmetros cuando y clase son opcionales. Por ejemplo:
readme ./README CWD=/pub/patches

Nota Los mensajes desencadenados por la entrada de usuarios annimos deben ser relativos al directorio FTP annimo.

Pgina 42

LOG Puede usar wu-ftpd para configurar sobre qu informacin se va a realizar log. Esta informacin es una manera estupenda de conseguir una buena forma de exponer y organizar sus servicios. Esta seccin explica los comandos usados en la personalizacin de las entradas del log. LOG COMMANDS Si quiere hacer log de cada comando introducido por los usuarios conectados a su servicio FTP, querr usar los comandos de log. Su uso es el siguiente:
log commands lista-tipo

donde lista-tipo es una lista separada por comas del tipo de usuario sobre cuyos comandos quiere hacer log, como el descrito con el comando class. Los tipos de listas vlidos son:
anonymous, guest y real. Por ejemplo, si quiere realizar log sobre todos los

comandos escritos por usuarios annimos, debera introducir


log commands anonyrnous

LOG TRANSFERS

Si quiere hacer log slo sobre los archivos transferidos entre usuarios y su servidor en lugar de sobre todos los comandos introducidos, debera usar este comando:
log transfer lista-tipo direcciones

donde lista-tipo es el tipo de usuario sobre cuyos comandos quiere hacer log como el descrito con el comando class (es decir, anonymous, guest y real) y direcciones es una lista separada por comas de la direccin (entrante saliente) de la transferencia sobre la que se desea hacer log (es decir, inbound y outbound). Por ejemplo, para hacer log de las conexiones entrantes y salientes de los usuarios guest, escriba
log transfer guest inbound,outbound

Otros comandos de servidor Por supuesto, siempre hay comandos que no caen en ninguna de las categoras. Consideramos los siguientes: ALIAS Con frecuencia es conveniente crear atajos para los directorios de acceso ms frecuente. Mediante el uso del comando alias, puede hacer esto. El formato del comando es:
alias nombre-alias directorio

donde nombre-alias es el propio alias y directorio es el directorio completo sobre el que quiere crear un atajo. Por ejemplo,
alias redhat /pub/linux/distributions/redhat

debera permitir que un usuario que introduzca el comando cd redhat y vaya directamente al directorio /pub/linux/distributions/redhat. CDPATH Equivalente a la variable de entorno PATH, cdpath le permite establecer un path de directorios para los usuarios que se conecten a su servicio FTP. El formato del comando es:
cdpath directorio

Pgina 43

donde directorio es el nombre del directorio que quiera aadir al path. Por ejemplo, si usa
cdpath cdpath /pub/linux /pub/recipes

y un usuario introduce el comando cd microwave, wu-ftpd debera buscar en los directorios siguientes:
./microwave Alias llamados microwave /pub/linux/microwave /pub/recipes/microwave

Nota La diferencia clave entre alias y cdpath es que alias especifica un mapeado simple desde un nombre de directorio a otro. Por otra parte, cdpath especifica una lista de directorios que se deben comprobar cuando un usuario utiliza el comando cd. COMPRESS El servidor wu-ftpd ofrece la posibilidad de realizar conversiones de archivos sin uso de archivos intermedios. Una conversin especfica puede comprimir o descomprimir un archivo antes de enviarlo a un usuario. Esto es especialmente til para los clientes que no tengan la misma utilidad de compresin que la suya o para clientes con enlaces lentos que quieran comprimir un archivo antes de enviarlo a la red. El formato del comando es
compress switch clase

donde switch es ON u OFF y clase es real, guest o anonymous. Lo malo de usar esta caracterstica es que tambin debe tener configurado el archivo /etc/ftpconversions. Lo estudiaremos ms tarde en este mismo captulo. TAR Como el comando compress, el comando tar permite a los clientes unir o desunir un archivo antes de bajrselo. El formato del comando es:
tar switch clase

donde switch es ON u OFF y clase es real, guest o anonymous.

Nota ste es un mecanismo estupendo para usuarios que se bajan subdirectorios de forma recursiva. Permisos La configuracin de los permisos de archivos en un servidor FTP es muy importante. Necesita asegurarse de configurar los permisos correctos de los archivos para no compartir lo que no deba ser compartido y no alterar los archivos que no deban ser modificados. Los comandos que se analizan en esta seccin le ayudan a mantener la integridad del sistema. CHMOD Este comando le permite decidir si quiere dar a los usuarios el derecho a cambiar permisos de los archivos de sus sitios. (Deben ser propietarios de un archivo para ser capaces de cambiar sus permisos.) El formato del comando es
chmod switch clase

Pgina 44

donde switch es ON u OFF y clase es real, guest o anonymous. En general, querr dar este tipo de permiso nicamente a usuarios reales. Por ejemplo:
chmod ON real

DELETE

El comando delete le dice al servidor si los usuarios tienen el derecho a eliminar archivos de su propiedad en el servidor FTP. El formato del comando es
delete switch clase

donde switch es ON u OFF y clase es real, guest o anonymous. Por ejemplo:


delete ON real

OVERWRITE

Este comando le permite decidir si los usuarios tienen el derecho a sobrescribir archivos existentes con sus bajadas. El formato del comando es:
overwrite switch clase

donde switch es ON U OFF y clase es real, guest o anonymous. Por ejemplo:


overwrite ON real

RENAME

El comando rename le permite decidir si quiere que los usuarios sean capaces de renombrar archivos de su propiedad en el servidor FTP. El formato del comando es:
rename switch clase

donde switch es ON u OFF y clase es real, guest o anonymous. Por ejemplo:


rename ON real

UMASK

El comando umask le permite decidir si quiere que los usuarios de su servidor FTP sean capaz de cambiar su mscara por defecto. La mscara de un usuario de termina qu permisos por defecto van a tener todos los archivos que crea. El umask est en octal y representa la inversa de lo que deberan ser sus permisos. Por ejemplo, una mscara 077 significa que cualquier archivo creado se podr leer, escribir y ejecutar por su propietario, pero por nadie ms. El formato del comando es
umask switch clase

donde switch es ON u OFF y clase es real, guest o anonymous. Por ejemplo:


umask ON real

PASSWD-CHECK

Los sitios proporcionan acceso annimo a las peticiones de usuarios que introducen su direccin de correo como contrasea; wu-ftpd le permite decidir lo estricto que quiera ser para forzar la comprobacin de contrasea si se ejecuta como un sitio annimo. El formato del comando es
passwd-check strictness enforcement :

donde strictness es none, trivial o rfc822 y enforcement es warn o enforce. Si strictness es none, el usuario slo tiene que introducir algo en el campo contrasea y

Pgina 45

se le aceptar por wu-ftpd. Trivial slo requiere que la direccin de correo tenga un smbolo @ en l. La especificacin de rfc822 requiere que la direccin de correo sea completamente compatible con el Message Heder Standard (Estndar de cabecera de mensaje). Por ejemplo, masinfo@cortech.com.ar es una direccin de correo compatible con rfc822. Enforcement viene en dos formas: warn, lo cual significa que wu-ftpd avisar al usuario de que su contrasea no es compatible y despus le deja acceso libre, y enforce, donde wuftpd no le permlte al usuario acceder hasta que proporcione una direccin vlida. Observe que esto slo afecta a los accesos annimos. PATH-FILTER El comando path-filter le permite aplicar un filtro a los nombres de archivos usados por los usuarios para descargar al servidor. El formato del comando es:
path-filter lista-tipo mensaje expres-reg-perm expres-reg-deneg

donde lista-tipo es la lista de usuarios separada por comas a los que afecta este comando. Los tipos de usuarios aceptados son anonymous, guest y real. Mensaje es el archivo que se muestra al usuario si su nombre de archivo no pasa el filtro. Expres-reg-perm es la expresin regular que debe cumplir el nombre de archivo si el usuario lo quiere descargar. Expres-reg-deneg es la expresin regular que no debe cumplir el nombre de archivo si el usuario lo quiere descargar. Por ejemplo, la lnea
path-filter anonyrnous /home/ftp/.badfilename UL* gif$

nos dice que los usuarios annimos deben empezar los nombres de sus archivos a descargar con las letras UL y no terminarlos con gif. Si el nombre del archivo no cumple este criterio se enviar al usuario el contenido de /home/ftp/.badfile-name. UPLOAD Puede usar el comando upload, junto con path-filter, para controlar los archivos situados en su servidor. El comando upload especifica los pennisos que tiene el cliente para colocar archivos en ciertos directorios, as como los permisos de los archivos que se pueden modificar. El formato del comando es
upload directorio dir-glob switch propietario grupo perms mkdir

donde directorio es el directorio que se ve afectado por este comando, dir-glob es la expresin regular usada para determinar si un subdirectorio bajo directorio es un sitio vlido para hacer una descarga y switch es YES o NO, estableciendo si la descarga puede realizarse en directorio. Los parmetros propietario, grupo y perms se establecen aqu (el propietario y grupo del archivo y sus permisos). Por ltimo, puede especificar la operacin mkdir como DIRS o NODIRS, determinando si el cliente puede crear subdirectorios bajo el directorio especificado. Por ejemplo:
upload /home/ftp /incoming yes ftp ftp 0400 nodirs

Nota El comando upload afecta slo al directorio elegido, no a los subdirectorios que estn por debajo de l. Esto previene que los usuarios remotos puedan crear directorios en su servidor y esconder archivos en l. El archivo log Como estudiamos antes, el archivo de log es importante en las operaciones del da a da. Con l, puede realizar un anlisis de su sitio FTP y determinar cosas como los archivos ms accedidos y los patrones de uso del sitio en general.

Pgina 46

La posicin por defecto del archivo de log por defecto es /var/log/xferelog. Cada lnea del log consta de una entrada, como la mostrada en la Tabla 13.1. Cabecera de entrada de Log
Current-time

Descripcin La fecha en que ocurri la entrada. El formato de la lnea es:


DDD MMM dd hh:mm:ss AAAA

donde DDD es el da de la semana, MMM es el mes, dd es el da del mes, hh:mm:ss es la hora en horas, minutos y segundos y AAAA es el ao. Tranfer-time El nmero de segundos que llev realizar esta transferencia en particular. Remote-host El nombre de mquina del cliente. File-size Tamao del archivo transferido. File-name Nombre del archivo transferido. Tranfer-type a para ASCII y b para binario. Special-action-flag Una lista de acciones realizadas por el servidor sobre el archivo: C significa que el archivo fue comprimido, U significa que fue descomprimido, T que se realiz un tar sobre l - (un guin) que no se realiz ninguna accin sobre l. Direction La direccin de la transferencia, donde o significa output (salida) e i significa input (entrada). Access-mode El tipo de usuario que realiz la transaccin: a para annimo g para invitado r para real. Username El nombre de usuario local si User-type es real. Service-name El nombre desde donde se invoc al servidor FTP. Authentication-method El tipo de autenticacin hecho por el servidor sobre el usuario. 0 significa sin autenticacin, 1 significa que el usuario entr con una combinacin nica de nombre de usuario y contrasea. Authentication-user-id Si el usuario entr con una combinacin nica de nombre de usuario y contrasea, se presenta el nombre de usuario aqu. Las transferencias annimas se muestran como anonymous. Tabla 13.1. Entadas contenidas en cada lnea de /var/log/xferlog Conversiones de archivo Algunas veces, los clientes no tienen las herramientas necesarias para hacer uso del archivo que se han bajado porque est comprimido o guardado en un formato que no puede leer (esto, particularmente cierto con los archivos .tar.gz hasta que WinZip empez tambin a descomprimir estos archivos). Otras veces lo inverso tambin es cierto: el cliente es capaz de manejar los archivos comprimidos y podra preferir el archivo en un formato comprimido. Naturalmente, la compresin de archivos tiene muchos tipos de uso que puede configurar en el archivo /etc/ftpconversions. El formato del archivo es:
strippre:strippost:addonpre:addonpost:external:type:options:desc

Los campos se muestran en la Tabla 13.2. Campo


Strippre

Descripcin El prefijo strip son los caracteres iniciales de un nombre de archivo que se eliminarn antes de transferir el archivo. Por ejemplo, si el prefijo strip vale wedding y el nombre de archivo completo es wedding.ring, un usuario podra pedir simplemente un archivo ring y wu-ftpd sabra qu archivo

Pgina 47

conseguir as como qu clase de conversin debe realizar con l. "


Strippost

El sufijo strip es igual al prefijo strip, excepto que funciona con la parte final del archivo. Por ejemplo, si el sufijo strip vale .gz, y el nombre de archivo del servidor es ring.gz, el servidor sabr realizar la accin introducida en esta lnea del archivo de configuracin si el cliente le pide el archivo ring. El sufijo add-on es lo contrario de strippost. En lugar de eliminar el final de un archivo, lo aade. Esto se debera usar en el caso donde un archivo que, no se haya comprimido tenga .gz aadido como si lo estuviera y se enva al cliente. El prefijo add-on es lo contrario a strippre. Permite aadir un prefijo al nombre del archivo antes de enviarlo a un cliente. Esta entrada especifica qu programa (externo a wu-ftpd) se ejecuta cuando coincida un filtro. En el caso de las descargas, el archivo resultante de la conversin debera enviarse a la salida estndar de programas (stdout). Las descargas en el servidor se enviarn a la entrada estndar (stdin). Puede especificar el nombre de archivo que pidi el cliente en la lnea de comandos mediante un comando externo mediante el uso de %s en lugar del propio nombre. El servidor buscar y reemplazar automticamente cada ocurrencia de %s por el nombre del archivo del cliente. En el mundo de wu-ftpd, los archivos son de uno de estos tres tipos: regulares, ASCII o directorios (T_REG, T_ASCII y T_DIR, respectivamente). Este campo le permite especificar el tipo de archivo sobre el que wu-ftpd actuar si coincide el filtro del nombre de archivo. Puede especificar varias opciones separndolas con el smbolo pipe (|). Por ejemplo, T_REG|T_ASCII especifica que quiere que el filtro se aplique sobre cualquier tipo de archivo. Este campo decide si este filtro comprimir, descomprimir o realizar un tar sobre archivos. Cada opcin se representa con O_COMPRESS, O_UNCOMPRESS y O_TAR, respectivamente. Puede hacer varias cosas sobre un archivo usando el smbolo pipe (|) entre los comandos. Por ejemplo, O_COMPRESS|O_TAR significa que el filtro comprimir y har un tar sobre la peticin del cliente. ste es un campo libre que le permite describir qu hace el filtro. Tabla 13.2. Campos del archivo /etc/ftpconversions

Addonpost

Addonpre

External

Type

Options

Desc

Una entrada ejemplo La siguiente es una entrada de ejemplo que comprime archivos bajo demanda usando gzip. Esto debera permitir a alguien que quiera conseguir el archivo orb_discography.tar, que el servidor lo comprima usando gzip antes de enviarlo. La configuracin de la lnea es la siguiente:
:::.gz:/bin/gzip -9 -c %s:T_REG|T-ASCII:O_COMPRESS:GZIP

Los dos primeros parmetros (prefijo strip y sufijo strip) no son necesarios puesto que no tienen ningn valor. El tercer parmetro (prefijo addon) tampoco se aplica porque no tiene tampoco nada que aadir al comienzo del archivo. El cuarto parmetro, .gz (sufijo addon), especifica que el nombre del archivo debera tener aadido .gz despus de ejecutar este filtro. El quinto parmetro (comando externo) especifica la invocacin exacta del programa gzip a fin de realizar la compresin del archivo. Observe que usamos %s en lugar de un nombre de archivo. El sexto parmetro (tipo de archivo) le dice a wu-ftpd que puede realizar compresin sobre los archivos regulares y ASCII. El sptimo parmetro, O_COMPRESS (el campo opciones), le dice al servidor que la accin a realizar sobre el archivo es la compresin. Por ltimo, el ltimo campo es un recuerdo legible de que hace este filtro: ejecuta gzip. Aunque su apariencia intimida, no se preocupe! Es poco probable que necesite cambiar la configuracin por defecto del archivo que viene con wu-fipd, puesto que cubre las conversiones ms comunes.

Pgina 48

Configuracin del acceso a la mquina El archivo /etc/ftphosts le permite explcitamente denegar o permitir usuarios basndose en su direccin IP original. Cada lnea del archivo tiene la forma:
allow nombre-usuario direccin

o
deny nombre-usuario direccin

donde nombre-usuario es el nombre de usuario que utiliza cuando se conecta al servicio FTP y direccin es la direccin IP original. Puede aadir varias direcciones en la lista separadas por comas.

Configuraciones tpicas
Con todas las opciones disponibles, la configuracin del servidor wu-ftpd puede amilanarle un poco, cuando no debera. Parecida a las configuraciones de DNS, las configuraciones ms comunes son tambin muy fciles de realizar. En esta seccin recorreremos todas estas combinaciones para ayudarle a realizarlas. Acceso slo annimo Bajo el modelo UNIX, cada proceso debe tener un propietario. En el caso de un usuario FTP annimo, este propietario debera tener unos derechos de acceso a archivos mnimos y nicamente ser capaz de ver los archivos del rea FTP pblica. Para llevar a cabo esto, necesita asegurarse de que est configurado el usuario ftp (esto se hace automticamente en el Linux de Red Hat).

Configuracin del usuario annimo


Truco Si usa el Linux de Red Hat, puede instalar el RPM anonftp-2.8-1.i386.rpm en lugar de recorrer todos los pasos que se explican en esta seccin. Puede comprobar fcilmente si tiene un usuario annimo examinando su archivo /etc/passwd. Si existe el usuario ftp, puede saltarse este paso. Si no lo tiene, querr crear un nuevo usuario llamado ftp usando comandos parecidos a:
# echo "/bin/ftponly" >>/etc/shells

y
# useradd -c "FTP User" -d /home/ftp -r s /bin/ftponly ftp

El primer comando le dice al sistema que /bin/ftponly es una shell de usuario aceptable. Esto es necesario para que el comando useradd sea capaz de usarla, incluso si la shell no existe. La razn por la que querra configurar una shell que no existe, pero que est presente en /etc/shells es que pueda entrar en el sistema mediante FTP, pero no mediante un telnet. El segundo comando crea una cuenta para el usuario ftp. Puede cambiar el directorio /home/ftp para colocarlo donde prefiera que ocurran los accesos FTP annimos (una particin dedicada por si piensa hacer un gran sitio). Tambin llama a la opcin -r para que cree una cuenta del sistema, pues el directorio home no se crea automticamente. Por motivos de estructuracin, tambin debera crear un grupo ftp si no existe ya. Esto se hace con el comando:
# groupadd -r ftp

El parmetro -r sirve para lo mismo que explicamos en el comando useradd. Con la cuenta creada, necesitar asegurarse de que est configurado el directorio home para el usuario ftp annimo. ste es el directorio que los usuarios vern cuando se conecten al servicio.

Pgina 49

Configuracin del directorio FTP annimo


Truco Si usa el RPM anonftp-2.8-1.i386.rpm, puede saltarse estos pasos tambin, puesto que la estructura de directorios se configura por usted. El directorio FTP nnimo debera tener los subdirectorios siguientes:
pub bin etc lib

Los permisos de estos directorios deberan configurarse con los comandos siguientes:
# # # # # chown chown chmod chmod chmod root.root bin etc lib root.ftp pub 111 bin etc 755 lib 2755 pub

Cuando el usuario ftp annimo entra, el servidor realiza un chroot, una funcin de sistema que cambia la definicin de cul es el directorio raz donde se localizan los archivos de FTP annimos. En el caso en que los archivos FTP annimos se localizan en /home/ftp, el comando chroot podra cambiar la definicin del directorio raz a /home/ftp, de forma que un cd / se referira a /home/ftp. Esto hace que los usuarios annimos no puedan ver otros archivos del sistema, especialmente los sensibles como /etc/passwd. El efecto de usar chroot es que los programas que se ejecutan deben estar disponibles en el nuevo directorio raz, o no se podrn usar. As, debe copiar los archivos que se muestran en la tabla siguiente en los directorios siguientes. (Nota: Asumimos que /home/ftp es el directorio donde se sitan los archivos de ftp annimos.)
Archivo fuente /lib/ld-2.1.1.so /lib/libc-2.1.1.so /lib/libns1-2.1.1.so /lib/libnss_files- 2.1.1.so /usr/bin/compress /bin/cpio /bin/gzip /bin/ls /bin/sh /bin/tar Destino /home/ftp/lib /home/ftp/lib /home/ftp/lib /home/ftp/lib /home/ftp/bin /home/ftp/bin /home/ftp/bin /home/ftp/bin /home/ftp/bin /home/ftp/bin Permisos 755 755 755 755 111 111 111 111 111 111

Recuerde configurar correctamente los permisos de los archivos de arriba usando el comando chmod. Tambin necesitar crear algunos enlaces simblicos. Las series de comandos siguientes los crearan:
# # # # # # # cd ln ln ln ln cd ln /home/ftp/lib -s ld-2.1.1.so ld-linux.so.2 -s libc-2.1.1.so libc.so.6 -s libnsl-2.1.1.so libnsl.so.1 -s libnss_files-2.1.1.so libnss_files.so.2 /home/ftp/bin -s gzip zcat

Y por ltimo, necesitar configurar un archivo de grupo y de contrasea. El propsito de estos archivos no es de autenticacin, sino de apariencia. Recuerde que el propietario de cada archivo se representa con un UID y que el archivo /etc/passwd da un mapeado de UID a nombres de usuarios. Lo mismo se aplica para grupos, GID y el archivo /etc/group. As, necesitar crear el /home/ftp/etc/group con al menos lo siguiente:
root: :0:

Pgina 50

ftp:*:XX:YY:::

donde XX es el GID del grupo ftp que estableci el comando groupadd en la seccin anterior. El archivo /home/ftp/etc/passwd necesitar tener lo siguiente:
root:*:0:0::: ftp:*:XX:YY:::

donde XX es el UID del usuario ftp creado por el comando useradd, e YY es el nmero de grupo del grupo ftp que estableci el comando groupadd.

Configuracin de /etc/ftpaccess
La clave de la configuracin de un servidor FTP annimo es el usuario ftp y los directorios apropiados. Una vez hecho esto, slo necesita una configuracin mnima del archivo /etc/ftpaccess. Un archivo ejemplo es:
class class email loginfails limit readme readme message message compress tar chmbd delete overwrite rename log passwd-check anonclass anonyrnous * nonanon real.guest * ftp@domain.com 3 nonanon 0 Wk0000-2359 /home/ftp/.norealusers README* login README* cwd=* /welcome .msg login .message cwd=* yes anonclass yes anonclass no anonymous no anonymous no anonymous no anonymous transfers anonymous inbound,outbound rfc822 warn

Las lneas claves son las definiciones de clase donde separamos los usuarios no annimos de los usuarios annimos, y la lnea limit, la cual limita los usuarios no annimos a 0 para todos los das de la semana durante todo el da (los usuarios reales que traten de entrar son enviados al archivo /home/ftp/.norealusers). El resto del archivo es bastante genrico. Lo ver en muchas otras configuraciones diferentes.

Configuracin del directorio /incoming


Si necesita permitir que los usuarios annimos depositen archivos en su sistema, necesitar configurar un directorio especial de entrada para ello. Los archivos situados all se pueden recuperar slo por el usuario root, no por ningn usuario annimo. Esto es as para impedir a los individuos con intenciones deshonestas la entrada en el servidor FTP y aprovechar un sitio de acceso pblico para esconder pornografa, software pirateado o contenidos ilegales (como nmeros de tarjetas de crdito robadas). Esto significa su supremaca sobre su labor como administrador de sistemas, pero un campo de proteccin es la nica forma de asegurarse de que los archivos descargados en el servidor son aceptables para que otras personas se los bajen. Para crear este subdirectorio, vaya al directorio de FTP annimo (por ejemplo, /home/ftp) y cree un subdirectorio llamado incoming as:
# mkdir incoming

Entonces cambie los permisos para que slo el usuario ftp pueda escribir all, pero el usuario annimo no pueda leer de l:
# chmod 300 incoming # chown ftp.ftp incoming

y por ltimo, aada las dos lneas siguientes a su archivo /etc/ftpaccess para controlar dnde descargan los archivos:

Pgina 51

upload upload

/home/ftp /home/ftp

* no /incoming

yes

ftp

ftp

0000

nodirs

El primer comando upload deniega la descarga sobre todos los directorios de su servidor FTP. El segundo comando abre explcitamente un directorio donde los usuarios annimos pueden descargar archivos.

Usuarios slo registrados y acceso mixto


Es aceptable ejecutar un servidor que soporte acceso mixto, es decir, proporciona usuarios annimos y usuarios de acceso regular a su servidor. Es tambin posible configurar un servidor con nicamente acceso para usuarios registrados. Acceso mixto Empezamos configurando el servidor como para un acceso slo para annimos. Una vez hecho, cambiamos el archivo /etc/ftpaccess para que refleje
class email loginfails readme readme message message compress tar chmod delete overwrite renarne log passwd-check all real,guest,anonymous * ftp@domain.com 5 README* login README* cwd=* /welcome.msg login .message cwd=* yes all yes all no guest,anonymous no guest,anonymous no guest,anonymous no guest,anonymous transfers anonymous,real inbound,outbound rfc822 warn

Observe que esta configuracin no proporciona acceso de descarga para los usuarios annimos. Asumiendo que los directorios FTP annimos estn situados en /home/ftp necesitar aadir las lneas siguientes en el archivo /etc/ftpaccess:
upload upload /home/ftp /home/ftp * no /incoming yes ftp ftp 0000 nodirs

(Lea la seccin de configuracin de soporte de descarga en los servidores FTP annimos para informarse de cmo configurar el directorio incoming.) Usuarios slo registrados Hay dos mecanismos para denegar el acceso a los usuarios FTP annimos. El primero es no tener el usuario ftp en el archivo /etc/passwd. Este mtodo es muy simple y hace el trabajo. Sin embargo, si quiere dejar la configuracin del FTP annimo intacta, puede denegar el acceso FTP annimo de la misma forma que deniega el acceso a los usuarios reales en un servidor FTP annimo (usando el comando limit en el archivo /etc/ftpaccess). El archivo /etc/ftpaccess para este tipo de configuracin debera ser:
class class ernail loginfails limit readrne readrne message message compress tar all real,guest * anon anonymous ftp@dornain.com 5 anon 0 Wk0000-2359 README* login README* cwd=* /welcome.msg login .message cwd=* yes all yes all

/home/ftp/

.noanonusers

Pgina 52

chmod delete overwrite renane log passwd-check

no guest no guest no guest no guest transfers real rfc822 warn

inbound,outbound

donde /home/fip/.noanonusers es el archivo de texto que se enva al cliente que trata de conectarse como annimo para informarle de que no est permitido el acceso annimo.

Configuracin de un Servidor FTP Virtual


Con wu-ftpd puede configurar varios servidores FTP sobre una sola mquina siempre que cada servidor tenga su propia direccin IP (sta es una limitacin de FTP, no de configurado un alias de IP y la tabla arp es conecta. Este recorrido rpido del proceso asume que tiene una tarjeta Ethemet y quiere aadir una direccin IP virtual: 1. Asegrese de que las direcciones IP nuevas existen en la tabla de mquinas locales (/etc/hosts) as como en la tabla DNS. (En este ejemplo, llamaremos a la mquina earth.) 2. Ejecute el comando ifconfig para configurar el dispositivo eth0:0 con la direccin, mscara y broadcast apropiados. Por ejemplo, para configurar el dispositivo eth0:0 con la direccin 192.168.1.42, usara:
ifconfig eth0:0 192.168.1.42 netmask 255.255.255.0 broadcast 192.168.1.255

3.

Actualice la tabla arp. Necesitar la direccin hardware de su tarjeta Ethernet para esto. Ejecute el comando ifconfig -a para obtener esta informacin. Asumiendo que la direccin hardware de su tarjeta Ethemet es 00:10:4B:CB: 15:9F, escriba:
arp -s earth OO:10:4B:CB:15:9F pub

Con su direccin IP virtual establecida, ahora necesitar crear una estructura de directorios similar a la de un sitio annimo. Debera situarse en el directorio donde quiera hacer su sitio FTP virtual. Entonces aada el comando virtual al final de su archivo /etc/ftpaccess. El formato del comando es:
Virtual IP tipo-fich directorio

donde IP es la direccin IP de su servidor FTP virtual y tipo-fich es el tipo del archivo al que se refiere directorio. El valor de tipo-fich puede ser root, banner o logfile. Si tipo-fich es root, directorio debera ser el directorio donde se configuran los archivos de FTP annimo para el sitio virtual. Si tipo-fich es banner o logfile, la entrada directorio ser el archivo correspondiente. Por ejemplo, para configurar el servidor FTP virtual con la direccin IP 192.168.1.42, podra realizar mi configuracin de este modo:
virtual virtual virtual 192.168.1.42 192.168.1.42 192.168.1.42 root /home/earth banner /home/earth/.we1come.banner logfile /var/log/xferlog.earth

Nota Todos los archivos necesarios para el acceso FTP annimo deben configurarse en el directorio raz del servidor FTP virtual. En nuestro ejemplo, esto significa que los subdirectorios bin, etc, lib y pub estn en el directorio /home/earth.

Conclusiones
El demonio FTP de la Universidad de Washington (www.wu-ftpd.org) es un potente servidor de FTP que ofrece todas las caractersticas que debera necesitar para ejecutarse un servidor FTP comercial de un modo seguro. En este captulo, analizamos el proceso de compilacin, instalacin y configuracin de un servidor wu-ftpd. Especficamente, estudiamos:

Pgina 53

Todas las opciones de configuracin de wu-ftpd. Establecimiento de servidores FTP virtuales. Configuracin de servidores FTP annimos. Configuracin de servidores annimos en conjuncin con servidores FTP slo para usuarios normales. Detalles acerca del protocolo FTP y sus efectos en los firewalls.

Esta informacin es suficiente para dejar a su servidor FTP humeando durante un buen rato. Naturalmente, como todo medio escrito sobre software, este texto tiene edad, y la informacin se volver, de forma lenta pero segura, obsoleta. Asegrese de visitar la pgina Web de wu-ftpd de vez en cuando para enterarse no slo de los ltimos desarrollos, sino tambin de la documentacin ms nueva.

Pgina 54

Captulo 4
Introduccin al Cliente FTP
FTP (File Transfer Protocol) es un programa que se utiliza para transferir informacin, almacenada en ficheros, de una mquina remota a otra local, o viceversa. Para poder realizar esta operacin es necesario conocer la direccin IP (o el "nombre") de la mquina a la que nos queremos conectar para realizar algn tipo de transferencia. Es fundamental distinguir entre mquina local y mquina remota: Maquina Local: Es aquella desde donde nos conectamos para hacer la taransferencia, es decir, donde ejecutamos ftp. Maquina Remota: Es aquella a la que nos conectamos para transferir informacin.

Ejecucin del Cliente FTP


Los pasos que hay que seguir para hacer FTP de una mquina (local) a otra (remota), son los siguientes: 1. Entrar en la mquina local (es decir, en la que vamos a trabajar fsicamente) 2. Una vez dentro, nos conectaremos a la mquina remota, para lo cual haremos ftp, de una de las dos formas siguientes:
$ ftp nombre o direccin IP de la mquina remota

o bin
$ ftp FTP> open nombre o direccin IP de la mquina remota

Una vez hecho esto nos preguntar el nombre de usuario y la contrasea, es decir: Username nombre de usuario password palabra clave donde el nombre de usuario puede ser: 1. El username (login) de una cuenta en la mquina a la que voy a acceder; o bien 2. anonymous: para poder acceder al servidor de ficheros de la mquina remota. En este caso es aconsejable (y a veces obligatorio) introducir como palabra clave, la direccin de correo electrnico. Una vez hecho esto, ya se ha establecido comunicacin con la mquina remota a travs de FTP; por lo que el prompt del sistema desaparece y aparece el prompt del FTP, que es:
FTP>

FTP-0>

A partir de este momento ya se pueden utilizar los comandos especficos del FTP.

Comandos del Cliente FTP


Salir de una sesin de FTP
Para salir de una sesin de FTP, se pueden utilizar los siguientes comandos:
close quit bye

Termina la sesin de FTP, pero no sale del programa. Termina la sesin de FTP y sale del programa.

Obtener Ayuda
FTP posee varios comandos para obtener ayuda de cmo utilizarlo:
help ?

D una lista de los comandos del FTP de la mquina local

Pgina 55

help comando ? comando

D informacin sobre el comando especificado, correspondeinte a la mquina local

Manipulacin de Archivos y Directorios


A continuacin se da una relacin de comandos del FTP referentes al manejo de archivos y directorios.
lcd directorio-local lcd unidad: cd directorio-remoto lls directorio-local dir directorio-remoto ls directorio-remoto ! comando delete fichero-remoto delete ficheros-remotos rmdir directorio-remoto mkdir directorio-remoto pwd

Para moverse de un directorio a otro en la mquina local Para cambiar de una unidad de disco a otra, en el caso particular de que la mquina local esa un PC Para moverse de un directorio a otro en la mquina remota Para listar el contenido de un directorio en la mquina local Para listar el contenido de un directorio en la mquina remota Para ejecutar un comando en la mquina local Para borrar un fichero en la mquina remota Para borrar varios ficheros en la mquina remota Para borrar un directorio en la mquina remota Para crear un directorio en la mquina remota Para saber el directorio en el que se est, en la mquina remota

Transferencia de Archivos
Tipos de Transferencia
Con FTP se puede realizar la transferencia de informacin en dos formatos diferentes: ascii y binario. Por defecto, la transferencia se hace en modo ascii. Para saber el tipo de formato que est activado para realizar las transferencias, se utiliza el comando:
type

Para hacer la transferencia en formato ascii (lo hace por defecto), se utiliza el comando:
ascii

type ascii

Para hacer la transferencia en formato binario, se utiliza el comando:


binary

type binary

Transferencia Interactiva
De acuerdo a como est configurado, el cliente FTP, puede solicitar confirmacin, o no, de cada archivo que va a transferir: esta configuracin se llama Intercative Mode. si est en Interactive mode on, va a pedir confirmacin antes de transferir cada uno de los ficheros especificados. si est en Interactive mode off, no va a pedir confirmacin antes de transferir cada uno de los ficheros especificados. Para cambiar de mode on a off, o viceversa, se utiliza el comando prompt, cuya sintaxis, es simplemente:

Pgina 56

prompt

Transferencia de archivos desde la mquina Remota a la Local


Para transferir un fichero de la mquina remota a la local, se utiliza el comando get o recv (ambos son equivalentes). La sintaxis es:
get archivo-remoto

get (remote-file) archivo-remoto

Si se quiere cambiar el nombre del archivo que se va a transferir, se pondr:


get archivo-remoto archivo -local

Si se quieren transferir varios archivos de la mquina remota a la local, se utiliza el comando mget. La sintaxis es:
mget lista de nombres de archivos-remotos

mget (remote-files) lista de nombres de archivos-remotos

Nota Los nombres de los ficheros van separados por blancos y pueden incluir los metacaracteres * y ?.

Transferencia de archivos desde la mquina Local a la Remota


Para transferir un fichero de la mquina local a la remota, se utiliza el comando put o send (ambos son equivalentes). La sintaxis es:
put archivo-local

put (File) archivo-local

Si se quiere cambiar el nombre del archivo que se va a transferir, se pondr:


put archivo-local archivo-remoto

send archivo-local archivo-remoto

Si se quieren transferir varios archivos de la mquina local a la remota, se utiliza el comando mput. La sintaxis es:
mput lista de nombres de archivos-locales

mput (remote-files) lista de nombres de archivos-locales

Nota Los nombres de los ficheros van separados por blancos y pueden incluir los metacaracteres * y ?.

Pgina 57

Captulo 5
Introduccin a Servidores de Correo Elecrnico (e-mail)
El e-mail (correo electrnico) se ha transformado en una herramienta casi indispensable debido en gran parte a su velocidad, es gratis y simple de usar. Hay 2 componentes que deben funcionar para hacer e-mail. Por un lado el cliente (software que utilizan quienes envan y reciben correo). Ejemplos de clientes: Outlook Express o Outlook de Microsoft y una variedad de clientes del mundo Open Source. Para Linux: Evolution, Pine (desarrollado por la Washington University) y Eudora son solo algunos ejemplos. Por el otro existe una infraestructura de servidores que realizan el envo, recepcin y distribucin. Ejemplo es Exchange 2000 de MS. Nuevamente el mundo Linux tiene varias alternativas. Algunas comerciales y otras Open Source y gratuitas. En la tabla 1 se puede ver una lista (en las diferentes columnas) de las mas reconocidas. Cada fila nos da su precio junto a las caractersticas mas importantes a tener en cuenta. La ltima fila nos da una clasificacin de 1 a 10 (10 siendo considerado el mejor). Cuando se enva un e-mail este viaja entre 2 servidores de mail (mail servers). Se utiliza un protocolo conocido como SMTP (Simple Mail Transfer Protocol) que como lo indica su nombre realiza la transferencia entre los servidores. Como se distribuye el mail una vez que lleg a destino depender de cmo fue configurado.

Funciones de los mail servers


Los servidores de correo realizan dos funciones diferentes 1. 2. Relay (de posta) Recoleccin (Collection Server)

Lo normal es que un servidor cumpla ambos roles (de relay y collection). Uno puede levantar un servidor SMTP propio para enviar y recibir correo pero se debe poner extremo cuidado en su configuracin si no se quiere perder mails o enviar mails incorrectamente. Es muy importante al configurar el relay de no permitir que cualquiera (everybody) pueda acceder a el y usarlo como relay. Los que realizan Spam muy probablemente lo usaran y ser ese server el culpable de la accin.

Relay
Un Relay Mail Server har un forward de un e-mail a otro servidor SMTP. Esto Sucede cuando los clientes se conectan a un SMTP server para enviar correo. La mayora de los ISPS (Internet Service Providers, Proveedores de Internet) tienen un SMTP Relay server. Podra ser que un usuario tuviese su propio SMTP server y NO necesitase usar un Relay.

Recoleccin
Cuando llega un e-mail (por ejemplo a jose@cortech.com.ar) a un collection-server que regentea un dado dominio (cortech.com.ar), este lo distribuye al mailbox (buzn) correspondiente, esperando que el usuario Jos lo recoja usando el protocolo POP3 (Post Office Protocol3), IMAP4 (Internet Message Ardes Protocol), o un cliente de mail basado en comandos de shell como Mutt.

Spam y Virus
Un mail server debe poder ayudar a combatir: 1. Spam 2. Virus Spam son e-mails que le llegan al usuario y que l no ha solicitado. Spam es un trmino muy usado para el llamado email no solicitado (Unsolicited Bulk o Comercial): UBE y UCE. Es casi imposible que el servidor de correo filtre 100% el Spam pero deber s limitarlo lo mximo posible. Un modo de evitar Spam es usar listas llamadas Realtime Blackhole List (RBL). Un ejemplo es MAPS que le permite al servidor de mails hacer DNS lookups de IPS y ver si estn en las listas o no. Este es un servicio pago aunque existen alternativas gratis como DNSRBL.

Pgina 58

Los virus son una amenaza que llega junto a nuestros e-mails. Una vez que entran a nuestro sistema pueden atacarlo y/o usarlo como base para atacar otros sistemas. El mail server puede ayudar intentando verificar si un virus viene en el mail. Existen muchos programas comerciales que permiten chequear por virus los e-mails que le llegan. A continuacin analizaremos los servidores de correo ms populares. Algunos son Open Source y otros comerciales. Haremos una breve descripcin y analizaremos sus caractersticas referidas a: seguridad y capacidad de filtrado (Spam y virus)

Servidores de e-mail conocidos


QMail
Un servidor de correo que fue diseado bajo las normas impuestas en los RFC de la IETF. URL: www.qmail.org Costo: $0,QMail fue diseado respondiendo en un 100% a los RFC (Request For Comments) de la IETF. Se destaca sus caractersticas de seguridad al punto que existe una recompensa de U$10,000 para cualquiera que pueda realizar un exploit de qmail. Aun esa recompensa permanece sin haber sido reclamada. Instalar qmail es simple aunque no es el estndar ./configure && make. Configurarlo resulta an ms fcil. Tiene una opcin en el make de modo de poder colocar algunas entradas de configuracin. Con esto es suficiente para arrancarlo funcionando en una configuracin bsica. QMail tiene archivos de configuracin, mayormente de una lnea en /var/qmail/control. All entramos dominios y hostnames para envo y recepcin. Cada archivo tiene un nombre simple, por eso es fcil adivinar cul se necesita editar para un propsito especfico. QMail puede manejar reparto por mbox o Maildir. Puede adems canalizar su mail a travs de cualquier aplicacin que usted quiera, como por ejemplo SpamAssassin. Aunque no tiene ningn soporte para DNSRBL o para chequear los virus, es fcil configurar qmail para que mande todos los mails va un chequeador de virus o un filtro de correo electrnico basura (spam filter). Uno de los mayores problemas con qmail es que levanta (forks) un proceso para cada mail individual que trate de enviar. Ya sean sea locales o remotos. Por defecto, simultneamente, qmail enviar 20 mensajes remotos y 10 mensajes locales, lo cual debera ser ms que suficiente para la mayora de los sistemas. qmail hace bsicamente reparto de mails pero existen ms que suficientes parches disponibles ofreciendo encriptacin TLS, configuracin MySQL y conectividad IPv6 como tambin mejoras en el rendimiento y almacenamiento de colas para sistemas con grandes cantidades de mail. Si utiliza los parches de http://kldp.org/-enunjea/qmail_cocktail.php, qmail es un servidor de mail capaz de poder manejar grandes volmenes de trafico. Muchas grandes organizaciones usan qmail.

SendMail
Es el servidor de mail ms popular de todo el mundo UNIX. URL: www.sendmail.org Costo: $0 Sendmail es el nombre de servidor de correo mas popular del mundo Linux (Unix en general). Y, se instala por defecto en casi todas las distribuciones. Es conveniente saber manejar sendmail y quizas luego usar otro. Escalea muy bien y tiene un sinnumero de caractersticas, incluyendo el soporte DNSRBL. El mayor problema con sendmail es que su sistema de configuracin est basado en m4. Este es un leguaje macro no difcil de dominar. Pero si implica que usted debe dedicarle una significativa cantidad de tiempo para descifrar cmo configurar sendmail de una forma segura y que haga lo que usted desee. A menos que uno desee tener un sendmail muy a medida tener que programar en m4 no es una buena opcin. Por suerte la configuracin por defecto es suficientemente buena para tener un servidor de correo bsico.

Pgina 59

Si se puede dominar m4 (a travs de la documentacin sendmail o uno de los numerosos libros que existen) sendmail es un servidor muy poderoso y capaz. Como es tan popular existe una comunidad de usuarios de sendmail en internet muy grande y conocedora capaz de ayudarnos. Muchas distribuciones se estn alejando de sendmail por sistemas ms simples como Postfix y Exim. Si usted elige sendmail, asegrese de estar al tanto con lo ltimo en seguridad, ya que sendmail no tiene gran fama con los exploits. De todos modos si uno actualiza constantemente los sucesivos parches nos cubren.

Postfix
Es muy fcil de configurar y esta resultando un reemplazo para sendmail. URL: www.postfix.org Costo: $0 Postfix comenz originalmente como una alternativa (de ms simple configuracin) a sendmail. Desde su concepcin como VMailer se ha desarrollado en un servidor de mail muy bueno y de sencilla puesta en marcha. Cambiar a Postix si esta sendmail funcionando es relativamente directo aunque deberemos reconfigurar bastante. Postfix puede ser usado para un amplio rango de aplicaciones, desde un simple servicio de mail, hasta un servidor de mail en gran escala. Lo mas comun es verlo como un simple re-enviador en workstations. Postfix puede fcilmente estar configurado para que lea opciones especficas de configuracin, incluyendo dominios virtuales y aliases desde un archivo externo a la configuracin principal. De esta forma es fcil agregar ms dominios. Desafortunadamente, ms all de dbm, Postfix no soporta el uso de bases de datos como MySQL o PostgreSQL, para almacenar detalles de configuracin Por esto no es ideal si se desea realizar una reconfiguracin real-time. Mandrake Linux ha usado Postfix durante bastante tiempo como servidor SMTP por defecto. Esta facilidad en la configuracin ha hecho maravillas en su uso, y por esto, la mayora de las personas ya no lo abandonarn. Para configuracin simple de mail servers Postfix es una opcion excelente. Si lo que uno est manejando es un gran nmero de dominios y quiere configuraciones complejas de dominios virtuales otros servidores pueden ser ms apropiados.

Exim
Es muy poderoso, escalable y bien documentado. URL: www.exim.org Costo: $0 Fue desarrollado en la Universidad de Cambridge, UK. Exim es un servidor de mail muy poderoso que ha sido diseado para manejar grandes cantidades de mail y para limitar a UCE/UBE (spam) en la red. Muchas empresas que tienen gran cantidad de trfico, incluyendo Sourceforge, usan Exim. Esto se debe bsicamente por como escalea y ya que puede ser ajustado especficamente para las necesidades de los usuarios. Aunque usted tenga cinco usuarios detrs de su firewall o diez de mil cuentas, Exim puede manejar un gran rango de aplicaciones y ciertamente puede lidiar con casi todo lo que le den. Exim tiene una estructura de configuracin muy completa, ofreciendo de todo desde ACLs (Access Control Lists) a soporte de base de datos desde MySQL y PostgreSQL a Oracle y DB2 de IBM. Sin embargo, no hay necesidad de aprender todos los aspectos de configuracin para tener a Exim funcionando, ya que hay gran cantidad de documentos disponibles en el sitio de Exim. Expandir las capacidades del servidor es realmente fcil y la flexible estructura de configuracin da una enorme cantidad de opciones para cada segmento de la organizacin. Muchas distribuciones, incluyendo Debian ofrecen Exim y sus configuraciones por defecto son muy completas y seguras. Estas distribuciones ofrecen herramientas de configuracin que simplifican enormemente el setup. Como con la mayora de las cosas del mundo Linux, OReilly ha producido un libro dedicado a Exim. Si Ud instala exim es un must. Aunque, la documentacin propia del sitio de Exim es para recomendar. Exim es uno de los ms poderosos sistemas de mail Open Source disponibles. Si lo comparo con sendmail debemos destacar la sencillez de su configuracin. Y, no hay ninguna caracteristica esencial que no tenga. Esto lo diferencia de qmail ya que uno debe en este ltimo depender de esfuerzo de terceros para tener ciertas caracteristicas especiales.

Pgina 60

SuSE Linux eMail Server 3.1


Toda su configuracin puede hacer va una interfase web. URL: www.suse.com Costo: U$S 999,SuSE siempre ha sido bien conocido por su muy popular distribucin de Linux. Por esto no es sorprendente que ofrezcan un producto excelente para servidor de correo. Como muchos de sus otros productos, estn apuntando con este servidor a compaas de tamao medio que puedan mantener su propio sistema de email y pagar los fees correspondientes. El sistema ofrecido por SuSE est basado en un servidor SMTP e IMAP. Esto se complementa con una muy simple administracin mediante un Web front-end. Todo lo que el administrador necesita hacer puede hacerse por medio de esta interfase. Por tanto no hay necesidad de configuracin manual o investigaciones a fondo de las complejidades de SMTP. Por supuesto, entender es siempre requerido y, ciertamente uno no podra utilizarlo sin un poco de conocimiento sobre cmo funciona email. Pero no se requiere un nerd de redes o de Linux para hacer que funcione con xito. Junto con los emails, la interfase maneja un calendario, la agenda de direcciones y una lista de tareas a realizar. A pesar de que cada una de estas son caractersticas son posible realizarlas por otros productos el hecho es que tenerlo disponible en un solo lugar, accesible a travs de la red significa una ventaja para cualquiera que administre un servidor de mail. SuSE especifica que su sistema puede manejar alrededor de dos millones de usuarios, con entre cincuenta y doscientas personas accediendo al sistema simultneamente montando un servidor de capacidad razonable. Esto es mas que suficiente en la mayora de las situaciones. Este sistema est actualmente basado alrededor de Postfix utilizando un servidor LDAP para uso de la administracin de usuarios. Por esto no es posible construir un sistema similar Open Source sin tener que gastar dinero en desarrollo. Como uno esperara, es la facilidad de la configuracin la que atrae a las personas a este sistema de SuSE. Aunque por su costo de U$S 999,- vale la pena ver las alternativas de Open Source.

GLMail
Poderoso, fcil de usar y de instalar URL: www.ntmail.co.uk Costo: U$S 800,Gordano ha producido durante varios aos un servidor de mail muy popular para Windows NT. Recientemente ha decidido migrarlo a Linux y otras plataformas Unix. La lista de caractersticas para GLMail son impresionantes junto a su facilidad de instalacin y configuracin. Es ideal para aquel que deasea un mail server en servicio, pero no desea perder el tiempo tratando de comprender qu est haciendo. La instalacin es un proceso simple y GLMail no depende de ninguna distribucin especfica de Linux. Esto lo hace muy interesante para uno que est familiarizado con un estilo particular de Linux y no desea cambiar para solo instalar su servidor de mail. Todo es manejado a travs de una interfase Web, permitiendo el control completo del servidor. Esto mantiene escondida del administrador los detalles de configuracin. GLMail es particularmente popular por su capacidad de filtrado anti-virus y anti-spam. Es bueno bloqueando y tiene un bajo ndice de falsos positivos lo que da confianza en el sistema. De este modo los usuarios no deben preocuparse que su servidor de mail devora sus mensajes importantes pensando que contienen algo desagradable o que son de una fuente spam. El soporte disponible para GLMail es ciertamente muy bueno y diferentes contratos pueden ser comprados dependiendo de las necesidades de nuestro propio negocio. Si usted est interesado en mirar a GLMail, puede bajarse un trial de 28 dias que est disponible en su web page. Con el filtrado de spam y el virus que tiene (lo cual generalmente no est disponible al mismo nivel con los productos de Open Source), GLMail est cerca de ser un killer application.

Pgina 61

Captulo 6
Introduccin a SendMail
La mayora de las distribuciones de GNU/Linux incluyen de manera predeterminada Sendmail, un poderoso servidor de correo electrnico ampliamente utilizado alrededor del mundo. Este requiere de una correcta configuracin para su mejor aprovechamiento y poder disponer de un nivel de seguridad aceptable. Es muy comn que los administradores inexpertos no se molesten siquiera en establecer un nivel de seguridad apropiado en sus redes locales, y mucho menos en el servidor de correo, el cual ven como un servicio ms. Es un error comn el configurar Sendmail para que permita enviar correo como sea a cualquier costo. Usualmente este costo significa convertirse en Open Relay, y por lo tanto en un paraso para personas que se dedican al envo masivo de correo comercial (Spam).

Requisitos previos
Usted tiene un dominio propio. o Que tiene un IP permanente o esttica, y no una dinmica, y que se trata de un enlace dedicado, como E1, DSL, T1 o T3, etc. Es decir, usted NO se conecta a Internet por medio de un modem. Tiene perfectamente configurada su red local y parmetros de red del servidor. o Que usted utiliza Red Hat Linux 7.2, 7.3, 8.0 o 9 o al menos Sendmail-8.11.6 y xinetd-2.3.3. Enviar y recibir correo electrnico. Establecer un buen nivel de seguridad. Filtrar el molesto Spam, o correo masivo no solicitado, que a muchos nos aqueja a diario, para toda su red local.

Resultados a obtener

Requerimientos mnimos
Un servidor con al menos 32 MB RAM y alguna distribucin de GNU/Linux instalada. Deben de estar bien configurado los parmetros de red y un servidor de nombres -DNS-. Preferentemente, aunque no indispensable, deber utilizar DOS tarjetas de red. Lo que si ser obligatorio es disponer de al menos dos interfaces. Una para acceder a la red local y otra para acceder hacia Internet (una de estas puede ser virtual, o eth0:0, o bien una segunda interfaz real, o eth1). Tener instalados los paquetes sendmail, sendmail-cf, m4, make, xinet e imap que vienen incluidos en el CD de instalacin o servidor FTP de actualizaciones para la versin de la distribucin que usted utilice.

Tmese en consideracin que, de ser posible, se debe utilizar la versin estable ms reciente de todo el software que vaya a instalar al realizar los procedimientos descritos en este captulo, a fin de contar con los parches de seguridad necesarios. Ninguna versin de sendmail anterior a la 8.11.6 se considera como apropiada debido a fallas de seguridad de gran importancia, y ningn administrador competente utilizara una versin inferior a la 8.11.6. Por favor visite el sito Web de su distribucin predilecta para estar al tanto de cualquier aviso de actualizaciones de seguridad. Ejemplo: para Red Hat Linux 7.2, 7.3, 8.0 y 9 hay paquetes de actualizacin en los siguientes enlaces: ftp://updates.redhat.com/7.2/en/os/i386/, si su distribucin es Red Hat Linux 7.2 ftp://updates.redhat.com/7.3/en/os/i386/, si su distribucin es Red Hat Linux 7.3 ftp://updates.redhat.com/8.0/en/os/i386/, si su distribucin es Red Hat Linux 8.0 ftp://updates.redhat.com/9/en/os/i386/, si su distribucin es Red Hat Linux 9

Pgina 62

Procedimientos
Preparativos
Lo primero ser establecer que es lo que tenemos en la red local y que es lo que haremos con esto. Determine que mquinas de su red local, especficamente las direcciones IP, necesitan poder enviar y recibir correo electrnico y cuales NO deben hacerlo. Determine como desea recuperar los mensajes de correo electrnico que arriben al servidor. POP3 o IMAP. POP3 Es el protocolo de recuperacin de correo electrnico ms utilizado en la actualidad. Permite recuperar el correo pero este se almacenar localmente en el disco duro de las mquinas de los usuarios. IMAP Este protocolo almacena el correo electrnico, y permite la creacin de carpetas de usuario, en el servidor. De modo tal, los usuarios pueden acceder desde cualquier parte del mundo a su buzn de correo y carpetas personales. IMAP tambin facilita la utilizacin de webmails (basado sobre Web). Determine el nombre de todos los posibles nombres o aliases que tenga su servidor. Ejemplo: mi-dominio.org, mail.midominio.org, servidor.mi-dominio.org, mi-red-local.org, mail.mi-red-local.org, etc. Configure sus dos tarjetas de red, una para la red local con la IP invlida y otra para la direccin IP real.

Verificando parmetros de red


Debe de definirse el nombre de la mquina que funcionar como servidor de correo. Normalmente utilizaremos el esquema nombre_maquina.nombre_dominio. Un ejemplo del nombre de la mquina servidor sera linux.mi-dominio.org o servidor.mi-dominio.org. As que asegrese de que esto se encuentra perfectamente definido en /etc/sysconfig/network y /etc/hosts: Para /etc/sysconfig/network, es decir, el nombre que asignamos a la mquina, correspondera lo siguiente:
NETWORKING=yes HOSTNAME=servidor.mi-dominio.org GATEWAY=148.243.59.254

Para /etc/hosts, es decir, la informacin de los hosts y las direcciones IP, correspondera lo siguiente:
# Primero, verificamos que las direcciones IP del servidor estn asociadas # correctamente a un nombre largo y uno corto. 127.0.0.1 localhost.localdomain localhost 148.243.59.1 servidor.mi-dominio.org servidor 192.168.1.1 intranet.mi-red-local.org intranet # # Opcionalmente aqu puede agregar tambin los nombres # y direcciones IP de la mquinas de la red local. 192.168.1.2 maquina2.mi-red-local.org maquina2 192.168.1.3 maquina3.mi-red-local.org maquina3 192.168.1.4 maquina4.mi-red-local.org maquina4

Adems de configurar correctamente un DNS que defina bien los DNS o servidores de nombres de dominios correspondientes. Esto debe hacerlo en el archivo /etc/resolv.conf, de un modo similar al siguiente:
search mi-dominio.org # # El IP de la mquina que tiene el DNS de la red local. nameserver 192.168.1.1 # # Los DNS del proveedor de servicios. nameserver 200.33.213.66

Pgina 63

nameserver 200.33.209.66

Cuidado Se requiere un DNS perfectamente configurado para que este resuelva su nombre de dominio utilizado por el servidor de correo. Recuerde que el correo proveniente de otros equipos no llega solo al servidor ni tampoco por arte de magia.

Confirmando la instalacin de Sendmail


Es importante tener instalados los paquetes sendmail y sendmail-cf, ya que utilizaremos el servidor de correo Sendmail para el envo de nuestros mensajes y filtrado de correo masivo no solicitado -Spam-, y el paquete imap, mismo que nos permitir utilizar el servicio de IMAP y POP3. Para asegurarse de esto, se puede utilizar la siguiente lnea de comando:
rpm -q sendmail sendmail-cf imap

Esto debe devolvernos las versiones de sendmail, sendmail-cf e imap que se tienen instaladas. Si no fuese as, debemos cambiar a root, si an no lo hemos hecho, y proceder a instalar estos paquetes. Introduzca el CDROM de su distribucin y siga el siguiente procedimiento:
mount /mnt/cdrom cd /mnt/cdrom/RedHat/RPMS rpm -Uvh sendmail-* imap-* cd $home eject /mnt/cdrom

Debe instalar sendmail-cf o no le ser posible compilar los archivos necesarios para configurar Sendmail. El paquete imap, el cual contiene el daemon para los protocolo POP3, es el que nos permitir recuperar el correo desde el servidor en el resto de las mquinas que integren la red local con cualquier cliente de correo electrnico.

Configurando Sendmail
Antes de continuar, debemos editar el fichero /etc/mail/local-host-names, en el cual deberemos de listar todos y cada uno de los aliases que tenga el servidor que estamos configurando, as como los posibles sub-dominios. Es decir, todos los dominios para los cuales estaremos recibiendo correo en un momento dado.
# Incluya aqu todos los dominios para los que reciba correo. # mi-dominio.org servidor.mi-dominio.org mail.mi-dominio.org mi-red-local.org intranet.mi-red-local.org mail.mi-red-local.org

Procederemos entonces a modificar el archivo /etc/mail/sendmail.mc, con previo respaldo del original, a fin de preparar la configuracin del servidor de correo.
cp /etc/mail/sendmail.mc /etc/mail/etc/sendmail.mc.default

Por defecto Sendmail solo permitir enviar correo solo desde la interfaz loopback (127.0.0.1), es decir, desde el mismo servidor. Si queremos poder enviar correo desde las mquinas de la red local comente la lnea o bien, si tiene varias, aada las interfaces desde las cuales se quiere que escuche peticiones sendmail y omita las que no deben, como sera una red local secundaria con restricciones.
dnl DAEMON_OPTIONS(`Port=smtp,Addr=127.0.0.1, Name=MTA')

Pgina 64

Si queremos filtrar Spam de manera eficiente, la mejor manera de empezar a hacerlo es rechazando correo proveniente de dominios NO RESUELTOS, es decir dominios que no estn registrados en un DNS y que por lo tanto SON invlidos. Para tal fin, a menos que se requiera lo contrario, es necesario mantener comentada la siguiente lnea:
dnl FEATURE(`accept_unresolvable_domains')dnl

Es necesario establecer que mi-dominio.org corresponder a la mscara que utilizaremos para todo el correo que emitamos desde nuestro servidor. Debe, por tanto, aadirse una lnea justo debajo de MAILER(procmail)dnl y que va del siguiente modo:
MASQUERADE_AS(mi-dominio.org)dnl

Todo en conjunto, ya modificado, debera de quedar del siguiente modo (NO modificar el orden de las lneas): Configuracin recomendada de sendmail.mc para Red Hat Linux 7.x.
divert(-1) include(`/usr/share/sendmail-cf/m4/cf.m4') VERSIONID(`linux setup for Red Hat Linux')dnl OSTYPE(`linux') define(`confDEF_USER_ID',``8:12'')dnl undefine(`UUCP_RELAY')dnl undefine(`BITNET_RELAY')dnl define(`confAUTO_REBUILD')dnl define(`confTO_CONNECT', `1m')dnl define(`confTRY_NULL_MX_LIST',true)dnl define(`confDONT_PROBE_INTERFACES',true)dnl define(`PROCMAIL_MAILER_PATH',`/usr/bin/procmail')dnl define(`ALIAS_FILE', `/etc/aliases')dnl define(`STATUS_FILE', `/var/log/sendmail.st')dnl define(`UUCP_MAILER_MAX', `2000000')dnl define(`confUSERDB_SPEC', `/etc/mail/userdb.db')dnl define(`confPRIVACY_FLAGS', `authwarnings,novrfy,noexpn,restrictqrun')dnl define(`confAUTH_OPTIONS', `A')dnl dnl TRUST_AUTH_MECH(`DIGEST-MD5 CRAM-MD5 LOGIN PLAIN')dnl dnl define(`confAUTH_MECHANISMS', `DIGEST-MD5 CRAM-MD5 LOGIN PLAIN')dnl dnl define(`confTO_QUEUEWARN', `4h')dnl dnl define(`confTO_QUEUERETURN', `5d')dnl dnl define(`confQUEUE_LA', `12')dnl dnl define(`confREFUSE_LA', `18')dnl dnl FEATURE(delay_checks)dnl FEATURE(`no_default_msa',`dnl')dnl FEATURE(`smrsh',`/usr/sbin/smrsh')dnl FEATURE(`mailertable',`hash -o /etc/mail/mailertable')dnl FEATURE(`virtusertable',`hash -o /etc/mail/virtusertable')dnl FEATURE(redirect)dnl FEATURE(always_add_domain)dnl FEATURE(use_cw_file)dnl FEATURE(use_ct_file)dnl FEATURE(local_procmail)dnl FEATURE(`access_db')dnl FEATURE(`blacklist_recipients')dnl EXPOSED_USER(`root')dnl dnl DAEMON_OPTIONS(`Port=smtp,Addr=127.0.0.1, Name=MTA') dnl FEATURE(`accept_unresolvable_domains')dnl dnl FEATURE(`relay_based_on_MX')dnl FEATURE(dnsbl, `blackholes.mail-abuse.org', `Rejected - see www.mail-abuse.org/rbl/')dnl FEATURE(dnsbl, `dialups.mail-abuse.org', `Rejected - see www.mail-abuse.org/dul/')dnl FEATURE(dnsbl, `relays.mail-abuse.org', `Rejected - see work-rss.mail-abuse.org/rss/')dnl FEATURE(`delay_checks')dnl MAILER(smtp)dnl MAILER(procmail)dnl MASQUERADE_AS(mi-dominio.org)dnl

Configuracin recomendada de Sendmail.mc para Red Hat Linux 8.0 y 9


divert(-1)dnl

Pgina 65

dnl # dnl # This is the sendmail macro config file for m4. If you make changes to dnl # /etc/mail/sendmail.mc, you will need to regenerate the dnl # /etc/mail/sendmail.cf file by confirming that the sendmail-cf package is dnl # installed and then performing a dnl # dnl # make -C /etc/mail dnl # include(`/usr/share/sendmail-cf/m4/cf.m4')dnl VERSIONID(`setup for Red Hat Linux')dnl OSTYPE(`linux')dnl dnl # dnl # Uncomment and edit the following line if your outgoing mail needs to dnl # be sent out through an external mail server: dnl # dnl define(`SMART_HOST',`smtp.your.provider') dnl # define(`confDEF_USER_ID',``8:12'')dnl define(`confTRUSTED_USER', `smmsp')dnl dnl define(`confAUTO_REBUILD')dnl define(`confTO_CONNECT', `1m')dnl define(`confTRY_NULL_MX_LIST',true)dnl define(`confDONT_PROBE_INTERFACES',true)dnl define(`PROCMAIL_MAILER_PATH',`/usr/bin/procmail')dnl define(`ALIAS_FILE', `/etc/aliases')dnl dnl define(`STATUS_FILE', `/etc/mail/statistics')dnl define(`UUCP_MAILER_MAX', `2000000')dnl define(`confUSERDB_SPEC', `/etc/mail/userdb.db')dnl define(`confPRIVACY_FLAGS', `authwarnings,novrfy,noexpn,restrictqrun')dnl define(`confAUTH_OPTIONS', `A')dnl dnl # dnl # The following allows relaying if the user authenticates, and disallows dnl # plaintext authentication (PLAIN/LOGIN) on non-TLS links dnl # dnl define(`confAUTH_OPTIONS', `A p')dnl dnl # dnl # PLAIN is the preferred plaintext authentication method and used by dnl # Mozilla Mail and Evolution, though Outlook Express and other MUAs do dnl # use LOGIN. Other mechanisms should be used if the connection is not dnl # guaranteed secure. dnl # dnl TRUST_AUTH_MECH(`EXTERNAL DIGEST-MD5 CRAM-MD5 LOGIN PLAIN')dnl dnl define(`confAUTH_MECHANISMS', `EXTERNAL GSSAPI DIGEST-MD5 CRAM-MD5 LOGIN PLAIN')dnl dnl # dnl # Rudimentary information on creating certificates for sendmail TLS: dnl # make -C /usr/share/ssl/certs usage dnl # dnl define(`confCACERT_PATH',`/usr/share/ssl/certs') dnl define(`confCACERT',`/usr/share/ssl/certs/ca-bundle.crt') dnl define(`confSERVER_CERT',`/usr/share/ssl/certs/sendmail.pem') dnl define(`confSERVER_KEY',`/usr/share/ssl/certs/sendmail.pem') dnl # dnl # This allows sendmail to use a keyfile that is shared with OpenLDAP's dnl # slapd, which requires the file to be readble by group ldap dnl # dnl define(`confDONT_BLAME_SENDMAIL',`groupreadablekeyfile')dnl dnl # dnl define(`confTO_QUEUEWARN', `4h')dnl dnl define(`confTO_QUEUERETURN', `5d')dnl dnl define(`confQUEUE_LA', `12')dnl dnl define(`confREFUSE_LA', `18')dnl define(`confTO_IDENT', `0')dnl dnl FEATURE(delay_checks)dnl FEATURE(`no_default_msa',`dnl')dnl FEATURE(`smrsh',`/usr/sbin/smrsh')dnl FEATURE(`mailertable',`hash -o /etc/mail/mailertable.db')dnl FEATURE(`virtusertable',`hash -o /etc/mail/virtusertable.db')dnl FEATURE(redirect)dnl FEATURE(always_add_domain)dnl FEATURE(use_cw_file)dnl

Pgina 66

FEATURE(use_ct_file)dnl dnl # dnl # The -t option will retry delivery if e.g. the user runs over his quota. dnl # FEATURE(local_procmail,`',`procmail -t -Y -a $h -d $u')dnl FEATURE(`access_db',`hash -T -o /etc/mail/access.db')dnl FEATURE(`blacklist_recipients')dnl EXPOSED_USER(`root')dnl dnl # dnl # The following causes sendmail to only listen on the IPv4 loopback address dnl # 127.0.0.1 and not on any other network devices. Remove the loopback dnl # address restriction to accept email from the internet or intranet. dnl # dnl DAEMON_OPTIONS(`Port=smtp,Addr=127.0.0.1, Name=MTA')dnl dnl # dnl # The following causes sendmail to additionally listen to port 587 for dnl # mail from MUAs that authenticate. Roaming users who can't reach their dnl # preferred sendmail daemon due to port 25 being blocked or redirected find dnl # this useful. dnl # dnl DAEMON_OPTIONS(`Port=submission, Name=MSA, M=Ea')dnl dnl # dnl # The following causes sendmail to additionally listen to port 465, but dnl # starting immediately in TLS mode upon connecting. Port 25 or 587 followed dnl # by STARTTLS is preferred, but roaming clients using Outlook Express can't dnl # do STARTTLS on ports other than 25. Mozilla Mail can ONLY use STARTTLS dnl # and doesn't support the deprecated smtps; Evolution <1.1.1 uses smtps dnl # when SSL is enabled-- STARTTLS support is available in version 1.1.1. dnl # dnl # For this to work your OpenSSL certificates must be configured. dnl # dnl DAEMON_OPTIONS(`Port=smtps, Name=TLSMTA, M=s')dnl dnl # dnl # The following causes sendmail to additionally listen on the IPv6 loopback dnl # device. Remove the loopback address restriction listen to the network. dnl # dnl # NOTE: binding both IPv4 and IPv6 daemon to the same port requires dnl # a kernel patch dnl # dnl DAEMON_OPTIONS(`port=smtp,Addr=::1, Name=MTA-v6, Family=inet6')dnl dnl # dnl # We strongly recommend not accepting unresolvable domains if you want to dnl # protect yourself from spam. However, the laptop and users on computers dnl # that do not have 24x7 DNS do need this. dnl # dnl FEATURE(`accept_unresolvable_domains')dnl dnl # dnl FEATURE(`relay_based_on_MX')dnl dnl # dnl # Also accept email sent to "localhost.localdomain" as local email. dnl # LOCAL_DOMAIN(`localhost.localdomain')dnl dnl # dnl # The following example makes mail from this host and any additional dnl # specified domains appear to be sent from mydomain.com dnl # MASQUERADE_AS('mi-dominio.org')dnl dnl # dnl # masquerade not just the headers, but the envelope as well dnl # FEATURE(masquerade_envelope)dnl dnl # dnl # masquerade not just @mydomainalias.com, but @*.mydomainalias.com as well dnl # dnl FEATURE(masquerade_entire_domain)dnl dnl # dnl MASQUERADE_DOMAIN(localhost)dnl dnl MASQUERADE_DOMAIN(localhost.localdomain)dnl dnl MASQUERADE_DOMAIN(mydomainalias.com)dnl dnl MASQUERADE_DOMAIN(mydomain.lan)dnl

Pgina 67

FEATURE(dnsbl, `blackholes.mail-abuse.org', `Rejected - see www.mail-abuse.org/rbl/')dnl FEATURE(dnsbl, `dialups.mail-abuse.org', `Rejected - see www.mail-abuse.org/dul/')dnl FEATURE(dnsbl, `relays.mail-abuse.org', `Rejected - see work-rss.mail-abuse.org/rss/')dnl FEATURE(`delay_checks')dnl MAILER(smtp)dnl MAILER(procmail)dnl

Luego

se

procesa

con

el

siguiente

comando

para

generar

/etc/sendmail.cf

(Red

Hat

Linux

7.x)

/etc/mail/sendmail.cf (Red Hat Linux 8.0 y 9):

Procedimiento en Red Hat Linux 7.x


m4 /etc/mail/sendmail.mc > /etc/sendmail.cf

Procedimiento en Red Hat Linux 8.0 y 9


m4 /etc/mail/sendmail.mc > /etc/mail/sendmail.cf

Deben definirse los dominios para los cuales se estar permitiendo enviar correo electrnico. Esto se hace generando el archivo /etc/mail/relay-domains:
mi-dominio.org.mx servidor.mi-dominio.org.mx mi-red-local.org.mx intranet.mi-red-local.org.mx

Abrimos ahora el archivo /etc/mail/access y agregamos algunas lneas para definir quienes podrn hacer uso de nuestro servidor de correo para poder enviar mensajes:
# Por defecto, solo se permite enviar correo desde localhost...

localhost.localdomain localhost 127.0.0.1

RELAY RELAY RELAY

# Debemos aadir solo las direcciones IP que ahora tenga el servidor #

192.168.1.1 148.243.59.1
# # # # # # #

RELAY RELAY

Agregue tambin las direcciones IP que integran su red local. Solo especifique aquellas mquinas que tendrn permitido enviar y recibir correo. No es buena idea especificar redes completas. Especifique mquinas individuales, aunque signifique ingresar manualmente un centenar de entradas. Es ms seguro de este modo.

192.168.1.2 192.168.1.3 192.168.1.4 # etc.

RELAY RELAY RELAY

# # Y tambin podemos agregar las direcciones de correo electrnico # de aquellos a quienes consideremos"indeseables", o que queramos # bloquear.

Spam@algun_Spamer.com info@otro_Spammer.com servidor.indeseable.com part.com.mx newlad.com dmc.com.mx propnewidea.com lapromocion.com hosting.com.mx solopromos.com.mx

REJECT REJECT REJECT REJECT REJECT REJECT REJECT REJECT REJECT REJECT

Pgina 68

# etc.

En este archivo tambin puede agregar las direcciones de correo electrnico que desee bloquear, como son las de quienes envan correo masivo no solicitado -Spam-. Al concluir, debemos tambin compilar este archivo para generar otro en formato de base de datos a fin de ser utilizado por Sendmail:
cd /etc/mail Make

O bien puede ejecutar lo siguiente:


makemap hash /etc/mail/access.db < /etc/mail/access

Ser de utilidad designar un alias a la cuenta de correo de root a fin de recibir los mensajes generados por el sistema en una cuenta comn de usuario. Abra el archivo /etc/aliases, en donde al final encontrar las siguientes lneas:
# Person who should get root's mail # root: jperez

Esto corresponde a la cuenta de correo local hacia donde se re-direcciona el correo de root. Des-comente la ltima lnea y asigne el nombre de la cuenta de usuario que utiliza normalmente:
# Person who should get root's mail root: jperez

A fin de que este nuevo alias surta efecto y pueda ser utilizado por Sendmail debe utilizar el comando newaliases:
newaliases

Terminados los detalles de la configuracin, reinicie sendmail del siguiente modo y tendr listo un servidor de correo que podr utilizar para enviar mensajes para toda su red local utilizando el servidor SMTP de su proveedor de servicios:
service sendmail restart

Generalmente Sendmail est incluido entre los servicios que de forma predeterminada se inician con el sistema. Si por alguna razn Sendmail no estuviese habilitado, ejecute lo siguiente a fin de habilitar sendmail en los niveles de corrida 3, 4 y 5:
chkconfig --level 345 sendmail on

Si est funcionando un firewall, recuerde que debe de estar abierto el puerto 25, de otro modo el correo saldra pero no entrara. Aada o verifique que est presente una lnea en el guin de firewall similar a la siguiente:
# SMTP iptables -t filter -A INPUT -p tcp -s 0/0 -d 0/0 --dport 25 -j ACCEPT

Habilitando los servicios POP3 e IMAP


Si usted utiliza Red Hat Linux 7.x o versiones posteriores o equivalentes, debe saber que inetd ha sido sustituido por xinetd, y utiliza mtodos de configuracin muy distintos. Puede habilitar los servicios ipop3 (POP3 tradicional, autenticacin en texto plano), pop3s (POP3 seguro, autenticacin con criptografa), imap (IMAP tradicional, autenticacin en texto plano) e imaps (IMAP seguro, autenticacin con criptografa). Utilice aquellos que considere como ms apropiados para su red local de acuerdo a las capacidades de los clientes de correo electrnico utilizados. Tome en cuenta que la autenticacin por medio de texto plano es definitivamente un mtodo inseguro, y siempre sern mejor usar los servicios que permitan establecer conexiones seguras.

Pgina 69

Puede habilitar los servicios de manera automtica e inmediata ejecutando los siguientes comandos (solo habilite aquellos que realmente necesite):
chkconfig chkconfig chkconfig chkconfig ipop3 on pop3s on imap on imaps on

Tambin puede habilitarlos manualmente con un editor de texto, lo cual es sugerido a fin de habilitar opciones adicionales, como direcciones IP especficas a las cuales se les estara permitido cierto servicio. Acceda a al directorio /etc/xinet.d/ y edite los archivos ipop3, pop3s, imap e imaps, segn lo requiera. Estos requerirn edite una sola lnea para habilitar el servicio:
service pop3 { socket_type wait user server log_on_success log_on_failure disable only_from localhost }

= stream = no = root = /usr/sbin/ipop3d += USERID += USERID = no = 192.168.1.1 192.168.1.2 192.168.1.3 192.168.1.4

Lo mismo aplica para el protocolo IMAP e IMAPS. Hecho lo anterior, es necesario reiniciar el daemon xinetd con la siguiente lnea de comando:
service xinet restart

Que hacer con el Spam?


Sin duda alguna una de las cosas ms molestas de Internet es el correo comercial no solicitado, comnmente llamado Spam. Las empresas que incurren en esta forma de marketing no tienen el mnimo respeto por los dems, y saturan cientos de miles de buzones de correo a diario. Las empresas que incurren en este tipo de promocin deberan ser boicoteadas y los responsables de enviar el correo deberan ser apedreados pblicamente. Veremos un mtodo civilizado para combatirlos. No importa cuanto se queje uno, o cuantos mensajes con insultos y llamada telefnicas reclamo se hagan a las oficinas de las empresas que incurren en esta poco tica forma de promocin, estas gentes no les interesa la opinin de a quienes ellos perjudican haciendo malgastar el ancho de banda o bloqueando servidores de correo. Ellos compran y hacen uso sin autorizacin de discos con cientos de miles de direcciones correo electrnico con un solo objetivo: promocionar como sea productos y servicios, en su mayora, intiles. El combate al Spam requiere de al colaboracin de los administradores de las redes, quienes deben atender y dar seguimiento a las quejas y tomar las acciones ejemplares pertinentes. Los usuarios deben participar reportando incidentes a los administradores de las redes involucradas. Empresas que, por alguna razn, y gracias a lagunas legales, recurren al envo de Spam, pueden ser bloqueadas por completo aadiendo una entrada que rechace correo generado por los servidores de empresas que incurran en Spam. Esto se hace editando /etc/mail/access y generando /etc/mail/access.db. Ejemplo:
newlad.com propnewidea.com lapromocion.com hosting.com solopromos.com REJECT REJECT REJECT REJECT REJECT

Pgina 70

Acto seguido se ejecuta el siguiente comando:


makemap hash /etc/mail/access.db < /etc/mail/access

Y se reinicia Sendmail. En adelante todo correo enviado desde los dominios anteriormente mencionados, ser rechazado por completo para toda nuestra red. Otra opcin ms del administrador es bloquear tambin el acceso a los dominios involucrados a travs de IPChains o IPTables. Esto no impedir que llegue correo, pero servir para boicotear a las empresas que utilizan Spam para promocionarse, al no permitir el acceso a sus redes desde nuestras redes locales. Para determinar la direccin IP de un dominio en particular, solo baste ejecutar el comando host, el cual devolver la direccin IP y quiz algo de informacin adicional, como si se trata del alias de otro dominio.
# host solopromos.com solopromos.com. has address 200.57.146.18

Una vez determinadas las direcciones IP problemticas, solo hay que aadir algunas lneas en el guin de Firewall que se este utilizando de modo tal que queden bloqueadas de manera permanente, por lo menos desde nuestra red local. Ejemplo:
iptables -A INPUT -s 216.219.236.81 -d 0/0 -j DROP iptables -A INPUT -s 64.65.27.126 -d 0/0 -j DROP iptables -A INPUT -s 200.57.146.18 -d 0/0 -j DROP

Mientras ms usuarios y administradores participen reportando y castigando el Spam, correspondientemente, esta molestia desaparecer eventualmente, o al menos haremos saber a quienes se promocionan de este modo que NO NOS AGRADA lo que hacen.

El Servidor de Nombres (DNS)


Si el servidor DNS se localiza en otro servidor y es administrado por otras personas, solo bastar con informar al administrador de dicho servidor de nombres la existencia del nuevo servidor de correo electrnico, a fin de que se de de alta la entrada correspondiente en el DNS y a su vez a fin de que el NIC lo tome en cuenta en el siguiente ciclo de refresco. Si desea configurar DNS propio, y dar ste de alta con el NIC, se necesitar tener instalados los siguientes paquetes: bind, bindutils y caching-nameserver. Todos, seguramente, vienen incluidos en alguno de los CD de instalacin. Note por favor que no es conveniente utilizar versiones anteriores a bind-9.1.3, debido a serias fallas de seguridad. Consulte en el sitio Web de su distribucin para verificar si hay paquetes de actualizacin disponibles. Nota Para informacin detallada de cmo instalar, configurar y mantener un servidor DNS, vea el LOC 1-2-3, Captulo 13.

Pgina 71

Configuracin de los clientes de correo


Considerando que tiene bien configurada su red local y que ha seguido este captulo al pie de la letra, sea la PC que sea en su red local, puede configurar mail.mi-red-local.org o mail.mi-dominio.org como servidor de correo saliente o SMTP y servidor de correo entrante, POP3 o IMAP, en el cliente de correo que utilice.

Figura 1 - Preferencias de Netscape para los servidores de correo

Pgina 72

Captulo 7
Introduccin a Horde (WebMail)
Qu es Horde?
Horde es un programa (software) y un proyecto. El Proyecto Horde comprende un conjunto de aplicaciones basada en Web (Web based) de productividad, mensajera, y administracin de proyectos. Detalle de estas estn descritas ms adelante. El Horde Framework es un cdigo de base comn a todas las aplicaciones Horde, incluyendo libreras y un ainterfase de usuario comn a ellas. Horde y sus componentes estn escritos en PHP. El proyecto Horde (www.horde.org) tiene una gran cantidad de componentes donde se destacan: IMP, Turba, Kronolith, Jonah, WHUPS, Chora y Gollem.

Qu es IMP?
IMP es Internet Messaging Program (antiguamente era, entre otras cosas, IMAP webMail Program), un sistema webmail basado en PHP y componente del proyecto Horde. IMP es el ms maduro de los componentes de Horde, y es el ms ampliamente desarrollado (hasta ahora!). IMP, una vez instalado, accede al mail a travs de IMAP, requiriendo poca a ninguna preparacin especial en el servidor en el cual se almacena el correo. IMP ofrece muchas de las caractersticas que los usuarios esperan de sus programas de mails convencionales, incluyendo anexos, corrector ortogrfico, mltiples carpetas, y soporte de mltiples lenguajes.

Qu es Turba?
Turba es la libreta de direcciones y administrador de contactos de Horde. Reemplaza el simple administrador de contactos que fue parte de versiones anteriores de IMP.

Qu es Kronolith?
Kronolith es un calendario y organizador diario (think Day-Timer) basado en la web.

Qu es Jonah?
Jonah es un administrador de contenidos y presentaciones basado en PHP y diseado para manejar un sitio tipo portal usando RDF, RSS y contenido de segundo plano XML. Sigue en la fase de desarrollo.

Qu es WHUPS?
WHUPS es el Web-based Horde Unified Project System. Esta basado en PHP y es un sistema de administracin de proyectos. WHUPS implementa un sistema muy flexible de rastreo de fuentes, y en el futuro estar integrado por Chora y otro desarrollados de Horde relacionados con desarrrollo y administracin proyectos.

Qu es Chora?
Chora es una aplicacin para ver repositorios de cdigo que son manejados usando el sistema de control de fuente (source code system) CVS. Provee una vista, basada en la web, de cualquier repositorio CVS. Ahora incluye de soporte anotaciones, Visual Branco Beijing y diffs legibles por humanos.

Qu es Gollem?
Gollem es el administrador de archivos de Horde, y provee una interfase comn para acceder a los sitios FTP, sistema de almacenamiento local de archivos, y un almacenamiento de sistema de archivo SQL virtual. Todava en desarrollo estn varios de sus componentes.

Solamente quiero WebMail. Por qu necesito Horde?


Si slo necesita la funcionalidad de un solo componente, puede simplemente instalar ese componente; sin embargo, todos los componentes se basan en un cdigo comn en el mismo paquete Horde. Aunque instale un componente o todos los

Pgina 73

componentes, necesita instalar Horde. Entonces, si solo quiere ofrecer un email basado en Web (en gran medida, el uso ms comn de aplicaciones Horde hasta ahora) necesitar instalar Horde e IMP.

Cunto cuesta Horde?


Horde, y todos sus componentes, son gratis, siendo liberado bajo GNU Public License (Licencia Pblica GNU).

En qu plataformas funciona Horde?


Horde est desarrollado en Unix, con el servidor web Apache. Pero debera funcionar correctamente en cualquier UnixGNU/Linux en el que usted pueda instalar Apache y PHP.

Horde funciona en Windows 95 o en NT/2K/XP?


Horde y todos los Componentes de Horde trabajan bajo Windows NT/2K/XP con Apache y PHP4 con un rendimiento aceptable. IMP y Turba, se supone trabajan tambin en Windows NT/2K con IIS y PHP4.

Pgina 74

Captulo 8
Introduccin a Administracin Remota
La administracin remota siempre ha constituido un reto para los administradores de redes, para situaciones particulares dentro y fuera de la red fsica en la cual estn conectados los servidores. Ya sea porque la distribucin fsica de los servidores no permite que estn todos en un centro de cmputos porque desea administrar los servidores sin levantarse de su silla, tambin para el caso que necesite administrar servidores que se encuentran en distintas sucursales acceder a recursos de la empresa cuando est de viaje o en su casa. El acceso remoto con propsitos de administracin es la solucin para estas situaciones.

Diferentes tipos de Administracin Remota


Desde un principio vamos a aclarar que existen distintas maneras de realizar el mismo propsito: Control Remoto, Sesin Remota y Acceso Remoto. Todas pueden utilizarse en cualquier topologa de conexin: dentro de una LAN a lo largo de una conexin WAN simplemente por medio de Dial-Up (modem), aunque es necesario tener en cuenta las caractersticas de cada una antes de su implementacin, para evaluar sus pros y sus contras respecto de cada tipo de conexin.

Control Remoto
Las soluciones de control remoto, por definicin, permiten tomar control de una PC (Workstation Server) extendiendo, a lo largo del medio fsico que estemos utilizando, solamente las capacidades de los dispositivos de entrada-salida (mouse, teclado y display) de esa PC. El software que permite esto, tpicamente consta de dos partes, una es la que se instala en la PC que ser controlada (host) y la otra se instala en la PC que tomar el control (remote). El trfico de datos, sobre el medio fsico, entre el host y el remoto se reduce exclusivamente a rdenes de entrada-salida y display, todo el procesamiento y ejecucin de aplicaciones se realiza en la PC que acta de host. Al iniciar una conexin de control remoto sobre una PC, existe la opcin de elegir qu grado de control tiene el remoto sobre los dispositivos de entrada-salida, puede ser mnima (solamente ver el display), compartida (ver el display; dominar teclado y mouse en forma conjunta con el host) o total (la PC host pierde el control sobre el teclado, mouse y display). Cabe aclarar que este tipo de software muestra solamente lo que esta ocurriendo en la PC a la cual esta conectada, durante el perodo de control remoto; entendiendo con esto que si hay un usuario trabajando en esa PC, se podr ver absolutamente todo lo que est haciendo. En caso de interrumpirse la conexin, la PC quedar en el estado en que se encontraba mientras se estaba tomando control de ella, con los riesgos que esto implica (archivos y aplicaciones abiertas, etc.). Software que permiten hacer control remoto: Symantec pcAnywhere, VNC, GoToMyPC, RAdmin, Carbon Copy.

Sesin Remota
En todo lo que se refiera al medio fsico sobre el cual se establece una sesin remota, y los datos que viajan por l, una sesin remota comparte las caractersticas con las de Control Remoto. La PC desde la cual iniciamos una sesin remota tendr control de teclado, mouse y display. Al iniciar una Sesin Remota, lo que realmente estamos haciendo es iniciar una conexin a una PC (Server) que nos permite tener todo un entorno de trabajo (ya sea en modo texto o grfico) dedicado a nuestra conexin. Si ms de un usuario se conecta por medio de sesiones remotas a un servidor, cada uno de los usuarios tiene su propio entorno de trabajo, capacidades individuales de ejecucin de programas, etc. Software que permite hacer sesin remota en modo texto (TelNet, SSH, etc.): Century TinyTERM, HummingBird Exceed, PuTTY. Software que permite hacer sesin remota en modo grfico: VNC (con servidores Microsoft no es posible hacer multi-sesin grafica), Windows Terminal Services. Salvo Windows Terminal Services, los dems protocolos y productos son cross-platform (multiplataforma).

Acceso Remoto
A diferencia de las metodologas de control remoto y sesin remota, la tecnologa de acceso remoto, apunta a que el usuario se incorpore como un nodo ms a la topologa existente en una red. Al hacer esto, la PC (nodo) ve todo el trfico, y participa activamente, de la red a la cual se est conectando. Todo el procesamiento y ejecucin de aplicaciones se realiza en la PC Local

Pgina 75

y todo el trfico de datos documentos que obtenga de las dems PCs de la red (Workstations o Servers) viajar hasta la PC Local. La principal restriccin de esta metodologa es que cuanto ms lento sea el tipo de conexin, ms lenta se volver la respuesta desde la red a la que se ha conectado.

Direcciones Web relacionadas


Carbon Copy Century TinyTERM GoToMyPC HummingBird Exceed PuTTY RAdmin Symantec pcAnywhere VNC Windows Terminal Services www.codework.com www.censoft.com www.gotomypc.com www.hummingbird.com/products/ www.chiark.greenend.org.uk/~sgtatham/putty/ www.famatech.com www.symantec.com www.realvnc.com www.microsoft.com

Pgina 76

Captulo 9
Introduccin a TelNet
El protocolo diseado para proporcionar el servicio de conexin remota (remote login) recibe el nombre de TELNET, el cual forma parte del conjunto de protocolos TCP/IP y depende del protocolo TCP para el nivel de transporte. El protocolo TELNET es un emulador de terminal que permite acceder a los recursos y ejecutar los programas de un ordenador remoto en la red, de la misma forma que si se tratara de un terminal real directamente conectado al sistema remoto. Una vez establecida la conexin el usuario podr iniciar la sesin con su clave de acceso. De la misma manera que ocurre con el protocolo FTP, existen servidores que permiten un acceso libre cuando se especifica "anonymous" como nombre de usuario. Es posible ejecutar una aplicacin cliente TELNET desde cualquier sistema operativo, pero hay que tener en cuenta que los servidores suelen ser sistemas VMS o UNIX por lo que, a diferencia del protocolo FTP para transferencia de ficheros donde se utilizan ciertos comandos propios de esta aplicacin, los comandos y sintaxis que se utilice en TELNET deben ser los del sistema operativo del servidor. El sistema local que utiliza el usuario se convierte en un terminal "no inteligente" donde todos los caracteres pulsados y las acciones que se realicen se envan al host remoto, el cual devuelve el resultado de su trabajo. Para facilitar un poco la tarea a los usuarios, en algunos casos se encuentran desarrollados mens con las distintas opciones que se ofrecen. Los programas clientes de TELNET deben ser capaces de emular los terminales en modo texto ms utilizados para asegurarse la compatibilidad con otros sistemas, lo que incluye una emulacin del teclado. El terminal ms extendido es el VT100, el cual proporciona compatibilidad con la mayora de los sistemas, aunque puede ser aconsejable que el programa cliente soporte emulacin de otro tipo de terminales.

Telnet en Linux
En la mayora (por no decir todas) las distribuciones linux, el servicio telnet, depende del demonio telnetd, este demonio se levanta (inicia) bajo demanda. El demonio encargado de administrar el inicio y la parada del demonio telnetd, es el demonio xinetd inetd (dependiendo de la distribucin de linux y del kernel que tenga dicha distribucin). Nota Para informacin detallada de cmo instalar, configurar y mantener el demonio xinetd, vea el LOC 1-2-3, Captulo 9.

Telnet en Windows 2000


El servidor (servicio) de Telnet que implementa Microsoft en Windows 2000 hace un intento de mejorar la seguridad al compararlo con Telnet UNIX-like: soporta autenticacin NT LAN Manager (NTLM) que encripta los passwords. Uno puede forzar al daemon a aceptar solo passwords autenticados por NTLM y que rechaze otros. Pero, esto lo hace muy restrictivo. Windows 2000 levanta con este tipo de autenticacin por defecto pero luego el administrador debera degradar esto si quiere conectarse a servidor NO Windows 2000. O sea solo nos ayuda cuando se conectan 2 Windows 2000. Independientemente de que tipo de autenticacin se use el resto de lo que va y viene por la red desde una maquina a la otra va en texto plano (clear text). Es decir alguien que snifee la red podra ver nuestras acciones. La solucion a esto vino hace aos del mundo Unix: Secure Shell SSH. Como dijimos telnet esta por default en W2K. Podemos comenzar el servicio haciendo:
net start tlntsvr

Si desea que el servicio comience automticamente: 1. Boton derecho sobre my computer 2. Bajo Computer Management vera services and Applications. Abralo clickeando el signo +. 3. Alli vera services. Clickeelo y vera los servicios disponibles sobre el panel derecho. 4. Busquemos Telnet. Haga boton derecho y busque propiedades 5. Del drop-down elija automatic.

Pgina 77

Para telnetear un servidor hacemos


telnet nombre_del_servidor

telnet direccion_IP

Podemos modificar el modo en que el cliente autentica. Por ejemplo que acepte nombre de usuario y password: 1. escriba en linea de comandos
tlntadmn

2. 3. 4. 5. 6. 7. 8.

Elija 3 y haga enter. Esto permitira modificar el REGISTRY Elija 7 y enter . El default es 2. Significa NTLM como describimos ponga opcion 1 . Diga y ponga 0 para modificar el REGISTRY S para stopear el servicio 4 para recomenzar 0 para salir del tlntadmn

Pruebe telnetear una mquina con UNIX.

Pgina 78

Captulo 10
Introduccin a SSH
OpenSSH es una implementacin libre del protocolo SSH (Secure Shell) que permite el acceso remoto hacia sistemas. Su principal ventaja radica en que se utiliza un tnel seguro para la transmisin de datos, algo de lo que carecen protocolos como FTP y Telnet, que son precisamente los protocolos a reemplazar.

Software requerido.
openssh-3.5p1-6 openssh-clients-3.5p1-6 openssh-server-3.5p1-6

Antes de continuar verifique siempre la existencia posibles actualizaciones de seguridad. Para Red Hat Linux 8.0 y 9 hay paquetera de actualizacin en los siguientes enlaces: ftp://updates.redhat.com/7.2/en/os/i386/, si su distribucin es Red Hat Linux 7.2 ftp://updates.redhat.com/7.3/en/os/i386/, si su distribucin es Red Hat Linux 7.3 ftp://updates.redhat.com/8.0/en/os/i386/, si su distribucin es Red Hat Linux 8.0 ftp://updates.redhat.com/9/en/os/i386/, si su distribucin es Red Hat Linux 9

Archivos de configuracin
El archivo de configuracin central del daemon sshd es /etc/ssh/sshd_config.

Procedimientos
Tome el editor de texto de su preferencia y edite /etc/ssh/sshd_config. A continuacin analizaremos los parmetros a modificar.

Parmetro ListenAddress
Por defecto SSHD escuchar peticiones por todas las interfaces del sistema. En algunos casos es posible que no se desee esto y se prefiera limitar el acceso solo a travs de una interfaz que solo se pueda acceder desde la red local. Para tal fin puede establecerse lo siguiente, considerando que el servidor a configurar posee la IP 192.168.1.254:
ListenAddress 192.168.1.254

Parmetro PermitRootLogin
Este parmetro sirve para establecer si se va a permitir el acceso directo del usuario root al servidor SSH. Si se va a permitir el acceso hacia el servidor desde redes pblicas, resultar prudente utilizar este parmetro con el valor no.
PermitRootLogin no

Parmetro X11Forwarding
Este parmetro establece si se permite o no la ejecucin remota de aplicaciones grficas. Si se va a acceder hacia el servidor desde red local, este parmetro puede quedarse con el valor yes. Si se va a permitir el acceso hacia el servidor desde redes pblicas, resultar prudente utilizar este parmetro con el valor no.
X11Forwarding yes

Pgina 79

Aplicando los cambios.


Sshd puede inicializarse, detenerse o reinicializarse a travs de un guin similar a los del resto del sistema. De modo tal, podr inicializarse, detenerse o reinicializarse a travs del comando service y aadirse al arranque del sistema en un nivel o niveles de corrida en particular con el comando chkconfig. Para ejecutar por primera vez el servicio, ejecute:
service sshd start

Para hacer que los cambios hechos a la configuracin surtan efecto, ejecute:
service sshd restart

Para detener el daemon, ejecute:


service sshd stop

Por defecto sshd est incluido en todos los niveles de corrida con servicio de red. Para deshabilitar el servicio Sshd de los niveles de corrida 2, 3, 4 y 5, ejecute:
chkconfig --level 2345 sshd off

Probando OpenSSH.
Acceso por shell.
Para acceder a travs de shell hacia el servidor, basta con ejecutar desde el sistema cliente el comando ssh definiendo el usuario a utilizar y el servidor al cual conectar:
ssh usuario@servidor

Acceso por SFTP


OpenSSH incluye adems un servidor de archivos en modo seguro que permite sustituir las transferencias a travs de protocolo FTP, el cual enva todos los datos en texto simple. Para acceder a travs de SFTP hacia el servidor, basta con ejecutar desde el sistema cliente el comando sftp definiendo el usuario a utilizar y el servidor al cual conectar:
sftp usuario@servidor

El shell es casi idntico al de FTP y tiene las mismas funcionalidades.

Pgina 80

También podría gustarte