Restrinja el acceso ssh a la IP seleccionada en macOS

5

Quiero restringir el acceso ssh en macOS 10.12 a las IP seleccionadas en mi red local. Intenté escribir los siguientes archivos:

# /etc/hosts.allow
sshd: 192.168.1.32
sshd: 192.168.1.33

# /etc/hosts.deny
sshd: ALL

Luego se reinicia con:

sudo launchctl unload /System/Library/LaunchDaemons/ssh.plist
sudo launchctl load /System/Library/LaunchDaemons/ssh.plist

La descarga ssh.plist deshabilitó con éxito ssh, pero después de la recarga, todavía puedo conectarme desde cualquier IP.

¿Cómo puedo configurar una lista blanca de IP?

    
pregunta seven11 28.11.2018 - 16:59

2 respuestas

4

hosts.allow y hosts.deny solo se usan cuando ejecutas el servicio (sshd) a través de envoltorios TCP. La instalación predeterminada de macOS no hace eso, por lo que no tendrán ningún efecto.

Como lo recomiendan otras respuestas, puede usar un firewall para restringir el acceso a SSH. Esto podría ser un firewall de hardware (es decir, "externo") o un firewall de software como el firewall pf incorporado.

Sin embargo, no recomendaría usar un firewall solamente. Lo mejor es limitar el servicio sshd en sí, y si lo desea, puede agregar la protección de firewall a eso. El razonamiento detrás de esto es que si por alguna razón su firewall se deshabilita, a los usuarios externos se les permitiría el acceso repentinamente para comunicarse con sshd, realmente no quiere eso.

Para configurar sshd para limitar el acceso, deberá editar el archivo / etc / ssh / sshd_config y agregar lo siguiente:

AllowUsers [email protected] [email protected]

donde reemplaza "nombre de usuario" con su nombre de usuario real.

Si desea, puede reemplazar partes con * para indicar un comodín, como por ejemplo, [email protected].* o *@192.168.1.32 . Puede leer más sobre las opciones en la página del manual para sshd_config.

    
respondido por el jksoegaard 28.11.2018 - 19:34
2

hosts.allow y hosts.deny han quedado en desuso y debería usar un firewall ( pf ) en su lugar.

La regla predeterminada para pf se puede encontrar en /etc/pf.conf . Puede editar este directorio de archivos o crear su propio conjunto de reglas personalizadas, pero asegúrese de copiar el contenido del archivo predeterminado en él. Agregue las siguientes dos líneas:

# The name of the network interface as shown in ifconfig
ext_if="en0"

tcp_services = "{ssh}"
icmp_types = "{echoreq, unreach}"
trusted = "{192.168.1.32, 192.168.1.33}"

# Exempt the loopback interface to prevent services that use if from being blocked
set skip on lo0

# This is a desktop so we have to be permissive in allowing outgoing  connections
pass out quick modulate state


# Block all incoming SSH Traffic by default 
  block in on $ext_if inet proto tcp from any to any port $tcp_services

# Allow SSH traffic from trusted IPs
pass in on $ext_if inet proto tcp from $trusted to any port $tcp_services

A continuación, habilite pf con el comando

$ sudo pfctl -e                                 #if using the default /etc/pf.conf
$ sudo pfctl -e -f /path/to/custom_pf.conf      #if using a custom pf.conf

Este conjunto de reglas bloqueará SSH de forma predeterminada para todas las IP, excepto las IP confiables que están definidas. Todos los demás servicios no serán afectados.

    
respondido por el Allan 28.11.2018 - 18:59

Lea otras preguntas en las etiquetas