Podemos estar seguros de que un servicio del que disponemos está seguro al cien por cien. Podemos confirmar que un dispositivo es tan seguro que nada ni nadie podrá acceder a el. Y, ¿tú qué crees?.

Lo primero es conocer que un servicio nunca está seguro al cien por cien si:

  • Alguien puede acceder fisicamente.
  • Está conectado a algún tipo de red.
  • Le llegan señales del exterior.

Conociendo estos pequeños detalles, ningún servicio estará 100% seguro. Lo importante es minimizar la exposición, los posibles ataques y hasta dónde puede llegar un atacante en caso de acceder al servicio.

Minimizar la exposicón

Minimizar lo que un atacante puede ver. A día de hoy existen todo tipo de automatismos, éstos buscan un tipo de dispositivo vulnerable. Un claro ejemplo es la red Mirai, esta red compuesta por dispositivos instalados en casa con la contraseña y usuario por defecto. Con servicios como Shodan se han encontrado cámaras personales en viviendas accesibles y con control remoto.

Mucha gente permite que la infomación se vea. Si dejamos un servicio con su puerto por defecto, el atacante lo tendrá más fácil, se puede intentar confundirlo con otro puerto diferente, o ponerlo en un puerto raro. De esta forma, los ataques automáticos no sucederán. En las web hay que intentar limitar exponer que tipo de servidor, plataforma, etcétera está expuesta. La cabecera de los servidores y plataformas se elimina fácil. También hay que eliminar comentarios o salidas de control al usuario final. Existen casos de páginas con más código comentado que funcionando.

Otro detalle importante, son los servidores y servicios que se instalaron el primer día y no se han vuelto a tocar desde entonces. Esto es un gran riesgo. Muchos de los ataques son para versiones antiguas, y tú puedes ser una víctica. Siempre intenta tener los servicios actualizados, eliminando posible problemas.

Antes de tener esta web, teníamos un Wordpress que era atacado más de mil veces al día por máquinas, ya que tenía muy pocas visitas de usuario y muchas visitas a wp-admin.

Controlar el acceso

Una vez que está el atacante dentro, hay que intentar minimizar los daños. Si tenemos una base de datos, limitar los permisos a los usuarios. Poca gente realmente necesita permiso de escritura. Si tenemos un blog un usuario para la web y otro usuario para la adminsitración. A ser posible, que el portal de administración esté en otra dirección o con múltiples capas de seguridad.

Además de controlar el acceso, tenemos que controlar los permisos que se dan a los usuarios. Y revisar que las peticiones con privilegios sólo la puedan ejecutar los usuarios especiales.

¿Y si nos atacan?

Ésta pregunta hay que tenerla siempre en mente, y con un plan adecuado a la situación. Si nos quieren atacar lo acabarán haciendo. Hemos visto muchas empresas atacadas, y más en estos momentos: hospitales, empresas tecnológicas, dispostivos conectados, …

Lo primero es conocer el impacto que tendría. No es lo mismo que puedan cifrar la base de datos de todas las ventas, a la base de datos de los artículos del blog. Si atacan el blog el impacto en pequeño, se puede recuperar casi completamente sin necesidad de nada en especial. Por otra parte, si atacan la base de datos de ventas, en un gran problema. Si disponemos de copias de seguridad físicas y en la nube el impacto es menor, y si además tenemos una copias de las transaciones en papel o en un servicio externo (email con el pedido) la recuperación es sencilla.

Siempre hay que tener esa plan de contingencia. Para los servicios web, hay plataformas que te permiten estar siempre disponible, o filtrar posibles ataques a servidores especiales.

Conclusiones

Registrar todo lo que sucede en nuestros servicios para detectar patrones extraños. Existen diversas herramientas que pueden ayudarnos a detectar estos problemas. Minimizar las personas con acceso a los recursos. Limitar lo que se puede realizar sin conexión desde el interior de nuestra red, en caso de necesidad, se puede instalar una VPN para poder acceder a estos recursos.

Así mismo, limitar los intentos raros o peticiones que no tengan ningún sentido. Si en una url el ID es numérico e intentan poner caracteres, se está intentado hacer un ataque a la base de datos, bloqueando al potecial atacante reducimos problemas.

Controlar a los usuarios, mejor que se pida permiso, a que pidan perdón.

Por otra parte, existen soluciones exotéricas. Para limitar puertos está el método del Port Knocking, el puerto solo está disponible en caso de realizar una llamada a unos puertos concretos en un orden concreto. Otros usan proxies públicos para acceder a sus servicios. Con los DNS sucedió algo curioso, en diversas redes el puerto 53 está restringuido y se tiene que utilizar DNS over HTTPS (DoH) para poder conocer la IP de ciertos sitios.

Por último, hay que adaptarse, limitando servicios expuestos y accesos, las probabilidades son bajas. Y si se tiene un plan B por si sucede algo, podemos estar tranquilos.