securite_-_presentation

Voir cette page sous forme de diaporama.

La sécurité - Présentation

V 1.8.3 le 11/09/2017 - Ph. Sèvre

  • la sécurité n’est pas un état, c’est une démarche permanente ⇒ définition d'une politique de sécurité
  • la sécurité ne se limite pas à l'utilisation d'un outil (pare-feu, anti-virus, …)
  • la sécurité à 100 % n’est pas possible : il n’y a pas de solution magique, juste un ensemble de pratiques à perfectionner
  • la sécurité n'est possible sans maîtrise des fondamentaux du réseau et de l'informatique
  • 3 (+1) éléments fondamentaux :
  • Disponibilité : garantie que ces éléments considérés sont accessibles au moment voulu par les personnes autorisées.
  • Intégrité : garantie que les éléments considérés sont exacts et complets.
  • Confidentialité : garantie que seules les personnes autorisées ont accès aux éléments considérés.
  • Traçabilité (ou « Preuve ») : garantie que les accès et tentatives d'accès aux éléments considérés sont tracés et que ces traces sont conservées et exploitables.
  • En anglais CIA (Confidentiuality, Integrity, Avalaibility)
  • connaissez votre système
    • c'est la base !! (Quid d'une machine avec les ports 80, 443, 22 ouverts ?)
  • principe de moindre privilège
    • fournir le minimum de privilèges pour exécuter une tâche
  • défense en profondeur
    • plusieurs niveaux de défense basés sur des principes différents
    • Et si… ?
  • prévention importante mais détection (rapide) aussi importante
  • Les utilisateurs du système
  • Des personnes malveillantes
  • Un programme malveillant
  • Un sinistre
  • humains
    • maladresse, inconscience, malveillance, ingénierie sociale, espionnage
  • techniques
    • liés au matériel, au logiciel, à l'environnement
  • la quête de la sécurité dans une installation présente de nombreuses analogies avec la conduite de la guerre et la stratégie
  • les curieux pourront lire :
    • L'art de la guerreSun-Tzu
    • De la guerreKarl von Clausewitz
    • Le Prince - Nicholas Machiavel
  • Les techniques mises en oeuvre sont de plus en plus sophistiquées et mettent en oeuvre des techniques de plus en plus complexes (cryptographie, virus polymorphiques)
  • On assiste à une forte recrudescence des attaques de vers (Blaster, …), des spywares et du phishing
  • les attaques sur DNS sont de plus en plus nombreuses car elles peuvent rapporter beaucoup au plan financier.
  • Il y a peu, on estimait que la durée de vie d’un poste de travail Windows XP SP1 non patché et connecté directement à l’internet était d’une vingtaine de minutes environ, durée supérieure à la durée du téléchargement d’un patch …
  • Les réseaux de machines zombies ou botnet peuvent comporter plusieurs centaines de milliers de machines à disposition d'une personne pour envoyer du spam ou commettre une attaque en déni de service.
  • des pirates iraniens ont réussi il y a peu de temps à créer de faux certificats google pour espionner ldes comptes de messagerie
  • le virus : programme qui se duplique sur d'autres machines
  • le ver : programme qui se duplique lui-même par le réseau
  • le cheval de Troie (Trojan) : logiciel nuisible déguisé en programme légitime
  • la porte dérobée (Backdoor) : accès frauduleux caché
  • le logiciel espion (spyware) : collecte illégale d'informations
  • l'enregistreur de frappe (keylogger)
  • l'exploit : permet d'exploiter une faille de sécurité pour obtenir une élévation des privilèges
  • le rootkit : permet de mettre en place une porte dérobée

Il en existe plusieurs types :

  • agression opportuniste : “scripts-kiddies” : outils standards et technicité limitée
  • agression ciblée : discrète et efficace
    • Recherche d’information
    • ciblée sur les maillons faibles
    • stratégie plus subtile
  • Peut être :
    • interne ou
    • externe
  • Blocage des entrées (surcharge par des DOS)
  • SPAM (utilisation du relais de messagerie)
  • Intrusion dans un système (récupération de mots de passe, application ancienne ou mal configurée, …)
  • Ecoute du réseau avec des renifleurs (Ethereal, Wireshark)
  • Attaques par rebond en prenant d’abord la main sur le routeur/pare-feu d’entrée pour ensuite attaquer le réseau intérieur (attaque par rebond)
  • podsurfing avec une clé USB (autorun et U3)
  • recherches des trous de sécurité
  • utilisation de scanners permettant de détecter les adresses IP et les ports utilisés (NMAP) -
  • certains permettent de détecter l’OS grâce aux numéros de séquence TCP
  • connection aux serveurs applicatifs pour récupérer le numéro de version et les vulnérabilités connues (sendmail, bind, …)
  • Et enfin attaque par débordement de buffer avec un “exploit” spécifique pour obtenir des privilèges root
  • mise en place d'un rootkit

Modes de contrôle d’un système :

  • ingénierie sociale (pratique relationnelle)
  • mot de passe récupéré (crackage ou reniflage) ou prêté
  • Installation avec paramètres par défaut non adaptés
  • application mal installée ou configurée
  • application trop ancienne
  • agression interne

On les appelle encore attaques par saturation

  • consistent à surcharger le système pour le rendre incapable de fonctionner ou trop lent,
  • à remplir les journaux (rendre la recherche plus complexe) ou une partition système
  • mutiplication du nbre de connexions (x 10, x 100 ou plus )
  • Attaque depuis une seule source ou mutualisée avec amplification (facteur 1:1000) très difficile à contrer (DDOS cf Yahoo)
  • Attaque avec source falsifiée ou utilisant des intermédaires (rebonds)

Exemples :

  • (win)nuke, ping of death, land, teardrop, jolt, pepsi, bo(i)nk, nestea(2), naptha (et dérivés), 3wahas, stream, fraggle,
  • ou une combinaison de plusieurs « techniques » (targa/rape)
  • fork bomb

en TCP :

  • SYN Flood

avec ICMP : echo et echo reply

avec UDP

  • fausses connexions TCP (SYN sans ACK) ⇒ saturation des buffers ⇒ explosion de la pile

les causes :

  • installation des OS et des applicatifs avec les paramètres par défaut
  • Comptes utilisateurs sans mot de passe ou avec mots de passe trop faibles
  • Sauvegardes inexistantes ou incomplètes
  • Nombre trop élevé de port ouverts
  • Aucun filtrage de paquets
  • Journalisation des évenements inexistante ou incomplète
  • Programmes CGI vulnérables
  • Débordements de buffers dans les RPC (Remote Procedure Call)
  • Vulnérabilités dans Sendmail
  • faiblesses BIND
  • Commandes R (Rexec, rsh, rlogin …)
  • LPD (démon d’impression)
  • démon de montage
  • Chaines SNMP par défaut
  • Principe de base : n'autoriser que ce qui est strictement indispensable
  • n'exposer que ce qui est strictement nécessaire
  • définir strictement les différents périmètres ou zones (partie publique, partie privée, …) avec les règles adaptées
  • la topologie est importante : la partie publique devra être limitée au maximum
  • Un serveur DNS ne doit renseigner que le minimum utile
    • Mise en place d’ACL pour les requêtes et le transfert de zones
    • DNS maître externe : dangereux !
  • Éventuellement : serveur DNS interne et DNS externe
  • attention aux empoisonnements du cache DNS
  • DHCP : service très sensible et facile à rendre inopérant: un script très simple permet d'épuiser tous les baux disponibles
  • il devient alors très simple de mettre en place son propre serveur DHCP
  • contre-mesure: DHCP distribuant des baux uniquement aux adresses MAC répertoriées (facile sous Unix)
  • Attention à la couche liaison : elle est peu sécurisée et facile à mettre en défaut
  • L'usurpation d'adresse MAC (ARP Spoofing) est facile à mettre en oeuvre
  • Un switch se comporte comme un simple HUB si on épuise sa table d'adresses MAC au moyen d'une ARP storm (outils arp-sk, arpspoof, …)
  • Utilisation de VLAN par ports pour séparer les réseaux (niveau 2 OSI)
  • Les VLAN par adresse MAC ou par adresse IP sont faciles à mettre en défaut.
  • les routeurs sont également sensibles
  • attention aux mots de passe
  • attention aux protocoles utilisés: RIP V1 ne dispose d'aucun élément de sécurité
  • Défense en profondeur : mettre en oeuvre plusieurs lignes de défense adaptées opérant de façon différente (OS (MacOs, OpenBSD)/processeur différents) en séparant les tâches
  • Que se passe-t-il si la première ligne tombe ?
  • Tenir compte de l’architecture OSI : un pare-feu est opérationnel aux niveaux 3 et 4 mais pas au niveau applicatif ⇒ mise en oeuvre de proxys inverses ou de solutions pouvant remonter jusqu'au niveau 7 (Level 7)
  • Une machine exposée ne doit assurer qu’une seule fonction pour limiter les dégats en cas de compromission
  • Disposer d'une architecture ad-hoc : DMZ ,filtrage à plusieurs niveaux (plusieurs pare-feu)
  • Plusieurs sous-réseaux (séparation niveaux OSI 3/4) avec filtrage et ACL sur les routeurs
  • elle est amenée à jouer un rôle de plus en plus important pour des raisons évidentes
  • en revanche, les hotes hébergeant les machines virtuelles doivent être considérés avec un soin tout particulier sous peine de voir compromises l'ensembles des machines virtuelles de l'hôte
  • Un bastion est une machine exposée dans la DMZ. Elle doit donc être configurée en conséquence
    • Machine dégraissée : uniquement les applicatifs et services nécessaires
    • noyau minimal recompilé sans modules (Linux)
    • pas de compilateur installé : il permet de créer un rootkit
  • Sous Linux, possibilité d’installer une distribution minimale et sécurisée (Trustix, Debian, …)
  • BSD : OpenDSB, NetBSD et FreeBSD
  • Sous Windows, désactiver la couche Netbios et les outils d’exploration ainsi que la connectivité au domaine AD si possible
  • Attention aux paramètres de démarrage de la machine
  • Elle doit démarrer sur le premier disque uniquement et non pas sur CD, périph. USB ou disquette : sinon il suffit d’un Live-CD Linux (Knoppix, System Rescue CD …) pour démarrer une machine Linux ou même Windows et d’accéder aux partitions (NTFS, Linux…)
  • Le BIOS doit être protégé par mot de passe pour la raison précédente
  • Sur une machine Linux, le démarrage doit imposer un mot de passe pour passer des paramètres au noyau (configurer lilo ou grub en conséquence)
  • Exemple Linux : linux init single permet de démarrer en run-level 1 donc de se connecter en root sans saisie de mot de passe !

Implique des modes opératoires spécifiques : en cas de vol, le disque dur est lisible par tout le monde

  • Nécessité de mettre en place des systèmes de fichiers cryptés :
    • Windows : utiliser EFS ou TrueCrypt (sur Linux aussi)
    • Linux/Unix : utiliser crypto-loop ou dmcrypt avec des algorithmes de cryptage sûrs (BlowFish, …)
  • Cette stratégie est également valable pour les clés USB
  • Les paranoiaques peuvent également mettre en place des partitions de swap cryptées.

Il peut poser de sérieux problèmes de sécurité s'il est mal configuré.

Quelques pistes :

  • ne pas diffuser les SSID
  • Changer les noms de SSID par défaut (linksys, …)
  • Mettre en place le cryptage
  • WEP résiste 10 mn à un outil comme aircrack (airsnort, …)
  • Choisir WPA ou WPA2 plus robuste avec des clés longues
  • Utiliser la norme 802.1x avec un serveur WPA/Radius ce qui permet de bloquer un port physique dans de bonnes conditions de sécurité
  • Utiliser un contrôleur sans fil gérant plusieurs SSID et les VLAN : solutions d'authentification différenciées
    • Une faible pour les visiteurs
    • Une forte 802.1x et WPA pour les utilisateurs de l'entreprise
  • s’abonner aux listes de diffusion de l’éditeur et des organismes de sécurité (CERT)
  • lire (!!!) les mises en gardes diffusées
  • urpmi pour Mandriva, yum pour Redhat, apt-get/aptitude pour Debian/Ubuntu)
  • s’assurer de la fiabilité de la source
  • vérifier la signature des pièces téléchargées
  • Vérifier la somme de contrôle MD5 (avec md5sum sous Linux ou les signatures de packages)
  • s’abonner aux listes de diffusion de l’éditeur et des organismes de sécurité (CERT)
  • lire (!!!) les mises en gardes diffusées
  • récupérer les patches et mises à jour
    • WindowsUpdate/SUS pour Microsoft,
    • Services Pack
    • Hotfixes
  • Limiter le nombre de comptes priviliégiés (root, administrateur)
  • Règle : on ne devrait donner un accès administrateur qu’aux personnes capables de réparer les dégats qu’elles auront causé en mode administrateur !!!
  • N’accorder que les droits minimaux pour efffectuer une tâche donnée (sudo sous Linux permet de donner l’autorisation d’effectuer certaines taches à des utilisateurs “ordinaires” : relancer Apache, …)
  • utiliser les shadow passwords beaucoup plus sécurisés que les mots de passe classiques (pwconv/pwunconv permet de changer) pwck permet de vérifier la cohérence
  • écrire une note concernant la création de mots de passe
  • éviter le mots (craquage par dictionnaire)
  • longueur efficace minimale : 8
  • utiliser un aphabet varié avec caractère de ponctuation, min/maj
  • commande Linux mkpasswd :
  • Définir une stratégie de vieillissement de mots de passe (chage) avec PAM ou stratégie de mot de passe Windows
  • utiliser les outils de crackage (Crack, “John the Ripper”, L0Pht (Windows) ) pour évaluer la résistance des mots de passe

Le principe de base en sécurité : ne lancer que les services réellement utilisés. La plupart des distrib. Linux (sauf Debian) lancent au démarrage plus d’une vingtaine de services !!!!

  • Sous Linux :
    • utiliser ntsysv
    • ou chkconfig service off
    • chkconfig –list
  • sur Debian : update-rc.d service remove
  • Sous W2k/W2k3/W2k8 : Gestionnaire de services

Un serveur Windows 2003 lance de nombreux services,. D'autre part le mécanisme de RPC ne permet pas d'imposer des restriction sur les adresses d'écoute (cf. Linux).

  • TCP:
    • 135/tcp: Remote Procedure Call (RPC) service (RpcSs)
    • 139/tcp: NetBIOS over TCP/IP driver (netbt.sys)
    • 445/tcp: NetBIOS over TCP/IP driver (netbt.sys)
    • un port dynamique TCP (LSA RPC services): lsass.exe
    • un port dynamique TCP port (RPC services): Task Scheduler service (schedule)
    • pas dans Windows Server 2003 SP1

UDP:

  • 123/udp: Windows Time service (w32time)
  • 137/udp, 138/udp: NetBIOS over TCP/IP driver (netbt.sys)
  • 445/udp: NetBIOS over TCP/IP driver (netbt.sys)
  • 500/udp, 4500/udp: IPSEC Services service (PolicyAgent)

Un port UDP dynamique : DNS Client service (Dnscache)

  • en conclusion, on pourra désactiver tous les services non strictement nécessaires
  • La totalité des applications peut envoyer des informations dans les fichiers de log
  • Attention à une stratégie générant des volumes trop importants pous être gérés efficacement
  • Nécessité de disposer d’outils pour exploiter ces logs :
    • filtres Unix , commande grep
    • scripts Perl
    • applications du type swatch permettant de rechercher un motif dans un fichier log
  • Attention au volume : le filtrage de paquets peut générer des volumes très importants : il est fortement recommandé que le répertoire /var soit stocké dans sa propre partition pour ne pas remplir la partition racine.
  • S’assurer par ailleurs du paramétrage de logrotate qui permet de faire “tourner” et compresser les fichiers de log.
  • Il est également recommandé d’envoyer les logs sur une machine dédiée pour les centraliser et éventuellement les graver sur DVD
  • On pourra utiliser syslog syslog-ng ou ntsyslog (Windows)
  • Attention à l’intégrité des logs : une des premières tâches d’un intrus qui aura réussi à pénétrer un système consistera à masquer ou effacer les traces de ses méfaits en effaçant ou épurant les logs.
  • On peut positionner l’attribut Append avec la commande chattr pour autoriser seulement l’ajout en fin de fichier
chattr +a /var/log/messages
  • On peut générer des sommes de contrôle pour les fichiers sensibles (avec md5sum ou des outils comme tripwire)
  • généralités : un processus Unix dispose d'un utilisateur (UID) et d'un groupe (GID), son accès aux objets système est tributaire de ces propriétés : un utilisateur “normal” ne pourra pas accéder à un répertoire s'il ne dispose pas des droits adaptés
  • mettre en place une stratégie de sécurité consiste à jouer sur les droits d'accès aux fichiers (RWX)
    • 700 : limité au seul possesseur
    • 777 : toute utilisation pour tout le monde
  • droits associés à l'utilisateur
  • droits associés au programme lui-même
  • généralement différents
  • identiques si le bit Set-UID est positionné
  • droits réels : celui qui lance le processus
  • droits effectifs : propr. du programme si le Set-UID est positionné
  • De nombreuses tentatives d’intrusions proviennent de processus lancés à partir de programmes Set-UID.
  • Un fichier dont le bit Set-UID est positionné dispose des droits du possesseur du fichier et non de ses droits de simple utilisateur (/bin/passwd est possédé par root et est Set-UID par exemple)
  • Ces fichiers sont des parfaits candidats pour les pirates . La plus grande partie des intrusions provient des programmes SetUID
  • Il suffit qu’un programme Set-UID récele un bug ou qu’on essaie de l’attaquer avec un débordement de buffer pour pouvoir lancer un processus avec les droits de root !!!
  • Recherche des fichiers Set-UID :

find / -user root -perm -4000 -ls .

  • il conviendra d'établir la liste des fichiers Set-UID du système et de détecter chaque jour les changements.
  • Une des sources de problèmes sont les utilisateurs et groupes dont les UID et GID ne sont pas dans /etc/passwd et /etc/group : il peuvent provenir d’archives tar externes au système

find / ! -fstype proc ‘(‘ -nouser -o -nogroup ‘)’ -ls

  • pour enlever les attributs SUID et SGID :

chmod ug-s fichier

  • valeur octale : 4000 (Set-UID) et 2000 (Set-GID)
  • le bit collant permet de gérer les droits d'écriture d'un fichier (modification et suppression)
  • sur un répertoire : interdit la suppression des fichiers qu'il contient à tout utilisateur autre que le propriétaire.
  • sur un fichier : indique que le fichier doit rester en mémoire après son exécution (utilisé pou sh et vi à l'époque).
  • flag : T ,n octal : 1000
  • on peut également rendre immuables certains fichiers système importantes (ls, ps, cp , …) : on ne pourra alors plus les changer, les renommer ni faire de liens sur eux avec la commande :

chattr +i fichier

  • Seul root peut positionner ou enlever cet attribut
  • consiste à “durcir” la configuration pour éviter les failles de sécurité
  • application de droits restrictifs
  • limitation des droits d'execution
  • limiter le nombre de démons
  • Bastille Linux : application permettant de “durcir “ un système Linux (Mandrake, RedHat, Debian) - Très formateur car sa configuration se fait à l’aide d’un script qui pose des questions très pertinentes
  • lynis : application permettant de faire un audit de sécurité d'un système Linux et de faire des suggestion utiles quand à la sécurité.
  • Msec (Mandriva) : définit plusieurs niveaux de 1 (securité faible) à 5 (paranoiaque). Cf doc
  • Consiste à lancer un démon dans une cage “chroot” ne permettant pas à celui-ci d’accéder aux données extérieures ce qui limite les dégats en cas de compromission.
  • Il est en revanche nécessaire que la nouvelle arborescence comporte toutes les bibliothèques et répertoires nécessaires au fonctionnement du démon
  • On installe souvent bind, postfix ou les démons ftp en chroot
  • De plus en plus les démons (serveurs et autres) sont conçus (si possible) pour fonctionner avec des utilisateurs spécifiques (apache, named, etc.) et non en tant que root ce qui limite les conséquences en cas de compromission du démon: l’utilisateur “normal” ne dispose que peu de droits de nuire.
  • ainsi un seul démon Apache est lancé en tant que root, ce processus lance les processus Apache chargés de répondre aux requêtes Web avec un utilisateur “normal” : www-data pour Debian
  • La plus grande partie des intrusions dans les système Unix provient des programmes SetUID. On provoque un débordement de buffer (buffer overflow) avec des données calculées spécialement pour infecter la pile et obtenir une élévation de privilèges
  • On remplace alors l’adresse de retour qui se trouve dans la pile par l’adresse d’un processus shell (/bin/sh) ou une copie SUID de /bin/sh cachée sur le système. Le shell est inséré dans le buffer. L’attaquant dispose alors d’un shell avec les droits root !!!
  1. Scan des ports pour déterminer les ports ouverts (avec nmap)
  2. Ouverture de session pour identifier les serveurs et leur N° de version
  3. recherche de l'exploit adapté à l'application, la version et à l'OS détecté
  4. Lancement d'un exploit avec débordement de buffer pour obtenir des privilèges administrateur
  5. Depuis cette session, mise en place d'un rootkit permettant mettre en place une backdoor.
  • Principe : mise en oeuvre avec des données spécialement formatées pour écraser la pile (souvent dans les chaînes de format C : « %s %2d »)
  • Ces débordements de buffers sont fréquents dans les applications de type RPC (Portmapper, NFS, NIS,…) ainsi que dans le serveur Ftp Wu-ftpd
  • Une attaque de type débordement de buffer est spécifique :
    • à l’application (sendmail, apache) et à sa version
    • au format des exécutables du système considéré (ELF pour Linux, BSD ou Windows)
    • et bien sûr à l’architecture de la machine (X86, PowerPC, …)
  • une attaque pourra être efficace sur un processeur Intel mais pas sur un processeur Alpha ou Motorola.
  • Pour protéger une infrastructure sensible, certains utilisent les solutions suivantes :
    • OS OpenBSD (l’Unix réputé le plus sûr !)
    • architecture non Intel (Alpha ou Motorola) ⇒ très peu de risques de débordement de buffers.
  • Il existe maintenant des mécanismes mis en oeuvre dans le noyau Linux interdisant d'exécuter des données dans la pile (PAX) et également dans W2k3 Serveur
  • les processeurs modernes disposent d'un bit non éxécutable (NX bit = > paramétrage BIOS)
  • Address Space Layout Randomization.
  • consiste à placer de façon aléatoire les données (pile, tas, bibliothèques, …) en mémoire virtuelle pour limiter les risques d'attaque en débordement de buffer
  • utilisé avec des objectifs différents sur Linux (PAX), OpenBSD, Mac/OS et Windows depuis Vista
  • Il existe maintant des outils comme Metasploit pour forger (pour tests!) des outils d'exploit.
  • c'est un véritable environnement de développement permettant des forger des shellcodes adaptés à des cibles données.

exemple :

# win32_bind_dllinject -  EXITFUNC=seh LPORT=4444 Size=312 Encoder=PexFnstenvSub http://metasploit.com
my $shellcode =
"\x2b\xc9\x83\xe9\xb8\xd9\xee\xd9\x74\x24\xf4\x5b\x81\x73\x13\xa9".
"\xd4\x7e\x28\x83\xeb\xfc\xe2\xf4\x41\x82\x7e\x28\xa9\x87\x2b\x7e".
"\xfe\x5f\x12\x0c\xb1\x5f\x3b\x14\x22\x80\x7b\x50\xa8\x3e\xf5\x62".
"\xb1\x5f\x24\x08\xa8\x3f\x9d\x1a\xe0\x5f\x4a\xa3\xa8\x3a\x4f\xd7".
"\x55\xe5\xbe\x84\x91\x34\x0a\x2f\x68\x1b\x73\x29\x6e\x3f\x8c\x13".
  • Après avoir compromis un système, un intrus va essayer de garder une porte ouverte lui permettant de continuer à utiliser le système (back-door)
  • Il installe des outils lui permettant de garder cette porte ouverte et de camoufler son intrusion. Le root-kit contient des versions spéciales des commandes de base (ls, ps, netstat, find, sshd, telnet, kill, killall, last, …) modifiées pour ne pas faire apparaître la trace des données modifiées
  • par exemple, la commande netstat ne fera pas apparaitre une connexion distante avec la machine de l’attaquant !! Le démon sshd acceptera une session sans mot de passe avec un nom d’utilisateur particulier ou sur un port spécifique

le kernel permet de charger dynamiquement des modules (insmod) permettant d’effectuer diverses actions des modules infectés peuvent avoir le même effet qu’un rootkit

  • Un cheval de Troie est un programme permettant d’obtenir le mot de passe administrateur

on le réalise facilement en shell Unix Les chevaux de Troie (Trojan)

  • Ne jamais utiliser un PATH faisant appel à un chemin relatif ou faisant référence au répertoire courant :

PATH=.:/bin/:/usr/bin

  • faire plusieurs fois <Entree> ou Ctrl-D avant une ouverture de session
  • Un cheval de Troie peut également déclencher des connexions réseaux sortantes qui ne seront par forcément détectée par les pare-feu
  • Ce sont des logiciels malicieux qui, profitant de faiblesses dans un navigateur, s'installent sur une machine et déclenchent des actions dangereuses (connexions sortantes) inventaires, et peuvent prendre la main sur une machine.
  • Ils sont de plus en plus répandus sur les machines Windows
  • On pourra utiliser des outils comme SpyBot ou Ad-Aware
  • c’est un serveur installé dans la DMZ pour servir de leurre pour les intrus. Il permet à l’administrateur d’étudier les modes d’attaque
  • depuis le noyau 2.4 : Iptables filtrage de paquets stateful : tient compte de la connexion TCP ⇒ décisions plus pertinentes
  • attention : il est également recommandé d'effectuer du filtrage sortant permettant de bloquer les éventuels chevaux de Troie
  chaîne INPUT
  chaîne FORWARD
  chaîne OUTPUT
  • Activer l’anti-spoofing (usurpation d’adresses)
  • exemple : accepte les connexions entrantes sur les ports www et ssh pour la destination 192.168.1.100
iptables -P INPUT DROP
iptables -A INPUT -s 0/0 -d 192.168.1.100 -p tcp -destination-port www -j  ACCEPT
iptables -A INPUT -s 0/0 -d 192.168.1.100 -p tcp -destination-port ssh -j  ACCEPT
iptables -P INPUT DROP
iptables -P INPUT LOG
  • de nombreux outils existent qui permettent de simplifier la conceptions de fichiers de configuration de firewallqui peut être assez pénible
    • Firehol : basé sur un langage de description
    • firestarter : génère un script à partir de questions simples (X Windows)
    • shorewall : dispose de préconfigurations (1 carte, 2 cartes, 2 cartes + DMZ)
    • ferm : permet d'utiliser un langage de plus haut niveau qu'iptables
  • il est impératif de tester la configuration d’un pare-feu dans les conditions réelles
  • NMAP (Network Mapper) est le plus connu des scanners de ports
  • il permet de rechercher les adresses IP sur un réseau ainsi que les ports ouverts
  • détermine l’OS utilisé (option -O), le filtrage de paquet utilisé et d’autres caractéristiques
  • Permet des scans furtif (-sS), lent (paranoid) ou avec leurres (decoy)
  • il existe un front-end en mode graphique (nmapfe)
  • il existe d’autres outils du même genre comme SendIp
  • un outils de test de firewall : Firewall Tester (Open Source)
  • Outil le plus réputé : nessus (nessus.org) permet de faire des tests de détection d'intrusion
    • Détecte plus de 5600 faiblesses
  • TCP-Wrapper permet de limiter les connexions sur la plupart des services
  • il utilise inetd et /etc/inetd.conf : il suffit de commenter/décommenter la ligne décrivant le démon
  • exemple :
ftp stream tcp nowait root /usr/sbin/tcpd in.ftpd
  • syntaxe genérale des fichier hosts.allow et hosts.deny

<daemon list>: <client list> [: <option>: <option>: …]

  • les Wildcards
    • ALL — Tout.
    • LOCAL — toutes les machines locales (sans .)
    • KNOWN — lesss machines connues ou dont l'utilisateur est connu.
    • UNKNOWN — les machines dont le nom ou l'adresse sont inconnues ou l'utilisateur est inconnu.
    • PARANOID — toutes les machines dont le nom de machine ne correspond pas à l'adresse.
  • exemple de configuration
  • fichier /etc/hosts.allow
# hosts.allow
ALL : LOCAL
in.ftpd : 192.168.0.,10.194.168.0/255.255.255.0, 192.168.1.1
in.telnetd : .staps.u-bourgogne.fr
  • fichier hosts.deny
#hosts.deny
ALL:ALL
  • Le protocole FTP est fréquement utilisé en raison de son efficacité et de sa simplicité
  • en revanche, il n’est absolument pas sécurisé (le mot de passe circule en clair)
  • FTP non-anonyme : fortement déconseillé . Utiliser le couple ssh/scp beaucoup plus sûr
  • FTP anonyme : utilisé pour le téléchargement
  • WU-FTPD : à éviter -
  • vsFTPD : très sécurisé et très simple
  • ProFTPD : sécurise mais un peu complexe

les différents serveurs SMTP :

  • Sendmail : passé chargé en terme de sécurité et complexe à configurer) – des progrès notables ont été effectuéssssss
  • Postfix : modulaire, peu de trous de sécurité – configuration
  • Exim : moins répandu
  • il est fortement recommandé d'installer un relais de messagerie dans la DMZ et de laisser le serveur principal dans le réseau interne
  • une couche sécurisée est maintenant fortement conseillée (SSL/TLS) pour le SMTP ainsi que pour les serveurs POP (pop3s) et IMAP (imaps)
  • cette couche s'installe sans difficulté sur la quasi totalité des serveurs SMTP et POP/IMAP
  • le serveur de messagerie doit de plus en plus intégrer des outils d'analyse anti-virus et anti-spam
  • Service stratégique sur une machine Unix
  • quelques points concernant le fichier sshd_config
    • ListenAddress 192.168.0.1 # écoute sur 1 seule interface
    • PermitRootLogin no # important
    • Port 666 ou ListenAddress 192.168.0.1:666 # changt port
    • PermitEmptyPasswords no
    • AllowUsers lulu
    • AllowGroups wheel admin
    • Protocole 2 # plus sur !
  • il est également possible de désactiver l'authentification par mot de passe et de n'utiliser que les clés publiques !
  • il est également recommandé d'utiliser des passphrase avec les clés publiques (avec ssh-agent et ssh-add)
  • les utilitaires comme denyhosts ou fail2ban permettent le blocage d'adresses IP à l'origine d'attaques SSH répétées
  • voir le fichier /var/log/auth.log
  • attention aux ACL pour éviter que le proxy soit utilisé pour commettre des actes délictueux
    • ⇒ accès réservé au réseau local ……………..
  • mise en place de l'authentification
  • utiliser des outils d'analyse de logs (calamaris, prostat, webalizer) pour obtenir des statistiques
  • Nessus/Openvas : outil de test de hôtes – fonctionne en mode graphique (Linux ou Windows)
  • Ethereal/Wireshark : analyseur de protocole (Linux/Win.)
  • Nmap : scanner de ports (Linux)
  • OpenSsh/ssh/putty : serveur/clients Secure Shell
  • Tcpdump : renifleur réseau
  • Nc : Network Cat : permet de rediriger un commande sur le reseau : nc host 110
  • Tripwire, Aide : Host IDS – permet de vérifier l’état de fichiers à partir de calcul de sommes md5
  • Snort : Network Intrusion Detection System (GPL) – Linux – permet à partir de plugins de détecter des motifs arrivant sur les interfaces réseau
  • Et aussi :
  • les outils de statistiques réseau (volumétrie) nécessaires pour mettre en évidence les pics
    • ntop
    • cacti, munin, rrdtools
  • Knoppix : distrib. Linux en Live CD , System Rescue CD, Backtrack, kali-linux – nombreuses variantes orientées sécurité
  • Airsnort : renifleur réseau Wifi
  • Et bien sûr netstat, traceroute, arpwatch
  • débrancher le câble réseau
  • Sauvegarder le disque ou la partition avec nc et graver une image (avec une Knoppix)
  • Relever les preuves : utiliser un outil du genre Tripwire pour vérifier la compromission des fichiers
  • Examiner les logs (/var/log/messages, syslog, wtmp (cde last))
  • Il pourra être utile de monter la partition sauvegardée en loopback en lecture seule pour ne rien détruire
  • Examiner éventuellement les fichiers core avec la commande strings pour extraire les chaîne permettant de donner des informations
  • Audit post-mortem avec des outils spécifiques comme le Coroner Toolkit,
  • installer le paquetage lynis
  • lancer la configuration avec lynis -c
  • tester un scan de machine distante avec avec NMAP
  • securite_-_presentation.txt
  • Dernière modification : 2017/09/11 00:55
  • de 127.0.0.1