GNU/Linux en entornos Empresariales
Muchas empresas seguramente dejarán fuera de su parque informático a los equipos de trabajadores que usan GNU/Linux alegando que no pueden incluirlos como equipos de trabajo por que no pueden gestionar el mismo nivel de seguridad que controlan con equipos que usan Windows.
Pues eso ya no es excusa. Con el siguiente manual, cualquier PC de trabajo con Linux de un empleado puede incorporarse a la red de una empresa y cumplir las mismas políticas des seguridad que use un windows al conectarse.
Vamos a dejar documentado el procedimiento para integrar equipos con Debian GNU/Linux en un entorno empresarial que utiliza Microsoft Entra ID (antes Azure AD).
Es totalmente posible gracias a nuevas herramientas que permiten autenticación, inscripción en Intune y cumplimiento de políticas de seguridad.
Opciones para la integración:
1. Himmelblau
Una suite de interoperabilidad que permite:
- Autenticación de usuarios Linux con Entra ID mediante módulos PAM y NSS
- Inscripción de dispositivos en Intune
- Aplicación de políticas de cumplimiento
Ir al repositorio oficial de Himmelblau
2. Microsoft Entra SSO para Linux
Microsoft ha lanzado soporte oficial para inicio de sesión único (SSO) en Linux, incluyendo Debian.
Características:
- Registro del dispositivo en Entra ID
- SSO para apps como Azure CLI, Microsoft Edge, Teams PWA
- Compatibilidad con políticas de acceso condicional
- Integración con Intune para cumplimiento de dispositivos
Pasos básicos para Debian:
# Instalar dependencias
sudo apt update
sudo apt -y install libpam-oauth liboauth-dev
# Registrar el dispositivo en Entra ID
curl -sL https://aka.ms/entra-linux-register | sudo bash
# Configurar PAM para SSO
sudo vi /etc/pam.d/common-auth
# Añadir esta línea:
auth sufficient pam_entraid.so
# Reiniciar los servicios y comprobar
sudo systemctl restart sssd
su - <tu_usuario_entraid>
Revisa la documentación oficial de Microsoft
3. Extensión de navegador Linux Entra SSO
Si necesitas acceso web con políticas de acceso condicional, puedes usar esta extensión:
- Compatible con Firefox, Chrome y Thunderbird
- Requiere instalación de componentes host en Debian
Instalación:
# Instalar dependencias python
sudo apt update
sudo apt-get -y install python3-gi python3-pydbus
# Clonar repo y generar extension SSO
git clone https://github.com/siemens/linux-entra-sso.git
cd linux-entra-sso
make local-install-firefox
Instalar y usar la extensión que hemos creado, tendrá de nombre: linux_entra_sso-<version>.xpi
Si preferís usar el paquete Debian con todo listo descargarlo de linux-entra-sso_1.4.0.deb
Más detalles en repositorio de Siemens
Requisitos importantes
- Tener un tenant de Microsoft Entra ID
- Privilegios de root en los equipos Linux
- Acceso a Intune si se desea aplicar políticas de cumplimiento
Script para integrar múltiples equipos Debian con Microsoft Entra ID
Este script realiza:
- Instalación de dependencias
- Registro del dispositivo en Entra ID
- Configuración de SSO
- Verificación de estado
#!/bin/bash
# Script de integración con Microsoft Entra ID para Debian GNU/Linux
# Ejecutar como root o con sudo
echo "Instalando dependencias..."
apt update
apt -y install curl gpg sudo lsb-release
echo "Importando clave de Microsoft..."
curl https://packages.microsoft.com/keys/microsoft.asc | gpg --dearmor > microsoft.gpg
install -o root -g root -m 644 microsoft.gpg /usr/share/keyrings/
rm microsoft.gpg
echo "Añadiendo repositorio de Microsoft..."
echo "deb [arch=amd64 signed-by=/usr/share/keyrings/microsoft.gpg] https://packages.microsoft.com/ubuntu/$(lsb_release -rs)/prod $(lsb_release -cs) main" > /etc/apt/sources.list.d/microsoft.list
echo "Actualizando repositorios..."
apt update
echo "Instalando Microsoft Identity Broker..."
apt install -y microsoft-identity-broker
echo "Reiniciando servicios..."
systemctl restart sssd || echo "SSSD no está instalado, omitiendo..."
echo "Integración completada. Verifica con el comando: 'entra-id-status' o revisa logs en /var/log"
Integrar Teams y Outlook en Debian con Entra ID
Requisitos previos
- Tener instalado Microsoft Edge para Linux
- Dispositivo registrado en Entra ID
- Acceso a Microsoft Intune para aplicar políticas de acceso condicional
Teams (PWA para Linux)
- Accede a Teams Web desde Edge:
- URL: https://teams.microsoft.com
- Inicia sesión con tu cuenta Entra ID
- Edge aplicará las políticas de acceso condicional automáticamente
- Instala como PWA:
- En Edge, haz clic en “…” → “Apps” → “Instalar esta página como aplicación”
- Esto crea un acceso directo tipo escritorio
Instalar Microsoft Edge:
curl https://packages.microsoft.com/keys/microsoft.asc | gpg --dearmor > microsoft.gpg
install -o root -g root -m 644 microsoft.gpg /usr/share/keyrings/
echo "deb [arch=amd64 signed-by=/usr/share/keyrings/microsoft.gpg] https://packages.microsoft.com/repos/edge stable main" > /etc/apt/sources.list.d/microsoft-edge.list
apt update
apt -y install microsoft-edge-stable
Outlook (Web)
Outlook no tiene cliente nativo para Linux, pero podemos usar la versión web con SSO:
- Accede a https://outlook.office.com desde Edge
- El inicio de sesión se gestiona vía Entra ID con SSO si el dispositivo está registrado
- Puedes instalarlo como PWA igual que Teams
Si en la empresa se gestionan equipos de forma automatizada mediante Ansible, os dejo un playbook que os permitiría hacerlo en los equipos.
Playbook de Ansible: entra-id-linux.yml
---
- name: Integrar equipos Debian con Microsoft Entra ID
hosts: linux_debian
become: yes
vars:
microsoft_gpg_url: https://packages.microsoft.com/keys/microsoft.asc
edge_repo: "deb [arch=amd64 signed-by=/usr/share/keyrings/microsoft.gpg] https://packages.microsoft.com/repos/edge stable main"
tasks:
- name: Instalar dependencias básicas
apt:
name:
- curl
- gpg
- sudo
- lsb-release
state: present
update_cache: yes
- name: Descargar clave GPG de Microsoft
get_url:
url: "{{ microsoft_gpg_url }}"
dest: /tmp/microsoft.asc
- name: Convertir clave GPG
command: gpg --dearmor -o /usr/share/keyrings/microsoft.gpg /tmp/microsoft.asc
args:
creates: /usr/share/keyrings/microsoft.gpg
- name: Añadir repositorio de Microsoft Edge
copy:
dest: /etc/apt/sources.list.d/microsoft-edge.list
content: "{{ edge_repo }}"
- name: Actualizar repositorios
apt:
update_cache: yes
- name: Instalar Microsoft Identity Broker
apt:
name: microsoft-identity-broker
state: present
- name: Reiniciar servicio SSSD si existe
service:
name: sssd
state: restarted
ignore_errors: yes
- name: Verificar estado de integración
shell: entra-id-status
register: entra_status
ignore_errors: yes
- name: Mostrar resultado
debug:
msg: "Estado de Entra ID: {{ entra_status.stdout }}"
Cómo usarlo
- Crea un archivo llamado
entra-id-linux.yml
con el contenido del playbook anterior.
Ejecuta el playbook:
ansible-playbook -i inventory.ini entra-id-linux.yml
Tendrás que tener "registrados" los equipos/hosts en el inventario de máquinas. Dentro del archivo inventory.ini
:
[linux_debian]
portatil1 ansible_host=192.168.1.10
sobremesa2 ansible_host=192.168.1.11
Revisión de los equipos
Podemos incluso recoger informacion importante de cada PC con Debian GNU/Linux integrado en Microsoft Entra ID, y tener una especie de dashboard local en formato HTML por máquina.
E dashboard puede incluir:
- Estado de registro en Entra ID
- Usuario actual autenticado
- Estado del servicio SSSD
- Último acceso
- Versión de Edge instalada
- Estado de políticas de cumplimiento (si se usa Intune)
Playbook: entra-dashboard.yml
---
- name: Generar dashboard local para cada equipo Debian
hosts: linux_debian
become: yes
vars:
dashboard_path: /var/log/entra-dashboard.html
tasks:
- name: Obtener usuario actual
command: whoami
register: current_user
- name: Verificar estado de Entra ID
shell: entra-id-status
register: entra_status
ignore_errors: yes
- name: Verificar el estado del servicio SSSD
service_facts:
- name: Obtener la versión de Microsoft Edge
shell: microsoft-edge-stable --version
register: edge_version
ignore_errors: yes
- name: Obtener el último acceso del usuario
shell: lastlog -u "{{ current_user.stdout }}"
register: last_access
ignore_errors: yes
- name: Crear el dashboard en formato HTML simple
copy:
dest: "{{ dashboard_path }}"
content: |
<html>
<head><title>Dashboard Entra ID - {{ inventory_hostname }}</title></head>
<body>
<h2>Estado del equipo: {{ inventory_hostname }}</h2>
<ul>
<li><strong>Usuario actual:</strong> {{ current_user.stdout }}</li>
<li><strong>Estado Entra ID:</strong> {{ entra_status.stdout | default('No disponible') }}</li>
<li><strong>SSSD activo:</strong> {{ 'sssd' in ansible_facts.services and ansible_facts.services['sssd'].state == 'running' }}</li>
<li><strong>Versión de Edge:</strong> {{ edge_version.stdout | default('No instalado') }}</li>
<li><strong>Último acceso:</strong> {{ last_access.stdout | default('No disponible') }}</li>
</ul>
</body>
</html>
- name: Mostrar ruta del dashboard generado
debug:
msg: "Dashboard generado en {{ dashboard_path }}"
Cómo usarlo
- Guarda este playbook con el nombre de
entra-dashboard.yml
- Revisa tu inventario de equipos/hosts (
inventory.ini
)
Ejecuta el playbook:
ansible-playbook -i inventory.ini entra-dashboard.yml
Cada equipo creará su propio archivo HTML en la ruta /var/log/entra-dashboard.html
, esta página web la puedes consultar localmente o podrías recogerlos todo mediante un playbook centralizado, para tener una vision total del parque informático de los equipos Debian.
Podemos incluso tener un playbook que nos realice una integración completa para equipos Debian.
Cubriría los cuatro puntos clave de un entorno híbrido con Microsoft Entra ID.
Este playbook permite a los equipos cliente Debian integrarse con los servicios Microsoft 365, Intune y Entra ID.
Playbook: entra-integration.yml
---
- name: Integración completa de Debian con Microsoft Entra ID y M365
hosts: linux_debian
become: yes
vars:
edge_download_url: "https://packages.microsoft.com/repos/edge/pool/main/m/microsoft-edge-stable/"
teams_pwa_url: "https://teams.microsoft.com"
pwa_shortcut_path: "/usr/share/applications/teams-pwa.desktop"
pam_config_path: "/etc/pam.d/common-auth"
tasks:
### 1: Instalación de Microsoft Edge
- name: Añadir repositorio de Microsoft Edge
apt_repository:
repo: "deb [arch=amd64] https://packages.microsoft.com/repos/edge stable main"
state: present
filename: "microsoft-edge"
- name: Añadir clave GPG de Microsoft
apt_key:
url: "https://packages.microsoft.com/keys/microsoft.asc"
state: present
- name: Instalar Microsoft Edge
apt:
name: microsoft-edge-stable
state: present
update_cache: yes
### 2: Configurar Teams como PWA
- name: Crear acceso directo para Teams PWA
copy:
dest: "{{ pwa_shortcut_path }}"
content: |
[Desktop Entry]
Name=Microsoft Teams (PWA)
Exec=microsoft-edge-stable --app={{ teams_pwa_url }}
Icon=teams
Type=Application
Categories=Network;Office;
### 3: Registro automático en Intune (si es aplicable)
- name: Ejecutar script de enrolado en Intune
shell: |
/opt/microsoft/mdm/enroll.sh --auto --compliance
register: intune_enroll
ignore_errors: yes
- name: Mostrar resultado de enrolamiento
debug:
msg: "{{ intune_enroll.stdout | default('No disponible o no requerido') }}"
### 4: Configurar PAM para SSO con Entra ID
- name: Configurar PAM para SSSD y Entra ID
lineinfile:
path: "{{ pam_config_path }}"
insertafter: "pam_unix.so"
line: "auth sufficient pam_sss.so use_first_pass"
### 5: Verificación con curl de acceso condicional
- name: Verificar acceso condicional con curl
shell: |
curl -s -o /dev/null -w "%{http_code}" https://login.microsoftonline.com/common/oauth2/authorize
register: conditional_access
- name: Mostrar estado de acceso condicional
debug:
msg: "Código HTTP: {{ conditional_access.stdout }} (200 = OK, 403 = bloqueado por política)"
Recomendaciones adicionales
- Para el enrolamiento en Intune, asegúrate de tener instalado el agente MDM de Microsoft en
/opt/microsoft/mdm/
- El acceso condicional puede depender de políticas configuradas en Entra ID o Intune, como ubicación, dispositivo o estado de cumplimiento
- La configuración PAM asume que se tiene SSSD configurado con Entra ID
NOTA: El agente MDM para Linux que se usa en entornos Microsoft generalmente es parte de Microsoft Defender for Endpoint (MDE), que incluye capacidades de gestión y cumplimiento compatibles con Intune. Aunque no hay un "agente MDM" independiente para Linux como en Windows, el enrolamiento en Intune se realiza a través del script de incorporación de MDE y la configuración del dispositivo como compliant.
Instalación del agente MDE en Debian/Ubuntu
Requisitos iniciales
Instalar las dependencias necesarias:
sudo apt-get update
sudo apt-get -y install curl gpg apt-transport-https libplist-utils ntp
Añadir el repositorio de Microsoft para Debian
curl -o microsoft.list https://packages.microsoft.com/config/ubuntu/22.04/prod.list
sudo mv microsoft.list /etc/apt/sources.list.d/microsoft-prod.list
curl https://packages.microsoft.com/keys/microsoft.asc | gpg --dearmor > microsoft.gpg
sudo mv microsoft.gpg /etc/apt/trusted.gpg.d/
Instalar el agente MDE
sudo apt-get update
sudo apt-get install mdatp
Activar el agente (script de onboarding)
Descarga el archivo MicrosoftDefenderATPOnboardingLinuxServer.py
desde el portal de seguridad de Microsoft (security.microsoft.com) y ejecútalo:
python3 MicrosoftDefenderATPOnboardingLinuxServer.py
Esto conectará el equipo al portal de seguridad y lo habilitará para políticas de cumplimiento vía Intune.
Validaciones tras la instalación
Revisar el estado:
mdatp health
Este comando devuelve un resumen del estado del agente, entre los datos incluye:
- Estado de protección en tiempo real
- Ultima actualización de definiciones
- Conectividad del servicio
- Estado de incorporación (lo que se denomina "onboarding")
Revisa que el estado aparezca como OK ó Healthy
Actualizar las definiciones:
mdatp definitions update
Este comando fuerza la actualización de la "definición de amenazas".
La fecha la puedes comprobar con: mdatp threat definitions version
Verificar la conectividad:
mdatp connectivity test
Este comando verifica si el agente del cliente se puede comunicar con los endpoints de Microsoft Defender, nos sirve para detectar si hay algun error en la parte del firewall o del proxy.
Comprobar el dispositivo en el Portal
Vete a security.microsoft.com → Dispositivos → busca el nombre del equipo.
Tiene que aparecer como "Activo" y "Compliant".
Con toda esto tendríamos los equipos Debian GNU/Linux preparados para cumplir la politica de uso dentro de una red empresarial en la que se utilice Microsoft Entra ID (Azure AD)
Equipos en modo Teletrabajo
Seguramente querramos configurar los equipos Debian para que se puedan conectar a los servicios de la oficina mediante una VPN.
Por ejemplo si la empresa usar la VPN de F5 BIG-IP APM.
La configuración para Debian es posible aunque requiere algunos pasos específicos, veamos como hacerlo para que los usuarios linuxeros y debianitas puedan teletrabajar sin ningún tipo de problema.
Requisitos previos
Antes de comenzar, tenemos que comprobar:
- Acceso al archivo de instalación del cliente f5fpc (CLI de F5 para Linux)
- Conecer el servidor F5 BIG-IP APM que está configurado para acceso VPN
- Tener credenciales válidas y permiso de conexión para el usuarios
- Permisos de root en los equipos Debian
Pasos para instalar y configurar la VPN F5 en Debian
1. Obtener el cliente f5fpc
Este cliente no se descarga directamente desde F5.
El administrador del sistema debe extraerlo desde el servidor BIG-IP APM y distribuirlo a los usuarios que lo vayan a usar o instalar en los equipos.
Es posible descargar el archivo de instalación debe obtenerse desde el servidor APM configurado para la empresa/organización, es accesible desde el portal VPN cuando accedes desde el navegador, deberás logarte con credenciales de un administrador.
Para ver en detalle como descargar de tu empresa el cliente, revisa esta página de F5.
Truco:
Si desde un navegador accedes a tu portal VPN desde tu equipo Debian, tras logarte con tu usuario la VPN intentará realizar una verificación de cumplimiento del equipo, indicale que si quieres realizarla, dará un error indicando que no tienes instalado el software para realizar la "inspección".
Indica que sí quieres instalarlo y te dejará descargar el paquete linux_f5epi.x86_64.deb

Ahora simplemente en su navegador revisa la URL, modifica el nombre del fichero en la URL y usa esa nueva URL para descargar fichero de conexión a tu VPN de F5:
# Ejemplo **no real** de URL de descarga de f5epi
vpn.empresa.com/public/download/linux_f5epi.x86_64.deb
# Cambia f5epi por f5cli en la URL:
vpn.empresa.com/public/download/linux_f5cli.x86_64.deb
Para tu equipo Debian al final deberás de tener descargados los siguientes 3 ficheros:
- linux_f5cli.x86_64.deb
- linux_f5epi.x86_64.deb
- linux_f5vpn.x86_64.deb

2. Instalar el cliente en Debian
Una vez tengas los archivos .deb
del cliente instalaló:
sudo dpkg -i linux_f5cli.x86_64.deb
Si hay dependencias rotas, corrígelas con:
sudo apt-get -f install
El programa f5fpc
quedará instalado en la ruta /usr/local/bin
Podeis aprovechar e instalar el resto de programas descargados de la misma forma que para f5cli:
sudo dpki -i linux_f5epi.x86_64.deb
sudo dpki -i linux_f5vpn.x86_64.deb
De esta forma disponeis de un acceso directo desde los menús en los equipos:

3. Conectandose a la VPN
Usa el cliente desde la terminal:
sudo f5fpc --start --host <vpn.empresa.com> --user <usuario> --password <contraseña>
Puedes usar el parámetro --nocheck
para no validar el certificado (solo si estas realizando pruebas).
Mientras se realiza la conexión, puedes revisar lo que está pasando con el comando: f5fpc --info
4. Verificar conexión
Una vez conectado, puedes verificar la IP que tienes asignada a tu equipo:
ip a
Y comprobar que el tráfico que se enruta por la VPN:
curl ifconfig.me
5. Automatizar la conexión (opcional)
Puedes crear un script para que los usuarios se conecten de forma fácil mediante un simple script:
#!/bin/bash
echo "Conectando a la VPN de F5..."
sudo f5fpc --start --host vpn.empresa.com --user $USER --password $(cat ~/.vpnpass)
Otras Mejoras
- Integrar la conexión VPN en NetworkManager para que se active al iniciar sesión
- Configurar Split Tunneling si la organización lo permite
- Usar certificados en lugar de contraseñas para mayor seguridad
Puedes revisar las características extras que puedes usar en el cliente de Linux en la documentación de F5
NOTA: En la matriz de compatibilidad de F5, Debian no aparece como distribución "certificada", sin embargo funciona correctamente en las versiones de Debian 10, 11, 12 y 13.
Un script "extra"
Os dejo un script que simplemente va ejecutando una serie de pasos para comprobar y verificar los requisitos para la conexión de nuestro equipo Debian a la VPN F5 de nuestra empresa.
En el script, debemos modificar la línea: VPN_HOST="vpn.empresa.com"
por la URI de la conexion a la VPN de nuestra organización.
#!/bin/bash
echo "Verificando requisitos para instalar f5fpc en Debian..."
# Verificar arquitectura de PC
ARCH=$(uname -m)
echo "Arquitectura detectada: $ARCH"
if [[ "$ARCH" != "x86_64" && "$ARCH" != "aarch64" ]]; then
echo "Arquitectura no compatible con f5fpc"
exit 1
fi
# Verificar la versión de Debian
if [ -f /etc/debian_version ]; then
DEBIAN_VERSION=$(cat /etc/debian_version)
echo "Versión de Debian: $DEBIAN_VERSION"
else
echo "No se detecta Debian como sistema operativo"
exit 1
fi
# Verificar si el usuario tiene permisos para sudo
if sudo -v &>/dev/null; then
echo "El usuario tiene privilegios 'sudo'"
else
echo "El usuario NO tiene permisos 'sudo'"
exit 1
fi
# Verificar si tiene ppp instalado
if dpkg -l | grep -q ppp; then
echo "El paquete ppp está instalado"
else
echo "El paquete ppp no está instalado"
echo "Puedes instalarlo con: sudo apt -y install ppp"
fi
# Verificar la conectividad con el portal VPN
VPN_HOST="vpn.empresa.com" # ¡¡¡ CAMBIAR POR URI DE NUESTRA VPN !!!
ping -c 2 $VPN_HOST &>/dev/null
if [ $? -eq 0 ]; then
echo "Conectividad con el portal VPN ($VPN_HOST)"
else
echo "No se puede contactar con el portal VPN ($VPN_HOST)"
fi
echo "Verificación completada. Revisa los resultados anteriores."
Guarda el fichero con nombre verifica_f5.sh
y luego dale permisos de ejecucion: chmod +x verifica_f5.sh
Pruebalo simplemente ejecutando con tu usuario:
./verifica_f5.sh