Control de Acceso por IP
SafeIPLogin es un plugin para FacturaScripts diseñado para aumentar la seguridad del acceso al ERP en entornos expuestos a internet. Su objetivo es permitir que solo determinadas direcciones IP, o las IPs de determinados países, puedan iniciar sesión, reduciendo el riesgo de accesos no autorizados o ataques de fuerza bruta.
Está orientado principalmente a:
- Administradores del ERP que necesitan reforzar la seguridad del sistema.
- Empresas con accesos remotos o instalaciones alojadas en servidores con acceso público.
🔒 Beneficios y problemas que resuelve
Cuando un ERP está accesible desde internet, incluso con contraseñas robustas, existe un riesgo real de intentos de acceso no deseados. SafeIPLogin añade una capa adicional de protección filtrando el acceso mediante direcciones IP autorizadas (White List) y, opcionalmente, mediante países autorizados.
Con este plugin podrás:
- Limitar el acceso únicamente a IPs o rangos concretos.
- Autorizar el acceso por país, útil cuando los usuarios tienen IP dinámica y no es posible mantener una lista de IPs fijas.
- Bloquear inicios de sesión desde ubicaciones desconocidas.
- Reducir la superficie de ataque evitando validaciones de contraseña innecesarias.
- Complementar otras medidas como VPN, firewall, autenticación 2FA, etc.
⚙️ Funcionamiento general
El plugin trabaja con dos listas independientes, que se comprueban antes de validar usuario y contraseña:
- La White List de IPs, con las direcciones, rangos o subredes autorizadas.
- La White List de Países, con los países cuyas IPs están autorizadas.
Ambas son independientes y basta con cumplir una de las dos para poder acceder. Esto permite, por ejemplo, autorizar todo un país y añadir además la IP concreta de un empleado desplazado al extranjero.
White List de IPs
Es una lista de direcciones IP autorizadas a acceder al ERP. Admite IPv4 e IPv6 en varios formatos:
- IP individual
Ejemplos: 88.24.115.92 o 2a02:9000::1
Solo esa dirección IP concreta podrá acceder.
- Rango de IPs
Ejemplo: 192.168.1.10-192.168.1.50
Cualquier IP dentro del intervalo numérico estará permitida. Ambos extremos deben ser del mismo tipo: no se admite mezclar IPv4 con IPv6.
- Subred en notación CIDR
Ejemplos:
192.168.1.0/24→ Permite todas las IPs desde192.168.1.0hasta192.168.1.25510.0.0.0/16→ Permite toda la subred10.0.x.x2a02:9000::/20→ Permite toda la subred IPv6 indicada
White List de Países
Al añadir un país se descargan los rangos de IP que tiene asignados y se permite el acceso a cualquier dirección incluida en ellos. Está pensada para usuarios con IP dinámica, donde mantener una lista de IPs concretas resulta inviable.
El funcionamiento detallado se explica en Gestión de la White List de Países.
Proceso de validación
Antes de procesar usuario y contraseña, el plugin:
- Detecta la IP real del cliente.
- Comprueba si esa IP coincide con algún elemento de la White List de IPs.
- Si no coincide, comprueba si pertenece a alguno de los países autorizados.
- Si no cumple ninguna de las dos → acceso bloqueado.
- Si cumple alguna → continúa el proceso normal de autenticación.
Accesos desde la red local
Las IPs privadas y de loopback (127.0.0.1, ::1, 10.x.x.x, 172.16.x.x a 172.31.x.x, 192.168.x.x y sus equivalentes IPv6) no se comprueban contra la lista de países, porque no pertenecen a ninguno. De lo contrario, activar un país dejaría fuera a toda la plantilla en una instalación alojada en la propia oficina.
Sí se comprueban contra la lista de IPs, de modo que se puede seguir restringiendo desde qué segmentos de la red local se permite el acceso.
Atención: Si ambas listas están vacías, se considera que todas las IPs pueden acceder.
⚖️ Nota legal
SafeIPLogin reduce riesgos, pero no garantiza la protección total del sistema. El uso, la configuración y la administración del plugin son responsabilidad tuya o de la empresa instaladora.
Los autores del plugin no se responsabilizan de:
- Daños derivados de configuraciones incorrectas.
- Pérdida de acceso por filtros aplicados de forma errónea.
- Consecuencias de accesos no autorizados externos al funcionamiento del plugin.