diff --git a/logbook/aguia-pescadora-bravo.sh b/logbook/aguia-pescadora-bravo.sh index b28c32f..a7b785d 100644 --- a/logbook/aguia-pescadora-bravo.sh +++ b/logbook/aguia-pescadora-bravo.sh @@ -957,6 +957,41 @@ sudo apt install r-base # https://www.digitalocean.com/community/tutorials/how-to-install-and-configure-monit sudo apt install monit +sudo systemctl enable monit +sudo systemctl start monit + +vim /etc/nginx/sites-available/monit.abp.etica.ai.conf +# Adicione as configurações do monit... +sudo vim /etc/nginx/sites-available/monit.apb.etica.ai.conf +# Adicione todas as customizacoes deste usuario no arquivo acima... + +# Aqui criamos uma pasta "compartilhada" para depois permitir que usuarios +# possam editar algumas coisas no que o monit monitora +sudo mkdir -p /home2/_compartilhado + +sudo vim /home2/_compartilhado/ips-aceitavelmente-confiaveis.conf +# NOTA: restrição baseada apenas em IPs deve ser feita com muito cuidado. +# no nosso caso qualquer pessoa poderia acessar o monitoramento do Monit +# via localhost, o que implica todos que tem acesso de conta SSH comum. +# Isso não chega a ser um problema se confiamos nas pessoas, mas é algo +# que precisa aplicações que eles e que dão acesso simulando localhost +# podem dar problema. (fititnt, 2019-05-25 09:56 BRT) + +sudo ln -s /etc/nginx/sites-available/monit.apb.etica.ai.conf /etc/nginx/sites-enabled/ +sudo nginx -t +sudo systemctl reload nginx + +sudo certbot --nginx -d monit.apb.etica.ai + +# Copia alguns arquivos padroes do monit e os habilita +sudo ln -s /etc/monit/conf-available/nginx /etc/monit/conf-enabled + +sudo systemctl reload monit + +# Aqui criamos uma pasta "compartilhada" para depois permitir que usuarios +# possam editar algumas coisas no que o monit monitora +sudo mkdir -p /home2/_compartilhado/monit/conf-enabled/ + #------------------------------------------------------------------------------# # SEÇÃO: AJUDA AO USUARIO # # TL;DR: Lista como é documentado ao usuario final o que este servidor # diff --git a/logbook/aguia-pescadora-bravo/etc/monit/monitrc b/logbook/aguia-pescadora-bravo/etc/monit/monitrc index d54034f..b05ae28 100644 --- a/logbook/aguia-pescadora-bravo/etc/monit/monitrc +++ b/logbook/aguia-pescadora-bravo/etc/monit/monitrc @@ -155,10 +155,10 @@ ## commands to a running Monit daemon. See the Monit Wiki if you want to ## enable SSL for the HTTP interface. # -# set httpd port 2812 and -# use address localhost # only accept connection from localhost -# allow localhost # allow localhost to connect to the server and -# allow admin:monit # require user 'admin' with password 'monit' +set httpd port 2812 and + use address localhost # only accept connection from localhost + allow localhost # allow localhost to connect to the server and +# allow admin:monit # require user 'admin' with password 'monit' # #with ssl { # enable SSL/TLS and set path to server certificate # # pemfile: /etc/ssl/certs/monit.pem # #} @@ -305,4 +305,6 @@ # include /etc/monit/conf.d/* include /etc/monit/conf-enabled/* + + include /home2/_compartilhado/monit/conf-enabled/* # diff --git a/logbook/aguia-pescadora-bravo/etc/nginx/sites-available/monit.apb.etica.ai.conf b/logbook/aguia-pescadora-bravo/etc/nginx/sites-available/monit.apb.etica.ai.conf new file mode 100644 index 0000000..6bc9348 --- /dev/null +++ b/logbook/aguia-pescadora-bravo/etc/nginx/sites-available/monit.apb.etica.ai.conf @@ -0,0 +1,37 @@ +# FILE: /etc/nginx/sites-available/monit.apb.etica.ai.conf + +server { + + server_name monit.apb.etica.ai; + + include /home2/_compartilhado/ips-aceitavelmente-confiaveis.conf; + + location / { + proxy_ignore_client_abort on; + proxy_pass http://127.0.0.1:2812; + } + + listen [::]:443 ssl; # managed by Certbot + listen 443 ssl; # managed by Certbot + ssl_certificate /etc/letsencrypt/live/monit.apb.etica.ai/fullchain.pem; # managed by Certbot + ssl_certificate_key /etc/letsencrypt/live/monit.apb.etica.ai/privkey.pem; # managed by Certbot + include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot + ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot + +} + +server { + if ($host = monit.apb.etica.ai) { + return 301 https://$host$request_uri; + } # managed by Certbot + + include /home2/_compartilhado/ips-aceitavelmente-confiaveis.conf; + + listen 80; + listen [::]:80; + + server_name monit.apb.etica.ai; + return 404; # managed by Certbot + + +} \ No newline at end of file diff --git a/logbook/aguia-pescadora-bravo/home2/_compartilhado/ips-aceitavelmente-confiaveis.conf b/logbook/aguia-pescadora-bravo/home2/_compartilhado/ips-aceitavelmente-confiaveis.conf new file mode 100644 index 0000000..36d3180 --- /dev/null +++ b/logbook/aguia-pescadora-bravo/home2/_compartilhado/ips-aceitavelmente-confiaveis.conf @@ -0,0 +1,33 @@ +# FILE: /home2/_compartilhado/ips-aceitavelmente-confiaveis.conf +# +# AVISO: NÃO É UMA PRÁTICA IDEAL CONFIGURAR ACESSO POR IPS. +# ESTE AQUIVO AQUI É UMA FORMA PREGUIÇOSA DE SEGURANÇA. +# Note que se um app seu der acesso de localhost para +# uma pessoa estranha, ele pode trollar o servidor inteiro. +# (fititnt, 2019-05-25 09:43 BRT) +# +# Esta lista contém IPs, além de localhost, usados para permitir acesso remoto a paineis +# administrativos sem necessidade de senha. Por exemplo: +# +# https://monit.apb.etica.ai/ +# +# Ou seja, sim, você que tem Acesso SSH ao servidor, mesmo sem ter root +# poderia configurar uma VPN e iniciar/reiniciar sistemas mesmo não sendo +# root. +# +# Administradores: nao é preciso enviar para o Git esse arquivo atualizado com +# seu IP real. Mas se enviar sem querer, não seria o fim do mundo +# + +# Admin: edite /etc/nginx/conf.d/admin-ips.conf, de 'sudo systemctl reload nginx' e acesse +# https://monit.apb.etica.ai/. +allow 123.456.789.101; +allow 123.456.789.102; +allow 123.456.789.103; + + +# Permite acesso de localhost +allow 127.0.0.1; + +# Ignore todo resto +deny all; \ No newline at end of file diff --git a/logbook/aguia-pescadora-bravo/home2/_compartilhado/monit/conf-enabled/system b/logbook/aguia-pescadora-bravo/home2/_compartilhado/monit/conf-enabled/system new file mode 100644 index 0000000..45c5e4b --- /dev/null +++ b/logbook/aguia-pescadora-bravo/home2/_compartilhado/monit/conf-enabled/system @@ -0,0 +1,6 @@ + check system $HOST + if loadavg (1min) > 4 then alert + if loadavg (5min) > 2 then alert + if cpu usage > 95% for 10 cycles then alert + if memory usage > 75% then alert + if swap usage > 25% then alert \ No newline at end of file