Seguridad en plataforma Unix

Prontus ha sido estructurado para ofrecer una mínima exposición a ataques o uso mal intencionado. De hecho, se puede llegar al extremo de publicar sólo páginas estáticas, sin permitir la ejecución de ningún aplicativo en el servidor. Sin embargo, para lograr un buen nivel de seguridad deben tomarse algunas medidas en el servidor web.
Usar suExec


En ambientes Unix, se recomienda el uso de este wrapper para:

  • Mantener una consistencia entre los contenidos generados por Prontus y el (posible) acceso FTP al espacio publicable.
  • Aislar el contenido de cada sitio virtual (si existe más de uno en la misma máquina).
  • Mantener el tamaño del sitio bajo control, asignando una cuota de uso de disco a ese usuario.

El usuario a nombre del cual se ejecutarán las CGIs de Prontus debiera tener la menor cantidad de privilegios
posible. Por ejemplo, no debería tener una shell válida si esto no es estrictamente necesario.

 

Aislar el ambiente de Administración


El ambiente de administración consiste en algunos directorios que contienen CGIs, páginas web de
administración y datos sensibles.
Este ambiente puede aislarse de tres maneras posibles:

  • Separar físicamente los servidores destinados a la administración y a la exposición de los contenidos en Internet. Realizar una copia o sincronización de archivos desde el servidor de administración hacia el o los servidores de producción expuestos a los usuarios en forma periódica o cada vez que un operador altera algo con herramientas tales como rsync.
  • Montar dos servidores web en paralelo en la misma máquina, sobre el mismo espacio en disco, y controlar el acceso hacia el servidor que sirve para administrar los contenidos, calificando IPs de origen y usuarios.
  • Proteger los directorios sensibles calificando IPs de origen y usuarios.

Además de lo anterior, se recomienda que el servidor de administración sea seguro (https).

 

Proteger directorio de Publicación


Es altamente recomendable que se proteja el directorio donde residen las CGIs de Prontus que publican los
contenidos. Este directorio suele denominarse cgi-cpn y sólo contiene CGIs usadas por los operadores del sitio
web. Ningún visitante necesita tener acceso a ellas.

La protección se implementa a nivel de servidor web y puede consistir en:

Autenticación básica (basic authentication)

Por ejemplo (servidor Apache):
# Solo permite acceso al usuario admin
< Directory /sites/sitio.com/web/cgi-cpn >
Authname "Area Protegida"
AuthGroupFile /dev/null
Authtype Basic
AuthUserFile /sites/sitio.com/conf/.htpasswd
order allow,deny
allow from all
require user admin
< /Directory >

Validación de la red o host desde donde se puede acceder a estas aplicaciones

Por ejemplo (servidor Apache):
# Solo permite acceso desde el host 200.27.244.32
< Directory /sites/sitio.com/web/cgi-cpn >
Order allow,deny
allow from 200.27.244.32
< /Directory >

Forzar el uso de un servidor seguro

Por ejemplo (servidor Apache):
# Redirecciona request a servidor seguro.
Redirect /cgi-cpn https://www.sitio.com/cgi-cpn
# Prohibe el acceso a este directorio.
< Directory /sites/sitio.com/web/cgi-cpn >
deny from all
< /Directory >

 

Proteger directorio de Administración


El directorio de administración corresponde al "Panel de Control", denominado cpan y ubicado directamente bajo
el directorio principal del administrador.

Por ejemplo:
/prontus_noticias/cpan
Sin embargo, parte de los contenidos ubicados dentro del directorio cpan son accedidos por el operador
(administrador, editor o redactor), por lo tanto la protección debe ser selectiva.

Para proteger estos contenidos, se debe:

Prohibir el acceso a todo usuario o red no calificado.

Por ejemplo (servidor Apache):
< Directory /sites/sitio.com/web/prontus_noticias/cpan >
Authname "Area Protegida"
AuthGroupFile /dev/null
Authtype Basic
AuthUserFile /sites/sitio.com/conf/.htpasswd
order allow,deny
allow from all
require user admin
< /Directory >

y/o
< Directory /sites/sitio.com/web/prontus_noticias/cpan >
Order allow,deny
allow from 200.27.244.32
< /Directory >
Prohibir todo acceso al material sensible dentro del directorio /cpan/data

Por ejemplo (servidor Apache):
< Directory /sites/sitio.com/web/prontus_noticias/cpan >
Order allow,deny
Deny from all
< /Directory >

Prohibir el acceso a archivos XML dentro del subdirectorio site


Prontus guarda la información completa de cada artículo en archivos xml que comparten la estructura de
directorios con las páginas (html, php, asp o jsp) generadas.

Si el sitio web contiene información confidencial, un visitante mal intencionado podría deducir el path hacia estos
archivos y de esta manera obtener acceso a esta información.

El path a los archivos xml tiene la forma:
< prontus dir >/site/artic/aaaammdd/xml/ (aaaammdd = año mes díaPara prohibir el acceso a estos archivos se puede insertar, por ejemplo, la siguiente configuración (servidor Apache):
< DirectoryMatch "/site/artic/[0-9]{8}/xml" >
Order Deny,Allow
Deny from All
< /DirectoryMatch >
Para ayudar a la protección de estos datos, Prontus genera archivos .htaccess en cada directorio xml,
conteniendo lo siguiente:
Order Allow,Deny
Deny from All