FIREWALL PORTATILE

FIREWALL PORTATILE
Eccoci ancora a parlare di sicurezza, questa volta con un

FIREWALL PORTATILE

.
Quando siamo in viaggio, internet è di vitale importanza, la rete cellulare non sempre è efficiente e gli alberghi sono dei colabrodo (non voglio dire spioni).
Firewall-portatileQuando ci colleghiamo al wi-fi di un hotel o ad un hot spot pubblico, dobbiamo necessariamente rivelare almeno due informazioni, il MAC address della nostra scheda di rete e l’ip che ci viene assegnato, pubblico o privato che sia, non che queste siano da tenere necessariamente segretese, tuttavia se non possediamo un firewall adeguato riveliamo anche altre informazioni che se unite alle precedenti danno buone possibilità ad un potenziale cyber-criminale di poterle utilizzare per vari scopi più o meno leciti.
Nel mio caso, quando mi sposto porto sempre con me il mio fedellissimo telefono voip, il mio smartphone ed il computer portatile.
Il computer portatile ha il disco COMPLETAMENTE cifrato, immune persino al “evil maid attack” (attacco della cameriera malvagia), scriverò un articolo a riguardo quanto prima.
Quando il computer portatile è acceso, però, questo ha le proprie interfacce di rete “affacciate” sul router del hotel e senza il FIREWALL PORTATILE mi sento vulnerabile.
In moltissimi casi, per poter utilizzare internet, è necessario autenticarsi sul proxy dell’albergo ed il proxy dell’albergo potrebbe loggare qualsiasi cosa.
Il FIREWALL PORTATILE si autentica al proxy per ottenere l’accesso ad internet, raggiunge il mio gateway di casa grazie ad una open vpn e mi da la possibilità di mettere dietro al FIREWALL PORTATILE tutti i dispositivi che voglio.
Vediamo come fare.
Prendiamo un BANANA PI che fungerà da server FIREWALL PORTATILE ed inseriamo una schedina wi-fi USB che servirà a collegarci alla rete senza fili del nostro hotel.
Il FIREWALL PORTATILE così configurato, avrà sull’interfaccia wlan0 l’intero albergo, sull’interfaccia eth0 i nostri dispositivi e sull’interfaccia tap0 il nostro gateway di casa o dell’ufficio.
Il traffico con syn attivo proveniente dalla wlan0 e destinato ad una qualunque interfaccia (inclusa la stessa wlan0) viene droppato.
Il traffico generato sulla eth0 giudicato sensibile viene rediretto sulla tap0 ed instradato verso il gateway di casa nostra, le cose di cui non ci interessa nulla le facciamo leggere al padrone dell’hotel o agli altri che stazionano insieme a noi su quella rete, se vogliamo, altrimenti ridirigiamo TUTTO il traffico a casa nostra e nessuno legge nulla.
Vediamo in dettaglio come fare.
Per prima cosa scarichiamo l’immagibe della debian da mettere sul FIREWALL PORTATILE, io ho realizzato questa immagine http://www.dibrigida.it/immagini/banana.img.zip, pertanto parto da qui.
Decomprimiamo il file zip ed otteniamo l’immagine.
# gunzip banana.img.zip
individuiamo come sempre la nostra SD e con il comando
# dd if=banana.img of=/dev/XXXX
burniamo la schedina, appena pronta, la inseriamo nel FIREWALL PORTATILE ed effettuiamo il boot
Username root
Password 123456
Configuriamo l’interfaccia wifi, il kernel presente nell’immagine è già carrozzato per lavorare con questa interfaccia http://www.marel.at/produkte/wireless/
Chiaramente, è sempre possibile utilizzare l’interfaccia che più ci aggrada.
Spostiamoci in /etc/network ed editiamo il file interfaces
# cd /etc/network
# vi interfaces
Qui configuriamo la eth0 e la wlan0, la eth0 ha un ip fisso, la wlan0 avrà un ip dinamico assegnato da dhcp.

# FIREWALL PORTATILE interfacce di rete

auto lo
iface lo inet loopback
auto eth0
# Ip statico su interfaccia eth0 del FIREWALL PORTATILE
iface eth0 inet static
address 172.17.93.130 # Questo è un ip privato che normalmente non viene usato
netmask 255.255.255.128 # Una /25 è più che sufficiente per i nostri scopi
# gateway XXX.XXX.XXX.XXXX # il Gateway non viene nomenclato

# Scheda wireless con DHCP
auto wlan0
iface wlan0 inet dhcp
pre-up wpa_supplicant -i wlan0 -c /etc/network/wi-fi.conf -B

Salviamo ed usciamo :wq
A questo punto dobbiamo effettuare una scansione delle reti wifi
# iwlist scan
dovremmo ottenere un risultato simile a questo:
# iwlist scan
eth0 Interface doesn’t support scanning.

wlan0 Scan completed :
Cell 01 – Address: 74:DA:38:2C:FF:DA
ESSID:”Davide-di-Brigida”
Protocol:IEEE 802.11bgn
Mode:Master
Frequency:2.412 GHz (Channel 1)
Encryption key:off
Bit Rates:1 Mb/s; 2 Mb/s; 5.5 Mb/s; 11 Mb/s; 6 Mb/s
9 Mb/s; 12 Mb/s; 18 Mb/s; 24 Mb/s; 36 Mb/s
48 Mb/s; 54 Mb/s
Signal level=100/100
Cell 02 – Address: 74:FF:50:88:AA:04
ESSID:”Davide-di-Brigida2″
Protocol:IEEE 802.11b
Mode:Master
Frequency:2.462 GHz (Channel 11)
Encryption key:on
Bit Rates:1 Mb/s; 2 Mb/s; 5.5 Mb/s; 11 Mb/s
Extra:rsn_ie=30140100000fac040100000fac040100000fac020000
IE: IEEE 802.11i/WPA2 Version 1
Group Cipher : CCMP
Pairwise Ciphers (1) : CCMP
Authentication Suites (1) : PSK
IE: Unknown: DD8C0050F204104A0001101044000102103B00010310470010112233445566778899AA803F5D886F4E1021000852657065617465721023000752544C387878781024000D45562D323031302D30392D32301042000F3132333435363738393031323334371054000800060050F20400011011000A576972656C6573732D4E1008000201881049000600372A000120
Signal level=72/100

lo Interface doesn’t support scanning.

#
In questo esempio ci sono 2 reti, quella che ci interessa è “Davide-di-Brigida2”, la chiave WPA2 la devo conoscere a priori, in questo caso è 1234567890
Quindi andiamo a costruire il file di configurazione della chiave

# wpa_passphrase Davide-di-Brigida2 1234567890 >wi-fi.conf
controlliamo il file che abbiamo appena creato
# cat wi-fi.conf
network={
ssid=”Davide-di-Brigida2″
#psk=”1234567890″
psk=55feb0f91a2ca6042ff768f9b43c348441c6ef0d651e057c2ec6f7e42653d040
}

Perfetto il file è stato creato, per verificare se funziona riavviamo la rete
# service networking restart
diamo un ifconfig per verificare lo status della rete
# ifconfig wlan0
Il risultato dovrebbe essere più o meno questo

wlan0 Link encap:Ethernet IndirizzoHW 00:22:88:99:ee:e2
indirizzo inet:192.168.1.64 Bcast:192.168.1.255 Maschera:255.255.255.0
indirizzo inet6: fe80::f1ca:f1ca:f1ca:f1ca/64 Scope:Link
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:278160 errors:0 dropped:17720 overruns:0 frame:0
TX packets:228468 errors:0 dropped:0 overruns:0 carrier:0
collisioni:0 txqueuelen:1000
Byte RX:316379512 (316.3 MB) Byte TX:27226157 (27.2 MB)
#
Adesso impartiamo le regole, cominciamo con l’installare arptables sul nostro FIREWALL PORTATILE, quindi:
apt-get install arptables -y
fatto questo dobbiamo individuare il macaddress  e l’ ip del router che ci offre la connessione (o che la offre al nostro FIREWALL PORTATILE).
# route
Il risultato sarà più o meno questo

Tabella di routing IP del kernel
Destination Gateway Genmask Flags Metric Ref Use Iface
default 192.168.1.254 0.0.0.0 UG 0 0 0 wlan0
192.168.1.0 * 255.255.255.0 U 9 0 0 wlan0

Perfetto il nostro gateway è 192.168.1.254

Adesso dobbiamo sapere l’indirizzo hardware della scheda di rete del nostro gateway, per fare questo, digitiamo il comando
# arp
Il risultato sarà più o meno questo:
# arp
Indirizzo TipoHW IndirizzoHW Flag Maschera Interfaccia
192.168.1.254 ether 02:9a:a3:82:a5:c6 C wlan0

Adesso abbiamo tutto quello che ci occorre

mkdir -p /script
vi /script/firewall.sh

#!/bin/bash

# FIREWALL PORTATILE
FRONTIERA=wlan0
INSIDE=eth0
DMZ=eth1
VPN=tap0
LO=lo

/sbin/ip -s -s neigh flush all
/sbin/iptables -F
/sbin/iptables -t nat -F
/sbin/arptables -F
/sbin/arptables -P INPUT DROP # Impedisce l’accesso ai macaddress non autorizzati

# Abilito le connessioni sicure
/sbin/iptables -A INPUT -i $LO -j ACCEPT
/sbin/iptables -A INPUT -i $VPN -j ACCEPT
/sbin/iptables -A INPUT -i $FRONTIERA -p icmp -j ACCEPT
/sbin/arptables -A INPUT -i $VPN -j ACCEPT # Accetto tutto il traffico proveniente dall’interfaccia VPN

# Accesso negato a chi cerca di entrare
/sbin/iptables -A INPUT -i $FRONTIERA -m conntrack –ctstate RELATED,ESTABLISHED -j ACCEPT
/sbin/iptables -A INPUT -i $FRONTIERA -m conntrack –ctstate NEW -j DROP
# Regola per il gateway di casa
# /sbin/iptables -t nat -A PREROUTING ! -s XXX.XXX.XXX.XXX -i $INSIDE -p tcp –dport 80 -j DNAT –to 172.17.18.99:8080 # invio il traffico del web al MIO proxy di casa che esce dal MIO gateway di casa
# Abilito il forward
/sbin/iptables -A FORWARD -i $FRONTIERA -o $INSIDE -m state –state ESTABLISHED,RELATED -j ACCEPT
/sbin/iptables -A FORWARD -i $INSIDE -o $FRONTIERA -j ACCEPT

# Abilito il NAT
/sbin/iptables -t nat -A POSTROUTING -o $FRONTIERA -j MASQUERADE

# Impedisco il forward dei miei pacchetti su un possibile loop
/sbin/iptables -A FORWARD -i $FRONTIERA -o $FRONTIERA -j REJECT

# Abilito le funzioni di IP Forward
echo 1 > /proc/sys/net/ipv4/ip_forward
### Ignora finti messaggi di errore ICMP
echo 1 > /proc/sys/net/ipv4/icmp_ignore_bogus_error_responses

### Non risponde ai ping inviati al broadcast della subnet
echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_broadcasts

### Non accetta pacchetti ICMP di route redirection
echo 0 > /proc/sys/net/ipv4/conf/all/accept_redirects

### Abilito il traffico proveniente dal Gateway del hotel
# /sbin/arptables -A INPUT -i $FRONTIERA -j ACCEPT # Accetto tutto il traffico proveniente dall’interfaccia di frontiera
/sbin/arptables -A INPUT –source-mac 00:21:CC:BB:11:A4 -i $FRONTIERA -j ACCEPT # Hotel XXXXX
/sbin/arptables -A INPUT –source-mac 00:31:44:BC:6A:13 -i $FRONTIERA -j ACCEPT # Hotel YYYYYY
### Abilito il traffico SOLO ai miei apparati
/sbin/arptables -A INPUT –source-mac 20:64:32:86:c4:ff -i $INSIDE -j ACCEPT # Samsung-galaxy-S6
/sbin/arptables -A INPUT –source-mac b0:c4:e7:80:30:99 -i $INSIDE -j ACCEPT # Tablet-Davide
/sbin/arptables -A INPUT –source-mac 1a:99:aa:33:bb:f2 -i $INSIDE -j ACCEPT # BlackBerry
/sbin/arptables -A INPUT –source-mac 1a:aa:88:dd:fd:55 -i $INSIDE -j ACCEPT # Wi-fi Portatile
/sbin/arptables -A INPUT –source-mac 11:31:6f:e1:e2:d4 -i $INSIDE -j ACCEPT # Lan Portatile
/sbin/arptables -A INPUT –source-mac aa:aa:f8:ca:cc:a5 -i $INSIDE -j ACCEPT # Telefono Base
### Conferma di effettivo start del FIREWALL PORTATILE
echo “FIREWALL PORTATILE” >/tmp/firewall
echo 1 >>/tmp/firewall

salviamo ed usciamo

chmod 755 /script/firewall.sh
e lo mettiamo in esecuzione con l’up dell’interfaccia wlan0
quindi editiamo nuovamente il file interfaces e nella parte della wlan aggiungiamo:
up /script/firewall.sh
Il risultato dovrà essere così:

# Scheda wireless con DHCP del FIREWALL PORTATILE
auto wlan0
iface wlan0 inet dhcp
pre-up wpa_supplicant -iwlan0 -c /etc/network/wi-fi.conf -B
up /script/firewall.sh
salviamo e usciamo
:wq
riavviamo il nostro server e controlliamo che ci sia 1 in /tmp/firewall
PS.
Faccio una precisazione, la directory /tmp, nel mio caso è una tmpfs, pertanto si azzera ad ogni riavvio.

Il FIREWALL PORTATILE è pronto !


Commenti

FIREWALL PORTATILE — 6 commenti

  1. Pingback: [LINK] Firewall portatile con Banana PI o Raspberry PI | AKLab.org

  2. Pingback: Evil maid attack è un sistema molto efficace di decriptazione.

  3. Ciao ho scaricato la tua immagine e mi funziona tutto, con la bananian 1604 però non mi tira su la wlan0
    mi dice che la wlan0 non esiste
    mi puoi aiutare?
    la tua immagine è un po datata, sto cercando qualcosa diu più nuova

    • Solitamente non pubblico i commenti, in questo caso però il commento aiuta la comunità.
      Ho testato la guida partendo dalla bananian 1604, in effetti hai ragione, il problema si presenta sia sul banana M1 che sul banana pro.
      Per il bananaPRO ti basta caricare il modulo ap6210 con un modprobe ap6210 e poi inserirlo in /etc/modules, mentre in /etc/network/interfaces bisogna configurare così

      auto wlan0
      iface wlan0 inet dhcp
      wpa-essid NOME_MIA_RETE
      wpa-psk 0216130dee003a30f398ee85f7cb4aa45d5037a76d91a010ba29923890b02c34

      La password cifrata la calcoli così:
      wpa_passphrase NOME_MIA_RETE PASSWORD_SUPER_SEGRETA
      Per qualsiasi cosa non esitare a contattarmi.

  4. Pingback: ZeroShell Firewall Portatile 2.0 - Il pensiero di un uomo libero

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *

Questo sito usa Akismet per ridurre lo spam. Scopri come i tuoi dati vengono elaborati.