├── HomeFW.jpg
├── firewall.sh
├── HomeFW.xml
├── configurations.txt
└── README.md
/HomeFW.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/gkallenborn/HomeFW/HEAD/HomeFW.jpg
--------------------------------------------------------------------------------
/firewall.sh:
--------------------------------------------------------------------------------
1 | #!/bin/bash
2 | # Flushing all rules
3 | iptables -F FORWARD
4 | iptables -F INPUT
5 | iptables -F OUTPUT
6 | iptables -X
7 |
8 | # Setting default filter policy
9 | iptables -P INPUT DROP
10 | iptables -P OUTPUT DROP
11 | iptables -P FORWARD DROP
12 |
13 | # Allow unlimited traffic on loopback
14 | iptables -A INPUT -i lo -j ACCEPT
15 | iptables -A OUTPUT -o lo -j ACCEPT
16 |
17 | # Accept estalished TCP packets
18 | iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
19 | iptables -A FORWARD -m state --state RELATED,ESTABLISHED -j ACCEPT
20 | iptables -I OUTPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
21 |
22 | # Allow incoming SSH from main home network
23 | iptables -A INPUT -i eth0 -p tcp --dport 22 -m state --state NEW -j ACCEPT
24 |
25 | # Allow DNS outbound
26 | iptables -A OUTPUT -p udp --dport 53 -m state --state NEW -j ACCEPT
27 | iptables -A OUTPUT -p tcp --dport 53 -m state --state NEW -j ACCEPT
28 |
29 | # Allow HTTP outbound
30 | iptables -A OUTPUT -p tcp --dport 80 -m state --state NEW -j ACCEPT
31 |
32 | # Allow HTTPS outbound
33 | iptables -A OUTPUT -p tcp --dport 443 -m state --state NEW -j ACCEPT
34 |
35 | # Enable NAT
36 | iptables -t nat -A POSTROUTING -s 10.10.0.0/24 -o eth0 -j MASQUERADE
37 |
38 | # Allow IOT to internet but not to main home network
39 | iptables -A FORWARD -s 10.10.0.0/24 -d 10.8.0.0/24 -j DROP
40 | iptables -A FORWARD -s 10.10.0.0/24 -d 192.168.0.0/24 -j DROP
41 | iptables -A FORWARD -o eth0 -s 10.10.0.0/24 -j ACCEPT
42 |
--------------------------------------------------------------------------------
/HomeFW.xml:
--------------------------------------------------------------------------------
1 | 5VltT+M4EP41/UiUOC8NH2mhuyvdIQTo2P2E3MRNLNy4clza3q+/cWI3b2YpR7hdHRWk8cT2xM8z45lxJ/58vf8i8Cb/k6eETZCb7if+5QShaRjBVQkOtSBwz2tBJmhai7xGcEf/JlroaumWpqTsdJScM0k3XWHCi4IksiPDQvBdt9uKs67WDc7IQHCXYDaUPtBU5rU0RtNG/pXQLDeavUivb4mTp0zwbaH1TZC/qj714zU2c+mFljlO+a4l8q8m/lxwLuu79X5OmILWwFaPW7zw9PjeghTylAFBPeAZsy0xb1y9lzwYLOi6AmuWyzUDiQe3DC8Jmx2XOueMi6qzWaw/06Mu6ToD7Ywu4ZowunnEQsJtQeSOiydaqKcPVBBGyvLxlm8lEY8eivfw72zgqT9L4WkiKS9gNoJLWNZMvzQRkuxfXLh3hBOslPA1keIAXcyASDOgLdSbhnV71/B97JO3ufa1EGsby45zNzjDjYbaDnv0Ouy43NSWvaJ7AsNmGyIoKCIKaZgNXIHcNKI2PZjRTKGVABbVs6OVuQpPXOZqwqphyLXRhUEJSR+l4oaWIChJshVUwkoXmqm/bq6d8jkbh5LA71KCTLtNiRsNKTHUvYeR6euMAIqbGqOBQ6h1U9g+LjTykm9a0j+Uu9zwkmorXnIp+foNfnRhbEFRNjAMw10updoeL9SawdnSwnUobJArWqREOAloRIsUSwxfSq4YXTEszyrdZ+WhlER1CT2FmgA1SyLE4cx44ggER36X4GBIcGBxuWAEjzt/nV/tVLW/VEwnjG8VwrucSnK3wYkS7iDiddkfAxov7EITD6FBQWjZjuIRjN+E3d8Wnd7GYNmrrYbjxSNYjocG4HjnyPGi2HEdmH9hgmgLLFiq7KJQSsGfiPHwghcKyRVlrCca7N39rWVN01SpscJeufJxcx8jTHpd6P3QEiZdC/RjREnPHyLvOvDX4B4xhfNSwF3WZAb/RyZCL+oyESFnyIXNC9AYVNjiYw1+7hnwbydzf3JxXhK8Vbk/gQvDKinme7h+UzBC3mfGgcpm6Ii8lUCEyiv9y7Bp3auAfHmG3Bfo4sDNilU5Ug60kuIjKIy7vhTYfOncto2NwmD8Zga/gpbFw+flK5j2CIv+S8LQKUG5SC9UuVtFY1yWNOlyQPZUfleAOCjUzR8dfEg6KIR76IA+vhWJ7hXYAWsBElrwMDIo87Ckz12NNoy0hhtO4V2aYBR3kyTPHDOYKeo31aPaVW9vIuT2ij+3N5HEIiNyMFFF2XHZp7HoncDiL0yteiaOLGmnrQoeI7EySLSg+XZ9f3V7fXX/mQK71wsL4WlF0ShbzDDBGuBsqXJfrGcHyJ5Q4NpL55pLc/aGBuzCDK4buwu3R3F75pdPPYybrfeZOr50KC+nVa1cOju6oiPx2jvO8C2+Zavo/J/siycTe8K53uckVnCJ9eo+KjE3mVab58DC8wiF+ynHVq0cQW+A1gQhnnYyBGfqmXbrlLHCDHARh+/tRj0ifF9Wgdw66tai6FcmGn4vP0BR/O8SDT/qTzR1ovbH/7C8w5bu9yzj40/2F1SQHWbs0UWdU/33e53fT1wsZ4k/s5A3eJ06DT3+IFNT0fzo5V/9Aw==
--------------------------------------------------------------------------------
/configurations.txt:
--------------------------------------------------------------------------------
1 | ############################
2 | # /etc/hostapd/hostapd.conf
3 | ##############################
4 | créez le fichier avec les lignes suivantes
5 | en remplaçant "password" par un mot de passe
6 | de votre choix
7 | -----------------START------------------
8 | interface=wlan0
9 | driver=nl80211
10 | ssid=IOT
11 | hw_mode=g
12 | channel=11
13 | wpa=2
14 | wpa_passphrase=password
15 | wpa_key_mgmt=WPA-PSK
16 | wpa_pairwise=TKIP CCMP
17 | wpa_ptk_rekey=600
18 | #macaddr_acl=0
19 | -----------------END--------------------
20 |
21 |
22 |
23 | ############################
24 | # /etc/dhcp/dhcpd.conf
25 | ##############################
26 | insérez au début les lignes suivantes et effacez le reste
27 | -----------------START------------------
28 | #option domain-name "iot-firewall";
29 | #option domain-name-servers 8.8.8.8
30 |
31 | ddns-update-style none;
32 | log-facility local7;
33 |
34 | subnet 10.10.0.0 netmask 255.255.255.0 {
35 | range 10.10.0.100 10.10.0.150;
36 | default-lease-time 600;
37 | max-lease-time 7200;
38 | option domain-name-servers 8.8.8.8;
39 | option routers 10.10.0.1;
40 | option subnet-mask 255.255.255.0;
41 | interface wlan0;
42 | }
43 | -----------------END--------------------
44 |
45 |
46 |
47 | ############################
48 | # /etc/sysctl.conf
49 | ##############################
50 | enlevez le # devant la ligne suivante ou créez la
51 | -----------------START------------------
52 | net.ipv4.ip_forward=1
53 | -----------------END--------------------
54 |
55 |
56 |
57 | ############################
58 | # /etc/default/isc-dhcp-server
59 | ##############################
60 | complétez la ligne suivante
61 | -----------------START------------------
62 | INTERFACESv4="wlan0"
63 | -----------------END--------------------
64 |
65 |
66 |
67 | ############################
68 | # /etc/default/dnsmasq
69 | ##############################
70 | vérifiez que vous ayez la ligne suivante
71 | -----------------START------------------
72 | ENABLED=1
73 | -----------------END--------------------
74 |
75 |
76 |
77 | ############################
78 | # /etc/network/interfaces
79 | ##############################
80 | insérez au début les lignes suivantes et effacez le reste
81 | -----------------START------------------
82 | # Include files from /etc/network/interfaces.d:
83 | source-directory /etc/network/interfaces.d
84 |
85 | auto eth0
86 |
87 | iface eth0 inet dhcp
88 | #wpa-conf /etc/wpa_supplicant/wpa_supplicant.conf
89 | iface default inet dhcp
90 |
91 | # IP ADDRESS FOR IOT FW #
92 |
93 | allow-hotplug wlan0
94 | auto wlan0
95 | iface wlan0 inet static
96 | hostapd /etc/hostapd/hostapd.conf
97 | address 10.10.0.1
98 | netmask 255.255.255.0
99 | -----------------END--------------------
100 |
101 |
102 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # HomeFW
2 |
3 | HomeFW est un point d'accès Wi-Fi avec parefeu intégré, basé sur Raspberry Pi 3. L'appareil se branche directement en filaire sur la box Internet et permet de créer un sous-réseau Ethernet sans fil, isolé du réseau existant. Les appareils qui sont connectés à HomeFW peuvent accéder à Internet mais ne peuvent pas accéder aux terminaux connectés à la box. Inversement, les appareils connectés au réseau de la box ne peuvent accéder au réseau géré par le boîtier Raspberry Pi. Plus d'informations sur [01net.com](https://www.01net.com/astuces/comment-securiser-son-reseau-domestique-avec-un-raspberry-pi-3-1532277.html).
4 |
5 | 
6 |
7 | ## Etapes d'installation
8 |
9 | **1)** Téléchargez [la dernière version de Raspian](https://www.raspberrypi.org/downloads/). Flashez l'image sur une carte microSD (min 16 Go) au moyen du logiciel [Etcher](https://etcher.io) qui est très facile d'usage.
10 |
11 | **2)** Au premier démarrage, le système vous demandera de choisir la langue et de changer de mot de passe. Choisissez en un qui soit fort. Le système va ensuite se mettre automatiquement à jour. Cela peut prendre un peu de temps. Allez vous préparer un café.
12 |
13 | **3)** Ouvrez une fenêtre de commandes et téléchargez le script pour le pare-feu (firewall.sh) et le fichier de configuration (configurations.txt) dans un nouveau dossier intitulé HomeFW:
14 |
15 | `git clone https://github.com/gkallenborn/HomeFW HomeFW`
16 |
17 | **4)** Installez tous les logiciels nécessaires:
18 |
19 | `sudo apt-get install hostapd isc-dhcp-server dnsmasq iptables`
20 |
21 | **5)** Modifiez les fichiers de configuration tel que indiqué dans configurations.txt, et redémarrez le système:
22 |
23 | ```
24 | sudo nano /etc/hostapd/hostapd.conf
25 | sudo nano /etc/dhcp/dhcpd.conf
26 | sudo nano /etc/sysctl.conf
27 | sudo nano /etc/default/isc-dhcp-server
28 | sudo nano /etc/default/dnsmasq
29 | sudo nano /etc/network/interfaces
30 | reboot
31 | ```
32 |
33 | **6)** Allez dans le dossier HomeFW, rendez le fichier firewall exécutable, puis exécutez le:
34 |
35 | ```
36 | cd HomeFW
37 | chmod +x firewall.sh
38 | sudo ./firewall.sh
39 | ```
40 | Si tout s'est bien passé, vous avez désormais un second réseau Wi-Fi baptisé "IOT" qui est complètement isolé de réseau existant.
41 |
42 | **7)** Pour faciliter la gestion au quotidien de ce nouveau point d'accès, il est préférable que le service SSH soit lancé automatiquement au démarrage. Ainsi, on pourra s'y connecter facilement à distance depuis le réseau de la box Internet et, par exemple, lancer ou modifier le script firewall.sh. Pour configurer le service SSH, il faut insérer la carte microSD dans votre ordinateur et créer un fichier vide intitulé "ssh" à la racine. Pour cela ouvrez une fenêtre de commande et placez vous à la racine de la carte. Sous macOS, il faut utiliser la commande `cd /Volumes/` puis `touch ssh` (source: [Howchoo](https://howchoo.com/g/ote0ywmzywj/how-to-enable-ssh-on-raspbian-without-a-screen)). Sous Windows, il faut utiliser la commande `:` puis `type NUL > ssh`.
43 |
44 |
45 | ## Remerciement
46 |
47 | Cette installation s'appuie sur le code et les explications de David Jacoby, chercheur en sécurité chez Kaspersky Labs, qui a fait démonstration de cette technique à l'occasion d'une conférence de presse organisée en 2017.
48 |
--------------------------------------------------------------------------------