diff --git a/cesi/securite_entreprise/presentation/img/intranettopologie.png b/cesi/securite_entreprise/presentation/img/intranettopologie.png new file mode 100644 index 0000000..f21a855 Binary files /dev/null and b/cesi/securite_entreprise/presentation/img/intranettopologie.png differ diff --git a/cesi/securite_entreprise/presentation/img/publickeycryptoencryption.png b/cesi/securite_entreprise/presentation/img/publickeycryptoencryption.png new file mode 100644 index 0000000..12856cb Binary files /dev/null and b/cesi/securite_entreprise/presentation/img/publickeycryptoencryption.png differ diff --git a/cesi/securite_entreprise/presentation/img/publickeycryptosigning.png b/cesi/securite_entreprise/presentation/img/publickeycryptosigning.png new file mode 100644 index 0000000..d7a4de2 Binary files /dev/null and b/cesi/securite_entreprise/presentation/img/publickeycryptosigning.png differ diff --git a/cesi/securite_entreprise/presentation/securite_informatique_intro.md b/cesi/securite_entreprise/presentation/securite_informatique_etat+vuln_web.md similarity index 100% rename from cesi/securite_entreprise/presentation/securite_informatique_intro.md rename to cesi/securite_entreprise/presentation/securite_informatique_etat+vuln_web.md diff --git a/cesi/securite_entreprise/presentation/securite_informatique_intranet.md b/cesi/securite_entreprise/presentation/securite_informatique_intranet.md new file mode 100644 index 0000000..bb1f4ec --- /dev/null +++ b/cesi/securite_entreprise/presentation/securite_informatique_intranet.md @@ -0,0 +1,239 @@ +# La sécurité informatique en entreprise + +## Le réseau intranet + +William Petit - S.C.O.P. Cadoles - 2017 + +--- + + +--- + +## Rappel des objectifs de la sécurité informatique + +1. Maintenir l'intégrité des données +2. S'assurer du niveaux d'authentification et d'autorisation +3. Maintenir la disponibilité des services +4. Assurer la traçabilité des échanges +5. Éviter la fuite d'informations + +--- + +## Topologie d'exemple + +![center](./img/intranettopologie.png) + +--- + +## La zone "Services Intranet" + +--- + +## Les zones "Postes de travail" + +--- + +## Sauvegarde des postes + +--- + +## La zone "Services Extranet" + +--- + +## Supervision de l'infrastructure + +--- + +## Aller plus loin + +### Détection des intrusions réseau + +- [Snort](https://www.snort.org/) +- [Suricata](https://suricata-ids.org/) + +### Supervision + +- [Nagios]() + +### Centralisation et analyse des journaux + +- [La suite ELK](https://www.elastic.co/fr/products) +- [Munin](http://munin-monitoring.org/) + +--- + +## Le poste de travail + +### Stratégie antivirale +### Stratégie de mise à jour +### Stratégie de sauvegarde +### Confidentialité des communications + +--- + +## Confidentialité des communications + +### Éléments de base de cryptographie asymétrique +### Utilisation de GnuPG + +--- + +## Utilisation de GnuPG + +### Cryptographie à clé publique/privée +### GPG + + +--- + +## Cryptographie à clé publique/privée (1) + +### Chiffrer un message + +![center](./img/publickeycryptoencryption.png) + +--- + +## Cryptographie à clé publique/privée (2) + +### Signer un message + +![center](./img/publickeycryptosigning.png) + +--- + +## GPG + +> GNU Privacy Gard - https://gnupg.org/ + +--- + + +## Créer une paire de clés GPG + + +```bash +gpg2 --full-gen-key +``` + +--- + +## Chiffrer un document + +### Chiffrement + +```bash +gpg2 --armor --encrypt +``` + +Un fichier `.asc` sera généré. C'est votre fichier chiffré. + +### Déchiffrement + +```bash +gpg2 --output \ + --decrypt .asc +``` + +--- + +## Signer un document + +### Signature + +```bash +gpg2 --detach-sign +``` + +Un fichier ``.sig sera généré. C'est la signature de votre document. + +### Vérification + +```bash +gpg2 --verify .sig +``` +Le fichier original doit être dans le même répertoire et porter le nom `` pour que vous puissiez vérifier une signature. + +--- + +## Lister les clés du trousseau local + +```bash +gpg2 --keyid-format long --list-keys +``` +--- + +## Publier une clé GPG publique sur un serveur de clés + +```bash +gpg2 --keyserver \ + --send-key +``` +Exemple de serveur de clés: [hkp://p80.pool.sks-keyservers.net:80](https://sks-keyservers.net/overview-of-pools.php) + +--- + +## Chercher une clé GPG publique sur un serveur de clés + +```bash +gpg2 --keyserver \ + --search-keys +``` + +--- + +## Mettre à jour les clés de son trousseau local + +```bash +gpg2 --keyserver \ + --refresh-keys +``` + +--- + +## Révoquer une clé GPG + +### Créer le certificat de révocation + +```bash +gpg2 --output \ + --gen-revoke +``` +Ce certificat est à sauvegarder de manière sécurisée. + +### Utiliser un certificat de révocation + +```bash +# Importer le certificat +gpg2 --import + +# Diffuser la révocation de votre clé +gpg2 --keyserver \ + --send-keys +``` +Les utilisateurs de GPG verront alors votre clé comme révoquée. + +--- + +## Exercice + +- Générer votre propre clé GPG pour votre adresse courriel. +- Faire signer votre clé par au moins 1 de vos collègues dans la salle +- Configurer votre client courriel pour qu'il utilise votre clé GPG + - Exemple: [Thunderbird - Plugin Enigmail](https://www.enigmail.net/index.php/en/) + +- Rechercher et récupérer la clé associée à l'adresse wpetit@cadoles.com +- Envoyer un courriel chiffré et signé par votre clé à wpetit@cadoles.com + +--- + +## Créer une clé GPG + +--- + +# Licence + +## CC BY-NC-SA 3.0 FR + +[Creative Commons - Attribution - Pas d’Utilisation Commerciale - Partage dans les Mêmes Conditions 3.0 France](https://creativecommons.org/licenses/by-nc-sa/3.0/fr/) diff --git a/cesi/securite_entreprise/presentation/securite_informatique_poste_de_travail.md b/cesi/securite_entreprise/presentation/securite_informatique_poste_de_travail.md new file mode 100644 index 0000000..e3bbec0 --- /dev/null +++ b/cesi/securite_entreprise/presentation/securite_informatique_poste_de_travail.md @@ -0,0 +1,292 @@ +# La sécurité informatique en entreprise + +## Tour d'horizon + +William Petit - S.C.O.P. Cadoles - 2017 + +--- + + +# Qu'est ce que la sécurité ? + +## Menaces, vulnérabilités, contre-mesures et risque + +--- + +## Menace + +> Cause potentielle d'un incident, pouvant causer des dommages à un système ou une organisation. +> +> -- Définition (traduite) de "menace" dans le standard ISO/IEC 27000 + +Source: [ISO/IEC 27000 - Wikipédia](https://en.wikipedia.org/wiki/ISO/IEC_27000) + +--- + +## Vulnérabilité + +> Faiblesse d'un "bien" ou d'un "contrôle" pouvant être exploité par une ou plusieurs "menaces". +> +> -- Définition (traduite) de "vulnérabilité" dans le standard ISO/IEC 27000 + +Source: [ISO/IEC 27000 - Wikipédia](https://en.wikipedia.org/wiki/ISO/IEC_27000) + +--- + +## Contre-mesure + +> Disposition prise pour s'opposer à une action, à un effet, à un événement, ou pour les prévenir. +> +> -- Définition de "contre-mesure" + +Source: [Wiktionnaire](https://fr.wiktionary.org/wiki/contre-mesure) + +--- + +## Risque + +> Possibilité d’un événement négatif, péril possible, hasard dangereux. +> +> -- Définition de "risque" + +Source: [Wiktionnaire](https://fr.wiktionary.org/wiki/risque) + +### Formule empirique +$$Risque= \frac {\mathit{Vuln \acute{e}rabilit\acute{e}} \times \mathit{Menace}} {\mathit{ContreMesure}}$$ + +--- + + +# Responsabilité légale + +## Responsabilité et peines pour l'attaquant +## Responsabilité et peines pour l'entreprise + +--- + + +## Responsabilité et peines pour l'attaquant + +> Le fait d'accéder ou de se maintenir, frauduleusement, dans tout ou partie d'un système de traitement automatisé de données est puni de **deux ans d'emprisonnement et de 60 000 € d'amende**. +> [...] +> Lorsque les infractions prévues aux deux premiers alinéas ont été commises à l'encontre d'un système de traitement automatisé de données à caractère personnel mis en œuvre par l'Etat, la peine est portée à **cinq ans d'emprisonnement et à 150 000 € d'amende**. +> +> -- Extrait de l'article 323-1 du Code Pénal + +Source: [Légifrance](https://www.legifrance.gouv.fr/affichCodeArticle.do?idArticle=LEGIARTI000006418316&cidTexte=LEGITEXT000006070719) + +--- + + + +## Responsabilité et peines pour l'entreprise + +### Qu'est ce qu'une "donnée personnelle" ? + +> Toute information se rapportant à une personne physique identifiée ou identifiable (ci-après dénommée «personne concernée») ; est réputée être une «personne physique identifiable» une personne physique qui peut être **identifiée, directement ou indirectement**, notamment par **référence à un identifiant**, tel qu'un **nom, un numéro d'identification, des données de localisation, un identifiant en ligne, ou à un ou plusieurs éléments spécifiques propres à son identité physique, physiologique, génétique, psychique, économique, culturelle ou sociale** +> +> -- Extrait de l'article 4 du RGPD + +Source: [CNIL](https://www.cnil.fr/fr/reglement-europeen-protection-donnees/chapitre1#Article4) + + +--- + + +## Responsabilité et peines pour l'entreprise + +### Réponsabilité au niveau national + +> Le responsable du traitement est tenu de prendre toutes précautions utiles, au regard de la nature des données et des risques présentés par le traitement, pour préserver la sécurité des données et, notamment, empêcher qu'elles soient déformées, endommagées, ou que des tiers non autorisés y aient accès. +> +> -- Article 34 de la loi n° 78-17 du 6 janvier 1978 + +Source: [Légifrance](https://www.legifrance.gouv.fr/affichTexteArticle.do?cidTexte=JORFTEXT000000886460&idArticle=LEGIARTI000006528131&dateTexte=&categorieLien=cid) + +--- + + +### Réponsabilité au niveau européen + +> [..] le responsable du traitement doit mettre en oeuvre les mesures techniques et d'organisation appropriées pour **protéger les données à caractère personnel contre la destruction accidentelle ou illicite, la perte accidentelle, l'altération, la diffusion ou l'accès non autorisés**, notamment lorsque le traitement comporte des transmissions de données dans un réseau, ainsi que **contre toute autre forme de traitement illicite**. +> +> -- Extrait de l'article 17 de la directive européenne 95/46/CE du 24 octobre 1995 + +Source: [EURLex](http://eur-lex.europa.eu/LexUriServ/LexUriServ.do?uri=CELEX%3A31995L0046%3AFR%3AHTML) + +--- + + +### Peines au niveau national + +> Le fait de procéder ou de faire procéder à un traitement de données à caractère personnel sans mettre en oeuvre les mesures prescrites à l'article 34 de la loi n° 78-17 du 6 janvier 1978 précitée est puni de **cinq ans d'emprisonnement et de 300 000 euros d'amende**. +> +> -- Article 226-17 du Code Pénal + +Source: [Légifrance](https://www.legifrance.gouv.fr/affichCodeArticle.do?idArticle=LEGIARTI000006417964&cidTexte=LEGITEXT000006070719) + +--- + + +# Objectifs de la sécurité informatique + +## Maintenir l'intégrité des données +## S'assurer du niveaux d'authentification et d'autorisation +## Maintenir la disponibilité des services +## Assurer la traçabilité des échanges +## Éviter la fuite d'informations + +--- + +## Maintenir l'intégrité des données + +- Mitiger les risques de corruption de données (volontaire ou involontaire) +- Mitiger les risques de perte de données + +--- + +## S'assurer du niveaux d'authentification et d'autorisation + +- S'assurer que les acteurs **(humains ou non)** de l'infrastructure sont correctement identifiés +- S'assurer que les acteurs ne peuvent effectuer que les actions que leur niveau d'accréditation permet +- S'assurer que chaque acteur n'a pas un niveau d'accréditation supérieur à ce que requiert ses missions + +--- + +## Maintenir la disponibilité des services + +- S'assurer que les services de l'infrastructure sont accessibles aux acteurs autorisés +- S'assurer que la qualité de service correspond aux attentes "métier" + +--- + +## Assurer la traçabilité des échanges + +- S'assurer que pour toute opération sur une ressource "sensible", on est capable d'identifier l'acteur à l'origine de celle ci +- S'assurer qu'on est capable d'identifier les "chaines d'opérations" d'un acteur donné + +--- + +## Éviter la fuite d'informations + +- Protéger les ressources sensibles des accès non autorisés +- S'assurer que chaque acteur n'a accès qu'aux informations nécessaires à ses missions + +--- + + +# Une politique de sécurité, plusieurs niveaux d'application + +### Identifier les différents contextes et leurs spécificités +### Nécessité de la démarche globale et intégration du facteur humain + +--- + + +## Identifier les différents contextes et leurs spécificités + +### Le lieu de travail +### Le poste de travail +### L'intranet +### L'extranet +### L'utilisateur +--- + +## Le lieu de travail + +- Y a-t-il un inventaire des ressources techniques/matérielles avec leur localisation ? +- Quelle est la politique de ségrégation des ressources techniques vis à vis de leur niveau de criticité pour l'entreprise ? +- Quels personnels ont potentiellement accès aux ressources matérielles ? Quels mécanismes sont utilisés pour filtrer les accès ? + +--- + +## Le poste de travail + +- Quelle est la politique d'authentification des utilisateurs sur leur poste de travail ? +- Quelles libertés les utilisateurs ont ils quant à l'installation/configuration de leur poste de travail ? +- Quelle est la politique de supervision des postes de travail ? +- Quelles données sont sauvegardées ? Comment sont elles sauvegardées ? + +--- + +## L'intranet + +- Quelle est la politique d'authentification des utilisateurs sur l'intranet ? +- Quelle est la politique d'accès des utilisateurs itinérants ? +- Quelles données sont sauvegardées ? Comment sont elles sauvegardées ? + +--- + +## L'extranet + +- Quelle est la politique d'authentification des utilisateurs sur l'intranet ? +- Quelles sont les données d'utilisateurs externes stockés dans le système d'information ? +- Quels sont les échanges entre l'extranet et l'intranet ? +- Quelles données sont sauvegardées ? Comment sont elles sauvegardées ? + +--- + +## L'utilisateur + +- L'utilisateur est il sensibilisé aux problèmatiques de sécurité dans l'entreprise ? + +--- + + +## Nécessité de la démarche globale et l'intégration du facteur humain + +- Les chartes d'utilisation +- La formation continue des salariés + - L'approche "dépénalisante" et l'identification des référents + - Actions de sensibilisation + - Bulletins d'information +- Un processus continue avec une réévaluation constante + +--- + + +# La démarche d'audit + +## Les différents types d'audit +## Déroulement d'un audit + +Source : [ANSSI - PASSI 2.1 - Référentiel d'exigences pour les auditeurs](https://www.ssi.gouv.fr/uploads/2014/12/PASSI_referentiel-exigences_v2.1.pdf) + +--- + + +## Les différents types d'audit + +### Audit d’architecture +### Audit de configuration +### Audit de code source +### Tests d’intrusion +### Audit organisationnel et physique +### Audit de systèmes industriels + +--- + + +## Déroulement d'un audit + +### Établissement d’une convention +### Préparation et déclenchement de la prestation +### Exécution de la prestation +### Restitution +### Élaboration du rapport d’audit +### Clôture de la prestation +--- + + +## Travaux pratiques + +### Tests d'intrusion sur les applications Web + +--- + +# Licence + +## CC BY-NC-SA 3.0 FR + +[Creative Commons - Attribution - Pas d’Utilisation Commerciale - Partage dans les Mêmes Conditions 3.0 France](https://creativecommons.org/licenses/by-nc-sa/3.0/fr/) + diff --git a/cesi/securite_entreprise/ressources/intranet-demo/.gitignore b/cesi/securite_entreprise/ressources/intranet-demo/.gitignore new file mode 100644 index 0000000..dace708 --- /dev/null +++ b/cesi/securite_entreprise/ressources/intranet-demo/.gitignore @@ -0,0 +1 @@ +/.vagrant diff --git a/cesi/securite_entreprise/ressources/intranet-demo/README.md b/cesi/securite_entreprise/ressources/intranet-demo/README.md new file mode 100644 index 0000000..17f82d1 --- /dev/null +++ b/cesi/securite_entreprise/ressources/intranet-demo/README.md @@ -0,0 +1,18 @@ +# Intranet Demo + +Démonstrateur d'un intranet d'entreprise composé de: + +- Un pare-feu +- Un réseau "Comptabilité" avec un poste client Linux +- Un réseau "Développement" avec un poste client Linux +- Un réseau "Services Intranet" +- Un réseau "Services Extranet" + +Ce projet utilise [Vagrant](https://www.vagrantup.com/). + +## Démarrage + +```bash +vagrant plugin install vagrant-reload vagrant-vbguest +vagrant up +``` diff --git a/cesi/securite_entreprise/ressources/intranet-demo/Vagrantfile b/cesi/securite_entreprise/ressources/intranet-demo/Vagrantfile new file mode 100644 index 0000000..aaff680 --- /dev/null +++ b/cesi/securite_entreprise/ressources/intranet-demo/Vagrantfile @@ -0,0 +1,63 @@ +# -*- mode: ruby -*- +# vi: set ft=ruby : + +# All Vagrant configuration is done below. The "2" in Vagrant.configure +# configures the configuration version (we support older styles for +# backwards compatibility). Please don't change it unless you know what +# you're doing. +Vagrant.configure("2") do |config| + # The most common configuration options are documented and commented below. + # For a complete reference, please see the online documentation at + # https://docs.vagrantup.com. + + config.vbguest.auto_update = false + config.vbguest.no_remote = true + + config.vm.provision :shell, + inline: "localectl set-keymap fr" + + config.vm.define "firewall" do |firewall| + + firewall.vm.box = "ubuntu/xenial64" + firewall.vm.hostname = "firewall" + + firewall.vm.network "public_network" + + firewall.vm.network "private_network", ip: "192.168.200.254", virtualbox_intnet: "accounting" + firewall.vm.network "private_network", ip: "192.168.201.254", virtualbox_intnet: "developer" + firewall.vm.network "private_network", ip: "192.168.202.254", virtualbox_intnet: "intra-services" + + firewall.vm.provision :shell, path: "provisioning/common/disable_predictable_interfaces.sh" + firewall.vm.provision :reload + firewall.vm.provision :shell, path: "provisioning/firewall/configure_dns.sh" + firewall.vm.provision :shell, path: "provisioning/firewall/configure_ip_forwarding.sh" + firewall.vm.provision :shell, path: "provisioning/firewall/configure_firewall_rules.sh" + + end + + config.vm.define "intranet-portal" do |portal| + portal.vm.box = "ubuntu/xenial64" + portal.vm.hostname = "intranet-portal" + portal.vm.network "private_network", ip: "192.168.202.10", virtualbox_intnet: "intra-services" + portal.vm.provision :shell, :inline => "ip route delete default 2>&1 >/dev/null || true; ip route add default via 192.168.202.254" + end + + config.vm.define "workstation1-developer-linux" do |workstation| + workstation.vm.box = "ubuntu/xenial64" + workstation.vm.hostname = "developer-ws1" + workstation.vm.network "private_network", ip: "192.168.201.10", virtualbox_intnet: "developer", auto_config: false + workstation.vm.provision :shell, path: "provisioning/workstation/configure_desktop.sh" + workstation.vm.provision :reload + workstation.vm.provision :shell, path: "provisioning/workstation/configure_network.sh" + end + + config.vm.define "workstation1-accounting-linux" do |workstation| + workstation.vm.box = "ubuntu/xenial64" + workstation.vm.hostname = "accounting-ws1" + workstation.vm.network "private_network", ip: "192.168.200.10", virtualbox_intnet: "accounting", auto_config: false + workstation.vm.provision :shell, path: "provisioning/workstation/configure_desktop.sh" + workstation.vm.provision :reload + workstation.vm.provision :shell, path: "provisioning/workstation/configure_network.sh" + end + +end diff --git a/cesi/securite_entreprise/ressources/intranet-demo/provisioning/common/disable_predictable_interfaces.sh b/cesi/securite_entreprise/ressources/intranet-demo/provisioning/common/disable_predictable_interfaces.sh new file mode 100644 index 0000000..a36dd5d --- /dev/null +++ b/cesi/securite_entreprise/ressources/intranet-demo/provisioning/common/disable_predictable_interfaces.sh @@ -0,0 +1,5 @@ +#!/usr/bin/env bash + +sed -i 's/GRUB_CMDLINE_LINUX=""/GRUB_CMDLINE_LINUX="net.ifnames=0"/' /etc/default/grub + +update-grub diff --git a/cesi/securite_entreprise/ressources/intranet-demo/provisioning/firewall/configure_dns.sh b/cesi/securite_entreprise/ressources/intranet-demo/provisioning/firewall/configure_dns.sh new file mode 100644 index 0000000..c3e18a7 --- /dev/null +++ b/cesi/securite_entreprise/ressources/intranet-demo/provisioning/firewall/configure_dns.sh @@ -0,0 +1,24 @@ +#!/usr/bin/env bash + +set -xe + +source /vagrant/provisioning/firewall/firewall.conf + +apt-get update +apt-get install -y dnsmasq + +systemctl stop systemd-resolved +systemctl disable systemd-resolved + + +cat > /etc/dnsmasq.d/local.conf < 80 INTERNET" +ufw route allow in on $DEVELOPER_IFACE out on $MGMT_IFACE to any port 443 from $DEVELOPER_NETWORK\ + comment "DEVELOPER -> 443 INTERNET" + +# On autorise les connexions HTTP(S) vers l'exterieur depuis le réseau "accounting" +ufw route allow in on $ACCOUNTING_IFACE out on $MGMT_IFACE to any port 80 from $ACCOUNTING_NETWORK\ + comment "ACCOUNTING -> 80 INTERNET" +ufw route allow in on $ACCOUNTING_IFACE out on $MGMT_IFACE to any port 443 from $ACCOUNTING_NETWORK\ + comment "ACCOUNTING -> 443 INTERNET" + +# On autorise toutes les connexions vers le réseau "services intranet" depuis le réseau "accounting" +# et le réseau "developer" +ufw route allow in on $ACCOUNTING_IFACE out on $INTRANET_IFACE to any from $ACCOUNTING_NETWORK\ + comment "ACCOUNTING -> * SERVICES INTRA" +ufw route allow in on $DEVELOPER_IFACE out on $INTRANET_IFACE to any from $DEVELOPER_NETWORK\ + comment "DEVELOPER -> * SERVICES INTRA" + +# Application des règles +ufw --force enable diff --git a/cesi/securite_entreprise/ressources/intranet-demo/provisioning/firewall/configure_ip_forwarding.sh b/cesi/securite_entreprise/ressources/intranet-demo/provisioning/firewall/configure_ip_forwarding.sh new file mode 100644 index 0000000..3c90235 --- /dev/null +++ b/cesi/securite_entreprise/ressources/intranet-demo/provisioning/firewall/configure_ip_forwarding.sh @@ -0,0 +1,30 @@ +#!/usr/bin/env bash + +set -xe + +source /vagrant/provisioning/firewall/firewall.conf + +# Activation du NAT Forwarding +sed -i 's/^#net\/ipv4\/ip_forward.*$/net\/ipv4\/ip_forward=1/' /etc/ufw/sysctl.conf +sed -i 's/^#net\/ipv6\/conf\/default\/forwarding.*$/net\/ipv6\/conf\/default\/forwarding=1/' /etc/ufw/sysctl.conf +sed -i 's/^#net\/ipv6\/conf\/all\/forwarding.*$/net\/ipv6\/conf\/all\/forwarding=1/' /etc/ufw/sysctl.conf + +#sed -i 's/^DEFAULT_FORWARD_POLICY="DROP"$/DEFAULT_FORWARD_POLICY="ACCEPT"/' /etc/default/ufw + +# Ajout des règles de forwarding +TMP_FILE=$(mktemp) +cat > "$TMP_FILE" <