# &kppp; e la sicurezza

Questa sezione si rivolge principalmente a superutenti (`root`) con alte richieste di sicurezza, o semplicemente a persone interessate nella parte tecnica. Non è necessario leggere questa sezione se usi &Linux; a casa, sebbene potresti in ogni caso imparare qualcosa.

## Restringere l'accesso a &kppp;

Un amministratore di sistema potrebbe voler restringere l'accesso a chi dovrebbe poter usare &kppp;. Ci sono due modi per far ciò.

### Restringere l'accesso con i permessi del gruppo

Crea un nuovo gruppo (puoi chiamarlo ⪚ `dialout` o qualcosa di simile), e inserisci nel gruppo ogni utente che dovrebbe poter usare &kppp;. Digita quindi al prompt:

    # chown root.dialout /opt/kde/bin/kppp
    # chmod 4750 /opt/kde/bin/kppp

Ciò assume che &kde; è stato installato in `/opt/kde/` e che il nuovo gruppo è chiamato `dialout`.

### Restringere l'accesso nel modo di &kppp;

Prima di tutto, &kppp; controlla se esiste un file chiamato `/etc/kppp.allow`. Se questo file esiste, solo gli utenti nominati in questo file possono effettuare connessioni. Questo file deve essere leggibile da tutti (ma ovviamente NON scrivibile). Solo i nomi di utenti sono riconosciuti, così non puoi usare UID in questo file. Qui vi è un breve esempio:

    # /etc/kppp.allow
    # le linee di commento come questa sono ignorate
    # così come le linee vuote

    federico
    carlo
    daisy

Nell'esempio sopra, solo gli utenti `federico`, `carlo` e `daisy` possono effettuare connessioni, così come gli utenti con un UID uguale a 0 (così non devi elencare root esplicitamente nel file).

## &kppp; ha il bit SUID attivo? E la sicurezza?

È virtualmente impossibile scrivere un programma per la connessione senza il bit SUID che sia allo stesso tempo sicuro e facile da usare da parte di utenti inesperti. &kppp; cerca di risolvere i problemi di sicurezza con la seguente strategia.

- Subito dopo l'avvio del programma, &kppp; effettua un fork.

- Il processo master, che gestisce tutte le operazioni dell'interfaccia grafica (come l'interazione con l'utente), perde lo stato SUID dopo il fork, e viene così eseguito con i normali privilegi dell'utente.

- Il processo slave mantiene i suoi privilegi, ed è responsabile di tutte le azioni che richiedono i privilegi di `root`. Per mantenere sicura questa parte, non sono usate chiamate a librerie &kde; o &Qt;, ma solo chiamate di libreria semplici. Il codice sorgente di questo processo è corto (circa 500 linee) e ben documentato, così è semplice da controllare in cerca di falle di sicurezza.

- I processi master e slave comunicano l'un l'altro con le procedure IPC (Inter-Process Communication, o comunicazione interprocesso N.d.T.) standard di &UNIX;.

Particolari ringraziamenti ad Harri Porten per aver scritto in modo eccellente questa parte di codice. Si pensava che fosse impossibile, ma è riuscito a scriverla in una settimana.