Telechargé par Stanis Humez

Cours Linux

publicité
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.
Téléchargement