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
useraddprivilegi all'utente apache per consentire loro di creare nuovi utenti - Chiama
sudo useradddallo script PHP nell'applicazione web con una umask di 000 nella directory home appena creata. -
chgrpla nuova directory home aapachein modo che apache possa creare una nuova directory .ssh e scrivere le chiavi. * -
chmodla nuova directory home a 770 in modo che solo l'utente e l'apache abbiano accesso. * -
mkdir .sshnella nuova directory home essh-keygenper creare la nuova chiave, memorizzando la chiave pubblica inauthorized_keyse 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!