Rendere Odoo sicuro su Internet

From PNLUG
Revision as of 20:14, 16 August 2022 by Marcelo.frare (talk | contribs)
Jump to navigation Jump to search


Esporre Odoo su Internet in sicurezza

Pagina in costruzione

Installazione reverse proxy Nginx

L'installazione del reverse proxy ci consentirà pilotare le chiamate verso il server Odoo apportando le opportune misure di sicurezza caso per caso

sudo apt-get install nginx -y

Per analizzare il log del servizio Nginx appena lanciato

journalctl -u nginx

Disabilitare la configurazione di default e impostare quella relativa a Odoo

sudo rm /etc/nginx/sites-enabled/default
sudo touch /etc/nginx/sites-available/odoo
sudo ln -s /etc/nginx/sites-available/odoo /etc/nginx/sites-enabled/odoo


Modificare il file /etc/nginx/sites-available/odoo al fine di reindirizzare il traffico sulla porta 8069

upstream backend-odoo {
    server 127.0.0.1:8069;
}
server {
    location / {
        proxy_pass http://backend-odoo;
    }
}

Ricaricare e riavviare il servizio con la nuova configurazione

sudo systemctl reload nginx

Ora il servizio di Odoo risponderà anche senza indicare la porta da utilizzare

http://localhost


Protocollo https

Al fine di mettere in sicurezza le transazioni tra il browser client e il servizio Odoo, è necessario attivare il protocollo HTTPS il quale si appoggia su un certificato SSL.

Certificato SSL autofirmato

Generare il certificato in autonomia, firmato da noi stessi

sudo mkdir /etc/nginx/ssl && cd /etc/nginx/ssl
sudo openssl req -x509 -newkey rsa:2048 -keyout key.pem -out cert.pem -days 365 -nodes
sudo chmod a-wx *
sudo chown www-data:root *

Attivazione protocollo SSL

Sostituire il contenuto del file /etc/nginx/sites-available/odoo come indicato

upstream backend-odoo {
  server 127.0.0.1:8069;
}
server {
  listen 443 default;
  # ssl settings
  ssl on;
  ssl_certificate
  /etc/nginx/ssl/cert.pem;
  ssl_certificate_key /etc/nginx/ssl/key.pem;
  keepalive_timeout 60;
  # proxy header and settings
  proxy_set_header Host $host;
  proxy_set_header X-Real-IP $remote_addr;
  proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
  proxy_set_header X-Forwarded-Proto $scheme;
  proxy_redirect off;
  location / {
    proxy_pass http://backend-odoo;
  }
}

Ora il servizio di Odoo risponderà solo sulla porta 443

https://localhost

Certificato SSL letsencrypt

Il certificato autofirmato però provoca un'eccezzione al browser perchè i browser riconoscono soltanto gli enti certificati a rilasciarli, e noi non lo siamo.

Per ovviare questo avviso, è possibile sostituire il nostro certificato con uno rilasciato da un ente accreditato a farlo: Let's Encrypt

Per l'attivazione del certificato è necessario disporre di un nome di dominio il quale deve puntare all'indirizzo IP della macchina dov'è installato Odoo.

Se necessario, configurate opportunamente il router in modo che la chiamata arrivi direttamente al pc nattando l'indirizzo LAN

Installare il programma

sudo apt install certbot
sudo certbot certonly

seguire le indicazioni fornite dalla procedura di creazione del cerificato indicando tutti i dati richiesti, incluso il nome dominio


Ora il servizio di Odoo risponderà correttamente al nome dominio indicato sull'url

https://mio_sito.it

Impostazione firewall

Chiudere tutte le porte non necessarie al servizio Odoo

sudo apt-install ufw
sudo ufw status
sudo ufw allow http
sudo ufw allow https
sudo ufw allow ssh
sudo ufw enable
sudo ufw status
sudo reboot