Seguro como Fort Knox: cómo proteger un sitio web de los piratas informáticos
Publicado: 2021-10-05En este artículo, ofrecemos una guía sobre cómo proteger un sitio web para que no sea pirateado y utilizado para actividades ilegales.
La seguridad en línea es una enorme bandera roja en el infinito cielo azul de Internet. Y si bien las palabras "seguridad en línea" pueden recordar primero el acoso en línea y las protecciones para los usuarios, el daño que la falta de seguridad del sitio web puede tener en una empresa también es significativo. Los propietarios de sitios web que recortan el gasto en seguridad pagan con su reputación y, en consecuencia, sufren pérdidas financieras.
Contenido:
- Por qué todos los propietarios de sitios web necesitan invertir en seguridad
- ¿De qué vulnerabilidades estamos hablando?
- Defectos de inyección
- Exposición de datos sensibles
- Ataques de secuencias de comandos entre sitios (XSS)
- Autenticación rota
- Configuración incorrecta de seguridad
- Control de acceso roto
- Deserialización insegura
- Registro y monitoreo insuficientes
- Entidades externas XML (XXE)
- Usar componentes con vulnerabilidades conocidas
- Cómo crear un sitio web seguro
- ¿Cuánto cuesta asegurar un sitio web?
Por qué TODOS los propietarios de sitios web deben invertir en seguridad
Algunos propietarios de sitios web tienen pensamientos como estos: No hay nada que robar en mi sitio web. No conservo ningún dato de usuario ni detalles de pago. No necesito seguridad costosa de primera calidad.
Sin embargo, eso es simplemente ingenuo. Hay una serie de razones por las que su sitio web podría ser pirateado incluso si no alberga ningún dato personal o financiero. Aquí hay una lista de usos que los piratas informáticos podrían tener para casi cualquier servidor desprotegido:
- Para exigir un rescate. Incluso si no mantiene ningún dato de usuario en sus servidores, los piratas informáticos pueden apoderarse de ellos y exigirle dinero para recuperarlos.
- Para usar como un relé SMTP (protocolo simple de transferencia de correo). SMTP es un protocolo que se utiliza para enviar correos electrónicos de forma masiva, por ejemplo, boletines informativos. Los piratas informáticos pueden utilizar sus servidores para enviar spam o ransomware.
- Para minar Bitcoins.
- Para usar en ataques DDoS como parte de una botnet.
- Para cambiar o eliminar los datos de su sitio web. Las razones para querer hacerlo pueden variar.
Y eso es solo rascar la superficie. Además de las amenazas planteadas por terceros (piratas informáticos y otros delincuentes), también existen amenazas planteadas por posibles errores por parte de los empleados que gestionan su sitio web, por ejemplo. De hecho, la seguridad interna es tan importante como la externa, si no más.
Entonces, ¿cómo puedo proteger mi sitio web de los piratas informáticos? usted pregunta.
Bueno, debes tener en cuenta y lidiar con una serie de vulnerabilidades.
¿De qué vulnerabilidades estamos hablando?
Una de las entidades de mayor reputación en la industria que se preocupa por la ciberseguridad es el Open Web Application Security Project, OWASP para abreviar. La fundación OWASP monitorea y actualiza regularmente su lista de problemas de seguridad web generalizados. Los siguientes son problemas de seguridad comunes en su lista (sin ningún orden en particular) al día de la redacción de este artículo y algunos consejos sobre cómo reducir el peligro para su sitio web.
Defectos de inyección
Las fallas de inyección afectan a las bases de datos y son causadas por una mala validación de entrada. Cuando su sistema acepta la entrada del usuario pero no filtra adecuadamente esa entrada, hace que el sistema sea vulnerable; los piratas informáticos pueden explotar esto para inyectar su código en su sistema (de ahí el nombre). Este código inyectado puede hacer que su sitio web ejecute comandos que usted no pretendía, haciendo que muestre datos confidenciales o incluso ceda el control del sitio web al pirata informático.
El tipo más popular de vulnerabilidad de inyección involucra bases de datos SQL, pero las vulnerabilidades de inyección no se limitan realmente a ellas. Las consultas XPath, las declaraciones LDAP y los scripts XML también pueden ser vulnerables a la inyección.
¿Cómo hacer que un sitio web esté protegido contra fallas de inyección? Dos de las mejores prácticas incluyen el uso de desinfección de consultas SQL y consultas parametrizadas. Hay API que le permiten hacer eso.
Si no desea implementar estas cosas a mano, puede usar una herramienta ORM (mapeo relacional de objetos) para su lenguaje de programación preferido. Usamos ActiveRecord porque está estrechamente vinculado con el ecosistema Rails.
Ninguna de las opciones anteriores es completamente infalible, pero es lo más parecido a una protección sólida en estos días.
Exposición de datos sensibles
Los datos sensibles son cualquier dato que se pueda utilizar para explotar a una persona de una forma u otra:
- Nombre
- Número de seguridad social
- Número de carnet de conducir
- Información de tarjeta de crédito
- Nombres de usuario y contraseñas
- Fecha de cumpleaños
- Información de salud
- Nombre de soltera
- Nombre de los padres
Incluso puede incluir cualquier información que sea una respuesta a una pregunta de seguridad, por ejemplo, para su cuenta bancaria. ¿Quién hubiera pensado que el nombre de su primera mascota podría considerarse información confidencial, verdad?
Proteger los sitios web de la exposición a datos confidenciales es difícil, ya que esta exposición es difícil de predecir y detectar. Pero existen medidas preventivas que puede tomar. Los datos sensibles, si se almacenan en un sitio web, nunca deben almacenarse como texto sin formato ; debe estar encriptado con la última tecnología y transmitirse solo a través de canales seguros.
Si su sitio web facilita cualquier transacción o, en general, trata con datos confidenciales, debe utilizar el cifrado SSL. Ésta es la última y mejor tecnología de encriptación disponible. El cifrado SSL le ayuda a transferir datos de forma segura entre un navegador y un servidor o entre servidores. Además, muchos usuarios buscarán HTTPS en la dirección de su sitio web para ver si es seguro. Ese encabezado es lo que obtiene cuando obtiene un certificado SSL.
También se recomienda generalmente almacenar datos en la nube. Sin embargo, no asuma que simplemente almacenarlo en la nube hará que los datos estén seguros automáticamente. No obstante, se deben implementar todas las medidas de protección, y debe monitorear y actualizar regularmente la seguridad.
Ataques de secuencias de comandos entre sitios (XSS)
Las vulnerabilidades XSS son, en cierto modo, similares a las fallas de inyección, ya que permiten a los piratas informáticos afectar las páginas de su sitio web mediante la inyección de código no nativo. En el caso de XSS, estamos hablando de inyección de JavaScript. El JavaScript inyectado por un pirata informático puede cambiar el contenido de la página, insertar enlaces a sitios web maliciosos y enviar datos originalmente ocultos al pirata informático, lo que da como resultado la exposición de datos confidenciales.
Ruby on Rails y React tienen protección XSS incorporada. Otra opción para las medidas anti-XSS y anti-inyección sería usar el encabezado de respuesta HTTP Content-Security-Policy.
Autenticación rota
Originalmente llamado "Gestión de sesión y autenticación rota", esta falla se ocupa de las vulnerabilidades durante la autenticación de usuario y la gestión de sesión, como se evidencia en el nombre. Esto incluye la exposición de las credenciales de inicio de sesión y una serie de problemas con los ID de sesión:
- ID de sesión débiles
- ID de sesión que se muestran en las URL
- ID de sesión que no cambian entre inicios de sesión
- Transmisión de ID de sesión a través de conexiones no seguras
Las ID de sesión están directamente conectadas a la identidad de un usuario, al igual que las credenciales, y por lo tanto, interceptarlas puede llevar al secuestro de la cuenta de un usuario. Esto genera todo tipo de daños para sus usuarios, desde los financieros y de reputación hasta los relacionados con la salud.
Para que su sitio web esté a salvo de los ataques de autenticación, solicite la autenticación de múltiples factores : por ejemplo, solicite una contraseña constante y una contraseña de un solo uso entregada al dispositivo móvil del usuario.
Google emplea una opción para la autenticación de dos factores : para abrir su cuenta de Google en un navegador web, primero debe ingresar su contraseña. Si es correcto, también debe abrir la aplicación de Google en su teléfono y elegir el número que se muestra en el navegador web.
Los métodos de protección de sitios web más obvios para la autenticación rota incluyen:
- Aplicación de la complejidad de la contraseña : "Su contraseña debe tener al menos 8 caracteres e incluir al menos un número, una letra mayúscula y una letra minúscula".
- limitar los intentos de inicio de sesión antes de los cuales se suspende la cuenta (por un tiempo específico o hasta que el usuario contacte a los administradores del sitio) y alertar a los administradores
Configuración incorrecta de seguridad
La configuración incorrecta de la seguridad es un tema amplio, ya que esto puede suceder en cualquier etapa y con cualquier parte de su sitio web: una base de datos, una red, un servidor, un marco, almacenamiento o casi cualquier otra cosa. Las debilidades de la configuración se pueden aprovechar para acceder a la funcionalidad del sistema. Dependiendo de dónde se encuentre la vulnerabilidad, dicho acceso puede ser parcial o completo. Ejemplos de configuración incorrecta:
- No ha desactivado las cuentas / contraseñas predeterminadas.
- Hay funciones innecesarias y no utilizadas.
- Los permisos de acceso a la nube no están configurados de forma segura.
- Sus mensajes de error muestran información confidencial como nombres de usuario, contraseñas o direcciones de correo electrónico.
Lo primero que debe hacer para evitar una configuración incorrecta es eliminar todo lo que no se utiliza: funciones, muestras, marcos, etc. El siguiente paso es garantizar la misma configuración para todos los entornos y verificar su rendimiento con regularidad. Una arquitectura bien pensada es imprescindible.
Control de acceso roto
El control de acceso es el control sobre lo que los usuarios pueden y no pueden hacer. Cuando no se aplica correctamente, significa que los usuarios pueden realizar acciones que pueden afectar su sitio web de formas impredecibles. Una forma de explotar el control de acceso roto es ver y editar los perfiles y datos de otros usuarios. Otro es acceder a funciones premium sin pagarlas ni ganarlas. Otro más es acceder a las páginas de administración desde una cuenta que no es de administrador (o peor aún, sin una cuenta).
La mejor manera de asegurarse de que el control de acceso de su sitio web funcione es mediante pruebas manuales. Ninguna herramienta de prueba automatizada puede garantizar que el control de acceso funcione según lo previsto.
El control de acceso roto también puede resultar del abuso del mecanismo de intercambio de recursos de origen cruzado (CORS), que puede proporcionar acceso a API que de otro modo estarían restringidas. Por esta razón, se recomienda utilizar CORS lo menos posible.
Deserialización insegura
La serialización es el proceso de transformar un objeto en un código binario. La deserialización es, lógicamente, lo contrario. Ambos son procesos que se llevan a cabo regularmente en el desarrollo web, lo que hace que sea importante implementar protecciones contra su uso en ataques.
La buena noticia es que la deserialización no es algo que un usuario habitual o su empleado puedan hacer accidentalmente . Esa es también, en parte, la mala noticia: los ataques de deserialización siempre son deliberados y, por lo tanto, viciosos. También dan lugar a los problemas más graves, como ejecutar código remoto, ingresar al sitio web sin autenticación e iniciar ataques DoS (denegación de servicio).
La forma más fácil de proteger su sitio web de este tipo de ataque es prohibir los objetos serializados generados por el usuario. Si esto no se puede hacer, la siguiente mejor opción es usar firmas criptográficas para verificaciones de integridad.
El uso de JSON, YAML o XML puede dificultar la explotación de las debilidades de deserialización para los piratas informáticos, ya que estos formatos no son binarios.
Registro y monitoreo insuficientes
Esta vulnerabilidad parece bastante obvia: si no supervisa su sitio web y no registra todos los errores e intentos fallidos de iniciar sesión o ejecutar la funcionalidad de control de acceso , básicamente está tentando a los piratas informáticos a atacar su sitio web. En cualquier tipo de guerra, digital o de la vida real, el primer ataque generalmente no se trata de ganar, sino de ver a qué te enfrentas. Y si hay una forma fácil de entrar, úsala. Si no se registra y supervisa dicho sondeo, su sistema perderá el ataque por completo o lo detectará una vez que ya se haya producido y el daño esté hecho.
El registro es particularmente importante para los sitios de comercio electrónico, ya que se ocupan del dinero y las credenciales financieras de los usuarios.
Para hacer que su sitio web sea más seguro, registre correctamente todos los intentos fallidos y asegúrese de que estos registros se almacenen y respalden fuera de sus servidores locales. Emplee sistemas de alerta automática para tales fallas y, si es posible, suspenda las cuentas que generen continuamente tales fallas. Es vital contar con sistemas de alerta en tiempo real para que pueda reaccionar ante una posible infracción de forma inmediata.
Entidades externas XML (XXE)
Ya hemos mencionado XML (Extensible Markup Language) un par de veces. Es un lenguaje flexible, que lo hace fácil de usar y generalizado. Los procesadores XML analizan datos de documentos XML. Si su sitio web está basado en XML y acepta cargas XML sin validación, puede ser susceptible a ataques.
Para proteger la integridad de su sitio web, se recomienda el siguiente conjunto de acciones:
- Deshabilite el procesamiento de DTD (definición de tipo de documento).
- Limite o evite las cargas de XML o, si eso no se puede hacer, aplique la lista blanca: validación de entrada positiva del lado del servidor.
- Actualice periódicamente sus procesadores y bibliotecas XLM.
- Evite la serialización de datos sensibles.
- Cuando corresponda, use JSON o formatos simples similares.
- Implemente firewalls de aplicaciones web (WAF) y puertas de enlace de seguridad API.
Usar componentes con vulnerabilidades conocidas
Nada es perfecto, y cualquier componente que use en su software seguramente tendrá alguna vulnerabilidad, conocida o desconocida. En respuesta a las vulnerabilidades descubiertas y reconocidas, el software se actualiza para cubrir esas vulnerabilidades o mitigar cualquier daño que pueda ser causado por su explotación. Algunas debilidades causan daños menores, pero otras pueden ser perjudiciales para su negocio.
Para evitar la piratería de sitios web debido a vulnerabilidades conocidas, es importante comprobar periódicamente si hay actualizaciones y actualizar todos los componentes utilizados en su sitio web. Esta puede ser una tarea tediosa en sitios web y software con muchos componentes. Es por eso que los expertos en seguridad recomiendan verificar y eliminar regularmente bibliotecas, características, archivos y otros componentes innecesarios y no utilizados. Y, por supuesto, solo use componentes de fuentes oficiales. No se deje seducir por los sitios web que distribuyen software generalmente pago de forma gratuita: se puede modificar para piratear su sitio web.
Cómo crear un sitio web seguro: el resultado final
Para poner toda la información tecnológica en términos sencillos, estos son los consejos de seguridad que debe seguir si desea crear un sitio web seguro:
- Encuentre un proveedor de alojamiento web confiable.
- Actualice periódicamente todo el software, los marcos y las bibliotecas que se utilizan en su sitio web.
- Elimine las funciones y componentes innecesarios de su sitio web.
- Configure sistemas para validar la entrada tanto en el navegador como en el servidor.
- Supervise la información que se muestra en los mensajes de error.
- Configure un verificador de seguridad de contraseña para los usuarios.
- Utilice siempre contraseñas seguras para sus servidores y páginas de administración, y cámbielas con regularidad.
- Invierta en un certificado SSL / use el protocolo HTTPS.
- Configure el registro adecuado para fallas y errores.
- Registre las transacciones de auditoría (especialmente si el suyo es un sitio web de comercio electrónico).
- Supervise los registros de cerca.
- Utilice servidores en la nube, pero proteja sus datos de todos modos.
- Cifre siempre los datos confidenciales utilizando las últimas tecnologías.
- Haga que su equipo de seguridad esté atento a las actualizaciones de seguridad emergentes, así como a las nuevas amenazas, para poder reaccionar a los ataques de manera oportuna.
¿Cuánto cuesta asegurar un sitio web?
Esta es una pregunta para la que no hay una respuesta definitiva. El costo de la seguridad depende en gran medida de la tecnología que utilice su sitio. Además, existe el costo de las actualizaciones, que dependerá de cuántos componentes necesite actualizar, con qué frecuencia los actualice y cuánto cuesta actualizar cada uno de ellos. Estos costos deben ser calculados individualmente por sus desarrolladores.
Recomendamos encarecidamente tener en cuenta la seguridad desde el principio del desarrollo . Dejar el tema de la seguridad hasta el final podría (y muy probablemente lo hará) resultar en la necesidad de introducir cambios en el núcleo de su sitio, lo que puede ser incluso más costoso que construir la seguridad desde el principio.
Conclusión
Si usted es un desarrollador, es dueño de una empresa de desarrollo o tiene un equipo de desarrollo interno, puede establecer todas estas tareas antes que ellos. Sin embargo, si aún no cuenta con especialistas técnicos de su lado y desea saber cómo crear un sitio web seguro con un proveedor de subcontratación, le recomendamos que busque una empresa de desarrollo que no solo pueda crear un sitio web, sino que también lo respalde. Es casi imposible predecir todas las vulnerabilidades, pero la capacidad de reaccionar ante cualquier infracción de manera oportuna puede salvar su sitio web del peor de los destinos.
Los desarrolladores de Mind Studios tienen experiencia en las mejores prácticas de seguridad y se mantienen al día con las últimas tendencias. Si tiene preguntas sobre cómo proteger su sitio web de los piratas informáticos, contáctenos para una consulta gratuita .
Escrito por Svitlana Varaksina y Artem Chervichnik