Acceso a los ficheros del servidor WWW
En algún momento habrá que acceder a los ficheros del servidor para actualizarlos. Hacer un logging y utilizar un editor de texto como el emacs no suele ser una sabia decisión a largo plazo, si valoras tu tiempo. Hay varios paquetes de autoría de HTML que pueden acceder al website vía FTP o compartición de ficheros de Windows.
FTP
Este es el método clásico de garantizar acceso a los usuarios a los servidores ftp, las preocupaciones habituales incluyen que los usuarios puedan verse sus
ficheros entre sí, que vean ficheros del sistema que no deberían, etcétera.
Hacer un chroot de las sesiones de los usuarios resolverá la mayoría de estos problemas, sin embargo el principal problema que existe con el FTP es que cifrar el nombre de usuario y la contraseña no suele ser posible debido al hecho de que la mayoría de la gente está utilizando clientes FTP de Windows.
Recomendaría el ProFTPD antes que el WU-FTPD para una aplicación de este tipo,
el ProFTPD tiene mejores controles de acceso.
Acceso SambaEl Samba es bastante útil para compartir directorios www con clientes Windows, se pueden mantener los nombres de usuarios y contraseñas separados del sistema (utilizando smbpasswd en vez del passwd del sistema) y el cifrado de logins no es ningún problema. Simplemente hay que hacer los directorios compartidos no visibles, y utilizar la directiva "valid users" para restringir qué usuarios pueden ver los datos compartidos. Por ejemplo:
[www-example]
path = /www/www.example.org/
valid users = example
read only = No
browseable = No
configurará un directorio compartido bastante seguro del directorio "/www/www.example.org/" al que sólo podrá acceder el usuario "example".
Acceso FrontpageEl FrontPage es uno de los programas más famosos para edición de HTML entre los usuarios de Windows (qué caramba, incluso yo lo utilizo). Puede comunicarse directamente con los servidores WWW y descargar / subir ficheros de un sitio (llamado el "sitio Frontpage") si el servidor soporta extensiones FrontPage. Las extensiones FrontPage se encuentran disponibles para diferentes plataformas
UNIX, gratuitamente, en Ready To Run Software: http://www.rtr.com En el pasado, las extensiones FrontPage de RTR para UNIX han sido un tanto desastrosas. Sin embargo existen alternativas comerciales, una es el Instant ASP, disponible en:
http://www.halcyonsoft.com
RearSiteEl RearSite es un programa cgi que proporciona a los usuarios acceso a sus directorios vía un navegador normal. Se puede conseguir en:
http://listes.cru.fr/rs/fd
Fast Webpage ExchangerEl Fast Webpage Exchanger mantiene sincronizados los ficheros utilizando un interesante fichero de configuración en el que se especifica todo. Se puede descargar desde: http://www.enjoy.ne.jp/~gm/program/iew_en.html
SMTPSimple Mail Transfer Protocol (SMTP), es uno de los servicios más importantes que proporciona Internet. Ahora casi todas las compañías tienen o dependen del correo, y por extensión todos los servidores SMTP. Se encuentran disponibles muchos paquetes SMTP, siendo el más viejo y el más probado el Sendmail (ahora con soporte comercial, etc.), y hay dos nuevos contendientes, Postfix y Qmail, ambos dos escritos desde cero teniendo en cuenta la seguridad. Filtrar con el
cortafuegos el SMTP no tiene pérdida, se ejecuta en el puerto 25, tcp:
ipfwadm –I –a accept –P tcp –S 10.0.0.0/8 –D 0.0.0.0/0 25
ipfwadm –I –a accept –P tcp –S un.host.fiable –D 0.0.0.0/0 25
ipfwadm –I –a deny –P tcp –S 0.0.0.0/0 –D 0.0.0.0/0 25
o bien con ipchains:
ipchains –A input –p tcp –j ACCEPT –s 10.0.0.0/8 –d 0.0.0.0/0 25
ipchains –A input –p tcp –j ACCEPT –s un.host.fiable –d 0.0.0.0/0 25
ipchains –A input –p tcp –j DENY –s 0.0.0.0/0 –d 0.0.0.0/0 25
SendmailSendmail es otro de esos servicios con los que la mayoría de nosotros hemos tenido relaciones. Odiamos administrarlo y nos encantaría reemplazarlo (en realidad he empezado a eliminar el Sendmail de las máquinas que administro y lo estoy reemplazando con el Postfix).
Sendmail se ha ganado por sí mismo una muy mala reputación en cuanto a seguridad, sin embargo es difícil echarle la culpa al software cuando te encuentras con sistemas ejecutando versiones antiguas del sendmail. La raíz del problema (si se me permite el mal juego de palabras) es que casi todo el mundo ejecuta el sendmail como root (y algo así como el 70% del correo de Internet se maneja mediante máquinas con Sendmail, de modo que hay un montón de ellas), de
forma que tan pronto se encuentra un bug, encontrar un sistema que explotar no es tan difícil. Las últimas versiones de sendmail han sido bastante buenas, sin hacks del root, etc, y con las nuevas características anti spam finalmente ha alcanzado la mayoría de edad. Más información en Sendmail y su código fuente está disponible en:
http://www.sendmail.org/
Hacer un chroot del sendmail es una buena opción, pero lleva demasiado trabajo, y puesto que se ejecuta como root, algo bastante discutible en cuanto a su efectividad (puesto que el root se puede escapar de una cárcel chroot).
Personalmente pienso que es mejor invertir el esfuerzo en cambiarse a Postfix o a Qmail.
Mantener actualizado el sendmail es relativamente simple, recomendaría como mínimo la versión 8.9.3 (la serie 8.9 tiene más características anti-spam, la 8.8.x tiene la mayoría de estas características, suponiendo que se ha configurado correctamente el sendmail.cf). La mayoría de las distribuciones vienen con la 8.8.x, aunque las versiones más recientes suelen venir con la
8.9.x. Se puede conseguir el código fuente desde ftp://ftp.sendmail.org/, pero compilar el sendmail no es algo para el débil de corazón o para aquellos que no tengan un montón de tiempo para dedicárselo.
Sendmail sólo tiene que estar accesible desde el mundo exterior si se está utilizando para recibir correo de otras máquinas y repartirlo localmente. Si sólo se quiere ejecutar sendmail de forma que funcione el reparto local (p. ej., una estación de trabajo autónoma, un servidor de prueba u otros) y que se pueda enviar con facilidad el correo a otras máquinas, simplemente filtra con
el cortafuegos el sendmail, o mejor, no lo ejecutes en modo demonio (en el cual escucha conexiones). Sendmail se puede ejecutar en la cola de refresco de un nodo, donde simplemente se "despierta" cada cierto tiempo y procesa el correo local, ya sea distribuyéndolo localmente o enviándolo a través de la red. Para configurar la ejecución del Sendmail en modo cola:
edita el script de inicio del Sendmail y cambia la línea que contiene:
sendmail –bd –q1h
por:
sendmail –q1h
Ten en cuenta que: si utilizas el sistema para enviar mucho correo quizás prefieras disminuir el tiempo de refresco, quizás "-q15m" (refrescar la cola cada 15 minutos), ahora el correo saliente y el correo interno del sistema se comportarán bien, lo cual a menos que se ejecute un servidor de correo, es perfecto.
Ahora vienen todas esas maravillosas características anti-spam del sendmail.
Los ficheros de configuración del Sendmail consisten en (se aplica al Sendmail 8.9.x):
/etc/sendmail.cf
El fichero de configuración principal, también dice dónde se encuentran el resto de ficheros de configuración.
/etc/mail/
Se puede definir la localización de los ficheros de configuración en sendmail.cf, generalmente la gente los coloca en /etc/ o en /etc/mail (lo cual
lo lía menos).
access
La base de datos de la lista de accesos, permite rechazar el correo proveniente de ciertas fuentes (IP o dominio), y controlar con facilidad las transmisiones.
Mi fichero de acceso es así:
* RELAY
spam.com REJECT
lo que quiere decir que a 10.0.0.* (los hosts de mi red interna) se les permite
utilizar el servidor de correo para enviar correo donde quieran, y el correo de
*.spam.com se rechaza. Hay listas en línea de spammers conocidos, generalmente
suele tener entre 5-10.000 entradas, lo cual puede afectar seriamente el
rendimiento del sendmail (pues cada conexión se comprueba contra esta lista),
por otra parte, tener una máquina sendmail para enviar spam es incluso peor.
aliases
El fichero de alias, te permite controlar el reparto del correo local al
sistema, es útil para hacer una copia de seguridad del correo entrante de un
usuario a un spool por separado. La mayoría del software de servidores de
listas utiliza este fichero para enviar el correo que recibe a los programas
que realmente procesan las listas. Recuerda ejecutar el comando "newaliases"
después de editar este fichero, y después reiniciar el sendmail.
domaintable
la tabla de dominios (añadir dominios) que se maneja, útil para hacer hosting
virtual.
majordomo
fichero de configuración de majordomo, personalmente recomendaría SmartList a
Majordomo.
sendmail.cw
fichero que contiene nombres de hosts de los que se recibe correo, útil si se
alberga más de un dominio.
sendmail.hf
situación del fichero de ayuda (telnet al puerto 25 y escribir "HELP")
virtusertable
Tabla de usuario virtual, mapea usuarios entrantes, p. ej., mapear
ventas@ejemplo.org a john@ejemplo.org
Sendmail 8.9.x (y versiones anteriores) en realidad no tienen soporte para
hacer un log de todo el correo de una forma agradable (un requisito
indispensable por muchas compañías por motivos legales). Esta es una de las
características sobre las que se trabaja en la versión de Sendmail 8.10.x.
Hasta entonces, hay dos formas de hacer log del correo, la primera es algo
agraciada, y registra un log de los correos entrantes a usuarios según cada
usuario. El segundo método no es agraciado, e implica un simple log de todas
las transacciones SMTP a un fichero, habría que escribir algún tipo de
procesador (probablemente en perl) para que el log fuese útil.
El correo (o las conexiones SMTP para ser más precisos) primero se filtra con el fichero access, y es aquí donde se pueden RECHAZAR correos de ciertos dominios/IP's, y TRANSMITIR correo de ciertos hosts (p. ej. tu red interna de máquinas windows). Cualquier dominio local para el que se hospeda el correo tendrá que ir al sendmail.cw. Suponiendo que el correo cumple con las reglas y va a la cola para reparto local, el siguiente fichero que se comprueba en virtusertable, que es una lista de direcciones de correo mapeadas al nombre de la cuenta/otra dirección de correo. p.ej.:
seifried@seifried.org alias-seifried
listuser@seifried.org usuariolista
@seifried.org correos-estropeados
La última regla es para evitar que reboten los correos estropeados, y que en lugar de eso se envíen a un buzón. Después se comprueba el fichero de alias, si se encuentra una entrada se hace lo que dice, y si no, se intenta entregar el correo a un buzón de un usuario local, mi entrada seifried del fichero de alias
es:
alias-seifried: seifried, "/var/backup-spool/seifried"
De esta forma mi correo se reparte a mi buzón normal, y a un buzón de copia de seguridad (por si acaso he borrado un correo que no quisiera), o en el peor de los casos, Microsoft Outlook decide cascar un día y cargarse mis buzones. Esto también sería útil en empresas, puesto que ahora se tiene una copia de seguridad de todo el correo entrante según cada usuario, y se les puede
permitir ( o no) acceder al fichero que contiene el correo en la copia de seguridad.
Una advertencia, cuando se esté usando una regla general para un dominio ( p. ej. @seifried.org) hay que crear un alias para CADA cuenta, y para las listas de correo. Si no, cuando se examina la lista y no se encuentra una entrada específica (para, digamos, lista-correo@seifried.org) lo enviará al buzón especificado por la regla general. Ya sólo por este motivo no se debería
utilizar una regla general.
El segundo método es muy simple, sencillamente se arranca el sendmail con la opción –x y se especifica un fichero para hacer un log de todas las transacciones. Este fichero crecerá con enorme rapidez, NO recomendaría utilizar este método para hacer log del correo, al menos que sea absolutamente necesario.
QmailQmail (al igual que Postfix) fue creado como una respuesta directa a los fallos percibidos en Sendmail. Qmail es GPL con una cláusula sin distribución binaria que obliga a instalarlo desde el código fuente. Muy poco del código del Qmail se ejecuta como root, y es muy modular comparado con el sendmail (el cual es un trozo de código monolítico). Se puede descargar de: http://www.qmail.org/
PostfixEl Postfix es un agente de transferencia de correo (MTA) orientado a la seguridad, velocidad, y facilidad de configuración, cosas en las que Sendmail suele fallar por lo general. Recomendaría encarecidamente reemplazar el Sendmail por el Postfix. La única parte de Postfix que se ejecuta como root es un programa de control maestro, llamado "master", que llama a otros programas
para procesar el correo a la cola ("pickup"), un programa para gestionar la cola, espera conexiones entrantes, repartos de correo retrasados, etc.
("qmgr"), un programa que en realidad envía y recibe el correo ("smtpd") etc.
Cada parte de Postfix está muy bien pensada, y generalmente hace una o dos tareas, muy bien. Por ejemplo, en lugar del modelo de sendmail, donde el correo simplemente se volcaba a /var/spool/mqueue, en Postfix existe un directorio accesible por el mundo llamado "maildrop" el cual se comprueba mediante "pickup", el cual alimenta los datos a "cleanup", el cual mueve el correo (si está correctamente formateado, etc.) a un directorio seguro de cola para el
procesado real.
Los ficheros primarios de configuración están en /etc/postfix, y existen varios ficheros primarios de configuración que es necesario tener:
master.cf
Controla el comportamiento de varios programas de "ayuda", están hechos chroot, el máximo número de procesos que pueden ejecutar, etcétera. Probablemente sea mejor dejar las configuraciones por defecto en la mayoría de los servidores de correo, a menos que se necesite ajustar algo por altas cargas o asegurar el servidor (p. ej. haciéndolo chroot).
main.cf
Este fichero está muy próximo al sendmail.cf (en cuanto a propósito, en cuanto al diseño es bastante diferente). Está bien comentado y configura todas las variables principales, y las situaciones y formato de diferentes ficheros que contienen información tal como los mapeos a usuarios virtuales e información relativa.
He aquí una lista de variables y localización de ficheros que se suele tener que configurar, el fichero /etc/postfix/main.cf por lo general suele estar comentado densamente. Ten en cuenta que los siguientes ejemplos de entradas main.cf no son un main.cf completo.
# ¿cuál es el nombre de la máquina?
myhostname = correo.ejemplo.org
# ¿cuál es el nombre de dominio?
mydomain = ejemplo.org
# ¿cómo etiqueto el "from" del correo?
myorigin = $mydomain
# ¿en qué interfaces lo ejecuto? Por lo general, en todas.
inet_interfaces = all
# un fichero que contiene una lista de nombres de hosts y nombres de
# dominio cualificados desde los cuales recibo correo,
# generalmenteestán listados así:
# mydestination = localhost, $myhostname, etc
# pero prefiero mantener el listado en un fichero.
mydestination = /etc/postfix/mydestination
# mapa de nombres de usuarios entrantes. "man 5 virtual"
virtual_maps = hash:/etc/postfix/virtual
# mapeo de alias (como /etc/aliases en sendmail), "man 5 aliases"
alias_maps = hash:/etc/postfix/aliases
# base de datos de alias, se pueden tener diferentes configuraciones.
# "man 5 aliases"
alias_database = hash:/etc/postfix/aliases
# dónde repartir el correo, formato Mailbox o Maildir
# (el tradicional /var/spool/mail).
home_mailbox = Maildir/
# dónde guardar el correo, generalmente en /var/spool/mail/ pero se
# puede cambiar con facilidad
mail_spool_directory = /var/spool/mail
# ¿qué comando utilizamos para repartir el correo? /usr/bin/procmail
# es el comando por defecto, pero yo utilizo scanmail que es el sello
# del software antivirus AMaViS
mailbox_command = /usr/sbin/scanmails
# para quién retransmito el correo, de nuevo se pueden listarlos o
# guardarlos en un fichero (uno por línea).
relay_domains = /etc/postfix/relaydomains
# lista de redes locales (por defecto se retransmite el correo de
# estos hosts).
mynetworks = 10.0.0.0/24, 127.0.0.0/8
# ¿qué se le muestra a la gente que conecte al puerto 25? Por defecto
# muestra el número de versión, lo cual yo no hago.
smtpd_banner = $myhostname ESMTP $mail_name
En términos generales, cualquier fichero que simplemente liste un elemento por línea (como /etc/postfix/mydestination o /etc/postfix/relaydomains) se suelen almacenar como simple texto llano. Los ficheros que contienen mapeados (p. ej. alias, donde se tienen entradas como "root: cualquierusuario") deberían transformarse en ficheros hash de base de datos por velocidad (se puede especificar el tipo de fichero como hash, dbm, etc.).
Al igual que la mayoría de productos de IBM, Postfix tiene una licencia bastante curiosa, pero parece que la mayoría es código abierto y libre. Postfix se encuentra disponible en: http://www.postfix.org/. Se pueden conseguir los rpm's de postfix en: ftp://contrib.Redhat.com/, y aparentemente SuSE ahora viene con Postfix.
Sendmail ProSendmail Pro es una versión comercial de Sendmail con soporte, y se encuentra disponible en: http://www.sendmail.com/. No me ha sido posible conseguir una demo o encontrar a alguien que lo utilice, de modo que no estoy seguro al 100% de lo cercano que se encuentra al Sendmail "original", aunque la compañía me ha dicho que utiliza el mismo código de base.
ZmailerZmailer es un gestor de correo GPL disponible en: http://www.zmailer.org/.
Tiene ganchos criptográficos y por lo general parece bien construido.
DMailDMail es un servidor de correo comercial, y no es código abierto. Se puede descargar una versión de prueba de: http://netwinsite.com/dmail_first.htm
nullmailerEl nullmailer envía correo a hosts inteligentes (relays) de forma que la máquina local no tenga que ejecutar ningún software de servidor. Está en:
http://em.ca/~bruceg/nullmailer/.
MasqMailEl MasqMail manda el correo a una cola mientras está offline y después lo envía cuando conectas a tu ISP. Se puede configurar para múltiples ISP's, con dirección de respuesta, etc. Se puede descargar en:
http://merlin.uni-sw.gwdg.de/~okurth/masqmail/
Dynamic Relay Authorization ControlEl Dynamic Relay Authorization Control (DRAC) se une a tu servidor POP/IMAP para garantizar temporalmente acceso de reenvío SMTP a los hosts que se han autentificado con éxito y recogen correo (asumiendo que estos hosts enviarán correo, y no van a abusar de este privilegio. Se puede conseguir en:
http://mail.cc.umanitoba.ca/drac/index.html.
POP
WU IMAPD (popd original)
POP e IMAP están relacionados pero son muy diferentes, de modo que los he separado aparte. POP significa "Protocolo de Oficina de Correos, Post Office Protocol" y simplemente te permite listar mensajes, recibirlos y borrarlos. Existen muchos servidores POP disponibles para Linux, el original que viene con la mayoría de las distribuciones suele ser adecuado para la mayoría de los
usuarios. Los problemas principales con POP son similares a los de muchos otros protocolos; los nombres de usuarios y sus contraseñas se transmiten en texto claro, haciendo de ello un buen objetivo para un sniffer de paquetes. El POP se puede "SSLificar", sin embargo no todos los clientes de correo soportan POP seguro mediante SSL. La mayoría de los servidores POP vienen configurados para utilizar TCP_WRAPPERS, que es un método excelente de restringir el acceso. Para más información, ver anteriormente la sección sobre TCP_WRAPPERS. POP se ejecuta como root (ya que tiene que acceder a buzones) y en el pasado se han detectado varios ataques de root a varios servidores POP. POP se ejecuta en el puerto 109 y 110 (aunque el 109 está obsoleto), utilizando el protocolo tcp. El servidor IMAPD de la Universidad de Washington también viene con un servidor POP y en general se trata del servidor POP standard que viene con la mayoría de distribuciones Linux. Se puede conseguir de: http://www.washington.edu/imap/.
ipfwadm –I –a accept –P tcp –S 10.0.0.0/8 –D 0.0.0.0/0 110
ipfwadm –I –a accept –P tcp –S un.host.fiable –D 0.0.0.0/0 110
ipfwadm –I –a deny –P tcp –S 0.0.0.0/0 –D 0.0.0.0/0 110
o
ipchains –A input –p tcp –j ACCEPT –s 10.0.0.0/8 –d 0.0.0.0/0 110
ipchains –A input –p tcp –j ACCEPT –s un.host.fiable –d 0.0.0.0/0 110
ipchains –A input –p tcp –j DENY –s 0.0.0.0/0 –d 0.0.0.0/0 110
CyrusCyrus en un servidor imap (también soporta pop y kpop) dirigido a entornos "cerrados". Es decir, que los usuarios no tendrán ningún acceso al servidor de correo más que mediante los protocolos imap o pop. Esto le permite a Cyrus almacenar el correo de forma más segura, y permite una gestión más sencilla en instalaciones más grandes. Cyrus no tiene licencia GNU, pero es relativamente "libre", y está disponible en: http://andrew2.andrew.cmu.edu/cyrus/imapd/.
También existe un conjunto de herramientas añadidas a Cyrus disponible en:
ftp://ftp.hr.vc-graz.ac.at/cyrus-tools/.
IDS POPIDS (No apesta, "It Doesn't Suck") POP es un reemplazo más ligero del popd dirigido a instalaciones más pequeñas. Es GPL y se encuentra disponible en:
http://www.nodomainname.net/software/ids-pop/.
QpopperQpopper es freeware, está producido por Qualcomm (los autores de Eudora). No lo recomendaría (el código fuente no está disponible). Se puede conseguir de:
http://eudora.qualcomm.com/freeware/qpop.html.
IMAPDWU IMAPD (imapd original)
IMAP es un POP con esteroides. Permite mantener con facilidad múltiples cuentas, permitir a múltiples personas acceso a una cuenta, dejar correo en el servidor, simplemente descargar los encabezados, o los cuerpos sin attachments, etc. IMAP es ideal para cualquiera o con serias necesidades de correo. Los servidores POP e IMAP que traen la mayoría de las distribuciones (empaquetados en un único paquete llamado imapd, por extraño que parezca) cubren la mayoría
de las necesidades.
IMAP también se ejecuta como root, aunque imapd suele tener el privilegio del usuario que está accediendo, y no se puede configurar con facilidad para que se ejecute como usuario no-root, puesto que tienen buzones abiertos (y en el caso de IMAP, crea carpetas, ficheros, etc. en el directorio personal del usuario), de modo que no se pueden quitar los privilegios tan pronto como alguien quisiera. Ni se puede hacer chroot con facilidad (IMAP necesita tener acceso a
/var/spool/mail, e IMAP necesita acceder al directorio personal del usuario).
La mejor política es tener el software actualizado. Y si es posible, filtrar pop e imapd con el cortafuegos, lo cual funciona bien no hay nadie de gira que necesite recoger su correo vía Internet. El IMAP de la Universidad de Washington (WU) se encuentra disponible en: http://www.washington.edu/imap/.
IMAP se ejecuta en el puerto 143 y la mayoría de los servidores IMAPD soportan
TCP_WRAPPERS, lo cual le hace relativamente sencillo de bloquear.
ipfwadm –I –a accept –P tcp –S 10.0.0.0/8 –D 0.0.0.0/0 143
ipfwadm –I –a accept –P tcp –S un.host.fiable –D 0.0.0.0/0 143
ipfwadm –I –a deny –P tcp –S 0.0.0.0/0 –D 0.0.0.0/0 143
o
ipchains –A input –p tcp –j ACCEPT –s 10.0.0.0/8 –d 0.0.0.0/0 143
ipchains –A input –p tcp –j ACCEPT –s un.host.fiable –d 0.0.0.0/0 143
ipchains –A input –p tcp –j DENY –s 0.0.0.0/0 –d 0.0.0.0/0 143
Si te ha gustado el artículo inscribete al feed clicando en la imagen más abajo para tenerte siempre actualizado sobre los nuevos contenidos del blog:
El Mundo de Ubuntu en las Redes Sociales
Espero que esta publicación te haya gustado. Si tienes alguna duda, consulta o quieras complementar este post, no dudes en escribir en la zona de comentarios. También puedes visitar Facebook, Twitter, Google +, Linkedin, Instagram, Pinterest, restantes Redes Sociales y Feedly donde encontrarás información complementaria a este blog. COMPARTE EN!