GLPI e Fusioninventory sem complicações:
Devido a muitos artigos ensinarem a instalar diversas ferramentas no qual sysadmins e ou administradores não se preocuparem com a segurança, decidi escrever um tutorial robusto explicando como instalar GLPI com Fusioninventory aplicando alguns meios no qual aumente a segurança em ambientes corporativos.
# O que é GLPI?
Um sistema web de código aberto desenvolvido em php para gerenciamento de ativos de TI, sendo possível realizar a gestão, inventário, incididentes/requisições ou projetos em um ambiente corporativo.
# O Que é fusioninventory?
Um plugin do sistema GLPI no qual facilita e incrementa informações de inventário e deploy de instalações de aplicações remotas.
# Instalação dos aplicativos no Debian:
# Recomenda-se atualizar o repositório, o sistema e os pacotes:
apt update && apt upgrade
# Pré instalação (Servidor web Apache, Banco de Dados Mariadb e PHP)
apt install apache2 php php-curl php-gd php-cli php-mbstring php-mysql php-xml php-cas php-imap php-ldap php-xmlrpc php-soap php-snmp php-apcu php-zip php-intl php-bz2 mariadb-server vim -y
# Deve-se inicializar o banco de dados Mariadb e habilita-lo:
systemctl enable mariadb --now
# Deve-se primeiramente criar segurança no sistema Mariadb:
mysql_secure_installation
# Exemplo de resultado resumido:
Enter current password for root (enter for none): --> [ENTER]
Switch to unix_socket authentication [Y/n] --> [ENTER]
Change the root password? [Y/n] --> [Y]
New password: [senha_segura] --> Ex: s3nh@_$3gur@
Remove anonymous users? [Y/n] --> [Y]
Disallow root login remotely? [Y/n] --> [Y]
Remove test database and access to it? [Y/n] --> [Y]
Reload privilege tables now? [Y/n] --> [Y]
# Deve-se criar a base de dados:
# Obs: Para fins de segurança a base glpi, será criada para acesso localmente, recomenda a inserção de senha uma segurança para a conectar a base.
mysql -u root -p's3nh@_$3gur@'
mysql> create database glpi;
mysql> create user 'glpi'@'localhost' identified by 'senha_segura';
mysql> grant all on glpi.* to glpi identified by 'senha_segura';
mysql> quit;
# Recomenda-se baixar o arquivo do GLPI no site oficial:
cd /var/www/html/
wget https://github.com/glpi-project/glpi/releases/download/9.5.7/glpi-9.5.7.tgz
tar -vxf glpi-9.5.7.tgz
# Recomenda-se baixar o arquivo do Fusioninventory no site oficial:
cd /var/www/html/glpi/plugins
wget https://github.com/fusioninventory/fusioninventory-for-glpi/releases/download/glpi9.5%2B4.2/fusioninventory-9.5+4.2.tar.bz2
tar -vxf fusioninventory-9.5+4.2.tar.bz2
# Permissão GLPI para todas pastas e arquivos incluindo o plugin do fusioninventory:
chmod 775 /var/www/html/glpi -Rf
chown www-data. /var/www/html/glpi -Rf
# Deve-se habilitar o servidor Web apache:
systemctl enable apache2 --now
# Recomenda-se a implementação de segurança Básica no servidor web, instalação do firewalld.
apt install firewalld -y
# Deve-se adicionar a regra para habilitar o protocolo http permanentemente:
# Obs: Recomenda-se posteriormente habilitar a regra para protocolo https e desabilitar o http
firewall-cmd --zone=public --add-service=http --permanent
firewall-cmd --reload
# Verificar regras para a zona public:
firewall-cmd --list-all --zone=public
Resultado: services: dhcpv6-client http ssh
# Incrementar o protocolo ssl no servidor apache, para a conexão ser criptografada, para isto será necessário uma chave e um certificado.
Obs: Será necessário informar dados como: Nome de domínio, organização, localidade, estado, email etc na requisição para assinatura de um certificado digital.
# Deve-se instalar os pacotes necessários
apt install openssl ca-certificates -y
# Para incrementar essa camada de segurança, deve-se criar a chave
cd /etc/ssl/private && openssl genrsa -out ca.key 2048
# Deve-se gerar um arquivo csr para solicitar a assinatura e validar um autoridade certificadora.
cd /etc/ssl/ && openssl req -new -key /etc/ssl/private/ca.key -out ca.csr
# Deve-se assinar a requisição via autoridade certificadora válida ou auto assinar.
cd /etc/ssl/certs && openssl x509 -req -days 365 -in /etc/ssl/ca.csr -signkey /etc/ssl/private/ca.key -out /etc/ssl/certs/ca.crt
# Deve-se criar o arquivo de configuração ssl no apache:
> /etc/apache2/conf-available/ssl-params.conf
vim /etc/apache2/conf-available/ssl-params.conf
# Conteúdo do arquivo:
SSLCipherSuite EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH
SSLProtocol All -SSLv2 -SSLv3 -TLSv1 -TLSv1.1
SSLHonorCipherOrder On
# Disable preloading HSTS for now. You can use the commented out header line that includes
# the "preload" directive if you understand the implications.
# Header always set Strict-Transport-Security "max-age=63072000; includeSubDomains; preload"
Header always set X-Frame-Options DENY
Header always set X-Content-Type-Options nosniff
# Requires Apache >= 2.4
SSLCompression off
SSLUseStapling on
SSLStaplingCache "shmcb:logs/stapling-cache(150000)"
# Requires Apache >= 2.4.11
SSLSessionTickets Off
# Criar o arquivo vhosts para utilizar a porta 443:
cp /etc/apache2/sites-available/default-ssl.conf /etc/apache2/sites-available/default-ssl.conf.bak
vim /etc/apache2/sites-available/default-ssl.conf
# Conteúdo a ser alterado:
SSLCertificateFile /etc/ssl/certs/ca.crt
SSLCertificateKeyFile /etc/ssl/private/ca.key
# Habilitar o mod ssl no apache
/usr/sbin/a2enmod ssl
/usr/sbin/a2ensite default-ssl
# Adicionar o protocolo https no firewall:
firewall-cmd --zone=public --add-service=https --permanent
firewall-cmd --reload
# Recomenda-se redicionar conexões http para https para incremento de segurança:
# Habilitar o modo rewrite:
/usr/sbin/a2enmod rewrite
# Adicionar configuração no vhost referente a porta 80:
vim /etc/apache2/sites-available/000-default.conf
# Conteúdo para ser adicionado:
RewriteEngine On
RewriteCond %{HTTPS} off
RewriteRule ^ https://%{HTTP_HOST}%{REQUEST_URI}
# Deve-se continuar aprimorando segurança no servidor web, para ocultar versão do apache e do sistema operacional:
vim /etc/apache2/conf-available/security.conf
# Altera as seguintes variáveis para ocultar as informações:
ServerSignature Off
ServerTokens Prod
# Deve-se instalar o modsecurity, um módulo que atua para um incremento de segurança, facilitando monitor o tráfego em tempo real e previnindo possíveis ataques de força bruta:
apt install libapache2-mod-security2 && /usr/sbin/a2enmod security2
# Recomenda-se incrementar configuração adicinonal para além do módulo detectar, bloquear atividades suspeitas, Exemplo:
cp /etc/modsecurity/modsecurity.conf-recommended /etc/modsecurity/modsecurity.conf
# Altere de "SecRuleEngine DetectionOnly" para "SecRuleEngine On"
vim /etc/modsecurity/modsecurity.conf
# Recomenda-se incrementar regras de intrusão de ataques, visando aprimorar e proteger sua estrutura web.
# Conhecida como "OWASP ModSecurity Core Rule Set (CRS)"
cd /root
wget https://github.com/coreruleset/coreruleset/archive/refs/tags/v3.3.4.zip
tar -vxf v3.3.4.tar.gz
cp /root/coreruleset-3.3.4/crs-setup.conf.example /etc/modsecurity/crs-setup.conf
mv /root/coreruleset-3.3.4/rules/ /etc/modsecurity/
# Recomenda-se remover as regras com falso positivo ou reconfigura-las
rm -f /etc/modsecurity/rules/REQUEST-922-MULTIPART-ATTACK.conf
rm -f /etc/modsecurity/rules/RESPONSE-980-CORRELATION.conf
rm -f /etc/modsecurity/rules/RESPONSE-959-BLOCKING-EVALUATION.conf"
# Deve-se atualizar as regras no módulo security
vim /etc/apache2/mods-enabled/security2.conf
# Deve ser alterar o arquivo conforme informações:
IncludeOptional /etc/modsecurity/*.conf
Include /etc/modsecurity/rules/*.conf
##IncludeOptional /usr/share/modsecurity-crs/owasp-crs.load
# Reiniciar o serviço do apache pois ativado os módulos: ssl, rewrite e outras configurações
systemctl restart apache2
# Deve-se continuar a instalação web, utiliza-se o ip ou dns.
# Obs 1: Escolha a base de glpi criada durante a instalação, informe a senha.
# Obs 2: Esse procedimento é um pouco demorado.
http://seu_ip/glpi/
# Para instalar o plugin, após a conclusão habilite o plugin:
Clique em: setup --> Plugins --> Caixa com sinal de +, "Opção Install",
# Deve-se instalar o agent do fusioninventory:
apt install fusioninventory-agent -y
# Deve-se alterar o servidor na váriavel server do arquivo e no-ssl-check para não verificar ou validar o certificado:
vim /etc/fusioninventory/agent.cfg
server = http://seu_ip/glpi/plugins/fusioninventory/
no-ssl-check = 1
# Deve-se reiniciar o serviço do agente do fusioninventory-agent para garantir a aplicabilidade das configurações
systemctl restart fusioninventory-agent
# Tutorial criado para auxiliar aumentar e incrementar segurança ao serviços, recomenda-se atentar ou realizar reajustes adicionais conforme a necessidade do ambiente computacional.
Comentários
Postar um comentário