Mateus Müller

O carinha do Linux

17 maio 2018

Instalando e configurando o Zabbix no CentOS 7 com FIREWALLD e SELinux

O Zabbix é um software muito conhecido no mundo Linux e altamente utilizado nas infraestruturas das empresas atualmente. Não somente em ambientes Linux, mas com Windows também, visto que é multi-plataforma.

Com o Zabbix, você pode monitorar seus ativos de rede, recursos do servidor (CPU, Memória, Rede, etc), serviços, cloud, segurança e diversos outros.

No artigo de hoje, vou mostrar para vocês como instalar e configurar a versão mais atual do Zabbix no Linux CentOS 7.

VÍDEO ATUALIZADO VERSÃO ZABBIX 4.0 2019

Por que CentOS 7?

É uma das distribuições mais utilizadas para servidores e também homologada pelo Zabbix. Nada impede que você utilize alguma outra. Veja abaixo as distribuições homologadas:

Instalando e configurando o Zabbix no CentOS 7 com FIREWALLD e SELinux
Instalando e configurando o Zabbix no CentOS 7 com FIREWALLD e SELinux

Preparando o ambiente

Vamos instalar o Apache, MariaDB (MySQL) e PHP:

$ yum install httpd mariadb mariadb-server php -y

Posteriormente, vamos instalar as extensões do PHP necessárias:

$ yum install php-devel php-pear php-gd php-mbstring php-mysql php-xml -y

Vamos instalar alguns comandos para trabalhar com SELinux posteriormente:

$ yum install setools setroubleshoot -y

Muito bem, agora vamos habilitar ambos na inicialização e já iniciá-los:

$ systemctl enable httpd && systemctl start httpd
$ systemctl enable mariadb && systemctl start mariadb

Vamos fazer a configuração de segurança do banco de dados. Crie um usuário padrão e concorde com todas as outras opções para uma melhor segurança:

$ mysql_secure_installation

Agora, devemos habilitar nosso servidor web no firewall:

$ firewall-cmd --add-service=http --permanent
$ firewall-cmd --reload

Como instalar o Zabbix no Linux?

Agora, basta seguirmos os procedimentos de instalação dispostos neste link no site do Zabbix.

Primeiro, instalar o repositório do Zabbix:

$ rpm -i http://repo.zabbix.com/zabbix/3.4/rhel/7/x86_64/zabbix-release-3.4-2.el7.noarch.rpm

Depois, iniciar a instalação do mesmo:

$ yum install zabbix-server-mysql zabbix-web-mysql zabbix-agent -y

Assim que a instalação for finalizada, vamos configurar o banco de dados para trabalhar com o Zabbix, criando uma database chamada “zabbix” e um usuário com todos os privilégios:

$ mysql -u root -p
mysql> create database zabbix character set utf8 collate utf8_bin;
mysql> grant all privileges on zabbix.* to zabbix@localhost identified by 'password';
mysql> exit;
Instalando e configurando o Zabbix no CentOS 7 com FIREWALLD e SELinux
Instalando e configurando o Zabbix no CentOS 7 com FIREWALLD e SELinux

Agora, vamos importar um arquivo de configuração pronto do Zabbix que fará a criação de todas as tabelas necessárias no banco de dados que criamos, chamado zabbix:

$ zcat /usr/share/doc/zabbix-server-mysql-3.4.8/create.sql.gz | mysql -u zabbix -p zabbix

Depois, vamos apontar na configuração do Zabbix, os dados de acesso ao banco de dados:

$ vi /etc/zabbix/zabbix_server.conf

Obs.: Se você não sabe trabalhar com o VI, veja este vídeo que fiz.

Navegue até a parte onde aparece DBName=zabbix.

Adicione as seguintes linhas:

Instalando e configurando o Zabbix no CentOS 7 com FIREWALLD e SELinux
Instalando e configurando o Zabbix no CentOS 7 com FIREWALLD e SELinux

Salve com ESC :wq!.

E para finalizar, vamos alterar o timezone para São Paulo:

$ vi /etc/httpd/conf.d/zabbix.conf

Descomente a seguinte linha e altere o timezone:

Instalando e configurando o Zabbix no CentOS 7 com FIREWALLD e SELinux
Instalando e configurando o Zabbix no CentOS 7 com FIREWALLD e SELinux

Salve com ESC :wq!.

Faremos agora, a liberação no firewall e ativação de algumas regras SELinux:

$ firewall-cmd --add-port=10051/tcp --permanent
$ firewall-cmd --add-port=10050/tcp --permanent
$ firewall-cmd --reload
$ setsebool -P httpd_can_connect_zabbix on
$ setsebool -P zabbix_can_network on
$ setsebool -P httpd_can_network_connect_db on

E prontinho, tudo configurado, vamos iniciar os serviços e habilitá-los na inicialização:

$ systemctl enable zabbix-agent && systemctl start zabbix-agent
$ systemctl enable zabbix-server && systemctl start zabbix-server

Se não houve nenhum erro, significa que o servidor Zabbix foi devidamente configurado:

No meu caso, tive o seguinte erro na hora de iniciar o zabbix-server: “Job for zabbix-server.service failed because a configured resource limit was exceeded”. Isso se deve pelo fato de que o CentOS trabalha com o SELinux e não permite a modificação por outros serviços. Neste caso, precisamos criar uma exceção para o mesmo.

Como resolver “Job for zabbix-server.service failed because a configured resource limit was exceeded” na configuração do Zabbix?

Lembra que instalamos aquele pacote de setools e setroubleshoot anteriormente? É para analisar e resolver este problema:

Vamos primeiro verificar o que ocorreu lendo os logs do _SELinux:

$ cat /var/log/audit/audit.log | grep zabbix_server | grep denied | audit2why

Veja o resultado:

Instalando e configurando o Zabbix no CentOS 7 com FIREWALLD e SELinux
Instalando e configurando o Zabbix no CentOS 7 com FIREWALLD e SELinux

A mensagem me diz que está faltando um type enforcement allow rule, ou seja, o meu context zabbix_t não tem uma regra que permite fazer alterações.

Logo abaixo, ele já nos da uma solução usando o aud__it2allow, vamos então gerar um módulo:

$ cat /var/log/audit/audit.log | grep zabbix\_server | grep denied | audit2allow -M zabbix\_setrlimit

Dois arquivos serão gerados com o nome que colocamos:

Instalando e configurando o Zabbix no CentOS 7 com FIREWALLD e SELinux
Instalando e configurando o Zabbix no CentOS 7 com FIREWALLD e SELinux

E agora, vamos seguir a recomendação acima e aplicar o módulo:

$ semodule -i zabbix_setrlimit.pp

Finalizado este processo, reinicie o equipamento:

$ reboot

Lembrando que isso pode ocorrer mais algumas vezes, com outros erros de permissão, basta você ir repetindo esse processo e instalando novos módulos até parar os erros. No meu caso, foram apenas 3 módulos.

Configuração final

Acesse em outro equipamento o http://IPDOSERVIDOR/zabbix

Instalando e configurando o Zabbix no CentOS 7 com FIREWALLD e SELinux
Instalando e configurando o Zabbix no CentOS 7 com FIREWALLD e SELinux

Avance para a próxima tela e veja se todas as dependências estão com OK:

Instalando e configurando o Zabbix no CentOS 7 com FIREWALLD e SELinux
Instalando e configurando o Zabbix no CentOS 7 com FIREWALLD e SELinux

Em seguida, configure o seu banco de dados:

Instalando e configurando o Zabbix no CentOS 7 com FIREWALLD e SELinux
Instalando e configurando o Zabbix no CentOS 7 com FIREWALLD e SELinux

Vá avançando e confirmando até chegar na tela de login.

Você pode acessar o Zabbix 3.4 com o usuário padrão Admin e a senha zabbix:

Instalando e configurando o Zabbix no CentOS 7 com FIREWALLD e SELinux
Instalando e configurando o Zabbix no CentOS 7 com FIREWALLD e SELinux

E finalizada a configuração do Zabbix!

ATENÇÃO! O status do servidor Zabbix deve estar como abaixo, caso contrário, ainda há algum problema com o serviço zabbix-server.

Instalando e configurando o Zabbix no CentOS 7 com FIREWALLD e SELinux
Instalando e configurando o Zabbix no CentOS 7 com FIREWALLD e SELinux

Concluindo, espero que tenha gostado deste artigo, um abraço!

Se tiver alguma dúvida ou sugestão de conteúdo, por favor, comente!

Comentários Disqus