DCIM/IPAM com phpIPAM
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)]>
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.
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 {} \; # 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:
https://<IP>