La configuration d’une infrastructure domestique sécurisée

Gérer votre infrastructure domestique sécurisée

En lien avec mon dossier : Le choix d’une infrastructure domestique maîtrisée

Dans la mise en place d’une infrastructure domestique ou des interconnexions spécifiques sont nécessaires : il est important de comprendre que cela requière des connaissances car ce n’est plus une simple box opérateur. De ce fait, gérer une infrastructure demande du temps, de l’envie et des compétences. Retenez bien qu’en cas de panne, il est impossible de demander à votre fournisseur d’accès à Internet de vous fournir un support car l’ensemble des modifications ont été faites par vous et vous seul en êtes le responsable.

L’organisation de mon lab

Les pré-requis

Dans ce lab je dispose du matériel informatique suivant : un ordinateur, une freebox révolution, un routeur edgeOS, un switch Cisco ainsi qu’un serveur sous Debian 8. Sachez que l’ensemble des commandes edgeOS sont compatible avec vyOS (open-source) qui utilise la même syntaxe .

Il est indispensable de disposer des derniers firmware actuels, dans mon cas :

– Mon routeur EdgeOS : v1.8 (aide de mise à jour pour ubiquiti).
– Mon switch Cisco : v1.4.2.4 (aide de mise à jour pour cisco).

Lors du premier démarrage du routeur ou du switch, il y a deux méthodes disponibles pour s’y connecter :

La configuration

Dans le cadre de ma configuration voulu il est nécessaire de suivre l’ensemble des étapes ci-dessous. Bien sûr, elles permettront ensuite de disposer d’un réseau fonctionnel, sécurisé et rapide. Voyons désormais comment j’ai configuré mon réseau domestique dans son intégralité.

Activer le mode bridge de la freebox révolution

Je ne souhaite plus que ma freebox soit l’élément de routage principal dans mon réseau, pour cela je dois la mettre en mode bridge : rendons nous sur l’adresse IP de notre équipement 192.168.1.254 et activer le mode bridge :

Voici une illustration de l’interface web de la freebox :

Un avertissement est présent : il faudra bien entendu accepter de perdre certaines fonctionnalités :

Dans le cas où le wifi est votre première source de connexion, il vous faudra investir dans un routeur wifi car la fonctionnalité ne sera plus assurée en mode bridge. Vous êtes encore libre de refuser, sinon optez pour la 4G !

Première connexion au routeur : EdgeOS/vyOS

Par défaut le port est eth0 avec l’adresse IP : 192.168.1.1 (dans mon cas j’ai configuré l’interface eth7 en 192.168.100.1/24).
Celle-ci est accessible en SSH sur le port 22 ou via l’interface web en http.

Info : Les identifiants sont ubnt/ubtn par défaut, sinon voici une liste d’émulateur de terminal (port 115200).
ssh [email protected]

Lors de l’affichage dans le terminal voici la  première commande à exécuter :

configure

Désormais en mode configuration, nous sommes prêts pour remplacer notre box par un routeur EdgeOS.

La configuration d’une interface bridge

Dans notre cas nous avons la freebox serveur connectée sur le port eth0 et la freebox player sur le port eth1.
Nous allons devoir les faire communiquer ensemble via une interface bridge :

set interfaces bridge br0
set interfaces bridge br0 vif 100 description "Freebox" 

L’interface de la freebox server récupérera automatiquement une adresse IP (WAN) chez Free :

set interfaces ethernet eth0 adresses dhcp

Les interfaces des deux boîtiers freebox seront dans le même VLAN :

set interfaces ethernet eth0 vif 100 description "Freebox Serveur" 
set interfaces ethernet eth1 vif 100 description "Freebox Player"

Ensuite, il nous faudra connecter les interfaces vlan-100 dans notre bridge  :

set interfaces ethernet eth0 vif 100 bridge-group bridge br0
set interfaces ethernet eth1 vif 100 bridge-group bridge br0
Info : Pour activer la récupération d’une IP sur la freebox player il faut activer une option. Rendez-vous dans  le menu : Réglages Systèmes du boîtier TV  puis activez client DHCP en mode bridge.

Je vous invite à faire votre première sauvegarde avec la commande :

commit

Pour que notre configuration soit sauvegardée de façon permanente :

save

Les interfaces vlans

J’utilise des interfaces VLAN sur chacun de mes ports physiques : ce sont des sous interfaces taguées.
Voici la configuration de mes interfaces vlans :

set interfaces ethernet eth2 vif 200 adresse 192.168.20.1/28 
set interfaces ethernet eth2 vif 200 description "home-multimedia"

set interfaces ethernet eth3 vif 300 address 192.168.30.1/28 
set interfaces ethernet eth3 vif 300 description "home-domotique" 

set interfaces ethernet eth4 vif 400 address 192.168.40.1/28 
set interfaces ethernet eth4 vif 400 description "home-production" 

set interfaces ethernet eth5 vif 500 address 192.168.50.1/28 
set interfaces ethernet eth5 vif 500 description "home-sensible" 

set interfaces ethernet eth6 vif 600 address 192.168.60.1/28
set interfaces ethernet eth6 vif 600 description "home-wifi"

set interfaces ethernet eth7 vif 700 address 192.168.70.1/28 
set interfaces ethernet eth7 vif 700 description "home-vpn"

Le service NAT source

Pour que les différents réseaux puissent communiquer vers l’extérieur, il faut leur ajouter des règles NAT :

set service nat rule 5000 description "freebox"
set service nat rule 5000 outbound-interface br0.100
set service nat rule 5000 protocol all
set service nat rule 5000 source address 192.168.1.0/24
set service nat rule 5000 type masquerade

set service nat rule 5000 description "multimedia"
set service nat rule 5001 outbound-interface eth0
set service nat rule 5001 source address 192.168.20.0/28
set service nat rule 5001 type masquerade

set service nat rule 5000 description "domotique"
set service nat rule 5002 outbound-interface eth0
set service nat rule 5002 source address 192.168.30.0/28
set service nat rule 5002 type masquerade

set service nat rule 5000 description "production"
set service nat rule 5003 outbound-interface eth0
set service nat rule 5003 source address 192.168.40.0/28
set service nat rule 5003 type masquerade

set service nat rule 5000 description "sensible"
set service nat rule 5004 outbound-interface eth0
set service nat rule 5004 source address 192.168.50.0/28
set service nat rule 5004 type masquerade

set service nat rule 5000 description "wifi"
set service nat rule 5005 outbound-interface eth0
set service nat rule 5005 source address 192.168.60.0/28
set service nat rule 5005 type masquerade

set service nat rule 5000 description "vpn"
set service nat rule 5006 outbound-interface eth0
set service nat rule 5006 source address 192.168.70.0/28
set service nat rule 5006 type masquerade

A ce moment précis les réseaux désignés sont en mesure de sortir vers l’internet (liaison non sure).

Première connexion au switch : IOS

Votre machine devra être branchée sur un des ports du switch, l’adresse IP  par défaut 192.168.1.254.
Par défaut celui-ci est uniquement accessible via l’interface web en http avec le couple d’identifiants : cisco/cisco.
Nous travaillerons uniquement en CLI via le service SSH.

La configuration de base

Nous disposons d’un swich Cisco qui viendra interconnecter l’ensemble de nos hôtes (machines) sur le réseau.
L’ensemble devra être en mesure de communiquer avec notre routeur edgeOS, lançons-nous via SSH :

ssh [email protected]

Le passage en mode configuration puis le changement du nom d’hôte est à faire comme cela :

r1#configure
r1(config)#hostname sg300

Pour quitter le mode configuration :

exit

La mise à l’heure local se fait comme ceci :

sg300#clock set 21:23:10 18 may 2016

Ensuite, il peut être interessant de faire connaître au routeur l’heure d’été ou d’hiver comme ceci :

sg300#clock summer-time GMT+2 recurring last Sun Mar 3:00 last Sun Oct 3:00

De ce fait, l’heure sera en GMT+1 à partir du dernier dimanche d’octobre jusqu’au dernier dimanche de mars (heure d’hiver) et hors de cette plage ce sera l’heure d’été (GMT+2). La sauvegarde de la configuration ce fait comme ceci :

sg300#copy running-config startup-config
Overwrite file [startup-config].... (Y/N)[N] ?Y
19-May-2016 20:09:21 %COPY-I-FILECPY: Files Copy - source URL running-config destination URL flash://startup-config
19-May-2016 20:09:26 %COPY-N-TRAP: The copy operation was completed successfully
Copy succeeded

Activer le mode routeur

Nous allons configurer le switch en mode de niveau 3 (layer 3 en anglais) pour faire du routage :

sg300#set system mode router

Changing the switch working mode will *delete* the startup configuration file
and reset the device right after that. It is highly recommended that you will
backup it before changing the mode, continue ? (Y/N)[N] Y

Le redémarrage prendra quelques secondes.

La configuration des VLAN

sg300(config)# vlan 200, 300,400,500,600,700

sg300(config)#interface vlan 200 
sg300(config-if)#name home-multimedia
sg300(config-if)# exit

sg300(config)#interface vlan 300
sg300(config-if)#name home-domotique
sg300(config-if)# exit

sg300(config)#interface vlan 400
sg300(config-if)#name home-production
sg300(config-if)# exit

sg300(config)#interface vlan 500
sg300(config-if)#name home-sensible
sg300(config-if)# exit

sg300(config)#interface vlan 600
sg300(config-if)#name home-wifi
sg300(config-if)# exit

sg300(config)#interface vlan 700
sg300(config-if)#name home-vpn
sg300(config-if)# exit
Info : Si vous vous trompez dans la création de vos vlan-ID utilisez la commande : sg300(config)# no vlan 100

Nous nous retrouvons avec le résultat suivant :

sg300#show vlans

Created by: D-Default, S-Static, G-GVRP, R-Radius Assigned VLAN, V-Voice VLAN

Vlan       Name           Tagged Ports      UnTagged Ports      Created by    
---- ----------------- ------------------ ------------------ ----------------
 1           1                            gi1-20                    D         
                                          Po1-8                               
200   home-multimedia                                               S         
300   home-domotique                                                S         
400   home-production                                               S         
500    home-sensible                                                S         
600      home-wifi                                                  S         
700      home-vpn                                                   S         

La configuration des ports access

L’ajout d’un port dans un VLAN se fait en mode access comme ceci :

sg300(config)#interface GigabiteEthernet 1 
sg300(config-if)#description pc-fixe 
sg300(config-if)#switchport mode access
sg300(config-if)#switchport access vlan 200

sg300(config)#interface GigabiteEthernet 2
sg300(config-if)#description pc-fixe
sg300(config-if)#switchport mode access
sg300(config-if)#switchport access vlan 200

sg300(config)#interface GigabiteEthernet 3
sg300(config-if)#description srv-intel-1
sg300(config-if)#switchport mode access
sg300(config-if)#switchport access vlan 500

sg300(config)#interface GigabiteEthernet 4
sg300(config-if)#description srv-intel-2
sg300(config-if)#switchport mode access
sg300(config-if)#switchport access vlan 500

sg300(config)#interface GigabiteEthernet 5
sg300(config-if)#description srv-raspberry
sg300(config-if)#switchport mode access
sg300(config-if)#switchport access vlan 500

sg300(config)#interface GigabiteEthernet 6
sg300(config-if)#description dom-hue
sg300(config-if)#switchport mode access
sg300(config-if)#switchport access vlan 300

sg300(config)#interface GigabiteEthernet 7
sg300(config-if)#description multimedia-PS3
sg300(config-if)#switchport mode access
sg300(config-if)#switchport access vlan 200

La configuration de port genéeral

Dans ce cas précis, nous souhaitons que nos ports (cisco) se connectent sur les ports du routeur (edgeOS). Nous utiliserons le mode general qui est différent du trunk. Nous taggons comme ceci nos ports en mode general en autorisant une liaison avec les VLAN correspondants :

sg300(config)#interface GigabiteEthernet 9
sg300(config-if)#description home-multimedia
sg300(config-if)#switchport mode general
sg300(config-if)#switchport general pvid 200
sg300(config-if)#switchport general allowed vlan add 200

sg300(config)#interface GigabiteEthernet 10
sg300(config-if)#description home-domotique
sg300(config-if)#switchport mode general
sg300(config-if)#switchport general pvid 300
sg300(config-if)#switchport general allowed vlan add 300

sg300(config)#interface GigabiteEthernet 11
sg300(config-if)#description home-production
sg300(config-if)#switchport mode general
sg300(config-if)#switchport general pvid 400
sg300(config-if)#switchport general allowed vlan add 400

sg300(config)#interface GigabiteEthernet 12
sg300(config-if)#description home-sensible
sg300(config-if)#switchport mode general
sg300(config-if)#switchport general pvid 500
sg300(config-if)#switchport general allowed vlan add 500

sg300(config)#interface GigabiteEthernet 13
sg300(config-if)#description home-wifi
sg300(config-if)#switchport mode general
sg300(config-if)#switchport general pvid 600
sg300(config-if)#switchport general allowed vlan add 600

sg300(config)#interface GigabiteEthernet 14
sg300(config-if)#description home-vpn
sg300(config-if)#switchport mode general
sg300(config-if)#switchport general pvid 700
sg300(config-if)#switchport general allowed vlan add 700

Configuration des interfaces VLAN :

Le routage de niveau 3 est actuellement en place sur le switch. Nous configurerons chaqu’une des interfaces VLAN :

sg300(config)#interface vlan 200
sg300(config-if)# ip address 192.168.20.2 255.255.255.240

sg300(config)#interface vlan 300 
sg300(config-if)# ip address 192.168.30.2 255.255.255.240

sg300(config)#interface vlan 400
sg300(config-if)# ip address 192.168.40.2 255.255.255.240

sg300(config)#interface vlan 500
sg300(config-if)# ip address 192.168.50.2 255.255.255.240

sg300(config)#interface vlan 600
sg300(config-if)# ip address 192.168.60.2 255.255.255.240

sg300(config)#interface vlan 700
sg300(config-if)# ip address 192.168.70.2 255.255.255.240

Une fois la configuration de nos interfaces terminées nous enregistrerons notre travail :

sg300#copy running-config startup-config
Overwrite file [startup-config].... (Y/N)[N] ?Y
25-Dec-2015 21:11:00 %LINK-W-Down:  gi6, aggregated (1)
25-Dec-2015 21:11:02 %LINK-I-Up:  gi6, aggregated (1)
25-Dec-2015 21:11:06 %STP-W-PORTSTATUS: gi6: STP status Forwarding, aggregated (1)
25-Dec-2015 21:12:46 %COPY-I-FILECPY: Files Copy - source URL running-config destination URL flash://startup-config
25-Dec-2015 21:12:50 %COPY-N-TRAP: The copy operation was completed successfully
Copy succeeded
sg300#25-Dec-2015 21:13:08 %LINK-W-Down:  gi6, aggregated (1)
25-Dec-2015 21:13:10 %LINK-I-Up:  gi6, aggregated (1)
25-Dec-2015 21:13:15 %STP-W-PORTSTATUS: gi6: STP status Forwarding, aggregated (1)

Désormais les interconnexions souhaitées sont en place.

Le serveur DHCP

Nous avons aussi la possibilité d’utiliser l’attribution automatique des adresses IP sur les hôtes présents dans nos vlans. Pour cela il suffit d’utiliser un service indispensable dans tous les réseaux le serveur DHCP alors nous avons deux cas possibles :

sg300(config)# ip dhcp pool network multimedia-dhcp
sg300(config-dhcp)#network 192.168.20.0 255.255.255.240
sg300(config-dhcp)#dns-server 8.8.8.8 
sg300(config-dhcp)#default-router 192.168.20.1
sg300(config-dhcp)#address low 192.168.20.3 high 192.168.20.14 255.255.255.240
set service dhcp-server shared-network-name multimedia-dhcp
set service dhcp-server shared-network-name multimedia-dhcp subnet 192.168.20.0/28
set service dhcp-server shared-network-name multimedia-dhcp subnet 192.168.20.0/28 default-router 192.168.20.1
set service dhcp-server shared-network-name multimedia-dhcp subnet 192.168.20.0/28 dns-server 8.8.8.8        
set service dhcp-server shared-network-name multimedia-dhcp subnet 192.168.20.0/28 start 192.168.20.3 stop 192.168.20.10

Dans mon cas j’utilise le routeur EdgeOS.

La sécurité des réseaux

Nous sommes dans un environnement cloisonné par les VLAN et nous avons un masque CIDR par réseau. Cependant il serait faux de croire que nous sommes sécurisés face à des potentiels attaquants. Nous allons encore devoir œuvrer pour réussir à être à un niveau acceptable.

La table d’adresse mac : anti-spoofing

Il est peu probable que votre table d’adresse mac change très souvent. Dans un environnement domestique nos appareils sont généralement toujours les mêmes. Nous allons modifier notre table d’adresse mac pour que l’ensemble soit sécurisé et ce afin de palier à tout changement forcé (attack spoofing).

Voici notre table actuellement (type : dynamic par défaut) :

sg300#show mac address-table
Flags: I - Internal usage VLAN
Aging time is 300 sec

    Vlan          Mac Address         Port       Type    
------------ --------------------- ---------- ----------
     1         00:00:00:00:00:a1       0         self    
    300        00:00:00:00:00:a2      gi6      dynamic   
    300        00:00:00:00:00:a3      gi10     dynamic   
    400        00:00:00:00:00:a4      gi11     dynamic   
    400        00:00:00:00:00:a5      gi1      dynamic

On remarque que les interfaces VLAN s’affichent (gi6 et gi1) ainsi que les hôtes du VLAN allumés (gi10 et gi11).

Le port security : discard-shutdown

Nous avons la possibilité de mettre le port en type static mais il est important qu’une action sur le port se déclenche lors d’un changement d’adresse mac : activons-le en mode secure sur le switch. Voici comment l’activer :

sg300(config)#interface GE 6
sg300(config-if)#port security mode secure permanent
sg300(config-if)#port security discard-shutdown trap 60

Nous allons désormais sécuriser notre adresse mac dans notre table :

sg300(config)#mac address-table static 00:00:00:00:00:a2 vlan 300 interface GE 6 secure

Quand une autre adresse mac sera détectée sur le port, celui-ci sera désactivé automatiquement :

08-May-2016 18:44:21 %LINK-I-Up:  gi6, aggregated (1)
08-May-2016 18:44:26 %STP-W-PORTSTATUS: gi6: STP status Forwarding, aggregated (1)
08-May-2016 18:44:26 %LINK-W-PORT_SUSPENDED: Port gi6 suspended by port-security

Nous avons la possibilité de visualiser l’état des ports désactivés :

sg300#show errdisable interfaces

  Interface         Reason       
------------- ------------------
     gi6        port-security

Nous n’investigerons pas dans notre exemple, voici la méthode pour remettre le port en fonction :

sg300#errdisable recovery reset interface GE 6
sg300#errdisable recovery cause08-Jan-2016 19:50:18 %LINK-I-Up:  gi6
sg300#08-Jan-2016 19:50:22 %STP-W-PORTSTATUS: gi6: STP status Forwarding

Garantir une meilleur sécurité sous iOS

Mon switch ne communique pas avec le web directement, nous désactivons les requêtes DNS :

sg300(config)#no ip domain lookup

La désactivation du protocole de découverte cisco (cdp) est absolument nécessaire pour garantir sa sécurité :

sg300(config)#no cdp run

Les services non-sécurisés comme http et telnet sont aussi à proscrire dans le cas d’une gestion de sa sécurité :

sg300(config)#no ip http server
sg300(config)#no ip telnet server

La désactivation des interfaces non-utilisées est primordiale afin de ne pas laisser un attaquant disposer du switch :

sg300(config)#int GE 14
sg300(config-if)#shutdown

Modifier le port du serveur SSH en 18759 par exemple :

sg300(config)#ip ssh port 18759

Nous allons nous contenter (pour le moment) de la sécurité suivante sur le switch, retournons voir notre routeur !

Les règles de firewall : edgeOS

Nous allons commencer par une règle pare-feu simple qui consiste à bloquer les IP dites bogon avec la liste suivante.
Nous créons un groupe de réseau dans le pare-feu nommé : bogons network

set firewall group network-group bogons

set firewall group network-group bogons description "invalid wan networks"
set firewall group network-group bogons network 0.0.0.0/8
set firewall group network-group bogons network 10.0.0.0/8
set firewall group network-group bogons network 100.64.0.0/10
set firewall group network-group bogons network 127.0.0.0/8
set firewall group network-group bogons network 169.254.0.0/16
set firewall group network-group bogons network 172.16.0.0/12
set firewall group network-group bogons network 192.0.0.0/24
set firewall group network-group bogons network 192.0.2.0/24
set firewall group network-group bogons network 192.168.0.0/16
set firewall group network-group bogons network 198.18.0.0/15
set firewall group network-group bogons network 198.51.100.0/24
set firewall group network-group bogons network 203.0.113.0/24
set firewall group network-group bogons network 224.0.0.0/4
set firewall group network-group bogons network 240.0.0.0/4

Nous créons la règle de pare-feu suivante : internet  (WAN)

set firewall name internet
set firewall name internet defaut-action drop
set firewall name internet rule 1 action accept
set firewall name internet rule 1 state estabished enable
set firewall name internet rule 1 related enable

set firewall name internet rule 2 action drop
set firewall name internet rule 2 log disable
set firewall name internet rule 2 state invalid enable

set firewall name internet rule 3 action drop
set firewall name internet rule 3 description "drop ipv4 bogons"
set firewall name internet rule 3 source group network-group bogons

Nous créons la règle de pare-feu suivante :  Production-internet (inter-zone)

set firewall name production-internet
set firewall name production-internet defaut-action drop
set firewall name production-internet rule 1 action accept
set firewall name production-internet rule 1 state estabished enable
set firewall name production-internet rule 1 related enable

set firewall name production-internet rule 2 action drop
set firewall name production-internet rule 2 log disable
set firewall name production-internet rule 2 state invalid enable

set firewall name production-internet rule 3 action accept
set firewall name production-internet rule 3 description "allow ping"
set firewall name production-internet rule 3 log enable
set firewall name production-internet rule 3 protocop icmp

set firewall name production-internet rule 4 action accept
set firewall name production-internet rule 4 description "allow dns"
set firewall name production-internet rule 4 port 53
set firewall name production-internet rule 4 log enable
set firewall name production-internet rule 4 protocop icmp

set firewall name production-internet rule 5 action accept
set firewall name production-internet rule 5 description "allow webpage traffic"
set firewall name production-internet rule 5 destination port 80,443
set firewall name production-internet rule 5 log enable
set firewall name production-internet rule 5 protocop tcp

set firewall name production-internet rule 6 action accept
set firewall name production-internet rule 6 description "allow ftp"
set firewall name production-internet rule 6 destination port 20,21
set firewall name production-internet rule 6 log enable
set firewall name production-internet rule 6 protocop tcp

set firewall name production-internet rule 7 action accept
set firewall name production-internet rule 7 description "allow ssh"
set firewall name production-internet rule 7 destination port 22
set firewall name production-internet rule 7 log enable
set firewall name production-internet rule 7 protocop tcp

set firewall name production-internet rule 8 action accept
set firewall name production-internet rule 8 description "allow vnc"
set firewall name production-internet rule 8 destination port 5900-5910
set firewall name production-internet rule 8 protocop tcp

set firewall name production-internet rule 9 action accept
set firewall name production-internet rule 9 description "allow openvpn"
set firewall name production-internet rule 9 destination port 1194
set firewall name production-internet rule 9 protocop tcp_udp

Nous créons la règle de pare-feu suivante :  multimedia-internet (inter-zone)

set firewall name multimedia-internet
set firewall name multimedia-internet defaut-action drop
set firewall name multimedia-internet rule 1 action accept
set firewall name multimedia-internet rule 1 state estabished enable
set firewall name multimedia-internet rule 1 related enable

set firewall name multimedia-internet rule 2 action drop
set firewall name multimedia-internet rule 2 log disable
set firewall name multimedia-internet rule 2 state invalid enable

set firewall name multimedia-internet rule 3 action accept
set firewall name multimedia-internet rule 3 description "allow ping"
set firewall name multimedia-internet rule 3 log enable
set firewall name multimedia-internet rule 3 protocop icmp

set firewall name multimedia-internet rule 4 action accept
set firewall name multimedia-internet rule 4 description "allow dns"
set firewall name multimedia-internet rule 4 port 53
set firewall name multimedia-internet rule 4 log enable
set firewall name multimedia-internet rule 4 protocop icmp

set firewall name multimedia-internet rule 5 action accept
set firewall name multimedia-internet rule 5 description "allow webpage traffic"
set firewall name multimedia-internet rule 5 destination port 80,443
set firewall name multimedia-internet rule 5 log enable
set firewall name multimedia-internet rule 5 protocop tcp

Nous créons la règle de pare-feu suivante :  sensible-internet (inter-zone) 

set firewall name sensible-internet
set firewall name sensible-internet defaut-action drop
set firewall name sensible-internet rule 1 action accept
set firewall name sensible-internet rule 1 state estabished enable
set firewall name sensible-internet rule 1 related enable

set firewall name sensible-internet rule 2 action drop
set firewall name sensible-internet rule 2 log disable
set firewall name sensible-internet rule 2 state invalid enable

set firewall name sensible-internet rule 3 action accept
set firewall name sensible-internet rule 3 description "allow ping"
set firewall name sensible-internet rule 3 log enable
set firewall name sensible-internet rule 3 protocop icmp

set firewall name sensible-internet rule 4 action accept
set firewall name sensible-internet rule 4 description "allow dns"
set firewall name sensible-internet rule 4 port 53
set firewall name sensible-internet rule 4 log enable
set firewall name sensible-internet rule 4 protocop icmp

set firewall name sensible-internet rule 5 action accept
set firewall name sensible-internet rule 5 description "allow webpage traffic"
set firewall name sensible-internet rule 5 destination port 80,443
set firewall name sensible-internet rule 5 log enable
set firewall name sensible-internet rule 5 protocop tcp

Nous créons la règle de pare-feu suivante :  domotique-internet (inter-zone) 

set firewall name domotique-internet
set firewall name domotique-internet defaut-action drop
set firewall name domotique-internet rule 1 action accept
set firewall name domotique-internet rule 1 state estabished enable
set firewall name domotique-internet rule 1 related enable

set firewall name domotique-internet rule 2 action drop
set firewall name domotique-internet rule 2 log disable
set firewall name domotique-internet rule 2 state invalid enable

set firewall name domotique-internet rule 3 action accept
set firewall name domotique-internet rule 3 description "allow ping"
set firewall name domotique-internet rule 3 log enable
set firewall name domotique-internet rule 3 protocop icmp

set firewall name domotique-internet rule 4 action accept
set firewall name domotique-internet rule 4 description "allow dns"
set firewall name domotique-internet rule 4 port 53
set firewall name domotique-internet rule 4 log enable
set firewall name domotique-internet rule 4 protocop icmp

set firewall name domotique-internet rule 5 action accept
set firewall name domotique-internet rule 5 description "allow webpage traffic ssl"
set firewall name domotique-internet rule 5 destination port 443
set firewall name domotique-internet rule 5 log enable
set firewall name domotique-internet rule 5 protocop tcp

Nous créons la règle de pare-feu suivante : wifi-internet (inter-zone) 

set firewall name wifi-internet
set firewall name wifi-internet defaut-action drop
set firewall name wifi-internet rule 1 action accept
set firewall name wifi-internet rule 1 state estabished enable
set firewall name wifi-internet rule 1 related enable

set firewall name wifi-internet rule 2 action drop
set firewall name wifi-internet rule 2 log disable
set firewall name wifi-internet rule 2 state invalid enable

set firewall name wifi-internet rule 3 action accept
set firewall name wifi-internet rule 3 description "allow ping"
set firewall name wifi-internet rule 3 log enable
set firewall name wifi-internet rule 3 protocop icmp

set firewall name wifi-internet rule 4 action accept
set firewall name wifi-internet rule 4 description "allow dns"
set firewall name wifi-internet rule 4 port 53
set firewall name wifi-internet rule 4 log enable
set firewall name wifi-internet rule 4 protocop icmp

set firewall name wifi-internet rule 5 action accept
set firewall name wifi-internet rule 5 description "allow webpage traffic"
set firewall name wifi-internet rule 5 destination port 80,443
set firewall name wifi-internet rule 5 log enable
set firewall name wifi-internet rule 5 protocop tcp

Nous créons la règle de pare-feu suivante : vpn-internet (inter-zone) 

set firewall name vpn-internet
set firewall name vpn-internet defaut-action drop
set firewall name vpn-internet rule 1 action accept
set firewall name vpn-internet rule 1 state estabished enable
set firewall name vpn-internet rule 1 related enable

set firewall name vpn-internet rule 2 action drop
set firewall name vpn-internet rule 2 log disable
set firewall name vpn-internet rule 2 state invalid enable

set firewall name vpn-internet rule 3 action accept
set firewall name vpn-internet rule 3 description "allow ping"
set firewall name vpn-internet rule 3 log enable
set firewall name vpn-internet rule 3 protocop icmp

set firewall name vpn-internet rule 4 action accept
set firewall name vpn-internet rule 4 description "allow dns"
set firewall name vpn-internet rule 4 port 53
set firewall name vpn-internet rule 4 log enable
set firewall name vpn-internet rule 4 protocop icmp

set firewall name vpn-internet rule 5 action accept
set firewall name vpn-internet rule 5 description "allow ssh"
set firewall name vpn-internet rule 5 destination port 22
set firewall name vpn-internet rule 5 log enable
set firewall name vpn-internet rule 5 protocop tcp

Nous créons la règle de pare-feu suivante : sensible-production (inter-zone) 

 

Nous créons la règle de pare-feu suivante : production-sensible (inter-zone) 

 

Les zones-policy

Les zones policy permettent de restreindre une ou plusieurs interfaces dans une zone unique et totalement fermée.
Elle fonctionnent par paire (exemple « internet > multimedia » et « multimedia > internet ») et les règles de pare-feu permettrons à ses zone paire de communiquer ou non entre elles.

Voici ma configuration internet > multimedia, domotique, production, sensible, wifi, vpn avec leurs règles pare-feu.

set zone-policy zone internet
set zone-policy zone internet defaut-action drop

set zone-policy zone internet from multimedia firewall name multimedia-internet
set zone-policy zone internet from domotique firewall name domotique-internet
set zone-policy zone internet from production firewall name production-internet
set zone-policy zone interent from sensible firewall name sensible-internet
set zone-policy zone internet from wifi firewall name wifi-internet
set zone-policy zone internet from vpn firewall name vpn-internet

set zone-policy zone internet interfaces eth0
set zone-policy zone internet interfaces eth1

Voici ma configuration multimedia > internet avec sa règle pare-feu

set zone-policy zone multimedia
set zone-policy zone multimedia defaut-action drop
set zone-policy zone multimedia from internet firewall name internet
set zone-policy zone multimedia interfaces eth2.200

Voici ma configuration domotique > internet avec sa règle pare-feu

set zone-policy zone domotique
set zone-policy zone domotique defaut-action drop
set zone-policy zone domotique from internet firewall name internet
set zone-policy zone domotique interfaces eth3.300

Voici ma configuration production > internet avec sa règle pare-feu

set zone-policy zone production
set zone-policy zone production defaut-action drop
set zone-policy zone production from internet firewall name internet
set zone-policy zone production interfaces eth4.400

Voici ma configuration sensible > internet avec sa règle pare-feu

set zone-policy zone sensible
set zone-policy zone sensible defaut-action drop
set zone-policy zone sensible from internet firewall name internet
set zone-policy zone sensible interfaces eth5.500

Voici ma configuration wifi > internet avec sa règle pare-feu

set zone-policy zone wifi
set zone-policy zone wifi defaut-action drop
set zone-policy zone wifi from internet firewall name internet
set zone-policy zone wifi interfaces eth6.600

Voici ma configuration vpn > internet avec sa règle pare-feu

set zone-policy zone vpn
set zone-policy zone vpn defaut-action drop
set zone-policy zone vpn from internet firewall name internet
set zone-policy zone vpn interfaces eth7.700

Nous avons ajouté nos interfaces correspondantes dans chacune des zones afin que les règles de pare-feu soient actives.

Deep Packet Inspection

Une fonctionnalité de DPI est proposée dans le routeur edgeOS, vous avez la possibilité de l’activer :

set system traffic-analysis dpi enable

Ensuite rendez-vous sur l’interface web de votre routeur dans l’onglet :

Proxy serveur

Le serveur proxy (transparent) est un élément important car il permet d’éviter certaines catégories de sites connus lors la navigation web. Par exemple, je bloque certaines catégories de sites telles que :

ads mixed_adult remote-control adult cdrogue lingerie sect tricheur aggressive drugs phishing sexual_education agressif childliste_bu porn violence arjel warez associations_religieuses proxy 
astrology dangerous_material publicite special dating gambling malware ddos reaffected strict_redirector dialer hacking marketingware redirector strong_redirector      

Il est important de faire des mises à jour régulières des listes de ces sites comme ceci :

set service webproxy url-filtering squidguard auto-update update-hour 2

Ou pour forcer manuellement la mise à jour :

update webproxy blacklists 

Désormais nous allons configurer le proxy afin qu’il bloque une catégorie comme :

set service webproxy url-filtering squidguard block-category adult

Un management sécurisé : edgeOS

Nous allons générer une paire de clé publique / privée sous notre système d’exploitation (Linux pour ma part) :

ssh-keygen -t rsa

Nous copions ensuite la clé publique sur l’équipement distant (exemple vers le routeur edgeOS)

ssh-copy-id -i /home/jeremie/.ssh/id_rsa.pub [email protected]

/usr/bin/ssh-copy-id: INFO: attempting to log in with the new key(s), to filter out any that are already installed
/usr/bin/ssh-copy-id: INFO: 1 key(s) remain to be installed -- if you are prompted now it is to install the new keys
[email protected]'s password:

Number of key(s) added: 1

Now try logging into the machine, with:   "ssh [email protected]"
and check to make sure that only the key(s) you wanted were added.

Si vous souhaitez désactiver l’authentification SSH par mot de passe sur edgeOS :

set service ssh disable-password-authentication

Un management sécurisé : iOS

De la même façon nous configurerons le serveur SSH du switch avec notre clé publique :

sg300#configure
sg300(config)#ip ssh server
sg300(config)#ip ssh pubkey-auth auto-login
sg300(config)#username jeremie password "mypassword" privilege 15
sg300(config)#crypto key pubkey-chain ssh
sg300(config-pubkey-chain)#user-key jeremie rsa
sg300(config-pubkey-key)#key-string

<coller le contenu de votre clé publique (/home/jeremie/.ssh/id_rsa.pub)>

Fingerprint: ee:3a:80:vc:49:00:1r:12:36:17:b4:ff:e7:60:rv:19
sg300(config-pubkey-key)#exit
sg300(config-pubkey-chain)#exit
sg300(config)#exit
sg300#show crypto key pubkey-chain ssh
   Username                              Fingerprint                           
-------------- ---------------------------------------------------------------
  jeremie           ee:3a:80:vc:49:00:1r:12:36:17:b4:ff:e7:60:rv:19   

La prochaine connexion sur le routeur et le switch sera plus sécurisé et plus rapide avec cette méthode.

La conclusion :

J’ai globalement un réseau sécurisé : ou du moins plus sécurisé que l’ancien schéma de la simple box opérateur. Nous avons vu ensemble que cela requière une adaptation et des connaissances précises. Désormais la moindre modification sur le réseau nous demandra de procéder à une mise en conformité par une action : ce qui nous garantirera une maîtrise total de notre infrastructure domestique. Pour ma part, je ne regrette absolument pas mon choix car une fois la configuration en place tout ceci est transparent (mis à part quand je souhaite ouvrir des ports spécifiques comme steam).