FIREWALL iptables V1.1 del 18/03/2013



Похожие документы
Firewall e NAT A.A. 2005/2006. Walter Cerroni. Protezione di host: personal firewall

Filtraggio del traffico IP in linux

Tre catene (chains) di base, si possono definire altre catene (convenzionalmente in minuscolo)

Appunti configurazione firewall con distribuzione Zeroshell (lan + dmz + internet)

Sicurezza nelle reti


Iptables. Mauro Piccolo

TCP e UDP, firewall e NAT

PACKET FILTERING IPTABLES

Packet Filter in LINUX (iptables)

Esercitazione 05. Sommario. Packet Filtering [ ICMP ] Esercitazione Descrizione generale. Angelo Di Iorio (Paolo Marinelli)

Corso avanzato di Reti e sicurezza informatica

Transparent Firewall

Crittografia e sicurezza delle reti. Firewall

Netfilter: utilizzo di iptables per

INTRODUZIONE ALLE RETI: UN APPROCCIO PRATICO

Ordine delle regole (1)

Invio SMS. DM Board ICS Invio SMS

Esercitazione 5 Firewall

esercizi su sicurezza delle reti maurizio pizzonia sicurezza dei sistemi informatici e delle reti

Innanzitutto, esistono diversi modi per realizzare una rete o più reti messe insieme; vi illustro la mia soluzione :

Il livello 3 della pila ISO/OSI. Il protocollo IP e il protocollo ICMP

A intervalli regolari ogni router manda la sua tabella a tutti i vicini, e riceve quelle dei vicini.

Guida all impostazione. Eureka Web

Manuale Amministratore Legalmail Enterprise. Manuale ad uso degli Amministratori del Servizio Legalmail Enterprise

Corso GNU/Linux Avanzato Uso e configurazione di un firewall usando iptables

Elementi sull uso dei firewall

Laboratorio di Reti Esercitazione N 2-DNS Gruppo 9. Laboratorio di Reti Relazione N 2. Mattia Vettorato Alberto Mesin

Protocolli applicativi: FTP

Dal menù Network/Interface/Ethernet configurare le interfacce WAN e LAN con gli opportuni ip:

GUIDA UTENTE PRIMA NOTA SEMPLICE

Guida alla registrazione on-line di un DataLogger

SOMMARIO... 2 Introduzione... 3 Configurazione Microsoft ISA Server... 4 Microsoft ISA Server Microsoft ISA Server

Registratori di Cassa

COSTER. Import/Export su SWC701. SwcImportExport

BACKUP APPLIANCE. User guide Rev 1.0

Che cos'è un modulo? pulsanti di opzione caselle di controllo caselle di riepilogo

NetMonitor. Micro guida all uso per la versione di NetMonitor

2.5. L'indirizzo IP identifica il computer di origine, il numero di porta invece identifica il processo di origine.

Modulo. Programmiamo in Pascal. Unità didattiche COSA IMPAREREMO...

Olga Scotti. Basi di Informatica. File e cartelle

Sommario. Introduzione. Creazione di un firewall su GNU/Linux con iptables.

INTERNET e RETI di CALCOLATORI A.A. 2011/2012 Capitolo 4 DHCP Dynamic Host Configuration Protocol Fausto Marcantoni fausto.marcantoni@unicam.

PORTALE CLIENTI Manuale utente

1.0 GUIDA PER L UTENTE

Gestione delle informazioni necessarie all attività di validazione degli studi di settore. Trasmissione degli esempi da valutare.

Firewall e Abilitazioni porte (Port Forwarding)

Editor vi. Editor vi

SCENARI. v (Maggio 2015)

PANNELLO DI CONTROLLO

Access Control List (I parte)

Interfaccia di base di GroupWise WebAccess

BREVE GUIDA ALL ATTIVAZIONE DEL SERVIZIO DDNS PER DVR SERIE TMX

Istruzioni per la configurazione di IziOzi

Il firewall ipfw. Introduzione ai firewall. Problema: sicurezza di una rete. Definizione di firewall. Introduzione ai firewall

PROCEDURA DI CHIUSURA ANNO FISCALE 2006 CON E-SHOP

Riccardo Dutto, Paolo Garza Politecnico di Torino. Riccardo Dutto, Paolo Garza Politecnico di Torino

5-1 FILE: CREAZIONE NUOVO DOCUMENTO

Guida Software GestioneSpiaggia.it

Tabelle di riferimento Pulsanti Inserire documento Predisposizione doc Approvazione Doc Numerazione Doc Pubblicazione Albo Webservice

Guida. Macchina Scratch

MODELLO CLIENT/SERVER. Gianluca Daino Dipartimento di Ingegneria dell Informazione Università degli Studi di Siena

Firewall con IpTables

MANUALE UTENTE Fiscali Free

Besnate, 24 Ottobre Oltre il Firewall.

HORIZON SQL MENU' FILE

File Server Resource Manager (FSRM)

Per la connessione del router 3Com Office Connect Remote 812 ad un singolo computer è sufficiente rispettare il seguente schema:

Introduzione. Installare EMAS Logo Generator

IPSec VPN Client VPN vs serie ZyWALL con PSK e Certificati digitali

Procedura di installazione di Xubuntu 8.10 su un PC

BMSO1001. Virtual Configurator. Istruzioni d uso 02/10-01 PC

Titolo: Documento: Data di redazione: ottobre 2011 Autore: Contenuto del documento: Materiale utilizzato: Considerazioni iniziali:

progecad NLM Guida all uso Rel. 10.2

Manuale Utente MyFastPage

Reti. Reti. IPv4: concetti fondamentali. arp (address resolution protocol) Architettura a livelli (modello OSI)

RISOLUTORE AUTOMATICO PER SUDOKU

Manuale per la configurazione di AziendaSoft in rete

PRODUZIONE PAGELLE IN FORMATO PDF

Start > Pannello di controllo > Prestazioni e manutenzione > Sistema Oppure clic destro / Proprietà sull icona Risorse del computer su Desktop

Kernel Linux 2.4: firewall 1985

FOXWave Gestione gare ARDF IZ1FAL Secco Marco Sezione ARI BIELLA

Il Programma... 3 I moduli... 3 Installazione... 3 La finestra di Login... 4 La suite dei programmi... 6 Pannello voci... 10

Antonio Cianfrani. Extended Access Control List (ACL)

MANUALE PARCELLA FACILE PLUS INDICE

Figura 1 Le Icone dei file di Excel con e senza macro.

StoneFax User Guide. (Settembre 2011 ver.1.1) StoneFax-User-Guide-ita-1.1.docx

IBM Lotus Notes Guida per utenti

NUOVA PROCEDURA COPIA ED INCOLLA PER L INSERIMENTO DELLE CLASSIFICHE NEL SISTEMA INFORMATICO KSPORT.

Gestione Turni. Introduzione

Il sofware è inoltre completato da una funzione di calendario che consente di impostare in modo semplice ed intuitivo i vari appuntamenti.

Laboratorio di. Reti Informatiche. Corso di Laurea Triennale in Ingegneria Informatica A.A. 2016/2017. Ing. Niccolò Iardella

per immagini guida avanzata Uso delle tabelle e dei grafici Pivot Geometra Luigi Amato Guida Avanzata per immagini excel

FPf per Windows 3.1. Guida all uso

GateManager. 1 Indice. tecnico@gate-manager.it

Modulo 4 Il pannello amministrativo dell'hosting e il database per Wordpress

Транскрипт:

FIREWALL iptables V1.1 del 18/03/2013 1/18

Copyright 2013 Dott.Ing. Ivan Ferrazzi Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.2 or any later version published by the Free Software Foundation; with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. 2/18

Indice generale CONCETTI BASE...4 Che cosa è iptalbes?...4 Il modello a tabelle/catene di iptables...4 IL COMANDO iptables...7 La struttura del comando...7 Le operazioni su tabelle e catene...7 Il controllo sui pacchetti...9 Le azioni sui pacchetti identificati...12 ip_forward del kernel...13 Eseguire iptables all'avvio...14 ESEMPI PRATICI...16 Regole per aprire il collegamento internet...16 Regole per aprire il collegamento FTP...16 Regole per proxy server trasparenti...17 Regole per inoltrare le richieste ad un servizio ssh interno...17 3/18

CONCETTI BASE Che cosa è iptalbes? iptables è il programma per la gestione del netfiltering su sistemi GNU/Linux. Un pacchetto quando passa per il nostro computer per raggiungere la destinazione prescelta effettua un percorso ben preciso. All'interno di questo percorso deve passare attraverso a delle tappe ben precise. La potenzialità di iptables è proprio quella di riuscire a riconoscere, e all'occorrenza manipolare, i pacchetti che gli interessano. Ogni pacchetto viene sottoposto a determinate regole che definiscono un comportamento all'interno di ogni tappa. Le regole desiderate vengono registrare all'interno di catene appartenenti a tabelle, dove combinazione tabella/catena rappresenta una tappa diversa all'interno dell'intero percorso. Il nome di iptables deriva proprio dal fatto di utilizzare delle tabelle per la registrazione di regole sui pacchi ip. Il modello a tabelle/catene di iptables Le tabelle gestite da iptables sono tre, ossia: MANGLE, NAT e FILTER. Ogni tabella contiene delle catene ben precise. La parola catena viene utilizzata per rappresentare simbolicamente le regole concatenate in sequenza tra loro (come gli anelli di una catenta). Le catene presenti all'interno delle varie tabelle sono: MANGLE: 4/18

NAT: PREROUTING INPUT FORWARD OUTPUT POSTROUTING PREROUTING OUTPUT POSTROUTING FILTER: INPUT FORWARD OUTPUT Quando un pacchetto entra all'interno del nostro computer passando per una scheda di rete entra nel così chiamato kernel space. Il kernel space è lo spazio del kernel dove il pacchetto passa per la tappa mangle PREROUTING, poi per nat PREROUTING. Il kernel ora deve controllare la destinazione del pacchetto indirizzandolo per INPUT (se il pacchetto è destinato ad un servizio che gira sul computer in locale) oppure FORWARD (se il pacchetto è indirizzato ad un computer diverso dal nostro e va quindi mandato avanti). Se il pacchetto è destinato ad un servizio locale passa per la tappa mangle INPUT, poi filter INPUT, esce dal kernel space ed entra nel user space dove trova il servizio desiderato. Se il pacchetto è invece destinato ad un altro computer il pacchetto rimane all'interno del kernel space passando in sequenza per le tappe mangle FORWARD, filter FORWARD, mangle POSTROUTING e nat POSTROUTING, per poi uscire su un'interfaccia di rete. Pacchetti che vengono generati nello user space in locale attraversano il kernel space passando per le tappe nat OUTPUT, filter OUTPUT, mangle POSTROUTING e nat POSTROUTING, per poi uscire su un'interfaccia di rete. 5/18

6/18

IL COMANDO iptables La struttura del comando Il comando iptables è composto da una sezione all'interno della quale vanno definite le operazioni da eseguire, una per il controllo del pacchetto ed un'altra per definire l'azione da eseguire nel caso in cui il pacchetto corrisponda al controllo effettuato. Abbiamo quindi la seguente struttura iptables <operazione> <controllo> <azione> Le operazioni su tabelle e catene Come definito precedentemente ogni regola viene inserita in sequenza all'interno della catena di una rispettiva tabella. Per questo motivo abbiamo a disposizione diverse opzioni che ci permettono di effettuare determinate operazioni. La prima opzione che di solito si utilizza è -t con la quale è possibile definire la tabella all'interno della quale vogliamo inserire le regole di controllo. Se non utilizzata all'interno del comando verrà utilizzata la tabella filter. Altrimenti possiamo utilizzare mangle oppure nat. Alcune opzioni generali del comando iptables sono: -v, --verbose Attiva la visualizzazione verbale (più dettagliata). 7/18

-n, --numeric Quando vengono utilizzati degli indirizzi ip all'interno delle regole iptables cerca di risolverle prima di visualizzare su schermo mediante parametro -L. Questo parametro mostra il contenuto della regola senza effettuare il resolving. --line-numbers Questo parametro visualizza il numero identificativo di ogni regola presente all'interno di una catena. Le opzioni che possiamo utilizzare per gestire le tabelle ed i loro contenuti sono: -N, --new-chain catena Per creare una nuova catena personalizzata all'interno della rispettiva tabella -X, --delete-chain [catena] Per cancellare catene personalizzate, se vuote -E, --rename-chain [catena vecchia] [catena nuova] Per rinominare una catena personalizzata. Vengono passati come parametri il nome vecchio e quello nuovo. -L, --list [catena] Elenca le regole presenti all'interno di una tabella. Questa opzione può essere utilizzata con l'opzione --line-numbers che visualizza vicino ad ogni regola il rispettivo numero di riga (da utilizzare in caso di -I, -D oppure -R). -F, --flush [catena] Cancella le regole all'interno della catena in questione. Se non viene passato nessun parametro questa cancella il contenuto di tutte le catene presenti all'interno della tabella identificata da -t oppure filter se non indicato. -Z, --zero [catena] Azzera i contatore di una catena, o di tutte se non si passa nessun parametro. -P, --policy catena policy Permette di definire le policy di default, ossia l'azione da effettuare su tutti i pacchetti che raggiungono la fine della catena. Possono essere modificate solamente le policy delle catene di sistema e non di eventuali catene personalizzate. Opzioni per gestire le regole: -A, --append catena regole 8/18

Permette di aggiungere una nuova regola come ultimo elemento dell'elenco attualmente presente nella catena. -D, --delete catena posizione Permette di eliminare una regola identificata dalla sua posizione numerica. La prima regola all'interno di una catena viene identificata dal numero 1. iptables -D INPUT 1 -R, --replace catena posizione Permette di rimpiazzare una regola identificata dalla sua posizione numerica. La prima regola all'interno di una catena viene identificata dal numero 1. iptables -R INPUT 1 -p tcp --dport 22 -j DROP -I, --insert catena [posizione] Inserire una nuova regola in una posizione specifica all'interno della catena. La prima regola all'interno di una catena viene identificata dal numero 1. La nuova regola viene inserita all'interno della posizione specificata. Tutte le regole a partire dalla posizione indicata vengono spostate verso il basso. iptables -I INPUT 1 -p tcp --dport 22 -j DROP Il controllo sui pacchetti Nel momento in cui un pacchetto raggiunge una tappa dovrà essere sottoposto ad un controllo ben preciso. iptables mette a disposizione una serie di opzioni che permettono di controllare le informazioni contenute all'interno di un pacchetto. Vediamo alcune di esse: [!] -p, --protocol protocollo La presente opzione definisce il protocollo del pacchetto, ossia tcp, udp, udplite, icmp, esp, ah, sctp, oppure all. L'utilizzo del protocollo tcp e udp attivano nuove opzioni come: --sport --dport con la quale si può definire la porta sorgente con la quale si può definire la porta di destinazione [!] -s, --source indirizzo_ip[/maschera] Permette di definire l'indirizzo ip di sorgente. [!] -d, --destination indirizzo_ip[/maschera] 9/18

-j, --jump azione Permette di definire l'indirizzo ip di destinazione. Permette di definire l'azione da utilizzare per la regola in questione. -g, --goto catena_personalizzata Permette di passare ad una catena personalizzata. [!] -i, --in-interface nome Identifica l'interfaccia utilizzata per ricevere il pacchetto. [!] -o, --out-interface nome Identifica l'interfaccia utilizzata per inviare il pacchetto. iptables permette di utilizzare dei moduli aggiuntivi. Per poter utilizzare un modulo con tutte le sue opzioni possibili all'interno di un comando di iptables mettiamo -m con il nome del modulo. Vediamo alcuni moduli: -m mac Il presente modulo attiva le proprietà utilizzate per identificare la mac address. L'opzione da usare per identificare un indirizzo mac è --mac-source. -m ttl Il presente modulo attiva le proprietà utilizzate per identificare il campo ttl. Le opzioni da usare per identificare il campo ttl sono --ttl-eq, (il valore deve essere uguale), --ttl-gt (il valore deve essere maggiore al valore inserito) oppure --ttl-lt (il valore deve essere minore al valore inserito). -m state Il presente modulo attiva le proprietà utilizzate per identificare lo stato di un pacchetto in relazione alle eventuali connessioni effettuate. L'opzione da usare per identificare lo stato di un pacchetto è --state. Come stato di connessione ne possiamo identificare uno dei seguenti: NEW ESTABLISHED RELATED In questo caso vengono riconosciuti i pacchetti SYN utilizzati per effettuare una connessione In questo caso vengono riconosciuti tutti i pacchetti che appartengono ad una connessione, tranne il SYN iniziale In questo caso vengono riconosciuti tutti i pacchetti che appartengono ad una connessione di riferimento, es. 10/18

INVALID FTP su porta 21 per i comandi e 20 per il passaggio dei dati. In questo caso vengono riconosciuti tutti i pacchetti che non appartengono ad una connessione. Nel caso in cui arrivasse un pacchetto FIN senza connessione iniziale verrebbe identificato come non valido -m time Il presente modulo attiva le proprietà utilizzate per identificare l'ora e la data del pacchetto in arrivo. Tutte le opzioni qui di seguito sono opzionali, ma vengono concatenate con e-logico se inserite. Vediamo alcune opzioni che si attivano con l'utilizzo di questo modulo: --datestart AAAA[-MM[-GG[Thh[:mm[:ss]]]]] --datestop AAAA[-MM[-GG[Thh[:mm[:ss]]]]] Con queste opzioni possiamo definire l'intervallo di tempo in base alle nostre esigenze dove AAAA definisce l'anno, MM il mese, GG il giorno, hh l'ora, mm i minuti e ss i secondi. --timestart hh:mm[:ss] --timestop hh:mm[:ss] In questo caso definiamo solo il periodo di tempo in base all'orario dove hh definisce l'ora, mm i minuti e ss i secondi. [!] --monthday giorno[,giorno...] In questo caso definiamo il giorno del mese con dei valori che vanno da 1 a 31. Il punto esclamativo (!) permette di escludere i giorni definiti. [!] --weekdays giorno[,giorno...] In questo caso definiamo il giorno della settimana con dei valori che vanno da 1 a 7, oppure rispettivamente Mon, Tue, Wed, Thu, Fri, Sat e Sun. E' possibile utilizzare anche una forma a due caratteri come Mo, Tu, ecc. Le azioni sui pacchetti identificati Nel momento in cui un pacchetto raggiunge una tappa dovrà essere sottoposto ad un controllo ben preciso. Il kernel dovrà, infatti, sottoporre il pacchetto alle singole regole presenti all'interno della rispettiva catena 11/18

per identificare eventuali corrispondenze. Nel caso in cui venisse trovata una corrispondenza il kernel terminerebbe il controllo. Ora però dovrebbe anche sapere che farne del pacchetto identificato. Ecco che diventa importante quindi definire per ogni regola l'azione da svolgere sul pacchetto in questione. iptables permette di utilizzare delle azioni elementari, chiamate special target, oppure delle azioni definite da moduli aggiuntivi, chiamate target extension. Le azioni vengono introdotto dal comando iptables mediante opzione -j. Le azioni elementari sono: ACCEPT DROP QUEUE RETURN I pacchetti passano direttamente e vengono mandati alla prossima tappa I pacchetti vengono direttamente scartati e non più mandati avanti. Al mittente non viene mandato un messaggio di errore. I pacchetti vengono mandati direttamente allo user space dove possono essere elaborati dai dovuti programmi. I pacchetti interrompono l'attraversamento dell'attuale catena e vengono rimandati alla catena principale. Nel caso in cui il pacchetto si trovasse già nella catena principale verrà sottoposto all'azione di default di essa. Alcune delle azioni aggiuntive sono: DNAT Con questa azione è possibile modificare l'indirizzo ip di destinazione dei pacchetti. Il DNAT (Destination Network Address Translation) è però presente come azione solamente all'interno delle catene PREROUTING e OUTPUT della tabella nat. Le opzioni che possiamo utilizzare sono: --to-destination [ip][:port] con il quale possiamo definire l'indirizzo ip di destinazione (con relativa porta), oppure un intervallo di indirizzi ip da utilizzare. E' possibile definire anche solo la porta. Alcuni esempi: --to-destination 192.168.0.1 --to-destination :80 --to-destination 192.168.0.1-192.168.0.5 LOG Con questa azione abilitiamo la registrazione nel logfile di determinati pacchetti. Il logging viene effettuato da syslog all'interno del file /var/log/messages al quale viene passato il pacchetto utilizzando la facility kern. Questa azione mette a disposizione una serie di opzioni, alcune delle quali sono: 12/18

--log-level --log-prefix con il quale possiamo definire il livello di log definito all'interno di syslog. con questa opzione possiamo definire una stringa di caratteri (massimo 29) da aggiungere al messaggio di log oridinale. MASQUERADE REJECT REDIRECT SNAT Questa azione è presente solamente all'interno della catena POSTROUTING della tabella nat. Questa azione è una forma abbreviata dell'azione SNAT e ha il compito di sostituire l'indirizzo ip di sorgente con il proprio indirizzo. Questa azione è equivalente a DROP solo che viene invato un messaggio di errore per indicare la cancellazione del pacchetto. Questa azione è presente solamente all'interno delle catene PREROUTING e OUTPUT della tabella nat. Possiamo utilizzare questa azione per modificare il numero della porta di destinazione con l'opzione aggiuntiva --to-ports. Questa azione viene utilizzata per cambiare l'indirizzo ip di sorgente del pacchetto. L'azione è presente solamente all'interno della catena POSTROUTING della tabella nat. Con questa azioni si possono utilizzare le seguenti opzioni: --to-source con il quale possiamo definire l'indirizzo ip di sorgente, oppure un intervallo di indirizzi ip da utilizzare Alcuni esempi: --to-source 192.168.0.1 --to-source 192.168.0.1-192.168.0.5 ip_forward del kernel Il kernel mette a disposizione una serie di funzionalità che si possono attivare quando il kernel è in esecuzione. Queste funzionalità vengono messe a disposizione degli utente mediante una serie di file di testo che, il più delle volte, possono contenere il valore 0 (funzionalità non attiva), oppure 1 (funzionalità attiva). La funzionalità che interessa a noi viene attivata mediante il seguente file di testo: /proc/sys/net/ipv4/ip_forward 13/18

Per attivare questa funzionalità possiamo scrivere semplicemente echo 1 > /proc/sys/net/ipv4/ip_forward Questa funzionalità permette al kernel di effettuare l'ip forwarding, ossia il girare semplicemente pacchetti che arrivano da una rete su un'altra rete riconosciuta dal computer stesso. L'ip forwarding è indispensabile sulle macchine che devono unire due o più reti informatiche, quindi nella realizzazione di un route, gateway, proxy, firewall, ecc. Eseguire iptables all'avvio La serie di inserimenti che effettuiamo con il comando iptables vengono registrate all'interno delle relative tabelle. Nel momento in cui facciamo ripartire la nostra macchina perdiamo tutte le regole registrate con iptables. Per questo motivo si consiglia di creare un bash script con all'interno tutti i comandi di iptables. Questo file verrà poi reso eseguibile ed inserito all'interno di un runlevel per farlo partire in automatico. Come prima cosa creiamo il file lo chiamiamo iptables.conf all'interno della cartella /etc: #!/bin/bash # attivare ip_forward echo 1 > /proc/sys/net/ipv4/ip_forward # svuotare le attuali regole iptables -F # regole per disabilitare ssh dall'esterno iptables -A INPUT -p tcp --dport 22 -j DROP Dopo aver salvato il file andiamo a renderlo eseguibile. I processi all'interno del runlevel verranno eseguiti come root. Per questo motivo attiviamo il permesso per l'esecuzione solamente all'utente proprietario root come segue chmod 744 iptables.conf Ora proviamo ad eseguire il file creato con./iptables.conf e controlliamo l'attuale contenuto delle catene della tabella filter iptables -L Se vediamo apparire la regola che abbiamo inserito non abbiamo 14/18

commesso errori. Ora controlliamo l'attuale runlevel per capire da dove far partire il nostro bash script. runlevel In base al runlevel creiamo un link simbolico all'interno della rispettiva cartella. Se runlevel restituisce 2 ci spostiamo nella cartella /etc/rc2.d e creiamo il link simbolico come segue ln -s /etc/iptables.conf S99iptables 15/18

ESEMPI PRATICI Regole per aprire il collegamento internet Vediamo come aprire il collegamento ad internet su un firewall che gestisce sull'interfaccia eth0 la rete interna e sull'interfaccia eth1 la rete esterna. Per un collegamento ad internet dobbiamo aprire le porte 53 e 80 (DNS e HTTP). echo 1 > /proc/sys/net/ipv4/ip_forward iptables -t nat -A POSTROUTING -o eth1 -j MASQUERADE iptables -A FORWARD -i eth0 -p udp --dport 53 \ -m state --state NEW,ESTABLISHED -j ACCEPT iptables -A FORWARD i eth0 -p tcp --dport 80 \ -m state --state NEW,ESTABLISHED -j ACCEPT iptables -A FORWARD -i eth1 -p udp --sport 53 \ -m state --state RELATED,ESTABLISHED -j ACCEPT iptables -A FORWARD i eth1 -p tcp --sport 80 \ -m state --state RELATED,ESTABLISHED -j ACCEPT iptables -A FORWARD -j DROP Regole per aprire il collegamento FTP Vediamo come aprire le porte di un server ftp per garantire il passaggio a connessioni ftp attive e passive. Qui è importante attivare i moduli ip_conntrack_ftp e ip_nat_ftp per garantire il giusto funzionamento. modprobe ip_conntrack modprobe ip_conntrack_ftp 16/18

modprobe ip_nat_ftp echo 1 > /proc/sys/net/ipv4/ip_forward # connessione FTP su porta 21 iptables -A INPUT -p tcp --sport 21 -m state --state RELATED,ESTABLISHED \ -j ACCEPT iptables -A OUTPUT -p tcp --dport 21 -m state --state NEW,ESTABLISHED \ -j ACCEPT # connessione FTP attivo iptables -A INPUT -p tcp --sport 20 -m state --state ESTABLISHED,RELATED \ -j ACCEPT iptables -A OUTPUT -p tcp --dport 20 -m state --state ESTABLISHED \ -j ACCEPT # connessione FTP passivo iptables -A INPUT -p tcp --sport 1024: --dport 1024: \ -m state --state ESTABLISHED -j ACCEPT iptables -A OUTPUT -p tcp --sport 1024: --dport 1024: \ -m state --state ESTABLISHED,RELATED -j ACCEPT Regole per proxy server trasparenti Vediamo come rendere un proxy server trasparente, ossia facciamo utilizzare il proxy server senza dover modificare le impostazioni dell'utente. L'interfaccia eth0 è l'interfaccia utilizzata direttamente dall'utente per contattare il server. Proxy server trasparente in caso di Squid: iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 \ -j REDIRECT --to-ports 3128 Proxy server trasparente in caso di DansGuardian: iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 \ -j REDIRECT --to-ports 8080 Il comando iptables è composto da una sezione all'interno della quale vanno definite le operazioni da eseguire, una per il controllo del pacchetto ed un'altra per definire l'azione da eseguire nel caso in cui il pacchetto corrisponda al controllo effettuato. Abbiamo quindi la seguente struttura Regole per inoltrare le richieste ad un servizio ssh interno Il nostro esempio è composto da una rete interna (10.0.0.0/24) ed una rete esterna (192.168.0.0/24). Le due reti sono collegate da un computer con due schede di rete con rispettivi indirizzi ip 10.0.0.100 su eth0 e 192.168.0.100 su eth1. Nella rete interna è presente un computer con indirizzo ip 10.0.0.1 sul quale è attivo il server ssh. Il computer centrale (router) ha il compito di girare le richieste effettuate dal computer 17/18

esterno con indirizzo ip 192.168.0.1 al computer interno. Vediamo il file di configurazione: echo 1 > /proc/sys/net/ipv4/ip_forward iptables -t nat -A PREROUTING -i eth1 -p tcp --dport 22 \ -j DNAT --to-destination 10.0.0.1 iptables -t nat -A POSTROUTING -i eth1 -p tcp --dport 22 -j MASQUERADE iptables -t nat -A PREROUTING -i eth0 -p tcp --sport 22 \ -j DNAT --to-destination 192.168.0.1 iptables -t nat -A POSTROUTING -i eth0 -p tcp --sport 22 -j MASQUERADE 18/18