preload
Jul 10

Poppassd è un programma che permette di cambiare la password di sistema e può essere utile per consentire agli utenti di cambiare la propria password di posta. Horde ad esempio dispone di un modulo che si interfaccia a poppassd per permettere agli utenti di cambiare la propria password dalla webmail.

Su Debian 5 italiana, è necessario apportare delle modifiche ai sorgenti di poppassd per far si che possa funzionare correttamente.

Scaricare i sorgenti dal sito ufficiale del programma http://www.netwinsite.com/poppassd/


cd /usr/src/
wget ftp://netwinsite.com/pub/poppassd/poppassd.c
nano -w poppassd.c

Localizzare la riga static char *P1[] = e sostituire "password: ", con "Immettere nuova password UNIX: ",
Localizzare la riga static char *P2[] = e sostituire "retype new unix password: ", con "Immettere nuova password UNIX:",
Localizzare la riga static char *P3[] = e sostituire "new password (again):", con "Reimmettere la nuova password UNIX:",
Localizzare la riga static char *P4[] = e sostituire "password changed", con "passwd: password aggiornata correttamente",

Sostanzialmente, il programma richiama il comando passwd e ne analizza le risposte confrontandole con quelle definite nei vettori P1, P2, P3 e P4 per “capire” come comportarsi. Quello che si è fatto, è sostituire le stringhe che avrebbe restitutito passwd su un sistema Debian inglese con quelle restituite dalla versione localizzata italiana.

Compilare il programma e copiare l’eseguibile nella cartella /usr/local/bin


gcc poppassd.c -o poppassd -lcrypt
cp poppasswd /usr/local/bin
chmod +x /usr/local/bin/poppasswd

Aggiungere poppassd come servizio

Editare il file /etc/inetd.conf aggiungendo in fondo la riga

poppassd stream tcp nowait root /usr/local/bin/poppassd

Riavviare il servizio inetd

/etc/init.d/openbsd-inetd restart

Testare il funzionamento

telnet localhost:106
200 your poppassd v1.6a hello, who are you?
user utente
200 your password please.
pass password
200 your new password please.
newpass nuovapassword
200 Password changed, thank-you.

Download di poppassd modificato per Debian 5 in italiano

Feb 04

Il presente howto è un semplice adattamenteo dell’articolo Apache 2 e SSL pubblicato sul sito http://www.techplus.it/ di Ermanno Gnan

Apache 2 può essere configurato in modo da ottenere una connessione sicura tramite SSL oppure richiedere informazioni al client prima di attivare una connessione sicura. Questo processo avviene attraverso lo scambio di certificati.

Un certificato è un documento pubblico che può essere tranquillamente diffuso.
I suoi utilizzi sono molteplici: può servire a contrattare una connessione sicura, fornire informazioni generali riguardanti il possessore del certificato ecc.

L’implementazione dei certificati su Debian verrà qui gestita con OpenSSL ma prima di entrare nel dettaglio sono qui riportate alcune terminologie che è opportuno padroneggiare:

  • CA: Certification Authority (L’autorità che valida i certificati).
  • I: Issuer (l’emittente del certificato).
  • S: Subject (Il proprietario del certificato).
  • L: Locality (Località o Città).
  • SP: State Province (Stato di provincia usato solo in USA).
  • C: Country (Paese
  • CN: Common Name (Nome Comune).
  • O: Organization (Organizzazione).
  • OU: Organization Unit (Unità Organizzativa).
  • DN: Campo contenente  tutti i campi separati da uno slash (”/”).
  • RSA: Algoritmo di crittografia usato per i certificati
  • MD5: è un check-sum usato per controllare che messaggi crittografati non vengano contraffatti.

Come precedentemente accennato, il certificato può avere molteplici funzioni:

  • fornire dei dati riguardanti il proprietario del certificato e dell’ente fornitore;
  • dare una chiave pubblica con il quale è possibile decodificare documenti criptati tramite una chiave privata posseduta in modo esclusivo dal proprietario;
  • permettere a chi è in possesso del certificato di criptare con una chiave contenuta in esso un’informazione che potrà solo essere decriptata dal possessore della chiave.

La sicurezza dei certificati sta nel fatto che pur possedendo queste due chiavi (l’impronta e la firma) pubbliche non ci sia la possibilità di risalire alla chiave privata alla quale è abbinato il certificato.

Per approfondimenti sugli usi a livello utente e al valore legale del certificato: http://it.wikipedia.org/wiki/Firma_digitale.

A questo punto parlando di certificato dovremo tenere a mente che da qualche parte per ogni certificato esista una chiave privata con la quale il certificato è stato creato.

Il processo di creazione di un certificato non è eccessivamente complicato e qualsiasi ente (anche fittizio) ha la possibilità di produrne uno o più.
Chiunque può quindi creare un certificato funzionante a tutti gli effetti con OpenSSL ma la “rete di fiducia” (Web of Trust) che accompagna il loro utilizzo fa in modo che si possa verificare la provenienza e la validità di un certificato.

Esistono infatti le CA (Certification Authority) che validano i certificati emessi dagli enti.

Per creare un certificato bisogna fare una richiesta tramite un certificato intermedio (CSR) che deve essere validato dalla CA che è inserita in una rete di fiducia.

L’elenco dei certificati rilasciati da una CA deve essere di dominio pubblico cosicché chiunque possa confrontare un certificato con la sua copia originale.

In seguito seguirà una guida che illustrerà passo passo come creare dei certificati validi per stabilire una connessione SSL con Apache.

Configurazione di OpenSSL e creazione dei certificati

Prima di iniziare è opportuno riassumere i passi-base per la creazione del certificato:

  • Creazione di una propria CA: creare una chiave per l’ente certificatore che deve esser usata per creare una richiesta che (solo in questo primo passaggio) deve essere auto-validata dalla richiesta stessa.
  • Creazione di un certificato per il server:  creare una chiave per il server, creare una richiesta per la CA da validare con la nuova chiave, validare la richiesta con la CA e la chiave della CA.
  • Creazione di un certificato per il client: procedimento analogo a quello del server.

Prima di tutto, occorre configurare il file /usr/lib/ssl/openssl.conf in questo modo:


HOME = .
RANDFILE = $ENV::HOME/.rnd
oid_section = new_oids


[ new_oids ]

[ ca ]

default_ca = CA_default # The default ca section

[ CA_default ]

dir = /var/CA # Where everything is kept
certs = $dir/certs # Where the issued certs are kept
crl_dir = $dir/crl # Where the issued crl are kept
database = $dir/index.txt # database index file.
new_certs_dir = $dir/newcerts # default place for new certs.
certificate = $dir/CA/ca.crt # The CA certificate
serial = $dir/serial # The current serial number
crl = $dir/server.crl # The current CRL
private_key = $dir/CA/ca.KEY# The private key
RANDFILE = $dir/private/.urand # private random number file
x509_extensions = usr_cert # The extentions to add to the cert
name_opt = ca_default # Subject Name options
cert_opt = ca_default # Certificate field options
default_days = 365 # how long to certify for
default_crl_days= 30 # how long before next CRL
default_md = md5 # which md to use.
preserve = no # keep passed DN ordering
policy = policy_match

[ policy_match ]

countryName = match
stateOrProvinceName = optional
organizationName = match
organizationalUnitName = optional
commonName = supplied
emailAddress = optional

[ policy_anything ]
countryName = optional
stateOrProvinceName = optional
localityName = optional
organizationName = optional
organizationalUnitName = optional
commonName = supplied
emailAddress = optional

[ req ]

default_bits = 1024
default_keyfile = privkey.pem
distinguished_name = req_distinguished_name
attributes = req_attributes
x509_extensions = v3_ca # The extentions to add to the self signed cert
string_mask = nombstr

[ req_distinguished_name ]

countryName = Country Name (2 letter code)
countryName_default = IT
countryName_min = 2
countryName_max = 2
stateOrProvinceName = State or Province Name (full name)
stateOrProvinceName_default = Some-State
localityName = Locality Name (eg, city)
0.organizationName = Organization Name (eg, company)
0.organizationName_default = Internet Widgits Pty Ltd
organizationalUnitName = Organizational Unit Name (eg, section)
commonName = Common Name (eg, YOUR name)
commonName_max = 64
emailAddress = Email Address
emailAddress_max = 64

[ req_attributes ]

challengePassword = A challenge password
challengePassword_min = 4
challengePassword_max = 20
unstructuredName = An optional company name

[ usr_cert ]

basicConstraints=CA:FALSE
nsComment = "OpenSSL Generated Certificate"
subjectKeyIdentifier=hash
authorityKeyIdentifier = keyid,issuer:always

[ v3_req ]

basicConstraints = CA:FALSE
keyUsage = nonRepudiation, digitalSignature, keyEncipherment

[ v3_ca ]

subjectKeyIdentifier=hash
authorityKeyIdentifier = keyid:always,issuer:always
basicConstraints = CA:true

[ crl_ext ]

authorityKeyIdentifier = keyid:always,issuer:always

Creazione delle cartelle per la factory dei certificati


cd /var/
mkdir CA
cd CA/

Creazione delle sottocartelle necessarie come configurato precedentemente in openssl.conf


mkdir certs
mkdir crl
touch index.txt
echo 100001 > serial
mkdir newcerts
mkdir CA

Nella cartella CA creo la factory della mia CA. Prima di tutto creo la chiave:

cd CA
openssl genrsa -out ca.KEY

quindi va creata la richiesta di certificato:


openssl req -new -key ca.KEY -out ca.CSR

infine, va abbinata la richiesta di certificato alla chiave


openssl x509 -req -days 3650 -in ca.CSR -out ca.CRT -signkey ca.KEY

Al termine, dovrebbero risultare i tre file ca.CRT ca.CSR ca.KEY.
Il passo successivo sarà creare le cartelle per il server


cd ..
mkdir server
cd server/
mkdir certificates
mkdir requests
mkdir keys

e le directory per l’utente


cd ..
mkdir user
cd user/
mkdir certificates
mkdir requests
mkdir keys

A questo punto, verranno creati i certificati per il lato server nell’apposita cartella

cd ../server/keys

generazione della chiave

openssl genrsa -des3 -out server.KEY

creazione della richiesta du certificato nell’apposita directory


cd ../requests/
openssl req -new -key ../keys/server.KEY -out server.CSR

viene abbinata la richiesta di certificato alla chiave


cd ../certificates/
openssl ca -in ../requests/server.CSR -cert ../../CA/ca.CRT -keyfile ../../CA/ca.KEY -out server.CRT

Creiamo un archivio tar.gz che conservi i permessi e le posizioni in directory dei tre certificati di cui ho bisogno:


cd /var/
tar czpvf certificati.tar.gz CA/server/certificates/server.CRT CA/server/keys/server.KEY CA/CA/ca.CRT
cp certificati.tar.gz /etc/apache2/

Dopo esserci riposizionati nella cartella di Apache 2, scompattiamo il file e collochiamo i certificati rinominando la cartella CA in certs


cd /etc/apache2/
tar -xzf certificati.tar.gz
mv techplusleCA/ certs

Ultimo passo per consentire la verifica del client che stabilisce una connessione sicura via SSL, è la creazione dei certificati per gli utenti

cd /var/CA/user/keys

generazione della chiave

openssl genrsa -des3 -out user.KEY 1024

creazione della richiesta di certificato

cd ../requests/

compilazione della richiesta

openssl req -new -key ../keys/user.KEY -out user.CSR

creazione del certificato ed esportazione per l’utente

combina la richiesta con la certification autority

cd ../certificates/
openssl ca -in ../requests/user.CSR -cert ../../CA/ca.CRT -keyfile ../../CA/ca.KEY -out user.CRT

il certificato va convertito per l’utente in modo che venga accettato dal browser
N.B. durante la creazione non va lasciata la password vuota!

openssl pkcs12 -export -clcerts -in user.CRT -inkey ../keys/user.KEY -out user.P12

Negoziazione di un certificato per aprire una connessione

Il caso più semplice è quello di uno scambio di chiavi simmetriche tramite certificato (che utilizza chivi asimmetriche).

I primi problemi che si presentano al momento in cui si voglia iniziare una connessione sicura sono lo scambio di una chiave che permetta ai due interlocutori (client e server) di comprendersi e il problema del gravoso numero di operazioni che serve a decifrare informazioni criptate con chiavi asimmetriche.

Quando si decide di accettare una connessione sicura con un server, la prima cosa che verrà inviata dal server al client è un certificato pubblico di cui il client dovrà fidarsi. Naturalmente il certificato pubblico del server deve esser stato rilasciato da una CA (la lista delle maggiori CA è già fornita dalla maggior parte dei browser) e può quindi essere confrontato con quello originale detenuto nel database pubblico CA. Fatto ciò il client è sicuro che il certificato appartenga a quel server per cui farà una richiesta di connessione criptata utilizzando la chiave pubblica presente nel certificato e solamente il server in possesso della chiave privata abbinata al certificato sarà in grado di capire il messaggio e di rispondere in modo adeguato al client.

Facendo un piccolo passo indietro, al momento in cui accetta il certificato, il client invia al server in modo criptato una chiave simmetrica criptata secondo la chiave pubblica contenuta nel certificato del server che verrà successivamente usata dai due interlocutori in modo da velocizzare lo scambio di informazioni.

Infine il server con la propria chiave privata decodifica la chiave simmetrica criptata dal client.

In questo modo si è completamente sicuri che la chiave simmetrica non possa essere rubata poiché solo il client che l’ha generata e il server che può codificarla la possiedono.

Questo discorso vale anche alla rovescia: il certificato può essere mandato dal client al server (il client deve però possedere un certificato proprio).

La situazione, in questa seconda opzione, si complica leggermente poiché il server deve possedere un elenco delle CA accettate (quelle che marchiano i certificati dei client) oltre ad una seconda configurazione che deve scremare fra i certificati posseduti dal client quello da lui desiderato.

Tutto ciò è dovuto al fatto per cui un client può possedere più certificati che gli permettono di creare connessioni differenti di tipo SSL con più server mentre nel caso in cui un server mandi il proprio certificato al client non esiste alcuna ambiguità.

Configurazione del VirtualHost di Apache2 per l’uso di SSL

Per far ciò, è succiente aggiungere alcune direttive nella sezione

SSLEngine On
SSLCertificateFile /etc/apache2/certs/server/certificates/server.CRT
SSLCertificateKeyFile /etc/apache2/certs/server/keys/server.KEY
SSLCACertificateFile /etc/apache2/certs/CA/ca.CRT
SSLCACertificatePath /etc/apache2/certs/authCA/
SSLVerifyClient require

Si noti come la direttiva SSLVerifyClient impone l’invio da parte del client di un certificato valido per la connessione.

Revoca di un certificato

Un certificato revocato viene incluso in una lista definita CRL (Certificate Revocation List). La creazione di questa lista avviene tramite questo comando:

cd /var/CA
openssl ca -gencrl -out server.crl

La revoca viene invece affidata al seguente comando:

cd /var/CA
openssl ca -revoke newcerts/certificato_compromesso.pem

Per ottenere il nome del certificato, è possibile consultare il file index.txt nella directory principale della CA. I file pem sono conservati nella sottodirectory newcerts. Una volta revocato un certificato, è necessario ricompilare la CRL, utilizzando lo stesso comando con cui in precedenza l’avevamo creata:

cd /var/CA
openssl ca -gencrl -out server.crl

Configurazione di Apache2 per gestire la revoca di un certificato

Prima di tutto, occorre copiare la CRL all’interno della cartella certs di Apache:

mkdir /etc/apache2/certs/crl
cp /var/CA/server.crl /etc/apache2/certs/crl

Occorre poi modificare la configurazione del virtual host, aggiungendo queste due direttive:

SSLCARevocationFile /etc/apache2/certs/crl/server.crl
SSLCARevocationPath /etc/apache2/certs/crl/

Evitare la richiesta della passphrase del certificato server *

Per rimuovere la richiesta della passphrase durante l’avvio di Apache, è sufficiente procedere così:


cd /var/CA/server/keys
cp server.key server.key.encripted
openssl rsa -in server.key.encripted -out server.key
cp server.key /etc/apache/certs/server/key/server.key
chmod 600 /etc/apache/certs/server/key/server.key

* Dal post Creare e installare un certificato SSL, Apache sicuro con https:// di Michele Menciassi

Feb 03

Innanzitutto è necessario configurare il server per accettare l’autenticazione via RSA, modificando il file di configurazione che si trova in /etc/ssh/sshd_config

nano -w /etc/ssh/sshd_config

In particolare, occorre verificare che siano presenti (e non commentate) la righe:

AuthorizedKeysFile      %h/.ssh/authorized_keys
RhostsRSAAuthentication yes

A questo punto, occorre generae una coppia di chiavi (pubblica e privata) attraverso il tool puttygen scaricabile a questo link. Il tool consente la creazione di una chiave pubblica (chiave.pub) e di una chiave privata (chiave.ppk). La chiave privata dovrà essere necessariamente fornita dal client che vorrà ottenere l’accesso via SSH, mentre la chiave pubblica dovrà essere installata nel server a cui si vorrà accedere.

Una volta dunque copiata la chiave pubblica nel server, occorre convertirla in formato openssh attraverso questa istruzione

ssh-keygen -if chiave.pub > chiave.openssh

La chiave così ottenuta andrà aggiunta al file .ssh/authorized_keys e .ssh/authorized_keys2 nella cartella home dell’utente con cui si vuole accedere al server (~/.ssh/authorized_keys e ~/.ssh/authorized_keys2) in questo modo

cat chiave.openssh >> /root/.ssh/authorized_keys
cat chiave.openssh >> /root/.ssh/authorized_keys2

Dopo aver riavviato il servizio server ssh attraverso il comando

/etc/init.d/ssh restart

sarà possibile accedere al server utilizzando la chiave privata chiave.ppk e immettendo la sola username.

Un ulteriore sicurezza consiste nel disabilitare il login con password, modificando il file /etc/ssh/sshd_config in questo modo

PasswordAuthentication no

Sep 18

Per montare directory remote rese disponibili da un server via NFS (Network File System) è sufficiente usare il comando mount con la seguente sintassi:

mount servernfs:/directory_condivisa /mnt/punto_di_mount

Per ottenerne il mount a boot time, è sufficiente editare il file /etc/fstab nello stesso modo in cui verrebbero montati i file system locali. La sola differenza è che il tipo di file system va settato su nfs, mentre i valori dump e fsck order vanno settati a 0:

nano -w /etc/fstab
#device       mountpoint     fs-type     options      dump fsckorder
servernfs:/directory_condivisa /mnt/punto_di_mount    nfs          rw            0    0

Jul 16

Articolo di Emiliano Genghini, pubblicato su ubuntu-forum

L’idea e’ quella di creare un RAID-1 degradato con il disco “nuovo” ed uno “missing”(mancante), copiarci il sistema presente sul disco di partenza ed avviarlo. Successivamente se l’array e’ stato caricato correttamente, ricostruirlo aggiungendoci il nostro disco di partenza.

N.B. L’howto usa come nomi delle devices sda(sistema) e sdb(nuovo)

1 Installazione di MDADM

$sudo su
apt-get install mdadm

2. Copia delle partizioni dal disco di sistema (sda) al disco di mirror nuovo (sdb). Modifica della partizione del disco di destinazione in “Linux Raid Autodetec”


sfdisk -d /dev/sda | sfdisk /dev/sdb
sfdisk --change-id /dev/sdb 1 fd

3. Creazione dell’array in RAID-1 con un disco mancante e il nuovo disco (sdb)


mdadm --zero-superblock /dev/sdb1
mdadm -C /dev/md0 -l1 -n2 missing /dev/sdb1

4. Creazione del filesystem per la nuova device e aggiornamento della configurazione di mdadm


mkfs.ext3 /dev/md0
mdadm --examine --scan >> /etc/mdadm/mdadm.conf

5. Editare il file /etc/fstab

gedit /etc/fstab # /etc/fstab: static file system information.

proc /proc proc defaults 0 0
# /dev/sda1
UUID=5b918ade-f914-4376-b54c-87614c71c7c4 / ext3 defaults,errors=remount-ro 0 1
# /dev/sda5
UUID=043bf781-ae6e-4de5-b50f-8aa28525d8c9 none swap sw 0 0
/dev/scd0 /media/cdrom0 udf,iso9660 ro,user,noauto 0 0
/dev/fd0 /media/floppy0 auto rw,user,noauto 0 0
# /dev/sda1
UUID=ecb6c120-e475-40c4-9ce4-6c2a81b7b495 /boot ext3 defaults 0 2)

6 Sostituire i riferimenti al disco di sistema (sda1, sda2) con i riferimenti all’array /dev/md0. Nel caso siano definite da UUID, eliminarli e usare /dev/md


# /etc/fstab: static file system information.
#
#
proc /proc proc defaults 0 0
/dev/md0 / ext3 defaults,errors=remount-ro 0 1
# /dev/sda5
UUID=043bf781-ae6e-4de5-b50f-8aa28525d8c9 none swap sw 0 0 //non ho toccato ne' swap
/dev/scd0 /media/cdrom0 udf,iso9660 ro,user,noauto 0 0 //ne' periferiche
/dev/fd0 /media/floppy0 auto rw,user,noauto 0 0
/dev/md0 /boot ext3 defaults 0 2
/dev/md1 / ext3 defaults,errors=remount-ro 0 1

7. La stessa cosa per il file /etc/mtab (cambiare /dev/sda1 in /dev/md0 ecc..)


gedit /etc/mtab

8. Configurare il boot loader in moda da partire dall’array appena creato (disco 1)


gedit /boot/grub/menu.lst

Localizzare:


title Ubuntu, kernel 2.6.22-14-generic
root (hd0,0)
kernel /boot/vmlinuz-2.6.22-14-generic root=UUID=3dac90fe-82d5-4a98-b577-af104a084e0d
ro quiet splash
initrd /boot/initrd.img-2.6.22-14-generic
quiet
savedefault

e modificare in:


title Ubuntu, kernel 2.6.22-14-generic
root (hd1,0)
kernel /boot/vmlinuz-2.6.22-14-generic root=/dev/md0
ro quiet splash
initrd /boot/initrd.img-2.6.22-14-generic
quiet
savedefault

9. A questo punto, aggiornare l’immagine del kernel


update-initramfs -u

10. Procedere con la copia dei dati dal disco originale di sistema


mount /dev/md0 /mnt
cp -dpRx / /mnt
umount /mnt

Come al solito in presenza di altre partizioni ripetere i passaggi anche per quelle, chiaramente modificando i nomi mdX in riferimento a fstab.

11. Setup di Grub per l’avvio dal disco 1


grub
root (hd1,0)
setup(hd1)
quit

12. Riavviare il sistema. Quindi, verifichiamo che tutto sia andato bene:


cat /proc/cmdline //se tutto e' andato bene root=/dev/md0 ...o md1 insomma l'array
cat /proc/mdstat

L’ultimo comando, dovrebbe restituire lo stato del raid (1 periferica assente) [2/1][_U].
A questo punto, eliminamo i dati dal disco di sistema, in quanto copiati nel raid, e aggiungiamo il disco ex-sistema al raid.


sfdisk --change-id /dev/sda 1 fd
mdadm -a /dev/md0 /dev/sda1
cat /proc/mdstat

L’ultimo comando dovrà indicare il resync delle periferiche.

Apr 09

E’ possibile attraverso un ACL esterna su Squid, verificare l’appartenenza dell’utente che sta richiedendo una pagina ad un determinato gruppo di AD.

Modificare il file /etc/squid/squid.conf e aggiungere queste due righe:

external_acl_type nt_group %LOGIN /usr/lib/squid/wbinfo_group.pl
acl utenti_ok external nt_group UtentiProxy

La prima definisce una nuova tipologia di ACL esterna, chiamata nt_group che si appoggerà allo script /usr/lib/squid/wbinfo_group.pl. La seconda definisce l’ACL vera e propria, che si chiamerà utenti_ok di tipo nt_group, e che andrà a verificare l’appartenenza o meno dell’utente al gruppo UtentiProxy. Questa ACL poi potrà essere utilizzata in allow o in deny con la direttiva http_access:


http_access allow utenti_ok

Lo script wbinfo_group.pl presente di default nell’installazione di Squid su Debian Etch, non funziona correttamente se il sepatore impostato in winbind è diverso dalla \ (normalmente, è il +). Per questo, è necessario modificare il file di configurazione di Samba /etc/samba/smb.conf impostando winbind separator = \/. Dopo aver apportato questa modifica, è necessario controllare le share definite sempre nello stesso file di configurazione di Samba sostituendo dove c’è il +, la \.

Jan 22

ADODB non è altro che una libreria per DBMS che consente di assicurare la portabilità delle applicazioni web in PHP.  ADODB sta per Active Data Objects DataBase e attualmente supporta MySQL, PostgreSQL, Oracle, Interbase, Microsoft SQL SERVER, Access, FoxPro, Sybase, ODBC ed ADO.  Il sito del progetto è adodb.sourceforge.net.

L’installazione in Debian Etch è relativamente facile:

apt-get install libphp-adodb

Una volta installato, è sufficiente editare il file php.ini in /etc/php5/apache2/php.ini aggiungendo a include_path il path delle librerie ADODB:

nano -w /etc/php5/apache2/php.ini
include_path = /usr/share/php/adodb

Infine, è necessario riavviare Apache2

/etc/init.d/apache2 restart

Jan 14

Per abilitare https su Apache 2.2 (installato in Debian Etch), è sufficiente generare il certificato attraverso il comando make-ssl-cert contenuto nel pacchetto ssl-cert:


apt-get install ssl-cert
/usr/sbin/make-ssl-cert /usr/share/ssl-cert/ssleay.cnf /etc/apache2/ssl/apache.pem

L’utility di creazione del certificato chiederà alcuni dati, come lo stato, la validità, l’ente, ecc..
Al termine del wizard, il file del certificato è stato creato in /etc/apache2/ssl/ e nominato apache.pem

A questo punto, è sufficiente creare un nuovo sito o editare un sito esistente in /etc/apache2/site-avaible, aggiungere la porta 443 e le direttive SSLEngine On e SSLCertificateFile.


NameVirtualHost *:443

<VirtualHost *:443>
SSLEngine On
SSLCertificateFile /etc/apache2/ssl/apache.pem
...
</VirtualHost>

In /etc/apache2/ports.conf va aggiunta la porta 443 (https) alle porte su cui Apache è in ascolto:


Listen 443

Infine, va abilitata la modalità SSL e riavviato Apache

sudo a2enmod ssl
/etc/init.d/apache2 restart

Oct 25

Per il corretto funzionamento di VoiceOne dopo l’installazione di Asterisk da sorgenti, è necessario installare i pacchetti zip, unzip, mpg123 con il seguente comando:


apt-get install zip unzip mpg123

Inoltre, per una corretta gestione della musica d’attesa, è necessario procedere alla creazione manuale di alcune cartelle che non vengono automaticamente create ne dal setup di Asterisk (da sorgenti) ne da quello di VoiceOne:


cd /var/lib/asterisk/mohmp3
mkdir voiceone
mkdir voiceone/default
cd /var/lib/asterisk
mkdir voiceon
mkdir voiceone/default

A questo punto, la gestione della musica d’attesa dall’interfaccia web non dovrebbe più presentare l’errore PHP Warning: Invalid argument supplied for foreach() in /var/www/html/voiceone/settings/moh/edit/index.php on line 48, così come non dovrebbe più dare problemi la gestione dei plugin.

Oct 24

1. Creare un database che verrà utilizzato da VoiceOne (e da Asterisk) per la gestione delle impostazioni

mysqladmin create voiceone

2. Aggiungere questa riga al file /etc/sudoers:


www-data ALL=NOPASSWD: /var/www/voiceone_webservices/config/script/vo-tools.sh

Il file /etc/sudoers esiste se sudo è installato. Per installarlo su Debian, :

apt-get install sudo

Da notare che www-data è l’utente con cui gira Apache, per cui se Apache è in esecuzione con un altro utente, è necessario modificare la riga appena inserita. Inoltre, il percorso alla document root di VoiceOne va impostata sul percorso in cui sarà installato voiceone e voiceone_webservices.

3. Aggiungere le seguenti righe al file /etc/asterisk/modules.conf nella sezione moduli:

preload => res_config_mysql.so

4. Modificare la sezione setting del file /etc/asterisk/extconfig.conf aggiungendo o modificando queste righe:


agents.conf => mysql,voiceone,ast_config
extensions.conf => mysql,voiceone,ast_config
features.conf => mysql,voiceone,ast_config
iax.conf => mysql,voiceone,ast_config
meetme.conf => mysql,voiceone,ast_config
misdn.conf => mysql,voiceone,ast_config
musiconhold.conf => mysql,voiceone,ast_config
queues.conf => mysql,voiceone,ast_config
sip.conf => mysql,voiceone,ast_config
zapata.conf => mysql,voiceone,ast_config
iaxusers => mysql,voiceone,iax_buddies
iaxpeers => mysql,voiceone,iax_buddies
sipusers => mysql,voiceone,sip_buddies
sippeers => mysql,voiceone,sip_buddies
voicemail => mysql,voiceone,voicemail_users
extensions => mysql,voiceone,extensions_table

5. Creare il file /etc/asterisk/res_mysql.conf


[general]
dbhost = localhost
dbname = voiceone
dbuser = root
dbpass = voiceone
dbport = 3306
dbsock = /var/lib/mysql/mysql.sock

I parametri vanno personalizzati per concedere l’accesso al database mySql creato al punto 1

6. Creare il file /etc/asterisk/cdr_mysql.conf:


[global]
hostname=localhost
dbname=voiceone
table=cdr
user=root
password=voiceone
port=3306
sock=/var/lib/mysql/mysql.sock
userfield=1

I parametri vanno personalizzati per concedere l’accesso al database mySql creato al punto 1

7. Modificare il file /etc/asterisk/manager.conf:


[general]
enabled=yes

[admin]
secret=qwerty_123_mnbvc
deny=0.0.0.0/0.0.0.0
permit=127.0.0.1/255.255.255.0
read=system,call,log,verbose,command,agent,user
write=system,call,log,verbose,command,agent,user

8. Scaricare e decomprimere l’ultima release di VoiceOne reperibile all’indirizzo nella document root di Apache. Verranno create due cartelle, voiceone/ e voiceone_webservice/

9. Rinominare sia il file config.inc.php.default in DOCUMENT_ROOT/voiceone/admin/config che il file DOCUMENT_ROOT/voiceone_webservices/config in config.inc.php

10. Modificare il file DOCUMENT_ROOT/voiceone/admin/config/config.inc.php (E’ consigliato settare il parametro $soapHostname con l’indirizzo IP invece di localhost)

11. Modificare il file DOCUMENT_ROOT/voiceone_webservices/config/config.inc.php

12. Modificare il file DOCUMENT_ROOT/voiceone_webservices/config/script/vo-tools.sh e inserire il percorso assoluto allo script nella variabile VOCFGDIR

13. Verificare il percorso specificato nel file DOCUMENT_ROOT/voiceone_webservices/config/script/vo.cfg

14. Riavviare Apache

15. Aprire da un browser l’indirizzo http://mioserver/voiceone/setup.php e seguire le istruzioni presentate

Traduzione dell’articolo VoiceOne: Quick Install Guide reperibile sul sito http://docs.voiceone.it/