{"id":258,"date":"2011-04-14T18:40:57","date_gmt":"2011-04-14T17:40:57","guid":{"rendered":"http:\/\/www.carinato.net\/?p=258"},"modified":"2011-04-14T18:40:57","modified_gmt":"2011-04-14T17:40:57","slug":"proxmox-firewall-e-router-con-un-solo-ip-pubblico","status":"publish","type":"post","link":"https:\/\/carinato.com\/?p=258","title":{"rendered":"Proxmox firewall e router con un solo ip pubblico"},"content":{"rendered":"<p>Ecco come ho impostato il server proxmox per avere un firewall e il routing tramite un unico ip pubblico.<\/p>\n<p>Dal pannello di controllo web abilitare eth0 con l&#8217;ip pubblico senza bridge e vmbr0 con un ip locale:<\/p>\n<pre>...\nauto eth0\niface eth0 inet static\n         address 91.11.22.33\n         netmask 255.255.255.0\n         broadcast 91.11.22.255\n         gateway 91.11.22.254\n\nauto vmbr0\niface vmbr0 inet static\n\u00a0 \u00a0 \u00a0 \u00a0 address 10.254.254.254\n\u00a0 \u00a0 \u00a0 \u00a0 netmask 255.0.0.0\n\u00a0 \u00a0 \u00a0 \u00a0 broadcast 10.255.255.255\n\u00a0 \u00a0 \u00a0 \u00a0 bridge_ports none\n\u00a0 \u00a0 \u00a0 \u00a0 bridge_stp off\n\u00a0 \u00a0 \u00a0 \u00a0 bridge_fd 0\n\n...\n...<\/pre>\n<p>Ora install shorewall<\/p>\n<pre>sudo aptitude install shorewall<\/pre>\n<p>Creo il file <strong>\/etc\/shorewall\/zones<\/strong> e ci scrivo:<\/p>\n<pre>#ZONE   TYPE            OPTIONS         IN                      OUT\n#                                       OPTIONS                 OPTIONS\nfw      firewall\nnet     ipv4\ndmz     ipv4<\/pre>\n<p>Creo il file <strong>\/etc\/shorewall\/interfaces<\/strong> e ci scrivo:<\/p>\n<pre>#ZONE   INTERFACE       BROADCAST       OPTIONS\nnet     eth0            detect          blacklist,nosmurfs\ndmz     venet0          detect          routeback\ndmz     vmbr0           detect          routeback,bridge<\/pre>\n<p>Creo il file <strong>\/etc\/shorewall\/policy<\/strong> e ci scrivo:<\/p>\n<pre>#SOURCE DEST    POLICY          LOG     LIMIT:          CONNLIMIT:\n#                               LEVEL   BURST           MASK\n\n# From Firewall Policy\nfw      fw      ACCEPT\nfw      net     ACCEPT\nfw      dmz     ACCEPT\n\n# From DMZ Policy\n\ndmz     dmz     ACCEPT\ndmz     net     ACCEPT\ndmz     fw      DROP            info\n\n# From Net Policy\nnet     fw      DROP            info\nnet     dmz     DROP            info\n\n# THE FOLLOWING POLICY MUST BE LAST\n#\nall     all     REJECT          info<\/pre>\n<p>Creo il file <strong>\/etc\/shorewall\/rules<\/strong> e ci scrivo:<\/p>\n<pre>#ACTION          SOURCE     DEST       PROTO   DEST        SOURCE     ORIGINAL    RATE\n\n# Permit access to SSH\nSSH\/ACCEPT       net        fw         -       -            -          -        \n  6\/min:5\n\n# Permit access to Proxmox Manager and Console\nACCEPT           net        fw         tcp     443,5900:5999\n\n# PING Rules\nPing\/ACCEPT      all        all\n\n# LAST LINE -- DO NOT REMOVE<\/pre>\n<p>Alla fine la cartella <strong>\/etc\/shorewall<\/strong> dovrebbe contenere i seguenti file:<\/p>\n<pre>drwxr-xr-x  2 root root 4096 Apr 14 15:15 .\ndrwxr-xr-x 77 root root 4096 Apr 14 13:15 ..\n-rw-r--r--  1 root root  453 Nov  8  2007 Makefile\n-rw-r--r--  1 root root  214 Apr 14 15:03 interfaces\n-rw-r--r--  1 root root  494 Apr 14 15:10 policy\n-rw-r--r--  1 root root  517 Apr 14 15:15 rules\n-rw-r--r--  1 root root 4004 Apr 14 13:18 shorewall.conf\n-rw-r--r--  1 root root  183 Apr 14 13:19 zones<\/pre>\n<p>Controllo ora il funzionamento di shorewall:<\/p>\n<pre>shorewall try \/etc\/shorewall 60<\/pre>\n<p>in questo minuto di prova posso provare se risponde il pannello di controllo web di proxmox e se riesco a loggarmi in ssh al server.<\/p>\n<p>Se tutto funziona posso abilitare proxmox all&#8217;avvio automatico: modifico il file <strong>\/etc\/default\/shorewall<\/strong> e cambio:<\/p>\n<pre>startup=0<\/pre>\n<p>in<\/p>\n<pre>startup=1<\/pre>\n<p>Posso ora avviare shorewall manualmente col comando<\/p>\n<pre>shorewall start<\/pre>\n<p>oppure riavviarlo al bisogno con<\/p>\n<pre>shorewall restart<\/pre>\n<p>Per permettere alle macchine virtuali di uscire in internet creo il file <strong>\/etc\/shorewall\/masq<\/strong> e sccrivo:<\/p>\n<pre>#INTERFACE      SOURCE          ADDRESS         PROTO   PORT(S) IPSEC   MARK\neth0            10.0.0.0\/8\n\n# LAST LINE -- DO NOT REMOVE<\/pre>\n<p>per dirottare il traffico web (porta 80) su una macchina virtuale inserisco nel file <strong>\/etc\/shorewall\/rules<\/strong> questa regola:<\/p>\n<pre>DNAT                    net     dmz:10.0.1.101          tcp     80<\/pre>\n<p>Posso anche cambiare porta di destinazione nella macchina virtuale con la regola:<\/p>\n<pre>DNAT                    net     dmz:10.0.1.103:8180     tcp     80<\/pre>\n<p>Le macchine virtuali potranno avere degli indirizzi privati del tipo 10.xxx.yyy.zzz (es 10.0.1.101) ed essere gestiti semplicemente con un&#8217;interfaccia <strong>venet<\/strong>.<\/p>\n<p>Shorewall ha alcune opzioni comode e interessanti:<\/p>\n<pre>safe-restart<\/pre>\n<p>salva la configurazione attuale, quindi applica quella nuova e chiede conferma per mantenere le nuove regole; se la conferma non \u00e8 data entro 60 secondi sono riapplicate le regole precedenti;<\/p>\n<pre>try configuration-directory [timeout]<\/pre>\n<p>riavvia shorewall utilizzando la configurazione presente nella directory specificata e se sono rilevati errori o se il timeout \u00e8 raggiunto, le regole precedenti sono riapplicate;<\/p>\n<pre>show check<\/pre>\n<p>esegue la validazione sintattica della configurazione;<\/p>\n<pre>logwatch<\/pre>\n<p>simile a tail -f $LOGFILE;<\/p>\n<pre>ipcalc <code>[&lt;address&gt; &lt;mask&gt; | &lt;address\/vlsm&gt;]<\/code><\/pre>\n<p>dato un indirizzo di rete, mostra i corrispondenti indirizzi di network, broadcast e netmask.<\/p>\n<p>(per questo post ho preso pesantemente spunto dal seguente: http:\/\/www.myatus.co.uk\/2009\/08\/31\/guide-firewall-and-router-with-proxmox\/)<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Ecco come ho impostato il server proxmox per avere un firewall e il routing tramite un unico ip pubblico. Dal pannello di controllo web abilitare eth0 con l&#8217;ip pubblico senza bridge e vmbr0 con un ip locale: &#8230; auto eth0 iface eth0 inet static address 91.11.22.33 netmask 255.255.255.0 broadcast 91.11.22.255 gateway 91.11.22.254 auto vmbr0 iface [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[9,4],"tags":[16],"class_list":["post-258","post","type-post","status-publish","format-standard","hentry","category-linux","category-webutils","tag-proxmox"],"_links":{"self":[{"href":"https:\/\/carinato.com\/index.php?rest_route=\/wp\/v2\/posts\/258","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/carinato.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/carinato.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/carinato.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/carinato.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=258"}],"version-history":[{"count":0,"href":"https:\/\/carinato.com\/index.php?rest_route=\/wp\/v2\/posts\/258\/revisions"}],"wp:attachment":[{"href":"https:\/\/carinato.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=258"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/carinato.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=258"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/carinato.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=258"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}