¿QUÉ ES phpIPAM?
phpIPAM es una herramienta de gestión de direcciones IP (IP Address Management o IPAM) basada en PHP. Está diseñada para ayudar a los administradores de red a planificar, rastrear y gestionar direcciones IP en sus redes. A continuación, os doy una descripción más detallada de la tool:
Características Principales de phpIPAM:
- Gestión de Direcciones IP:
- Permite la administración de rangos de direcciones IP (subnets) y direcciones individuales.
- Soporta tanto IPv4 como IPv6.
- Ofrece funcionalidades como el escaneo de subredes para detectar direcciones IP libres o utilizadas.
- Interfaz Web Amigable:
- phpIPAM se gestiona a través de una interfaz web intuitiva, lo que facilita el acceso y la gestión de las direcciones IP desde cualquier dispositivo con acceso a la red.
- Integración con Otras Herramientas:
- Se puede integrar con otras herramientas de red y sistemas, como servidores DHCP y DNS, para una gestión más centralizada y automatizada.
- Soporta APIs RESTful para facilitar la automatización y la integración con otros sistemas.
- Control de Acceso y Auditoría:
- Permite definir roles de usuario con diferentes niveles de acceso, lo que es útil en entornos con múltiples administradores.
- Incluye funcionalidades de auditoría para registrar quién realizó cambios y cuándo, lo que es crucial para la seguridad y el cumplimiento normativo.
- Soporte para VRFs (Virtual Routing and Forwarding):
- Gestiona direcciones IP en entornos con múltiples VRFs, lo que es común en redes avanzadas y complejas.
- Automatización:
- Facilita tareas repetitivas, como la asignación de nuevas direcciones IP, lo que ayuda a reducir errores humanos y mejorar la eficiencia operativa.
- Documentación y Mapas de Red:
- Ofrece herramientas para documentar la infraestructura de red, incluyendo gráficos que visualizan la estructura de la red y sus subredes.
Usos Comunes:
- Empresas y Proveedores de Servicios: phpIPAM es utilizado por organizaciones que manejan grandes redes IP, como proveedores de servicios de internet (ISP), centros de datos, y grandes empresas con redes corporativas complejas.
- Automatización de Redes: Es útil para automatizar tareas relacionadas con la gestión de IP en redes dinámicas, donde las asignaciones de IP pueden cambiar frecuentemente.
- Seguridad y Cumplimiento: Al llevar un control detallado de las asignaciones de IP y los cambios realizados, phpIPAM ayuda a las organizaciones a cumplir con las normativas de seguridad.
Web Oficial: https://phpipam.net/
phpIPAM facilita la administración de la infraestructura de red
1.- ELEMENTOS NECESARIOS PARA ESTE TUTORIAL
- Un PC con GNU/Linux ó sistema basado en paquetes *.deb
- Internet (recomendado)
2.- DESCARGAR phpIPAM
La forma más sencilla de descargar phpIPAM es a través de GitHub. Para ello, deberemos ejecutar el siguiente comando son sudo:
raul@debian:~$ sudo git clone https://github.com/phpipam/phpipam.git /var/www/phpipam/
Cuando ejecutamos este comando, veremos que todos los ficheros, son descargados al directorio /var/www/phpipam/:
Descarga de phpIPAM desde GitHub
Una vez hemos descargado phpIPAM en el directorio /var/www/phpipam, entraremos en dicho directorio y comprobaremos las ramas remotas disponibles que hay en el repositorio de github. Para ello ejecutaremos:
raul@debian:~$ cd /var/www/phpipam/
raul@debian:/var/www/phpipam$ sudo git branch -r
En la siguiente imagen, podemos ver una serie de ramas, y la que nos interesa en nuestro caso es la última version, es decir, la rama origin/1.6.
Ramas del repositorio
Una vez sabemos la última rama disponible, haremos un checkout a dicha rama con el siguiente comando:
raul@debian:/var/www/phpipam$ sudo git checkout -b 1.6 origin/1.6
Si el checkout funciona correctamente (no debería haber problemas), veremos unos mensajes similares a los siguientes:
Checkout a la rama
Los servidores Web en GNU/Linux Debian o similares, corren bajo el usuario www-data y grupo www-data. Por tanto, cambiaremos los permisos de todos los ficheros y directorios para que el usuario y grupo sea www-data y además, nos aseguraremos que todos los ficheros y directorios tienen los permios correctos. Ejecutaremos los 3 comandos siguientes:
raul@debian:/var/www/phpipam$ sudo chown -R www-data:www-data /var/www/phpipam
raul@debian:/var/www/phpipam$ sudo find /var/www/phpipam -type f \-exec chmod 644 {} \;
raul@debian:/var/www/phpipam$ sudo find /var/www/phpipam -type d \-exec chmod 755 {} \;
La ejecución de los 3 comandos no debería mostrar ningún error como puede verse en la siguiente imagen:
Corrección de permisos
3.- CONFIGURACIÓN INICIAL
Antes de comenzar la instalación de phpIPAM, deberemos configurar la configuración de acceso a la base de datos que permite a phpIPAM guardar los datos y acceder a ellos.
El primer paso será copiar el fichero "plantilla" config.dist.php a config.php con el siguiente comando:
raul@debian:/var/www/phpipam$ sudo cp config.dist.php config.php
Ajustaremos los datos de nuestra base de datos según la configuración que tengamos. En este ejemplo, vamos a instalar el SGDB posteriormente y vamos a configurar la base de datos con los datos que ya tenemos en el fichero config.php. No es la configuración más segura, por lo que os recomiendo usar contraseñas seguras:
$db['host'] = "127.0.0.1";
$db['user'] = "phpipam";
$db['pass'] = "phpipamadmin";
$db['name'] = "phpipam";
$db['port'] = 3306;
Además, si hemos extraído phpIPAm en un directorio que no sea el root folder del servidor web, deberemos añadir una línea como la siguiente, donde "phpipam" es el nombre del directorio donde tenemos phpIPAM:
define('BASE', "/phpipam/");
Por tanto, el fichero config.php deberemos configurarlo y que quede de la siguiente forma:
/**
* database connection details
******************************/
$ db ['host'] = '127.0.0.1';
$ db ['user'] = 'phpipam';
$ db ['pass'] = 'phpipamadmin';
$ db ['name'] = 'phpipam';
$ db ['port'] = 3306;
/**
* Path to phpIPAM
******************************/
if(!defined('BASE'))
define('BASE', "/phpipam/");
En la siguiente imagen se puede ver cómo queda el fichero config.php para una configuración estándar:
Fichero config.php
4.- INSTALAR Y CONFIGURAR SGDB MARIADB
El siguiente paso es configurar la base de datos. En caso de que no tengamos instalado el SGDB de MariaDB, deberemos instalarlo previamente con el comando que os muestro a continuación:
raul@debian:~$ sudo apt-get install mariadb-server mariadb-client
A continuación, se ve el comando de instalación:
Instalando el SGBD MariaDB
Una vez instalado el SGDB, deberemos configurar su contraseña de administrador ejecutando el asistente siguiente y siguiendo las preguntas que nos va haciendo:
raul@debian:~$ sudo mysql_secure_installation
El siguiente paso será crear la base de datos a la que llamaremos "phpipam" y le daremos permisos al usuario "phpipam" sobre esa base de datos y con la contraseña "phpipamadmin":
MariaDB [(none)]> CREATE DATABASE phpipam;
MariaDB [(none)]> GRANT ALL ON phpipam.* TO 'phpipam'@'localhost' IDENTIFIED BY 'phpipamadmin';
MariaDB [(none)]> FLUSH PRIVILEGES;
MariaDB [(none)]> QUIT;
La ejecución de los comandos anteriores no debe mostrar ningún error:
Creación de la base de datos
Una vez tenemos la base de datos creada y el usuario creado, importaremos el esquema de la base de datos con el comando:
raul@debian:~$ mysql -u phpipam -p phpipam < /var/www/phpipam/db/SCHEMA.sql
5.- INSTALACIÓN Y CONFIGURACIÓN DEL SERVIDOR WEB NGINX
Si no tenéis instalado Nginx, os recomiendo utilizar el siguiente comando donde se instalará Nginx y algunos otros paquetes extras que se necesitan. Ejecutad el siguiente comando:
raul@debian:~$ sudo apt install nginx-full php-fpm php-curl php-mysql php-curl php-gd php-intl php-pear \
php-imap php-apcu php-pspell php-tidy php-xmlrpc php-mbstring \
php-gmp php-json php-xml php-ldap php-common php-snmp
Editaremos el fichero default de nginx ubicado en /etc/nginx/sites-available/ y añadiremos index.php al final de la línea siguiente:
# Add index.php to the list if you are using PHP
index index.html index.htm index.nginx-debian.html index.php;
Ahora, crearemos el fichero de configuración para phpIPAM. Crearemos el fichero "phpipam" dentro /etc/nginx/sites-available/ con el siguiente contenido:
server {
# root directory
root /var/www/phpipam/;
# phpipam
location /phpipam/ {
try_files $uri $uri/ /phpipam/index.php;
}
# phpipam - api
location /phpipam/api/ {
try_files $uri $uri/ /phpipam/api/index.php;
}
# php-fpm
location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/run/php/php8.2-fpm.sock; #Puede cambiar en funcinó de la versión de PHP
fastcgi_index index.php;
try_files $uri $uri/ index.php = 404;
include fastcgi_params;
}
}
A continuación, muestro como debe quedar el fichero de phpipam de Nginx:
Fichero phpipam de Nginx
El siguiente paso es crear el enlace simbólico siguiente:
raul@debian:~$ sudo ln -s /etc/nginx/sites-available/phpipam /etc/nginx/site-enabled/
Y por último, reiniciaremos Nginx y php-fpm:
raul@debian:~$ sudo systemctl restart nginx.service php8.2-fpm.service
6.- ACCEDER A PHPIPAM
Para acceder a phpIPAm debemos abrir el navegador e introducir la IP del equipo seguida de /phpipam/, en mi ejemplo: http://192.168.1.109/phpipam/
Login en phpIPAM
Una vez que hemos cambiado la contraseña por defecto, podremos entrar a la página principal de configuración de phpIPAM:
Página principal de phpIPAM
ENJOY!