GNU/Linux >> Linux Esercitazione >  >> Linux

Limita l'accesso SSH a client specifici in base all'indirizzo IP

Puoi limitare gli host che possono connettersi configurando i wrapper TCP o filtrando il traffico di rete (firewall) utilizzando iptables. Se desideri utilizzare metodi di autenticazione diversi a seconda dell'indirizzo IP del client, configura invece il demone SSH (opzione 3).

Opzione 1:filtraggio con IPTABLES

Le regole di iptables vengono valutate in ordine, fino alla prima corrispondenza.

Ad esempio, per consentire il traffico dalla rete 192.168.0.0/24 e altrimenti eliminare il traffico (alla porta 22). Lo DROP la regola non è richiesta se la policy predefinita di iptables è configurata su DROP .

iptables -A INPUT -p tcp --dport 22 --source 192.168.0.0/24 -j ACCEPT
iptables -A INPUT -p tcp --dport 22 -j DROP

Puoi aggiungere più regole prima della regola di eliminazione per abbinare più reti/host. Se hai molte reti o indirizzi host, dovresti usare ipset modulo. C'è anche iprange modulo che consente di utilizzare qualsiasi intervallo arbitrario di indirizzi IP.

Iptables non è persistente tra i riavvii. Devi configurare qualche meccanismo per ripristinare iptables all'avvio.

iptables si applicano solo al traffico IPv4. I sistemi che hanno ssh in ascolto dell'indirizzo IPv6, la configurazione necessaria può essere eseguita con ip6tables .

Opzione 2:utilizzo di wrapper TCP

Nota:questa potrebbe non essere un'opzione nelle distribuzioni moderne, poiché il supporto per tcpwrapper è stato rimosso da OpenSSH 6.7

Puoi anche configurare quali host possono connettersi utilizzando i wrapper TCP. Con i wrapper TCP, oltre agli indirizzi IP puoi anche utilizzare i nomi host nelle regole.

Per impostazione predefinita, nega tutti gli host.

/etc/hosts.deny :

sshd : ALL

Quindi elenca gli host consentiti in hosts.allow. Ad esempio per consentire la rete 192.168.0.0/24 e localhost .

/etc/hosts.allow :

sshd : 192.168.0.0/24
sshd : 127.0.0.1
sshd : [::1]

Opzione 3:configurazione del demone SSH

È possibile configurare il demone ssh in sshd_config per utilizzare un metodo di autenticazione diverso a seconda dell'indirizzo del client/nome host. Se vuoi solo impedire ad altri host di connettersi, dovresti invece usare iptables o TCP wrapper.

Per prima cosa rimuovi i metodi di autenticazione predefiniti:

PasswordAuthentication no
PubkeyAuthentication no

Quindi aggiungi i metodi di autenticazione desiderati dopo un Match Address alla fine del file. Piazzando Match alla fine del file è importante, poiché tutte le righe di configurazione dopo di esso vengono posizionate all'interno del blocco condizionale fino al successivo Match linea. Ad esempio:

Match Address 127.0.0.*
    PubkeyAuthentication yes

Altri client sono ancora in grado di connettersi, ma gli accessi falliranno perché non ci sono metodi di autenticazione disponibili.

Gli argomenti di corrispondenza e le opzioni di configurazione condizionale consentite sono documentati nella pagina man di sshd_config. I modelli di corrispondenza sono documentati nella pagina man di ssh_config.


Ecco alcune configurazioni aggiuntive per il demone SSH per estendere la risposta precedente:

  • Aggiungi il filtro utente con AllowUsers opzione in sshd_config file:

    AllowUsers [email protected]* [email protected]* otherid1 otherid2
    

    Ciò consente a johndoe e admin2 solo da 192.168.1.* indirizzi e otherid1 , altroid2 da qualsiasi luogo.

  • Limita una chiave ssh o una chiave basata su ca a un insieme di indirizzi in .ssh/authorized_keys file della home directory di un determinato utente:

    from="192.168.1.*,192.168.2.*" ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABA...etc...mnMo7n1DD useralias
    

    In questo esempio, la chiave pubblica per useralias sarà effettiva solo da determinati indirizzi.


Linux
  1. Limita Posix Trova a una profondità specifica?

  2. Ssh:limitare un utente Ssh/scp/sftp a una directory?

  3. Ssh – Registrazione dei tentativi di accesso Ssh?

  4. Come entrare in una directory specifica?

  5. Termina tutti i processi di un utente specifico tramite SSH

Come possiamo limitare l'accesso SSH con UFW su Linux Mint 20

Come disabilitare l'accesso SSH a un utente specifico in Linux

Limita l'accesso SSH a un IP o host specifico

Come utilizzare iptables o tc per limitare i pacchetti per client.

Tunnel vpn di accesso remoto SSH

Come far scadere le regole di iptables?