[successivo] [precedente] [inizio] [fine] [indice generale] [indice ridotto] [indice analitico] [home] [volume]


Capitolo 790.   nanoLinux: accesso limitato

L'accesso ad alcuni servizi può essere limitato, attraverso il menù di nanorc. Per esempio può essere necessario controllare l'accesso alla rete esterna, alla stampa, o all'uso di certe postazioni.

Tabella 776.13. Script nanorc: configurazione della stampa.

Comando Descrizione
nanorc printer config
Consente di ricreare il file /etc/printcap impostando la coda di stampa predefinita per la stampante che si usa in un certo momento.
nanorc print maxpages
Consente di definire una quantità massima di pagine che possono essere stampate simultaneamente.
nanorc printer clients
nanorc printer access
Nel primo caso consente di definire l'elenco dei nodi di rete previsti per l'accesso al proprio servizio di stampa; nel secondo consente di scegliere quali nodi, tra quelli previsti, possono accedere effettivamente al servizio di stampa.

Tabella 776.11. Script nanorc: configurazione del servizio proxy HTTP.

Comando Descrizione
nanorc proxy clients [gruppo]
Definisce l'elenco dei nodi di rete previsti per l'accesso al proprio servizio proxy HTTP.
nanorc proxy access [gruppo]
Seleziona i nodi di rete, tra quelli previsti, che possono accedere effettivamente al servizio.
nanorc proxy filter [gruppo]
Seleziona i nodi di rete, tra quelli previsti, che non sono sottoposti al controllo del filtro dei contenuti.
nanorc proxy ban
Definisce gli utenti che non sono ammessi al servizio (ma l'efficacia di questa configurazione dipende dal servizio IDENT che deve funzionare in modo compatibile).

790.1   Limitazione nell'uso della stampante

La configurazione di una stampante locale comporta inizialmente che questa venga resa accessibile a chiunque, senza limitazioni, mentre la configurazione di una stampante remota coincide con la chiusura dell'accesso a chiunque, salvo ai programmi locali.(1) Per modificare questo sistema di massima, occorre procedere con due comandi di nanorc:

nanorc printer clients[Invio]

Per prima cosa occorre dichiarare quali sono i nodi da cui è prevista la possibilità di accedere al proprio servizio di stampa (locale o remoto che sia). In pratica, in questo elenco vanno inseriti gli indirizzi IPv4 di chi, per qualche ragione, deve avere la possibilità di stampare. Un elenco del genere potrebbe avere significato:

172.21.1.1
172.21.1.2
172.21.1.3
172.21.2.0/255.255.255.0
172.21.3.0/255.255.255.0

Come si vede, si possono indicare anche gruppi di nodi, specificando una maschera di rete; tuttavia, è bene che non si creino sovrapposizioni, altrimenti diventa poi difficile gestire il controllo dei permessi di accesso.

Supponendo di avere inserito esattamente l'elenco che si vede nell'esempio, dopo, con un altro comando di nanorc, è possibili stabilire chi può accedere tra questi:

nanorc printer access[Invio]

.--------------------Printer access permissions-----------------------.
| Please, select or deselect allowed access to printer:               |
| .-----------------------------------------------------------------. |
| | [ ] DENY_ALL                  reset to no remote access allowed | |
| | [ ] ALLOW_ALL                 reset to all access allowed       | |
| | [ ] 172.21.1.1                allow_172.21.1.1                  | |
| | [ ] 172.21.1.2                allow_172.21.1.2                  | |
| | [ ] 172.21.1.3                allow_172.21.1.3                  | |
| | [ ] 172.21.2.0/255.255.255.0  allow_172.21.2.0/255.255.255.0    | |
| | [ ] 172.21.3.0/255.255.255.0  allow_172.21.3.0/255.255.255.0    | |
| `-----v(+)--------------------------------------------------------' |
|                                                                     |
|---------------------------------------------------------------------|
|                   <  OK  >             <Cancel>                     |
`---------------------------------------------------------------------'

Le prime due voci sono costanti, le altre dipendono dall'elenco inserito in precedenza. Selezionando la voce ALLOW_ALL si ottiene di attivare tutte le voci previste, mentre DENY_ALL le disattiva tutte. Queste due voci iniziali servono solo per azzerare velocemente l'elenco e la loro selezione, fa sì che confermando la richiesta si ripresenti l'elenco, senza eseguire subito l'azione richiesta; pertanto, solo quando le prime due voci dell'elenco sono deselezionate si prende in considerazione la scelta di quelle sottostanti e viene aggiornata la configurazione.

Supponendo di abilitare l'accesso al gruppo costituito dagli indirizzi 172.21.2.*, si può osservare cosa succede se si riavvia il comando la volta successiva:

.--------------------Printer access permissions-----------------------.
| Please, select or deselect allowed access to printer:               |
| .-----------------------------------------------------------------. |
| | [ ] DENY_ALL                  reset to no remote access allowed | |
| | [ ] ALLOW_ALL                 reset to all access allowed       | |
| | [X] 172.21.2.0/255.255.255.0  allow_172.21.2.0/255.255.255.0    | |
| | [ ] 172.21.1.1                allow_172.21.1.1                  | |
| | [ ] 172.21.1.2                allow_172.21.1.2                  | |
| | [ ] 172.21.1.3                allow_172.21.1.3                  | |
| | [ ] 172.21.3.0/255.255.255.0  allow_172.21.3.0/255.255.255.0    | |
| `-----v(+)--------------------------------------------------------' |
|                                                                     |
|---------------------------------------------------------------------|
|                   <  OK  >             <Cancel>                     |
`---------------------------------------------------------------------'

Al riavvio del comando, le voci che in precedenza erano state selezionate, appaiono all'inizio dell'elenco, così da non doverle cercare.

Dal punto di vista del risultato, quello che conta è l'elenco dei punti a cui è concesso accedere. Se nell'elenco sono state fatte delle duplicazioni, per esempio se appare il nodo 172.21.2.33 e anche 172.21.2.0/255.255.255.0, bloccando l'accesso solo al gruppo 172.21.2.*, attraverso la voce 172.21.2.0/255.255.255.0, non serve a bloccare anche 172.21.2.33. Naturalmente può darsi che questo sia ciò che si vuole; quello che conta è capire la logica.

790.2   Controllo dell'accesso a servizi HTTP esterni

Così come per l'accesso alla stampante, è possibile limitare l'accesso al proxy HTTP, ma in tal caso si interviene su insiemi separati di nodi. Naturalmente, ciò ha senso soltanto se tale configurazione avviene in un elaboratore che svolge il ruolo di router per l'accesso all'esterno, ponendosi come un passaggio obbligato. Questo sistema serve in pratica per poter controllare chi, nella propria rete locale, può accedere ai servizi HTTP esterni, dato che di norma si fa intervenire il proxy HTTP in modo trasparente (senza bisogno che i programmi di navigazione debbano essere configurati per il suo utilizzo).

Come accennato, la configurazione dell'accesso al servizio è divisa in gruppi, il cui nome può essere scelto liberamente. Per esempio, per definire il gruppo «contab» si crea e si aggiorna così:

nanorc proxy clients contab[Invio]

Come già visto in precedenza, si inizia stabilendo l'elenco di nodi che si possono avvalere potenzialmente del proxy HTTP. Si devono indicare solo nodi singoli:

172.21.1.1
172.21.1.2
172.21.1.3
172.21.1.4
172.21.1.5
172.21.1.6
172.21.1.7

È importante evitare di creare delle sovrapposizione tra i gruppi di accesso. Dopo la predisposizione degli elenchi, si può passare al controllo effettivo dell'accesso:

nanorc proxy access contab[Invio]

.----------HTTP proxy access permissions-------------.
| Please, select or deselect who can access to the   |
| HTTP proxy:                                        |
| .------------------------------------------------. |
| | [ ] DENY_ALL       reset to no access allowed  | |
| | [ ] ALLOW_ALL      reset to all access allowed | |
| | [ ] 172.21.1.1     allow_172.21.1.1            | |
| | [ ] 172.21.1.2     allow_172.21.1.2            | |
| | [ ] 172.21.1.3     allow_172.21.1.3            | |
| | [ ] 172.21.1.4     allow_172.21.1.4            | |
| | [ ] 172.21.1.5     allow_172.21.1.5            | |
| | [ ] 172.21.1.6     allow_172.21.1.6            | |
| | [ ] 172.21.1.7     allow_172.21.1.7            | |
| `-----v(+)---------------------------------------' |
|                                                    |
|----------------------------------------------------|
|             <  OK  >         <Cancel>              |
`----------------------------------------------------'

Eventualmente, tra i nodi già definiti tramite il comando nanorc proxy access è possibile dichiarare quali escludere dal filtro di DansGuardian:

nanorc proxy filter contab[Invio]

.------------HTTP proxy content filter selection--------------.
| Please, select or deselect who can access to the HTTP proxy |
| without content filtering:                                  |
| .---------------------------------------------------------. |
| | [ ] FILTER_ALL     reset to all filtered                | |
| | [ ] FREE_ALL       reset to all free to access any site | |
| | [*] 172.21.1.1     free_172.21.1.1                      | |
| | [*] 172.21.1.2     free_172.21.1.2                      | |
| | [*] 172.21.1.3     free_172.21.1.3                      | |
| | [ ] 172.21.1.4     free_172.21.1.4                      | |
| | [ ] 172.21.1.5     free_172.21.1.5                      | |
| | [ ] 172.21.1.6     free_172.21.1.6                      | |
| | [ ] 172.21.1.7     free_172.21.1.7                      | |
| `---------------------------------------------------------' |
|                                                             |
|-------------------------------------------------------------|
|                 <  OK  >         <Cancel>                   |
`-------------------------------------------------------------'

In questo caso, con le selezioni che si vedono, si vuole fare in modo che i nodi con gli indirizzi 172.21.1.1, 172.21.1.2 e 172.21.1.3, siano esonerati dal filtro dei contenuti.

790.2.1   Controllo personale

È possibile escludere individualmente gli accessi da parte degli utenti, se l'elaboratore da cui accedono funziona con un sistema nanoLinux, il quale dispone di un servizio IDENT modificato per poter rispondere correttamente a un proxy HTTP trasparente. Per definire l'elenco degli utenti esclusi si può utilizzare il comando nanorc proxy ban:

nanorc proxy ban[Invio]

.-----------------------------------------------------------.
| You are going to edit the HTTP proxy banned users list.   |
| You can insert only a user names per line, like this:     |
|                                                           |
| tizio                                                     |
| caio                                                      |
|                                                           |
|-----------------------------------------------------------|
|                         <  OK  >                          |
`-----------------------------------------------------------'

Dopo l'avvertimento si passa alla modifica di un file di testo, in cui vanno messi i nomi degli utenti da «bandire». Il file va salvato con il nome che ha già, ovvero /etc/dansguardian/banneduserlist, quindi si deve uscire dal programma di modifica per completare l'operazione. Nel file si può usare il carattere «#» per escludere dei nomi che si vogliono ricordare o per mettere dei commenti; a ogni modo, occorre tenere presente che il contenuto del file viene riordinato automaticamente.

790.3   Amministrazione a responsabilità limitata

Sono previste delle utenze particolari, denominate rispettivamente admin0, admin1,... admin9, che inizialmente sono disabilitate (richiedono l'attribuzione di una parola d'ordine). Queste utenze sono associate al numero UID zero, pertanto hanno privilegi di funzionamento equivalenti all'utente root.

Queste utenze non hanno una shell normale, ma avviano direttamente uno script: si tratta di /etc/script/ADMIN0 o di /etc/script/ADMIN9.

Le utenze da admin0 a admin9, attraverso gli script /etc/script/ADMIN0 e /etc/script/ADMIN9, servono a consentire a una persona diversa dall'amministratore vero e proprio di eseguire alcune operazioni utili, senza dare tutti i privilegi dell'utenza root.

Le utenze admin... possono essere usate presso la console dell'elaboratore che svolge il compito di servente NIS, oppure, presso lo stesso elaboratore ma da una connessione remota, oppure anche negli elaboratori che non hanno funzioni particolari: in ogni circostanza, il menù di funzioni offerto è differente.

L'utenza admin9, ovvero quella più importante, attraverso lo script /etc/script/ADMIN9, porta automaticamente a un menù come quello che appare qui sotto:

.------------------------Admin menu--------------------------.
| Admin limited menu                                         |
| .--------------------------------------------------------. |
| |   adduser         Add a new user                       | |
| |   passwd          Change a user's password             | |
| |   user info       Show user info                       | |
| |   home info       Show home directory info             | |
| |   clock           Change the date and time manually    | |
| |   nis-make        Rebuild NIS database                 | |
| |   nis restart     Restart the NIS service              | |
| |   lpd restart     Restart the print service            | |
| |   printer access  Printer access permissions           | |
| |   proxy access    HTTP proxy access permissions        | |
| |   proxy-off       Turn off HTTP proxy                  | |
| |   proxy-on        Turn on HTTP proxy                   | |
| |   proxy filter    HTTP proxy content filter bypass     | |
| |   gpm restart     Restart the mouse service            | |
| |   udev restart    Restart the "/dev/" service          | |
| |   lprm            Delete the printer queue             | |
| |   reboot          Reboot the computers                 | |
| |   shutdown        Shutdown the computers               | |
| |   exit            Quit                                 | |
| `--------------------------------------------------------' |
|------------------------------------------------------------|
|                 <  OK  >         <Cancel>                  |
`------------------------------------------------------------'

Il significato delle voci del menù dovrebbe essere evidente. Si osservi in particolare la necessità di poter cambiare la parola d'ordine degli utenti che chiedono di farlo e di riallineare il NIS. In pratica, così come è organizzato, la gestione del NIS di nanoLinux non consente agli utenti di modificare la propria parola d'ordine autonomamente; pertanto, per questo occorre intervenire presso l'elaboratore in cui il servizio NIS viene gestito, attraverso i metodi tradizionali. Tuttavia, ciò richiede poi di aggiornare le tabelle del NIS di conseguenza. È per questo che si è resa necessaria la creazione di un'utenza riferita a una figura di amministratore con responsabilità limitata, perché altrimenti l'utilizzo della rete locale richiederebbe troppo spesso la presenza e l'intervento dell'amministratore vero e proprio.

790.4   Vincolare gli utenti a un certo gruppo di postazioni

Se gli elaboratori a cui gli utenti possono accedere sono tutti dotati di un sistema nanoLinux, è possibile imporre l'uso di certe postazioni, rispetto ad altre, ad alcuni utenti. Questa funzionalità non è guidata attraverso lo script nanorc e richiede un po' di lavoro.

Ogni elaboratore a cui si vuole sottoporre questo controllo deve contenere il file di testo /etc/nanoLinux/TTY_LOGIN_AT, con l'elenco degli utenti da limitare, dove sono ammesse solo direttive che si compongono secondo il modello seguente:

utente indirizzo_ipv4 [indirizzo_ipv4]

In pratica, prima si mette il nome dell'utente, quindi, separandoli con degli spazi, gli indirizzi da cui si possono connettere. Si osservi l'esempio seguente:

tizio 172.17.1.23 172.17.1.25
caio 172.17.1.15

In questo caso, ciò che è scritto nel file indica che l'utente tizio è ammesso ad accedere da 172.17.1.23, oppure 172.17.1.25, mentre l'utente caio solo da 172.17.1.15. Perché il controllo sia efficace, è necessario che questo file sia copiato tale e quale in tutti gli elaboratori.

790.5   Protezione della configurazione di GRUB 1

Quando nanoLinux viene installato in un disco fisso comune, conviene avvalersi di GRUB 1 per gestirne l'avvio, ma è bene provvedere anche a proteggere la configurazione con una parola d'ordine. Una protezione di questo tipo serve solo a impedire che all'avvio, qualcuno possa aggiungere facilmente un'opzione del tipo init=/bin/sh, con la quale otterrebbe immediatamente una shell con i privilegi dell'utente root; ma se a questo si aggiunge anche una configurazione appropriata del firmware (il BIOS) e si fa in modo che l'elaboratore non possa essere aperto (almeno senza lasciare delle tracce evidenti), si può ottenere una discreta protezione al riguardo.(2)

Il file di configurazione predefinito di GRUB 1 prevede già una direttiva, commentata, per fissare una parola d'ordine:

#
# To set up a password, just use grub-md5-crypt and replace
# the one inside the commented directive below:
#
#password --md5 $1$Ttn80$Ex.0.hNyTUE.TNEvwyeE61
...

Per definire una parola d'ordine, come suggerisce il commento aggiunto al file, occorre usare grub-md5-crypt:

grub-md5-crypt[Invio]

Password: nano[Invio]

Retype password: nano[Invio]

$1$Ttn80$Ex.0.hNyTUE.TNEvwyeE61

Naturalmente, va scelta una propria parola d'ordine, quindi va attivata la direttiva, mettendo la stringa cifrata ottenuta con grub-md5-crypt.

Quando poi GRUB 1 mostra il proprio menù, per passare alla modifica di una delle voci, prima di usare il comando [e], occorre inserire la parola d'ordine con il comando [p].


1) In pratica, se nel proprio elaboratore si configura una coda di stampa diretta a un elaboratore remoto, è necessario che tale coda sia accessibile solo ai processi elaborativi locali, altrimenti, pur non disponendo di una stampante locale, altri elaboratori potrebbero contattare la propria coda e inviare, in pratica, stampe a quell'elaboratore remoto.

2) Per poter avere una protezione completa, occorrerebbe un file system cifrato.


Appunti di informatica libera 2008 --- Copyright © 2000-2008 Daniele Giacomini -- <appunti2 (ad) gmail·com>


Dovrebbe essere possibile fare riferimento a questa pagina anche con il nome nanolinux_accesso_limitato.htm

[successivo] [precedente] [inizio] [fine] [indice generale] [indice ridotto] [indice analitico] [home]

Valid ISO-HTML!

CSS validator!

Gjlg Metamotore e Web Directory