« Tenir compte de la sécurité au quotidien » : différence entre les versions

De Lea Linux
Aller à la navigation Aller à la recherche
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 bash]]).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.
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 :''' logiciel permettant d'utiliser une faille de sécurité pour obtenir les droits de l'administrateur (root).</cadre>
<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
==== who ====
* netstat
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
 
* ps
==== 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

Apache

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.