So che il titolo sta solo lanciando "la tua configurazione non è sicura", ma permettimi di spiegare.
Sto lavorando a un'applicazione che mira a consentire ai client di eseguire il rsync su SSH sul nostro server. Abbiamo bisogno di un'applicazione web da cui possiamo creare / ruotare le chiavi SSH per i nostri utenti. Questa applicazione restituirà all'utente una chiave SSH privata per il loro uso futuro e memorizzerà il file authorized_keys dell'utente della chiave pubblica.
Al momento della registrazione, dovremo creare automaticamente l'utente e la directory e le chiavi .ssh iniziali.
Ora siamo su CentOS 5, ma siamo flessibili se c'è una ragione sufficiente per migrare. Questo server eseguirà solo questa applicazione Web in Apache (come apache: apache) e nessun dato diverso dai dati dell'utente sincronizzati verrà memorizzato nel sistema.
Ho pensato alla seguente soluzione, ma ho avuto dei problemi:
- Concedi sudo
useradd
privilegi all'utente apache per consentire loro di creare nuovi utenti - Chiama
sudo useradd
dallo script PHP nell'applicazione web con una umask di 000 nella directory home appena creata. -
chgrp
la nuova directory home aapache
in modo che apache possa creare una nuova directory .ssh e scrivere le chiavi. * -
chmod
la nuova directory home a 770 in modo che solo l'utente e l'apache abbiano accesso. * -
mkdir .ssh
nella nuova directory home essh-keygen
per creare la nuova chiave, memorizzando la chiave pubblica inauthorized_keys
e restituendo la chiave privata al client chiamante.
I problemi che sto incontrando sono con i punti * d - sembra che, anche con chmod 777 non riesco a chgrp
o chmod
della directory, come è stato creato con il proprietario e il gruppo appartenente al nuovo utente.
Ho cercato di cambiare il gruppo predefinito dell'utente in qualcosa che avrebbe permesso a Apache di scrivere su di esso, ma non riesco a trovare un modo per farlo senza dover concedere i privilegi sudo di apache usermod
su, che sembra un davvero pessima idea.
Ogni pensiero sarebbe apprezzato!