Limita l'accesso ssh all'IP selezionato su macOS

5

Voglio limitare l'accesso ssh su macOS 10.12 agli IP selezionati sulla mia rete locale. Ho provato a scrivere i seguenti file:

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

# /etc/hosts.deny
sshd: ALL

Quindi riavvia con:

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

Scaricamento ssh.plist disabilitato con successo ssh, ma dopo il ricaricamento posso ancora connettermi da qualsiasi IP.

Come posso configurare una whitelist IP?

    
posta seven11 28.11.2018 - 16:59
fonte

2 risposte

4

hosts.allow e hosts.deny vengono utilizzati solo quando si esegue il servizio (sshd) tramite i wrapper TCP. L'installazione di default di macOS non lo fa, quindi non avranno alcun effetto.

Come consigliato da altre risposte, è possibile utilizzare un firewall per limitare l'accesso a SSH. Questo potrebbe essere un firewall hardware (cioè "esterno") o un firewall software come il firewall pf integrato.

Tuttavia, non mi consiglia di utilizzare solo un firewall. La cosa migliore è limitare il servizio sshd stesso e, se lo desideri, puoi aggiungere la protezione del firewall. Il ragionamento alla base di questo è che se per qualche motivo il tuo firewall viene disabilitato, all'improvviso gli utenti potrebbero improvvisamente avere l'accesso per comunicare con sshd - davvero non lo vuoi.

Per configurare sshd per limitare l'accesso, dovrai modificare il file / etc / ssh / sshd_config e aggiungere quanto segue:

AllowUsers [email protected] [email protected]

in cui sostituisci "nomeutente" con il tuo nome utente effettivo.

Se vuoi, puoi sostituire le parti con * per indicare un carattere jolly, come ad esempio [email protected].* o *@192.168.1.32 . Puoi leggere ulteriori informazioni sulle opzioni nella pagina man di sshd_config.

    
risposta data 28.11.2018 - 19:34
fonte
2

hosts.allow e hosts.deny sono stati deprecati e dovresti utilizzare un firewall ( pf ).

La regola predefinita per pf può essere trovata in /etc/pf.conf . È possibile modificare questa directory di file o creare il proprio set di regole personalizzato, ma assicurarsi di copiare il contenuto del file predefinito su di esso. Aggiungi le seguenti due righe:

# 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

Successivamente, abilita pf con il 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

Questo set di regole per impostazione predefinita bloccherà SSH a tutti tranne gli IP affidabili definiti. Tutti gli altri servizi non saranno interessati.

    
risposta data 28.11.2018 - 18:59
fonte

Leggi altre domande sui tag