Fonctionnement de SSL
SSL consiste en 2 protocoles :
- SSL Handshake protocol : avant de communiquer, les 2 programmes SSL négocient des clés et des protocoles de chiffrement communs.
- SSL Record protocol: Une fois négociés, ils chiffrent toutes les informations échangées et effectuent divers contrôles.
- La négociation SSL (« handshake« )
Au début de la communication le client et le serveur s’échangent :
- la version SSL avec laquelle ils veulent travailler,
- la liste des méthodes de chiffrement (symétrique et asymétrique) et de signature que chacun connaît (avec longueurs de clés),
- les méthodes de compression que chacun connaît,
- des nombres aléatoires,
- les certificats.
Client et serveur essaient d’utiliser le protocole de chiffrement le plus puissant et diminuent jusqu’à trouver un protocole commun aux deux. Une fois que cela est fait, ils peuvent commencer à échanger des données.
- La communication SSL (« record« )
Avec SSL, l’expéditeur des données:
- découpe les données en paquets,
- compresse les données,
- signe cryptographiquement les données,
- chiffre les données,
- les envoie.
Celui qui réceptionne les données:
- déchiffre les données,
- vérifie la signature des données,
- décompresse les données,
- réassemble les paquets de données.
Protection des communications
SSL utilise:
- un système de chiffrement asymétriques (comme RSA ou Diffie-Hellman). Il est utilisé pour générer la master key (clé principale) qui permettra de générer des clés de session.
- un système de chiffrement symétrique (DES, 3DES, IDEA, RC4…) en utilisant les clés de session pour chiffrer les données.
- un système de signature cryptographique des messsages (HMAC, utilisant MD5, SHA…) pour s’assurer que les messages ne sont pas corrompus.
C’est lors de la négociation SSL que le client et le serveur choisissent des systèmes communs (chiffrement asymétrique, symétrique, signature et longueur de clé).
Dans votre navigateur, vous pouvez voir la liste des systèmes utilisés en plaçant votre curseur sur le petit cadenas quand vous ètes dans une page en HTTPS.
Les certificats
Lors d’une négociation SSL, il faut s’assurer de l’identité de la personne avec qui on communique. Comment être sûr que le serveur auquel vous parlez est bien celui qu’il prétend être ?
C’est là qu’interviennent les certificats. Au moment de vous connecter sur un serveur web sécurisé, ce dernier vous enverra un certificat contenant le nom de l’entreprise, son adresse, etc. C’est une sorte de pièce d’identité.
- Vérifier l’authenticité de cette pièce d’identité
Ce sont les PKI (Public Key Infrastructure), des sociétés externes (auxquelles vous faites implicitement confiance), qui vont vérifier l’authenticité du certificat.
(La liste de ces PKI est incluse dans votre navigateur. Il y a généralement VeriSign, Thawte, etc.)
Ces PKI signent cryptographiquement les certificats des entreprises (et ils se font payer pour ça).
Les utilisations de SSL: HTTPS, SSH, FTPS, POPS…
SSL peut être utilisé pour sécuriser pratiquement n’importe quel protocole utilisant TCP/IP.
Certains protocoles ont été spécialement modifiés pour supporter SSL:
- HTTPS: c’est HTTP+SSL. Ce protocole est inclus dans pratiquement tous les navigateurs, et vous permet (par exemple) de consulter vos comptes bancaires par le web de façon sécurisée.
- FTPS est une extension de FTP (File Transfer Protocol) utilisant SSL.
- SSH (Secure Shell): c’est une sorte de telnet (ou rlogin) sécurisé. Cela permet de se connecter à un ordinateur distant de façon sûre et d’avoir une ligne de commande. SSH possède des extensions pour sécuriser d’autres protocoles (FTP, POP3 ou mème X Windows).
Vérifier l’intégrité de limage ISO
rozec@pcroze:~$ md5sum –check MonMd5sum
N :le md5sum doit se trouver dans le répertoire de l’ISO
Connaître l’adresse du bus du graveur
rozec@pcroze:~$ cdrecord dev=ATA -scanbus
scsibus1:
1,0,0 100) ‘ATAPI ‘ ‘CD-ROM 52XMax ‘ ‘1.22’ Removable CD-ROM
1,1,0 101) *
1,2,0 102) *
Lancer la gravure
rozec@pcroze:~$ cdrecord -v -dao speed=4 dev=ATAPI:1,0,0 /chemin/image.iso
speed= 4 : vitesse de gravure max
dev= : adresse du graveur
NB : pour les version antérieure au à la série 2.6 ne pas ecrire « ATAPI: » mais juste l’adresse
rozec@pcroze:~$ cdrecord -v -dao speed=4 dev=1,0,0 /chemin/image.iso
lsmod
Lister les modules
root@pcroze:~# lsmod
Module Size Used by
snd_rtctimer 4384 0
nls_iso8859_1 5120 1
nls_cp437 6784 1
vfat 14208 1
fat 53916 1 vfat
sg 36252 0
sd_mod 23428 2
usb_storage 72256 1
libusual 17936 1 usb_storage
/lib/modules/<version>/
Localisation des modules
Rechercher un module
root@pcroze:/lib/modules# find /lib/modules/2.6.20-16-generic -type f -name *snd-usb* -print
/lib/modules/2.6.20-16-generic/kernel/sound/usb/snd-usb-lib.ko
/lib/modules/2.6.20-16-generic/kernel/sound/usb/usx2y/snd-usb-usx2y.ko
/lib/modules/2.6.20-16-generic/kernel/sound/usb/snd-usb-audio.ko
Installer un module
insmod MonModule
modprobe MonModule : contrairement à la commande insmod résoud les dépendances
Retirer un module
rmmod
modprobe -r
Ficher de configuration des modules
/etc/modprobe.d/ : Debian
/etc/modeprobe.conf : Mandriva, Suse, Redhat
Fichier des modules chargés au démarrage
/etc/modules : Debian
/etc/modprobe.preload/ : Mandriva, Suse, Redhat
Correction d’un disque dur
root@pcroze:~# e2fsck -fvy /dev/hda1
NB : la partition ne doit pas être montée, donc s’il s’agit de la partitino système il faut le faire depuis un CD Live
Super block
En cas de problème de superbloc, il existe des copies de sécurité de ces derniers :
localisation des copies des superblocs :
root@pcroze:~# mke2fs -n /dev/hda1
ou
root@pcroze:~# dumpe2fs /dev/hda1 | grep -i superbloc
dumpe2fs 1.40-WIP (14-Nov-2006)
superbloc Primaire à 0, Descripteurs de groupes à 1-3
superbloc Secours à 32768, Descripteurs de groupes à 32769-32771
superbloc Secours à 98304, Descripteurs de groupes à 98305-98307
superbloc Secours à 163840, Descripteurs de groupes à 163841-163843
superbloc Secours à 229376, Descripteurs de groupes à 229377-229379
superbloc Secours à 294912, Descripteurs de groupes à 294913-294915
superbloc Secours à 819200, Descripteurs de groupes à 819201-819203
superbloc Secours à 884736, Descripteurs de groupes à 884737-884739
superbloc Secours à 1605632, Descripteurs de groupes à 1605633-1605635
superbloc Secours à 2654208, Descripteurs de groupes à 2654209-2654211
superbloc Secours à 4096000, Descripteurs de groupes à 4096001-4096003
superbloc Secours à 7962624, Descripteurs de groupes à 7962625-7962627
Restauration du superbloc :
root@pcroze:~# e2fsck -f -b 32768 /dev/hda1
Définition
Protocole réseau sécurisé permettant d’établir une connexion TCP avec une machine distante pour y envoyer et recevoir des données.
- le client et le serveur s’authentifient mutuellement, ce qui évite que des pirates se fassent passer pour l’un ou pour l’autre
- les données échangées sur le réseau sont chiffrées, ce qui garantit leur confidentialité
Se connecter
L’utilisation de SSH pour se connecter à une machine est extrèmement simple.
machineloc ~ $ssh login@machinedist
Authentification
- Par mot de passe
- La façon la plus simple de s’identifier est le mot de passe.
- Par Clé publique
- Une autre méthode utilise ce qu’on appelle une « clef publique », c’est-à -dire un code qui vous identifie.
- il faut que PubkeyAuthentication soit positionné à yes dans les fichiers de configuration
- Type de clé
- SSH1 utilise généralement des clefs RSA1, et SSH2 des clefs DSA.
- Pour connaître la version de SSH distante, tapez
ssh -v
sur la machine distante.
- Génération de la clé
- Pour générer une clef DSA (SSH2) :
machineloc ~ $ ssh-keygen -t dsa
- Le générateur de clefs va en générer une clef publique et une clef privée. Il va placer la clef privée par défaut sous
$HOME/.ssh/id_dsa
pour SSH2 et sous $HOME/.ssh/identity
pour SSH1
-
Appuyez sur Enter
pour accepter la localisation de la clé.
-
ssh-keygen
vous demande ensuite une « passphrase » Cette phrase sert à fortifier la clef pour la rendre plus difficilement cassable. à€ partir de là , deux solutions :
- si vous tapez une phrase, votre connection sera plus sûre, mais vous devrez utiliser
ssh-agent
pour ne pas avoir à la retaper à chaque fois (voir plus bas)
- vous ne tapez pas de phrase (et appuyez seulement sur
Enter
), votre connexion sera moins sûre
- Placer les clés
- Maintenant, sur la machine distante, allez dans le répertoire
.ssh
et éditez le fichier authorized_keys
: ajoutez à la fin, et sur une seule ligne la clef publique (identity.pub
pour SSH1 ou id_dsa.pub
pour SSH2).
- SSH-Agent
- Si vous avez opté pour la solution « phrase de passe », votre connexion est plus sûre. Mais vous devez taper à chaque fois ladite phrase… Solution, utiliser
ssh-agent
.
- Il faut lancer
ssh-agent
, qui gère les clefs d’identification. Comme l’agent est disponible dans tous les programmes qui découlent, on le lance au début d’une session. Par exemple, quand vous ètes en mode texte et que vous lancez le serveur X( ssh-agent startx )
- Une fois lancé, il faut donner à l’agent la clé à gerer ( ssh-add )
Commandes
ssh clipper.ens.fr date
ssh -l rozec -X gaia.auto.emn.fr » unset autologout ; matlab -desktop »
sh toto@brick.ens.fr « uname -p »
scp fichier1 fichier2 fichier3 machinedist:
scp -r répertoire machinedist:
scp machinedist:tagada.txt divers
Commande screen
Il faut utiliser la commande « screen » :
– se connecter en ssh sans passer de commande ;
– lancer la commande « screen » ;
– lancer la commande « matlab … » ;
– se déconnecter de « screen » par un « Ctrl AD » ;
– se déconnecter de la session ssh.
– se reconnecter sur la machine , recupérer la main sur la session par un « screen -r <pid-du-process-SCREEN> ».
Attention terminer la session « screen » par un « Ctrl D », sinon elle reste toujours active.
Xforwarding
Pour que cela soit réalisable, il faut activer l’option X11Forwarding dans les fichiers de configuration.
rozec@pcroze:~$ more /etc/ssh/sshd_config
…
X11Forwarding yes
MEMO
sshd : Serveur ssh
scp : Copie distante sécurisée
ssh-keygen : génération de clefs d’authentification, management et conversion
sftp : Transfert sécurisé de fichiers
slogin/ssh : Client ssh
ssh-add : Ajoute les identités DSA ou RSA à l’agent d’authentification
ssh-agent : Agent d’authentification
ssh-keyscan : Recueille les clefs publiques ssh
Détection d’un périphérique SCSI / USB
dmesg | grep scsi -A 3
Affichage des partitions
fdisk -l
Lancement de Qemu
qemu -m 256 -cdrom dsl-3.4.iso
Taille des répertoires
du -ks * | sort -nr
Plus d’infos http://www.tuteurs.ens.fr/unix/place_disque.html
Curseur
Ctrl P : commande précédente
Ctrl N : commande suivante
Ctrl E : fin de ligne
Ctrl A : début de ligne
Ctrl E : fin de ligne
Ctrl D : supprimer un caractère
Ctrl K : supprimer � droite du curseur
Ctrl U : supprimer � gauche du curseur
grep
grep toto | grep -v tata : recherche des lignes contenant toto mais pas tata
Résultat d’une commande
ps -A | grep syslog ; echo resulta=$?
si resultat=0 => le mot syslog a été trouvé
si resultat=1 => le mot syslog n’a pas été trouvé
nmap
Scan des ports (TCP par défaut)
rozec@pcairv:~$ nmap 127.0.0.1
Starting Nmap 4.20 ( http://insecure.org ) at 2007-10-13 15:03 CEST
Interesting ports on localhost (127.0.0.1):
Not shown: 1694 closed ports
PORT STATE SERVICE
80/tcp open http
631/tcp open ipp
3306/tcp open mysql
Nmap finished: 1 IP address (1 host up) scanned in 0.132 seconds
Scan des ports UDP
rozec@pcairv:~$ nmap -sU 127.0.0.1
Scan d’un port (UDP / DHCP) particulier sur un réseau
rozec@pcairv:~$ nmap -sU 193.104.32.203/24 -p 67
traceroute
Afficher la route
route
Affichage des routes
-n : conversion en IP
rozec@pcairv:~$ route -n
Table de routage IP du noyau
Destination Passerelle Genmask Indic Metric Ref Use Iface
192.168.0.0 0.0.0.0 255.255.255.0 U 0 0 0 ra0
169.254.0.0 0.0.0.0 255.255.0.0 U 0 0 0 eth0
169.254.0.0 0.0.0.0 255.255.0.0 U 1000 0 0 ra0
0.0.0.0 192.168.0.1 0.0.0.0 UG 0 0 0 ra0
0.0.0.0 0.0.0.0 0.0.0.0 U 1000 0 0 eth0
netstat
Afficher les statistiques du réseau
-n : conversion en IP
-t : tcp
rozec@pcairv:~$ rozec@pcairv:~$ netstat -nt
Connexions Internet actives (sans serveurs)
Proto Recv-Q Send-Q Adresse locale Adresse distante Etat
tcp 0 0 192.168.0.168:52353 209.85.129.99:80 ESTABLISHED
tcp 0 0 192.168.0.168:54924 72.14.221.17:80 ESTABLISHED
tcp 0 0 192.168.0.168:54926 72.14.221.17:80 ESTABLISHED
tcp 0 0 192.168.0.168:41441 217.64.173.227:19800 ESTABLISHED
tcp 0 0 192.168.0.168:36829 192.168.0.169:445 ESTABLISHED
tcp 0 0 192.168.0.168:57112 72.14.221.18:80 ESTABLISHED
ethtool
Affciher la configuration de l’interface réseau
root@pcairv:~# ethtool eth0
Settings for eth0:
Supported ports: [ MII ]
Supported link modes: 10baseT/Half 10baseT/Full
100baseT/Half 100baseT/Full
1000baseT/Full
Supports auto-negotiation: Yes
Advertised link modes: 10baseT/Half 10baseT/Full
100baseT/Half 100baseT/Full
1000baseT/Full
Advertised auto-negotiation: Yes
Speed: Unknown! (65535)
Duplex: Unknown! (255)
Port: MII
PHYAD: 1
Transceiver: external
Auto-negotiation: on
Supports Wake-on: g
Wake-on: d
Link detected: no
iwconfig
Configuration de la carte sans fil
root@pcairv:~# iwconfig ra0
ra0 RT2500 Wireless ESSID: »ildut »
Mode:Managed Frequency=2.457 GHz Access Point: 00:40:96:38:3D:AC
Bit Rate=11 Mb/s Tx-Power:2 dBm
RTS thr:off Fragment thr:off
Encryption key:off
Link Quality=68/100 Signal level=-68 dBm Noise level:-212 dBm
Rx invalid nwid:0 Rx invalid crypt:0 Rx invalid frag:0
Tx excessive retries:0 Invalid misc:0 Missed beacon:0
kill
Tuer un process
-1 : lecture des fichiers de configuration (HUP)-9 : arrêt brutal
-15 : tuer proprement
crontab
Automatisation de tâches
-e : edition
-l : lister
minute:heure:jour:mois:jour de la semaine (dimanche 0)
tar
Archivage
-c : creer une archive
-v : verbeux
-f : fichie concerné
-z : compression (gzip)
-j : compression (bzip2)
compression
tar cvfz archive.tar.gz mon-dossier
décompression
tarxvfz archive.tar.gz
pipe
Tube
root@pcairv:~# FICHIER=concours-sa ; [ -e $FICHIER ] && echo « $FICHIER existe » || « $FICHIER n’existe pas »
concours-sa existe
Bit setGID
Le bit setGID est représenté par un ‘s’ ou parfois le ‘S’ qui occupe la position du bit d’exécution du groupe propriétaire.
S’il est positionné cela implique que tout fichier créé dans le répertoire aura automatiquement le mème groupe propriétaire que le répertoire lui-mème et héritera de ses droits.
Exemple :
Vous créez en tant qu’administrateur du système un groupe pour un projet disons le groupe ‘projet’, vous faites de ce groupe le groupe propriétaire du répertoire, vous ajoutez les utilisateurs concernés par ce projet au groupe ‘projet’ et ! vous positionnez le bit setGID sur le répertoire ! De la sorte vous serez sûr que tout fichier créé dans ce répertoire sera utilisable par tout membre du ‘projet’
Bit setUID
Ce bit est représenté par un ‘s’ ou parfois par un ‘S’ qui occupe la position du bit d’exécution du ‘propriétaire’ du fichier.
Lorsque vous lancé un programme qui possède ce bit positionné, vous vous trouvez temporairement avec les privilèges du propriétaire du programme pendant son exécution.
Bit sticky
Ce bit est représenté par un ‘t’ ou parfois par un ‘T’ qui occupe la position du bit d’exécution des ‘autres utilisateurs’.
Lorsque ce bit est positionné, il assure qu’un fichier qui se trouve dans le répertoire ne pourra être supprimé que par son propriétaire.
Ce bit peut être combiné avec le bit setGID (voir paragraphe précédent).
Exemple :
Un type d’emploi classique peut être illustré par le répertoire ‘/tmp’ de votre système. N’importe quel utilisateur doit pouvoir y créer des fichiers temporaires et les utiliser par la suite. Mais il est nécessaire que chaque utilisateur puisse être « sûr » d’y retrouver ce qu’il y a mis, d’o๠l’utilité de positionner le bit sticky pour ce répertoire.
mkdir
Création de répertoire
-p : créer en une seule fois répertoire et sous répertoire
root@pcairv:~# mkdir -p toto/tata
rm
Suppression de fichiers
-r : suppression de dossiers et fichiers
-i : confirmation
-f : forcer
file
Déterminer le type d’un fichier
rozec@pcairv:~$ file test_html_m1276020e.jpg
test_html_m1276020e.jpg: JPEG image data, EXIF standard 2.0
nl
Numéroter des lignes
-s : spécifier un séparateur
rozec@pcairv:~$ nl -s « > » /var/log/messages | tail
414>Oct 13 15:06:56 pcairv gconfd (root-9422):
419>Oct 13 15:51:39 pcairv — MARK —
420>Oct 13 16:11:39 pcairv — MARK —
421>Oct 13 16:31:40 pcairv — MARK —
422>Oct 13 16:51:40 pcairv — MARK —
423>Oct 13 17:11:40 pcairv — MARK —
find
Rechercher une occurence
find <ou> <quoi> <nom>
rozec@pcairv:~$ sudo find / -type f -name ubuntuimage
Password:
/home/rozec/ubuntuimage
slocate
Rechercher une occurence
-u : mise � jour de l’index
rozec@pcairv:~$ slocate ubuntuimage
/home/rozec/ubuntuimage
sort
Trier les lignes d’un fichier
-f : ne pas tenir compte de la case
-u : ne tenir compte que d’un exemplaire
rozec@pcairv:~$ sort toto
1
1
3
3b
4
a
A
a1
lsof
Lister les fichiers ouverts
-u : utilisateur
root@pcairv:~# lsof /usr/share/…/checkbox.xml
COMMAND PID USER FD TYPE DEVICE SIZE NODE NAME
firefox-b 6411 rozec 84r REG 8,2 3407 3174981 /usr/share/…/checkbox.xml
mplayer 12185 rozec 84r REG 8,2 3407 3174981 /usr/share/…/checkbox.xml
boucle
rozec@pcairv:~$ for i in *.jpeg ; do mv $i $i.jpeg; done
rozec@pcairv:~$ for i in *.jpeg ; do echo $i | sed « s/jpeg/jpg/ » ; done
tota.jpg.jpeg
toti.jpg.jpeg
rozec@pcairv:~$ for i in *.jpeg ; do echo $i | sed « s/jpeg/jpg/g » ; done
tota.jpg.jpg
toti.jpg.jpg
toto.jpg.jp
rozec@pcairv:~$ for i in *.jpeg ; do echo $i | sed « s/jpeg//g » ;done
tota..
toti..
rozec@pcairv:~$ ls *.jpg | sed ‘s/(.*).jpg$/mv « & » « 1.jpeg »/’ | sh
- ls *.jpg : lister les fichiers .jpg
- s/ : substituer
- (.*).jpg$ : n’importe quel fichier jpg (expression régulière)
- mv « & » « 1.jpeg » : par
- mv :
- & : sera remplacé par la portion de chaîne qui est traité par l’expression (tout le nom de fichier, avec l’extension),
- 1 : sera remplacé par le nom du fichier dans la chaîne de base (sans extension).
- .jpeg : nouvelle extension
variable
echo $PATH
unset var
lshw
Afficher les caractéristiques matérielles
-html : sortie au format html
root@pcroze:~# lshw -html > /temp/hw.html
lsusb
Afficher les informations relatives � l’usb
rozec@pcroze:~$ lsusb
Bus 003 Device 007: ID 0781:5406 SanDisk Corp.
Bus 003 Device 001: ID 0000:0000
Bus 002 Device 002: ID 046d:c016 Logitech, Inc. M-UV69a Optical Wheel Mouse
Bus 002 Device 001: ID 0000:0000
Bus 001 Device 001: ID 0000:0000
lsb_release -idc
Afficher laversion installer de linux
rozec@pcroze:~$ lsb_release -idc
Distributor ID: Ubuntu
Description: Ubuntu 7.04
Codename: feisty
hrparm
Afficher les informations relatives au disque dur
root@pcroze:~# hdparm -i /dev/hda
/dev/hda:
Model=WDC WD400BB-00DEA0, FwRev=05.03E05, SerialNo=WD-WCAD19986219
Config={ HardSect NotMFM HdSw>15uSec SpinMotCtl Fixed DTR>5Mbs FmtGapReq }
RawCHS=16383/16/63, TrkSize=57600, SectSize=600, ECCbytes=40
BuffType=DualPortCache, BuffSize=2048kB, MaxMultSect=16, MultSect=off
CurCHS=16383/16/63, CurSects=16514064, LBA=yes, LBAsects=78165360
IORDY=on/off, tPIO={min:120,w/IORDY:120}, tDMA={min:120,rec:120}
PIO modes: pio0 pio1 pio2 pio3 pio4
DMA modes: mdma0 mdma1 mdma2
UDMA modes: udma0 udma1 udma2 udma3 udma4 *udma5 udma3 udma4 *udma5
AdvancedPM=no WriteCache=enabled
Drive conforms to: Unspecified: ATA/ATAPI-1 ATA/ATAPI-2 ATA/ATAPI-3 ATA/ATAPI-4 ATA/ATAPI-5
* signifies the current active mode
uname
Afficher la version du noyau
rozec@pcroze:~$ uname -a
Linux pcroze 2.6.20-16-generic #2 SMP Sun Sep 23 19:50:39 UTC 2007 i686 GNU/Linux
cpuinfo
Afficher les informations relatives � la cpu
rozec@pcroze:~$ cat /proc/cpuinfo
processor : 0
vendor_id : GenuineIntel
cpu family : 15
model : 2
model name : Intel(R) Pentium(R) 4 CPU 2.40GHz
stepping : 7
cpu MHz : 2400.252
cache size : 512 KB
fdiv_bug : no
hlt_bug : no
f00f_bug : no
coma_bug : no
fpu : yes
fpu_exception : yes
cpuid level : 2
wp : yes
flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe up cid
bogomips : 4804.69
clflush size : 64
df
Afficher l’occupation de l’espace
-h : résultat lisible par l’humain
-l : système locaux uniquement
free
Afficher l’occupation de la mémoire