Capitolo 1. Introduzione

Sommario

1. Cos'è bifernoadmin
2. Installazione e accesso a bifernoadmin
3. Struttura di bifernoadmin
4. Configurazione e note sulla sicurezza
4.1. Controllo del protocollo di comunicazione
4.2. Controllo dell'IP di provenienza dell'accesso
4.3. Controllo della password

1. Cos'è bifernoadmin

bifernoadmin è un servizio web, interamente realizzato in linguaggio Biferno, che permette l'amministrazione remota e la modifica di una applicazione Biferno tramite una interfaccia accessibile da qualunque browser internet.

Per il concetto di applicazione Biferno si veda il Cap. 9 del documento: "Biferno: Language Guide". In generale, per una completa comprensione del presente documento è necessario aver letto il suddetto manuale (disponibile sul sito www.biferno.it) avendo compreso almeno i principi generali di Biferno e delle sue applicazioni.

2. Installazione e accesso a bifernoadmin

bifernoadmin viene automaticamente installato all'atto della installazione di Biferno, ma rimane inattivo fino a configurazione completata come descritto in: Sezione 4, «Configurazione e note sulla sicurezza». Esso consiste di una cartella, di nome bifernoadmin, contenente gli script .bfr che implementano tutte le funzionalità del servizio.

Tale cartella viene installata nella directory BifernoHome del computer su cui si installa Biferno

Cos'è BifernoHome

BifernoHome è il percorso della cartella centrale cui fa riferimento Biferno per le proprie impostazioni generali e per il salvataggio di alcuni file utili al suo funzionamento (file di log, file di spool delle mail etc...). La sua posizione dipende dal Sistema Operativo in cui si sta lavorando:

  • Linux: il percorso alla cartella BifernoHome è: /home/BifernoHome

  • MacOSX: il percorso alla cartella BifernoHome è: /Users/BifernoHome

  • Windows: il percorso alla cartella BifernoHome viene specificato dall'utente al momento dell'installazione (default: [Program files]\Biferno\BifernoHome).

  • MacOS Classic: BifernoHome è il percorso della cartella di nome BifernoHome al primo livello del disco di Startup

Su tutti i sistemi operativi è anche possibile sapere il percorso della cartella BifernoHome esaminando (in uno script biferno) la proprietà:

biferno.home

BifernoHome contiene anche l'applicazione main di cui tutte le altre applicazioni sono figlie (per il concetto di sottoapplicazione, o applicazione figlia, e per altri dettagli su BifernoHome si veda il manuale :"Biferno: Language Guide").

Per accedere a bifernoadmin è necessario digitare nel proprio browser la URL della cartella contenente l'applicazione che si vuole amministrare seguita dalla stringa bifernoadmin/index.bfr; la stringa index.bfr è facoltativa se si è impostata correttamente la DirectoryIndex nelle preferenze del server web, cioè la pagina che il server web deve mostrare qualora nella URL sia specificata solamente la directory.

Per esempio, per amministrare l'applicazione contenuta nella cartella MyApplication sul sito www.mysite.com si deve digitare la url:

https://www.mysite.com/MyApplication/bifernoadmin/index.bfr

per quanto riguarda l'uso del protocollo https nella URL (invece del semplice http) si veda: Sezione 4, «Configurazione e note sulla sicurezza» più avanti.

Si noti che nella cartella MyApplication non esiste nessuna cartella bifernoadmin (che si trova invece in BifernoHome), eppure la url viene ritrovata correttamente! Il trucco consiste nel fatto che Biferno automaticamente intercetta tutte le url che contengono la parola bifernoadmin e le redirige su: [BifernoHome]/bifernoadmin/index.bfr. Se così non fosse, sarebbe necessario replicare la cartella bifernoadmin in tutte le applicazioni, con un conseguente spreco di spazio su disco e una maggiore difficoltà nel mantenimento del codice. Da questo intuiamo anche che la parola bifernoadmin è una parola riservata e non deve mai essere usata per nominare i nostri script (o cartelle contenenti i nostri script).

3. Struttura di bifernoadmin

bifernoadmin è costituito da quattro strumenti fondamentali:

  • Capitolo 2, Admin permette di modificare le preferenze dell'applicazione e di eseguire flush (svuotamento della cache) e reload (reinizializzazione) dell'applicazione stessa (per i dettagli su flush e reload si veda il Cap. 9 di "Biferno: Language Guide").

  • Capitolo 3, Edit viene usato per leggere e modificare i file e le cartelle dell'applicazione permettendo l'aggiunta e la correzione degli script che la compongono

  • Capitolo 4, Reference presenta la documentazione on line di tutte le classi e funzioni Biferno e permette di produrre nuova documentazione per classi e funzioni utente.

  • Capitolo 5, Cache ci consente di visualizzare (ed eventualmente eliminare dalla cache) i singoli file presenti nella cache dell'applicazione e consultare le ultime statistiche di accesso dei file stessi.

Più avanti esamineremo i dettagli di tutti questi strumenti.

4. Configurazione e note sulla sicurezza

L'accesso a bifernoadmin deve essere consentito solo allo sviluppatore (o all'amministratore) dell'applicazione per evitare intrusioni e possibili danni. Un utente male intenzionato potrebbe eseguire un reload dell'applicazione in un momento non desiderato o (peggio) modificare i file del nostro sito usando Edit. Dunque è importante soffermarci un momento sui meccanismi di protezione che il servizio mette in atto, e sulle possibili impostazioni che ne influenzano il comportamento

Per ottenere una protezione adeguata bifernoadmin agisce su tre livelli diversi:

4.1. Controllo del protocollo di comunicazione

Prima ancora di verificare l'identità dell'utente, bifernoadmin confronta il protocollo che si sta usando per richiedere l'accesso con la lista dei protocolli accettati. I protocolli accettati sono elencati nella variabile applicazione ADMIN_PROTOCOL definita nel Biferno.config.bfr dell'applicazione, come in:

ADMIN_PROTOCOL = "https"

che stabilisce come unico protocollo accettato l'HTTPS (HTTP sicuro). In particolare l'utilizzo del protocollo HTTPS prevede la trasmissione dei dati in modalità criptata ed è dunque più sicuro del semplice HTTP. Se si è definito questo protocollo e si cerca di accedere a bifernoadmin tramite semplice HTTP, si ottiene la seguente schermata:

Figura 1.1. Protocollo non accettato

Protocollo non accettato

Se si definisce ADMIN_PROTOCOL nel seguente modo:

ADMIN_PROTOCOL = "https, http"

oppure

ADMIN_PROTOCOL = "*"

si ottiene l'accesso anche in semplice HTTP (o in qualunque protocollo nel secondo caso). Questo però mette a rischio la sicurezza del sito in quanto i dati vengono trasmessi in chiaro.

L'uso dell'HTTPS richiede lavoro aggiuntivo, in particolare richiede l'installazione di un server sicuro, cioè di un server web che supporti il protocollo HTTP over SSL.

Si noti inoltre che bifernoadmin deve essere installato sullo stesso computer dell'applicazione che si vuole amministrare. Questo potrebbe richiedere la coesistenza di due server (per i due protocolli, HTTPS e HTTP) sullo stesso computer, infatti spesso l'HTTPS risulta necessario unicamente per bifernoadmin.

Alla prima installazione Biferno inizializza la variabile ADMIN_PROTOCOL al valore: "https".

4.2. Controllo dell'IP di provenienza dell'accesso

Una volta verificato il protocollo, bifernoadmin controlla che l'indirizzo IP da cui proviene la richiesta sia compatibile con gli IP definiti nella variabile applicazione ADMIN_IP. Tale variabile, come le altre riguardanti bifernoadmin, è definita nel Biferno.config.bfr, come in:

ADMIN_IP = "195.136.128.10"

oppure

ADMIN_IP = "195.136.128.10, 192.128.137.*"

nel secondo esempio abbiamo abilitato tutti gli IP che cominciano per 192.128.137. più il singolo IP 195.136.128.10. Se si cerca di accedere bifernoadmin dall'IP 192.168.10.20 (che non è fra quelli abilitati) si ottiene la seguente schermata:

Figura 1.2. IP non accettato

IP non accettato

In questo modo bifernoadmin si assicura di ricevere richieste solo dagli IP abilitati. Si tenga presente, in ogni caso, che alterazioni dell'IP di provenienza sono comunque possibili (anche se non banali) da parte di hacker male intenzionati.

In alcuni casi bisogna tener conto del fatto che l'IP di una certa macchina che si connette a bifernoadmin non è sempre lo stesso. Questo succede nel caso in cui l'IP viene assegnato dinamicamente (per esempio dal proprio ISP) ad ogni nuova connessione ad Internet. Se proprio non si può evitare questa situazione, si può essere costretti a definire una maschera per ADMIN_IP, come nel secondo esempio (eludendo però il controllo IP di bifernoadmin per una intera rete di utenti, il chè può essere pericoloso).

Inoltre, le richieste provenienti da organizzazioni che si connettono ad internet tramite un router vengono ricevute dal server web come se provenissero da un unico indirizzo IP. Abilitando quell'indirizzo IP si abilita in realtà l'intera organizzazione a superare il controllo all'accesso in bifernoadmin.

Biferno, alla prima installazione, inizializza ADMIN_IP al valore "" (stringa vuota) non consentendo così l'accesso da nessuna postazione.

4.3. Controllo della password

L'ultimo controllo che bifernoadmin esegue è quello della password. Se si sono superati i controlli di Protocollo e di IP, si accede alla finestra di login.

Figura 1.3. Finestra di login

Finestra di login

La finestra ci richiede la password per entrare. Il servizio ci informa anche che Reference (a differenza degli altri tre strumenti di bifernoadmin) può essere consultato liberamente, senza inserire nessuna password. Si noti però che anche Reference richiederà la password qualora si tenti di modificare la documentazione non limitandosi alla semplice consultazione.

Il servizio ci informa anche che è necessario avere i cookie attivati nel nostro browser per poter accedere a bifernoadmin

La password digitata deve coincidere con quella definita nella variabile ADMIN_PASSWORD, come in:

ADMIN_PASSWORD = "mypassword"

Biferno, alla prima installazione, inizializza ADMIN_PASSWORD al valore "" (stringa vuota) non consentendo così l'accesso a nessuno.

Nota

Per non scrivere in chiaro la password nel file Biferno.config.bfr (il cui contenuto viene mostrato ogni volta che si accede ad Admin) si può scrivere la password stessa in un altro file, per esempio di nome passw.x.bfr (e leggibile solo dall'utente biferno) e poi inserire nel config la linea:

ADMIN_PASSWORD = file("passw.x.bfr",,r).Get()

Si noti che il file della password finisce con ".x.bfr", suffisso che ne impedisce la richiesta via WEB (si veda la nota "Protezione dei file" all'inizio del Cap.9 "Applicazioni" in "Biferno: Language Guide").

Ancora meglio sarebbe NON scrivere la password in chiaro (inserendo nel file, per esempio, il risultato della HTUUEncode() applicato alla password stessa) e inserire in Biferno.config.bfr la linea:

ADMIN_PASSWORD = file("passw.x.bfr",,r).Get().HTUUDecode()

Se la password digitata non è corretta, ci viene mostrato il messaggio «Sorry, invalid password. Please try again.»

Finalmente, dopo aver completato la configurazione ed aver inserito la password corretta ci viene consentito l'accesso alla prima pagina di bifernoadmin.

NOTA IMPORTANTE

Dopo aver modificato le variabili: ADMIN_PROTOCOL, ADMIN_IP e ADMIN_PASSWORD è necessario eseguire un reload dell'applicazione per rendere effettive le modifiche, però, d'altra parte, non si ha ancora accesso a bifernoadmin per eseguire il reload.

Il problema si può risolvere in due modi:

  • Se stiamo configurando bifernoadmin per la prima volta saremo costretti ad eseguire un reload totale di Biferno usando un'altra modalità. Su Linux o MacOSX è sufficiente eseguire il comando da terminale (utente root): bifernoctl reload. Su Windows si deve selezionare dal menu «Biferno» dell'applicazione BifernoCtl la voce «Reload Biferno». Su MacOS Classic si deve premere il bottone «reload» della finestra di Biferno integrata nel web server (si consulti il documento «Biferno: Installation and Administration Guide» per i dettagli su questi comandi).

  • Se l'applicazione che vogliamo amministrare è una sottoapplicazione di un'altra già configurata per bifernoadmin sarà sufficiente entrare nel bifernoadmin dell'applicazione superiore ed eseguire il reload di quella. Infatti in questo modo sarà eseguito il reload anche di tutte le applicazioni figlie, e dunque anche della nostra. In particolare si ricordi che tutte le applicazioni sono sottoapplicazioni dell'applicazione main, cioè quella contenuta in BifernoHome, quindi eseguire un reload (o un flush) sulla main equivale ad eseguirlo su tutte le applicazioni.

Una volta autenticati in bifernoadmin, automaticamente vieniamo riconosciuti da Biferno come se il nostro IP fosse fra quelli elencati nella variabile DEVELOPER_IP (si veda "Biferno: Language Guide" per i dettagli sul DEVELOPER_IP).

Riassumendo, il processo di autenticazione di bifernoadmin è pensato per evitare l'intrusione di utenti indesiderati. Tuttavia, grazie alla totale flessibilità delle impostazioni, esso lascia anche all'amministratore la possibilità di allentare la sicurezza per una gestione più comoda (ma meno sicura) degli strumenti di amministrazione.