OP.ACC.7 Acceso remoto
Objetivo
Establecer los controles y procedimientos para el acceso remoto seguro al sistema Legit Health Plus, garantizando la protección de datos clínicos y funciones diagnósticas cuando se accede desde ubicaciones externas, cumpliendo con ENS, MDR y normativas de ciberseguridad para dispositivos médicos.
Alcance
Este procedimiento aplica a:
- Acceso remoto de profesionales sanitarios desde consultas externas
- Telemedicina y teleconsulta
- Acceso de administradores IT para mantenimiento remoto
- Conexiones desde dispositivos móviles (tablets, smartphones)
- Integraciones con sistemas hospitalarios externos
- Acceso de emergencia fuera del horario laboral
- Trabajo remoto del personal autorizado
Implementación en Legit Health Plus
Arquitectura de Acceso Remoto
Política de Acceso Remoto
Matriz de Acceso Remoto por Rol
Rol | Método Permitido | Recursos Accesibles | Restricciones | MFA Requerido |
---|---|---|---|---|
Médico (HCP) | VPN + VDI | Portal clínico, diagnósticos | Sin descarga de imágenes | Sí - TOTP |
Admin IT | ZTNA + Bastion | Consola admin, logs | Sesión grabada | Sí - Hardware token |
Soporte | RDP Gateway | Herramientas soporte | Solo lectura | Sí - SMS |
API Client | mTLS | Endpoints autorizados | Rate limiting | Certificado cliente |
Consultor | VDI temporal | Recursos específicos | Tiempo limitado | Sí - TOTP |
Tecnologías de Acceso Remoto
1. VPN (Virtual Private Network)
# Configuración AWS Client VPN
vpn_configuration:
endpoint:
name: "legit-health-vpn"
client_cidr: "10.100.0.0/16"
split_tunnel: false # Todo el tráfico por VPN
authentication:
type: "certificate-and-directory"
directory_id: "d-1234567890" # AWS Directory Service
root_certificate_chain: "s3://certificates/root-ca.pem"
authorization:
rules:
- group: "VPN-Healthcare-Professionals"
target_network: "10.0.10.0/24" # VLAN Clínica
allow: true
- group: "VPN-IT-Admins"
target_network: "10.0.50.0/24" # VLAN Management
allow: true
security:
transport_protocol: "tcp"
vpn_port: 443
dns_servers: ["10.0.0.2", "10.0.0.3"]
connection_log_enabled: true
cloudwatch_log_group: "/aws/vpn/connections"
2. Zero Trust Network Access (ZTNA)
class ZeroTrustAccess:
"""
Implementación ZTNA para Legit Health Plus
"""
def evaluate_access_request(self, context: dict) -> dict:
"""
Evalúa solicitud de acceso según principios Zero Trust
"""
trust_score = 0.0
required_score = 0.8 # Mínimo para acceso
# 1. Verificar identidad del usuario
if self.verify_user_identity(context["user_id"]):
trust_score += 0.2
# 2. Validar dispositivo
device_trust = self.assess_device_trust(context["device"])
trust_score += device_trust * 0.3
# 3. Evaluar contexto de ubicación
location_risk = self.evaluate_location(context["location"])
trust_score += (1 - location_risk) * 0.2
# 4. Verificar comportamiento del usuario
behavior_score = self.analyze_user_behavior(context["user_id"])
trust_score += behavior_score * 0.2
# 5. Validar recurso solicitado
resource_sensitivity = self.get_resource_sensitivity(context["resource"])
if resource_sensitivity == "critical":
required_score = 0.95
# Decisión de acceso
if trust_score >= required_score:
return {
"access": "granted",
"trust_score": trust_score,
"session_restrictions": self.apply_restrictions(trust_score),
"monitoring_level": "enhanced" if trust_score < 0.9 else "standard"
}
else:
return {
"access": "denied",
"trust_score": trust_score,
"reason": "Insufficient trust score",
"remediation": self.suggest_remediation(context)
}
def assess_device_trust(self, device: dict) -> float:
"""
Evalúa confiabilidad del dispositivo
"""
score = 1.0
# Dispositivo gestionado por la empresa
if not device.get("managed"):
score -= 0.3
# Cumplimiento de políticas
if not device.get("compliant"):
score -= 0.3
# Parches actualizados
if device.get("pending_patches", 0) > 0:
score -= 0.2
# Antivirus actualizado
if not device.get("antivirus_updated"):
score -= 0.2
return max(score, 0.0)
3. Virtual Desktop Infrastructure (VDI)
const vdiConfig = {
pools: {
clinical: {
name: "Clinical-VDI-Pool",
image: "ami-clinical-desktop-v2",
instanceType: "t3.large",
maxSessions: 100,
idleTimeout: 1800, // 30 minutos
resources: {
cpu: 2,
memory: "8GB",
storage: "50GB",
},
applications: ["Legit Health Clinical Portal", "Image Viewer", "Report Generator"],
restrictions: {
clipboardEnabled: false,
fileTransferEnabled: false,
printingEnabled: true,
usbRedirection: false,
},
},
admin: {
name: "Admin-VDI-Pool",
image: "ami-admin-desktop-v2",
instanceType: "t3.xlarge",
maxSessions: 10,
sessionRecording: true,
applications: ["AWS Console", "System Admin Tools", "Log Analyzers"],
},
},
};
Controles de Seguridad para Acceso Remoto
Data Loss Prevention (DLP)
Política DLP | Descripción | Acción | Aplicación |
---|---|---|---|
PHI Detection | Bloquear transferencia de datos de pacientes | Bloquear + Alertar | Todos los canales |
Image Protection | Prevenir descarga de imágenes médicas | Watermark + Log | VDI, Web |
Code Protection | Impedir acceso a código fuente | Denegar | VPN, ZTNA |
Database Access | Restringir consultas masivas | Limitar + Audit | API, SQL |
Screen Capture | Deshabilitar captura de pantalla | Bloquear | VDI, RDP |
Configuración de Endpoint Detection and Response (EDR)
class RemoteEndpointSecurity:
"""
Seguridad para endpoints remotos
"""
EDR_POLICIES = {
"remote_device": {
"monitoring": {
"process_monitoring": True,
"network_monitoring": True,
"file_integrity": True,
"registry_monitoring": True
},
"prevention": {
"block_malicious_processes": True,
"prevent_credential_theft": True,
"ransomware_protection": True,
"exploit_protection": True
},
"response": {
"auto_quarantine": True,
"network_isolation": True,
"kill_process": True,
"rollback_changes": True
},
"reporting": {
"real_time_alerts": True,
"threat_hunting": True,
"forensics_collection": True
}
}
}
def enforce_remote_policy(self, device_id: str, connection_type: str):
"""
Aplica política de seguridad para dispositivo remoto
"""
# Verificar estado del EDR
if not self.is_edr_installed(device_id):
return {"status": "blocked", "reason": "EDR not installed"}
# Verificar actualización del EDR
if not self.is_edr_updated(device_id):
self.force_edr_update(device_id)
# Aplicar política según tipo de conexión
if connection_type == "vpn":
self.apply_vpn_restrictions(device_id)
elif connection_type == "ztna":
self.apply_zero_trust_controls(device_id)
# Iniciar monitorización mejorada
self.enable_enhanced_monitoring(device_id)
return {"status": "allowed", "monitoring": "enhanced"}
Gestión de Dispositivos Móviles (MDM)
Políticas MDM para Acceso Remoto
Configuración | iOS/iPadOS | Android | Windows | macOS |
---|---|---|---|---|
Cifrado obligatorio | Sí | Sí | BitLocker | FileVault |
PIN/Biometría | Face ID/Touch ID | Fingerprint | Windows Hello | Touch ID |
Jailbreak/Root detection | Sí | Sí | N/A | Sí |
App management | Managed apps | Work profile | AppLocker | Gatekeeper |
VPN automática | Per-app VPN | Always-on VPN | Auto-connect | On-demand |
Remote wipe | Completo o selectivo | Work profile only | Completo | Completo |
Procedimientos
PRO-AAC-018: Solicitud de Acceso Remoto
-
Evaluación de Necesidad
- Justificación del acceso remoto
- Definición de recursos necesarios
- Duración del acceso requerido
- Evaluación de riesgos
-
Aprobación
- Manager directo aprueba necesidad
- Seguridad valida controles
- DPO revisa implicaciones de privacidad
- Documentación en R-TF-110-023
-
Provisionamiento
- Creación de perfil VPN/ZTNA
- Configuración de MFA adicional
- Instalación de certificados
- Configuración de DLP/EDR
-
Activación
- Prueba de conectividad
- Verificación de controles
- Formación al usuario
- Firma de acuerdo de uso
PRO-AAC-019: Conexión Remota Segura
-
Pre-conexión
- Verificar actualizaciones del dispositivo
- Confirmar red segura (no WiFi público)
- Cerrar aplicaciones no necesarias
-
Establecimiento de Conexión
- Iniciar cliente VPN/ZTNA
- Autenticación multifactor
- Verificación de posture del dispositivo
- Aceptación de banner legal
-
Durante la Sesión
- Monitoreo continuo de seguridad
- Aplicación de políticas DLP
- Timeout de inactividad
- Grabación si aplicable
-
Desconexión
- Cierre ordenado de aplicaciones
- Limpieza de caché local
- Desconexión de VPN
- Confirmación de logout
PRO-AAC-020: Respuesta a Incidentes de Acceso Remoto
-
Detección
- Alertas de comportamiento anómalo
- Intentos de acceso no autorizado
- Violaciones de política DLP
- Detección de malware
-
Contención Inmediata
- Terminación de sesión remota
- Bloqueo de cuenta si necesario
- Aislamiento de red del dispositivo
- Revocación de certificados
-
Investigación
- Análisis de logs de conexión
- Revisión de grabaciones
- Forensia del endpoint
- Determinación de impacto
-
Recuperación
- Remediación del dispositivo
- Cambio de credenciales
- Actualización de políticas
- Reporte de incidente
Responsabilidades
Equipo de Infraestructura
- Mantener infraestructura VPN/ZTNA
- Gestionar certificados y PKI
- Monitorear disponibilidad
- Aplicar parches y actualizaciones
Equipo de Seguridad
- Definir políticas de acceso remoto
- Monitorear eventos de seguridad
- Responder a incidentes
- Auditar cumplimiento
Service Desk
- Soporte a usuarios remotos
- Troubleshooting de conectividad
- Reseteo de credenciales
- Escalamiento de problemas
Usuarios Remotos
- Cumplir políticas de seguridad
- Proteger dispositivos y credenciales
- Usar solo redes seguras
- Reportar problemas inmediatamente
Registros y Evidencias
Documentación Requerida
| Registro | Descripción | Retención | Ubicación | |----------|-------------|-----------|-----------|| | R-TF-110-023 | Solicitudes de acceso remoto | 3 años | ServiceNow | | R-TF-110-024 | Logs de conexiones VPN | 1 año | CloudWatch | | R-TF-110-025 | Incidentes de acceso remoto | 5 años | JIRA | | R-TF-110-026 | Auditorías de cumplimiento | 3 años | SharePoint |
Formato de Log de Acceso Remoto
{
"event": "REMOTE_ACCESS",
"timestamp": "2024-01-20T18:45:00Z",
"connection_type": "VPN",
"user": "LH-HCP-dr-garcia",
"source_ip": "83.45.123.67",
"source_country": "ES",
"device": {
"id": "device-abc123",
"type": "laptop",
"os": "Windows 11",
"managed": true,
"compliant": true
},
"authentication": {
"method": "certificate+mfa",
"mfa_type": "totp",
"trust_score": 0.85
},
"session": {
"id": "vpn-sess-789",
"duration_minutes": 45,
"data_transferred_mb": 125,
"resources_accessed": ["clinical_portal", "imaging_system"]
},
"security_events": [],
"dlp_violations": 0
}
Métricas y KPIs
Métrica | Objetivo | Frecuencia | Responsable |
---|---|---|---|
Disponibilidad VPN/ZTNA | >99.5% | Continuo | Infrastructure |
Conexiones remotas exitosas | >95% | Diario | NOC |
Tiempo medio de conexión | <30 seg | Continuo | Network Team |
Incidentes de seguridad remota | <5/mes | Mensual | SOC |
Dispositivos no conformes | <10% | Semanal | MDM Team |
Violaciones DLP | 0 críticas | Continuo | Security |
Sesiones con grabación | 100% admin | Diario | Compliance |
Referencias Cruzadas
Documentos Internos
- OP.ACC.6: Acceso local (complementario)
- OP.ACC.5: Mecanismos de autenticación
- MP.COM.2: Protección de la confidencialidad
- MP.COM.3: Protección de la integridad y autenticidad
- T-024-009: Security Architecture
- GP-013: Marco de ciberseguridad
Cumplimiento Normativo
- ENS: [op.acc.7] Acceso remoto
- ISO 27001: A.6.2.2 - Teletrabajo
- MDR: Requisito 17.2 - Seguridad de acceso remoto
- NIST 800-53: AC-17 Remote Access
- FDA Cybersecurity: Secure remote access and monitoring
- NIS2: Artículo 21 - Gestión de acceso seguro
Documentos de referencia
-
Guías CCN-STIC:
- Guía CCN-STIC-827 - Gestión y uso de dispositivos móviles
-
ISO/IEC 27000
- 27002:2013:
- 9.4.2 - Procedimientos seguros de inicio de sesión
- 10.1.1 - Política de uso de los controles criptográficos
- 13.1.1 - Controles de red
- 13.1.2 - Seguridad de los servicios de red
- 18.1.5 - Regulación de los controles criptográficos
- 27002:2013:
-
NIST SP 800-53 rev4:
-
[AC-10] Concurrent Session Control
-
[AC-17] Remote Access
-
[AC-18] Wireless Access
-
[AC-20] Use of External Information Systems
-
[MA-4] Nonlocal Maintenance
-
[SA-9] External Information System Services
-
[SC-10] Network Disconnect
-
Otras referencias:
- http://www.whitehouse.gov/sites/default/files/omb/memoranda/fy2006/m06-16.pdf
- http://www.sans.org/security-resources/policies/Remote_Access.pdf
- http://www.sans.org/reading_room/whitepapers/vpns/remote-access-vpnsecurity-concerns-policy-enforcement_881
Guía de implantación
- El acceso remoto es fuente de numerosos problemas porque no puede suponer el mismo nivel de controles de seguridad física que en las instalaciones corporativas.
Por ello conviene tener reglas específicas respecto a qué se puede hacer y qué no se puede hacer desde un acceso remoto. E incluso dentro de lo que está autorizado, hay que esmerarse en el cuidado del proceso de identificación y autenticación para prevenir la suplantación de la identidad de un usuario autorizado.
-
Se exige establecer un mecanismo robusto de identificación y autenticación según [op.acc.6].
-
Prácticamente se exige establecer una red privada virtual (VPN), según [mp.com.2] y [mp.com.3].
-
Se debe redactar una política que rija lo que se puede hacer remotamente: qué aplicaciones se pueden usar, qué datos son accesibles y en qué condiciones estos datos pueden almacenarse en el dispositivo externo de acceso.
-
La política también debe establecer límites al tiempo que puede estar abierta una sesión y e imponer un tiempo máximo para cerrar sesiones inactivas.
-
Además de redactar la política, hay que imponerla. Esto es casi imposible si el dispositivo es del usuario (Bring your own device, BYOD) y en general si el usuario tiene derechos de administrador del equipo. Es por ello que se procurará que el equipo remoto sea propiedad del organismo, esté configurado por el organismo y el usuario no tenga derechos de administrador.
-
A fin de limitar lo que se puede hacer en remoto, se debe establecer un filtro, bien en el servidor, bien en el propio cliente.
-
Si las limitaciones se imponen en el servidor, haremos que el usuario acceda a un segmento de red separado del núcleo corporativo y entre el segmento de acceso remoto y el núcleo estableceremos un cortafuegos interno que sólo permita las aplicaciones y protocolos autorizados.
-
Si las limitaciones se imponen en el equipo cliente, instalaremos un cortafuegos personal, configurado por el organismo, que establezca las limitaciones correspondientes.
-
En ambos escenarios se debe considerar la oportunidad de instalar una función de prevención de fuga de datos (Data Loss Prevention, DLP) que monitorice los datos que viajan por la red.
-
En todos los casos se deben activar los registros de actividad y analizar regularmente que se cumple la política autorizada. Considere la oportunidad de un sistema de información de seguridad y administración de eventos (Security Information and Event Management, SIEM) que levante alertas ante comportamientos no autorizados.
Signature meaning
The signatures for the approval process of this document can be found in the verified commits at the repository for the QMS. As a reference, the team members who are expected to participate in this document and their roles in the approval process, as defined in Annex I Responsibility Matrix
of the GP-001
, are:
- Author: Team members involved
- Reviewer: JD-003, JD-004
- Approver: JD-001