Manual
do
Maker
.
com
Já foi a época em que podíamos navegar usando protocolo HTTP, ainda mais acessando URLs que recebem credenciais. Como fiz o artigo anterior sobre a utilização de Grafana com MQTT, achei interessante mostrar o resto do setup. Não é algo que se diga: "Nossa, que primícia essa configuração!", mas você terá Grafana com HTTPS - e é o que importa.
Uma das formas de fazê-lo é criando um certificado auto-assinado. É a prática mais comum, ainda mais quando não se tem um domínio próprio. Mas se você tem uma URL pública (não vale para redirecionadores de URL), esse deve ser o jeito mais interessante de se fazer essa configuração. Comecemos.
O nginx é um servidor web muito leve e que eu realmente sou apaixonado. Já fiz balanceador com ele para uma carga de mais de meio milhão de dispositivos de uma operadora de telecom no Rio de Janeiro. Se não fosse por ele, a coisa ia ficar mais complicada do que foi.
A instalação é simples:
sudo su #daqui em diante não precisamos mais usar sudo
apt-get update
apt-get install nginx
Agora entre no diretório /etc/nginx/sites-enabled e edite o arquivo default. Use o editor que desejar, eu prefiro sempre usar o vim.
Procure pela sessão server {... e mude as linhas a partir de server_name _; deixando-as assim:
server {
root /var/www/html;
index index.html index.htm index.nginx-debian.html;
server_name seudominio.com.br www.seudominio.com.br;
location / {
proxy_pass http://localhost:3000;
}
...
Daí pra baixo deixe tudo como está. Reinicie o serviço:
service nginx restart
O certbot (muito obrigado por existir S2) é uma lindeza de serviço que gera um certificado SSL gratuito e válido para seu domínio. Na versão para Ubuntu 20.04 focal a renovação é automática. Esse é o cara que nos permitirá termos o Grafana com HTTPS.
apt install certbot python3-certbot-nginx
Agora precisamos obter nosso certificado. Para tal:
certbot --nginx -d seudominio.com.br -d www.seudominio.com.br
Aparecerá uma pergunta sobre redirecionamento ou não. Opte por 2.
Nessa configuração, ao acessar https://seudominio.com.br, será feito um redirecionamento interno para a porta 3000, já pelo túnel SSL. Só que se o usuário usar seudominio.com.br:3000, abrir-se-á o Grafana. Para evitar isso (serei condenado por essa escolha, mas encaro as consequências) fiz uma regra de redirecionamento de porta com iptables:
iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 3000 -j REDIRECT --to-port 80
Tem que ser redirecionamento, se usar DROP de entrada na porta 3000, o nginx não tomará nem ciência de que existiu uma tentativa de conexão. Constate o funcionamento.
Após, fiz um serviço de firewall com essa regra. Coisa simples; crie um arquivo em /etc/systemd/system chamado frw.service. Inclua o seguinte conteúdo:
[Unit]
Description=MQTT subscribe service
After=network.target
[Service]
Type=simple
ExecStart=/root/frw.sh
RemainAfterExit=true
StandardOutput=journal
User=root
[Install]
WantedBy=multi-user.target
Depois, crie o script com a regra de firewall em /root, com o nome frw.sh, e conclua dando permissão de execução a ele.
#!/bin/bash
/usr/sbin/iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 3000 -j REDIRECT --to-port 80
A permissão de execução:
chmod 750 /root/frw.sh
E agora habilite o serviço de firewall no sistema:
systemctl enable frw
Pronto, sempre que seu sistema reiniciar, estará garantida a execução da regra de firewall.
O resultado é o da imagem de destaque.
Revisão: Ricardo Amaral de Andrade
Inscreva-se no nosso canal Manual do Maker no YouTube.
Também estamos no Instagram.
Autor do blog "Do bit Ao Byte / Manual do Maker".
Viciado em embarcados desde 2006.
LinuxUser 158.760, desde 1997.