Fai in modo che sshd ascolti un'interfaccia specifica


15

Sulla mia macchina sto usando OpenVPN che usa l'interfaccia tun0. Voglio che sshd ascolti solo su questa interfaccia.

Lo so, posso specificare l'indirizzo IP da ascoltare

/etc/ssh/sshd_config

con un

ListenAddress 0.0.0.0

direttiva. Ma il mio indirizzo IP cambierà, quindi qui non posso scegliere un IP che sia sempre valido. So che posso avviare il demone solo quando la VPN è attiva, non è questo il problema.

Come posso fare in modo che sshd ascolti solo su un'interfaccia specifica (tun0)?


2
Firewall off port 22 su tutte le porte che non lo sono tun0?
Nick

Risposte:


7

Non puoi farlo direttamente poiché sshd comprende solo gli indirizzi IP. Potresti riuscire a mettere insieme qualcosa usando uno script openvpn up

-up cmd Comando Shell da eseguire dopo l'apertura corretta del dispositivo TUN / TAP (modifica UID preutente). Lo script up è utile per specificare i comandi di instradamento che instradano il traffico IP destinato a subnet private esistenti all'altra estremità della connessione VPN nel tunnel ...

Vedi anche l' --downopzione per la pulizia e le parti pertinenti della documentazione che descrivono in dettaglio la sicurezza degli script, ecc.

Troverai che l'indirizzo IP del dispositivo tun viene passato allo script come variabile d'ambiente. Inoltre sshd prende le opzioni dalla riga di comando del modulo

-oSomeOption=SomeValue

-o opzione Può essere usato per fornire opzioni nel formato usato nel file di configurazione. Ciò è utile per specificare le opzioni per le quali non esiste un flag della riga di comando separato. Per i dettagli completi delle opzioni e dei loro valori, vedere sshd_config (5)

Quindi potresti usare

-o ListenAddress=<some address>

Presumibilmente hai un metodo fuori banda per parlare con il tuo VPS in modo che quando si rompe puoi contattare il server.


1
Prova:-o ListenAddress=$(ip addr | awk '/inet/ && /tun0/{sub(/\/.*$/,"",$2); print $2}')
pjz,

@pjz Non penso che tu debba farlo poiché sono abbastanza sicuro che l'indirizzo IP del dispositivo sia disponibile come variabile di ambiente per lo script up. Semplicemente non ho le cose a portata di mano per testarlo.
utente9517

1
Eccellente! L'IP viene passato allo script up come ifconfig_local = 10.xx.xx.xx. Un sacco di altri dati (dev_type = tun, common_name = myservername, ifconfig_remote, route_gateway_1, untrusted_ip, ifconfig_local, proto_1, tls_serial_1, tls_serial_0 ...) vengono trasmessi.
Philipp,

Sì, lo so e ora lo fai anche tu :)
user9517

3
Forse vuoi modificare la tua risposta e aggiungere il nome della variabile env pertinente? (per i futuri lettori)
Philipp
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.