{"id":1191,"date":"2018-05-02T13:08:25","date_gmt":"2018-05-02T11:08:25","guid":{"rendered":"https:\/\/www.alblog.it\/?p=1191"},"modified":"2018-05-02T13:08:25","modified_gmt":"2018-05-02T11:08:25","slug":"esporre-in-maniera-sicura-un-servizio-web-di-casa-propria","status":"publish","type":"post","link":"https:\/\/www.alblog.it\/index.php\/2018\/05\/02\/esporre-in-maniera-sicura-un-servizio-web-di-casa-propria\/","title":{"rendered":"Esporre in maniera sicura un servizio web di casa propria"},"content":{"rendered":"<p><a href=\"https:\/\/www.alblog.it\/wp-content\/images\/1012px-CGN_IPv4.svg_.png\"><img loading=\"lazy\" decoding=\"async\" class=\"alignnone size-full wp-image-1195\" src=\"https:\/\/www.alblog.it\/wp-content\/images\/1012px-CGN_IPv4.svg_.png\" alt=\"\" width=\"787\" height=\"463\" srcset=\"https:\/\/www.alblog.it\/wp-content\/images\/1012px-CGN_IPv4.svg_.png 787w, https:\/\/www.alblog.it\/wp-content\/images\/1012px-CGN_IPv4.svg_-300x176.png 300w, https:\/\/www.alblog.it\/wp-content\/images\/1012px-CGN_IPv4.svg_-768x452.png 768w\" sizes=\"auto, (max-width: 787px) 100vw, 787px\" \/><\/a>Se avete l'esigenza di esporre un servizio web di casa vostra e volete farlo in <strong>maniera sicura<\/strong> gestendo voi direttamente il tutto per avere il massimo controllo una soluzione \u00e8 il <strong>reverse proxy con autenticazione<\/strong>.<\/p>\n<p>Per fare un esempio potreste voler pubblicare in internet una ip cam di sorveglianza che guarda l'esterno di casa. Il modo pi\u00f9 facile \u00e8 di impostare una regola sul vostro router per aprire la porta della videocamera ma questo presenta almeno un paio di problematiche che portano a sconsigliarlo. La pi\u00f9 ovvia \u00e8 che la videocamera potrebbe non avere l'impostazione per proteggerla con password e non \u00e8 bello che chiunque possa guardare fuori da casa vostra. Una seconda considerazione \u00e8 sul grado di sicurezza della vostra ip cam: potrebbe avere dei bug che permettono ad un malintenzionato di prenderne il controllo o, anche se non ne avesse, in futuro potrebbero saltarne fuori e il produttore quasi certamente non pubblicher\u00e0 un aggiornamento per tappare la falla.<\/p>\n<p>La soluzione reverse proxy con autenticazione \u00e8 indubbiamente <strong>pi\u00f9 complessa<\/strong> ma permette di avere il pieno controllo della parte che si pubblica in internet e di poter quindi <strong>tenere aggiornati<\/strong> tutti i componenti alle ultime versioni: un sistema correttamente configurato e mantenuto aggiornato \u00e8 una buona <strong>garanzia di sicurezza<\/strong>.<\/p>\n<p>Cosa serve per realizzarlo? Prima indico un breve elenco di <em>oggetti<\/em> che servono e poi qualche dettaglio sulle configurazioni.<\/p>\n<p>Elenco:<\/p>\n<ul>\n<li>Un <strong>ip pubblico<\/strong> (niente NAT\/<a href=\"https:\/\/en.wikipedia.org\/wiki\/Carrier-grade_NAT\">Carrier Grade NAT<\/a> altrimenti non siete raggiungibili dall'esterno)<\/li>\n<li>Un router che possa tenere aggiornato un <strong>dns dinamico<\/strong> con il vostro ip (o un ip pubblico statico)<\/li>\n<li>Un <strong>server<\/strong> sempre acceso da adibire a reverse proxy<\/li>\n<\/ul>\n<p>Per accedere in maniera sicura bisogna esporre il servizio in HTTPS quindi <a href=\"https:\/\/www.alblog.it\/index.php\/2016\/12\/14\/certificati-per-https-gratuiti-per-rendere-piu-sicuro-il-web\/\">usiamo Let's Encrypt per avere un certificato gratuito<\/a> per il dns che abbiamo impostato nel nostro router.<\/p>\n<p>Se utilizzare una <strong>Debian con Apache<\/strong> come web server allora dovete abilitare i vari moduli proxy e un idea di settaggi del reverse proxy potrebbe essere:<\/p>\n<pre>&lt;VirtualHost *:443&gt;\r\n          SSLEngine on\r\n          SSLCertificateFile \/etc\/letsencrypt\/live\/tuo.dominio.it\/fullchain.pem\r\n          SSLCertificateKeyFile \/etc\/letsencrypt\/live\/tuo.dominio.it\/privkey.pem\r\n          ServerAdmin tuaemail@example.it\r\n          ServerName tuo.dominio.it\r\n          ProxyPass \/ http:\/\/192.168.1.100\/\r\n          ProxyPassReverse \/ http:\/\/192.168.1.100\/\r\n          &lt;Proxy *&gt;\r\n                    AuthType Basic\r\n                    AuthName \"Restricted Access\"\r\n                    AuthUserFile \"\/cartella\/dove\/metti\/il\/file\/passwordapache\"\r\n                    Require user nomeutente\r\n          &lt;\/Proxy&gt;\r\n          &lt;\/VirtualHost&gt;\r\n&lt;VirtualHost *:80&gt;\r\n          ServerName tuo.dominio.it\r\n          Redirect permanent \/ https:\/\/tuo.dominio.it\/\r\n&lt;\/VirtualHost&gt;<\/pre>\n<p>Come vedete ho messo un rediret permenent per HTTP (porta 80) in modo che se anche cerchi di accedere senza l'HTTPS vieni <strong>rediretto sul sito sicuro<\/strong>. Nella sezione sopra, quella HTTPS (porta 443), ho indicato le posizioni dei certificati, l'ip interno del web server da esporre (da notare che pu\u00f2 essere anche solo HTTP ma verso l'esterno viene fatto transitare HTTPS), come AuthName non mettete nulla di personale perch\u00e9 \u00e8 <strong>visibile a chiunque<\/strong> prima dell'autenticazione e poi c'\u00e8 il file dove salverete utente e password.<\/p>\n<p>Fatto in questo modo potete accedere da internet al vostro servizio web semplicemente con <code>https:\/\/tuo.dominio.it\/<\/code> vi apparir\u00e0 la richiesta di nome utente e password e <strong>tutto quanto transiter\u00e0 in maniera cifrata<\/strong>.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Se avete l'esigenza di esporre un servizio web di casa vostra e volete farlo in maniera sicura gestendo voi direttamente il tutto per avere il massimo controllo una soluzione \u00e8 il reverse proxy con autenticazione. Per fare un esempio potreste voler pubblicare in internet una ip cam di sorveglianza che guarda l'esterno di casa. Il <a href=\"https:\/\/www.alblog.it\/index.php\/2018\/05\/02\/esporre-in-maniera-sicura-un-servizio-web-di-casa-propria\/\" class=\"more-link\">...continua a leggere<span class=\"screen-reader-text\"> \"Esporre in maniera sicura un servizio web di casa propria\"<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_feature_clip_id":0,"_jetpack_memberships_contains_paid_content":false,"footnotes":"","jetpack_post_was_ever_published":false},"categories":[14],"tags":[466,265,135,459,465,449,166,468,51,467,175,457,464],"class_list":["post-1191","post","type-post","status-publish","format-standard","category-rete","tag-apache","tag-cifratura","tag-costo","tag-debian","tag-http","tag-https","tag-linux","tag-nat","tag-prezzo","tag-reverseproxy","tag-router","tag-sicurezza","tag-web","h-entry","hentry","h-as-article"],"jetpack_featured_media_url":"","jetpack-related-posts":[],"jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/www.alblog.it\/index.php\/wp-json\/wp\/v2\/posts\/1191","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.alblog.it\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.alblog.it\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.alblog.it\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.alblog.it\/index.php\/wp-json\/wp\/v2\/comments?post=1191"}],"version-history":[{"count":0,"href":"https:\/\/www.alblog.it\/index.php\/wp-json\/wp\/v2\/posts\/1191\/revisions"}],"wp:attachment":[{"href":"https:\/\/www.alblog.it\/index.php\/wp-json\/wp\/v2\/media?parent=1191"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.alblog.it\/index.php\/wp-json\/wp\/v2\/categories?post=1191"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.alblog.it\/index.php\/wp-json\/wp\/v2\/tags?post=1191"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}