En esta guía te enseñaremos a cómo limitar el tráfico a ciertos puertos desde tales o cuáles países en tu servidor Windows, restringiéndolo sólo a los que necesitas. El principio de "menor acceso posible" es esencial para proteger tu servidor de amenazas externas, y no es necesario que todos los puertos estén abiertos para todos.
La idea de este principio es acotar el acceso lo más posible, y sólo abrir para aquellas direcciones IP, hosts o países que realmente requieran acceder a algunos de nuestros servicios que pueden ser sensibles, por ejemplo a SQL Server, o al Escritorio Remoto de Windows (RDP).
En el mundo ideal, podríamos también limitarlos por IP o hostname, pero no todos los administradores cuentan con una dirección IP fija.
En este tutorial te mostramos un punto intermedio donde podremos abrir un puerto o una serie de puertos TCP, sólo a un país específico. Por ejemplo: si tenemos clientes que se conectan a nuestra base de datos SQL Server en el puerto 1433 y la conexión siempre es desde México, ¿Por qué deberían poder conectarse alguien desde Reino Unido?
Cómo bloquear y permitir países a determinados puertos de mi servidor Windows
Para esto, de manera que te sea más fácil y no tengas que estar horas bloqueando puertos, armamos este script a continuación. En este ejemplo, vamos a abrir los puertos 80, 443 y 1433 sólo para Argentina.
- Abre una terminal de PowerShell y descargar el script ejecutando esto:
[Net.ServicePointManager]::SecurityProtocol = [Net.ServicePointManager]::SecurityProtocol -bor [Net.SecurityProtocolType]::Tls12
(new-object System.Net.WebClient).Downloadfile("https://raw.githubusercontent.com/wnpower/Scripts-Utils-Windows/master/import-firewall-allow.ps1","$pwd\import-firewall-allow.ps1")
- Ejecutar el script pasando por argumento el país que se permitirá. El formato es ISO apha-2 de 2 caracteres. Por ejemplo: para argentina usar "ar".
PS> .\import-firewall-allow.ps1 ar
💡👉 Este script usa la página IP Deny para descargar la lista de rangos IP por país.
- Cuando vayas al Firewall de Windows, verás que se crearon varias reglas de entrada en el Firewall. La razón de que son varias es que cada una contiene autorizados hasta 100 rangos IP para evitar generar una carga mayor en el servidor a causa del chequeo en cada conexión abierta.
- Por defecto, los puertos TCP que abrirá el script son "25,80,110,143,443,587,993,995,1433". Si se requiere personalizar estos puertos, se puede pasar el argumento "-ports" separados por coma. Por ejemplo, para abrir el 80,443 y 1433 para toda Argentina ejecuta este comando.
PS> .\import-firewall-allow.ps1 ar -ports "80,443,1433"
- Por último, si ya teníamos una regla de apertura anterior tendremos que deshabilitarla. Por ejemplo, si teníamos SQL Server (puerto 1433) abierto a todo Internet, la desactivamos.
¡Listo! Si todo salió bien, habremos abierto el tráfico sólo para los países que nos interesan.
Eliminar reglas
Si queremos eliminar las reglas que creó el script, podremos hacerlo desde el mismo Firewall, o desde el mismo, pasando como argumento el país y "-deleteonly" como lo ves en el ejemplo.
PS> .\import-firewall-allow.ps1 ar -deleteonly
Actualización de reglas
Puede ser que en algún momento se agregue o se modifique un rango del país al cual abrimos. Es por ello que sería buena idea ejecutar el script regularmente para actualizarlas.
El script está preparado para ejecutarse cuantas veces se requiera sin crear reglas duplicadas, así que es recomendable crear una tarea programada que se ejecute diaramente para que se auto-actualicen cada cierto tiempo.
¡Esperamos haber podido ayudarte, y nos vemos en los próximos tutoriales! 👍
Comentarios
0 comentarios
El artículo está cerrado para comentarios.