it-swarm-es.com

¿Cómo mantener seguro un servidor de alojamiento web compartido?

¿Cuáles son las formas de mantener seguro un servidor LAMP compartido, suponiendo que el acceso SSH esté disponible para todos los usuarios?

Editar: Estoy pensando principalmente en proteger el servidor de los propios usuarios y entre ellos.

20
Olivier Lalonde

Probablemente sea imposible, pero puede dificultar el éxito de un atacante.

Fortalece tus defensas:

La seguridad fortalece el sistema (quizás haciendo referencia a una de las siguientes listas de verificación)

http://iase.disa.mil/stigs/checklist/ (busque la Lista de verificación de seguridad de UNIX)
https://benchmarks.cisecurity.org/en-us/?route=downloads.multiform

Añadir:

seguridad
Linux con seguridad mejorada
AppArmor

Aquí se describe una comparación decente de las herramientas anteriores: http://www.lifelinux.com/selinux-vs-apparmor-vs-grsecurity-345.html

Manténgase actualizado sobre parches de seguridad.

Obtener visibilidad:

Implemente un HIDS (por ejemplo, OSSEC ) para ayudarlo a detectar cuándo los usuarios se comportan mal.

Todo lo anterior requerirá un esfuerzo continuo. Eso es seguridad.

13
Tate Hansen

Lo primero que debo hacer en mi opinión es cambiar el puerto ssh a algo no estándar e instalar algo como fail2ban.

También podría ser útil ajustar el cortafuegos para bloquear el acceso desde el exterior a los puertos no utilizados (tal vez solo permita 80, 423, 25 y ssh ... depende)

2
gbr

Además de las otras respuestas:

Los permisos de los programas (cgi, php, etc.) ejecutados por el servidor web son un problema:

Si se ejecutan con los permisos del servidor web, un usuario malintencionado puede acceder a los archivos proporcionados por otros usuarios. Estoy pensando en archivos de configuración con credenciales de base de datos aquí.

Si esos programas se ejecutan con el permiso de los usuarios individuales, pueden modificar los archivos del programa ellos mismos. Esto podría facilitar la explotación de problemas de seguridad en las aplicaciones, por ejemplo, un script .php podría no validar correctamente los nombres de los archivos cuando los guarda. Y los usuarios necesitan permisos de escritura en el directorio web, por lo que el programa php también tiene permisos de escritura allí.

SourceForge tiene lanzado un módulo Apache y un sistema de archivos Fuse que permite permisos más finos:

Los bits de permisos están en un trío estándar de conjuntos "rwx" (lectura/escritura/ejecución), pero las categorías normales "usuario" (propietario), "grupo" y "otros" se reemplazan por el trío de "miembro del proyecto", "acceso Apache iniciado por el proyecto" y "todos".

Permisos de Project Web Filesystem

2

Básicamente, no hay nada que pueda hacer para realmente hacer las cosas seguras, ya que cosas como wordpress siempre terminan con problemas de seguridad masivos, así como PHP en sí, etc.

La única forma (creo) de estar bastante seguro es ejecutar cada sitio en una máquina virtual separada. Esto (casi) aísla totalmente un sitio de otro, pero por supuesto tiene la sobrecarga de tener que administrar cada VM, tiene más uso de memoria, más ciclos de CPU, etc.

Ah, y cada VM necesita todos los parches de software continuamente.

Sin embargo, vale la pena considerarlo, ya que es mucho más seguro que tratar de mantenerse al tanto de todos esos sitios.

1
John Hunt