DCIM/IPAM com phpIPAM

De ISPUP!
Revisão de 20h30min de 11 de fevereiro de 2023 por Gondim (discussão | contribs)
Ir para navegação Ir para pesquisar

Introdução

DCIM (Data Center Infraestructure Management) e IPAM (IP Address Management) são ferramentas que nos ajudam a administrar nosso ambiente de Datacenter e nossos recursos IPv4 e IPv6. Tenha em mente que controlar bem esses recursos pode te fazer economizar dinheiro e projetar melhor o crescimento do seu Provedor. Todos temos ciência que recursos de IPv4 público estão escassos e em muitos lugares já se esgotou. No Brasil o esgotamento foi anunciado em 19/8/2020 e atualmente se você deseja um prefixo IPv4 público, será necessário entrar em uma fila de espera de recuperação de recursos IP e tal espera pode ser algo entorno de 5 anos.

O objetivo desse artigo é mostrar a instalação do software phpIPAM, que é um DCIM/IPAM, e mostrar alguns exemplos de configuração. Não será nada tão sofisticado porque você deve configurá-lo conforme sua Operação e porque o objetivo aqui é te mostrar as excelentes possibilidades, para finalmente aposentar sua planilha Excel. Para entendermos o funcionamento dele e como de habitual, trabalharemos orientados em um modelo fictício e demonstrado no diagrama abaixo:


Requisitos

Como de costume utilizaremos o sistema Debian 11 (Bullseye) GNU/Linux e como ambiente não precisaremos de nada tão absurdo:

  • VM CPU Common KVM (2) @ 2.199GHz com 4 cores.
  • 4Gb de ram.
  • Um disco de 50Gb.

Instalação de pacotes base

Você pode dar uma olhada nesse artigo, como uma configuração inicial de ambiente e tenha em mente que esse sistema não deveria estar público na Internet. É um sistema com informações importantes e sigilosas, que só pessoas autorizadas da sua empresa devem ter acesso. Abaixo a lista de pacotes que instalaremos:

# apt install apache2 apache2-utils fping mariadb-server mariadb-client libapache2-mod-php php php-mysql php-cli php-pear php-gmp php-gd php-bcmath php-mbstring php-curl php-xml php-zip php-ldap php-json php-opcache php-readline php-snmp

Configurando o php.ini

Confira as variáveis abaixo e seus valores em /etc/php/7.4/apache2/php.ini. Os valores abaixo são os recomendados pelo pessoal do projeto do phpIPAM.

[PHP]
engine = On
short_open_tag = Off
precision = 14
output_buffering = 4096
zlib.output_compression = Off
implicit_flush = Off
serialize_precision = 17
zend.enable_gc = On
expose_php = Off
max_execution_time = 600
max_input_time = 60
memory_limit = 512M
error_reporting = E_ALL & ~E_DEPRECATED & ~E_STRICT
display_errors = Off
log_errors = On
log_errors_max_len = 1024
default_mimetype = "text/html"
default_charset = "UTF-8"
file_uploads = On
upload_max_filesize = 2M
max_file_uploads = 20
allow_url_fopen = On
allow_url_include = Off
default_socket_timeout = 60

[Date]
date.timezone = "America/Sao_Paulo"

[mail function]
smtp_port = 25
mail.add_x_header = On

[SQL]
sql.safe_mode = Off

[MySQLi]
mysqli.max_persistent = -1
mysqli.allow_persistent = On
mysqli.max_links = -1
mysqli.cache_size = 2000
mysqli.default_port = 3306
mysqli.reconnect = Off

[mysqlnd]
mysqlnd.collect_statistics = On
mysqlnd.collect_memory_statistics = Off

[Session]
session.save_handler = files
session.use_strict_mode = 0
session.use_cookies = 1
session.use_only_cookies = 1
session.name = PHPSESSID
session.auto_start = 0
session.cookie_lifetime = 0
session.cookie_path = /
session.cookie_domain =
session.cookie_httponly =
session.serialize_handler = php
session.gc_probability = 1
session.gc_divisor = 1000
session.gc_maxlifetime = 1440
session.cache_limiter = nocache
session.cache_expire = 180
session.use_trans_sid = 0
session.hash_function = 0
session.hash_bits_per_character = 5
url_rewriter.tags = "a=href,area=href,frame=src,input=src,form=fakeentry"

[ldap]
ldap.max_links = -1

Configurando algumas coisas no Apache2

Após conferir e modificar as variáveis acima, habilitaremos o rewrite e ssl no Apache2:

# a2enmod rewrite
# a2enmod ssl
# a2ensite default-ssl.conf

Melhorar um pouco a segurança:

# perl -i -pe 's%ServerTokens OS%ServerTokens Prod%g' /etc/apache2/conf-available/security.conf
# perl -i -pe 's%ServerSignature On%ServerSignature Off%g' /etc/apache2/conf-available/security.conf
# systemctl restart apache2.service

Configurando algumas coisas do MariaDB

Agora vamos melhorar um pouco a segurança do MariaDB:

# mysql_secure_installation

NOTE: RUNNING ALL PARTS OF THIS SCRIPT IS RECOMMENDED FOR ALL MariaDB
      SERVERS IN PRODUCTION USE!  PLEASE READ EACH STEP CAREFULLY!

In order to log into MariaDB to secure it, we'll need the current
password for the root user. If you've just installed MariaDB, and
haven't set the root password yet, you should just press enter here.

Enter current password for root (enter for none):
OK, successfully used password, moving on...

Setting the root password or using the unix_socket ensures that nobody
can log into the MariaDB root user without the proper authorisation.

You already have your root account protected, so you can safely answer 'n'.

Switch to unix_socket authentication [Y/n] Y
Enabled successfully!
Reloading privilege tables..
 ... Success!


You already have your root account protected, so you can safely answer 'n'.

Change the root password? [Y/n] n
 ... skipping.

By default, a MariaDB installation has an anonymous user, allowing anyone
to log into MariaDB without having to have a user account created for
them.  This is intended only for testing, and to make the installation
go a bit smoother.  You should remove them before moving into a
production environment.

Remove anonymous users? [Y/n] Y
 ... Success!

Normally, root should only be allowed to connect from 'localhost'.  This
ensures that someone cannot guess at the root password from the network.

Disallow root login remotely? [Y/n] Y
 ... Success!

By default, MariaDB comes with a database named 'test' that anyone can
access.  This is also intended only for testing, and should be removed
before moving into a production environment.

Remove test database and access to it? [Y/n] Y
 - Dropping test database...
 ... Success!
 - Removing privileges on test database...
 ... Success!

Reloading the privilege tables will ensure that all changes made so far
will take effect immediately.

Reload privilege tables now? [Y/n] Y
 ... Success!

Cleaning up...

All done!  If you've completed all of the above steps, your MariaDB
installation should now be secure.

Thanks for using MariaDB!

Por padrão, o MariaDB dispensa a senha de root quando utilizando por linha de comando do shell de root, mas vamos mudar isso agora e inclusive você deve escolher uma senha para o user root da base de dados:

# mysql -u root -p
Enter password:
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 46
Server version: 10.5.18-MariaDB-0+deb11u1 Debian 11

Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

MariaDB [(none)]> ALTER USER root@localhost IDENTIFIED VIA mysql_native_password USING PASSWORD("senha_root");
Query OK, 0 rows affected (0,005 sec)

MariaDB [(none)]> flush privileges;
Query OK, 0 rows affected (0,000 sec)

MariaDB [(none)]> quit

No exemplo acima eu deixei a senha do usuário root da base de dados como sendo senha_root mas você deve escolher a sua e trocar ali no comando.

Criando a database do phpIPAM

A instalação automática da base de dados do phpIPAM não nos permite criar um usuário e senha específicos para acesso, então vamos criar o ambiente antes de instalar.

# mysql -u root -p
Enter password:
Welcome to the MariaDB monitor.  Commands end with ; or \g.
Your MariaDB connection id is 50
Server version: 10.5.18-MariaDB-0+deb11u1 Debian 11

Copyright (c) 2000, 2018, Oracle, MariaDB Corporation Ab and others.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

MariaDB [(none)]> CREATE DATABASE phpipam;
Query OK, 1 row affected (0,000 sec)

MariaDB [(none)]> GRANT ALL PRIVILEGES ON phpipam.* TO 'phpipam'@'localhost' IDENTIFIED BY 'senha_user';
Query OK, 0 rows affected (0,004 sec)

MariaDB [(none)]> FLUSH PRIVILEGES;
Query OK, 0 rows affected (0,000 sec)

MariaDB [(none)]> quit
Bye

Acima criamos a database chamada phpipam e definimos para o user phpipam, a senha senha_user. Não esqueça de trocar essa senha por uma melhor.

Baixando e instalando o phpIPAM

Verifique qual a última versão do phpIPAM para baixar aqui. Nesse momento do artigo é a versão 1.5.1 e siga conforme abaixo:

# cd /usr/local/src
# wget -c https://github.com/phpipam/phpipam/releases/download/v1.5.1/phpipam-v1.5.1.tgz
# tar -xvzpf phpipam-v1.5.1.tgz
# rm /var/www/html/*
# mv phpipam/* /var/www/html/
# find /var/www/* -type d -exec chmod 755 {} \;
# find /var/www/* -type f -exec chmod 644 {} \;
# chown -R www-data: /var/www/html/
# cd /var/www/html/
# cp config.dist.php config.php

Nesse momento acesse pelo seu navegador a URL contendo o IP do seu servidor phpIPAM. No meu caso, eu instalei no IP 10.0.10.172:

https://10.0.10.172

Na tela abaixo, selecione o 1 para criarmos uma nova instalação do phpIPAM.

Na próxima sequência usaremos a opção 1 para instalação automática da database:

Na próxima tela entraremos com o user phpipam, a senha que você definiu para ele, no meu caso deixei como senha_user. Na sequência vamos em Show advanced options, desmarcamos todas as opções e seguimos com a instalação da database.