Windows

Como generar una clave SSH en Windows

La autenticación con clave pública para conectarse a un servidor remoto usando el protocolo SSH funciona con dos claves: una pública y otra privada. Para entender el funcionamiento se suele recurrir a la metáfora del candado y la llave. La clave pública funciona como un candado y la privada como la llave. El candado se colocará en el servidor remoto al que se quiere acceder; cuando se intenta acceder se comprobará que la máquina que intenta conectar tiene la llave, la clave privada.

Para configurar el acceso SSH con clave pública hay que:

Generar el par de claves pública/privada.

Copiar la clave pública al servidor.

Deshabilitar el acceso al servidor con contraseña.

CÓMO GENERAR EL PAR DE CLAVES PÚBLICA/PRIVADA

Hay dos formas de hacer esto, por un lado con putty y por otro lado con el subsistema de Linux para Windows

Generar par de claves mediante putty

Para generar las claves se puede usar ssh-keygen en la máquina local desde la que se quiere conectar con el servidor:

Podemos descargarnos Putty de su página oficial https://www.putty.org/ en ella encontraremos un enlace a las descargas de Putty

Encontramos tres versiones, la de Windows x86 de 64 Bits, la de Windows x86 de 32 bits y la de de WIndows ARM de 64 bits.

Descargamos ell archivo, lo instalamos y tendremos en la carpeta Archivos de programa putty los ejecutables.

En dicha carpeta vemos los siguientes archivos

putty_folder.png

Vemos que hay varios ejecutables, pero el que nos interesa es el puttygen.exe.

PuTTYgen es una herramienta generadora de claves para crear claves SSH para PuTTY.

Es análoga a la herramienta ssh-keygen utilizada en Linux.

La ejecutamos y nos aparecerá la siguiente pantalla.

putty_gen01.png

En esta pantalla, podemos ver que podemos generar varios tipos de claves. Las claves SSH antiguas usaban RSA, en la actualidad es preferible usar ED22519 por seguridad y facilidad de uso, ya que las claves son mucho más cortas.

 putty_gen02.png

Seleccionamos ED25519 y pulsamos en Generate (Generar). Nos pedirá que movamos el ratón para generar la entropía suficiente para que la clave generada sea aleatoria

putty_gen03.png

Una vez terminado el proceso, se habrá generado el conjunto de clave privada / clave pública como vemos en la siguiente imagen (Algunos datos se han ofuscado por privacidad)

putty_gen04.png

Ahora sólo nos queda guardar estas claves la pública y la privada 

putty_gen05.png

 

IMPORTANTE: Nunca, nunca, nunca proporciones tu clave privada a nadie, y realiza una copia (o varias) de seguridad de ambos ficheros, ya que si mañana cambias de ordenador, usando tu clave privada en el nuevo ordenador, podrás acceder de nuevo a los servidores que tengan como autenticación tu clave pública.

GENERAR LA CLAVE CON EL SUBISTEMA DE LINUX EN WINDOWS

Este proceso es el mismo que se usa en cualquier sistema Linux, tal y como se explica aquí

COPIAR LA CLAVE PÚBLICA AL SERVIDOR

Una vez generado el par de claves en la máquina local hay que copiar la clave pública al servidor remoto. Esto lo podemos realizar de dos formas

CON SCP
user@localmachine$ scp ~/.ssh/id_rsa.pub user@remotemachine:/home/user/uploaded_key.pub

La clave pública hay que incluirla en el archivo /home/user/.ssh/authorized_keys. Si la carpeta .ssh no existe, la creamos antes de copiar, así como el archivo authorized_keys:

user@remotemachine$ mkdir .ssh
user@remotemachine$ chmod 700 .ssh
user@remotemachine$ touch .ssh/authorized_keys
user@remotemachine$ chmod 600 .ssh/authorized_keys

Por último copiamos la clave y borramos el archivo copiado al servidor:

user@remotemachine$ echo `cat ~/uploaded_key.pub` >> ~/.ssh/authorized_keys
user@remotemachine$ rm /home/user/uploaded_key.pub
USANDO SSH-COPY-ID
user@localmachine$ssh-copy-id -i ~/.ssh/id_rsa.pub user@remotemachine
user@remotemachine$ password:
Now try logging into the machine, with "ssh 'remote-host'", and check in:
.ssh/authorized_keys

DESHABILITAR EL ACCESO AL SERVIDOR CON CONTRASEÑA

Una vez habilitado el acceso SSH mendiante clave pública, se puede deshabilitar el acceso con contraseña. Esto aumentará la seguridad, pero implica que si se pierde la clave privada se perderá el acceso al servidor: hay que guardar cuidadosamente la clave privada.

La configuración del servidor SSH se puede encontrar en el archivo /etc/ssh/sshd_config. Para deshabilitar el acceso SSH con contraseña hay que añadir la siguiente línea, editando el archivo como root:

PasswordAuthentication no

Para aumentar la seguridad se pueden hacer dos ajustes adicionales en el archivo /etc/ssh/sshd_config:

Desactivar el acceso ssh para el usuario root:

PermitRootLogin no

Dar acceso SSH solo a los usuarios que lo necesiten, y no a todos:

AllowUsers usuario1 usuario2

Una vez realizados los cambios, hay que reiniciar el servidor SSH, siempre como root:

service sshd restart

ACCEDER AL SERVIDOR CON CLAVE PÚBLICA

Para conectarse al servidor con clave pública en vez de contraseña

user@localmachine$ ssh user@remotemachine











Bloquear el acceso remoto (RDP) y permitir determinadas IP

Vamos a ver varios escenarios para el acceso a escritorio remoto mediante PowerShell

Permitir el acceso completo.

Esta opción es muy peligrosa, si tu equipo está conectado a Internet, y no dispones de VPN. NO HAGAS ESTO

Si por ejemplo tu equipo está dentro de tu red interna, y quieres permitir el acceso desde la misma:

New-NetFirewallRule -DisplayName “AllowRDP” -Direction Inbound -Protocol TCP –LocalPort 3389 -Action Allow

Permitir el acceso desde una IP.

Este es el caso en el que tienes tu IP de la VPN y quieres que sólo desde esta IP se pueda acceder (en este ejemplo la 193.247.194.176)

$IP = "193.247.194.176"
New-NetFirewallRule -DisplayName “AllowRDP” –RemoteAddress $IP -Direction Inbound -Protocol TCP –LocalPort 3389 -Action Allow

Permitir el acceso desde determinados rangos.

Vamos a ver como conceder acceso a determinados rangos de IP (tanto internas como externas). No olvides que también tus usuarios pueden ser "traviesos" o bien simplemente alguien puede hacerse con el control de un equipo con acceso a tu red interna.

Por eso es aconsejable filtrar no solo las direcciones IP externas, sino también las internas.

Por ejemplo tenemos las IP

(“192.168.2.15-192.168.2.40”, “185.49.184.105-185.49.184.125”, ”31.47.72.120”)


$IPs = @(“192.168.2.15-192.168.2.40”, “185.49.184.105-185.49.184.125”, ”31.47.72.120”)
New-NetFirewallRule -DisplayName “AllowRDP” –RemoteAddress $IPs -Direction Inbound -Protocol TCP –LocalPort 3389 -Action Allow

Ver puertos abiertos en Windows mediante Powershell

Para ver una lista de los puertos abiertos mediante Powershell, podemos ejecutar el comando:

Get-NetTCPConnection

La salida será como la que se muestra abajo

PS C:\Users\Administrador.TECNOCRATICA> Get-NetTCPConnection

LocalAddress                        LocalPort RemoteAddress                       RemotePort State       AppliedSetting
------------                        --------- -------------                       ---------- -----       --------------
::                                  49749     ::                                  0          Listen
::                                  49720     ::                                  0          Listen
::                                  49710     ::                                  0          Listen
::                                  49681     ::                                  0          Listen
::                                  49671     ::                                  0          Listen
::                                  49668     ::                                  0          Listen
::                                  49665     ::                                  0          Listen
::                                  49664     ::                                  0          Listen
::                                  47001     ::                                  0          Listen
::                                  8462      ::                                  0          Listen
::                                  8460      ::                                  0          Listen
::                                  5985      ::                                  0          Listen
::                                  3389      ::                                  0          Listen
::                                  2179      ::                                  0          Listen
::1                                 1434      ::                                  0          Listen
::                                  1433      ::                                  0          Listen
::                                  445       ::                                  0          Listen
::                                  135       ::                                  0          Listen
0.0.0.0                             63990     0.0.0.0                             0          Bound
0.0.0.0                             61982     0.0.0.0                             0          Bound
0.0.0.0                             49979     0.0.0.0                             0          Bound
0.0.0.0                             49978     0.0.0.0                             0          Bound
10.200.3.200                        64726     10.200.3.213                        49683      TimeWait
10.200.3.200                        64722     10.200.3.213                        49688      TimeWait
10.200.3.200                        64721     10.200.3.213                        135        TimeWait
10.200.3.200                        63990     20.54.37.73                         443        Established Internet
10.200.3.200                        61982     10.0.4.4                            143        Established Internet
0.0.0.0                             49749     0.0.0.0                             0          Listen
0.0.0.0                             49720     0.0.0.0                             0          Listen
0.0.0.0                             49710     0.0.0.0                             0          Listen
0.0.0.0                             49681     0.0.0.0                             0          Listen
0.0.0.0                             49671     0.0.0.0                             0          Listen
0.0.0.0                             49668     0.0.0.0                             0          Listen
0.0.0.0                             49665     0.0.0.0                             0          Listen
0.0.0.0                             49664     0.0.0.0                             0          Listen
0.0.0.0                             8460      0.0.0.0                             0          Listen
127.0.0.1                           5939      0.0.0.0                             0          Listen
10.200.3.200                        3389      10.200.3.2                          52059      Established Internet
0.0.0.0                             3389      0.0.0.0                             0          Listen
0.0.0.0                             2179      0.0.0.0                             0          Listen
127.0.0.1                           1434      0.0.0.0                             0          Listen
0.0.0.0                             1433      0.0.0.0                             0          Listen
0.0.0.0                             993       0.0.0.0                             0          Listen
0.0.0.0                             143       0.0.0.0                             0          Listen
172.30.100.5                        139       0.0.0.0                             0          Listen
169.254.167.27                      139       0.0.0.0                             0          Listen
169.254.91.7                        139       0.0.0.0                             0          Listen
10.200.3.200                        139       0.0.0.0                             0          Listen
0.0.0.0                             135       0.0.0.0                             0          Listen

 

Ver reglas de firewall desde PowerShell

Para visualizar el conjunto de reglas del Firewall de Windows Defender mediante PowerShell, podemos ejecutar lo siguiente

Show-NetFirewallRule 

Esto nos dará una salida como la siguiente

PS C:\Users\Administrador.TECNOCRATICA> Show-NetFirewallRule

------------------------------------------------------------------------------------------------------------------------------------------------------------------------------



Name                       : SNMP-Out-UDP-NoScope
DisplayName                : Servicio SNMP (UPD de salida)
Description                : Regla de salida del servicio Protocolo simple de administración de red (SNMP) para permitir el tráfico SNMP. [UDP 161]
DisplayGroup               : Servicio SNMP
Group                      : @snmp.exe,-3
Enabled                    : True
Profile                    : Domain
Platform                   :
Direction                  : Outbound
Action                     : Allow
EdgeTraversalPolicy        : Block
LooseSourceMapping         : False
LocalOnlyMapping           : False
Owner                      :
PrimaryStatus              : OK
Status                     : Se analizó la regla correctamente desde el almacén. (65536)
EnforcementStatus          : NotApplicable
PolicyStoreSource          : PersistentStore
PolicyStoreSourceType      : Local

$_ | Get-NetFirewallAddressFilter
     LocalAddress          : Any
     RemoteAddress         : Any

$_ | Get-NetFirewallServiceFilter
     Service               : SNMP

$_ | Get-NetFirewallApplicationFilter
     Program               : %SystemRoot%\system32\snmp.exe
     Package               :

$_ | Get-NetFirewallInterfaceFilter
     InterfaceAlias        : Any

$_ | Get-NetFirewallInterfaceTypeFilter
     InterfaceType         : Any

$_ | Get-NetFirewallPortFilter
     Protocol              : UDP
     LocalPort             : Any
     RemotePort            : 161
     IcmpType              : Any
     DynamicTarget         : Any

$_ | Get-NetFirewallSecurityFilter
     Authentication        : NotRequired
     Encryption            : NotRequired
     OverrideBlockRules    : False
     LocalUser             : Any
     RemoteUser            : Any
     RemoteMachine         : Any
------------------------------------------------------------------------------------------------------------------------------------------------------------------------------



Name                       : SNMP-In-UDP-NoScope
DisplayName                : Servicio SNMP (UPD de entrada)
Description                : Regla de entrada del servicio Protocolo simple de administración de red (SNMP) para permitir el tráfico SNMP. [UDP 161]
DisplayGroup               : Servicio SNMP
Group                      : @snmp.exe,-3
Enabled                    : True
Profile                    : Domain
Platform                   :
Direction                  : Inbound
Action                     : Allow
EdgeTraversalPolicy        : Block
LooseSourceMapping         : False
LocalOnlyMapping           : False
Owner                      :
PrimaryStatus              : OK
Status                     : Se analizó la regla correctamente desde el almacén. (65536)
EnforcementStatus          : NotApplicable
PolicyStoreSource          : PersistentStore
PolicyStoreSourceType      : Local

$_ | Get-NetFirewallAddressFilter
     LocalAddress          : Any
     RemoteAddress         : Any

$_ | Get-NetFirewallServiceFilter
     Service               : SNMP

$_ | Get-NetFirewallApplicationFilter
     Program               : %SystemRoot%\system32\snmp.exe
     Package               :

$_ | Get-NetFirewallInterfaceFilter
     InterfaceAlias        : Any

$_ | Get-NetFirewallInterfaceTypeFilter
     InterfaceType         : Any

$_ | Get-NetFirewallPortFilter
     Protocol              : UDP
     LocalPort             : 161
     RemotePort            : Any
     IcmpType              : Any
     DynamicTarget         : Any

$_ | Get-NetFirewallSecurityFilter
     Authentication        : NotRequired
     Encryption            : NotRequired
     OverrideBlockRules    : False
     LocalUser             : Any
     RemoteUser            : Any
     RemoteMachine         : Any

Obtener la información de las reglas de Firewall de Windows Defender por puerto destino

Por ejemplo, saber los procesos que tienen habilitado el puerto 80. En Windows ejecutaremos powershell ISE, creamos un archivo nuevo y escribimos el siguiente script

Get-NetFirewallPortFilter |
    Where-Object { $_.LocalPort -eq 80 } |
    Get-NetFirewallRule

 

image.png

Extender disco en windows

Una vez se confirma el pago de la ampliación, el servidor se reiniciará, y se tendrá que extender el volumen manualmente. El proceso de extender el volumen no requiere ningún tipo de parada ni reinicio en este punto. Para hacer esto tendremos que seguir los siguientes pasos:

Acceder por RDP

Aunque podemos acceder por consola desde el propio panel de neodigit, lo más cómodo será acceder por el protocolo Remote Desktop de Microsoft.

Entrar a la "Administración de discos"

Para acceder al administrador de discos tecleamos  "Crear y formatear particiones del disco duro" en el buscador

Captura de pantalla 2024-03-12 a las 13.15.30.png

Una vez dentro veremos un espacio no asignado que se corresponderá con la ampliación realizada.

Captura de pantalla 2024-03-12 a las 13.15.57.png

Extender Volumen

Pulsamos botón derecho sobre el volumen que queremos extender y pulsamos "Extender volumen".

Captura de pantalla 2024-03-12 a las 13.16.39.png

Se nos abrirá un asistente donde nos solicitará cuanto espacio del no asignado queremos asignar al volumen.

Captura de pantalla 2024-03-12 a las 13.17.00.png

Si continuamos con el asistente sin modificar nada, asignaremos todos los recursos disponibles al volumen seleccionado.

Captura de pantalla 2024-03-12 a las 13.17.29.png

Una vez finalizado el asistente veremos que el volumen queda ampliado.

Captura de pantalla 2024-03-12 a las 13.18.06.png