Fundamentos de seguridad para desarrolladores y administradores de sitios

De todos los temas tecnológicos, la seguridad es posiblemente la más compleja, y ciertamente la más importante. Esto se debe a que la seguridad siempre está evolucionando. Es una evolución forzada, ya que debemos adaptarnos a las amenazas que surgen constantemente.

Hay varios niveles de seguridad de los que tendremos responsabilidad. El primer nivel es nosotros mismos o la organización para la que trabajamos. El segundo nivel es de nuestros clientes. Y el tercer nivel son los usuarios de los sitios web o aplicaciones que desarrollamos para nuestros clientes.

A pesar de nuestros mejores esfuerzos, los clientes siempre encontrarán formas de socavar las protecciones que les brindamos. Confían en nosotros como profesionales de TI para ayudarlos a mantenerse seguros, pero, paradójicamente, también Rara vez siguen los consejos de seguridad. Nosotros les proporcionamos. La mayoría de los usuarios realmente son sus propios peores enemigos.

Lo que tenemos que hacer, entonces, es hacer que sea lo más difícil posible para los clientes comprometer su propia seguridad, al mismo tiempo que es lo más fácil para nosotros hacer las tareas que necesitan hacer. Lograr ambos objetivos a la perfección puede ser imposible, pero en este artículo cubriremos algunas cosas que puede hacer para reducir los riesgos de una violación de seguridad.

gif por Patswerk

Protegiendo tus propios dispositivos y datos.

Usted es la primera línea de defensa para usted y sus clientes. Si sus sistemas están comprometidos, todos aquellos para quienes trabaja podrían estar en riesgo. Aquí hay algunas recomendaciones sobre los mínimos que puede hacer para evitar operar en un entorno de mayor riesgo:

  1. Utilice un sistema operativo de escritorio seguro. Esta es la actualización más básica que podría hacer si no está utilizando un sistema operativo seguro. Los sistemas operativos más seguros son Linux, Unix y BSD. Debería usar uno de estos sistemas operativos como sistema operativo de escritorio principal.
    La ventaja tanto para los desarrolladores como para los administradores es que obtiene acceso a una biblioteca mucho más grande de herramientas gratuitas de desarrollo y seguridad, y la mayoría de ellas funcionan mejor que sus equivalentes de Windows u OSX. Para operar realmente en modo paranoico, elija las distribuciones de Linux más seguras, como Loro, Qubes y Cruz.
  2. Mantenga la separación entre el sistema operativo y sus datos. Si está ejecutando Linux o Unix, esto es fácil. Simplemente asegúrese de haber creado una partición o un disco duro separado para alojar su partición doméstica. Entonces, todos los archivos de usuario sobrevivirán a cualquier número de instalaciones de sistemas operativos, y se puede acceder a ellos desde varios sistemas operativos en sistemas de arranque múltiple.
  3. Use un sistema de archivos de registro por diario para ayudar a prevenir la pérdida de datos si su sistema falla o se detiene inesperadamente.
  4. Refleja la partición de tu hogar. Realice regularmente copias de seguridad de los archivos importantes y utilice la versión de los archivos para evitar sobrescrituras no intencionales.
  5. Considere utilizar la copia de seguridad en la nube (no debe confundirse con la sincronización en la nube, que no es tan segura como una copia de seguridad genuina). Los datos confidenciales deben estar encriptados antes de ser cargados.
  6. Mantenga su sistema actualizado, nunca ignore los parches de seguridad. Los sistemas que usan actualizaciones continuas tienen la ventaja de que siempre sabrá cuándo hay parches disponibles, qué necesita parches y por qué.
  7. Capacite a las personas dentro de su organización para que estén atentos a los métodos de ingeniería social que pueden usarse contra ellos para obtener acceso a sus sistemas.
  8. Evite ejecutar software de fuentes no verificadas. Al descargar software de fuentes confiables, verifique las firmas de los archivos para asegurarse de que tiene una copia auténtica.
  9. Mantenga la seguridad física de sus computadoras, especialmente cuando viaje. Llevar su computadora portátil a todas partes puede no ser práctico, pero es mejor que dejar que criada malvada corromper su BIOS. Si realmente no es una opción para llevar su computadora, guárdela en un estuche con llave y asegúrelo en una caja fuerte o lo mejor que pueda.
  10. Siempre recuerde que es mejor ser paranoico que ser un idiota que fue hackeado.

ilustración por Puntos Fantasma Creativos

Protegiendo clientes

Mantener a los clientes a salvo de las amenazas de TI es difícil, porque no todos comprenden la magnitud de la amenaza que enfrentan. Muchos también tendrán la opinión de que si su sitio está comprometido, entonces es su problema resolverlo, no de ellos.

Muchos sitios han sido explotados durante años sin que los propietarios lo supieran, porque se supone que la mayoría de los ataques maliciosos contra sitios no permiten que se conozca su presencia. Por lo tanto, no puede confiar en los clientes para informarle de los problemas. Tendrá que tomar un enfoque proactivo.

  1. Trate de educar a sus clientes sobre los riesgos. La mayor parte del problema se debe a la ignorancia de que existe algún riesgo de estar en guardia.
  2. Informar a los clientes corporativos que la mayor amenaza que enfrentarán es amenazas internas creados por sus propios empleados y contratistas (a menudo inadvertidos, pero no siempre así). También asegúrese de que estén conscientes de problemas como la ingeniería social, la navegación por los hombros y el buceo en basureros.
  3. Mantener los servidores parcheados. Realizar copias de seguridad regulares.
  4. Escanear en busca de evidencia de vulnerabilidades en la puerta trasera u otra actividad maliciosa. Diseñar la estructura de archivos y carpetas para que el sitio sea lo más simple posible ayudará a facilitar la detección. Sepa qué archivos deben estar en cada carpeta. Si ve archivos nuevos que no están familiarizados o que parecen tener nombres generados por computadora, eso es una señal de advertencia.
  5. Sepa qué archivos deben estar en la carpeta cgi-bin (para la mayoría de los sitios, eso no será archivos), ya que esta es una ubicación favorita para esconder programas maliciosos.
  6. Revise periódicamente el archivo htaccess para asegurarse de que no haya sido manipulado.
  7. Es poco probable que el código que escriba haga un uso extensivo de las cadenas de codificación y decodificación, o que contenga contenido fuertemente cifrado. Si los archivos PHP contienen código inusual, no es muy probable que sean archivos legítimos. Las instrucciones de codificación de caracteres inusuales también son un obsequio. No es probable que sus archivos legítimos estén codificados en codificación Windows-1251, por ejemplo.
  8. Después de confirmar una violación, cambie sus contraseñas. Los permisos de verificación de archivos están configurados correctamente para todos los archivos y carpetas. Monitorea las señales de que el intruso ha regresado. Incluso después de cambiar su contraseña, los atacantes pueden tener una forma de ingresar. Deberá asegurarse de que no lo hagan. Configure su servidor para que le informe por correo electrónico cuando se realicen cambios en el servidor.
  9. Ayude a sus usuarios a elegir las contraseñas de manera adecuada explicándoles las reglas de una manera que puedan entender. Así es como a la mayoría de las personas les gusta establecer sus contraseñas: jenny23TEsta es la forma en que los administradores de sistemas suelen recomendarles que establezcan sus contraseñas: n @ ^ 2z`jGAnd: el problema es que la primera contraseña se puede descifrar en segundos, mientras que la segunda se puede descifrar en unas pocas horas. Además, no hay esperanza alguna de que el usuario recuerde la contraseña más compleja. Aquí hay un ejemplo de una contraseña que demoraría varias vidas y nunca podría ser olvidada: Ialwaysfly @ 40,000feet - Las características de la contraseña anterior incluyen: Más de 20 de longitud, mezcla de mayúsculas y minúsculas, incluye números y letras, incluye Caracteres no alfanuméricos, fácilmente memorables. Un ejemplo similar podría ser:

    asMove ^ inlife, nunca volveré a 4herehereIstartedThere realmente no hay límite a la creatividad que puede obtener con las contraseñas, y hay mucha más ventaja con

    Al igual que en la vida real, nunca se 4 se iniciará en comparación con n @ ^ 2z`jG. El primer ejemplo (caracteres mixtos de 41) tardaría hasta el final de los tiempos en romperse y es fácil de recordar, mientras que el segundo ejemplo (caracteres mixtos de 8) se puede descifrar menos de seis horas y es casi imposible de recordar. No creas que solo puedes unir palabras y todo estará bien, porque los hackers son en eso. Aún necesita mezclar casos y usar caracteres no alfanuméricos, pero ciertamente La longitud es más importante que la complejidad. como están las cosas ahora. Combinar ambos le da una ventaja sobre aquellos que usan solo uno u otro.

    La mayoría de los ataques basados ​​en diccionarios se centran en el inglés porque es el idioma más utilizado y la mayoría de los mejores sitios para segmentar (en términos del valor de lo que pueden producir) son sitios administrados por personas que hablan inglés. Si conoce otro idioma, utilícelo al crear sus contraseñas.

    Tan excelente como

    Al igual que en la vida, nunca volveré a NUMX en ningún lugar, sino que todavía no es tan perfecto como aMedidaQue ^ enLaVida, nuncaolivdarededececence porque esto agrega otra capa de complejidad, forzando al cracker a recurrir a la fuerza bruta. Aprender otro idioma solo para crear mejores contraseñas puede ser un poco demasiado, por lo que la otra cosa que podría hacer es simplemente volverse (o quedarse) muy mal en inglés cuando diseña una frase de contraseña. Por ejemplo:

    asImoov ^ inlyfIwillnevar4gherehereIstarted

    Para lo último, podría usar palabras en un idioma extranjero mal escritas y reemplazar todas las vocales por vocales Leet:

    4M3d1d4Qu3^3nL4V1d3,nunc40l1vd4r3d3dond3c0m3nc3

    No sé sobre ti, pero no tendría la paciencia para escribir eso. Aún así, es una contraseña muy segura, y obliga al cracker a hacer una cantidad de trabajo insana (y espero que luego descubra que todo lo que han accedido es una colección de fotos de gatos)

  10. Asegúrese de que los clientes entiendan los peligros inherentes al envío de información confidencial por correo electrónico, Skype, etc.

gif por Hoang Nguyen

Una nota especial para desarrolladores.

Un rápido y fácil cambio cultural que los desarrolladores pueden adoptar para evitar innumerables brechas de seguridad cada año es simplemente minimizar la cadena de dependencia externa de sus sitios. Nos estamos conectando innecesariamente a scripts alojados de terceros. Muchos de estos scripts pueden tener sus propias dependencias externas. Todo por el bien de guardar unos pocos bytes.

Siempre que sea posible, deberíamos intentar alojar todos nuestros scripts nosotros mismos. Un popular script alojado por un tercero es un objetivo tentador para un atacante, ya que al obtener control sobre el script, es posible ejecutar exploits en miles de computadoras.

Observaciones finales

La seguridad informática es un desafío sin fin, y hay mucho dinero por hacer en ambos lados del desafío. Los riesgos son muy altos y nadie está completamente seguro, ni siquiera los que creen que no tienen nada que ocultar. Ganar es principalmente una cuestión de usar el sentido común y permanecer alerta, nunca permitiéndote ser complaciente.

imagen del encabezado cortesía de Josh Warren

Bogdan Rancea

Bogdan es miembro fundador de Inspired Mag, habiendo acumulado casi 6 años de experiencia durante este período. En su tiempo libre le gusta estudiar música clásica y explorar artes visuales. También está bastante obsesionado con los fixies. Ya es dueño de 5.