Simulazione di routing e filtraggio con iptables Creare nuove VM
Transcript
Simulazione di routing e filtraggio con iptables Creare nuove VM
Simulazione di routing e filtraggio con iptables Creare nuove VM Da VirtualBox, seguire il procedimento guidato di creazione di una nuova VM utilizzare un nome significativo specificare Linux/Debian come OS assegnare 96MB di RAM utilizzare un disco già esistente, specificando basedisk.vdi (Immutabile) Chiudere tutte le istanze di VirtualBox Creare nuove VM Editare ~/.VirtualBox/VirtualBox.xml individuare nel MachineRegistry il path della nuova VM creata Ripetere l'operazione anche per l'HardDisk nel MediaRegistry verificare che sia assente il parametro autoreset=true, toglierlo se presente Copiare la macchina creata da VirtualBox sulla memoria USB sarà qualcosa del tipo ”Machines/Nome/Nome.xml” renderlo analogo a quello delle altre VM, cioè del tipo ”../LAS.VM/Machines/...” cp -a ~/.VirtualBox/Machines/Nome ~/LAS.VM/Machines Riavviare VirtualBox e verificare che la macchina sia vista correttamente (senza avviarla), se va bene rimuoverla dalla home rm -rf ~/.VirtualBox/Machines/Nome Architettura di rete Ricordiamo che in ogni macchina virtuale desideriamo avere disponibili quattro interfacce di rete, che vanno prima di tutto definite in VirtualBox Selezionare dall'elenco la VM appena creata, e cliccare su Network nel pannello dei dettagli a destra Adapter 1 va lasciato inalterato (sarà eth0 con indirizzo 10.0.2.15 assegnato automaticamente sulla rete NAT) Adapter 2 va abilitato e posto sulla internal network vlan1 (sarà eth1) Adapter 3 va abilitato e posto sulla internal network vlan2 (sarà eth2) Adapter 4 va abilitato e posto sulla rete Host-only vboxnet0 (sarà eth3 a cui assegneremo staticamente un indirizzo del tipo 192.168.56.N) Shared Folders Se si desidera, analogamente alle altre VM, avere a disposizione una cartella per spostare file da host a VM e viceversa nei settaggi della VM cliccare su shared folders cliccare l'icona per aggiungere uno shared folder in alto a destra indicare come path /tmp/virtualbox indicare come nome host Modifiche al sistema Il sistema operativo della nuova VM è impostato a valori di default del disco base, che vanno cambiati 1. sostituire debian con il l'hostname desiderato nei file /etc/hosts ed /etc/hostname 2. svuotare /etc/udev/rules.d/70-persistent-net.rules (associa MAC errati ai nomi delle interfacce, sarà rigenerato correttamente al reboot) 3. configurare eth3 in /etc/network/interfaces, inserendo queste direttive: auto eth3 iface eth3 inet static address 192.168.56.20x netmask 255.255.255.0 Riavviare la VM Esempio d'utilizzo: filtraggio e NAT 1) Definire una nuova VM Server2 con IP 192.168.56.204 sull'interfaccia eth3 10.9.9.2 sull'interfaccia eth1 2) Server1 e Server2 erogano servizi sulla porta 80 e 25 3) Configurare il Router in modo che tutto il traffico dal Client ai Server sia mascherato, cioè appaia come proveniente dall'IP del Router che si trova dal lato dei Server il traffico destinato alla porta 25 sia girato a Server1 anche se diretto a Server2 4) Configurare ogni macchina perchè accetti solo il traffico strettamente necessario. Layout di rete risultante eth0 10.0.2.15 eth3 - 192.168.56.203 eth0 10.0.2.15 eth3 - 192.168.56.204 eth0 10.0.2.15 eth3 - 192.168.56.202 Server Server2 Router eth1 eth2 10.9.9.1 eth1 eth2 10.9.9.2 eth1 10.9.9.254 eth2 10.1.1.254 10.1.1.1 eth1 eth2 Client eth0 10.0.2.15 eth3 - 192.168.56.201 Punti 1 e 2 Alla luce di quanto visto durante la configurazione della nuova VM, è possibile agire anche sulle altre 3 per avviarle sempre con le interfacce eth1 e/o eth2 correttamente configurate? Lato client e lato server manca comunque qualcosa per renderli mutuamente raggiungibili? Sul router non è automaticamente abilitato l'inoltro: si veda il file /etc/sysctl.conf Per simulare un servizio utilizzare nc (ed anche per connettersi a tale servizio dal client) Punto 3/a mascherare il traffico che passa dal router: il cambiamento dell'IP sorgente tipicamente è fatto come ultima cosa prima di inviare il pacchetto catena POSTROUTING il target MASQUERADE seleziona automaticamente l'IP dall'interfaccia comodo per IP dinamici, ma overhead e ambiguità se sono presenti alias iptables -t nat -I POSTROUTING -s 10.1.1.0/24 \ -d 10.9.9.0/24 -j SNAT --to-source 10.9.9.254 verificare con Wireshark il funzionamento della direttiva inserita ora è possibile rimuovere la route statica che sui server permette di individuare la rete dei client? Punto 3/b modificare la destinazione del traffico tcp/25: il cambiamento dell'IP destinazione viene fatto prima del routing perchè quest'ultimo meccanismo possa tenerne conto catena PREROUTING iptables -t nat -I PREROUTING -p tcp \ -s 10.1.1.0/24 -d 10.9.9.2 --dport 25 \ -j DNAT --to-dest 10.9.9.1 Punto 4 default deny su tutte le macchine: iptables iptables iptables iptables iptables INPUT DROP OUTPUT DROP FORWARD DROP INPUT -i lo -j ACCEPT OUTPUT -o lo -j ACCEPT sul client: connessioni verso il server -P -P -P -I -I traffico che ha il client come end point catene INPUT e OUTPUT pacchetti in entrambe le direzioni, quelli entranti vanno accettati solo se in risposta a richieste precedentemente generate in uscita: iptables -I OUTPUT -o eth2 -d 10.9.9.0/24 \ -p tcp -m multiport --dports 25,80 -j ACCEPT iptables -I INPUT -i eth2 --state \ ESTABLISHED,RELATED -j ACCEPT sul server? (hint: invertire la direzione) sul router? (hint: traffico passante catena FORWARD che vale per entrambe le direzioni: inserire condizioni più dettagliate per distinguerle)
Documenti analoghi
iptables passo-passo - Portale Memolinux
Tabella FILTER (con le catene INPUT, OUTPUT, FORWARD)
Tabelle create dall'utente
Tabella di NAT (con le catene PREROUTING, OUTPUT, POSTROUTING)
Tabella di MANGLE (per alterare i pacchetti)
Per ogni...
Iptables - Giacomo Strangolino
iptables -A INPUT -i ppp0 -m state --state NEW, INVALID -j
LOG –log-prefix “conn. new/inval. da ppp0”