« Tenir compte de la sécurité au quotidien » : différence entre les versions
Aucun résumé des modifications |
Aucun résumé des modifications |
||
Ligne 1 : | Ligne 1 : | ||
== Introduction == | == Introduction == | ||
Un ordinateur n'est jamais en sécurité, quand bien même on croit qu'il l'est. Un dicton informatique ne dit-il pas que le maillon le plus faible dans un système informatique est l'utilisateur ? Cette fiche est là pour connaître les différents risques que l'on court en ayant un ordinateur, connecté à un réseau ou non, ainsi que pour se parer contre toute attaque et enfin pour savoir comment nettoyer l'ordinateur d'une attaque que l'on vient de subir. | Un ordinateur n'est jamais en sécurité, quand bien même on croit qu'il l'est. Un dicton informatique ne dit-il pas que le maillon le plus faible dans un système informatique est l'utilisateur ? Cette fiche est là pour connaître les différents risques que l'on court en ayant un ordinateur, connecté à un réseau ou non, ainsi que pour se parer contre toute attaque et enfin pour savoir comment nettoyer l'ordinateur d'une attaque que l'on vient de subir. | ||
Pour tout le document (et de manière générale), il est évidemment conseillé de lire les pages de manuel des commandes avant de poser des questions. | |||
== Les bases : connaître son système == | == Les bases : connaître son système == | ||
D'abord et avant tout il faut être à l'aise avec les concepts essentiels de [http://fr.wikipedia.org/wiki/Linux linux]. Cela permettra d'une part de mieux connaître et comprendre ce que nous faisons et d'autre part de mieux réagir en cas d'attaque. Donc documentez vous sur ce système et son langage de commande ([[Admin-admin_env-shell|shell | D'abord et avant tout il faut être à l'aise avec les concepts essentiels de [http://fr.wikipedia.org/wiki/Linux linux]. Cela permettra d'une part de mieux connaître et comprendre ce que nous faisons et d'autre part de mieux réagir en cas d'attaque. Donc documentez vous sur ce système et son langage de commande ([[Admin-admin_env-shell|shell]]).Lisez aussi la documentation expliquant ce que sont [[Admin-admin_boot-daemons|les démons et comment ils fonctionnent]]. Voyez comment fonctionne un réseau, ce que sont les ports réseau, les permissions des fichiers, ce que sont les failles de sécurité des logiciels, etc. | ||
Ligne 9 : | Ligne 11 : | ||
== Bien configurer ses démons == | == Bien configurer ses démons == | ||
[[Reseau-web-Apache_protec|Apache]] | [[Reseau-web-Apache_protec|Apache]] | ||
sshd plutôt que telnetd | sshd plutôt que telnetd | ||
samba | samba | ||
NFS | NFS | ||
vnc au-dessus de ssh | vnc au-dessus de ssh | ||
[brouillon] | |||
Ensuite, il faut installer le strict minimum, par exemple sur un serveur il n'est nul besoin de serveur X. | Ensuite, il faut installer le strict minimum, par exemple sur un serveur il n'est nul besoin de serveur X. | ||
Ligne 24 : | Ligne 31 : | ||
Un antivirus n'est nécessaire que si l'ordinateur est en dual boot avec windows. En revanche, il n'est jamais mauvais d'installer et de lancer régulièrement ''chkrootkit'', qui vérifie la présence de rootkits (équivalent des vers, troyens, etc.). | Un antivirus n'est nécessaire que si l'ordinateur est en dual boot avec windows. En revanche, il n'est jamais mauvais d'installer et de lancer régulièrement ''chkrootkit'', qui vérifie la présence de rootkits (équivalent des vers, troyens, etc.). | ||
<cadre info>'''rootkits :''' | <cadre info>'''rootkits :''' logiciels permettant d'utiliser une faille de sécurité pour obtenir les droits de l'administrateur (root).</cadre> | ||
Si la machine possède un serveur apache fournissant des pages dynamiques (cgi mais surtout php et autres langages de script web) il faut se méfier des attaques du type injection de code. | Si la machine possède un serveur apache fournissant des pages dynamiques (cgi mais surtout php et autres langages de script web) il faut se méfier des attaques du type injection de code. | ||
Ligne 35 : | Ligne 42 : | ||
Recompiler le noyau en ne laissant que le nécessaire n'est pas une mauvaise initiative. | Recompiler le noyau en ne laissant que le nécessaire n'est pas une mauvaise initiative. | ||
[/brouillon] | |||
== Connaître les risques == | == Connaître les risques == | ||
Vérifier la présence de keyloggers. | Vérifier la présence de keyloggers. | ||
== Détecter les intrusions == | == Détecter les intrusions == | ||
Les systèmes de détection d'intrusion (IDS) : snort, tiger, | Les systèmes de détection d'intrusion (IDS) : snort, tiger, | ||
chkrootkit | chkrootkit | ||
fcheck | fcheck | ||
== Que faire en cas d'attaque ? == | == Que faire en cas d'attaque ? == | ||
=== Connaître les outils === | === Connaître les outils === | ||
==== who ==== | |||
* | La commande <code>who</code> ou <code>w</code> permet de voir les utilisateurs actuellement connectés (loggés) au système. Attention cependant car un agresseur peut être -- et l'est certainement si c'est le cas -- connecté sous votre nom, s'il est parvenu à s'immiscer dans votre système. | ||
* lsof | |||
==== netstat ==== | |||
La commande <code>netstat</code> est une commande qui liste toutes les connexions réseau actives sur votre machine ainsi que l'état dans lequel elles sont (listening, connected, established, etc.) : | |||
<code>Proto Recv-Q Send-Q Adresse locale Adresse distante Etat | |||
tcp 0 0 0.0.0.0:3129 0.0.0.0:* LISTEN | |||
tcp6 0 0 :::443 :::* LISTEN</code> | |||
On voit ici par exemple que le port 3129 écoute (LISTEN) sur la machine locale (0.0.0.0) et que le port 443 en fait de même. | |||
Vérifiez les connexions actives, les ports ouverts, et faites le lien avec vos démons et autres programmes qui tournent. Si un port ne vous dit rien, informez-vous. | |||
==== lsof ==== | |||
La commande <code>lsof</code> liste tous les fichiers ouverts actuellement. Elle indique aussi quel utilisateur utilise quel fichier. | |||
<code>COMMAND PID USER FD TYPE DEVICE SIZE NODE NAME | |||
init 1 root mem REG 3,65 31432 1720343 /sbin/init | |||
apache2 597 root mem REG 3,65 385484 25423 /usr/sbin/apache2</code> | |||
Les informations parlent d'elle-mêmes. Ce sont deux cas précis parce-que le processus <code>init</code> a le fichier <code>/sbin/init</code> d'ouvert (de même pour apache). | |||
==== ps ==== | |||
La commande <code>ps</code> liste tous les processus actuellement en cours d'exécution sur le système. S'il en est un que vous ne connaissez pas, identifiez-le. Si vous ne savez toujours pas ce que c'est, pas d'affollement : utilisez la commande <code>lsof</code> et voyez si vous trouvez des fichiers en rapport avec ce processus. Vous pouvez alors identifier le processus et déterminer si c'est un processus "innofensif". Si ce n'est pas le cas, vous pouvez supprimer les fichiers qu'il faut. Attention toutefois à bien être certain que ce soit un logiciel malveillant que vous supprimez ! En revanche, si c'est un logiciel qui s'est fait infecter (par exemple apache) il suffit de réinstaller celui-ci, après avoir vidé le cache des paquets de votre gestionnaire de packages. Vérifiez aussi la configuration après réinstallation. Nul besoin de redémarrer, sauf si évidemment c'est le noyau qui est corrompu, chose qui est à mon avis très rare. |
Version du 28 juin 2006 à 13:02
Introduction
Un ordinateur n'est jamais en sécurité, quand bien même on croit qu'il l'est. Un dicton informatique ne dit-il pas que le maillon le plus faible dans un système informatique est l'utilisateur ? Cette fiche est là pour connaître les différents risques que l'on court en ayant un ordinateur, connecté à un réseau ou non, ainsi que pour se parer contre toute attaque et enfin pour savoir comment nettoyer l'ordinateur d'une attaque que l'on vient de subir.
Pour tout le document (et de manière générale), il est évidemment conseillé de lire les pages de manuel des commandes avant de poser des questions.
Les bases : connaître son système
D'abord et avant tout il faut être à l'aise avec les concepts essentiels de linux. Cela permettra d'une part de mieux connaître et comprendre ce que nous faisons et d'autre part de mieux réagir en cas d'attaque. Donc documentez vous sur ce système et son langage de commande (shell).Lisez aussi la documentation expliquant ce que sont les démons et comment ils fonctionnent. Voyez comment fonctionne un réseau, ce que sont les ports réseau, les permissions des fichiers, ce que sont les failles de sécurité des logiciels, etc.
Bien configurer ses démons
sshd plutôt que telnetd
samba
NFS
vnc au-dessus de ssh
[brouillon] Ensuite, il faut installer le strict minimum, par exemple sur un serveur il n'est nul besoin de serveur X.
Par ailleurs, veillez à ne pas démarrer des services inutiles (nul besoin d'un serveur ntp si la machine n'est utilisée qu'en tant que client sur internet, par exemple).
Une fois les risques liés aux connexions externes limités, il faut mettre en place un firewall filtrant grâce à iptables (ou autre), qui permet de commander Netfilter.
Un antivirus n'est nécessaire que si l'ordinateur est en dual boot avec windows. En revanche, il n'est jamais mauvais d'installer et de lancer régulièrement chkrootkit, qui vérifie la présence de rootkits (équivalent des vers, troyens, etc.).
<cadre info>rootkits : logiciels permettant d'utiliser une faille de sécurité pour obtenir les droits de l'administrateur (root).</cadre>
Si la machine possède un serveur apache fournissant des pages dynamiques (cgi mais surtout php et autres langages de script web) il faut se méfier des attaques du type injection de code.
A l'installation du système, il faut bien réfléchir au partitionnement des disques. Les données statiques (binaires, configuration, etc.) seront sur une partition montée en lecture seule.
De manière générale, éviter autant que possible le sticky bit.
<cadre>sticky bit : droit donné à un fichier exécutable d'utiliser les droits de l'administrateur.</cadre>
Recompiler le noyau en ne laissant que le nécessaire n'est pas une mauvaise initiative. [/brouillon]
Connaître les risques
Vérifier la présence de keyloggers.
Détecter les intrusions
Les systèmes de détection d'intrusion (IDS) : snort, tiger,
chkrootkit
fcheck
Que faire en cas d'attaque ?
Connaître les outils
who
La commande who
ou w
permet de voir les utilisateurs actuellement connectés (loggés) au système. Attention cependant car un agresseur peut être -- et l'est certainement si c'est le cas -- connecté sous votre nom, s'il est parvenu à s'immiscer dans votre système.
netstat
La commande netstat
est une commande qui liste toutes les connexions réseau actives sur votre machine ainsi que l'état dans lequel elles sont (listening, connected, established, etc.) :
Proto Recv-Q Send-Q Adresse locale Adresse distante Etat
tcp 0 0 0.0.0.0:3129 0.0.0.0:* LISTEN
tcp6 0 0 :::443 :::* LISTEN
On voit ici par exemple que le port 3129 écoute (LISTEN) sur la machine locale (0.0.0.0) et que le port 443 en fait de même.
Vérifiez les connexions actives, les ports ouverts, et faites le lien avec vos démons et autres programmes qui tournent. Si un port ne vous dit rien, informez-vous.
lsof
La commande lsof
liste tous les fichiers ouverts actuellement. Elle indique aussi quel utilisateur utilise quel fichier.
COMMAND PID USER FD TYPE DEVICE SIZE NODE NAME
init 1 root mem REG 3,65 31432 1720343 /sbin/init
apache2 597 root mem REG 3,65 385484 25423 /usr/sbin/apache2
Les informations parlent d'elle-mêmes. Ce sont deux cas précis parce-que le processus init
a le fichier /sbin/init
d'ouvert (de même pour apache).
ps
La commande ps
liste tous les processus actuellement en cours d'exécution sur le système. S'il en est un que vous ne connaissez pas, identifiez-le. Si vous ne savez toujours pas ce que c'est, pas d'affollement : utilisez la commande lsof
et voyez si vous trouvez des fichiers en rapport avec ce processus. Vous pouvez alors identifier le processus et déterminer si c'est un processus "innofensif". Si ce n'est pas le cas, vous pouvez supprimer les fichiers qu'il faut. Attention toutefois à bien être certain que ce soit un logiciel malveillant que vous supprimez ! En revanche, si c'est un logiciel qui s'est fait infecter (par exemple apache) il suffit de réinstaller celui-ci, après avoir vidé le cache des paquets de votre gestionnaire de packages. Vérifiez aussi la configuration après réinstallation. Nul besoin de redémarrer, sauf si évidemment c'est le noyau qui est corrompu, chose qui est à mon avis très rare.