Come posso limitare il port forwarding ssh * remote *?


22

Devo limitare quali porte possono essere ssh -Rinoltrate in remoto da un utente.

Conosco le permitopenopzioni su authorized_keys, ma come dice nella pagina man limita solo ssh -Lil port forwarding locale

Come discusso qui, un utente otterrebbe lo stesso con netcato simile, ma in questo caso l'utente non ha accesso alla shell

Ho anche trovato questo thread che parla dell'uso di selinux o LD_PRELOAD, ma non ho mai configurato selinux prima e non riesco a trovare informazioni su come farlo LD_PRELOAD.

forse qualcuno ha creato una patch per openssh per implementarla?

EDIT: ho trovato questo bug report quindi suppongo che non sia ancora stato implementato


Hai trovato una soluzione per questo?
alex88,

Non l'ho fatto, immagino che non possa essere fatto fino a quando il bug di cui sopra non verrà chiuso o qualcuno scriverà una patch per implementarlo
Lluís

Risposte:


3

Questo è stato implementato in OpenSSH 7.8p1, che è stato rilasciato 24-08-2018. Citazione dalle note di rilascio:

aggiungere una direttiva PermitListen a sshd_config (5) e un'opzione consentlisten = authorized_keys corrispondente che controlli quali indirizzi di ascolto e numeri di porta possono essere utilizzati dall'inoltro remoto (ssh -R ...).


4

C'è un'opzione no-port-forwardingche puoi usare, che impedisce tutto il port forwarding. Presente almeno a partire da OpenSSH 4.3p2 (CentOS 5.3 - la macchina più vecchia a cui ho accesso). Mettilo nello stesso posto che avresti messo permitopen.


13
Disabilitare completamente il port forwarding sembra eccessivo e non adatto alla domanda. Presumo che OP voglia limitarlo , pur consentendo alcuni specifici port forwarding remoti.
gertvdijk,

2
Sì, devo consentire il port forwarding
Lluís,

0

Non è possibile limitarlo usando ssh. Forse selinux o iptables potrebbero essere usati a tal fine. Tuttavia, esiste una strategia alternativa che può o meno soddisfare le tue esigenze. Utilizzare l'associazione ai socket UNIX. Questo dovrebbe essere disponibile a partire dalla versione 6.8 di openssh.

Quando si usano i socket si ha il file system ACL (anche se i socket rispettano che potrebbero dipendere da * nix) e si può usare per impedire a un utente di collegarsi ad altri socket. Tuttavia, non impedisce in alcun modo l'associazione alle porte, quindi a seconda del caso d'uso potrebbe non essere utile, ma forse le porte non contano se è possibile utilizzare costantemente solo socket.

Con i socket UNIX la gestione dei file dei socket sospesi può essere problematica poiché i publisher inversi tentano di riconnettersi. Ho un'altra domanda (e risposta) a quel problema. In breve, probabilmente vorrai anche usare StreamLocalBindUnlink yes:

Come pulire la presa del tunnel inverso SSH dopo aver chiuso la connessione?


-1

Duplicato: /superuser/516417/how-to-restrict-ssh-port-forwarding-without-denying-it

Sembra che tu possa usare quanto segue?

Nel file di configurazione del server è presente un'opzione PermitOpen . Questa opzione può essere utilizzata per specificare host e porte per le quali è possibile stabilire i forward. Questa opzione può essere utilizzata all'interno di un blocco Match, quindi può essere limitata da utente, gruppo o nome host o modello di indirizzo IP.

Modifica: Quindi nella configurazione del server aggiungere quanto segue

PermitOpen host: port

PermitOpen IPv4_addr: port

PermitOpen [IPv6_addr]: porta


1
Solo su U&L può essere contrassegnato come duplicato.
GAD3R,

1
Come affermato nella domanda, è per -L ed è già noto come non-soluzione
alex88,

1
Ci sarà mai una soluzione a questo (oltre a iptables)?
davesave,
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.