Cheval de Troie
Dans le domaine de l'informatique un cheval de Troie est un programme ou script caché dans un programme autorisé. Ce code, une fois exécuté, ouvre un accès ou produit des effets indésirables. Les premiers programmes connus sont les Back Oriffice ou SubSeven par exemple. Ils sont apparus avec Internet, et sont pour la plupart en mode client / serveur. Le principe est simple, un fichier doit être exécuté sur la machine ciblée, puis par le client on se connecte sur le serveur. En fonction du programme utilisé, il est possible de récupérer des fichiers, en uploader, en effacer, récupérer les mots de passes, exécutés des key-loggers, jouer avec la souris, écran ... de l'utilisateur, et beaucoup d'autre choses encore. Ces programmes visent principalement les systèmes Microsoft En 2000, le programme Love Bug était inclu dans un courriel. Si ce dernier était ouvert, le message se transférait à l'ensemble des contacts de l'outil de messagerie. Ensuite il effaçait des fichiers liés au démarrage de Windows, télécharger un autre cheval de Troie récupérant les mots de passe ...
Bien que ces programmes ne sont destinés qu'à des système Microsoft, il en existe certains qui visent des systèmes Linux. Pour pallier à ces types d'attaques, les développeurs de nos chères distribution mettent à disposition des sommes de contrôle ou des signatures de Pretty Good Privacy PGP aux paquets qu'ils mettent en téléchargmenent.
Porte dérobée
La porte dérobée est une partie de code ajoutée à un programme afin d'obtenir un accès non autorisé au système hôte. Prenons le cas d'un programme, qui une fois exécuté, envoie à une adresse des informatiosn relatives à l'utilisateur. Ici il est peu probable que l'utilisateur vérifie l'intégrité du programme qu'il utilise. Vous pouvez consulter le howto-tripwire ici.
Il est très fréquent que les développeurs intègrent des portes dérobées dans leur programme, limitées la plupart du temps au programme lui-même, mais qui pourrait facilement corrompre le système hôte.
La seule façon de vérifier la présence de telles failles est la vérification fastidieuse du code source des programmes (et sites internet).
Pour les utilisateurs Debian (pour les autres aussi surement) nos chèrs développeurs nous ont mis un outil permettant la vérification des signatures MD5. Par exemple, nous utiliserons le programme debsums
pour vérifier si le programme apt
, n'est pas corrompu.
$ sudo ap-get install debsums
$ sudo debsums -s apt
$
En jouant avec les options il est possible de contrôler les fichiers de configuration ... Consulter le manuel pour plus d'informations.
Hôtes de confiance
Sous Linux, il est possible de spécifier des hôtes de confiance depuis des fichiers. Il s'agit ici de spécifier des login et machines depuis lesquelles des personnes se connectent. Lors de la demande d'accès d'une personne référencée convenablement depuis ces fichiers, cette personne est alors autorisée à exécuter certaines commandes, régulièrement appelées commandes en "r" pour remote command, sur le système distant sans spécifier de mot de passe. Ces commandes peuvent par exemple être rlogin
, rsh
, rcp
, rexec
... On comprend rapidement les failles de sécurité que peuvent engendrées ce type de solution. Les fichiers nécessaires pour cette configuration sont /etc/hosts.equiv
et ~/.rhosts
. La plupart des administrateurs désactivent ce service et donne la possibilité d'accéder à certaines commandes par un accès sécurisé ssh.
Avec ssh, il est également possible de spécifier une authentification par clé publique / privée, à l'aide d'une passphrase par défaut, mais il est possible (et déconseillé la plupart du temps) de ne pas en spécifier. L'utilisateur lors de la demande de connexion au serveur sshsera automatiquement authentifié. Ce fonctionnement est plutôt simple à mettre en oeuvre.
La première étape consiste en la génération de la paire de clés. Ensuite à l'aide d'un fichier local dans le répertoire de l'uilisateur pour les environnements Linux, par exemple ~/.ssh/id_rsa
, on spécifie notre clé privée. Sur le serveur, il suffit alors de configurer par le fichier /etc/ssh/sshd_config
la possibilité de s'authentifier par clé publique / privée. Il ne reste plus qu'à spécifier dans le répertoire personnel de l'utilisateur sur le serveur dans un fichier ~/.ssh/autorized_keys
sa clé publique.
Spoofing
Le spoofing consiste à usurper l'identité d'un utilisateur. Il peut se manifester sous la forme d'un courrier électronique, sur le système destinataire, provenir d'un utilisateur connu, ou plus dangereux sous la forme de paquets de données ressemblant à des paquets provenants d'une machine de confiance.
Pour pallier ce type d'attaque, il est possible de spécifier au noyau Linux la vérification des adresses sources. Pour cela il est nessaire de d'acitver par le fichier /etc/sysctl.conf
le paramètre net/ipv4/conf/all/rp_filter=1. Cela a pour effet de vérifier au niveau du kernel linux, d'un mécanisme de validation de paquet permettant de détecter qu'un paquet arrivant sur votre serveur est légitime ou pas.
Déni de service (DOS)
Dans une attaque DOS, l'attaquant tente d'obtenir une ressource ou accès en saturant un hôte de requêtes. Le service étant saturé, il n'est plus en mesure de contrôler l'ensemble des requêtes, et peut laisser ouvert des failles de sécurité, qui en fonctionnement normal seraient bloquées.
Il est impossible de se protéger à 100% de ce type d'attaques. Cependant, en filtrant efficacement au niveau firewall et routage les paquets entrants et en configurant soigneusement les services particulièrement sensible à ce type d'attaques (HTTP, SMTP, FTP ...) en limitant les délais d'attente et le nombre de paquets issus d'une même adresse, il est possible de restreindre ce type d'attaque.
Cassage de mots de passe
Casser un mot de passe signifie acquérir un mot de passe valide d'un autre utilisateur. La plupart des attaques de ce type s'effectue par dictionnaire.
C'est pourquoi l'utilisation de mot de passe complexe, minimum 8 caractères, incluant des chiffres et lettres possédant une casse différente et des caractères spéciaux, permet de limiter efficacement ce type d'attaque. Un renouvellement des mots de passe régulièrement en fonction des services mis à disposition est également une solution primordiale. Imposer les mots de passe aux utilisateurs est également une solution idéale.
Une solution intégrée dans les distributions *NIX et le fait de cacher les mots de passe. Cette technique déplace les chaînes de hachage du fichier /etc/passwd
dans le fichier /etc/shadow
, ce dernier n'étant lisible et modifiable que par le super-utilisateur root. Cette solution permet également la mise en place de certaines fonctionnalités comme la durée de vie d'un mot de passe. Pour plus d'infos, utiliser l'outil permettant le changement des informations d’expiration du mot de passe d’un utilisateur chage
et consulter sonmanuel.
Attaques physiques
L'attaque physique est l'intrusion physique dans la salle serveur par exemple. Elle permet le vol de disque dur, serveurs ou autres éléments actifs. Une fois les matériels récupérés, le pirate peut aisément récupérer les données portant un intérêt.
Deux solutions ici sont évidentes, l'une plus coûteuse que l'autre. La sécurisation des locaux par contrôle d'accès permet la mise en place d'une solution idéale. Elle permet de limiter l'accès à certaines personnes dans le temps, et bénéficie également une traçabilité efficace des différents passages. Le souci ici est la perte ou vol de clé, donc il est nécessaire de vérifier au préalable si le système permet rapidement la révocation d'une clé. Une autre solution est le chiffrement des données. Cette dernière n'empêchera pas le vol mais conservera (du moins temporairement) la confidentialité des données.
Attaques sociales
Appelé également social engineering, ce type d'attaque est réalisé par une personne ayant accès physiquement aux locaux d'une entreprise ou plus souvent par téléphone. L'idée ici est de se faire passer par exemple par un prestataire, un administrateur système ou réseau d'une filiale ... et de tenter de récupérer des informations critiques comme un mot de passe par exemple.
La meilleur manière de lutter contre ce type d'attaque consiste à la mise en place d'une politique et une sensibilisation des utilisateurs.