phpIPAM è un’applicazione di gestione IP address open source.
Il suo obiettivo è quello di fornire una gestione degli Indirizzi IP semplice e snella.
È un’applicazione basata su php con il backend su database MySQL, utilizzando le librerie jQuery e le funzioni ajax e HTML5/CSS3
PRE-REQUISITI
Server con installato Ubuntu Server 16.04 64-bit
INSTALLAZIONE DEL DATABASE MARIADB
Accedere al server con l’ account locale e lanciare il comando:
0 |
sudo su |
Aggiornare apt-get eseguendo il comando:
0 |
apt-get update |
Una volta completato l’aggiornamento, passare all’installaziojne e configurazione del database MySQL.
Per installare MariaDB, eseguire quanto segue:
0 |
apt-get -y install mariadb-server mariadb-client wget |
Quando i componenti hanno terminato l’installazione, possiamo impostare una password di root per MariaDB inserendo con il comando
0 |
mysql_secure_installation |
Rispondere alle domande come di seguito:
Set root password? [Y/n] Y (inseriamo quindi la password dell’utente root del database)
Remove anonymous users? [Y/n] Y
Disallow root login remotely? [Y/n] N
Remove test database and access to it? [Y/n] Y
Reload privilege tables now? [Y/n] Y
Se è tutto corretto dovremmo ricevere questo messaggio
All done! If you’ve completed all of the above steps, your MariaDB
installation should now be secure.
Thanks for using MariaDB!
Per provare se è tutto OK lanciamo il comando:
0 |
mysql -u root -p |
Inseriamo la password dell’utente di root del database
Per uscire scriviamo quit quindi INVIO
INSTALLAZIONE DI APACHE WEB SERVER
per lanciare l’installazione di Apache eseguire il comando:
0 |
apt-get -y install apache2 |
Se l’installazione è andata a buon fine richiamando il link http:\\IP_SERVER dovrebbe apparire la Home page di Apache come mostrato nell’immagine sovrastante
INSTALLAZIONE DEL PHP
Procediamo con l’installazione del PHP con il comando:
0 |
apt-get -y install php7.0 libapache2-mod-php7.0 |
per applicare le modifiche riavviamo Apache con il comando:
0 |
systemctl restart apache2 |
Per testare se il PHP è installato correttamente creiamo il file info.php con il comando:
0 |
nano /var/www/html/info.php |
All’interno del file inseriamo il codice seguente:
0 1 2 3 4 |
<?php phpinfo(); ?> |
Chiudiamo e salviamo il file info.php
Cambiamo l’owner del file con il comando:
0 |
chown www-data:www-data /var/www/html/info.php |
Richiamare il link http:\\IP_SERVER\info.php
Se è tutto corretto dovremmo vedere una schermata come quella sovrastante
INSTALLAZIONE DEI MODULI PHP
Verificare i moduli disponibili php7.0 con il comando:
0 |
apt-cache search php7.0 |
Installare i moduli php necessari a phpIPAM con il comando:
0 |
apt-get -y install php7.0-cli php7.0-curl php7.0-gmp php7.0-json php7.0-ldap php7.0-mcrypt php7.0-mysql php7.0-xml php-pear |
Riavviamo Apache per applicare le modifiche con il comando:
0 |
systemctl restart apache2 |
Adesso se proviamo a richiamare http:\\IP_SERVER\info.php noteremo l’aggiunta di tutti i moduli appena installati
Dovremmo vedere una schermata come quella sovrastante
Procediamo all’aggiunta di alcuni moduli alla configurazione PHP per renderlo più veloce tramite APCU e aggiungere il supporto per PHPMyAdmin e SSL.
Installiamo il modulo APCU con il comando:
0 |
apt-get -y install php-apcu |
Riavviamo Apache per applicare le modifiche con il comando:
0 |
systemctl restart apache2 |
Se proviamo a richiamare http:\\IP_SERVER\info.php noteremo l’aggiunta del modulo APCU
Dovremmo vedere una schermata come quella sovrastante
A questo punto possiamo rimuovere il file php.info con il comando
0 |
rm -f /var/www/html/info.php |
CONFIGURAZIONE DELLA CONNESSIONE SSL SU APACHE
Abilitare SSL in modo da accedere ad Apche in HTTPS lanciando i comandi:
0 1 2 |
a2enmod ssl a2ensite default-ssl |
Riavviamo Apache per applicare le modifiche con il comando:
0 |
systemctl restart apache2 |
A questo punto sarà possibile richiamare il web server Apache in HTTPS
Questo è il classico Errore del Certificato non riconosciuto
Come si può notare adesso la Home Page di Apache è in HTTPS
INSTALLAZIONE DI PHPMYADMIN
Procedere quindi all’installazione del PHPMyAdmin per le gestione grafica del database con il comando:
0 |
apt-get -y install phpmyadmin php-mbstring php-gettext |
Selezioniamo Apache e clicchiamo OK
Selezionare Yes
Inserire la password per MySQL di phpmyadmin quindi OK
Reinserire la password e cliccare OK
A breve avremo bisogno di abilitare esplicitamente “crypt” e “mbstring” o la pagina web non verrà caricata correttamente.
Effettuare questa operazione eseguendo i comandi:
0 1 |
phpenmod mcrypt phpenmod mbstring |
Riavviamo Apache per applicare le modifiche con il comando:
0 |
systemctl restart apache2 |
Lanciamo il comando finale per terminare l’installazione:
0 |
echo "update user set plugin='' where User='root'; flush privileges;" | mysql --defaults-file=/etc/mysql/debian.cnf mysql |
A questo punto per testare che sia tutto OK richiamare la pagina web http://IP_SERVER/phpmyadmin oppure in SSL la pagina web https://IP_SERVER/phpmyadmin
Per accedere basterà inserire l’utenza root e la password creata in fase di configurazione del database MariaDB
Dovremmo vedere una schermata come quella sovrastante se è tutto OK
INSTALLAZIONE DI PHPIPAM
Procediamo con il download del pacchetto di installazione di phpipam.
Posizioniamoci nella cartella temporanea con il comando:
0 |
cd /tmp |
Lanciare il comando per procedere al download del pacchetto aggiornato di phpipam (quando ho redatto la guida la versione ultima era la 1.3)
0 |
wget https://sourceforge.net/projects/phpipam/files/phpipam-1.3.tar |
NOTA BENE: per verificare qual’è l’utlima versione disponibile del software phpipam andare al seguente link https://sourceforge.net/projects/phpipam/files/
Estrarre il file appena scaricato nella directory del web server con il comando:
0 |
tar -xvf phpipam-1.3.tar -C /var/www/html |
I files sono stati estratti nella cartella /var/www/html/phpipam.
Ora dobbiamo editare il file di configurazione config.php presente in questa directory.
Prima di modificare il file facciamo una copia di sicurezza con il comando:
0 |
cp /var/www/html/phpipam/config.dist.php /var/www/html/phpipam/config.php |
Aprire il file config.php con il comando:
0 |
nano /var/www/html/phpipam/config.php |
Di Default abbiamo i parametri evdienziati nell’immagine sovrastante
0 1 2 3 4 |
$db['host'] = 'localhost'; $db['user'] = 'phpipam'; $db['pass'] = 'INSERIRE LA NOSTRA PASSWORD'; $db['name'] = 'phpipam'; $db['port'] = 3306; |
Al posto di INSERIRE LA NOSTRA PASSWORD inseriamo una password a nostro piacimento
Sempre all’interno dello stesso file cerchiamo la riga if(!defined(‘BASE’))
Quindi al posto di
0 1 |
if(!defined('BASE')) define('BASE', "/"); |
Inseriamo le seguenti righe di codice
0 1 |
if(!defined('BASE')) define('BASE', "/phpipam/"); |
Se è tutto corretto dovremmo vedere una schermata come quella sovrastante
Salvare e chiudere il file di configurazione
Procediamo alla modifica del file .htaccess con il comando:
0 |
nano /var/www/html/phpipam/.htaccess |
Di default dovremmo avere la riga # RewriteBase / commentata come mostrato in figura
Modificare la riga decommentandola e aggiungendo il parametro RewriteBase /phpipam/ (vedi figura sovrastante)
Adesso editiamo il file di configurazione di Apache, 000-default.conf con il comando:
0 |
nano /etc/apache2/sites-available/000-default.conf |
Di Default il file di configurazione dovrebbe essere come mostrato nell’immagine sovrastante
Aggiungere le seguenti righe prima di salvare e uscire dal file.
Ciò consente inoltre di abilitare “Prettify Links” durante l’utilizzo di una connessione HTTP.
0 1 2 3 4 5 6 7 |
<Directory "/var/www/html"> Options FollowSymLinks AllowOverride all Require all granted Order allow,deny Allow from all </Directory > |
Il file modificato dovrebbe essere come mostrato nell’immagine sovrastante
Salvare e chiudere il file
Se si desidera abilitare “Prettify Links” durante l’utilizzo di una connessione HTTPS, è necessario modificare anche il file default-ssl.conf con il comando:
0 |
nano /etc/apache2/sites-available/default-ssl.conf |
Posizionarsi alla riga <Directory /usr/lib/cgi-bin>
Sostituire le righe
0 1 2 |
<Directory /usr/lib/cgi-bin> SSLOptions +StdEnvVars </Directory> |
con le righe
0 1 2 3 4 5 6 7 |
<Directory "/var/www/html"> Options FollowSymLinks AllowOverride all Require all granted Order allow,deny Allow from all SSLOptions +StdEnvVars </Directory> |
Dovremmo vedere un immagine come quella sovrastante
Salvare e chiudere il file di configurazione
Prima di riavviare il servizio Apache abilitare “mod_rewrite” lanciando il comando:
0 |
a2enmod rewrite |
Riavviamo Apache per applicare le modifiche con il comando:
0 |
systemctl restart apache2 |
Se è stato fatto tutto correttamante richiamando il link http://IP_SERVER/phpipam oppure in SSL https://IP_SERVER/phpipam dovremmo visualizzare la pagina di configurazione di phpipam
CONFIGURAZIONE DI PHPIPAM
Clicchiamo su New phpipam installation
Cliccare su Automatic database installation
Inserire lo username root e la password settata in precedenza quindi cliccare su Install phpipam database
Se è tutto OK dovremmo ricevere il messaggio Database Installed successfully (vedi figura sovrastante)
Cliccare Continue per proseguire
Inserire la password dell’Utente Admin
Inserire un titolo da dare al sito (Test IPAM Management)
Inserire la URL del sito (http://testipam.prv)
Cliccare Save Setting per confermare le modifiche
Se è tutto OK dovremmo ricevere il messaggio Settings updated, installation complete! (vedi figura sovrastante)
Cliccare Proceed to login per continuare
A questo punto per accedere al portale inserire le credenziali di accesso:
USER: Admin
PASSWORD: settata in precedenza (poco fa…)
CONFIGURAZIONE SCHEDULAZIONE MONITORAGGIO CON CRON JOB
Se si desidera controllare lo stato eseguendo un ping, oppure risolvere gli indirizzi IP e aggiungere la possibilità di eseguire la scansione automatica di nuovi host per aggiungere automaticamente a phpIPAM ogni 30 minuti, è necessario aggiungere il seguente cron job
Lanciare il comando
0 |
crontab -e |
Premere INVIO
Quindi inserire quanto segue alla fine del file …
0 1 2 3 4 |
*/30 * * * * /usr/bin/php -c /etc/php/7.0/cli/php.ini /var/www/html/phpipam/functions/scripts/pingCheck.php */30 * * * * /usr/bin/php -c /etc/php/7.0/cli/php.ini /var/www/html/phpipam/functions/scripts/resolveIPaddresses.php */30 * * * * /usr/bin/php -c /etc/php/7.0/cli/php.ini /var/www/html/phpipam/functions/scripts/discoveryCheck.php |
Se invece desideriamo fare lo scan ogni giorno alle ore 10.00 basta inserire la seguente riga
0 |
0 10 * * * /usr/bin/php -c /etc/php/7.0/cli/php.ini /var/www/html/phpipam/functions/scripts/discoveryCheck.php |
Se è tutto ok dovremmo vedere una schermata come quella sovrastante
Salvare il file e chiuderlo
CONFIGURAZIONE PER FORZARE LA CONNESSIONE IN HTTPS
Se si desidera forzare phpIPAM per utilizzare sempre HTTPS, modificare nuovamente il file .htaccess:
0 |
nano /var/www/html/phpipam/.htaccess |
Inserire quindi le seguenti righe
0 1 2 |
RewriteCond %{HTTPS} !=on RewriteRule ^/?(.*) https://%{SERVER_NAME}/$1 [R,L] |
Dovremmo inserire le due righe come mostrato nell’immagine sovrastante
Salvare e chiudere il file di configurazione
CONFIGURAZIONE AUTENTICAZIONE ACTIVE DIRECTORY
Tra le varie opzioni di autenticazione al server phpipam c’è la possibilità di integrare il tutto con Active Directory.
Per configurare l’autenticazione con Active Directory seguire gli step elencati.
Aprire il back-end amministrativo del phpipam via web
Selezionare l’opzione Authentication methods
Cliccare su Create New quindi selezioniamo Create new AD authentication
Inserire tutti i parametri richiesti:
Description : Inseriamo un nome a piacere che identifichi la connessione
Domain controllers: Inserire il nome FQDN del domain controller (se ne volgiamo inserire più di uno basta separarli col 😉
Base DN: Inserire il DN della OU dove si trovano le utenze da cenzire in phpipam
Account suffix: Inserire il suffisso del dominio
Use SSL: di default non viene usata l’SSL in Active Directory
Use TLS: di default non viene usata l’SSL in Active Directory
AD port: Lasciare invariato il valore 389 (è la porta di Default di Acitve Directory)
Domain account: Inserire user e password di un account utente presente all’interno del dominio per poter sfogliare l’AD (NOTA BENE: converrebbe creare un utenza di servizio in modo da settare nessuna scadenza della password)
Al termine cliccare eu Edit
Per verificare che la configurazione sia andata a buon fine cliccare su Verify Connection come mostrato in figura sovrastante (l’icona con il lampo)
Se la configurazione è corretta dovremmo vedere un pop-up come mostrato nella figura sovrastante
A questo punto sempre dal back-end di phpipam andare nella sezione Users
Cliccare su Create user
Inserire tutte le informazioni relative all’utente
Nel campo Username inserire la logonid dell’utente oppure cliccare sul tasto Cerca per cercarlo direttamante da Active Directory
Impostare come Authentication Method l’AD authentication impostato in precedenza
A questo punto possiamo autenticarci sul server phpipam tramite le credenziali di dominio.
SCHEDULAZIONE BACKUP DATABASE
Si noti che il metodo riportato di seguito non è sicuro perché espone la password utente phpipam MySQL all’interno del cron.
Viene inserito nel file crontab dell’utente di root e converrebbe dedicare il server solo al phpipam
Lanciare il comando
0 |
sudo crontab -e |
Aggiungere alla fine del file crontab le seguenti righe per eseguire il backup ogni giorno della tabella del database phpIPAM e mantenere solo i backup degli utlimi 7 giorni:
0 1 2 |
Backup IP address table, remove backups older than 7 days @daily /usr/bin/mysqldump -u phpipam -PASSWORD-PHPIPAM phpipam > /var/www/phpipam/db/bkp/phpipam_bkp_$(date +"\%y\%m\%d").db @daily /usr/bin/find /var/www/phpipam/db/bkp/ -ctime +7 -exec rm {} \; |
Salvare il file e chiuderlo.
Ciao, volevo farti complimenti per i vari articoli relativi a PHPIPAM, io lo sto usando da qualche settimana e non ho avuto problemi per l’autenticazione usando come metodo AD, ma sono giorni che provo ad utilizzare l’autenticazione con APACHE senza cavare un ragno dal buco, non sono riuscito a trovare niente di interessante nemmeno sul sito phpipam.net , non si capisce per esempio se l’autenticazione prevede l;utilizzo di auth_basic,/auth_digest o se sia possibile trmite mod_ssl ottenere un autenticazione su certificato
Ti ringrazio in anticipo per qualsiasi delucidazione