Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Linux Original Courseware LX4 Advanced Network Administrator
Linux Original Courseware LX4 Advanced Network Administrator
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
## 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
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.
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
-p -p ya -j
# 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.
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.
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.
## 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
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.
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
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
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
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
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
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.
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"
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
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.
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
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
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"
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.
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.
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
Si desea que Squid inicie de manera automtica la prxima vez que inicie el sistema, ejecute lo siguiente:
/sbin/chkconfig --level 345 squid on
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.
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.
#!/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.
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.
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.
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
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
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.
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
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
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
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
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
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
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
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
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
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).
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
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.
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.
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
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.
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.
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.
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 ?
Pgina 55
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
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
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
Nota Los nombres de los ficheros van separados por blancos y pueden incluir los metacaracteres * y ?.
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
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.
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)
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
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.
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.
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
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)
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...
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.
# # 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
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
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 }
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
Pgina 70
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.
Pgina 71
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.
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.
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.
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.
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.
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
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
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
Para hacer que los cambios hechos a la configuracin surtan efecto, ejecute:
service sshd restart
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
Pgina 80