Paramétrer le réseau sous Linux La commande « ifconfig » affiche les paramètres réseau de la machine (commande accessible en « root ») Les interfaces : - « eth0 », « eth1 », « ethx » sont les interfaces Ethernet « lo » est la boucle locale « localhost » 127.0.0.1 « eth0:0 » ou « eth0:1 » sont des configurations alternatives pour la carte « eth0 » « wlan0 » est une interface Wifi Pour modifier la config réseau sous Debian et Ubuntu, modifier le fichier /etc/network/interfaces : Si vous utilisez juste DHCP, vous n'avez qu'à entrer quelque chose comme ça : auto eth0 allow-hotplug eth0 iface eth0 inet dhcp Pour DHCPv6 (utilsé par IPv6), ajoutez la section iface suivante iface eth0 inet6 dhcp Autrement, IPv6 peut être configuré automatiquement en utilisant l'autoconfiguration sans état (stateless address autoconfiguration ou SLAAC) qui est spécifiée en utilisant auto à la place de dhcp dans la section inet6 : iface eth0 inet6 auto Pour configurer une interface réseau manuellement Si vous configurez l'interface réseau manuellement, quelque chose comme ce qui suit paramètrera la passerelle par défaut (réseau, broadcast – adresse de diffusion et passerelle - gateway sont optionnels) : auto eth0 iface eth0 inet static address 192.0.2.7 netmask 255.255.255.0 gateway 192.0.2.254 Si vous voulez ajouter une adresse IPv6, ajoutez quelque chose comme cela : iface eth0 inet6 static address 2001:db8::c0ca:1eaf netmask 64 gateway 2001:db8::1ead:ed:beef Pour plus d'options, voir man interfaces. Les commandes « ping » et « pingv6 » permettent de tester un ping sur une machine distante. La commande « route » permet d’afficher la table de routage, souvent utilisée pour contrôler la route par défaut. (« route -n »pour éviter la résolution des noms) Terminal, shell et aide Le terminal par défaut sur les distributions Debian et Ubuntu, ainsi que sur Mac OS X est BASH. D’autres Shells sont disponibles. Le Bash exécute un script au lancement. Afin de créer des alias ou de personnaliser le Shell à la connexion, pour par exemple ajouter des alias, on peut modifier : - /etc/profile (peu recommandé car il s’agit d’un fichier fourni par le système et susceptible d’être mis à jour) /etc/profile.d/ : dossier qui contient des scripts qui seront exécutés, pour tous les utilisateurs du système ~/.bachrc et (ou) ~/.profile : script exécuté au login de l’utilisateur (et lui seul) Toute commande sous Shell est un fichier exécutable que le système trouve dans un des dossiers système (variable $PATH, contenant généralement /usr/bin, /usr/sbin, /bin et /sbin). Tout fichier peut devenir un exécutable, et tout exécutable est un fichier (binaire pour les fichiers compilés, ou texte pour les scripts interprétés). Utiliser « chmod a+x » pour le rendre exécutable. La première ligne d’un fichier de script contient un lien vers l’exécutable qui permettra d’interpréter le langage de ce script. Exemple : #!/bin/bash Ou : #!/usr/bin/php Afin de préparer une tâche planifiée, on utilise le système « cron » ou « crontab ». Pour modifier le fichier « crontab » de l’utilisateur, utiliser la commande « crontab -e ». Les scripts « cron » du système sont dans /etc/cron.* Gérer et installer des applications Sous Debian et sous Ubuntu, le gestionnaire de paquets est APT. Configuration des dépôts (serveurs sources des fichiers) : /etc/apt/sources.list Mettre à jour la liste des paquets : apt-get update Mettre à jour le système complet : apt-get upgrade Installer un paquet : apt-get instrall paquet Rechercher un paquet : aptitude search paquet Supprimer un paquet : dpkg --remove paquet Sous CentOS et RedHat, le gestionnaire de paquets est RPM. rpm –Uvh paquet Sous Gentoo : « emerge » Pour d’autres utilitaires à installer à partir des sources, généralement : 1. Décompresser l’archive (tar zxf pour un fichier .tgz) 2. Lire le fichier « README » qui, par convention, contient les instructions 3. Bien souvent, 3 commandes à taper à la suite : a. « ./configure » b. « make » c. « make install » Fichiers et droits Changer les droits d’un fichier : - chmod a+x : ajoute les droits d’exécution (x) à tout le monde (a) chmod g+w : ajoute les droits d’écriture (w) au groupe auquel appartient le fichier (g) Les droits : RWX (pour entrer dans un dossier, il faut qu’il soit exécutable X) Les catégories d’utilisateurs : - U : le propriétaire du fichier G : le groupe O : les autres A : tout le monde Changer les droits en absolu : chmod 755 ou 644 par exemple (voir binaire) Utilisateurs et groupes Ajouter ou supprimer un utilisateur : les utilitaires « useradd et userdel » existent, mais on leur préférera sous Debian et Ubuntu « adduser » et « deluser », plus perfectionnés. useradd is native binary compiled with the system. But, adduser is a perl script which uses useradd binary in back-end. adduser is more user friendly and interactive than its back-end useradd. There's no difference in features provided. Les utilisateurs sont inscrits dans le fichier /etc/password Leurs mots de passe sont (sauf LDAP) cryptés dans le fichier /etc/shadow Les groupes et les utilisateurs qui en font partie sont paramétrés dans /etc/group Processus Voir les processus : « ps aux » Voir les ressources consommées : « top » (sortir avec Ctrl+C) Tuer un processus : « kill PID » (où PID est l’id du processus) envoie un signal « SIGTERM » qui demande au process de s’arrêter de lui-même. Si le process ignore ce signal, on sort le calibre supérieur : « kill -9 » envoie au processus le signal 9, c’est-à-dire SIGKILL. Donner une priorité aux process : « nice commande » qui lance une commande en priorité basse. Ou « renice PID » (voir « man renice ») pour changer la priorité d’un PID. Plus la valeur de « nice » est élevée, plus le process est « gentil », c’est-à-dire de priorité faible. Expressions régulières Voir Wikipédia : les expressions régulières permettent de rechercher une partie de chaîne, une syntaxe particulière (dans un fichier ou le nom de fichiers). Exemples simples : http://fr.wikipedia.org/wiki/Expression_rationnelle#Exemples Pipe Le résultat d’une commande s’affiche par défaut sur le terminal (TTY), mais on peut rediriger le résultat de cette commande vers l’entrée d’une autre, c’est le « pipe », symbole « | » (AltGr+6 sur un clavier de PC). Exemple : « grep toto * | more » : recherche toutes les occurrences de « toto » dans les fichiers, et envoie le résultat dans « more », ce qui permet de passer page par page. Sed, grep, awk, find, perl Quelques commandes permettant de trouver des fichiers : Find : Pour afficher tous les fichiers se terminant par ``.c'' : find . -name ".c" -print Pour afficher tous les répertoires dont le nom se termine par ``s'' : find . -type d -name "*s" -print Grep : trouve les occurrences d’une chaîne dans des fichiers Exemple « grep toto c.* » cherche la chaîne « toto » dans tous les fichiers commençant par « c. » « grep -i » pour ignorer la casse, « -r » pour chercher dans les sous-dossiers, « -l » pour uniquement afficher le nom du fichier… « awk », « sed » sont des commandes sophistiquées permettant de remplacer des données dans un fichier ou de traiter des séquences de données. Il peut être intéressant de les connaître pour administrer des serveurs, mais nous n’aborderons pas ces commandes ici. « Perl » est un langage de script avancé, il permet, en ligne de commande, d’exécuter des actions complexes sur des fichiers. Un minimum de connaissance en script Perl est une base pour un administrateur système Linux. Eléments de sécurité Linux Mises à jour (apt-get update, apticron, surveillance Nagios ou autre) Firewall : « iptables » A minima, voici cinq recommandations : Réduire la surface d’attaque en : - mettant à jour régulièrement le système, - supprimant les logiciels inutiles, - limitant au juste besoin les services en écoute pour chaque interface réseau, - désactivant le chargement dynamique des modules, - appliquant le principe de moindre privilège aux logiciels, - utilisant un mécanisme de contrôle d’accès reposant sur les rôles (Tomoyo, AppArmor, ACL grsecurity), - adaptant le noyau (suppression des éléments inutiles, application des patchs de durcissements) au contexte d’emploi envisagé ; Appliquer le principe de défense en profondeur en : - utilisant un pare-feu local, - implémentant un schéma de partitionnement et les options de montage adaptés au contexte d’emploi, - positionnant les droits en lecture, écriture et exécution sur les fichiers après une analyse fine des besoins des utilisateurs mais aussi des services locaux. Une attention particulière sera portée sur les scripts lancés automatiquement, - chiffrant les données ; Réaliser un cloisonnement des éléments applicatifs selon leur sensibilité ; Rédiger et appliquer les procédures d’administration sécurisées (enregistrement des données de connexion des exploitants, supervision, mises à jour, sauvegardes, etc.) ; Définir et mettre en place une politique de journalisation d’événements cohérente : - distinguant différents niveaux de criticité selon leur impact sur la sécurité du système, - permettant la remontée d’alertes en fonction de ces niveaux.