﻿{"id":292,"date":"2009-04-08T17:55:44","date_gmt":"2009-04-08T16:55:44","guid":{"rendered":"http:\/\/www.flapane.com\/blog\/?p=292"},"modified":"2014-04-25T20:08:36","modified_gmt":"2014-04-25T19:08:36","slug":"iptables-semplici-regole-per-un-firewall-casalingo","status":"publish","type":"post","link":"https:\/\/www.flapane.com\/blog\/2009\/04\/iptables-semplici-regole-per-un-firewall-casalingo\/","title":{"rendered":"Iptables : semplici regole per un firewall casalingo"},"content":{"rendered":"<p><img decoding=\"async\" loading=\"lazy\" class=\"alignnone wp-image-1953 image\" src=\"https:\/\/www.flapane.com\/blog\/wp-content\/uploads\/2009\/04\/firewall.jpg\" alt=\"firewall\" width=\"400\" height=\"231\" \/><\/p>\n<p style=\"text-align: justify;\">Iptables per Linux (fra cui Ubuntu \u00e8 probabilmente la pi\u00f9 diffusa) \u00e8 il programma con cui ci si interfaccia con netfilter, che permette di intercettare, bloccare pacchetti, in maniera pi\u00f9 spicciola permette ad un utente di decidere quali connessioni voglia bloccare, e quali porte voglia aprire per consentire quel determinato traffico (es. aprire la porta 21 per permettere ad un utente di collegarsi al computer locale, che fa girare un server ftp).<\/p>\n<p style=\"text-align: justify;\">Di default, se nessuno ha configurato il firewall, iptables bloccher\u00e0 tutte le connessioni in ingresso, il che significa che se qualcuno prover\u00e0 a collegarsi al computer attraverso quel servizio (ftp, mail) ricever\u00e0 un bel <em>TIMEOUT<\/em>.<\/p>\n<p style=\"text-align: justify;\">Questo \u00e8 facilmente verificabile digitando, in una shell:<span class=\"no_translate\"><!--more--><\/span><\/p>\n<pre class=\"brush:shell\">sudo iptables -L<\/pre>\n<p style=\"text-align: justify;\"><\/span>il risultato sar\u00e0<span class=\"no_translate\"><\/span><\/p>\n<pre class=\"brush:shell\">Chain INPUT (policy ACCEPT)\r\ntarget     prot opt source               destination<\/pre>\n<p style=\"text-align: justify;\"><\/span>senza ulteriori dettagli sulle porte aperte.<br \/>\nQuesto tipo di configurazione pu\u00f2 anche andar bene per una buona parte degli utenti, ma non va pi\u00f9 bene nel momento in cui, come scritto sopra, avr\u00e0 bisogno di far girare un server ftp sul computer e di permettere ad utenti remoti di accedervi, oppure vorr\u00e0 accedere al computer in remoto utilizzando il servizio ssh (<em>Secure shell<\/em>).<\/p>\n<p style=\"text-align: justify;\">C&#8217;\u00e8 quindi bisogno di individuare il servizio che si vuole rendere accessibile all&#8217;esterno, capire quale sia la porta tcp o udp associata (di default, per es. 21 per ftp, 22 per ssh).<br \/>\nFatto questo, \u00e8 comodo creare un piccolo script che verr\u00e0 lanciato automaticamente all&#8217;avvio del computer (perch\u00e8 altrimenti, al successivo riavvio, iptables avr\u00e0 &#8220;dimenticato&#8221; tutte le regole che avete impostato).<\/p>\n<p style=\"text-align: justify;\">Un esempio potrebbe essere un file di questo tipo:<span class=\"no_translate\"><\/span><\/p>\n<pre class=\"brush:shell\">iptables -P OUTPUT ACCEPT\r\niptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT\r\niptables -A INPUT -p tcp --dport 4682 -j ACCEPT\r\niptables -A INPUT -p udp --dport 4692 -j ACCEPT\r\niptables -A INPUT -p tcp --dport 6890:6900 -j ACCEPT\r\niptables -A INPUT -p udp --dport 6890:6900 -j ACCEPT\r\niptables -A INPUT -p tcp --dport 25 -j ACCEPT\r\niptables -A INPUT -p tcp --dport 22 -j ACCEPT\r\niptables -A INPUT -p tcp --dport 2077 -j ACCEPT<\/pre>\n<p style=\"text-align: justify;\"><\/span>Dove le righe del tipo iptables -A INPUT -p tcp &#8211;dport NUMERO_PORTA -j ACCEPT dicono di aprire la porta tcp numero NUMERO_PORTA.<br \/>\nLe righe del tipo iptables -A INPUT -p udp &#8211;dport NUMERO_PORTA -j ACCEPT permettono di aprire la porta NUMERO_PORTA udp.<br \/>\nLe porte del tipo NUMERO_PORTA1:NUMERO_PORTA2 significa aprire tutte le porte nell&#8217;intervallo compreso fra queste due porte.<\/p>\n<p style=\"text-align: justify;\">A questo punto non rimane che salvare lo script, renderlo eseguibile (sudo chmod +x nomescript) e copiarlo in \/etc\/init.d<br \/>\nAl successivo riavvio, le regole verranno caricate nel firewall. Se si vogliono testare le regole appena create senza riavviare, \u00e8 sufficiente digitare<span class=\"no_translate\"><\/span><\/p>\n<pre class=\"brush:shell\">sudo iptables nomedelvostroscript<\/pre>\n<p style=\"text-align: justify;\"><\/span>e verificarle con sudo iptables -L.<\/p>\n<p style=\"text-align: justify;\">Ovviamente nulla vieta di utilizzare una gui per impostare le regole graficamente, ma credo sia necessario capire un minimo il funzionamento per poter gestire il proprio firewall prima di utilizzare uno strumento grafico.<\/p>\n<p style=\"text-align: justify;\"><span style=\"color: #ff0000;\"><strong>UPDATE DEL 15 APRILE 2009:<\/strong><\/span><\/p>\n<p style=\"text-align: justify;\">Ecco un elenco dei principali servizi tcp\/udp e le relative porte (<a title=\"elenco porte tcp\" href=\"http:\/\/www.iana.org\/assignments\/port-numbers\">link<\/a>)<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Iptables per Linux \u00e8 il programma con cui ci si interfaccia con netfilter, che permette di intercettare, bloccare pacchetti, in maniera pi\u00f9 spicciola permette ad un utente di decidere quali connessioni voglia bloccare, e quali porte voglia aprire per consentire quel determinato traffico (es. aprire la porta 21 per permettere ad un utente di collegarsi al computer locale, che fa girare un server ftp)<\/p>\n<p>Di default, se nessuno ha configurato il firewall, iptables bloccher\u00e0 tutte le connessioni in ingress[&#8230;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":[],"categories":[16],"tags":[101,100,19,15,66,300],"aioseo_notices":[],"_links":{"self":[{"href":"https:\/\/www.flapane.com\/blog\/wp-json\/wp\/v2\/posts\/292"}],"collection":[{"href":"https:\/\/www.flapane.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.flapane.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.flapane.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.flapane.com\/blog\/wp-json\/wp\/v2\/comments?post=292"}],"version-history":[{"count":0,"href":"https:\/\/www.flapane.com\/blog\/wp-json\/wp\/v2\/posts\/292\/revisions"}],"wp:attachment":[{"href":"https:\/\/www.flapane.com\/blog\/wp-json\/wp\/v2\/media?parent=292"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.flapane.com\/blog\/wp-json\/wp\/v2\/categories?post=292"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.flapane.com\/blog\/wp-json\/wp\/v2\/tags?post=292"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}