SSH Tunnelling: come posso impedire agli utenti di accedere ai servizi associati a localhost tramite il port forwarding?

7

Voglio poter offrire account ssh sul mio server linux affinché le persone possano essere utilizzate per il tunneling SSH. Tutti gli account saranno bloccati senza shell interattiva, solo per scopi di tunneling / port forwarding. Il mio problema è che non voglio che siano in grado di accedere ai servizi che sono associati a localhost solo facendo forward in avanti come il seguente:

ssh account@server -L 9999:127.0.0.1:3306 && telnet localhost 9999

Darebbe accesso alla porta del database mysql predefinita. Come posso smettere?

Vedo le opzioni nel file di configurazione di OpenSSH per consentire porte / host specifici, ma non per bloccarli. Qualsiasi aiuto sarebbe molto apprezzato:)

    
posta Dave Davidson 17.12.2011 - 11:05
fonte

2 risposte

4

Il port forwarding da parte del daemon SSH viene eseguito da un processo figlio non privilegiato del daemon ssh.

ssh jeff@localhost -R 9999:localhost:22
sudo lsof -i
sshd      4856  jeff   10u  IPv4  21933      0t0  TCP localhost:9999 (LISTEN)

Quindi possiamo vedere che il processo SSH responsabile per l'inoltro delle porte è di proprietà dell'utente. Ci sono modi fantastici per etichettare i pacchetti per la gestione personalizzata, ma penso che il più semplice sia questo:

iptables -A OUTPUT -m owner --gid-owner 1000 -d 127.0.0.0/8 -j REJECT --reject-with icmp-admin-prohibited

Metti tutti i tuoi utenti nello stesso gruppo, metti quel gruppo nella regola e metti quella regola in cima alla tua lista prima di qualsiasi regola di permesso. Nota che ho usato 127.0.0.0/8 - qualsiasi cosa nel 127 netblock ti porterà all'host locale, quindi non limitarti a bloccare 127.0.0.1.

Inoltre, considera l'aggiunta di una regola simile per bloccare l'accesso all'IP dell'interfaccia esterna. È un modo furbo per aggirare le regole del firewall.

    
risposta data 18.12.2011 - 06:26
fonte
2

Se hai solo fissato i port forwarding permessi, puoi limitarli con permitopen="host:port" . Google ha rivendicato un demone ssh commerciale che offre un'opzione di port forwarding limitata, ma che sembrava globale, non solo un utente.

    
risposta data 18.12.2011 - 07:47
fonte

Leggi altre domande sui tag