Come possiamo consentire a determinati set di IP privati di entrare attraverso l'accesso SSH (coppia di chiavi RSA) nel server Linux?
/etc/ssh/sshd_config
Come possiamo consentire a determinati set di IP privati di entrare attraverso l'accesso SSH (coppia di chiavi RSA) nel server Linux?
/etc/ssh/sshd_config
Risposte:
Puoi limitare quali host possono connettersi configurando i wrapper TCP o filtrando il traffico di rete (firewalling) usando iptables . Se si desidera utilizzare metodi di autenticazione diversi a seconda dell'indirizzo IP del client, configurare invece il demone SSH (opzione 3).
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 in caso contrario rilasciare il traffico (alla porta 22). La DROP
regola non è richiesta se il criterio predefinito di iptables è configurato 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
È possibile aggiungere più regole prima della regola di rilascio per abbinare più reti / host. Se hai molte reti o indirizzi host, dovresti usare il modulo ipset . Esiste anche un modulo iprange che consente di utilizzare qualsiasi intervallo arbitrario di indirizzi IP.
Iptables non sono persistenti tra i riavvii. È necessario configurare alcuni meccanismi per ripristinare iptables all'avvio.
iptables
si applica solo al traffico IPv4. I sistemi che hanno ssh in ascolto di IPv6 possono utilizzare la configurazione necessaria ip6tables
.
È inoltre possibile configurare quali host possono connettersi utilizzando i wrapper TCP. Con i wrapper TCP, oltre agli indirizzi IP è anche possibile 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]
È possibile configurare il demone ssh in sshd_config per utilizzare un metodo di autenticazione diverso a seconda dell'indirizzo client / nome host. Se si desidera solo bloccare la connessione di altri host, utilizzare invece iptables o wrapper TCP.
Rimuovere innanzitutto i metodi di autenticazione predefiniti:
PasswordAuthentication no
PubkeyAuthentication no
Quindi aggiungere i metodi di autenticazione desiderati dopo un Match Address
alla fine del file. Il posizionamento Match
alla fine del file è importante, poiché tutte le righe di configurazione successive vengono inserite nel blocco condizionale fino alla Match
riga successiva . Per 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.
Argomenti di corrispondenza e opzioni di configurazione condizionale consentite sono documentate nella pagina man sshd_config . I modelli di corrispondenza sono documentati nella pagina man ssh_config .
#ListenAddress ::
nel /etc/ssh/sshd_config
dirà il server SSH per accettare in ingresso da qualsiasi di queste reti. Altrimenti, fai ListenAddress <ip address>
dov'è <ip address>
quella di quelle porte NIC che desideri siano autorizzate. Il mio eth0
è 192.168.3.4
quindi il ListenAddress 192.168.3.4
risultato che SSH funziona solo sulla rete 192.168.3.4 che è su eth0; e eth1 eth2 eth3 viene negato.
Ecco alcune configurazioni aggiuntive per il demone SSH per estendere la risposta precedente:
Aggiungi il filtro utente con l' AllowUsers
opzione insshd_config
file:
AllowUsers johndoe@192.168.1.* admin2@192.168.1.* otherid1 otherid2
Ciò consente a johndoe e admin2 solo di 192.168.1.*
indirizzi e otherid1 , otherid2 da qualsiasi luogo.
Limitare una chiave ssh o una chiave basata su ca a un set 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à efficace solo da determinati indirizzi.