14.6. Otras consideraciones relacionadas con la seguridad
La seguridad no es sólo un problema técnico: se trata sobre todo de buenas prácticas y de una buena compresión de los riesgos. Esta sección revisa algunos de los riesgos más comunes, así como también unas pocas prácticas recomendadas que deberían, dependiendo del caso, aumentar la seguridad o reducir el impacto de un ataque exitoso.
14.6.1. Riesgos inherentes de las aplicaciones web
El carácter universal de las aplicaciones web llevaron a su proliferación. Usualmente se ejecutan varias en paralelo: correo web, wiki, sistema de gestión, foros, galería de fotos, blog, etc. La mayoría de estas aplicaciones están basadas en la pila «LAMP» (Linux, Apache, MySQL, PHP). Desafortunadamente, muchas de estas aplicaciones también fueron escritas sin considerar los problemas de seguridad. Los datos que provienen del exterior, demasiado seguido, son utilizados luego de escasa o nula validación. Se pueden proveer valores creados especiales para generar que una llamada a un programa ejecute otro en cambio. Con el paso del tiempo se corrigieron muchos de los problemas más obvios, pero aparecen nuevos problemas regularmente.
Updating web applications regularly is therefore a must, lest any cracker (whether a professional attacker or a “script kiddy“) can exploit a known vulnerability. The actual risk depends on the case, and ranges from data destruction to arbitrary code execution, including web site defacement.
14.6.2. Saber qué esperar
Generalmente se utiliza una vulnerabilidad en una aplicación web como punto de partida para intentos de «cracking». Lo que sigue es una breve revisión de las consecuencias posibles.
The consequences of an intrusion will have various levels of obviousness depending on the motivations of the attacker. “Script-kiddies“ only apply recipes they find on web sites; most often, they deface a web page or delete data. In more subtle cases, they add invisible contents to web pages so as to improve referrals to their own sites in search engines.
Un atacante más avanzado irá más allá. Un escenario desastroso podría ser como sigue: el atacante obtiene la habilidad de ejecutar programas como el usuario www-data
, pero ejecutar una orden necesita demasiadas manipulaciones. Para hacer su tarea más sencilla, instala otra aplicación web diseñada específicamente para ejecutar remotamente muchas órdenes distintas, como navegar el sistema de archivos, examinar permisos, subir o descargar archivos, ejecutar programas o inclusive proveer una consola de red. Generalmente, la vulnerabilidad le permitirá ejecutar wget
para descargar algún malware en /tmp/
y luego ejecutarlo. Usualmente se descarga dicho malware de un sitio web extranjero que fue comprometido con anterioridad y servirá para cubrir sus huellas y hacer más difícil rastrear el origen real del ataque.
En este punto el atacante tiene suficiente libertad de movimiento y, generalmente, instalan un «bot» IRC (un robot que se conecta a un servidor IRC por el que se lo puede controlar). Generalmente se lo utiliza para compartir archivos ilegales (copias no autorizadas de películas o software, etc.). Un atacante tenaz inclusive podría desear ir más allá todavía. La cuenta www-data
no provee acceso completo al equipo, el atacante intentará obtener permisos de administrador. Esto no debería ser posible, pero si la aplicación web no estaba actualizada es posible también que el núcleo y otros programas tampoco estén actualizados; esto a veces deriva de una decisión del administrador que, a pesar de conocer la vulnerabilidad, descuidó la actualización del sistema ya que no existen usuarios locales. El atacante podrá aprovechar una segunda vulnerabilidad para obtener permisos de root.
Now the attacker owns the machine; they will usually try to keep this privileged access for as long as possible. This involves installing a
rootkit, a program that will replace some components of the system so that the attacker will be able to obtain the administrator privileges again at a later time (see also
VISTA RÁPIDO Los paquetes checksecurity y chkrootkit/rkhunter); the rootkit also tries hiding its own existence as well as any traces of the intrusion. A subverted
ps
program will omit to list some processes,
netstat
will not list some of the active connections, and so on. Using the root permissions, the attacker was able to observe the whole system, but didn't find important data; so they will try accessing other machines in the corporate network. Analyzing the administrator's account and the history files, the attacker finds what machines are routinely accessed. By replacing
sudo
or
ssh
with a subverted program, the attacker can intercept some of the administrator's passwords, which they will use on the detected servers… and the intrusion can propagate from then on.
Este es un escenario de pesadilla que se puede prevenir con varias medidas. Las siguientes secciones describirán algunas de estas medidas.
14.6.3. Selección prudente de software
Once the potential security problems are known, they must be taken into account at each step of the process of deploying a service, especially when choosing the software to install. Many web sites keep a list of recently-discovered vulnerabilities, which can give an idea of a security track record before some particular software is deployed. Of course, this information must be balanced against the popularity of said software: a more widely-used program is a more tempting target, and it will be more closely scrutinized as a consequence. On the other hand, a niche program may be full of security holes that never get publicized due to a lack of interest in a security audit.
En el mundo del software libre, generalmente hay mucha variedad de opciones y elegir un software sobre otro debería ser una decisión basada en el criterio local. Más funcionalidad implica un aumento del riesgo de una vulnerabilidad escondida en el código; elegir el programa más avanzado para una tarea podría ser contraproducente, usualmente elegir el programa más simple que cumpla los requisitos es un mejor enfoque.
14.6.4. Gestión de una máquina como un todo
La mayoría de las distribuciones Linux instalan de forma predeterminada una cantidad de servicios Unix y muchas herramientas. En muchos casos, no son necesarios para el funcionamiento adecuado de los servicios configurados por el administrador en la máquina. Como guía general en materia de seguridad, es mejor desinstalar todo el software innecesario. En efecto, no tiene sentido asegurar un servidor FTP si se puede utilizar una vulnerabilidad en otro servicio no utilizado para obtener permisos de administrador en todo el equipo.
De la misma forma, generalmente se configurarán los firewalls sólo para permitir acceder a los servicios que deban estar accesibles públicamente.
Los equipos actuales son suficientemente potentes para poder albergar varios servicios en la misma máquina física. Desde un punto de vista económico, dicha posibilidad es interesante: un sólo equipo a administrar, menor consumo de energía, etc. Desde el punto de vista de seguridad, sin embargo, esta elección puede ser un problema. Un servicio comprometido puede proveer acceso a toda la máquina, que a su vez compromete los otros servicios en el mismo equipo. Se puede mitigar este riesgo aislando los servicios. Puede lograrlo mediante virtualización (cada servicio albergado en una máquina virtual o contenedor dedicado) o bien con AppArmor/SELinux (que cada demonio de servicio tenga un conjunto de permisos adecuado).
14.6.5. Los usuarios también son parte
Discutir sobre seguridad inmediatamente trae a la mente proteger en contra de ataques de «cracker» anónimos escondidos en la jungla de Internet; pero se suele olvidar que el riesgo también proviene desde adentro: un empleado a punto de dejar la empresa podría descargar archivos sensibles en un proyecto importante y venderlos a la competencia, un vendedor descuidado podría dejar su escritorio sin bloquear su sesión durante una reunión con un nuevo prospecto, un usuario atolondrado podría borrar el directorio incorrecto por error, etc.
La respuesta a estos riesgos puede involucrar soluciones técnicas: limitar los permisos otorgados a los usuarios a aquellos estrictamente necesarios y tener respaldos son obligatorios. Pero en muchos casos la protección adecuada involucrará entrenar a los usuarios a evitar los riesgos.
No tiene sentido asegurar redes y servicios si los equipos en sí no están protegidos. Los datos importantes merecen estar almacenados en disco duros que puede cambiar en caliente en arrays RAID, porque los discos duros eventualmente fallan y la disponibilidad de los datos es necesaria. Pero si cualquier repartidor de pizza puede ingresar al edificio, ingresar a la sala de servidores y huir con unos pocos discos duros específicos, no se cumple una parte de la seguridad. ¿Quién puede ingresar a la sala de servidores? ¿Está monitorizado el acceso? Estas cuestiones merecen ser consideradas (y respondidas) cuando se evalúa la seguridad física.
La seguridad física también incluye tener en cuenta los riesgos de accidentes, como incendios. Este riesgo particular es lo que justifica medios de respaldo en edificios separados, o al menos en una caja de seguridad a prueba de incendios.
14.6.7. Responsabilidad legal
De formas más o menos implícita, un administrador recibe la confianza de sus usuarios así como también la de los usuarios de la red en general. Por lo tanto, deberían evitar cualquier descuido que pueda ser aprovechado por gente con malas intenciones.
Un atacante que tome control de su equipo y luego lo utilice como una base avanzada (conocido como «sistema de retransmisión») desde la que realizar otras actividades nefastas podría causarle problemas legales, debido a que aquellos atacados inicialmente verían que el ataque proviene de su sistema y, por lo tanto, considerarlo como el atacante (o un cómplice). En muchos casos, el atacante utilizará su servidor para enviar spam, lo que no debería tener demasiado impacto (excepto la posibilidad de registrarlo en listas negras que limitarían su capacidad de enviar correos legítimos), pero no será agradable. En otros casos, puede causar problemas más importantes desde su máquina, por ejemplo, ataques de denegación de servicio. Esto a veces generará pérdida de ingresos ya que los servicios legítimos no estarán disponibles y podría destruir datos; a veces esto también implicará costos reales, ya que la parte atacada puede iniciar procedimientos legales en su contra. Los titulares de los derechos pueden enjuiciarlo si se comparte desde su servidor una copia no autorizada de una obra protegida por la legislación de derechos de copia, así como también otras empresas, obligadas por acuerdos de nivel de servicio, si deben pagar penalidades por el ataque desde su máquina.
Cuando ocurren estas situaciones, usualmente no basta con alegar inocencia; cuando menos necesitará evidencia convincente que muestre actividad sospechosa en su sistema que proviene de una dirección IP dada. Esto no será posible si descuida las recomendaciones de este capítulo y deja que el atacante obtenga acceso a una cuenta privilegiada (root en particular) y la utilice para cubrir sus huellas.