ISPConfig en JackTheStripper

Asked by Pablo Cardozo on 2014-11-23

Muy buenas noches mi pregunta va relacionada al uso de ISPConfig (http://www.ispconfig.org/page/home.html) que si no me equivoco es una especie de C-Panel pero libre y gratis.

Puede que directamente usando JackTheStripper pueda configurar todo gráficamente, pero me surgió la duda de si después de correr el software queda alguna interfaz gráfica como para agregar más bases de datos o por ejemplo configurar las diferentes IP para asignar a cada página web alojada en el servidor.

Desde ya muchas gracias y me parece un excelente esfuerzo el logrado en JackTheStripper, y espero poder probarlo en un servidor dedicado que acabo de contratar.

Question information

Language:
Spanish Edit question
Status:
Solved
For:
JackTheStripper Edit question
Assignee:
No assignee Edit question
Last query:
2014-11-23
Last reply:
2014-11-24
Jason Soto (jsitech) said : #1

Saludos pablo.....Según veo ISPConfig es una herramienta que te permite gestionar tus servidores via web... Podrías correr jackthestripper antes de implementar la solución....Lo de la interfaz de la base de datos no veo que hable de eso en los datos que lei sobre ISP, pero en caso de no tenerlo podrías buscar una solución alternativa para manejar tus bases de datos desde una interfaz gráfica... PHPmyadmin para darte un ejemplo. Y lo de las ip, entiendo que la solución te lo debe permitir sin problemas.

No conocia ISPConfig, por lo que voy a probarlo y de esta manera pudiera ayudarte un poco mas en caso de que asi lo requieras....... Pero de antemano te recomiendo que pruebes JackTheStripper, que te va a ser la vida un poco mas facil en las tareas de hardening del server....

Un Saludo...

Jason Soto

Eugenia Bahit (eugeniabahit) said : #2

Hola Pablo,

El tema con las interfaces gráficas Web, es bastante complicado. Trataré de ser lo más breve posible:

Por norma general, cualquier sistema que desde un navegador Web permita efectuar cambios directamente sobre el sistema operativo, ES un agujero de seguridad en el sistema. ¿Por qué? Porque es un modo rápido y fácil de acceder al servidor. De hecho, "lo gráfico" lo hace incluso entendible a quien con una simple herramienta haya logrado ganar acceso pero una vez dentro no sepa qué hacer.

Pero ahora supongamos que uno acepta correr el riesgo. Para poder correr la aplicación «conflictiva» habría que, primero, entender lo que JackTheStripper hace (y podría interferir con la app) y luego, efectuar una serie de análisis para lograr que la app corra manteniendo al menos, algunas de las medidas de seguridad aplicadas por JTS.

¿Qué hace JTS? (vale aclarar que se necesita también, conocer al menos en que lenguaje está desarrollada la app y si se puede acceder al código fuente, mejor).

En principio, por lo acabo de leer, ISPConfig está desarrollado en PHP, uno de los lenguajes más peligrosos para manipular el sistema operativo ya que para hacerlo, requiere que los archivos estén servidos. Por su peligrosidad, JTS bloquea el acceso a funciones del sistema operativo directamente en el archivo php.ini (directiva disallow_functions). Esto podría impedir directamente el arranque de la app.

Uno de los ataques más frecuentes es cuando un usuario logra vulnerar la seguridad de una aplicación Web, ganando acceso a la misma ya sea mediante fuerza bruta o peor aún, explotando una vulnerabilidad de la propia app. Cuando esto sucede, el atacante no solo gana acceso a la aplicación, sino que además, con un simple script podría ganar acceso completo a todo el sistema. Para evitar esto último, JTS restringe el ámbito de ejecución de sripts PHP, a la carpeta /srv/websites (directiva open_base_dir del archivo php.ini). Si una app debe manipular funciones del sistema, muy probablemente (aunque no necesariamente) podría requerir un acceso más extendido y algunas funciones podrían fallar.

Por otro lado, como norma general de seguridad, JTS aplica un principio básico de la seguridad al momento de configurar el firewall (iptables) que es «BLOQUEARLO TODO Y CERRAR TODOS LOS PUERTOS». Solo abre el puerto 80 para poder operar vía HTTP y el 372 para hacerlo vía SSH (de hecho, cierra el 22 que es el puerto por defecto). Por este motivo, también restringe las conexiones a MySQL al ámbito local (aconsejable para el resto de las DB que se utilicen).

Por lo general, las aplicaciones Web que permiten manipular el sistema operativo desde un navegador (accesible por cualquier usuario), son servidas mediante un puerto distinto al 80. Dicho puerto habría que abrirlo a mano, configurando una nueva regla en iptables.

Finalmente, están las Core Rules de OWASP para ModeSecurity (https://www.owasp.org/index.php/Category:OWASP_ModSecurity_Core_Rule_Set_Project). Se trata de un conjunto de reglas de seguridad para Apache, desarrolladas por la organización OWASP (Open Web Application Security project: https://www.owasp.org) de un nivel de exigencia muy alto. Son reglas muy pero muy estrictas.

Por lo general, tras instalar una aplicación Web, se testean cada una de sus funcionalidades de forma individual, verificando la respuesta de las mismas. Cuando la respuesta sea un error 403 Forbiden (lanzado en el 100% de los casos por ModSecurity), se analiza el log de errores, el cual contiene, entre otros datos:
- motivo que generó la respuesta
- nivel de criticidad del problema detectado
- ruta del archivo que contiene la regla lanzada
- línea en la que se define dicha regla
Cuando una aplicación está bien desarrollada bajo políticas de seguridad altamente exigentes, suele ser necesario eliminar tan solo 5 reglas cuya criticidad es tan solo una mera advertencia (no son falsos positivos, pero sin embargo, contemplando el resto de reglas, estas pocas no serían tan necesarias). Dichas reglas son las encontradas en los siguientes archivos:

/etc/modsecurity/base_rules/modsecurity_crs_41_sql_injection_attacks.conf
Líneas: 64, 76, 77

/etc/modsecurity/base_rules/modsecurity_crs_21_protocol_anomalies.conf
Líneas: 47, 48, 65, 66

Sin embargo, la mayoría de los CMS o aplicaciones como ISPConfig destinadas a manipular el sistema operativo, no contemplan políticas de seguridad exigentes durante el desarrollo, lo que hace que el análisis de seguridad funcional resulte tedioso y demore días completos. Por ese motivo, la mayoría de las veces, el cansancio gana a los devs y sysadmin y se termina desactivando ModSecurity con lo que Apache queda practicamente desprotegido.

JackTheStripper prácticamente da garantías de invulnerabilidad siempre y cuando se conserven todas las medidas implementadas y como caso de excepción, se eliminen las reglas de ModSecurity que comenté párrafos arriba. Si se elimina una regla más o se abre un puerto más o se modifica tan solo una regla implementada por JTS, ya no es posible garantizar la invulnerabilidad del sistema, sobre todo teniendo en cuenta que JTS apunta a proteger un servidor incluso cuando una Web app mal desarrollada sea vulnerable ya que su objetivo es crear una barrera por detrás de la misma.

Si a pesar de ello quieres correr el riesgo, lo más difícil será ModSecurity. Mi sugerencia es que vayas probando y por cada 403 lo postees aquí para que te podamos decir si es o no seguro deshabilitar la regla o si mejor convendría tocar el código de ISPConfig.

Espero haberte podido aclarar el panorama sin aburrirte demasiado :)

Saludos!

Eugenia Bahit (eugeniabahit) said : #3

Vale aclarar que PHPMyAdmin presenta los mismos inconvenientes que cualquier otra app de este estilo. O sea, habrá que hacer todo el testeo de ModSecurity y modificar el php.ini :/

Jason Soto (jsitech) said : #4

Mas Claro no canta un gallo..... Pero el problema mayor con este tipo de aplicaciones es con el firewall de aplicaciones...Pero como comenta eugenia , Reglas que vayas deshabilitando, nivel de seguridad que va bajando... Realmente es un caso de estudio en este tipo de implementaciones.... Lo mejor seria que te montes un server para probar, y hagas pruebas exhaustivas y vayas estudiando todo lo que te genere conflictos con lo que hace JTS....

Pablo Cardozo (pablo-cardozo) said : #5

Excelente respuesta Eugenia.

Por tus comentarios y como ya tengo contratado el servidor y es para que sustituya uno que está funcionando bastante mal no voy a tener mucho tiempo de hacer las prácticas en otro lado. Voy a ver si cuando pueda conectarme por la VPN y luego por SSH ya instalo JackTheStripper y ahí me iré apañando.

Pensaba ponerle algo gráfico para administrarlo pero siempre he sido más de la consola así que es el momento de tirarse al agua e ir administrándolo todo por consola.

Muchísimas gracias por las respuestas de todos y todas, y aprovecho a felicitarlos por el trabajo y tendrían que mostrarlo un poco más, llegué a él de rebote. Pero creo que muchos que tenemos que meternos a administradores sin saber mucho agradecemos este paquete.

Un fuerte abrazo y ya seguiré por aquí con otras dudas.

Eugenia Bahit (eugeniabahit) said : #6

Gracias por los comentarios, Pablo! Me alegra que todo haya sido de utilidad :)
Abrazo!