Firebird Documentation Index → Guida rapida per Firebird 2 → Configurazione ed amministrazione del server |
Ci sono diverse cose da sapere e di cui preoccuparsi prima di cominciare ad usare il server Firebird appena installato. Questa parte del manuale presenta alcuni strumenti utili e mostra come si possano proteggere sia il server che i database.
Firebird ha un programma di utilità a linea di comando per la gestione degli utenti chiamata gsec. Sebbene le sue stesse funzioni possano essere effetuate anche attraverso un gran numero di utilità ad interfaccia grafica di terzi, bisognerebbe avere comunque una conoscenza basilare di gsec, in quanto questo è lo strumento ufficiale ed è presente in ogni installazione Firebird. Più avanti vedremo quindi come usare gsec per eseguire queste duè procedure:cambiare la password di SYSDBA ed aggiungere a Firebird un nuovo utente. Prima però è necessario fare attenzione su quanto segue:
In certe installazioni si può utilizzare
gsec solo se si è entrati nel sistema
come Superuser (root
su
Linux) o con lo stesso utente sotto il quale opera il server
Firebird. Sulle piattaforme Windows, è necessario di solito essere
nel gruppo Power User o ad un livello più alto per utilizzare
gsec senza problemi.
Avendo privilegi sufficienti ma lanciando
gsec si ha un messggio del tipo
«cannot attach to password database - unable
to open database
» allora:
Se Firebird gira su Windows, per qualche motivo il
protocollo locale potrebbe non funzionare. Una causa comune di
questo potrebbe essere che si usa Windows Vista, 2003 oppure
XP con i terminal services abilitati. Per abilitare il
protocollo locale, in questo caso, aprire il file
firebird.conf
, togliere il commento al
parametro IpcName
ed impostarlo a
Global\FIREBIRD
. A questo punto è
necessario far ripartire il server.
In Firebird 2.0.1 e successivi,
Global\FIREBIRD
è già il default nei
sistemi Windows con Terminal Services abilitati.
Se non è il vostro caso, si può sempre cercare di aggirare il problema specificando a gsec di cercare il database attraverso TCP/IP. Si tratta di aggiungere al comando il seguente parametro, correggendo il percorso del file come necessario:
-database "localhost:C:\Programmi\Firebird\Firebird_2_0\security2.fdb"
Il file security2.fdb
è il
database della sicurezza (security
database), in cui Firebird memorizza i suoi
dettagli degli utenti ammessi. È nella directory di
installazione di Firebird.
Può essere anche che il vostro file della sicurezza sia
un security.fdb
di Firebird 1.5
rinominato. Naturalmente questo non può essere successo
durante o subito dopo l'installazione. Qualcuno deve averlo
messo (o dimenticato) lì, ad esempio per mantenere gli utenti
esistenti di una precedente installazione ancora disponibili.
Per aggiornare i vecchi security database è necessario
consultare le istruzioni presenti nelle Release Notes.
Se il messaggio di errore inizia con
«Cannot attach to services
manager
», allora può essere che il server
non stia funzionando affatto. In tal caso, tornare indietro alla
Verifica
dell'installazione e correggere il
problema.
Sui sistemi **nix, chiamando gsec dalla sua directory, bisogna digitare ./gsec invece di solo gsec. Siccome il direttorio corrente non fa parte del percorso di ricerca, il solo gsec può non funzionare o lanciare una gsec «sbagliata».
SYSDBA è l'utente che viene creato in automatico durante il processo d'installazione di Firebird. Questo è l'utente che ha tutti i privilegi sul server e che non può essere eliminato. Il programma di installazione, in funzione della versione, del sistema operativo, e dell'architettura
o crea l'utente SYSDBA con password
masterkey
(in realtà sarebbe
masterke
: i caratteri oltre l'ottavo sono
ignorati)
oppure chiede una password durante l'installazione
oppure genera una password casuale e la memorizza nel file
SYSDBA.password
nella directory di
installazione di Firebird.
Se la password è masterkey
ed il server è in
qualche modo esposto in internet o perfino in una rete locale, a meno
di non ritenere completamente affidabili gli utenti sulla password di
SYSDBA, si dovrebbe cambiarla immediatamente
usando il programma di utilità a linea di comando
gsec. Aprendo una finestra di comandi,
cd al sottodirettorio bin
di Firebird e lanciare il seguente
comando per cambiare la password, ad esempio, in
c88Gwche
:
gsec -user sysdba -pass masterkey -mo sysdba -pw c88Gwche
Notare che nel comando bisogna specificare due volte «sysdba»:
Con il parametro -user
ci si
identifica come SYSDBA. Si deve dare la
password corrente di SYSDBA's nel parametro
-pass
.
Il parametro -mo[dify]
dice a gsec
che si vuol modificare un utente, che in questo caso è ancora
SYSDBA. Infine, -pw
specifica il tipo di modifica, cioè la password.
Se tutto ha funzionato a dovere, la nuova password di SYSDBA,
c88Gwche
, sarà encriptata e memorizzata, e la
vecchia masterkey
non sarà più valida. Fate
attenzione che le password distinguono fra maiuscole e minuscole,
mentre i nomi utente non lo fanno.
È possibile creare in Firebird diversi tipi di utenti. Ognuno di essi può essere proprietario di basi di dati ed anche avere diversi tipi di accesso alle basi di dati, di cui non è proprietario, ed ai loro oggetti.
Con gsec, lanciato da linea di
comando dal sottodirettorio bin
di Firebird, si aggiunge un nuovo utente come nell'esempio che
segue:
gsec -user sysdba -pass masterkey -add ninobar -pw sekrit66
Ammesso che abbiate dato la password corretta di
SYSDBA (masterkey è il
default in molti casi, come abbiamo già detto), abbiamo creato un
nuovo utente con user name ninobar
e con password
sekrit66
. Ricordare che le password sono
sensibili al caso maiuscolo o minuscolo delle lettere.
A partire da Firebird 2, gli utenti possono cambiarsi le password. Nelle versioni precedenti poteva farlo solo SYSDBA.
Firebird 2 ha differsi sistemi di sicurezza progettati per rendere gli accessi non autorizzati il più difficili possibile. Va fatta attenzione sul fatto che alcuni di questi sistemi configurabili sono per default nella modalità vecchia «non sicura», che è stata ereditata da InterBase e Firebird 1.0, per far funzionare ancora le vecchie applicazioni.
È utile avere dimestichezza con i parametri di configurazione relativi alla sicurezza di Firebird in quanto si riesce ad aumentare in modo significativo il livello di sicurezza del sistema ogniqualvolta sia possibile. Ovviamente non si tratta solo di settare parametri in modo opportuno: altri sistemi comportano la pianificazione dei permessi di accesso ai files, un modo intelligente di distribuire i diritti di accesso al sistema, ed altro ancora.
Ecco alcune linee guida per proteggere il server Firebird ed i vostri database.
Nei sistemi Unix-like, Firebird già viene eseguito
dall'utente firebird
per
default, non come root
.
Sulle piattaforme server di Windows, si può far eseguire il
servizio Firebird da un utente definito appositamente (esempio
Firebird
). Il modo
standard, cioè lanciare il servizio come l'utente LocalSystem
, mette un sistema
connesso ad Internet a rischio sicurezza. Consultare il documento
README.instsvc
nel sottodirettorio doc
per saperne di più su
quest'argomento.
Come già detto sopra, se il vostro
sistema Firebird è raggiungibile dall'esterno e la password del
server è rimasta masterkey
, cambiatela.
SYSDBA è un utente molto potente, con diritti di accesso completi e distruttivi su tutte le basi di dati Firebird. La sua password dovrebbe essere nota solo a pochi amministratori fidati. Pertanto non bisogna adoperare questo super-utente per creare e riempire le normali basi di dati. Invece, vanno generati normali utenti della base di dati, dando questi ultimi normali nomi e password per i vostri utenti finali. Questo può essere fatto con gsec come visto sopra, o con un qualsiasi strumenti di amministrazione per Firebird di terzi.
Chiunque possa leggere un database, può anche copiarlo, poichè ne ha i diritti a livello di filesystem, inoltre può installarlo il suo controllo ed estrarne tutti i dati, incluse tutte le possibili informazioni sensibili. Chiunque ne abbia accesso a livello di scrittura, può corromperlo o addirittura distruggerlo completamente.
Come regola, solo il processo server di Firebird dovrebbe avere accesso ai files delle basi di dati. Gli utenti non hanno questa necessità e non dovrebbero potervi accedere, nemmeno in sola lettura. Questi possono accedere ad un qualunque oggetto nel database solo attraverso richieste al server, ed il server si assicura che tali richieste abbiano il permesso adeguato per accedervi, altrimenti le rifiuta.
Una eccezione alla regola precedente è il cosidetto accesso
in locale o embedded del Firebird Classic Server in Linux. In tale
modalità di funzionamento è necessario che
gli utenti abbiano gli idonei diritti di accesso al file della
base di dati. Inoltre devono avere accesso in lettura al file del
database della sicurezza security2.fdb
. Se
questo crea problemi, è meglio riservare l'accesso al database di
sicurezza (e, già che ci si sta', anche agli altri database) al
solo processo del server. Gli utenti sono pertanto costretti a
connettersi attraverso lo strato di rete. Va ricordato che le
librerie libfbembed.*
non
dovrebbero essere rimosse dal sistema, perchè altrimenti gli
strumenti a linea di comando di Firebird non
funzionerebbero.
(Un discorso a parte meriterebbe il Windows Embedded Server, ma questo esula dagli scopi di questo manuale.)
I database alias oscurano la reale
locazione del database ai client. Usando gli alias, un client può
connettersi pertanto ad esempio a
«frodo:zappa
» senza sapere che il
file sia realmente
frodo:/var/firebird/musica/underground/mothers_of_invention.fdb
.
Gli alias permettono anche di riposizionare i database lasciando
intatte le stringhe di connessione dei client.
Tutti gli alias sono elencati nel file
aliases.conf
, che è in questo formato sulle
macchine Windows:
tresette = E:\giochi\DBMS\tresette.fdb briscola.fdb = C:\Firebird\DBMS\giochi\napoletane.fdb
e su Linux:
libri = /home/libri/DBMS/libri.fdb zappa = /var/firebird/musica/underground/mothers_of_invention.fdb
È puramente opzionale dare all'alias un'estensione qualsiasi
come .fdb
. Naturalmente,
includendola, va specificata anche nella stringa di connessione al
database se si vuole utilizzare quell'alias.
Il parametro DatabaseAccess
presente
nel file di configurazione firebird.conf
può
essere impostato a Restrict
per limitare il
server ad accedere ai sottoalberi esplicitamente indicati, o anche
a None
affinchè possa accedere ai soli
database identificati attraverso gli alias. Il default è
All
, vale a dire senza restrizione
alcuna.
Notare che questa non è la stessa cosa della protezione di
accesso a livello di file di sistema già vista prima: quando
DatabaseAccess
è diverso da
All
, il server si rifiuta di connettersi a
qualsiasi database al di fuori dell'ambito definito anche se
avesse sufficienti diritti sul file della base di dati.
Ci sono altri parametri di sicurezza, ma quelli di cui qui non si
parla sono già impostati per default ad un livello di protezione
adeguato. Si possono leggere le Note di Rilascio di Firebird 1.5 e 2.0 e
i commenti nel file firebird.conf
per ulteriori
informazioni (solo in inglese).
Per Firebird sono diponibili alcuni strumenti nel pannello di controllo di Windows. Sebbene non siano essenziali, sono utili per far partire e per fermare il server e vedere il suo stato attuale di funzionamento.
Lo strumento Firebird Server Manager fa già parte della distribuzione di Firebird. L'opzione per installarlo è disponibile solo per Superserver.
Lo strumento si può usare anche per Classic server, purchè esso sia in funzione come servizio, e non come applicazione. Poichè non si può installare direttamente, o si prova a scaricarlo da Internet oppure bisogna fare un giro un po' largo se si vuole proprio usare:
Installare prima Superserver;
Copiare il file Firebird2Control.cpl
dalla directory di sistema di Windows in un posto sicuro;
Disinstallare Superserver;
Installare Classic;
Copiare lo strumento salvato di nuovo nella directory di sistema.
Questa è un'immagine dello strumento attivato. Notare che la barra del titolo dice «Firebird Server Control», sebbene nel Pannello di Controllo sia elencato come Firebird 2.0 Server Manager.
Lo strumento che viene con Firebird 2 funziona solo con Windows NT, 2000/2003 and XP.
Per avere uno strumento funzionante anche in Windows 9x o ME, si può vedere alla pagina web:
...e scaricare il file del Firebird Control Center fbcc-0.2.7.exe. Si prega di notare che, a differenza dello strumento incluso in Firebird, il Firebird Control Center non funziona con i server Classic.
Il Control Center non assomiglia allo strumento di Firebird visto nell'immagine, ma offre più o meno le stesse funzioni. Attenzione: con Firebird configurato come servizio e senza il Guardian, il pulsante di Start/Stop resta sempre etichettato «Start», anche quando il server è già in funzione. Però funziona come dovrebbe. In tutte le altre configurazioni, mostra «Start» o «Stop» correttamente in funzione della situazione.
Il kit di Firebird non contiene strumenti di amministrazione ad
interfaccia grafica. Ha un insieme completo di strumenti a linea di
comndo, cioè programmi eseguibili che sono nel sottodirettorio bin
dell'installazione di Firebird. Abbiamo
già diffusamente parlato di uno di questi,
gsec.
La varietà di utilità ad interfaccia grafica disponibili per ambiente Windows è troppo vasta per essere inclusa qui. Alcune utilità scritte in Borland Kylix, per essere usate in ambiente Linux, sono in vari stadi di completamento.
Si può vedere Downloads > Contributed > Administration Tools su http://www.ibphoenix.com per tutte le varie opzioni.
Da ricordare: si possono usare client Windows per amministrare ed accedere a server Linux e viceversa.
Firebird Documentation Index → Guida rapida per Firebird 2 → Configurazione ed amministrazione del server |