Asegurar la plataforma
Prontus ha sido estructurado para ofrecer máxima seguridad y confiabilidad ante 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.
Última modificación: Miércoles 8 de abril de 2020
El uso de suExec provee a los usuarios la posibilidad de correr programas con interfaz común de acceso, CGI (Common Gateway Interface) y directivas interpretadas por el servidor, SSI (Server Side Includes) bajo ID's de usuario diferentes del ID de usuario del servidor Web. Normalmente, cuando ejecutas un programa CGI o SSI, éste corre con el mismo ID de usuario con que el Servidor Web está corriendo.
Usada apropiadamente, esta característica puede reducir considerablemente los riesgos de seguridad que significa permitir a los usuarios desarrollar y ejecutar programas CGI o SSI privados.
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ías tener una shell válida si esto no es estrictamente necesario.
El ambiente de administración está conformado por directorios que contienen CGIs, páginas web de administración y datos sensibles.
Este ambiente puede aislarse de tres maneras posibles:
- Separa físicamente los servidores destinados a la administración y a la exposición de los contenidos en Internet. Realiza 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.
- Monta 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.
- Protege 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)
.
Es altamente recomendable que protejas 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>
Llamamos "directorios de administración" a los siguientes:
- /cgi-cpn (ejecutables del panel de administración)
- /prontus/cpan (plantillas y archivos de las vistas del panel de administración)
- /prontus/data (datos necesarios para el uso del panel de administración)
- /[identificador de prontus]/cpan (archivos de configuración de la instancia Prontus)
Sin embargo, parte de los contenidos ubicados dentro del directorio /[identificador de Prontus]/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
Order allow,deny
allow from 200.27.244.32
Para prohibir todo acceso al material sensible dentro de los directorios /prontus/cpan y /prontus/data puedes usar por ejemplo instrucciones como estas (servidor Apache):
Order allow,deny
Deny from all
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:
[nombre del sitio]/site/artic/aaaammdd/xml/
Para 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
Conceptos Básicos
¿Qué es Prontus?
Estructura de directorios
Glosario
Navegadores soportados
Tutoriales
Instalación de Prontus CMS
Implementar un nuevo sitio en Prontus
Cómo crear un FID
Cómo crear una plantilla de artículo
Cómo crear una plantilla de portada
Cómo crear plantillas de formulario
Cómo implementar un formulario
Cómo implementar un buscador
Cómo implementar un buscador Elasticsearch
Cómo crear una plantilla de taxonomía
Cómo crear plantillas de tags
Cómo crear una plantilla de listado
Cómo crear una plantilla de tags jerárquicos
Implementar carga de videos en Prontus
Integración de Redes Sociales
Instalación y Configuración
Requerimientos
Configuración del servidor
Base de datos
Asegurar la plataforma
Instalación con Wizard Prontus
Ajustes post-instalación
Archivos de configuración de Prontus
Friendly URLs
Friendly URLs para imágenes
SSI en Prontus
Logs de Eventos
Ejecutar procesos periódicamente con cron
Debugging
Plantillas
Plantillas de FID
Plantillas de artículo
Plantillas de portada
Plantillas de taxonomía
Plantillas de artículos relacionados
Plantillas de tags
Plantillas de listado
Plantillas de tags jerárquicos
Plantillas de mapa de taxonomía
Plantillas de mapa de tags
Marcas
Tipos de marcas
Diccionario de marcas
Marcas para texto
Marcas de lógica
Marcas de despliegue
Marca Menú y Panel
Parsing de marcas en formularios Prontus
Funcionalidades
Funcionalidades SEO en Prontus CMS
Multivistas
Galería de Imágenes
Buscador Multivista
Buscador
Buscador Elasticsearch
Calendarios
Imprimir artículos
Posting de contenidos
Plugins
Post-procesos
Prontus functions
Implementar copias de seguridad automáticas con Dropbox
Implementar múltiples ediciones
Regeneración masiva de artículos via línea de comandos