È sicuro esporre un endpoint del socket di registrazione in un ambiente chroot?

4

Sto provando a configurare un server di trasferimento file, che deve essere protetto e registrato. È stato suggerito FTP, ma sembra obsoleto, quindi l'ho tradotto automaticamente in SFTP (OpenSSH) nella mia testa.

Uso di match Posso selezionare quali utenti possono utilizzare il servizio. Usando ChrootDirectory posso selezionare quale area del filesystem pubblicare. Uso di ForceCommand Posso limitare gli utenti al solo trasferimento di file e impostare il livello di registro.

Ora arriviamo alla parte traballante. Affinché esegua il log in ci sia un socket syslog disponibile nel chroot .

Questo mi sembra un design completamente folle. Come può mai essere sicuro fornire un socket collegato direttamente al sistema di registrazione agli utenti che sto cercando di tracciare?

    
posta azzid 24.09.2015 - 22:51
fonte

2 risposte

2

L'articolo collegato è abbastanza obsoleto e c'è la possibilità di registrare eventi sftp anche senza /dev/log in ambiente jail nelle versioni recenti di openssh in RHEL (documentato in portale clienti ).

Ad ogni modo, è abbastanza sicuro se imposti i diritti di accesso.

How can it ever be safe to give a socket directly connected to the logging system to the users I'm trying to track?

Non stai dando via la presa. L'utente non interagisce direttamente con questo socket, perché non ha shell, ma il server sftp interagisce con esso.

Se sei preoccupato che l'utente rimuova il socket o qualcosa del genere, questo non è possibile, se imposti i diritti di accesso nel modo corretto (come con il socket di registro in /dev/ )

    
risposta data 25.09.2015 - 10:40
fonte
4

Iniziamo con ciò che sappiamo:

  • Si sta eseguendo un processo in un ambiente isolato
  • Vuoi che quel processo comunichi con il sistema di registrazione

Di conseguenza, è necessario fornire un modo per instradare la comunicazione dal processo al daemon di registrazione. Ci sono due modi per farlo: socket Unix o socket TCP.

All'applicazione, i socket Unix e i socket TCP sono approssimativamente identici. In entrambi i casi, ti connetti al socket e inizi a inviare / ricevere traffico. Ma i socket Unix hanno il vantaggio di sicurezza che puoi usare i permessi dei file per controllare chi può connettersi a loro.

Quindi ti stai chiedendo come potrebbe possibilmente essere sicuro di consentire al processo di connettersi al sistema di registrazione ... ma se il tuo processo non può vedere il sistema di registrazione, allora come potresti aspettarsi che generi voci di registro?

Per essere chiari, un socket unix non dà a nessuno il controllo completo sul processo che possiede il socket. Invece permette a qualcuno di aprire una connessione al processo che possiede il socket, esattamente come usare una connessione di rete, ma senza la rete.

    
risposta data 25.09.2015 - 08:12
fonte

Leggi altre domande sui tag