Vous êtes sur la page 1sur 54

COURS ET FORMATIONS EN INFORMATIQUE : WWW.COURSNET.

COM

WWW.COURSNET.COM 1




I. Configuration DNS ............................................................................................................. 3
1. Fichier de Configuration DNS PRIMAIRE : ..................................................................... 3
2. Fichier de Zone Directe .................................................................................................. 3
3. Ficher de Zone Secondaire ............................................................................................ 4
4. Ficher de configuration DNS secondaire : ..................................................................... 4
5. Fichier Resolv.conf ......................................................................................................... 4
6. Videz la cache DNS : ...................................................................................................... 4
7. Dfinir lordre de rsolution dans le fichier host.conf .................................................. 4
8. Afficher tous les enregistrements du serveur bind. ...................................................... 5
II. Configuration de la carte Reseau .................................................................................... 10
III. Configuration dun serveur DHCP :.............................................................................. 11
IV. Configuration dun serveur telnet ............................................................................... 13
V. Configuration dun serveur SAMBA ................................................................................. 14
VI. Configuration dun serveur SSH : ................................................................................ 16
VII. Configuration dun serveur VPN .................................................................................. 18
VIII. Configuration dun serveur NFS .................................................................................. 25
1. Installation de NFS ....................................................................................................... 25
2. Configuration de NFS cot serveur .............................................................................. 25
3. Configuration de NFS cot client ................................................................................. 25
COURS ET FORMATIONS EN INFORMATIQUE : WWW.COURSNET.COM

WWW.COURSNET.COM 2

IX. Configuration dun serveur IPTABLE............................................................................ 26
1. La table filter .................................................................................................................... 26
2. Configuration du pare-feu ............................................................................................... 26
X. Configuration dun serveur APPATCH ............................................................................. 29
1. installer le paquage :...................................................................................................... 29
2. configuration APPATCH ................................................................................................... 29
3. Dmarrage de http : ........................................................................................................ 29
4. Accder au serveur http .................................................................................................. 29
5. Scuriser Apache avec TLS (SSL) ...................................................................................... 29
XI. Configuration dun serveur FTP ................................................................................... 30
XII. Configuration dun serveur LDAP ................................................................................ 31
XIII. SCRIPT LINUX ............................................................................................................ 37
Script 1 ................................................................................................................................ 40
Script 2 : ............................................................................................................................... 41
Script 3 : ............................................................................................................................... 42
Script 4 : ............................................................................................................................... 42
Script 5 : (Fichier accessible en lecture ) ............................................................................ 43
Script 6 : (argument et paramtres ) .................................................................................. 43
Script 7 : Nombre de processus .......................................................................................... 43
Script 8 : (Les Jours > La date ) ............................................................................................ 44
Script 9: (Argument et paramtres ) ................................................................................... 44
Script 10 : (Argument et paramtres ) ................................................................................ 45
Script 11 : chaine de caractre oui ................................................................................ 45
Script 12 : basname et $ home ........................................................................................... 45
Script 13 : N de la commande + PATH................................................................................ 45
Script 14 : (Comparaison des arguments ) .......................................................................... 46
Script 15 : Copier Fichier ..................................................................................................... 47
Script 16 : 2 Nbr (+-*/) avec while ...................................................................................... 47
Script 17 : Factorielle dun argument ................................................................................. 47
Script 18 : PGCD dun argument ........................................................................................ 48
Script 19 : Argument des noms de fichiers ........................................................................ 48
Script 20 : Mathmatique .................................................................................................. 49
Script 21 : Jeter la poubelle dplacer-vider. ...................................................................... 49
Script 22: Argument Fichier excutable . ......................................................................... 50
COURS ET FORMATIONS EN INFORMATIQUE : WWW.COURSNET.COM

WWW.COURSNET.COM 3

Script 23: jour/mois > Case .............................................................................................. 51
Script 24: Fichier accessible en criture ........................................................................... 51
Script 25: Renommer les fichier dun rp ......................................................................... 51
Script 26 : Script Pratique 2013 ........................................................................................... 52
# !/bin/bash ................................................................................................................ 52
# !/bin/bash ................................................................................................................ 52
Cat/etc/passwd | grep 500 > /etc/test.txt ...................................... 52
XIV. Quelque Commandes Linux ......................................................................................... 52



I. Configuration DNS

1. Fichier de Configuration DNS PRIMAIRE :
Options {
listen-on port 53;{127.0.0.1;192.168.1.10 ;192.168.1.20;};
allow-query{127.0.0.1 ;192.168.1/24;}

Zone ista.ma IN {
Type master ;
File directe.ma.db ;
Allow-update { none ;} ;
Allow-transfer {192.168.1.20;} ;}

Zone 1.168.192.in-addr.arpa IN {
Type master;
File inverse.ma.db;
Allow-transfer{192.168.1.20;};
Allow-update { none ;} ;
2. Fichier de Zone Directe
@ IN SOA tri.ista.ma. root.ista.ma. (
19990811 ; Serial number
3600 ; 1 hour refresh
300 ; 5 minutes retry
172800 ; 2 days expiry
43200 ) ; 12 hours minimum

@ NS tri.ista.ma.
tri.ista.ma. IN A 192.168.1.1
gopher IN CNAME mail.mydomain.name.
ftp IN CNAME mail.mydomain.name.
COURS ET FORMATIONS EN INFORMATIQUE : WWW.COURSNET.COM

WWW.COURSNET.COM 4

www IN CNAME mail.mydomain.name.
mail.net. IN MX 10 user.mail.net.
superathlon IN HINFO "AMD Athlon 1Ghz" "Linux Mandrake 8.1"
alien TXT "Alien Computer - ordinateur invite"
www IN CNAME superathlon
imap IN CNAME superathlon
pop IN CNAME superathlon
smtp IN CNAME superathlon
ftp IN CNAME superathlon


_sip._tcp.example.com. 86400 IN SRV 0 33 5060
serveursip1.example.com.


3. Ficher de Zone Secondaire
@ IN SOA tri.ista.ma. root.ista.ma. (
19990811 ; Serial number
3600 ; 1 hour refresh
300 ; 5 minutes retry
172800 ; 2 days expiry
43200 ) ; 12 hours minimum

@ IN NS tri.ista.ma.
1 IN PTR tri.ista.ma.
4. Ficher de configuration DNS secondaire :
Options {
listen-on port 53;{127.0.0.1;192.168.1.10 ;192.168.1.20;};
allow-query{127.0.0.1 ;192.168.1/24;}

Zone ista.ma.db IN {
Type slave ;
masters {192.168.1.1;} ;
File direct.ma.db ;};

Zone 1.168.192.in-addr.arpa IN
Type slave;
masters{192.168.1.1;};
File inverse.ma.db;};

5. Fichier Resolv.conf
search axius-1.fr
nameserver 172.16.11.1
6. Videz la cache DNS :
/etc/rc.d/init.d/nscd restart
7. Dfinir lordre de rsolution dans le fichier host.conf
Cela prcise au rsolveur de regarder dabord les entres du fichier
/etc/hosts et ensuite dutiliser le serveur prcis dans resolv.conf.
COURS ET FORMATIONS EN INFORMATIQUE : WWW.COURSNET.COM

WWW.COURSNET.COM 5




8. Afficher tous les enregistrements du serveur bind.

La commande NSlookup query=any isgi.ma permet dafficher tous les
enregistrements du serveur bind.


9. Configuration de rndc :
BIND contient un utilitaire appel rndc qui permet d'utiliser des lignes de
commande pour administrer le dmon named partir de l'hte local ou d'un
hte distant .
Pour que rndc puisse se connecter un service named, une dclaration controls
doit tre prsente dans le fichier /etc/named.conf du serveur BIND. La
dclaration controls montre dans l'exemple qui suit, permet rndc de se
connecter partir d'un hte local.
controls {
inet 127.0.0.1 allow { localhost; } keys { <nom-cl>; };
COURS ET FORMATIONS EN INFORMATIQUE : WWW.COURSNET.COM

WWW.COURSNET.COM 6

};
Cette dclaration indique named de se mettre l'coute du port TCP 953 par
dfaut de l'adresse inverse et d'autoriser les commandes rndc provenant de
l'hte local, si la cl adquate est prsente. Le <nom-cl> fait rfrence la
dclaration key, qui se trouve aussi dans le fichier /etc/named.conf. L'exemple
suivant illustre une dclaration key.
key "<nom-cl>" {
algorithm hmac-md5;
secret "<valeur-cl>";
};
Dans ce cas, la <valeur-cl> est une cl HMAC-MD5. Afin de crer des cls
HMAC-MD5, utilisez la commande suivante :
dnssec-keygen -a hmac-md5 -b <longueur-bits> -n HOST <nom-fichier-
cl>

Configuration de /etc/rndc.conf
La dclaration key reprsente la dclaration la plus importante contenue dans
/etc/rndc.conf.
key "<nom-cl>" {
algorithm hmac-md5;
secret "<valeur-cl>";
};
Pour faire correspondre les cls spcifies dans le fichier /etc/named.conf du
serveur cible, ajoutez les lignes suivantes au fichier /etc/rndc.conf.
Options {
default-server localhost;
default-key "<nom-cl>";
};

La ligne de commande de rndc
# rndc <options> <commande> <options-commande>
Option :
Halt : Arrt du service named
Querylog :Logging de toutes les requtes
Refresh :Rafraichissement de la base de donnes
Reload : Recharge les fichiers de zone mais conserve toutes les rponses
prcdemment places en cache.
Stats : Evacue les statistiques courante de named vers le fichier
/var/named/named.stats
COURS ET FORMATIONS EN INFORMATIQUE : WWW.COURSNET.COM

WWW.COURSNET.COM 7

Stop : Arrte le serveur de manire nette, en enregistrant pralablement
toute mise jour dynamique et donne Incremental Zone Transfers (IXFR).
-c <fichier- : Permet de selectionner le fichier de configuration a utiliser
-p <numro-port> : Permet de spcifier le numro de port utiliser
-s <serveur> : Permet d'envoyer les instructions un serveur spcifique
-y <nom-cl> :Spcifie une cl autre

rndc: connection issue (RESOLVED)







Verifier que /etc/rndc.conf et /etc/bind/rndc.key . en mm cl
netstat -atpn | grep -E ":953|:53"
pkill named
pkill lwresd
/etc/init.d/bind9 start



10. Mise jour du DNS via le serveur DHCP

*- Modifications apporter a /etc/named.conf :
zone "ista.ma" {
type master;
file "/var/named/ ista.zone";
allow-update { 127.0.0.1; }; };
Zone"10.168.192.in-addr.arpa" {
type master;
file "/var/named/reverse.rev";
allow-update { 127.0.0.1; }; };

*- Modifications apporter a /etc/named.conf :

rndc status
rndc: connection to remote host closed
This may indicate that
* the remote server is using an older version of the
command protocol,
* this host is not authorized to connect,
* the clocks are not synchronized, or
* the key is invalid

COURS ET FORMATIONS EN INFORMATIQUE : WWW.COURSNET.COM

WWW.COURSNET.COM 8

ddns-update-style interim; # mise jour autorise
ddns-update on; # mise jour par le serveur DHCP force ignore
client-updates; # la mise jour des IP fixes force update-
static-leases on ;

# on dfinit galement quel DNS doit tre mis jour pour ces
zones :
zon ista.ma. {
primary 127.0.0.1; }

zone 10.168.192.in-addr.arpa. {
primary 127.0.0.1; }

*- Modifications pour les clients Linux :
Ajoutez la ligne suivante dans /etc/dhclient.conf :

send host-name "lenomdelamachine";

*- Cas d'un serveur de cache :
Pour ce type de serveur, un fichier /etc/named.conf suffit :


11. Commande pour vrifier la configuration DNS :
#named-chekconf /etc/named.conf
#named-checkzone ista.ma /var/named/zone.directe
#named-checkzone ista.ma /var/named/zone.rev
COURS ET FORMATIONS EN INFORMATIQUE : WWW.COURSNET.COM

WWW.COURSNET.COM 9

12. CHEMIN des FICHIERS et Leurs Contenues :

/etc/hosts
Ce fichier contient toutes les adresses IP connues de lordinateur local. Il
permet de rsoudre la correspondance entre les noms des ordinateurs et
leurs adresses.
# /etc/hosts
# IP Ordinateur Alias
127.0.0.1 localhost
205.1.1.10 kermit.is-a-geek.net kermit
205.1.1.15 gonzo.is-a-geek.net gonzo www
205.1.2.15 tulipe.is-a-geek.net tulipe

/etc/networks
Ce fichier permet de rsoudre la correspondance entre les noms des rseaux
et les adresses rseau.
# /etc/networks
127.0.0.0 loopback
205.1.1.0 is-a-geek.net
205.1.2.0 is-a-slow.net
/etc/hosts.conf
Ce fichier contient des paramtres ncessaires pour le pilotage de la
bibliothque de rsolution
des noms (Resolver). Lorsquun ordinateur est appel par son nom, la
bibliothque de rsolution
se charge de rsoudre le nom de manire correcte pour lenvironnement de
lordinateur. Selon le
cas, la rsolution du nom sera ralise partir du fichier /etc/hosts de
lordinateur local, ou en
interrogeant un serveur de nom (Name Server). Lapplication qui est
lorigine de la rsolution
du nom nest pas concerne par les diffrents processus. Cest pourquoi le
processus de
rsolution des noms est enregistr dans une bibliothque externe. Lun des
fichiers de configuration de la bibliothque de rsolution est /etc/hosts.conf.

# /etc/hosts.conf
#
order hosts, bind
multi on
nosproof on alert on/off
trim ista.ma

Order hosts , bind : Dtermination de lordre dans lequel les services de
rsolution de noms doivent tre consults. hosts analyse
du fichier /etc/hosts de lordinateur local.bind Interrogation
COURS ET FORMATIONS EN INFORMATIQUE : WWW.COURSNET.COM

WWW.COURSNET.COM 10

dun serveur de noms (DNS).
Multi on : Un ordinateur enregistr dans le fichier /etc/hosts peut
disposer de plusieurs adresses IP .
nosproof on alert on/off : Protection contre le procd Adress-Spoofing. Si le
paramtre alert est activ, les attaques de ce type sont
enregistres dans un journal.
trim <Nom_de_domaine>


/etc/sysconfig/network

Le fichier /etc/sysconfig/network prcise les informations de routage et le
nom de lhte pour toutes les interfaces rseau.
NETWORKING=yes
HOSTNAME=machine
GATEWAY=192.168.100.1


II. Configuration de la carte Reseau

Le Chemin : /etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE=eth0
ONBOOT=yes #Ce priphrique devrait tre activ au dmarrage
BOOTPROTO=static #none/dhcp/bootp
IPADDR=192.168.1.10
NETMASK=255.255.255.0
GATEWAY=192.168.1.1
DNS1=192.168.1.100
NETWORK=208.164.186.0
BROADCAST=192.168.1.255
USERCTL=no #Les utilisateurs autres que le super-utilisateur sont
autoriss contrler ce priphrique
Grer la configuration dans le fichier interfaces :
# cat /etc/network/interfaces

# configuration de linterface lo (obligatoire)
auto lo
iface lo inet loopback

# configuration de linterface eth0
auto eth0
iface eth0 inet static
address 192.168.0.2
netmask 255.255.255.0
COURS ET FORMATIONS EN INFORMATIQUE : WWW.COURSNET.COM

WWW.COURSNET.COM 11

#POUR DHCP
auto lo eth0
iface lo inet loopback
iface eth0 inet dhcp
#Pour une station WI-FI
auto lo
iface lo inet loopback
# linterface eth1 correspond ici la carte wifi
auto eth1
iface eth1 inet dhcp
wireless-essid mon_essid
wireless-mode managed
wireless-key AF32852BE7A39B522BG60C4353

III. Configuration dun serveur DHCP :

ddns-domainname "ista.ma"; Nom du domaine DNS
ddns-update-style none; style de mise jour DNS
ddns-updates off; Mise jour non autorise
max-lease-time 604800; Dure de vie maximum du bail de 7J
ignore client-updates; mjr Forc par le serv DHCP
update-static-leases on; Forage de la mise jour
allow unknown-clients; Les clients seront tous reconnus sur le
rseau

subnet 192.168.0.0 netmask 255.255.255.0 {
option routers 192.168.0.1;
option subnet-mask 255.255.255.0;
option broadcast-address 192.168.0.255;
option domain-name-servers 192.168.0.1;
option domain-name "ista.ma.";
range 192.168.0.1 192.168.0.254 ;
default-lease-time 21600 ;
max-lease-time 43200 ;

# Reservation
host pc1 {
hardware ethernet 00:20:18:B8:A9:97;
fixed-address 192.168.0.15;
filename "/lts/vmlinuz-2.4.26-ltsp-2";
}
Lancer la service dhcp au dmmarage : chkconfig dhcpd on
Nous allons par exemple dclarer une option serveur_ftp ayant pour code
d'option 161 et une autre chemin_ftp avec le code 162.
# Dfinition des options
option serveur_ftp code 161 = string ;
option chemin_ftp code 162 = string
option serveur_ftp "10.1.1.12" ;
option chemin_ftp "/pub/updates" ;

COURS ET FORMATIONS EN INFORMATIQUE : WWW.COURSNET.COM

WWW.COURSNET.COM 12

Dclaration dun rseau partag
shared-network name {
option domain-name "test.redhat.com";
option domain-name-servers ns1.redhat.com, ns2.redhat.com;
option routers 192.168.1.254;
more parameters for EXAMPLE shared-network
subnet 192.168.1.0 netmask 255.255.255.0 {
parameters for subnet
range 192.168.1.1 192.168.1.31;
}
subnet 192.168.1.32 netmask 255.255.255.0 {
parameters for subnet
range 192.168.1.33 192.168.1.63;}}

Dclaration de groupe
group {
option routers 192.168.1.254;
option subnet-mask 255.255.255.0;

option domain-name "example.com";
option domain-name-servers 192.168.1.1;

option time-offset -18000; # Eastern Standard
Time

host apex {
option host-name "apex.example.com";
hardware ethernet 00:A0:78:8E:9E:AA;
fixed-address 192.168.1.4;
}

host raleigh {
option host-name "raleigh.example.com";
hardware ethernet 00:A1:DD:74:C3:F2;
fixed-address 192.168.1.6; }}

Agent de Relais DHCP :
Chemin : /etc/sysconfig/dhcrelay
Dmarrer lagent de relais dhcp : #service dhcrelay start
Client DHCP LINUX :
[root@localhost user]# dhclient Demander le bail DHCP
root@localhost user]# dhclient -r Libr le bail DHCP

Fichier dhcpd.leases
[root@localhost MAROUANE]# vi /etc/dhcpd.leases
COURS ET FORMATIONS EN INFORMATIQUE : WWW.COURSNET.COM

WWW.COURSNET.COM 13


lease 192.168.0.10 { starts 1 1999/05/20 22:15:21; ends 1 1999/05/20
22:15:38; hardware ethernet 00:40:21:3c:f2:dd; uid
01:00:40:21:3c:f2:dd; client-hostname "Client1"; }

Vrifier ltat de lattribution d'@ IP :
[root@localhost MAROUANE]# /var/lib/dhcp/dhcpd.leases


IV. Configuration dun serveur telnet




1. Installation TelNet :
Rpm i telnet-server-0.17-31.EL4.3.i386.rpm

2. Configuration TelNet:

>Chemin de fichier : /etc/xinetd.d/telnet
service telnet
{
disable = no
instances = 60
flags = REUSE
socket_type = stream
wait = no
user = root
server = /usr/sbin/in.telnetd
log_on_failure += USERID
no_access = 10.0.1.0/24
log_on_success += PID HOST EXIT
access_times = 09:45-16:15}

instances : Dtermine le nombre maximal de requtes qu'un service xinetd peut grer un
moment donn .
log_on_failure - Configure xinetd de faon ce qu'il effectue la journalisation si la connexion
choue ou si elle n'est pas autorise.
includedir /etc/xinetd.d/ - Inclut des options stipules dans les fichiers de configuration
spcifiques aux services qui se trouvent dans le rpertoire /etc/xinetd.d/ .
COURS ET FORMATIONS EN INFORMATIQUE : WWW.COURSNET.COM

WWW.COURSNET.COM 14

log_on_success - Configure xinetd de faon ce qu'il effectue la journalisation si la
connexion est tablie avec succs.
>Service Xinetd start
>#user1# telnet -L user2 -a localhost
TCP WRAPPER
L'administrateur rseau va pouvoir utiliser 2 fichiers: /etc/hosts.allow et
/etc/hosts.deny pour filtrer les accs sa machine.
/etc/hosts.deny: on indique dans ce fichier les services et les htes pour
lesquels l'accs est interdit.
/etc/hosts.allow: on indique dans ce fichier les services et les htes pour
lesquels l'accs est autoris.
# Fichier /etc/hosts.deny
# interdit tous les accs ftp la machine
in.ftpd:ALL

# Fichier /etc/hosts.allow
# autorise les accs ftp venant de cli1
in.ftpd :cli1.archinet.edu

Extrait de /etc/syslog.conf:
# Log anything (except mail) of level info or higher.
# Don't log private authentication messages

# The authpriv file has restricted access.
authpriv.* /var/log/auth.log
auth,authpriv.none; /var/log/syslog

Extrait de /var/log/syslog
Feb 3 18:02:52 ns1 ftpd[1051]: FTP session closed
Feb 3 18:03:31 ns1 syslogd 1.3-3: restart.
Feb 3 18:07:34 ns1 in.ftpd[1057]: refused connect from
cli1.archinet.edu
Feb 3 18:07:46 ns1 in.ftpd[1058]: connect from ns1.archinet.edu
Feb 3 18:10:57 ns1 login[1063]: LOGIN ON ttyp3 BY mlx FROM puce


V. Configuration dun serveur SAMBA

Fichier de configuration :
/etc/smb.conf
Cration dun compte SAMBA !
COURS ET FORMATIONS EN INFORMATIQUE : WWW.COURSNET.COM

WWW.COURSNET.COM 15

#smbpasswd -a MonCompte password
Visualiser les fichier partags dun serveur samba
smbclient -L //@ip-du-serveur -U user
[homes]
# permet de partager le rpertoire personnel de chaque utilisateur
comment = Home Directories
browseable = no
writable = yes
create mask = 0755
directory mask = 0755
[partage]
comment = Ressource partage
#le rpertoire /home/partage doit exister dans l'arborescence linux
path=/home/partage
browseable = yes
writable = yes
create mask = 0777
directory mask = 0777


[global]

# mme nom de groupe que celui sous Windows (Voisinage
rseau)
workgroup = nom de groupe
guest account = nobody ; # accs multi-utilisateur
share modes = yes ;
# Adresse IP de la carte rseau du serveur
# et masque de sous-rseau
interfaces = 10.194.2.100/255.255.255.0
# emplacement du fichier printcap (imprimantes sur le
serveur Linux)
printcap = /etc/printcap
# partage de toutes les imprimantes dfinies dans printcap
load printers = yes
# fichier journal de Samba
log level = 1
log file = /var/log/samba/log.%m
# mode de scurit : (user / share / server)
security = user
# restreindre l'accs a certains sous-rseaux
hosts allow = 15.144. 127.
# empecher l'accs certaines machines
hosts allow = 15.144. EXCEPT 155.144.179.
[Commerce]
comment = Patrage Commerce
path=/var/Commerce
browseable = yes # possibilit d'crire sur la ressourc

writable = yes
create mask = 0777

directory mask = 0777
valid users = toto, webmaster
public = no


COURS ET FORMATIONS EN INFORMATIQUE : WWW.COURSNET.COM

WWW.COURSNET.COM 16

-Avec loption public = no ou les options valid users =, les utilisateurs
doivent sauthentifier lors de la connexion aux ressources partages.
-Seuls les rpertoires avec loption browsable = yes apparaissent dans
linterface de lexplorateur Windows.


-Lancer Samba : /etc/init.d/samba start
-Crer un groupe sambausers avec le RID 513 pour tre en conformit
avec la terminologie Windows :
. #groupadd -g 513 sambausers // (RID=GID=513).



VI. Configuration dun serveur
SSH :
1. Installation de SSH
Rpm i openssh-server-3.9p1-8.RHEL4.12.i386.rpm
2. Configuration de SSH
$ Cd /etc/ssh
$ Vi sshd_config

COURS ET FORMATIONS EN INFORMATIQUE : WWW.COURSNET.COM

WWW.COURSNET.COM 17

$ Vi sshd_config


3. Connexion Client de SSH sous Linux
Ssh user@ip-address-de-serveur-SSH

4. Gnaration des cls RSA et DSA
-Lancer la commande ssh-keygen -t dsa. Cette commande permet de
gnrer une cl DSA par dfaut de 1024 bits. La cl prive sera stocke
dans ~/.ssh/id_dsa et la cl publique dans ~/.ssh/id_dsa.pub.
ssh-keygen -t rsa Si vous voulez gnrer une cl RSA2.
- Pour modifier votre "passphrase" sur une cl prive DSA, utilisez la
commande : ssh-keygen -p -f ~/.ssh/id_dsa
COURS ET FORMATIONS EN INFORMATIQUE : WWW.COURSNET.COM

WWW.COURSNET.COM 18

- La cl publique, doit tre copie sur le serveur distant dans
~/.ssh/authorized_keys. La cl prive reste sur votre poste client.
5. Lagent SSH
L'utilisation d'un agent, vite d'avoir retaper la "passphrase" chaque
fois que l'on sollicite l'utilisation de la cl prive. Un agent stocke en
mmoire les cls prives. Voici comment activer un agent :
-Lancer la commande ssh-agent
-La commande met sur la sortie standard des variables
environnement dclarer et exporter. Faites le.
-exportez les cls. Cela consiste les mettre dans le cache de
l'agent avec la commande ssh-add. La commande
demandera la "passphrase"..
Pour supprimer une cl (ici RSA) de l'agent, utilisez l'option "-d"
$ ssh-add -d ~/.ssh/id_rsa

VII. Configuration dun serveur VPN
1. Installation VPN :

2. Gnration des certificats d'authentification

Nous allons sur ce point gnrer les certificats et les cls qui vont
permettre aux clients et au serveur de s'authentifier mutuellement
de telle sorte que personne d'autres que vous ne puisse se connecter
au VPN.
Pour a nous allons se dplacer dans le rpertoire easy-rsa
d'openvpn :

$ cd /usr/share/openvpn/easy-rsa/

COURS ET FORMATIONS EN INFORMATIQUE : WWW.COURSNET.COM

WWW.COURSNET.COM 19


Voil nous avons les outils ncessaires qui vont nous permettre de
gnrer les cls et les certificats pour les clients et serveur.
Premire chose, nous allons modifier les valeurs des variables
d'environnement afin de ne pas avoir rpter les renseignements
fournir la gnration des cls, Pour cela nous allons diter le fichier
vars ci-dessus :
Voici la liste des paramtres par dfaut modifier, ils sont gnralement
en bas du fichier sous fedora .
export KEY_COUNTRY="US"
export KEY_PROVINCE="CA"
export KEY_CITY="SanFrancisco"
export KEY_ORG="Fort-Funston"
export KEY_EMAIL="me@myhost.mydomain"


Aprs sauvegarde du fichier, relancer la prise en charge de ces nouvelles
variables :
COURS ET FORMATIONS EN INFORMATIQUE : WWW.COURSNET.COM

WWW.COURSNET.COM 20





L il m'a cr un rpertoire keys qui contiendra toutes nos cls.
Vous pourrez vrifier qu' prsent ce rpertoire ne contient que deux
fichiers cres par le script build-all (index.txt et serial qui sont important
pour la gnration des certificats server et clients).


3. Cration des certificats
COURS ET FORMATIONS EN INFORMATIQUE : WWW.COURSNET.COM

WWW.COURSNET.COM 21

Premirement nous allons faire une autorit de certification.


Voil vous remarquerez que vous aviez dj les valeurs mmorises dans
le fichier vars .
Il ne s'agira que de renseigner le nom de la CA (Certification Authority),
pour les valeurs entre crochets appuy sur Entre et il prendra la valeur
par dfaut.
A prsent nous venons de crer l'autorit de certification qui est dans le
rpertoire keys . Ce certificat est le certificat racine qui va ensuite nous
permettre de crer le certificat serveur et les certificats clients.
Donc la partie publique de ce certificat devrait tre dpos au niveau des
clients pour qu'ils puissent s'authentifier au niveau du serveur pour qu'ils
reconnaissent tous les certificats qui seront crs partir de cette autorit.
L nous allons crer le certificat pour le serveur (cette machine mme que
je dnomme bonal).
Ce certificat nous allons l'appeler srvrdimi , nous allons le signer nous-
mme et ensuite, nous allons le gnrer comme va le montrer cette
manipulation.
Nous n'allons pas donner un challenge password ni optional .....Pour la
cration des certificats.
COURS ET FORMATIONS EN INFORMATIQUE : WWW.COURSNET.COM

WWW.COURSNET.COM 22

Excellent nous voyons que la CA a t gnr, la partie certificat server a
t gnre de mme que la partie certificat client.
A prsent il ne nous reste qu' crer les paramtres Diffie-helmann :
Diffie-Hellma (D-H) est un algorithme cl publique utilis pour assurer
un partage de cl secrtes
Trs bien, l nous avons l'ensemble des informations cryptographiques
dont nous avions besoin pour configurer notre VPN.

4. Configuration et lancement du serveur
Il nous reste rcuprer le fichier de configuration du serveur
server.conf et le mettre dans lerpertoire /usr/share/openvpn/easy-
rsa/2.0/keys/
COURS ET FORMATIONS EN INFORMATIQUE : WWW.COURSNET.COM

WWW.COURSNET.COM 23

Alors chez moi il est par dfaut install dans le rpertoire
/usr/share/doc/openvpn-2.1/sample-config-files

Trs bien l nous allons diter ce fichier pour y positionner les
variables qui vont nous intresser pour la mise en place du vpn

On dite le fichier server.conf

COURS ET FORMATIONS EN INFORMATIQUE : WWW.COURSNET.COM

WWW.COURSNET.COM 24

On sauvegarde et on lance le service par le script contenu dans /etc/init.d/

Parfait tout marche comme on veut cest vraiment informatique a

Excellent openvpn est au niveau des sockets dmarrs.
Il ne reste plus qu' s'occuper des clients sous Windows maintenant.
A noter galement que nous pouvons avoir des clients Linux et c'est
pratiquement la mme manipulation.

COURS ET FORMATIONS EN INFORMATIQUE : WWW.COURSNET.COM

WWW.COURSNET.COM 25

VIII. Configuration dun serveur NFS
1. Installation de NFS
Sur Fedora, normalement tous les utilitaires permettant la mise en place
d'un rseau via nfs sont installs. On peut le vrifier avec la commande :
$ rpm -qi nfs-utils
Si vous obtenez en retour un message du type : le paquetage nfs-utils
n'est pas install , vous pouvez installer nfs-utils avec la commande :
# yum install nfs-utils
2. Configuration de NFS cot serveur
Vous devez diter le fichier /etc/exports, et y ajouter une ligne du type :
/chemin/dossier-de-partage @ip-de-client(rw) , @ipde-client2
exemple : /root/partage 192.168.1.10(rw) .
3. Configuration de NFS cot client
En premier lieu il vous faut crer un dossier qui va contenir le partage
dans /mnt ou /media par exemple. Ensuite vous pouvez monter le dossier
directement avec la commande :
# mount -t nfs @_ip_serveur:/chemin/vers/partage /mnt/partage
Il est aussi possible de le monter chaque dmarrage, pour cel il suffit
d'diter le fichier /etc/fstab, et d'y ajouter une ligne du type :
@_ip_serveur:/chemin/vers/partage /mnt/partage nfs
auto,user,rw 0 0
Une fois cette modification faite, vous pourrez monter toutes les
partitions contenues dans fstab en tapant la commande :
# mount -a
Vous pouvez utiliser showmount pour lister les informations de montage
d'un server NFS :
$ showmount -e <IP_du_serveur_NFS>
COURS ET FORMATIONS EN INFORMATIQUE : WWW.COURSNET.COM

WWW.COURSNET.COM 26

Si vous souhaitez dmarrer le serveur NFS au dmarrage, utilisez :
# chkconfig nfs on
# chkconfig rpcbind on

IX. Configuration dun serveur IPTABLE
1. La table filter
Iptables fonctionne selon un systme de tables, ces tables sont composes
de chane. Dans le cadre de la configuration et de l'utilisation de Netfilter
comme pare-feu, c'est la table Filter qui est utile, elle permet de filtrer les
paquets rseaux. Tout paquet entrant est analys afin de dterminer
notamment sa source et sa destination.
Elle est compose de trois sortes de chane :
INPUT : Permet d'analyser les paquets entrants. Si le paquet est
adress au poste, il est confront au filtre INPUT.
FORWARD : Permet d'analyser et d'autoriser les trames passer d'une
interface une autre, seulement dans le cadre d'une interface rseau
servant de passerelle.
OUTPUT : Permet d'analyser les paquets sortants. Si le paquet sort du
poste, il passera par la chane OUTPUT.
cette table peut tre affect quatre politiques (policy) : DROP, LOG,
ACCEPT et REJECT.
2. Configuration du pare-feu
En tapant sudo iptables -L , une liste de vos rgles actuelles est
affiche. Si vous (ou un logiciel) n'avez encore jamais touch iptables,
les chaines sont vides, et vous devriez voir :
Chain INPUT (policy ACCEPT)
target prot opt source destination

Chain FORWARD (policy ACCEPT)
target prot opt source destination

Chain OUTPUT (policy ACCEPT)
COURS ET FORMATIONS EN INFORMATIQUE : WWW.COURSNET.COM

WWW.COURSNET.COM 27

target prot opt source destination
Si vous avez dj modifi la configuration et que vous voulez la
rinitialiser, tapez :
sudo iptables -F
sudo iptables -X
Autoriser le trafic entrant d'une connexion dj tablie
Pour permettre une connexion dj ouverte de recevoir du trafic :
# iptables -A INPUT -m conntrack --ctstate ESTABLISHED -j ACCEPT
Si vous utilisez une ancienne version de iptables la commande ci-dessus
peut ne pas fonctionner, dans ce cas utilisez celle-ci :
# iptables -A INPUT -m state --state ESTABLISHED -j ACCEPT
Permettre le trafic entrant sur un port spcifique
Pour permettre le trafic entrant sur le port 22 (traditionnellement utilis
par SSH, vous devrez indiquer iptables tout le trafic TCP sur le port 22
de votre adaptateur rseau.
# iptables -A INPUT -p tcp -i eth0 --dport ssh -j ACCEPT
Cette commande ajoute une rgle (-A) la chaine contrlant le trafic
entrant INPUT, pour autoriser le trafic (-j ACCEPT), vers l'interface (-i)
eth0 et destination du port (--dport) SSH (on aurait pu mettre 22).
# iptables -L
Chain INPUT (policy ACCEPT)
target prot opt source destination
ACCEPT all -- anywhere anywhere state
RELATED,ESTABLISHED
ACCEPT tcp -- anywhere anywhere tcp
dpt:ssh
Maintenant, acceptons tout le trafic web (www) entrant :
# iptables -A INPUT -p tcp -i eth0 --dport 80 -j ACCEPT
Bloquer le trafic
# iptables -P INPUT DROP
# iptables -L
Chain INPUT (policy DROP)
target prot opt source destination
ACCEPT all -- anywhere anywhere state
RELATED,ESTABLISHED
ACCEPT tcp -- anywhere anywhere tcp
dpt:ssh
COURS ET FORMATIONS EN INFORMATIQUE : WWW.COURSNET.COM

WWW.COURSNET.COM 28

ACCEPT tcp -- anywhere anywhere tcp
dpt:www
Autoriser le trafic local
Un p'tit problme de notre configuration est que mme l'interface locale
(loopback) est bloque. Nous pourrions avoir crit les rgles de rejet
seulement pour eth0 en spcifiant -i eth0, mais nous pouvons aussi
ajouter une rgle pour loopback. Par exemple, nous pourrions l'insrer en
2e position :
# iptables -I INPUT 2 -i lo -j ACCEPT
Pour lister les rgles plus en dtail.
# iptables -L -v -n
Autoriser les requtes ICMP (ping)
# On autorise le PC a faire des pings sur des IP externes et
rpondre aux requtes "ping"
iptables -A OUTPUT -p icmp -m conntrack --ctstate
NEW,ESTABLISHED,RELATED -j ACCEPT

# Si vous utilisez une ancienne version de iptables la commande ci-
dessus peut ne pas fonctionner, dans ce cas entrez la commande
suivante :
iptables -A OUTPUT -p icmp -m state --state NEW,ESTABLISHED,RELATED
-j ACCEPT

# On autorise les pings
iptables -A INPUT -p icmp -j ACCEPT
Supprimer une rgle
iptables -L --line-numbers
Chain INPUT (policy DROP)
num target prot opt source destination
1 DROP icmp -- anywhere anywhere
2 ACCEPT tcp -- anywhere anywhere
tcp dpt:ssh
3 ACCEPT tcp -- anywhere anywhere
tcp dpt:www
4 ACCEPT tcp -- anywhere anywhere
tcp dpt:webmin

Chain FORWARD (policy ACCEPT)
num target prot opt source destination

Chain OUTPUT (policy ACCEPT)
num target prot opt source destination
1 ACCEPT tcp -- anywhere anywhere
tcp spt:www
2 ACCEPT tcp -- anywhere anywhere
tcp spt:12345
COURS ET FORMATIONS EN INFORMATIQUE : WWW.COURSNET.COM

WWW.COURSNET.COM 29

Sauvegarder vos rgles
sudo -s iptables-save -c


X. Configuration dun serveur APPATCH

1. installer le paquage :
yum install httpd
2. configuration APPATCH
cd /var/www/html
creel une page HTML
nano /etc/conf/httpd.conf
3. Dmarrage de http :
dsactiver le parfeu
dmmarer la carte rseau: service network retstart
dmarrer le service : service httpd restart ou cd /etc/rc.d/init.d/httpd
restart
4. Accder au serveur http
trois manires pour accder au serveur Apache :
http:\\localhost\ - http:\\172.0.0.1 - l'adresse su serveur depuis le
naviguateur
5. Scuriser Apache avec TLS (SSL)
Nous allons ensuite nous placer dans le rpertoire d'Apache 2
(/etc/apache2) pour gnrer lecertificat au bon endroit :
#cd /etc/apache2
Cration de la cl prive RSA :
COURS ET FORMATIONS EN INFORMATIQUE : WWW.COURSNET.COM

WWW.COURSNET.COM 30

Cette commande va vous permettre de gnrer une cl RSA :
# openssl genrsa -out server.key 1024
A partir de la cl de tout l'heure, vous allez pouvoir crer un certificat
gnrique pour votre organisme :
#openssl req -new -key server.key -out server.csr
Enfin, vous allez pouvoir crer le certificat utilisable par les visiteurs au
format x509 pour une certaine dure (dans cet exemple 1 an) :
#openssl x509 -req -days 365 -in server.csr -signkey server.key -
outserver.crt

Vrifiez dans le fichier /etc/apache2/ports.conf si il existe le port 443
pour le module SSL. Si ce n'est pas le cas, vous pouvez ajouter une ligne :
Listen 443
Aprs la cration de site web , ouvrez le dans le navigateur en prenant
considration le protocole HTTPS , Vous devriez avoir un avertissement
car ce certificat est auto-sign. Vrifiez le contenu du
certificat. Vrifiez par une analyse de trame que les informations ne sont
pas lisibles.
XI. Configuration dun serveur FTP
Fichier de configuration :
# cd /etc/vsftpd/vsftpd.conf
annonymous-enable=YES | no (no pour se connecter avec un login et
m.d.p)
local_enable=YES
write_enable=YES
local_umask=022 les droits
ftpd_banner=Bienvenue

# service vsftpd start
# useradd client-1
# passwd client-1
# FTP { @ip de serveur FTP } sous dos ou taper @ ip de serveur FTP
sur le navigateur
COURS ET FORMATIONS EN INFORMATIQUE : WWW.COURSNET.COM

WWW.COURSNET.COM 31

XII. Configuration dun serveur LDAP
1. Installation des packages :
Yum install nss_ldap
Yum install openldap
Yum install openldap_servers
Yum install openldap_clients
Yum install openldap_devel

2. Cration de mot de passe pour ladmin :
[root@Serv-ldap ~]# slappasswd
New password:
Re-enter new password:
{SSHA}MP0BeMJzmCoCi5olBhwcRDYJaGBFgN5K

3. Configuration du fichier slapd.conf :
#ajouter les autorisations au debut:

access to attrs=userPassword
by self write
by dn="cn=Manager,dc=domain,dc=local" write
by anonymous auth
by * none

access to *
by dn="cn=Manager,dc=domain,dc=local" write
by self write
by * read

modifier :

suffix "dc=domain,dc=local"
rootdn "cn=Manager,dc=domain,dc=local"
rootpw {SSHA}WpQkjz32Ff+AuZF93ggxt2Vt/n+kHtMU
(mot de passe generer au debut avec slappasswd)
4. Configurer le fichier ldap.conf (/etc/ldap.conf
& /etc/openldap/ldap.conf):
Editer le fichier ldap.conf
[root@Serv-ldap ~]# vi /etc/openldap/ldap.conf

# LDAP Defaults
# This file should be world readable but not world writable.
#
BASE dc=network,dc=ma
COURS ET FORMATIONS EN INFORMATIQUE : WWW.COURSNET.COM

WWW.COURSNET.COM 32

URI ldap://Serv-ldap.network.ma

#SIZELIMIT 12
#TIMELIMIT 15
#DEREF never

5. Copier le fichier de la base de done:
Retour au terminal -> copiez un fichier appel DB_CONFIG qui
definit le cache :
[root@Serv-ldap ~]# cp /usr/share/doc/openldap-servers-
*/DB_CONFIG.example /var/lib/ldap/DB_CONFIG
[root@server ~]# chown -Rf ldap:ldap /var/lib/ldap/

6. Tester de la configuration
[root@Serv-ldap ~]# slaptest -u
config file testing succeeded

7. Utilisation de chiffrementTLS
[root@Serv-ldap ~]# slaptest -u
config file testing succeeded

4-Utilisation de chiffrementTLS
[root@Serv-ldap ~]# vi /etc/sysconfig/ldap

Dfinir le paramtre suivant :
SLAPD_LDAPS=yes

La gnration et la configuration des cls :
[root@server ~]# mkdir /etc/openldap/ssl/
[root@server ~]# openssl req -new -x509 -nodes -out
/etc/openldap/ssl/slapdcert.pem -keyout
/etc/openldap/ssl/slapdkey.pem -days 365
Generating a 2048 bit RSA private key
....................................................+++
writing new private key to '/etc/openldap/ssl/slapdkey.pem'
-----
COURS ET FORMATIONS EN INFORMATIQUE : WWW.COURSNET.COM

WWW.COURSNET.COM 33

You are about to be asked to enter information that will be
incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished
Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [XX]: MA
State or Province Name (full name) []: IMAD SAADI
Locality Name (eg, city) [Default City]: RABAT
Organization Name (eg, company) [Default Company Ltd]: ISTA
Organizational Unit Name (eg, section) []: TRI2B
Common Name (eg, your name or your server's hostname) []:
Server.network.ma
Email Address []: user@network.ma

Cela va crer deux cls requises dans le rpertoire / etc / openldap / ssl
/, mais nous devons faire en sorte que l'utilisateur ldap puisse les lire.
[root@Serv-ldap ~]# chown -Rf root:ldap /etc/openldap/ssl
[root@Serv-ldap ~]# chmod -Rf 750 /etc/openldap/ssl
8. Demarrer le service ldap :
[root@Serv-ldap ~]# service slapd start
[root@Serv-ldap ~]# service slapd start

9. Crer la base de ldap:
[root@Serv-ldap ~]$ vi /etc/openldap/base.ldif
Dfinir les paramtres suivants :
dn: dc=network,dc=ma
dc: network
objectClass: top
objectClass: domain

dn: ou=People,dc=network,dc=ma
ou: People
objectClass: top
objectClass: organizationalUnit

dn: ou=Group,dc=network,dc=ma
ou: Group
objectClass: top
objectClass: organizationalUnit
COURS ET FORMATIONS EN INFORMATIQUE : WWW.COURSNET.COM

WWW.COURSNET.COM 34


Maintenant que nous avons les informations de base pour notre
structure LDAP, nous pouvons les imports dans notre base de
donnes LDAP,

[root@Serv-ldap ~]# ldapadd -x -W -D
"cn=Manager,dc=network,dc=ma" f /etc/openldap/base.ldif
Enter LDAP Password:
adding new entry "dc=network,dc=ma"
adding new entry "ou=People,dc=network,dc=ma "
adding new entry "ou=Group, dc=network,dc=ma "


10. Ajouter les entres a la base de ldap:

ldapadd -h localhost -x -D "cn=Manager,dc=domain,dc=local" -W -
f base.ldif

11. Cration dun utilisateur et des groupes
sur LDAP :
Nous allons utiliser le scripte migrationtools pour les crer :
[root@Serv-ldap ~]# vim
/usr/share/migrationtools/migrate_common.ph

Modifier les paramtres suivants :
# Default DNS domain
$DEFAULT_MAIL_DOMAIN = "network.ma";

# Default base
$DEFAULT_BASE = "dc=network,dc=ma";

Crer les utilisateurs de votre base :
[root@Serv-ldap ~]# useradd p userpass user
[root@Serv-ldap ~]# useradd p user1pass user1
[root@Serv-ldap ~]# grep user* /etc/passwd > users-list
COURS ET FORMATIONS EN INFORMATIQUE : WWW.COURSNET.COM

WWW.COURSNET.COM 35


Appliqu le scripte
[root@Serv-ldap ~]#
/usr/share/migrationtools/migrate_passwd.pl
/etc/openldap/users-list /etc/openldap/people.ldif

Crer les groupes que vous voulez utiliser par la suite:
[root@Serv-ldap ~]# groupadd tri2b
[root@Serv-ldap ~]# grep tri2b /etc/group > group-list
[root@Serv-ldap ~]$ /usr/share/migrationtools/migrate_group.pl
/etc/openldap/group-list /etc/openldap/group.ldif

Accder aux deux fichier et assurer vous que les gid sont tous
identiques
Ds quon a les fichiers LDIF, nous allons les ajouter dans la
base LDAP :
[root@Serv-ldap ~]$ ldapadd -x -W -D
"cn=Manager,dc=network,dc=ma" -f /etc/openldap/people.ldif
[root@Serv-ldap ~]$ ldapadd -x -W -D
"cn=Manager,dc=network,dc=ma -f /etc/openldap/group.ldif

12. Tester la base de donnes LDAP
[root@Serv-ldap ~]# l ld da ap ps se ea ar rc ch h -xWD
cn=Manager,dc=network,dc=ma -b dc=network,dc=ma cn=user
# extended LDIF
#
...
# user, Group, network.ma
dn: cn=user,ou=Group,dc=network,dc=ma
objectClass: posixGroup
objectClass: top
cn: user
userPassword: E2NyeXB0fXG=
gidNumber: 500
# search result
search: 2
result: 0 Success
...

La syntaxe pour ajouter un utilisateur ahmed
[root@Serv-ldap ~]# vi /etc/openldap/ahmed.ldif
COURS ET FORMATIONS EN INFORMATIQUE : WWW.COURSNET.COM

WWW.COURSNET.COM 36


Dfinir ces paramtres :
dn: uid=ahmed,ou=People,dc=network,dc=ma
uid: ahmed
cn: Ahmed noure
objectClass: person
objectClass: posixAccount
objectClass: top
objectClass: shadowAccount
userPassword: {crypt}$6$XemGNmMU9f3FRFo/vt7Uld/gUcP/2N7/R.uw5SK.
shadowLastChange: 14846
shadowMax: 99999
shadowWarning: 7
loginShell: /bin/bash
uidNumber: 501
gidNumber: 501
homeDirectory: /home/chris

La syntaxe pour ajouter un group tri2A
[root@Serv-ldap ~]# vi /etc/openldap/tri2A.ldif

Definir les paramtres :
dn: cn=tri2A,ou=Group,dc=network,dc=ma
objectClass: posixGroup
objectClass: top
cn: tri2A
userPassword: {crypt}x
gidNumber: 501

Ajouter les fichiers dans la base :
[root@server ~]# ldapadd -x -W -D
"cn=Manager,dc=network,dc=ma" -f /etc/openldap/ahmed.ldif
Enter LDAP Password:
adding new entry "uid=ahmed,ou=People,dc=network,dc=ma"

[root@server ~]# ldapadd -x -W -D
"cn=Manager,dc=network,dc=ma" -f chris-group.ldif
Enter LDAP Password:
adding new entry "cn=tri2A,ou=People,dc=network,dc=ma"

Redemarrer votre service ldap:
[root@server ~]# service ldap restart

La configuration au niveau de serveur est fini .
COURS ET FORMATIONS EN INFORMATIQUE : WWW.COURSNET.COM

WWW.COURSNET.COM 37

13. Configuration cot client
I In ns st ta al ll le er r l le es s p pa aq qu ue et ts s n n c ce es ss sa ai ir re es s : :
N Ns ss s_ _l ld da ap p
o op pe en nl ld da ap p- -c cl li ie en nt ts s
o op pe en nl ld da ap p- -d de ev ve el l
E Ed di it te er r l le e f fi ic ch hi ie er r l ld da ap p. .c co on nf f


[root@Cl-fed ~]# vi /etc/openldap/ldap.conf

# LDAP Defaults
# This file should be world readable but not world writable.
#
BASE dc=network,dc=ma
URI ldap://192.168.2.1 --> ici vous tapez l@ de votre serv
#SIZELIMIT 12
#TIMELIMIT 15
#DEREF never



XIII. SCRIPT LINUX

Les Syntaxe:
Boucle while
# !/bin/bash
While [ -eq | -ne |-gt | - lt ]
do
Break ( pour stoper la boucle )
Done
Case + boucle
While [ true ] ; Do
Echo entrer un nbr svp
Read nbr
case $nbr in
Val1) Echo test1 break ;;
Val2) Echo test2 break ;;
COURS ET FORMATIONS EN INFORMATIQUE : WWW.COURSNET.COM

WWW.COURSNET.COM 38

*) (ni val1 ni val2)
Echo test3
Esac
Done
Case statement
# !/bin/bash
Echo entrer un nbr svp
Read nbr

case $nbr in
Val1) Echo test1 ;;
Val2) Echo test2 ;;
*) (ni val1 ni val2)
Echo test3
Esac

1. REGLES IMPORTANTES :

Les Arguments :
la commande set: permet daffecter des valeur ces parametres
la commande unset : permet la suppression des valeurs contenues dans ces
paramtres.

Exemple:
set Maroc Espagne France
echo $1 $2 $3
Maroc Espagne France

** Il existe deux autres variables automatiques:
$# :qui est le nombre de paramtres ;
$0 :qui est le nom du programme.
$* L'ensembles des paramtres sous la forme d'un seul argument
$@ L'ensemble des arguments, un argument par paramtre
$? Le code retour de la dernire commande
$$ Le PID su shell qui excute le script
$! Le PID du dernier processus lanc en arrire-plan
** Si on tappe la commande : ./script.sh $2
La rsultat est : Espagne
Les Variables :
Les Variables les plus utilies :
COURS ET FORMATIONS EN INFORMATIQUE : WWW.COURSNET.COM

WWW.COURSNET.COM 39

$HOME, $PATH, $USER, $SHELL, $ENV,
$PWD, $HOSTNAME
Exemple :
Echo vous tes connectez la station
$HOSTNAME, sous le nom $USER

Commande Echo
echo e : autoriser linterprtation des caractres spciaux telles que:
\n : saut de ligne; quivalent echo n
\c : viter le saut de la ligne
\t : Tabulation
\b : retour arrire
echo $ message et echo $ message
Commande Read
read p : permet dafficher un message avant dentrer un argument
dune variable.
readonly: Pour empcher la modification d'une variable;

read p Entrer messagemessage Bonjour tous !
readonly message
Echo $message Bonjour tous !

Chaine de caractres
Longueur d'une chane de caractres :
Si l'on veut obtenir la longueur d'une chane
de caractres contenue dans une variable, on
utilisera la syntaxe suivante : ${#variable}
echo ${variable:5:2} extrait la sous chaine de longueur 2 partir du
5me caractre
echo ${variable:20}: Extrait tous les caractres partir du 20me
Les Prfixes :
${variable#prfixe} ou ${variable##prfixe}
Exemple :
COURS ET FORMATIONS EN INFORMATIQUE : WWW.COURSNET.COM

WWW.COURSNET.COM 40

VAR =abbbc
echo ${VAR#a*b} == bbc,
(car le plus petit prfixe correspondant au motif a*b soit ab).
echo ${VAR##a*b} == c
(## utilisera le prfixe le plus long savoir abbb).

Les suffixes :
Exemple :
VAR=abbbc
echo ${VAR%b*c} =========== abb
echo ${VAR%%b*c} ==========a

Substitution et remplacement :
remplacer une chane de
caractres contenues dans des variables :
${variable/motif/remplacement}
Exemple :
VAR= abab
echo ${VAR/b/d} =========== adab.
OU
echo ${VAR//b/d} =========== adab. ( toutes les occurrences du motif soient
remplaces )

TEST :
Test r fichier
Testez les fichiers qui possdent le droit de lecture
Test w fichier
Testez les fichiers qui possdent le droit d criture
Test x fichier
Testez les fichiers qui possdent le droit dexcution
Test s fichier
Testez les fichiers qui ont la taille sup 0
Test d fichier
Testez lexistence des rpertoire
Test f fichier
Testez les fichiers qui sont des fichiers ordinaire

SCRIPT + CORRECTION :
Script 1
Crer un script shell nomm "change" qui affichera la date de dernire
modification d'un fichier puis la modifiera avec l'heure actuelle et enfin
COURS ET FORMATIONS EN INFORMATIQUE : WWW.COURSNET.COM

WWW.COURSNET.COM 41

raffichera la date de dernire modification du fichier.
Cette procdure acceptera 1 paramtre qui sera le nom du fichier.
Lorsque vous excuterez "change mon_fic", le 8 octobre 15 heures 12
vous obtiendrez le rsultat:
avant : -r--r--r-- 1 user group 40 Fev 3 2001 mon_fic
aprs : -r--r--r-- 1 user group 40 Oct 8 15:12 mon_fic
AVANT=$(ls -l $1)
touch $1
APRES=$(ls -l $1)
echo "Avant : "$AVANT
echo "Apres : "$APRES


Script 2 :
Crer un script shell nomm "nombreJours" qui affichera le nombre de
jours du mois courant.
"nombreJours" affichera pour fvrier 2007 le message "28 jours en fvrier
2007".
MOIS=$(date +"%m")
case $MOIS in
01) NOM="janvier";;
02) NOM="fevrier";;
03) NOM="mars";;
04) NOM="avril";;
05) NOM="mai";;
06) NOM="juin";;
07) NOM="juillet";;
08) NOM="aout";;
09) NOM="septembre";;
10) NOM="octobre";;
11) NOM="novembre";;
12) NOM="decembre";;
esac
ANNEE=$(date +"%Y")
case $MOIS in
01|03|05|07|08|10|12)
echo "31 jours en "$NOM" "$ANNEE;;
04|06|09|11)
echo "30 jours en "$NOM" "$ANNEE;;
02)
BISSEXTILITE=$(expr $ANNEE % 4)
if [ $BISSEXTILITE != 0 ]
then
echo "28 jours en "$NOM" "$ANNEE
else
BISSEXTILITE=$(expr $ANNEE % 100)
COURS ET FORMATIONS EN INFORMATIQUE : WWW.COURSNET.COM

WWW.COURSNET.COM 42

if [ $BISSEXTILITE != 0 ]
then
echo "29 jours en "$NOM" "*ANNEE
else
BISSEXTILITE=$(expr $ANNEE % 400)
if [ $BISSEXTILITE != 0 ]
then
echo "28 jours en "$NOM" "$ANNEE
else
echo "29 jours en "$NOM" "$ANNEE
fi
fi
fi;;
esac

Script 3 :
Crer un script shell ralisant la cration d'un rpertoire "Exo3" contenant
10 fichiers nomms "Un" "Dix". Chaque fichier contient une seule
ligne:
"Un" contient "Premire ligne""
Deux" contient "Deuxime ligne"
"Dix" contient "Dixime ligne
Vrifier que le rpertoire crer n'existe pas dj auquel cas il ne
sera pas recr mais les fichiers si.
test -e Exo3
if [ $? != 0 ]
then
mkdir Exo3
fi
echo "Premiere ligne" >Exo3/Un
echo "Deuxieme ligne" >Exo3/Deux
echo "Troisieme ligne" >Exo3/Trois
echo "Quatrieme ligne" >Exo3/Quatre
echo "Cinquieme ligne" >Exo3/Cinq
echo "Sixieme ligne" >Exo3/Six
echo "Septieme ligne" >Exo3/Sept
echo "Huitieme ligne" >Exo3/Huit
echo "Neuvieme ligne" >Exo3/Neuf
echo "Dixieme ligne" >Exo3/Dix
Script 4 :
Crer un script shell qui ralise les oprations suivantes:
Cration sous votre rpertoire "TP2" d'un sous rpertoire nomm
"annemoisjour" (20070202 pour le 2 fvrier 2007).
COURS ET FORMATIONS EN INFORMATIQUE : WWW.COURSNET.COM

WWW.COURSNET.COM 43

Copie des fichiers de "Exo3" sous ce rpertoire puis effacement de ces mmes
fichiers de "Exo3".
Cration de deux fichiers sous le rpertoire d'accueil (HOME) de la personne qui a
lanc le shell:
o un fichier nomm "Gros_fichier.numero_du_shell" dans lequel se trouvera
le contenu concatn des fichiers traits
o un fichier nomm "Nom_du_script.numero_du_shell" dans lequel se
trouvera le nom des fichiers traits.
i. Vrifier que le rpertoire crer n'existe pas dj.
REP=$(date +"%Y%m%d")
test -e $REP
if [ $? != 0 ]
then
mkdir $REP
fi
cp Exo3/* $REP
rm Exo3/*
for file in $REP/*
do
cat $file >> ~/Gros_fichier.$$
echo $file >> ~/$0.$$
done
Script 5 : (Fichier accessible en lecture )
Crer un script permettant d'afficher la liste des fichiers du rpertoire /etc
accessibles en lecture.
for FILE in /etc/*
do
if test -r $FILE
then
echo $FILE
fi
done
Script 6 : (argument et paramtres )
Ecrire un fichier de commande qui donne la liste de ses paramtres, le
nombre de paramtres, le numro du processus.
echo $* $# $$
Script 7 : Nombre de processus

ps | grep "[0-9]"|wc l
COURS ET FORMATIONS EN INFORMATIQUE : WWW.COURSNET.COM

WWW.COURSNET.COM 44

Script 8 : (Les Jours > La date )
A Partir de la commande date, crire une commande qui donne
la date en franais




set date

case $1 in
Mon) Jour=Lun;;
Thu) Jour=Mar;;
Wed) Jour=Mer;;
Tue) Jour=Jeu;;
Fri) Jour=Ven;;
Sat) Jour=Sam;;
Sun) Jour=Dim;;
esac
case $2 in
Feb) Mois="Fev ";;
Apr) Mois="Avr ";;
May) Mois="Mai ";;
Jun) Mois="Juin";;
Jul) Mois="Juil";;
Aug) Mois="Aout";;
*) Mois="$2 "
esac
echo "$Jour $3 $Mois $6 $4"

Script 9: (Argument et paramtres )
Ecrire une commande qui a comme argument une autre commande,
qui excute cette commande et envoie un message derreur si le code de
retour est diffrent de 0.
if "$@" ;then
echo "$1 correct"
else
echo "$1 incorrect"
fi

COURS ET FORMATIONS EN INFORMATIQUE : WWW.COURSNET.COM

WWW.COURSNET.COM 45

Script 10 : (Argument et paramtres )
Ecrire une commande qui teste si elle est appele avec trois paramtres,
sinon lit au clavier trois chanes et dans tous les cas teste si ces trois
chanes sont gales
if [ $# -ne 3 ]
then
#il ny a pas trois arguments
echo "entrez trois arguments:"
read A B C;
set "$A" "$B" "$C"
fi
if test "$1" = "$2" && test "$1" = "$3"
then
echo "les trois chaines sont egales"
else
echo "les trois chaines sont differentes"
exit 2
fi

Script 11 : chaine de caractre oui
Ecrire une commande qui lit une chaine au clavier jusqu ce
que cette chaine soient oui.
a=non
while [ $a != "oui" ]
do echo entree une chaine, oui pour arreter
read a
done

Script 12 : basname et $ home
A utilisant la variable HOME et les commandes basename
et dirname, crire une commande qui affiche la suite des catalogues allant
du catalogue priv au catalogue /, et le nom de login de lutilisateur.
a=$HOME
while [ "$a" != / ]
do echo $a
a=dirname "$a"
done
echo /
echo le nom de login est basename $HOME

Script 13 : N de la commande + PATH
Ecrire un fichier .profile qui donne au prompt le numro de
COURS ET FORMATIONS EN INFORMATIQUE : WWW.COURSNET.COM

WWW.COURSNET.COM 46

la commande, initialise la variable HISTSIZE 20, modifie la variable
PATH
afin que les commandes du catalogue priv et de travail puissent tre
lances
sans utiliser leurs rfrences absolues. Comment tester que le .profile est
correct
sans se dloger ?
PS1="<\!> "
HITSIZE=20;
PATH="$PATH:$HOME:."
alias h=history
export PATH HISTSIZE
Il faut executer .profile dans le
shell courant:
$ . .profile
Script 14 : (Comparaison des arguments )
Ecrire une commande appele avec deux arguments ref1 et
ref2 qui vrifie que tous les fichiers de ref1 ont mme nom et mme
contenu que ceux de ref2 (On vrifiera que ref1 et ref2 ne contiennent pas
de catalogue
if [ $# != 2 ]
then echo il faut 2 arguments;
exit 1
fi
if test -d $1 && test -d $2
then
for i in ls $1
do
if [ -d $1/$i ]
then
echo on ne veut pas de catalogue; exit 3
fi
if [ -e $2/$i ]
then
if [ -d $2/$i ]
then
echo on ne veut pas de catalogue; exit 3
fi
if diff $1/$i $2/$i >/dev/null
then echo $1/$i et $2/$i sont identiques
else echo $1/$i et $2/$i sont differents; exit 2
fi
else echo $1/$i existe mais pas $2/$i ; exit 3
fi
done
# il faut tester quil ny ait pas dautres fichiers dans $2
for i in ls $2
do
if [ -e $1/$i ]
then echo "">/dev/null
else
echo un fichier en plus dans $2 : $2/$i; exit 3
fi
COURS ET FORMATIONS EN INFORMATIQUE : WWW.COURSNET.COM

WWW.COURSNET.COM 47

done
else echo il faut 2 catalogues en argument; exit 3;
fi
echo tous les fichiers sont identiques


Script 15 : Copier Fichier
Ecrire un script qui copie tous les fichiers d'extension .txt du
repertoire courant en des fichiers de meme nom et
d'extension .txt.archive (toujours dans le repertoire courant).

#!/bin/bash
for fichier in .* *
do
set `ls -idl $fichier`
echo "$fichier $6"
done

Script 16 : 2 Nbr (+-*/) avec while
Ecrire un script qui boucle en demandant a l'utilisateur de saisir
deux variables, affiche leur somme, leur difference, leur produit et
leur quotient. Le programme s'arrete lorsque l'utilisateur saisit un
point.
#!/bin/bash
echo "Entrer deux entiers (point pour terminer)"
read p1
while test "$p1" != "."
do
read p2
echo `expr $p1 + $p2`
echo `expr $p1 - $p2`
echo `expr $p1 \* $p2`
echo `expr $p1 / $p2`
echo "Entrer deux entiers (point pour terminer)"
read p1
done
Script 17 : Factorielle dun argument
Ecrire un script qui prend un argument et en affiche la factorielle.
Verifier que le nombre de parametres est correct.
#!/bin/bash
if test $# -ne 1
then echo "il faut un argument"
elif test $1 -eq 0 -o $1 -eq 1
then echo 1
else
produit=2
COURS ET FORMATIONS EN INFORMATIQUE : WWW.COURSNET.COM

WWW.COURSNET.COM 48

n=$1
while test $n -ne 2
do
produit=`expr $produit \* $n`
n=`expr $n - 1`
done
echo $produit
fi
Script 18 : PGCD dun argument
Ecrire un script qui prend deux arguments et affiche
leur pgcd. Vrifier que le nombre de paramtres est correct.
Afficher un message specifique quand l'un des deux arguments.
#!/bin/bash
if test $# -ne 2
then echo "il faut deux arguments"
elif test $1 -eq "0" -o $2 -eq "0"
then echo "arguments nuls"
else
a=$1
b=$2
while test $a -ne $b
do
if test $a -gt $b
then
a=`expr $a - $b`
else
b=`expr $b - $a`
fi
done
echo $a
fi
Script 19 : Argument des noms de fichiers
Ecrire un script qui prend en argument des noms de fichiers. Une option
-v peut egalement etre placee parmi les arguments. Si l'option est
presente, la commande affiche les caracteristiques de chaque fichier et
repertoire (format de ls l sans entrer afficher le contenu des repertoires).
Si l'option n'est pas presente, la commande renomme chacun des fichiers
(ou repertoires) en ajoutant l'extension .old.
COURS ET FORMATIONS EN INFORMATIQUE : WWW.COURSNET.COM

WWW.COURSNET.COM 49

#!/bin/bash
para=""
option=""
while test "$1" != ""
do
if test "$1" = "-v"
then
option="-v"
else
para="$para $1"
fi
shift
done
set $para
if test "$option" = "-v"
then
while test "$1" != ""
do
echo `ls -ld $1`
shift
done
else
while test "$1" != ""
do
mv $1 ${1}.old
shift
done
fi

Script 20 : Mathmatique
Ecrire un script qui sort les valeurs successives de la suite
dfinie par :
u_n+1 = u_n /2 si u_n est pair,
3 * u_n +1 si u_n est impair.
La valeur de u_0 est donne en argument, le programme s'arrte
lorsque la valeur afficher est 1.
#! /bin/bash
u0=$1
un=$u0
while test $un -ne 1
do
echo $un
if test `expr $un % 2` -eq 0
then
un=`expr $un / 2`
else
un=`expr \( $un \* 3 \) + 1`
fi
done

echo $un
Script 21 : Jeter la poubelle dplacer-vider.
Ecrire une commande jeter qui permet de manipuler une poubelle
COURS ET FORMATIONS EN INFORMATIQUE : WWW.COURSNET.COM

WWW.COURSNET.COM 50

de fichiers -- un rpertoire -- nomme poubelle et situe
votre racine. La commande accepte a trois options : *
jeter -l pour lister le contenu de la poubelle ;
* jeter -r pour vider la poubelle ; *
jeter fichier1 fichier2 ... pour dplacer les fichier considrs vers la poubelle.
#! /bin/bash
POUBELLE=$HOME/poubelle

if test ! -d $POUBELLE
then
mkdir $POUBELLE
fi

case $1 in
-l) echo "$POUBELLE :"
ls $POUBELLE;;
-r) echo "la poubelle se vide..."
rm -r $POUBELLE/*;;
*) mv $@ $POUBELLE;;
esac
Script 22: Argument Fichier excutable .
Ecrire une commande qui prend en argument un nombre quelconque de noms de
fichier et affiche pour chacun :
- son nom si c'est un fichier regulier non executable suivi de la
mention "est un fichier non executable",
- son nom si c'est un fichier regulier executable suivi de la
mention "est un fichier executable",
- la liste de tous les fichiers rguliers executables d'extension
".truc" qu'il contient si c'est un repertoire

#!/bin/bash

while test "$1" != ""
do
if test -x $1 -a -f $1
then
echo $1 "est un fichier executable"
elif test -f $1
then
echo $1 "est un fichier non executable"
elif test -d $1
then
for f in `ls $1/*.truc`
do
if test -x $f -a -f $f
then
echo $f
fi
done
fi
shift
done
COURS ET FORMATIONS EN INFORMATIQUE : WWW.COURSNET.COM

WWW.COURSNET.COM 51

Script 23: jour/mois > Case
# !/bin/bash
jour=$(date+"%d")
mois=$(date+"%m")
anne=$(date+"%y")

Echo entrer un nombre entre 1 et 7 qui indique un jour
Echo jour

case $jour in
1) Jour=Lun;;
2) Jour=Mar;;
3) Jour=Mer;;
4) Jour=Jeu;;
5) Jour=Ven;;
6) Jour=Sam;;
7) Jour=Dim;;
Esac
Echo entrer un nombre entre 1 et 12 qui indique un jour
Echo mois

case $mois in
1) Mois="Fev ";;
2) Mois="Avr ";;
3) Mois="Mai ";;
4) Mois="Juin";;
5) Mois="Juil";;
6) Mois="Aout";;
*) Mois="$2 "
esac
echo "$Jour / $Mois "
Script 24: Fichier accessible en criture
#!bin/bash
fich=/etc
for [ $fich in /etc/* ] do
if test -w $fich then
echo $fich
fi done
Script 25: Renommer les fichier dun rp
#!bin/bash
fich = find /home/simo/Bureau -name *.txt
for [ $fich in /home/simo/Bureau ]
do
mv /home/simo/Bureau/$fich /home/simo/Bureau/$fich.docx
done
COURS ET FORMATIONS EN INFORMATIQUE : WWW.COURSNET.COM

WWW.COURSNET.COM 52

Script 26 : Script Pratique 2013
# !/bin/bash
Echo les user qui ont des UID <= 400 sont :
Cut d : f1,3 /etc/passwd | grep w [0-3].. | cut d :f1
# !/bin/bash
Cat/etc/passwd | grep 500 > /etc/test.txt
Gawk F : { print $1 } /etc/test.txt

XIV. Quelque Commandes Linux

La commande arp : arp permet de visualiser ou modifier la table du cache
ARP de linterface. Cette table peut tre statique et (ou) dynamique. Elle donne la
correspondance entre une adresse IP et une adresse MAC (Ethernet)
farid@Serveur:/etc$ arp -va
? (192.168.226.2) at 00:50:56:e5:08:c4 [ether] on eth0
? (192.168.226.254) at 00:50:56:e4:a2:03 [ether] on eth0
Entries: 2 Skip ped: 0 Found:

La commande route : Le routage dfinit le chemin .emprunt par les
paquets entre son point de dpart et son point darrive. La commande route
permet la configuration du routage sur un PC, switch ou routeur.
farid@Serveur:/etc$ route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref
Use Iface
192.168.226.0 0.0.0.0 255.255.255.0 U 1 0
0 eth0
169.254.0.0 0.0.0.0 255.255.0.0 U 1000 0
0 eth0
0.0.0.0 192.168.226.2 0.0.0.0 UG 0 0
0 eth0

La Commande Netstat : permet de tester la configuration du rseau,
visualiser ltat des connexions, tablir des statistiques, notamment pour surveiller
les serveurs.
farid@Serveur:/etc$ netstat a
Proto RefCnt Flags Type State I-Node Path
unix 2 [ ACC ] STREAM LISTENING 11774
/tmp/orbit-farid/linc-64f-0-7fdc879498989
COURS ET FORMATIONS EN INFORMATIQUE : WWW.COURSNET.COM

WWW.COURSNET.COM 53

unix 2 [ ACC ] STREAM LISTENING 11792
/tmp/orbit-farid/linc-64c-0-411483fe46585
udp 0 0 Serveur.local:domain *:*
udp 0 0 localhost:domain *:*
tcp 0 0 Serveur.local:domain *:*
LISTEN
tcp 0 0 localhost:domain *:*
LISTEN

La commande netsat nr ou r permet aussi daffiche ltat des tables de routage
linstar de la commande route -n .

La Commande Traceroute : permet dafficher le chemin parcouru par un
paquet pour arriver destination.
farid@Serveur:/etc$ traceroute 192.168.1.1
traceroute to 192.168.1.1 (192.168.1.1), 30 hops max, 60 byte
packets
1 192.168.226.2 (192.168.226.2) 0.437 ms 0.089 ms 0.081 ms
2 sagembox.home (192.168.1.1) 5.396 ms 6.799 ms 16.286 m

La Commande Host : permet d'obtenir l'adresse IP d'un ordinateur .
$ host www.google.com
www.google.com is an alias for www.l.google.com.
www.l.google.com has address 209.85.135.147
www.l.google.com has address 209.85.135.99
www.l.google.com has address 209.85.135.103
www.l.google.com has address 209.85.135.104

La Commande DIG : En interrogeant la branche com, on obtient la liste des
serveurs DNS grant les noms de domaines en .com
$ dig com. NS
...
;; ANSWER SECTION:
com. 172800 IN NS i.gtld-servers.net.
com. 172800 IN NS j.gtld-servers.net.
com. 172800 IN NS k.gtld-servers.net.
com. 172800 IN NS l.gtld-servers.net. ...

Les Commandes de routage :
Une route au rseau 192.168.0.0/24 doit tre dfinie sur la station 1.
Pour cela, on peut utiliser la commande route :
# route add -net 192.168.0.0/24 gw 112.65.123..3






COURS ET FORMATIONS EN INFORMATIQUE : WWW.COURSNET.COM

WWW.COURSNET.COM 54

Commande CUT
Aperu du fichier analyser :
champ1 champ2 champ3 champ4 champ5 champ6
La ligne de commande sera :
cut -d- -s -f2,4 monFichier.log > fichierResultat
Analyse de la ligne de commande :
option -d pour indiquer quel est le dlimiteur
option -s pour supprimer les lignes ne contenant pas le dlimiteur
option -f pour spcifier les champs extraire
monFichier.log : le fichier analyser
fichierResultat : fichier qui va contenir les champs extraits