Consenso all'uso dei cookies

SITO1 -- SITO2 -- Forum1 -- CercaGlobale -- Informativa su Cookie e Privacy


Valutazione discussione:
  • 0 voto(i) - 0 media
  • 1
  • 2
  • 3
  • 4
  • 5
[GUIDA] iptables
#1
riporterò le basi per capire il funzionamento di iptables per chi fosse interessato a imparare qualcosa di nuovo: il mio testo prende spunto da miei studi, ricerche e ho creato questa guida da me testata e funzionante con esempi di configurazioni che uso attualmente al mio fabbisogno; spiegando passo dopo passo le regole e sintassi.
Ciao.


Allegati
.pdf   guida iptables.pdf (Dimensione: 89,13 KB / Download: 47)
Cita messaggio
Grazie da: esabatad , eu66
#2
Scusa ma le regole di DROP non dovrebbero essere messe PER ULTIME???

Mi sembra che IPTables segue la logica di prendere le regole in SEQUENZA???

Se mettiamo prima DROP:
sudo iptables -P INPUT DROP
sudo iptables -P OUTPUT ACCEPT
sudo iptables -P FORWARD DROP

e poi quelle accettate, lui scarterebbe tutto comunque o mi sbaglio??

Io setto così:
Codice:
# REGOLE FIREWALL per IPv4: #############################################
sudo iptables -A INPUT -i lo -j ACCEPT
sudo iptables -A INPUT -s 192.168.1.0/24 -j ACCEPT
sudo iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

sudo iptables -A INPUT -p icmp --icmp-type 8 -j ACCEPT
sudo iptables -A INPUT -p icmp --icmp-type 3 -j ACCEPT
sudo iptables -A INPUT -p icmp --icmp-type 0 -j ACCEPT
sudo iptables -A INPUT -p tcp --dport 80 -m conntrack --ctstate NEW -j ACCEPT
sudo iptables -A INPUT -p tcp --dport 443 -m conntrack --ctstate NEW -j ACCEPT

sudo iptables -A INPUT -p tcp --dport 4662 -j ACCEPT
sudo iptables -A INPUT -p udp --dport 4672 -j ACCEPT
sudo iptables -A INPUT -p tcp -m state --state NEW --source 192.168.1.0/24 --dport 22 -j ACCEPT
sudo iptables -A INPUT -p tcp --dport 22 -j  ACCEPT

sudo iptables -P INPUT DROP
sudo iptables -P OUTPUT ACCEPT
sudo iptables -P FORWARD DROP

# REGOLE FIREWALL per IPv6: #############################################
sudo ip6tables -A INPUT -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
sudo ip6tables -A INPUT -i lo -j ACCEPT
sudo ip6tables -P INPUT DROP
sudo ip6tables -P FORWARD DROP
Cita messaggio
Grazie da:
#3
Prima devi impostare le regole delle catene, poi devi consentire le sole chiamate esclusive:
Nel mio esempio: iptables -P OUTPUT DROP
iptables -A OUTPUT -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
iptables -A OUTPUT -p tcp --sport 80 -j ACCEPT
iptables -A OUTPUT -p tcp --sport 443 -j ACCEPT
iptables -A OUTPUT -p udp --sport 53 -j ACCEPT
iptables -A OUTPUT -p udp --sport 47 -j ACCEPT

in questo modo ho bloccato tutto, ma imposto una regola in cui io posso interpellare tutte le chiamate nuove, stabilite, connesse dall'esterno per sole determinate porte.
Cita messaggio
Grazie da:
#4
Secondo voi lo script del caro e compianto Teo
http://www.istitutomajorana.it/forum2/Th...untu-16-04
funziona anche per Ubuntu 18.04?

C'è anche quest'altra discussione a riguardo dell'argomento:
http://www.istitutomajorana.it/forum2/Th...1#pid29611 (nel post c'è scritto come eventualmente rimuovere il firewall).
Cita messaggio
Grazie da:
#5
Ciao Marilù,

Questa versione > http://www.istitutomajorana.it/forum2/Th...untu-16-04

funziona sia sotto Ubuntu 18.04.x che ho testato per un amico, sia sul mio sistema MX Linux 18.x, che uso regolarmente.
Cita messaggio
Grazie da: Marilù
#6
Lo script funzionare per tutte le distribuzioni: è sufficiente che crei uno script bash e lo programmi come "programma di avvio".
Se apri la mia guida, spiego come fare.
Cita messaggio
Grazie da: Marilù
#7
Scusa Marco 91,

nel frattempo avevo applicato lo script di Teo che, da quanto ho capito, salva le configurazioni in /etc/init.d/firewall e /etc/init.d/firewall1 senza bisogno di mettere script all'avvio,
invece te  consigli di creare una cartella iptables in etc e di inserire lo script in programmi di avvio.
Che differenza c'è? Undecided

A parte questo ho provato a leggere la tua interessantissima guida ma per me è troppo difficile e in pratica non saprei ricavarci lo script da mettere nelle applicazioni di avvio, quindi ho seguito la "pappa pronta".

Dopo ho disinstallato e installlato da capo i driver della stampante, perché lo script di installazione della Stampante Samsung mi configura il firewall per far funzionare la stampa wifi, adesso il risultato del comandp sudo iptables -L è:


Codice:
Chain INPUT (policy DROP)
target     prot opt source               destination         
ACCEPT     udp  --  anywhere             anywhere             udp spt:snmp dpt:22161
ACCEPT     all  --  anywhere             anywhere            
ACCEPT     all  --  anywhere             anywhere             state RELATED,ESTABLISHED

Chain FORWARD (policy DROP)
target     prot opt source               destination         

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination
 
Spero sia abbastanza sicuro ...

non ho capito se quella serie di porte che leggo nella tua guida vanno bene per tutti o è solo un esempio?

iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A INPUT - p tcp --dport 80 -j ACCEPT
iptables -A INPUT - p tcp --dport 443 -j ACCEPT
iptables -A INPUT -p udp --dport 53 -j ACCEPT
iptables -A INPUT -p udp --dport 47 -j ACCEPT
iptables -A OUTPUT -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
iptables -A OUTPUT -p tcp --sport 80 -j ACCEPT
iptables -A OUTPUT -p tcp --sport 443 -j ACCEPT
iptables -A OUTPUT -p udp --sport 53 -j ACCEPT
iptables -A OUTPUT -p udp --sport 47 -j ACCEPT
Cita messaggio
Grazie da:
#8
Questa configurazione la possono usare tutti: si naviga sui siti attendibili che tutti usiamo (porta 80 e porta 443): google, facebook ecc...
In più consento l'accesso e configurazione di Ip e dns per la connessione alla rete internet. 
l'accesso ad un server può essere automatico, oppure nè configuri uno che ti pare più veloce; ad esempi
Il server di google è 
ip: 8.8.8.8 
dns: 8.8.4.4
Successivamente se ti servono altre porte specifiche,  devi aprire i protocolli interessati nello script:

Faccio una descrizione:

Questa è la mia configurazione e adesso provo a spiegarla: è una semplice configurazione di rete per la navigazione, allo scopo di bloccare qualsiasi porta sia in ingresso e uscita.
Ogni funzione di connessione di rete, richiede una specifica porta per un servizio: wikipedia torna utile, ma devi sapere come funziona la trasmissione dei dati che ti interessa: https://it.wikipedia.org/wiki/Lista_di_porte_standard
La configurazione che uso blocca blocca ogni possibile accesso, tranne la chiamata e uscita di specifiche porte per il collegamento ai siti che navighiamo normalmente come google (porta 80 in ingresso e 443 per l'uscita), connessione di rete ip ( porta 53), connessione di rete dns (porta 47)
Se tuo vuoi collegarti alla semplice rete internet, con questa mia configurazione sei protetto da qualsiasi controllo dall'esterno, tipo ssh (porta 22) in quanto il kernel non chiedo la chiamata.
In compenso puoi anche non configurare Iptables perchè le porte sono già bloccate dal tuo router di default come t'ho mostrato adesso, ma per una ulteriore sicurezza le riporto anche in uno script per il kernel.
Se tu volessi aprire la porta 22 per il servizio ssh, devi aprire la connessione di rete nel tuo router e consentire al kernel linux di comunicare sia in ingresso e uscita con questa porta.
Ho fatto il pignolo bloccandole, per mio sfizio, affinchè non abbia possibili controlli dall'interno all'esterno del mio pc.
Per una semplice configurazione puoi aprire le porte esterne al tuo pc (OUTPUT), in quanto sei tu che avvii una "chiamata", ma tu devi bloccare l'ingresso INPUT (consentire il collegamento dal tuo pc verso la rete esterna).
Una configurazione semplice poteva essere:
iptables -P INPUT -j DROP
iptables -P OUTPUT -j ACCEPT
iptables -P FORDWARD -j ACCEPT
iptables -A INPUT -m state --state, ESTABLISHED,RELATED -j ACCEPT
Facendo questa semplice configurazione dovevi solo aprire le porte dal tuo pc verso l'esterno (INPUT) per accedere e smistare i dati di trasmissione con l'ip interessato, ma devi aggiungere il "consenso" di stabilire una connessione di risposta "stabilita (ESTABLISHED)", "relativa (RELATED)" .
Non deve essere impostata una regola NEW (nuova connessione) per non accettare qualsiasi nuova connessione possibile senza sicurezza: sarebbe inutile impostare una regola NEW, in quanto la politica "police INPUT -J DROP", blocca già le connessione nuove non da te consentite.
Mettere "NEW" non avrebbe senso e il kernel nel medesimo blocca e accetta nuove connessione: non avresti la connessione ugualmente per la Policy DROP.
Si è costretti mettere NEW in OUTPUT per consentire a te qualsiasi chiamata, siccome ho messo DROP come politica IPTABLES -A OUPUT -j DROP.
Se avessi messo IPTABLES -A OUTPUT -j ACCEPT, non serve mettere una politica "m-state --state"


Iptables -P INPUT DROP
iptables -P OUTPUT DROP
iptables -P FORWARD DROP
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A INPUT - p tcp --dport 80 -j ACCEPT
iptables -A INPUT - p tcp --dport 443 -j ACCEPT
iptables -A INPUT -p udp --dport 53 -j ACCEPT
iptables -A INPUT -p udp --dport 47 -j ACCEPT
iptables -A OUTPUT -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
iptables -A OUTPUT -p tcp --sport 80 -j ACCEPT
iptables -A OUTPUT -p tcp --sport 443 -j ACCEPT
iptables -A OUTPUT -p udp --sport 53 -j ACCEPT
iptables -A OUTPUT -p udp --sport 47 -j ACCEPT

La politica "anywhere" è come IPTBALES -A INPUT ACCEPT; IPTABLES -A OUTUP ACCEPT; IPTABLES -A FORDWARD ACCEPT.
La politca è di default hai tutto aperto e solo il router ti blocca le porte.
Cita messaggio
Grazie da:


Vai al forum:


Utenti che stanno guardando questa discussione: 1 Ospite(i)