Services Reseaux Securite Linux
Services Reseaux Securite Linux
Services Reseaux Securite Linux
AHOUMENOU Maurice P.
Installation OS (Ubuntu)
AHOUMENOU Maurice P. 2
Gestion des utilisateurs sous GNU/LINUX
Création d’un nouveau compte utilisateur
Pour ajouter un nouvel utilisateur, on utilise la commande useradd
Syntaxe: useradd <options> login
Exemple: useradd -m -u 1010 -g users -G video -s /bin/bash –d /home/momo -
c "Compte de Momo" momo
En utilisant l’option –p le mot de passe doit être crypté.
On peut également utiliser la commande passwd <login> pour définir le mot de
passe. Elle est chargée du cryptage du mot de passe dans /etc/shadow
Exemple: passwd momo
AHOUMENOU Maurice 3
Gestion des utilisateurs sous GNU/LINUX
Création d’un nouveau compte utilisateur
Option Rôle
-g Précise le groupe principal de l’utilisateur, par GID ou par son nom
(variable GROUP).
-G Précise les groupes additionnels (secondaires, de l’utilisateur) séparés
par des virgules
(variable GROUPS).
-d Chemin du répertoire personnel. Généralement /home/<login>, mais
n’importe quel chemin peut être précisé (variable HOME/<login>).
-k Chemin du répertoire contenant le squelette de l’arborescence du
répertoire utilisateur. C’est généralement /etc/skell (variable SKEL).
AHOUMENOU Maurice 4
Gestion des utilisateurs sous GNU/LINUX
Création d’un nouveau compte utilisateur
Option Rôle
-p Le mot de passe de l’utilisateur. Attention ! le mot de passe doit
déjà être crypté ! À moins de recopier le mot de passe d’un compte
générique, vous préférerez utiliser ensuite la commande passwd.
AHOUMENOU Maurice 5
Gestion des utilisateurs sous GNU/LINUX
Création d’un nouveau compte utilisateur
Option Rôle
-d pour supprimer le mot de passe, l'utilisateur pourra se
connecter sans !
-l pour verrouiller le compte et empêcher sa connexion en
rajoutant un ! devant le mot de passe crypté.
-u pour déverrouiller
-s Statut du compte.
AHOUMENOU Maurice 6
Gestion des utilisateurs sous GNU/LINUX
Modification d’un compte
Option Rôle
-l <login> Modifie le nom de login
-m Move : implique la présence de -d pour préciser un nouveau
répertoire personnel. Le contenu de l’ancien répertoire est
déplacé dans le nouveau.
-e <n> Expire : le mot de passe expire n jours après le 01/01/1970.
AHOUMENOU Maurice 7
Gestion des utilisateurs sous GNU/LINUX
Suppression d’un compte
AHOUMENOU Maurice 8
Gestion des utilisateurs sous GNU/LINUX
Gestion des groupes
AHOUMENOU Maurice 9
Gestion des utilisateurs sous GNU/LINUX
Gestion des groupes
Pour supprimer un groupe, on utilise la commande groupdel <nom_group>
ou delgroup <nom_group>
Pour ajouter un utilisateur à un groupe, il faut éditer le fichier /etc/group et
ajouter sur la ligne du groupe le nom de l’utilisateur.
Le fichier /etc/passwd contient les informations relatives à tous
les utilisateurs du système. Ci-dessous la structure d’une ligne du fichier
login:motdepasse:UID:GID:info_utilisateur:répertoire_principal:shell
Le champ Mot de passe peut avoir plusieurs siginifications :
"*" : il est impossible de s'authentifier sur le système avec ce compte
"!" : Le compte est désactivé
"x" : le mot de passe est dans un fichier shadow (voir ci-après)
champ vide : Il n'y a pas de mot de passe pour ce compte.
AHOUMENOU Maurice 10
Gestion des utilisateurs sous GNU/LINUX
Gestion des groupes
Les mots de passe sont cryptés et stockés dans le fichier /etc/shadow afin de
garantir leurs sécurités et seul l’administrateur peut les lire. il contient toutes
les informations sur le mot de passe et sa validité dans le temps. Chaque ligne
est composée de 9 champs séparés par des : :
Champ 1 : le login.
Champ 2 : le mot de passé crypté. Le $xx$ initial indique le type de cryptage.
Champ 3 : nombre de jours depuis le 1 er janvier 1970 du dernier changement
de mot de passe.
Champ 4 : nombre de jours avant lesquels le mot de passe ne peut pas être
changé (0 : il peut être changé n’importe quand).
Champ 5 : nombre de jours après lesquels le mot de passe doit être changé.
AHOUMENOU Maurice 11
Gestion des utilisateurs sous GNU/LINUX
Gestion des groupes
AHOUMENOU Maurice 12
Permissions sur les fichiers sous GNU/LINUX
Permissions d'accès aux fichiers
Tout fichier du système appartient à la fois à un utilisateur (son
"propriétaire") et à un groupe. Pour chaque fichier le monde de ses utilisateurs
potentiels est scindé en trois catégories, nommées :
● u, l'utilisateur normal, son propriétaire, qui est souvent son créateur, qui n'a
pas pour autant tous les droits sur lui.
● g, son groupe, ensemble d'utilisateurs ayant parfois des "permissions"
particulières.
● o, tous les autres.
AHOUMENOU Maurice 13
Permissions sur les fichiers sous GNU/LINUX
Permissions d'accès aux fichiers
Linux a repris les 3 protections d'UNIX sur les fichiers et les répertoires. Leur
notation symbolique est :
r, Readable (lecture)
w, Writable (écriture)
x, Executable (exécutable comme programme)
Pour changer le propriétaire du fichier, on utilise la syntaxe suivante:
chown [-R] <nouveau_utilisateur> <fichiers>
L'option –R (récursif) permet d'agir sur l'ensemble des sous-répertoires.
Exemple : chown -R momo /home/toto
Pour changer le groupe propriétaire du fichier, on utilise la syntaxe suivante:
chgrp [-R] <nouveau_groupe> <fichiers>
Exemple: chgrp –R momo /home/toto
AHOUMENOU Maurice 14
Permissions sur les fichiers sous GNU/LINUX
Permissions d'accès aux fichiers
Pour changer les permissions sur les fichiers, il faut utiliser la commande
chmod
Syntaxe: chmod modifications Fichier1 [Fichier2...]
S’il faut modifier les droits de l’utilisateur, utilisez le caractère u, pour les
droits du groupe le caractère g, pour le reste du monde le caractère o et pour
tous le caractère a.
Pour ajouter des droits, on utilise le caractère +, pour en retirer le caractère -, et
pour ne pas tenir compte des
paramètres précédents le caractère =.
Enfin, le droit d’accès par lui-même : r, w ou x.
exemple: chmod u+x fichier signifie "ajouter le droit d'exécution au
propriétaire du fichier"
AHOUMENOU Maurice 15
Permissions sur les fichiers sous GNU/LINUX
Permissions d'accès aux fichiers
Umask
Par défaut, tous les fichiers créés ont pour droit 666 et les dossiers 777.
L'umask est un masque qui va réduire ces droits. Lors de la création d'un
fichier, le système va soustrairre l'umask aux droits par défaut.
Exemple: umask 077
Il existe trois droits spéciaux : suid, sgid et sticky bit. Il sont ajoutés grâce à la
commande chmod
suid : chmod u+s <nom_fichier>
sgid : chmod g+s <nom_fichier>
sticky: chmod u+t <nom_fichier>
AHOUMENOU Maurice 16
Permissions sur les fichiers sous GNU/LINUX
AHOUMENOU Maurice 17
Permissions sur les fichiers sous GNU/LINUX
AHOUMENOU Maurice 18
Démons, serveurs, services sous GNU/LINUX
un serveur est un dispositif matériel et logiciel qui offre des services (partage
de fichiers, gestion des courriers électroniques, etc).
AHOUMENOU Maurice 19
Démons, serveurs, services sous GNU/LINUX
AHOUMENOU Maurice 20
Gestion des processus sous GNU/LINUX
Un processus représente à la fois un programme en cours d’exécution et tout son
environnement d’exécution (mémoire, état, identification, propriétaire, père, etc).
• Quelques liste des données d’identification:
Numéro de processus unique PID (Process ID) : chaque processus Unix est
numéroté afin de pouvoir être différencié des autres. Le premier processus lancé
par le système est 1 et il s’agit d’un processus appelé init.
Numéro de processus parent PPID (Parent Process ID) : chaque processus peut
lui-même lancer d’autres processus, des processus enfants (child process). Chaque
enfant reçoit parmi les informations le PID du
processus père qui l’a lancé. Tous les processus ont un PPID sauf le processus 0
qui est un pseudo-processus représentant le démarrage du système (crée le 1 init).
AHOUMENOU Maurice 21
Gestion des processus sous GNU/LINUX
• Quelques liste des données d’identification:
AHOUMENOU Maurice 22
Gestion des processus sous GNU/LINUX
• Les commandes sur les processus
Ps (process status): permet d’avoir des informations sur les processus en cours.
Quelques options:
-f permet d’avoir plus de détails,
-e donne des détails sur tous les processus en cours,
-u permet de préciser une liste d’un ou plusieurs utilisateurs séparés par une
virgule,
-g permet de préciser une liste d’un ou plusieurs groupes séparés par une
virgule
Exemple: ps ef
AHOUMENOU Maurice 23
Gestion des processus sous GNU/LINUX
• Les commandes sur les processus
Pstree: Permet de lister les processus dans un arbre indiquant les liens de
parentés entre eux.
Jobs: Permet de lister les processus lancés dans le shell courant.
AHOUMENOU Maurice 24
Gestion des processus sous GNU/LINUX
Les numéros du signal
Les jobs
– fg %N° de Job : Permet de mettre un processus en avant plan
– bg %N° de Job : Permet de mettre un processus en arrière plan
– Ctrl+Z: Permet de mettre un processus en attente
AHOUMENOU Maurice 25
Gestion des processus sous GNU/LINUX
Priorités des processus
La commande nice permet de lancer une commande avec une priorité.
Syntaxe: nice [valeur] commande [arguments]
Une valeur positive causera une baisse de priorité, une valeur négative causera
l’augmentation de la priorité (si autorisé). La valeur doit être comprise entre -20
et 20. Plus la valeur est élevée et plus le traitement est ralenti.
La commande renice fonctionne un peu comme nice mais elle permet de
modifier la priorité en fonction d’un utilisateur, d’un groupe ou d’un PID. La
commande visée doit donc déjà tourner.
Syntaxe: renice [-n prio] [-p] [-g] [-u] ID
La priorité doit être comprise entre -20 et 20. L’utilisateur standard ne peut
utiliser que les valeurs entre 0 et 20 permettant de baisser la priorité. L’option -p
précise un PID, -g un GID et -u un UID.
AHOUMENOU Maurice 26
Xinetd, cron sous GNU/LINUX
Présentation Xinetd
Le démon xinetd est un « super-service » permettant de contrôler
l’accès à un ensemble de services en écoutant sur tous les ports. Beaucoup de
services réseaux peuvent être configurés pour fonctionner avec xinetd, comme
les services ftp, ssh, samba, http, etc. Des options de configurations spécifiques
peuvent être appliquées pour chaque service géré.
AHOUMENOU Maurice 27
Xinetd, cron sous GNU/LINUX
Configuration Xinetd
Les fichiers de configuration sont:
/etc/xinetd.conf pour la configuration globale
/etc/xinetd.d/* : c’est le répertoire qui contient les fichiers spécifiques aux services.
Il existe un fichier par service, du même nom que celui précisé dans /etc/services.
Contenu de xinetd.conf :
defaults
{
instances = 60
log_type = SYSLOG authpriv
log_on_success = HOST PID
log_on_failure = HOST
cps = 25 30
}
includedir /etc/xinetd.d
AHOUMENOU Maurice 28
Xinetd, cron sous GNU/LINUX
Configuration Xinetd
instances : nombre maximal de requêtes qu’un service xinetd peut gérer à un
instant donné.
log_type : dans le cas présent, les traces sont gérées par le démon syslog via
authpriv et les traces sont placées dans /var/log/secure.
log_on_failure : idem mais pour les échecs. Il devient simple de savoir quels hôtes
ont tenté de se connecter si par exemple la connexion n’est pas autorisée.
AHOUMENOU Maurice 29
Xinetd, cron sous GNU/LINUX
Configuration Xinetd
cps : xinetd n’autorise que 25 connexions par secondes à un service. Si la limite est
atteinte, xinetd attendra 30 secondes avant d’autoriser à nouveau les connexions.
includedir : inclut les options des fichiers présents dans le répertoire indiqué.
Exemple /etc/xinetd.d/telnet :
# default: on
# description: The telnet server serves telnet sessions; it uses \
# unencrypted username/password pairs for authentication.
AHOUMENOU Maurice 30
Xinetd, cron sous GNU/LINUX
Configuration Xinetd
service telnet
{
disable = no
Flags = REUSE
socket type= stream
wait= no
user= root
server= /usr/sbin/in.telnetd
log on failure+= USERID
AHOUMENOU Maurice 31
Xinetd, cron sous GNU/LINUX
La première ligne en commentaire, default, a une importance particulière. Elle n’est
pas interprétée par xinetd mais par ntsysv ou chkconfig pour déterminer si le service
est actif.
service : nom du service qui correspond à un service défini dans /etc/services.
flags : attributs pour la connexion. REUSE indique que la socket sera réutilisée pour
une connexion telnet.
socket_type : spécifie le type de socket. Généralement stream (tcp) ou dgram (udp).
Une connexion directe IP se fait par raw.
wait : indique si le serveur est single-threaded (yes) ou multi-threaded (no).
user : sous quel compte utilisateur le service sera lancé.
server : chemin de l’exécutable devant être lancé.
log_on_failure : le += indique qu’on rajoute l’option associée au fichier de trace en
plus de celles par défaut. Ici : le login.
disable : indique si le service est actif ou non.
AHOUMENOU Maurice 32
Xinetd, cron sous GNU/LINUX
Configuration Xinetd
AHOUMENOU Maurice 33
Xinetd, cron sous GNU/LINUX
Démarrage et arrêt des services
On distingue deux cas.
Premier cas:
Le service xinetd est un service comme un autre dont le démarrage ou l’arrêt peut
s’effectuer avec la commande service ou directement via l’exécution de
/etc/init.d/xinetd.
Exemple: # service xinetd start
Second cas:
comme xinetd gère plusieurs services, l’arrêt de xinetd arrête tous les services
associés, et le démarrage de xinetd lance tous les services associés. Il n’est pas
possible de choisir quels services de xinetd seront lancés dans
tel ou tel niveau d’exécution. Mais on peut choisir d’activer ou de désactiver
simplement un service avec chkconfig.
Exemple: # chkconfig telnet on
AHOUMENOU Maurice 34
Xinetd, cron sous GNU/LINUX
Formalisme du cron
Minutes heures jour du mois mois jour semaine commande
1 2 3 4 5 6
AHOUMENOU Maurice 35
Xinetd, cron sous GNU/LINUX
Exemple de cron :
Exécution de df tous les jours, toute l’année, tous les quarts d’heure :
0,15,30,45 * * * * df > /tmp/libre
Exécution d’une commande tous les jours ouvrables à 17 heures :
0 17 * * 1-5 fin_boulot.sh
AHOUMENOU Maurice 36
Xinetd, cron sous GNU/LINUX
AHOUMENOU Maurice 37
Logs, syslog sous GNU/LINUX
Il y a deux services qui sont spécialisés dans la réception des messages à écrire
dans les fichiers de log :
klogd : kernel log daemon, chargé de la gestion des informations émises par le
noyau.
syslogd : system log daemon, chargé de la gestion des informations émises par tout
type de service et éventuellement le noyau.
Messages
Le service klogd gère les messages émis par le noyau. Il dispose de deux sources
d’accès aux messages :
• le système de fichiers virtuel / p r o c , utilisé par défaut s’il est présent, et plus
précisement /proc/kmsg
• les appels systèmes via l’API du noyau, notamment sys_syslog, si /proc est
absent ou si le paramètre -s a été passé à klogd .
AHOUMENOU Maurice 38
Logs, syslog sous GNU/LINUX
Messages
Les messages du noyau ont des niveaux de priorité différents, disposés de 0
(haute priorité) à 7 (message de débogage)
AHOUMENOU Maurice 42
Network configuration files sous GNU/LINUX
AHOUMENOU Maurice 43
Network configuration files sous GNU/LINUX
configuration des interfaces réseaux
règles de routage
Après avoir attribué les adresses IP aux interfaces, il faut définir les règles de
routage. Il est possible de définir plusieurs règles de routage actives simultanément.
L'ensemble de ces règles constitue ce qu'on appelle la table de routage. Chaque règle
indique un critère de sélection sur les adresses, et l'interface vers laquelle doivent
être transférés les paquets dont l'adresse de destination vérifie cette règle.
La commande utilisée pour définir une route est route.
Syntaxe: route <opération> [-net| -host] <adresse> netmask <masque> <interface>
<opération>: l’opération à effectuer sur la table de routage. L'opération la plus
courante est simplement l'ajout d'une règle de routage, auquel cas add doit être
utilisé.
AHOUMENOU Maurice 44
Network configuration files sous GNU/LINUX
configuration des interfaces réseaux
règles de routage
Exemple: route add -net 127.0.0.0 netmask 255.0.0.0 lo
Cette règle signifie que tous les paquets dont l'adresse de destination appartient
au sous réseau 127.0.0.0/8 doivent être transférés vers l'interface loopback. Cela
implique en particulier que les paquets à destination de la machine d'adresse IP
127.0.0.1 seront envoyés vers l'interface loopback (ils reviendront donc sur la
machine locale).
Pour définir une passerelle lors du routage des paquets, il faut utiliser la syntaxe
suivante:
route add [-net| -host] <adresse> netmask <masque> gw <passerelle>
<interface>
AHOUMENOU Maurice 45
Network configuration files sous GNU/LINUX
AHOUMENOU Maurice 46
Network configuration files sous GNU/LINUX
Extrait du fichier:
domain mondomaine.org
search mondomaine.org
nameserver 192.168.1.1
nameserver 192.168.1.2
domain : nom du domaine local. Les requêtes sont généralement réduites à des
raccourcis relatifs au domaine local. S’il est absent le nom du domaine doit être
déterminé à partir du nom d’hôte complet : c’est la partie située après le
premier « . ».
search : liste des domaines de recherche. Par défaut lors de l’utilisation de
raccourcis (noms d’hôtes courts) le resolver lance une recherche sur le domaine
défini par la ligne domain, mais on peut spécifier ici une liste de domaines séparés
par des espaces ou des virgules.
nameserver : adresse IP du serveur de noms ( le serveur DNS). On peut en placer
au maximum trois. Le resolver essaie d’utiliser le premier. En cas d’échec ( t i m e o
u t ) , i l passe au second, et ainsi de suite.
AHOUMENOU Maurice 47
Network configuration files sous GNU/LINUX
/etc/hosts
sans configurer un serveur de résolution de nom de domaine, on peut établir
une correspondance entre les adresses IP et les noms dans le fichier /etc/hosts
Extrait du fichier:
/etc/networks
Ce fichier contient les adresses des réseaux, il est utilisé par la commande
route pour donner un nom aux différents réseaux. Chaque entrée est constituée
du nom du réseau, suivi de son adresse IP.
Extrait du fichier:
loopback 127.0.0.0
localnet 192.168.1.0
AHOUMENOU Maurice 48
Network configuration files sous GNU/LINUX
/etc/services
Ce fichier /etc/services contient la liste des services réseaux connus de Unix ainsi
que les ports et protocoles associés. Il est utilisé par de nombreux services (dont
xinetd) et sous-systèmes comme le firewall de Linux.
Extrait du fichier:
AHOUMENOU Maurice 49
Network configuration files sous GNU/LINUX
/etc/network/interfaces
Ce fichier permet de configurer une interface Ethernet de façon à avoir
l'adresse IP fixe 192.168.0.123, cette adresse commence par 192.168.0 donc
elle doit être sur un réseau local. Supposons aussi que 192.168.0.1 est
l'adresse de la passerelle du réseau local vers l'Internet. Éditez
Le fichier et ajoutez une partie comme suit :
AHOUMENOU Maurice 51
Network configuration files sous GNU/LINUX
/etc/protocols
Ce fichier contient la liste des protocoles connus par Unix.
Outils réseaux
Ping: elle est une commande incontournable. C’est la première chose que l’on fait
généralement pour savoir si une machine est accessible ou non. Il utilise pour
cela le protocole ICMP.
Quelques paramètres:
AHOUMENOU Maurice 52
Network configuration files sous GNU/LINUX
Outils réseaux
Traceroute : permet de visualiser chacun des points de passage de vos paquets IP à
destination d’un hôte donné.
Exemple: traceroute mtn.bj
Whois: permet d’obtenir toutes les informations sur un domaine donné
Exemple: whois mtn.bj
Netstat: permet d’obtenir une foule d’informations sur le réseau et les protocoles.
Le paramètre -i permet d’obtenir l’état des cartes réseaux, afin de déterminer une
éventuelle panne ou un problème de câble.
Exemple: netstat –i
Il y a d’autres options intéressant comme le –e qui permet d’obtenir le même
resultat qu’avec ifconfig –a, le -r permet d’obtenir comme route, les tables de
routage et on peut préciser l’option -n pour indiquer les ips à la place des noms.
Exemple: netstat -nr
AHOUMENOU Maurice 53
Network configuration files sous GNU/LINUX
Outils réseaux
route : permet de voir, d'ajouter ou d'enlever les routes se trouvant déclarées sur
votre machine. Ainsi pour indiquer à votre machine où aller trouver les adresses
qui ne sont pas les adresses de votre réseau local, vous devez lui indiquer la
passerelle (ou gateway) vers laquelle elle doit envoyer tous les paquets.
route –n (permet de voir les routes indiquer)
route add default gateway <adresse> permet d’ajouter une route par défaut
route del default permet de détruire une route
AHOUMENOU Maurice 54
NAT sous GNU/LINUX
Le NAT permet aux ordinateurs du réseau local d’avoir accès à Internet, pour
cela deux commandes sont importantes à connaître:
Elle active la fonction de transfert d'IP du noyau qui est par défaut désactivée.
La deuxième commande définit une règle selon laquelle un paquet qui doit
quitter le réseau local est transmis à l'interface eth0 et manipulé avec la règle du
NAT.
AHOUMENOU Maurice 55
OpenSSH sous GNU/LINUX
OpenSSH est un protocole de shell sécurisé, il permet l’authentification sécurisée,
l’exécution à distance et la connexion à distance. il est aussi capable d’encapsuler
des protocoles non sécurisés en redirigeant les ports. Les packages à utiliser pour
un serveur sont openssh, openssl et openssh-clients, ces packages varient selon la
distribution.
Configuration
Le fichier de configuration est /etc/ssh/sshd_config. Quelques options qu’ont peut
éventuellement modifier :
Port : le numéro de port, par défaut 22
Protocol : fixé à 2 ou à1, il autorise SSH1 et SSH2. On préférera SSH2 et donc on
laissera la valeur 2 seule
ListenAddress : par défaut ssh écoute sur toutes les IP du serveur. On peut autoriser
uniquement l’écoute sur une interface donnée
AHOUMENOU Maurice 56
OpenSSH sous GNU/LINUX
PermitRootLogin : ssh autorise les connexions de root. On peut placer la valeur à «
no ». Dans ce cas, il faudra se connecter en simple utilisateur et passer par su
Banner : chemin d’un fichier dont le contenu sera affiché aux utilisateurs lors de
la connexion.
Pour démarrer le service, utilisez la commande /etc/init.d/sshd start ou
service sshd start
Utilisation
La commande ssh permet d’établir une connexion.
$ ssh -l <login> <host>
$ ssh login@host
AHOUMENOU Maurice 57
OpenSSH sous GNU/LINUX
Clés et connexion automatique
Il est possible d’établir une connexion automatique vers une autre machine sans
saisir de mot de passe. Pour cela, il est nécessaire depuis le compte utilisateur du
client (la machine qui va se connecter) de générer une paire de clés,
privée et publique. Aucune passphrase ne doit être saisie.
Du côté du serveur ssh, la clé publique du client doit être placée dans un fichier
contenant les clés autorisées à se connecter sur le compte de destination.
Côté client:
Il faut générez une paire de clé au format RSA avec la commande ssh-keygen :
$ssh-keygen -t rsa, ensuite il faut se déplacer dans le repertoire .ssh de
l’utilisateur où vous trouverez les paires de clés générer.
AHOUMENOU Maurice 58
OpenSSH sous GNU/LINUX
AHOUMENOU Maurice 59
Serveur DHCP sous GNU/LINUX
Le service DHCP (Dynamic Host Configuration Protocol), protocole de
configuration dynamique des hôtes, permet aux hôtes d’un réseau de
demander et recevoir des informations de configuration (adresse, routage,
DNS, etc.). Il y a en général un seul serveur DHCP par segment de réseau
même si plusieurs sont possibles. Un client DHCP recherche tout seul un
serveur DHCP qui lui communiquera son adresse IP. L’adresse IP est
assignée soit dynamiquement à partir de plages d’adresses prédéfinies, soit
statiquement en fonction de
l’adresse MAC du demandeur.
Pour démarrer le serveur DHCP, on utilise la commande service dhcpd start
ou /etc/init.d/dhcpd start
Le fichier de configuration est /etc/dhcpd.conf. Les adresses IP allouées sont
placées dans /var/lib/dhcp/dhcpd.leases.
AHOUMENOU Maurice 60
Serveur DNS sous GNU/LINUX
Le Système de Noms de Domaines DNS (Domain Name System) transforme les
noms d’hôte en adresses IP : c’est la résolution de nom. Il transforme les adresses
IP en noms d’hôte : c’est la résolution inverse. Il permet de regrouper
les machines par domaines de nom. Il fournit des informations de routage et de
courrier électronique.
Le DNS permet de faire référence à des systèmes basés sur IP (les hôtes) à l’aide
de noms conviviaux (les noms de domaines). L’intérêt d’un DNS est évident. Les
noms de domaine sont plus simples à retenir, et si son adresse IP
change l’utilisateur ne s’en rend même pas compte.
Installation de Bind 9
Sous Debian, il faut installer le paquet suivant :
# apt-get install bind9
AHOUMENOU Maurice 61
Serveur DNS sous GNU/LINUX
Le fichier de configuration principal est le /etc/bind/named.conf qui contient la
liste des zones (ou domaines) que le serveur DNS doit prendre en charge.
Exemple de description de zone :
Zone " lynx.bj" {
type master;
file "/etc/bind/db. lynx.bj ";
forwarders{};
};
Pour chaque domaine à gérer, il faut créer le fichier indiqué dans named.conf .
Dans l’exemple précédent, il faudra créer le fichier /etc/bind/db.lynx.bj
AHOUMENOU Maurice 62
Serveur DNS sous GNU/LINUX
Contenu du fichier db.lynx.bj:
$TTL 604888
@ IN SOA serveur.lynx.bj. maurice.lynx.bj(
20041124 ; Serial > N° de série à incrémenter à chaque modification
; de ce fichier. Ce N° est utilisé par les serveurs esclaves pour lui indiquer qu'il
; doit mettre à jour sa base. Par commodité
; ce n° est une date à l'envers.
604800 ;Refresh > A l'expiration du délai Refresh exprimé en
; secondes, le serveur excalve va entrer en communication avec le maitre et si il
;ne le trouve pas, il fera une nouvelle tentative au bout du délai Retry et si au
; bout du délai Expire il considerera que le serveur n'est plus disponible.
86400 ; Retry
2419200; Expire
604800 ) ; Minimum > Durée de vie minimum du cache en secondes
Lynx.bj. IN NS serveur.lynx.bj.
Lynx.bj. IN MX 10 serveur.lynx.bj.
Lynx.bj. IN A 192.168.1.1
serveur IN A 192.168.1.1
www IN CNAME serveur
AHOUMENOU Maurice 63
Serveur DNS sous GNU/LINUX
Résolution Inverse
De nombreux services réseaux utilisent la résolution inverse (Trouver l’adresse
IP à partir du nom) pour vérifier que le nom est valide. Il est nécessaire
de configurer le serveur pour qu’il prenne également en charge la résolution
inverse.
Pour définir le domaine inverse, il faut éditer le fichier named.conf comme
dans l’exemple suivant :
zone "1.168.192.in-addr.arpa" {
type master;
file "/etc/bind/db.lynx.bj.inv";
forwarders{};
};
Il faut indiquer l’IP à l’envers avec .in-addr.arpa, il faut également créer le fichier
db.lynx.bj.inv
AHOUMENOU Maurice 64
Serveur DNS sous GNU/LINUX
Enfin, vous pouvez indiquer les adresses IP des serveurs DNS de votre
fournisseur d’accès à Internet. Pour cela, il faut décommenter
et renseigner la section suivante du fichier /etc/bind/named.conf.options
suivante
forwarders {
<ip_du_fournisseurs_internet>
};
Après chaque modification des fichiers de configuration, il faut redémarrer
le
démon : /etc/init.d/bind9 restart. Prenez également le soin de consulter les
logs (tail -20 /var/log/syslog) afin de s’assurer que le daemon s’est bien
démarrer.
AHOUMENOU Maurice 65
Serveur DNS sous GNU/LINUX
Installation d’un serveur esclave
La mise en place d’un serveur secondaire sur un réseau de taille importante
est vivement recommandé pour éviter les pannes de résolutions de noms en
cas de dysfonctionnement du serveur principale. Sur le deuxième serveur
(esclave), il faut également installer bind :
# apt-get install bind9
Configuration du serveur maître
Sur le serveur principal, il faut modifier les zones du fichier
/etc/bind/named.conf, pour ajouter la ligne notify yes.
Exemple :
zone " lynx.bj" {
type master;
notify yes;
file "/etc/bind/db.lynx.bj";
forwarders{};
};
AHOUMENOU Maurice 66
Serveur DNS sous GNU/LINUX
Installation d’un serveur esclave
Sur le serveur principal, il faut ajouter dans chaque zone à exporter une ligne
NS pour chaque serveur esclave.
Exemple :
NS Serveur_esclave1.mondomaine.com. ;Nom du serveur esclave N°1
NS Serveur_esclave2.mondomaine.com. ;Nom du serveur esclave N°2
Sur le serveur principal, il faut autoriser Bind à transférer les données vers le
serveur secondaire en ajoutant cette ligne dans /etc/bind/named.conf.options :
allowtransfer
{
<adresse_du_serveur_esclave>
};
AHOUMENOU Maurice 67
Serveur DNS sous GNU/LINUX
Installation d’un serveur esclave
AHOUMENOU Maurice 68
Serveur DNS sous GNU/LINUX
Installation d’un serveur esclave
NB: Le nom des zones doit correspondre exactement aux zones définies sur le
serveur principal.
AHOUMENOU Maurice 69
Serveur DNS sous GNU/LINUX
Outils pour tester le bon fonctionnement du DNS
AHOUMENOU Maurice 70
Serveur NTP sous GNU/LINUX
AHOUMENOU Maurice 71
Serveur NTP sous GNU/LINUX
Configuration
Extrait du fichier / etc/ntp.conf
AHOUMENOU Maurice 72
Notions de sécurité sous GNU/LINUX
AHOUMENOU Maurice 73
Notions de sécurité sous GNU/LINUX
On dispose de plusieurs moyens pour assurer la sécurité du système :
• L’authentification des utilisateurs par un mot de passe.
• Le cryptage des données.
• La sécurité physique en contrôlant l’accès des personnes aux salles
informatiques.
• L’information sur les risques pénaux encourus en cas d’infraction. Un «
braquage » informatique est un délit.
• Le contrôle fréquent des droits d’accès aux fichiers et aux bases de
données.
• Le contrôle des « checksum » des fichiers pour s’assurer de leur intégrité.
• La sauvegarde régulière des données.
AHOUMENOU Maurice 74
Notions de sécurité sous GNU/LINUX
• L’audit des principaux événements du système.
• L’installation d’un firewall qui contrôlent les accès au système informatique
depuis l’extérieur et limitent l’accès à des services externes par des utilisateurs
non avertis ou qui n’en ont pas besoin pour, par exemple, limiter le risque de
rapatriement de virus.
• L’installation d’un antivirus, même sous Linux, si le serveur traite des
données depuis et vers des systèmes d’exploitation concernés par les virus.
• L’installation d’outils anti-spams et anti-spywares, selon le même principe,
afin d’éviter une intrusion et la saturation des serveurs de courrier
électronique.
• Le démarrage uniquement des services réellement utiles sur le serveur et sur
le client.
AHOUMENOU Maurice 75
Notions de sécurité sous GNU/LINUX
AHOUMENOU Maurice 76
Notions de sécurité sous GNU/LINUX
Vérification des packages installés
AHOUMENOU Maurice 77
Notions de sécurité sous GNU/LINUX
AHOUMENOU Maurice 78
Notions de sécurité sous GNU/LINUX
Tester les mots de passe
Les outils crack et « John the ripper » tentent de décrypter les mots de passe,
tant depuis un dictionnaire que par la force brute (les uns après les autres).
Dans le pire des cas, ils les trouvent en quelques secondes dans le meilleur, en
plusieurs jours, voire semaines. Dans ce cas, le mot de passe peut être
considéré comme sûr.
La commande est john. Pour tester l’intégralité de votre fichier /etc/shadow :
# john /etc/shadow
On peut aussi tester un seul utilisateur en utilsant la commande:
# john -user:seb /etc/shadow
AHOUMENOU Maurice 79
Notions de sécurité sous GNU/LINUX
AHOUMENOU Maurice 80
Notions de sécurité sous GNU/LINUX
Freshclam permet de mettre à jour les bases placées dans /var/lib/clamav :
# pwd /var/lib/clamav
# freshclam
Scanclam permet de rechercher les éventuels virus :
# clamscan -v -r /usr/local/bin
Nmap
C’est un outil d’exploration réseau et d’audit de sécurité. Il permet de tester
les connexions réseaux d’une machine donnée et de retourner un grand
nombre d’informations. Notamment, en analysant les trames, il arrive
souvent à déterminer le type et la version du système d’exploitation distant.
Exemple: #nmap localhost
AHOUMENOU Maurice 81
Notions de sécurité sous GNU/LINUX
Supprimer les services inutiles
Les services standalone, c’est-à-dire lancés de manière indépendantes, sont
contrôlés via la commande service ou /etc/init.d/service. Pour contrôler les
arrêts et relances de ces services de manière pérenne, utilisez les commandes
chkconfig (distributions RPM) ou rcudpate.d (Debian).
Les services contrôlés par xinetd peuvent être activés et désactivés par la
ligne disable de leur fichier de configuration.
Netfilter
Netfilter est une architecture de filtrage des paquets pour les noyaux Linux.
Le filtrage se fait au sein même du noyau au niveau des couches 2, 3 et 4 du
modèle OSI, c’est-à-dire les liaisons données, réseau et
transport. Il est par exemple capable d’agir à bas niveau sur les interfaces
ethernet (2), sur la pile IP (3) et sur les protocoles de transport comme TCP (4)
AHOUMENOU Maurice 82
Notions de sécurité sous GNU/LINUX
Netfilter
Netfilter est un firewall agissant au niveau du protocole.
Le programme utilisateur permettant d’agir sur les règles de filtrage est
iptables.
AHOUMENOU Maurice 83
Notions de sécurité sous GNU/LINUX
Netfilter
Chaque état correspond à un point de filtrage possible par la commande
iptables.
• PREROUTING : traite les paquets à leur arrivée. Si un paquet est à
destination du système local, il sera traité par un processus local (INPUT,
OUTPUT). Sinon, et si le forwarding est activé, les règles FORWARD et
POST_ROUTING seront appliquées.
• FORWARD : les paquets ne font que traverser le système local. Traite les
paquets routés à travers le système local.
• INPUT : traite les paquets destinés au système local, en entrée (après le
routage).
• OUTPUT : traite les paquets quittant le système local, avant POSTROUTING.
• POSTROUTING : traite les paquets juste avant leur sortie du système.
AHOUMENOU Maurice 84
Notions de sécurité sous GNU/LINUX
Netfilter
Une cible de règle détermine quelle est l’action à entreprendre lorsqu’un
paquet correspond aux critères d’une règle. On utilise l’option -j de iptables
pour spécifier la cible.
Les deux cibles de base sont DROP et ACCEPT. Des extensions de netfilter
ajoutent d’autres cibles comme LOG et REJECT.
DROP : le paquet est rejeté. Aucune notification n’est envoyée à la source.
REJECT : le paquet est rejeté, retournant une erreur à la source.
ACCEPT : le paquet est accepté.
LOG : une information est envoyée à syslog pour les traces.
On peut créer des règles sans cible.
AHOUMENOU Maurice 85
Notions de sécurité sous GNU/LINUX
Netfilter
Une cible de règle détermine quelle est l’action à entreprendre lorsqu’un
paquet correspond aux critères d’une règle. On utilise l’option -j de iptables
pour spécifier la cible.
Les deux cibles de base sont DROP et ACCEPT. Des extensions de netfilter
ajoutent d’autres cibles comme LOG et REJECT.
DROP : le paquet est rejeté. Aucune notification n’est envoyée à la source.
REJECT : le paquet est rejeté, retournant une erreur à la source.
ACCEPT : le paquet est accepté.
LOG : une information est envoyée à syslog pour les traces.
On peut créer des règles sans cible.
AHOUMENOU Maurice 86
Notions de sécurité sous GNU/LINUX
Netfilter
Exemple: iptables -A INPUT -s 192.168.1.11 -j DROP
Ci-dessus une règle qui interdit tous les paquets en provenance de
192.168.1.11
-A : point de filtrage (INPUT, OUTPUT, FORWARD, PREROUTING,
POSTROUTING) qu’on appelle aussi chaîne.
-s : source, peut être une adresse IP, un nom d’hôte, un réseau, etc.
-j : jump, cible de la règle (ACCEPT, DROP, REJECT...)
AHOUMENOU Maurice 87
Notions de sécurité sous GNU/LINUX
Netfilter
Quelques opérations de base
-I permet d’insérer une règle à une position donnée. Ils commencent par
1
# iptables -I OUTPOUT -d 192.168.1.25 -j DROP 3
-D permet de supprimer un règle
# iptables -D INPUT 1
-L permet de lister les règles
# iptables -L OUTPUT
# iptables –L
-F permet de supprimer l’ensemble des règles
# iptables –F
AHOUMENOU Maurice 88
Notions de sécurité sous GNU/LINUX
Netfilter
Les critères de correspondance déterminent la validité d’une règle
-i : interface entrante
-o : interface sortante
-p : protocole de couche 4.
-s : adresse IP de la source (ou réseau)
-d : adresse IP de destination (ou réseau).
--sport : port source
--dport : port destination
Exemples:
Interdire les entrées par eth0.
iptables -A INPUT -i eth0 -j DROP
Interdire le forward entre eth1 et eth2.
iptables -A FORWARD -i eth1 -o eth0 -j DROP
Interdire le protocole ICMP en entrée (le ping ! ) .
iptables -A input -p icmp -j DROP
AHOUMENOU Maurice 89
Notions de sécurité sous GNU/LINUX
Proxy
principe de fonctionnement
C’est un serveur mandaté par une application pour effectuer une requête sur
Internet à sa place. Donc, lorsqu'un utilisateur se connecte à internet à l'aide
d'une application cliente (navigateur) configurée pour utiliser un serveur
proxy, celle-ci va se connecter en premier lieu au serveur proxy et lui donner sa
requête. Le serveur proxy va alors se connecter au serveur que l'application
cliente cherche à joindre et lui transmettre la requête. Le serveur va ensuite
donner sa réponse au proxy, qui va à son tour la transmettre à l'application
cliente. Ce qui fera que l'adresse IP de départ sera complètement masquée, et
seule l'adresse IP du proxy apparaît dans les log du service contacté.
AHOUMENOU Maurice 90
FIN!
AHOUMENOU Maurice 91