Conectar a Internet nuestro “Home Assistant” supone un aumento de la superficie de exposición de nuestros servidores a internet, y por tanto conlleva ciertos riesgos. Por eso, a través de este mini-tutorial vamos a ver varios “tips” que podemos configurar para mejorar la seguridad de nuestra instalación cuando la exponemos a Internet.
Es bien conocido que muchos usuarios comparten la misma contraseña para múltiples servicios, incluso el mismo usuario. Lo que, en caso de que existiese una brecha de seguridad estos datos podrían ser utilizados para poder acceder a otros servicios, como por ejemplo nuestro servidor Home Assistant. Por esta razón, necesitamos poner una medida de seguridad adicional que nos ayude a protegernos.
Autenticación en pasos (2FA)
Con un sistema de autenticación en dos pasos, como su nombre indica, no necesitaremos tener sólo nuestro usuario y contraseña, sino que también tendremos que tener un dato adicional que demuestre que podemos acceder al sistema.
Con la autenticación en dos pasos (también conocida como “autenticación de dos factores”) habilitada en nuestra instancia de Home Assistant, añadiremos una capa de seguridad extra al acceso. De forma que, para acceder nos harán falta dos factores:
- Algo que sabes (tu contraseña)
- Algo que tienes (un código OTP)
¿Cómo activamos 2FA en Home Assistant?
Para habilitarlo, tendremos que ir a la esquina superior izquierda de nuestro dashboard, donde aparecerá la primera letra de nuestro nombre. Una vez pulsemos allí, accederemos a las propiedades de nuestro perfil.
Si nos desplazamos por la pantalla hacia más abajo, llegaremos a una sección que indca: “Módulos de autenticación multifactor”, habilitaremos esta opción (según aparece en la imagen) y nos dará la oportunidad de escanear un código QR para usar una aplicación externa que nos permita gestionar nuestros códigos OTP.
¿Qué aplicaciones puedo usar para gestionar mis códigos OTP?
Aquí va por gustos, podemos usar muchas y están disponibles para casi todas las plataformas. Aquí os dejamos algunas:
- Google Authenticator
- Authenticator de LastPass
- Authy.
Una vez hayamos escaneado el código QR con nuestra aplicación favorita, veremos en la pantalla unos números que cada cierto tiempo irán variando. Estos es el segundo factor que nos va a solicitar nuestro Home Assistant cuando nos autentiquemos
Añadiendo un sistema de protección extra
Además de conseguir acceder a nuestro home assistant mediante un segundo factor de autenticación, vamos a habilitar también una medida de protección extra. Vamos a permitir que Home Assistant se encargue por nosotros de bloquear aquellas direcciones IP que intenten acceder a nuestro sistema y fallen más de “X” veces a la hora de introducir las credenciales de acceso.
Para eso, dentro de la sección “http:” de nuestra configuración (configuration.yaml) añadiremos las siguientes líneas:
Ip_ban_enabled: true
Login_attempts_threshold: 3
De esta forma cuando alguien falle más de tres veces seguidas la autenticación en nuestro sistema, de forma automática nuestro Home Assistant bloqueará su dirección IP creando una entrada en el fichero ip_bans.yaml
Y ya que estamos, ¿por qué no hacemos que además cada vez que haga un baneo nos avise mediante pushbullet?, vamos allá
Notificaciones de intentos fallidos de acceso a nuestro Home Assistant
Para no hacer mucho más larga esta entrada en el blog, daremos por hecho que ya tenemos configuradas las notificaciones mediante pushbullet.
Iremos al fichero automations.yaml e incluiremos las siguientes líneas
######################################################### # # # FAILED LOGIN ATTEMPTS # # # ######################################################### - alias: "Send notification upon failed login attempt" trigger: - platform: state entity_id: persistent_notification.httplogin condition: - condition: template value_template: "{{ trigger.to_state.state != 'None' }}" action: - service: notify.pushbullet data_template: title: "{{ states.persistent_notification.httplogin.attributes.message }}" message: 'url: https://whatismyipaddress.com/ip/{{ states.persistent_notification.httplogin.attributes.message.split ("from ") [1]}}' - service: persistent_notification.dismiss data: notification_id: 'httplogin'
Con esto conseguiremos que nos avise mediante el servicios Pushbullet cuando han intentado acceder a nuestro sistemas. Pero para muestra un botón:
La entrada Home Assistant #26: Securizando nuestro servidor Home Assistant se publicó primero en Domótica en Casa.