You are on page 1of 3

En este foro quisiera que tratemos acerca de la seguridad en servidores

web, como sabemos es de los principales servidores con los que en


algún momento me imagino todos hemos trabajado, al estar expuesto
de manera directa con los usuarios que utilizan el servicio que este nos
brinda son más recurrentes a ataques y por ende a exposición pública
(imagen empresarial) si se llegase a perder control del mismo, a
continuación detallo algunas observaciones que considero se deben
tener muy en cuenta desde dos puntos de vista:

De forma General

1. Mantener actualizada la versión de nuestro Servidor Web


(Apache, IIS, Nginx, entre otros), además de nuestro sistema
operativo.
2. Administración de puertos controlada, deshabilitar lo que no se
utilice.
3. No confiar en las configuraciones por defecto.
4. Esconder las versiones de nuestro servidor.
5. Definir los Timeout acordes a políticas de uso de las aplicaciones.
6. Archivos de configuración deben estar restringidos y no expuestos
de forma pública.
7. Administrar usuarios con permisos y privilegios bien definidos.
8. Establecer políticas para la creación y actualización de
contraseñas seguras.
9. La ejecución de aplicaciones o paquetes debe estar
debidamente controlada y en ejecución con privilegios mínimos.
10. Lo más recomendable es que se coloque un Servidor que va a
estar expuesto a una cantidad considerable de peticiones
(Páginas Web, Servicios, entre otros) detrás de un firewall de
frontera, permitiendo así que éste filtre las peticiones
directamente y no pasen directo hacia el servidor web, por medio
de este podremos mitigar diversos ataques entre ellos los
conocidos como denegación de servicios (DoS) y denegación de
servicios distribuidos (DDoS).
11. Los firewall que protejan al Servidor web pueden ser
implementados a nivel de Hardware (Cisco, Sonicwall, Fortigate,
etc) o Software (Netfilter, Pfsense, Comodo, etc).
12. Mantener copias de seguridad, snapshots de tal forma que
podamos recuperar la información o volver a restablecernos a un
punto seguro.

Desde el punto de Vista del Desarrollador Web:


Al momento de configurar un servidor web con todas las seguridades
del caso no termina todo, es importante que los sistemas, aplicaciones o
módulos que se desarrollen y alojen en el mismo sean seguros y esto
tiene que ver directamente con la forma en que están programados,
para ello detallo unas características que desde mi punto de vista como
desarrollador se deben tomar en cuenta:

1. Es primordial tener un control de las entradas y salidas de


información, los sistemas no pueden aceptar cualquier
información de entrada ya que su salida no será la esperada
(programada).
2. Existen dos ambientes de desarrollo, el de producción y el de
pruebas, toda aplicación que se esté desarrollando puede tener
activado los mensajes de error y excepciones con la mayor
cantidad de información que permita al desarrollador conocer
cuál es el error pero al colocar el sistema en producción al usuario
final, todos estos mensajes deben ser específicos y no contener
información que pueda comprometer el sistema tales casos como
versiones de lenguaje de programación, bases de datos, etc.
3. En toda aplicación es importante dependiendo de su grado de
manipulación de información manejar un login de usuarios con un
respectivo captcha de seguridad lo que me puede ayudar
contra un ataque de fuerza bruta.
4. La información se filtra antes del envío y en el envío de formularios
lo que permite que en la ejecución del script las validaciones
configuradas logren detectar código malicioso y bloqueen su
ejecución total, es recomendable utilizar formularios con método
de envío tipo POST ya que vía GET son mucho más fáciles de que
el atacante conozca la estructura de la URL que receptara
nuestra aplicación.
5. Todo sistema que al realizar consultas a la base de datos
dependiendo del lenguaje debe filtrar sus variables antes de
ejecutar directamente en una sentencia sql, es recomendable
utilizar procedimientos almacenados para dejar así la carga y
validación a la base de datos, para la lectura de datos es
recomendable usar vistas.
6. La información que se almacene con respecto a passwords,
credenciales, tarjetas de crédito deben guardarse cifradas de tal
forma que si un atacante consigue obtener accesos la
información no sea visible en “texto claro”.
7. Las validaciones en una aplicación deben realizarse desde el
momento que el usuario comienza a digitar valores en los campos
de un formulario (javascript, jquery, etc), si logra superar estas
validaciones un segundo paso es validar nuevamente estos datos
desde el lado del servidor (php, java, python) para comprobar
definitivamente si son permitidos, con esto se pueden detectar
ataques de sql inyection, xss entre otros.
8. El manejo de protocolo HTTPS es una prioridad ya si se utiliza HTTP
mediante un análisis de trafico de una red entre un usuario hacia
el servidor web, el atacante podría capturar sus credenciales de
acceso.
9. Si se utiliza apache se puede configurar el firewall de aplicación
ModSecurity.

Si desconocemos varias de las configuraciones de un servidor web


inicialmente podemos usar herramientas como metasploit, nessus, nikto,
entre otras que existen que proporcionan información acerca de las
vulnerabilidades que podamos tener en nuestro servidor y de esta forma
irlos corrigiendo.

You might also like