├── 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 | ![alt text](https://github.com/gkallenborn/HomeFW/blob/master/HomeFW.jpg) 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 | --------------------------------------------------------------------------------