TP sysres IMA2a5 2019/2020 G2
Ekaterina ISHCHUK & Loick MOLLET
Sommaire
- 1 Introduction
- 2 Installation des systèmes d'exploitation
- 3 Services internet
- 4 Architecture réseau
- 5 Test d'intrusion
- 6 Réalisations
Introduction
Installation des systèmes d'exploitation
Configuration Zabeth05
Pour configurer Zabeth05 à reenvoyer eth1 à eth0 nous ajoutons:
iface bridge inet dhcp bridge_ports eth0, eth1 bridge_hw 172.26.145.55 # adresse de Zabeth05
Installation d'une machien virtuelle Xen
D'abord on connect sur la machine
cordouan.insecserv.deule.net
Puis, pour créer une machine virtuelle, on lance la commande ci-dessous:
xen-create-image --hostname=ima2a5-mol-ish --dhcp --dir=/usr/local/xen --dist=ascii --apt_proxy=http://proxy.polytech-lille.fr:3128 --mirror=http://fr.deb.devuan.org/merged/ --force
Pour observer le processus d'installation pas à pas, il faut lancer un deuxième terminal et taper:
tail -f /var/log/xen-tools/ima2a5-mol-ish.log
Dès que l'installation est finie, le résultat;
Installation Summary --------------------- Hostname : ima2a5-mol-ish Distribution : ascii MAC Address : 00:16:3E:2F:02:1D IP Address(es) : dynamic SSH Fingerprint : SHA256:kDLhqDm3Aqt2sIPrhCoFhRGyk4yY3H7VS6KCAO/4Qf0 (DSA) SSH Fingerprint : SHA256:xfQpYfkg1fRXYaVDnDMuT+XTSCh2BgaSmcnF+etOjxc (ECDSA) SSH Fingerprint : SHA256:U2hWpq2wPg16SOpZp9dE6fyY/21PHGAG2fBNz10P4DM (ED25519) SSH Fingerprint : SHA256:YXQFkzNUymvUMMgvypJ73REhRb6RbTjs6FrWiuKXQso (RSA) Root Password : M9zWc6KYtykXkSC8w8qJ9Ze
On change le mot de passe à "glopglop" avec la commande:
passwd
Ensuite on doit modifier la configuration "/etc/xen/ima2a5-mol-ish.cfg"
vif = ['mac=00:16:3E:2F:02:1D, bridge=IMA2a5']
Maintenant on peut créer le domaine et lancer la machine:
xl create ima2a5-mol-ish.cfg xl console ima2a5-mol-ish
Pour créer des volumes on passe des commandes suivantes :
lvcreate -L10G -n im2a5-mol-ish-home virtual lvcreate -L10G -n im2a6-mol-ish-var virtual
Egalement le système des fichiers:
mke2fs /dev/virtual/im2a5-mol-ish-home mke2fs /dev/virtual/im2a5-mol-ish-var
Après on doit modifier le fichier "/etc/xen/ima2a5-mol-ish.cfg" en ajoutant les lignes suivantes:
disk = [...., 'phy:/dev/virtual/im2a5-mol-ish-home,xvdb1,w', 'phy:/dev/virtual/im2a5-mol-ish-var,xvdb2,w',]
Maintenant on peut accéder à notre machine virtuelle
xl console ima2a5-mol-ish
Cette commande nous permet de logger root / glopglop
On vérifie si les volumes sont bien installés:
fdisk -l
Problème recontré : les volumes n'étaient pas pris en compte. Il fallait détruire la machine par "xl destroy " et puis relancer la création de la machine.
Pour appliquer des volumes avec chaque démarrage, on modifie le fichier "/etc/fstab" de la machine. On ajoute à la fin de fichier :
/dev/xvdb1 /home ext4 defaults 0 2 # /dev/xvdb2 /var ext4 defaults 0 2
Il faut bien comment la ligne de /var car les manupulation avec ce dossier avant le montage peuvent provoquer des problèmes, que nous avons rencontrés. En tapant "ls /home" on retrouve bien "last+found" = le système des fichiers
Pour assurer le système des fichiers pour /var, on possède au montage:
mount /dev/xvdb2 /mnt mv /var/* /mnt umount /mnt mount -a
Maintenante on peut decommenter la ligne de '/var' dans le fichier "/etc/fstab":
/dev/xvdb2 /var ext4 defaults 0 2
Après ces instructions on vérifie bien par "df":
root@ima2a5-mol-ish:/etc/network# df Filesystem 1K-blocks Used Available Use% Mounted on udev 109076 0 109076 0% /dev tmpfs 24528 76 24452 1% /run /dev/xvda2 4062912 406352 3430464 11% / tmpfs 5120 0 5120 0% /run/lock tmpfs 153900 0 153900 0% /run/shm /dev/xvdb1 10321208 23028 9773892 1% /home /dev/xvdb2 10321208 156552 9640368 2% /var
Configuration du réseau via /etc/network/interfaces:
auto lo iface lo inet loopback
auto eth0 iface eth0 inet static address 193.48.57.162 netmask 255.255.255.240 gateway 193.48.57.172
Maintenant on peut accéder aux autres machines virtuels connectés sur le bridge IMA2a5 :
root@ima2a5-mol-ish:~# ping 193.48.57.163 PING 193.48.57.163 (193.48.57.163) 56(84) bytes of data. 64 bytes from 193.48.57.163: icmp_seq=1 ttl=64 time=0.350 ms 64 bytes from 193.48.57.163: icmp_seq=2 ttl=64 time=0.304 ms 64 bytes from 193.48.57.163: icmp_seq=3 ttl=64 time=0.327 ms
Dès que la machien est connectée vers le réseau et possède l'accès Internet, on peut procéder l'installation de SSH, apache and bind
apt-get install openssh-server apt-get install apache2 apt-get install bind9
Configuration SSH
Après avoir installé openssh, on configure le fichier /etc/ssh/sshd_config
# Authentication: #LoginGraceTime 2m PermitRootLogin yes <= CHANGE #StrictModes yes #MaxAuthTries 6 #MaxSessions 10 PubkeyAuthentication yes <= CHANGE # Expect .ssh/authorized_keys2 to be disregarded by default in future. #AuthorizedKeysFile .ssh/authorized_keys .ssh/authorized_keys2 #AuthorizedPrincipalsFile none #AuthorizedKeysCommand none #AuthorizedKeysCommandUser nobody # For this to work you will also need host keys in /etc/ssh/ssh_known_hosts #HostbasedAuthentication no # Change to yes if you don't trust ~/.ssh/known_hosts for # HostbasedAuthentication #IgnoreUserKnownHosts no # Don't read the user's ~/.rhosts and ~/.shosts files #IgnoreRhosts yes # To disable tunneled clear text passwords, change to no here! PasswordAuthentication yes <= CHANGE #PermitEmptyPasswords no
Puis on faire un restart : service ssh restart
Services internet
Site internet, configuration et sécurisation
Pour héberger le site avec un nom de domaine, on achète un nom de domaine "ima2a5-mol-ish.site" sur gandi.net Premièrement, nous achetons un certificat SSL. Deuxièmement, il faut configurer les "nameservers" : au lieu d'avoir des serveurs proposés, on ajoute:
dns.ima2a5-mol-ish.site 193.48.57.162 ns6.gandi.net 217.70.177.40
Cela va prendre un peu de temps. Vérifier des changements on peut avec https://dnslookup.fr/ima2a5-mol-ish.site
Sécurisation par DNSSEC
Pour sécuriser le server en DNSSEC il faut d'abord générer deux paires des clés : ZSK et KSK formats
cd /etc/bind mkdir ima2a5-mol-ish.site.dnssec cd ima2a5-mol-ish.site.dnssec dnssec-keygen -r /dev/urandom -a RSASHA1 -b 2048 -f KSK -n ZONE ima2a5-mol-ish.site dnssec-keygen -r /dev/urandom -a RSASHA1 -b 1024 -n ZONE ima2a5-mol-ish.site
Les clés générés on renome:
mv Kima2a5-mol-ish.site.+005+42049.key ima2a5-mol-ish.site-ksk.key mv Kima2a5-mol-ish.site.+005+42049.private ima2a5-mol-ish.site-ksk.private mv Kima2a5-mol-ish.site.+005+56373.key ima2a5-mol-ish.site-zsk.key mv Kima2a5-mol-ish.site.+005+56373.private ima2a5-mol-ish.site-zsk.private
Puis on peut créer le fichier de configuration dans /etc/bind/ima2a5-mol-ish.site
$TTL 259200
$include /etc/bind/ima2a5-mol-ish.site.dnssec/ima2a5-mol-ish.site-ksk.key $include /etc/bind/ima2a5-mol-ish.site.dnssec/ima2a5-mol-ish.site-zsk.key
@ IN SOA dns.ima2a5-mol-ish.site. root@ima2a5-mol-ish.site. ( 20191128 ; Version 7200 ; Refresh (2h) 3600 ; Retry (1h) 1209600 ; Expire (14j) 7200 ; Minimum TTL (2j) ) @ IN NS dns.ima2a5-mol-ish.site. #dns ima @ IN NS ns6.gandi.net. #dns gandi www IN A 193.48.57.162 #@IP website ima2a-mol-ish dns IN A 193.48.57.162
Pour que nos modification soient prise en compte nos devons donc signer notre fichier de configuration:
dnssec-signzone -o ima2a5-mol-ish.site -k /etc/bind/ima2a5-mol-ish.site.dnssec/ima2a5-mol-ish.site-ksk ima2a5-mol-ish.site /etc/bind/ima2a5-mol-ish.site.dnssec/ima2a5-mol-ish.site-zsk
Cela nous génére le fichier ima2a5-mol-ish.site.signed. Il faut le rajouter dans la configuration named.conf.local :
root@ima2a5-mol-ish:/etc/bind# cat named.conf.local zone "ima2a5-mol-ish.site" { type master; file "/etc/bind/ima2a5-mol-ish.site.signed" };
On modifie également notre fichier named.conf.options afin d'activer le DNSSEC
root@ima2a5-mol-ish:/etc/bind# cat named.conf.options options { directory "/var/cache/bind"; dnssec-validation auto; dnssec-enable yes; auth-nxdomain no; # conform to RFC1035 listen-on-v6 { any; }; allow-transfer {"allowed_to_transfer";} }; acl "allowed_to_transfer" { 217.70.177.40/32 };
Maintenant des clés publics on rajoute à DNSSEC section de Gandi. Il faut ajouté la partie qui commence par Aw...
root@ima2a5-mol-ish:/etc/bind/ima2a5-mol-ish.site.dnssec# cat ima2a5-mol-ish.site-zsk.key ; This is a zone-signing key, keyid 56373, for ima2a5-mol-ish.site. ; Created: 20191113100104 (Wed Nov 13 10:01:04 2019) ; Publish: 20191113100104 (Wed Nov 13 10:01:04 2019) ; Activate: 20191113100104 (Wed Nov 13 10:01:04 2019) ima2a5-mol-ish.site. IN DNSKEY 256 3 5 AwEAAcCC4sxci7Fep2Djz7oQZY0YxyZlsZyzyEybco91JISIi/Ra8vS2 HBaxqVPSzoIze66PmNW0LeRN6EpEAnstFf6YPncy10UYnw5BYVO/pYyB qMdfNcukAhcFQl4lxg6AAmCJV9p+fxZtH2fVVDgo8dtdoglxdcivpuZ6 X/6yRFOh
Pour appliquer les changement on faire un restart de bind9 :
service bind9 restart bind9 is not running ... failed!
Pour voir des logs et detecter l'erreur:
root@ima2a5-mol-ish:/etc/bind# named -d 2 -g ------ 13-Nov-2019 10:45:13.493 loading configuration from '/etc/bind/named.conf' 13-Nov-2019 10:45:13.493 /etc/bind/named.conf.options:27: missing ';' before '}' 13-Nov-2019 10:45:13.493 /etc/bind/named.conf.options:31: missing ';' before '}' 13-Nov-2019 10:45:13.493 /etc/bind/named.conf.local:8: missing ';' before '}'
On corrige des problèmes, fait un restart:
root@ima2a5-mol-ish:/etc/bind# service bind9 restart Stopping domain name service...: bind9rndc: connect failed: 127.0.0.1#953: connection refused. Starting domain name service...: bind9.
Avec l'outil https://dnsviz.net/d/ima2a5-mol-ish.site/dnssec/ on peut générer la chaîne ou https://dnssec-analyzer.verisignlabs.com/ima2a5-mol-ish.site
Vérfifier DNS : https://dnslookup.fr/ima2a5-mol-ish.site
Commandes utiles
host -t any ima2a5-mol-ish.site cat /var/log/daemon.log
Génération des clés
Pour obtenir un certificat SSl, on possède le processus sur Gandi.net.
Création des clés .key et .csr
Pour créer des clés on utilise OpenSSl, dans le répértoire /etc/apache2/certificates
openssl req -nodes -newkey rsa:2048 -sha256 -keyout ima2a5-mol-ish.key -out ima2a5-mol-ish.csr
Country Name (2 letter code) [AU]:FR State or Province Name (full name) [Some-State]:Nord Locality Name (eg, city) []:Lille Organization Name (eg, company) [Internet Widgits Pty Ltd]:Polytech Lille Organizational Unit Name (eg, section) []:IMA2A5 Common Name (e.g. server FQDN or YOUR name) []:ima2a5-mol-ish.site Email Address []:ekaterina.ishchuk@polytech-lille.fr Please enter the following 'extra' attributes to be sent with your certificate request A challenge password []:glopglop An optional company name []:
Il faudra attendre pour que les changements seront appliqués.
La clé .scr => qui a été transmis à Gandi pour créer SSL certificate
BEGIN CERTIFICATE REQUEST-----
MIIDDzCCAfcCAQAwgZoxCzAJBgNVBAYTAkZSMQ0wCwYDVQQIDAROb3JkMQ4wDAYD VQQHDAVMaWxsZTEXMBUGA1UECgwOUG9seXRlY2ggTGlsbGUxDDAKBgNVBAsMA0lN QTEcMBoGA1UEAwwTaW1hMmE1LW1vbC1pc2guc2l0ZTEnMCUGCSqGSIb3DQEJARYY aXNoY2h1a2F0ZXJpbmFAZ21haWwuY29tMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8A MIIBCgKCAQEA8gBDYek2H9/vYQUAh8OMq6K0In6BOd4HFTmnN2B5/h5SWU21U1vv FCn6KV1484KPVP4XxIUBBg7giboXdcUEWuohakbjY4BHdCwOinZLFCDAn96LYIuL 5Ifnwk2+B+10kAHTOgUMjICkWPnhcr/2f1e2DkikYck2gMhEHtPtnzWlOKEMfI0W IWBqnwjM8xnWlhbG3WlcuLjEi8K4wo8Qn8CGPWtO0qqTItxgGANzKp0+lZv2rdnV a9wup+LoDI7GGZ8JAMnADGTqV5pD7mpLCf1+lpAnVyunavtb8O69wOQQWileG0J0 E59GqL/sTGR+lgpqmczAyrYhzIAKYkcdVwIDAQABoC8wFQYJKoZIhvcNAQkCMQgM BkltYTJhNTAWBgkqhkiG9w0BCQcxCQwHcGFzZ2xvcDANBgkqhkiG9w0BAQsFAAOC AQEAggN6DG6c1Ok+t7xplEikeYZKkyl2N9QxuCx48XCTxrRic7STYYB2Q3Q4j792 6CSg4vAx+4A3HFSUvt4hnr0F5QzIIgT3ajWAIPPCJ0KrRpLGXYK0h8TvF19+5ja1 5tJXrrl1ThT87LYIFkAhtkLai2Ep/Z7ENDquRqSZaf79/wXWPbMUodaSZIaGQoxO U5sDvLTutdpd83lVWqbJ4Co1DpM3VD2z3ECe3dMZDcuTBCIfAXfVhcKzwsiBiyqJ C/1lhGN7CC75B6PCYPIspSQKIe5V1J8BhxXycYbh35/O65zofOIwrMZU9rDmb0qA bvFBGSD9A1TRtylxwMrOyTIHdw==
END CERTIFICATE REQUEST-----
la clé .key => clé privé et reste sur machine virtuel
Retour de Gandi et de notre cetificat (.pem) => Intermediate => pour le navigateur (pour vérfier l'hiérarchie)
-----BEGIN CERTIFICATE----- MIIF6TCCA9GgAwIBAgIQBeTcO5Q4qzuFl8umoZhQ4zANBgkqhkiG9w0BAQwFADCB iDELMAkGA1UEBhMCVVMxEzARBgNVBAgTCk5ldyBKZXJzZXkxFDASBgNVBAcTC0pl cnNleSBDaXR5MR4wHAYDVQQKExVUaGUgVVNFUlRSVVNUIE5ldHdvcmsxLjAsBgNV BAMTJVVTRVJUcnVzdCBSU0EgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkwHhcNMTQw OTEyMDAwMDAwWhcNMjQwOTExMjM1OTU5WjBfMQswCQYDVQQGEwJGUjEOMAwGA1UE CBMFUGFyaXMxDjAMBgNVBAcTBVBhcmlzMQ4wDAYDVQQKEwVHYW5kaTEgMB4GA1UE AxMXR2FuZGkgU3RhbmRhcmQgU1NMIENBIDIwggEiMA0GCSqGSIb3DQEBAQUAA4IB DwAwggEKAoIBAQCUBC2meZV0/9UAPPWu2JSxKXzAjwsLibmCg5duNyj1ohrP0pIL m6jTh5RzhBCf3DXLwi2SrCG5yzv8QMHBgyHwv/j2nPqcghDA0I5O5Q1MsJFckLSk QFEW2uSEEi0FXKEfFxkkUap66uEHG4aNAXLy59SDIzme4OFMH2sio7QQZrDtgpbX bmq08j+1QvzdirWrui0dOnWbMdw+naxb00ENbLAb9Tr1eeohovj0M1JLJC0epJmx bUi8uBL+cnB89/sCdfSN3tbawKAyGlLfOGsuRTg/PwSWAP2h9KK71RfWJ3wbWFmV XooS/ZyrgT5SKEhRhWvzkbKGPym1bgNi7tYFAgMBAAGjggF1MIIBcTAfBgNVHSME GDAWgBRTeb9aqitKz1SA4dibwJ3ysgNmyzAdBgNVHQ4EFgQUs5Cn2MmvTs1hPJ98 rV1/Qf1pMOowDgYDVR0PAQH/BAQDAgGGMBIGA1UdEwEB/wQIMAYBAf8CAQAwHQYD VR0lBBYwFAYIKwYBBQUHAwEGCCsGAQUFBwMCMCIGA1UdIAQbMBkwDQYLKwYBBAGy MQECAhowCAYGZ4EMAQIBMFAGA1UdHwRJMEcwRaBDoEGGP2h0dHA6Ly9jcmwudXNl cnRydXN0LmNvbS9VU0VSVHJ1c3RSU0FDZXJ0aWZpY2F0aW9uQXV0aG9yaXR5LmNy bDB2BggrBgEFBQcBAQRqMGgwPwYIKwYBBQUHMAKGM2h0dHA6Ly9jcnQudXNlcnRy dXN0LmNvbS9VU0VSVHJ1c3RSU0FBZGRUcnVzdENBLmNydDAlBggrBgEFBQcwAYYZ aHR0cDovL29jc3AudXNlcnRydXN0LmNvbTANBgkqhkiG9w0BAQwFAAOCAgEAWGf9 crJq13xhlhl+2UNG0SZ9yFP6ZrBrLafTqlb3OojQO3LJUP33WbKqaPWMcwO7lWUX zi8c3ZgTopHJ7qFAbjyY1lzzsiI8Le4bpOHeICQW8owRc5E69vrOJAKHypPstLbI FhfFcvwnQPYT/pOmnVHvPCvYd1ebjGU6NSU2t7WKY28HJ5OxYI2A25bUeo8tqxyI yW5+1mUfr13KFj8oRtygNeX56eXVlogMT8a3d2dIhCe2H7Bo26y/d7CQuKLJHDJd ArolQ4FCR7vY4Y8MDEZf7kYzawMUgtN+zY+vkNaOJH1AQrRqahfGlZfh8jjNp+20 J0CT33KpuMZmYzc4ZCIwojvxuch7yPspOqsactIGEk72gtQjbz7Dk+XYtsDe3CMW 1hMwt6CaDixVBgBwAc/qOR2A24j3pSC4W/0xJmmPLQphgzpHphNULB7j7UTKvGof KA5R2d4On3XNDgOVyvnFqSot/kGkoUeuDcL5OWYzSlvhhChZbH2UF3bkRYKtcCD9 0m9jqNf6oDP6N8v3smWe2lBvP+Sn845dWDKXcCMu5/3EFZucJ48y7RetWIExKREa m9T8bJUox04FB6b9HbwZ4ui3uRGKLXASUoWNjDNKD/yZkuBjcNqllEdjB+dYxzFf BT02Vf6Dsuimrdfp5gJ0iHRc2jTbkNJtUQoj1iM= -----END CERTIFICATE-----
Certificat .crt => certificat général et lié avec .key & .csr
-----BEGIN CERTIFICATE----- MIIGETCCBPmgAwIBAgIQQD7X5S+/F3WTOPPJuYTgrzANBgkqhkiG9w0BAQsFADBfMQswCQYDVQQG EwJGUjEOMAwGA1UECBMFUGFyaXMxDjAMBgNVBAcTBVBhcmlzMQ4wDAYDVQQKEwVHYW5kaTEgMB4G A1UEAxMXR2FuZGkgU3RhbmRhcmQgU1NMIENBIDIwHhcNMTkxMTEzMDAwMDAwWhcNMjAxMTEzMjM1 OTU5WjBeMSEwHwYDVQQLExhEb21haW4gQ29udHJvbCBWYWxpZGF0ZWQxGzAZBgNVBAsTEkdhbmRp IFN0YW5kYXJkIFNTTDEcMBoGA1UEAxMTaW1hMmE1LW1vbC1pc2guc2l0ZTCCASIwDQYJKoZIhvcN AQEBBQADggEPADCCAQoCggEBAPIAQ2HpNh/f72EFAIfDjKuitCJ+gTneBxU5pzdgef4eUllNtVNb 7xQp+ildePOCj1T+F8SFAQYO4Im6F3XFBFrqIWpG42OAR3QsDop2SxQgwJ/ei2CLi+SH58JNvgft dJAB0zoFDIyApFj54XK/9n9Xtg5IpGHJNoDIRB7T7Z81pTihDHyNFiFgap8IzPMZ1pYWxt1pXLi4 xIvCuMKPEJ/Ahj1rTtKqkyLcYBgDcyqdPpWb9q3Z1WvcLqfi6AyOxhmfCQDJwAxk6leaQ+5qSwn9 fpaQJ1crp2r7W/DuvcDkEFopXhtCdBOfRqi/7ExkfpYKapnMwMq2IcyACmJHHVcCAwEAAaOCAsgw ggLEMB8GA1UdIwQYMBaAFLOQp9jJr07NYTyffK1df0H9aTDqMB0GA1UdDgQWBBSRNlkNETdysrxo EOpmQ9eON0SLOTAOBgNVHQ8BAf8EBAMCBaAwDAYDVR0TAQH/BAIwADAdBgNVHSUEFjAUBggrBgEF BQcDAQYIKwYBBQUHAwIwSwYDVR0gBEQwQjA2BgsrBgEEAbIxAQICGjAnMCUGCCsGAQUFBwIBFhlo dHRwczovL2Nwcy51c2VydHJ1c3QuY29tMAgGBmeBDAECATBBBgNVHR8EOjA4MDagNKAyhjBodHRw Oi8vY3JsLnVzZXJ0cnVzdC5jb20vR2FuZGlTdGFuZGFyZFNTTENBMi5jcmwwcwYIKwYBBQUHAQEE ZzBlMDwGCCsGAQUFBzAChjBodHRwOi8vY3J0LnVzZXJ0cnVzdC5jb20vR2FuZGlTdGFuZGFyZFNT TENBMi5jcnQwJQYIKwYBBQUHMAGGGWh0dHA6Ly9vY3NwLnVzZXJ0cnVzdC5jb20wNwYDVR0RBDAw LoITaW1hMmE1LW1vbC1pc2guc2l0ZYIXd3d3LmltYTJhNS1tb2wtaXNoLnNpdGUwggEFBgorBgEE AdZ5AgQCBIH2BIHzAPEAdwAHt1wb5X1o//Gwxh0jFce65ld8V5S3au68YToaadOiHAAAAW5j5/l/ AAAEAwBIMEYCIQCwlI5VaJUfUAg3u9CT/Mlek42R/JDke2Yaf1UCqFyMBgIhANvdjPn/m9X6HKY/ spP0BlMWGM+tyxBtnbyEIrrJqjyzAHYAXqdz+d9WwOe1Nkh90EngMnqRmgyEoRIShBh1loFxRVgA AAFuY+f5cAAABAMARzBFAiBjkW/8HrXqbBGU0pzSUF9dVRKCQ9yBIVWvJBU73EagYwIhAM0XBb7k XkeMQneNP2GOR8be3DrmUY2pf9EgkaQhelQgMA0GCSqGSIb3DQEBCwUAA4IBAQA97gLu2Iw9QQ3+ q2TdKh4RqZ5GLtzxrOQV3xxRlnGqb81vxZFojVCrK02VQgNLX/2g3DhB/yN+YD3gliL4yz7apL+k NiX+SLHxFOqEVqFcK8k74fEoLxL4adNoKoUEzniupZR0wa7ZHROnuYc+ZQ5LEYgQNCzMpPFmVx4L OKcJnhmHjQJpIppz2RK1khGsVSXHL445o8vKXWUhsuGQXZKvd24G234jg0nEkARvHe6apD/nsYqT oBEbMOblH/nKvOhBhNkk1HqK15wh29gO5a2bawzwz8WLWi61WFs0HgKu6fvAugbIq88mkFg/JYoy LPxkPJg3syfr2tIHAjfYG2Xk -----END CERTIFICATE-----
Pour vérifier que les clés .key & .csr & .crt sont liés on doit calculer le modulus
openssl rsa -noout -modulus -in ima2a5-mol-ish.site.key openssl req -noout -modulus -in ima2a5-mol-ish.site.csr openssl x509 -noout -modulus -in ima2a5-mol-ish.site.crt
Paramétrage d'Apache2 avec la gestion du https
Le paramétrage d'Apache peut se faire à l'aide du wiki d'ubuntu ([configuration d'Apache https://doc.ubuntu-fr.org/apache2])
Serveur web http
On ajoute un fichier ima2a5-mol-ish de configuration dans le répertoire : /etc/apache2/sites-available
<VirtualHost *:80> ServerName ima2a5-mol-ish.site ServerAlias www.ima2a5-mol-ish.site DocumentRoot "/var/www/ima2a5-mol-ish" <Directory "/var/www/ima2a5-mol-ish"> Options +FollowSymLinks AllowOverride all Require all granted </Directory> ErrorLog /var/log/apache2/ima2a5-mol-ish.log CustomLog /var/log/apache2/ima2a5-mol-ish.log combined </VirtualHost>
Au prélable, on aura créé un dossier contenant la page html à afficher dans le répertoire /var/www/ima2a5-mol-ish
Serveur web https
On active le module SSL avec la commande :
a2enmod ssl service apache2 restart
Vérification de l'écoute de port 443
On s'assure que le port 443 est déjà à l'écoute par le serveur apache via la commande netstat -tanpu |grep "LISTEN" |grep "443"
tcp6 0 0 :::443 :::* LISTEN 1382/apache2
Puis on peut passer à la configuration de HTTPS d'apache
Configuration HTTPS
On configure VirtualHost Apache pour le port 443 dans le fichier "ima2a5-mol-ish.site-ssl.conf la configuration didiée au port sécurisé HTTPS:
<VirtualHost *:443>
ServerName ima2a5-mol-ish.site:443 DocumentRoot "/var/www/ima2a5-mol-ish" ServerAdmin ekaterina.ishchuk@polytech-lille.net <Directory "/var/www/ima2a5-mol-ish"> Options +FollowSymLinks AllowOverride all Require all granted </Directory> ErrorLog "/var/log/apache2/error.ima2a5-mol-ish.log" TransferLog "/var/log/apache2/error.ima2a5-mol-ish.transf.log" # Activation du SSL SSLEngine On # Activation de tous les protocoles sécurisés (TLS v1.0, v1.1 et TLS v1.2) touut en désactivant les protocoles non sécurisés (SSL v2, SSL v3)
SSLProtocol All -SSLv3 -SSLv2 # Le navigateur devra choisir une méthode de chiffrement en respectant l'ordre indiquée dans SSLCipherSuite SSLHonorCipherOrder on # Chemin vers le certificat SSL de votre nom de domaine SSLCertificateFile "/etc/apache2/certificates/ima2a5-mol-ish.csr" # Chemin vers la cle privée du certificat SSL de votre nom de domaine SSLCertificateKeyFile "/etc/apache2/certificates/ima2a5-mol-ish.key" </VirtualHost>
Maintenante on peut relancer le serveur avec:
a2dissite ima2a5-mol-ish.site a2ensite ima2a5-mol-ish.site service apache2 restart
Puis on vérifie la configuration appliqueé avec
root@ima2a5-mol-ish:/etc/apache2# apache2ctl -S VirtualHost configuration: *:80 is a NameVirtualHost default server ima2a5-mol-ish.site (/etc/apache2/sites-enabled/000-default.conf:1) port 80 namevhost ima2a5-mol-ish.site (/etc/apache2/sites-enabled/000-default.conf:1) port 80 namevhost ima2a5-mol-ish.site (/etc/apache2/sites-enabled/ima2a5-mol-ish.site.conf:1) alias www.ima2a5-mol-ish.site *:443 ima2a5-mol-ish.site (/etc/apache2/sites-enabled/ima2a5-mol-ish.site.conf:15) ServerRoot: "/etc/apache2" Main DocumentRoot: "/var/www/html" Main ErrorLog: "/var/log/apache2/error.log" Mutex ssl-stapling: using_defaults Mutex ssl-cache: using_defaults Mutex default: dir="/var/run/apache2/" mechanism=default Mutex watchdog-callback: using_defaults Mutex ssl-stapling-refresh: using_defaults PidFile: "/var/run/apache2/apache2.pid" Define: DUMP_VHOSTS Define: DUMP_RUN_CFG User: name="www-data" id=33 Group: name="www-data" id=33
Architecture réseau
L'architecture générale
Les réseaux virutels
Le routage de site (IPv4)
Le routage de site (IPv6)
Interconnexion avec Internet (IPv4)
Interconnexion avec Internet (IPV6)
Sécurisation du réseau
Test d'intrusion
eeePC Silure
Intrusion par changement d'adresse MAC
Cassage de clef WEP d'un point d'accès Wifi
Configuration de la carte réseau
Dans cette partie, il est question de cracker une clé WEP depuis l'ordinateur mis à disposition (Silure).
On commence par établir une connexion internet via une liaison filaire ainsi que la configuration de la clé Wifi.
-Se placer en super-administrateur et visualiser la liste des interfaces
su ip l
On trouve ainsi trois interfaces : lo, wlx40a5ef01370a (clé wifi) et enp4s0 (eth0)
-Modifier le fichier de configuration réseau
nano /etc/network/interfaces
-Modifier le fichier avec les lignes suivantes :
#Interface réseau filaire auto enp4s0 iface enp4s0 inet static address 172.26.145.105 netmask 255.255.255.0 gateway 172.145.255.254 #Interface Wifi auto wlx40a5ef01370a iface wlx40a5ef01370a inet dhcp
-Modifier le proxy avec celui de l'école :
export http_proxy=http://proxy.polytech-lille.fr:3128
-Eteindre et rallumer l'interface enp4s0 :
ifdown enp4s0 //Eteindre l'interface ifup enp4s0 //Allumer l'interface
- Vérifier la bonne mise à jour des interfaces
ip a
ainsi que le miroir est bien celui de la licence linux, ici debian
deb http://debian.polytech-lille.fr/debian/ buster main contrib none-free deb-src http://debian.polytech-lille.fr/debian buster main contrib non-free deb http://security.debian.org/debian-security buster/updates main contrib non-free deb-src http://security.debian.org/debian-security buster/updates main contrib non-free
- Effectuer la mise à jour et installer le paquetage aircrack
apt update apt-get install aircrack-ng
-Démarrer le logiciel aircrack en précisant l'interface :
airmon-ng start wlx40a5ef01370a
A partir de là, la carte Wifi passe en mode moniteur et prend l'intitulé wlan0mon.
Scanner le réseau wifi
A patir de là, nous pouvons scanner le réseau Wifi environnant avec airodump
airodump-ng --encrypt wep wlan0mon
On visualise les raspberry disponibles avec les informations suivantes :
- Le BSSID du réseau en hexadécimal
- La force du signal avec PWR
- Le channel avec CH
- Le type d'encryptage avec ENC
- Le nom du réseau avec ESSID
On choisit de cracker la cracotte09 en stockant les données générées dans le dossier WEP
mkdir WEP airodump-ng -w cracotte -c 8 --bssid 04:DA:D2:9C:50:58 wlan0mon
On obtient l'écran suivant indiquant le nombre de données collectées (#Data)
En parallèle de ça, on peut la phase de décryptage avec l'utilitaire aircrack-ng
aircrack-ng cracotte*.cap
Une fois le nombre d'IVs suffisant atteint, on obtient la clé WEP. Pour cracotte02, on a BA:BE:EE:EE:EE:EE:EE:EE:EE:EE:EE:44
Cassage de mot de passe WPA-PSK par force brute
Dans cette partie, il s'agit de casser le mot de passe d'un réseau Wifi sécurisé en WPA-PSK. On utilisera le même utilitaire aircrack-ng à la différence qu'il s'agira non plus de récuprérer des IVs mais un handshake.
Pour se faire, on commence par sonder le réseau en filtrant uniquement le protocole WPA
airodump-ng --encrypt wpa wlan0mon
On obtient la liste suivante.
Il faut ensuite générer un dictionnaire comportant l'ensemble des combinaisons possibles de la clé WPA.
crunch 8 8 0123456789 >> Dico.txt
Point particulier : Lors de la génération du dictionnaire, j'ai oublié d'inclure le chiffre 0 ce qui a allégé de 60% le fichier originel (900Mb pour les 10 chiifres contre 300Mb pour les 9 chiffres). Ce que je ne savais pas à ce moment là, c'est que la clé à trouver ne comporte pas de zéro. Cela a permis de passer de 3h de temps de calcul à 1 min et 18 secondes.
aircrack-ng psk-01.cap -w Dico.txt
On a pour résultat est le suivant :
La clé sur la kracotte02 est 12228888
Réalisations
Sécurisation de données
Dans cette partie, il est question de sécuriser des données à l'aide d'un système de virtualisation de stockage, ici RAID5.
L'intérêt est de pouvoir créer une redondance des systèmes de stockage (physique mais aussi virtuelle) afin de prévenir d'une défaillance de l'un d'entre eux.
Ici on choisit le protocole RAID5 (Redundant Array of Independent Disks) qui a pour particularité d'associer trois disques avec un système de codes de correction (les bits de parité) entre les données.
Point important : Le RAID5 ne fonctionne que pour une configuration d'au minimum 3 disques.
Il faut d'abord créer trois partitions sur le serveur corduan :
lvcreate -L1G -n ima2a5-rex4ever-disk1 virtual lvcreate -L1G -n ima2a5-rex4ever-disk2 virtual lvcreate -L1G -n ima2a5-rex4ever-disk3 virtual
Une fois effectué, on peut s'assurer de leur bonne création avec la ligne suivante :
lvdisplay
Ensuite formate les trois partitions créées.
mke2fs /dev/virtual/ima2a5-rex4ever-disk1 virtual mke2fs /dev/virtual/ima2a5-rex4ever-disk2 virtual mke2fs /dev/virtual/ima2a5-rex4ever-disk3 virtual
Maitenant, on va associer nos trois nouveaux disques virtuels à notre machine virtuelle. On va ainsi modifier le fichier de configuration de la VM sur cordouan dans le répertoire /etc/xen/ima2a5-mol-ish.cfg. Mais auparavant, on étaint la VM : xl shutdown ima2a5-mol-ish
disk= [ ...................... 'phy:/dev/virtual/ima2a5-rex4ever-disk1,xvdb3,w', 'phy:/dev/virtual/ima2a5-rex4ever-disk2,xvdb4,w', 'phy:/dev/virtual/ima2a5-rex4ever-disk3,xvdb5,w', ]
Puis on la redémarre :
xl create /etc/xen/ima2a5-mol-ish.cfg
On créé à présent le RAID5 avec l'utilitaire mdadm.
mdadm --create /dev/md0 --level=5 --raid-devices=3 /dev/xvdb3 /dev/xvdb4 /dev/xvdb5
Puis on effectue :
mdadm --monitor --daemonise /dev/md0
Et on formate on format le disque créé :
mkfs.ext4 /dev/md0
On définit notre disque dans la table des fichier système en modifiant le fichier /etc/fstab en ayant auparavant créé un dossier qui lui sera propre dans /media/, ici mkdir /media/raid
/dev/md0 /media/raid ext4 defaults 0 1
On peut vérifier le bon montage avec la commande df
Cryptage de données
Références utilisées :
How to encrypt USB drives with LUKS Partition chiffrée avec Cryptsetup Doc Ubuntu Commande : fdisk – suppression de partitions
Commandes utiles :
Description | Commande |
---|---|
Initialiser une partition à chiffrer | cryptsetup luksFormat -c aes -h sha256 /dev/sda1 |
Ouvrir un périphérique crypté | cryptsetup open --type luks /dev/sda1 <nom du systeme de fichier> |
Monter le périphérique | mount -t ext4 /dev/mapper/<nom du systeme de fichier> /mnt/<nom du point de montage> |
Ajouter une clé au conteneur précédent | cryptsetup luksAddKey /dev/sda1 |
Visualiser l'état d'un périphérique | cryptsetup luksDump /dev/sda1 |
Révoquer un slot | cryptsetup luksKillSlot /dev/sda1 <numero_de_slot> |
Dans cette partie, il est question de crypter des données contenues dans une clé USB
On installe d'abord les paquetages lvm2 et cryptsetup.
apt-get install lvm2 cryptsetup
Ensuite on recherche le périphérique et ses partitions (si existantes) avec la commande
lsblk
On utilise ensuite l'utilitaire fdisk sur le périphérique souhaité, ici /dev/sda
fdsik /dev/sda
A partir de là, on peut réaliser un certain nombre d'opération qui sont les suivantes :
Command (m for help): m
Help:
DOS (MBR) a toggle a bootable flag b edit nested BSD disklabel c toggle the dos compatibility flag
Generic d delete a partition l list known partition types n add a new partition p print the partition table t change a partition type v verify the partition table
Misc m print this menu u change display/entry units x extra functionality (experts only)
Save & Exit w write table to disk and exit q quit without saving changes
Create a new label g create a new empty GPT partition table G create a new empty SGI (IRIX) partition table o create a new empty DOS partition table s create a new empty Sun partition table
On s'assure de l'état des partitions avec la commande p
On supprime les partions avec la commande d
Puis on quitte et on sauvegarde les modification avec w
On créé une nouvelle partition avec le même utilitaire.
Command (m for help) : n Partition type p primary (0 primary, 0 extended, 4 free) e extended (container for logical partitions) Select (default p): p
Partition number (1-4, default 1): 1
On part sur une unique partition comme demandée dans le cahier des charges On prendra toutes les ressources physiques de la clé à savoir de 2048 à 15109515
First sector (2048-15109515, default 2048): 2048 Last sector, +sectors or +size{K,M,G,T,P} (2048-15109515): 15109515
Created a new partition 1 of type 'Linux' and of size 7.2 GiB
On sauvegarde pour finir.
Chiffrage du périphérique
On va maintenant chiffrer la clé à l'aide de encryptsetup.
cryptsetup luksFormat -c aes -h sha256 /dev/sda1
Cette commande va chiffrer la clé en AES (Advanced Encryption Standard) avec un hashage 256.
On ajoute un mot de passe habituel à la formation IMA2A.
Ouverture sécurisé du périphérique
On l'ouvre avec la commande actualisée suivante
cryptsetup open --type luks /dev/sda1 home
Création du système de fichiers
On créé un système de fichier sur la machine EXT4 file system :
mkfs.ext4 /dev/mapper/home
Montage du périphérique
Et ensuite on monte le périphérique avec la commande suivante, au prélable on aura créé un dossier dans /mnt/
mount -t ext4 /dev/mapper/home /mnt/cle_usb
Démontage physique du périphérique
Il faut d'abord démonter le périphérique
umount /mnt/cle_usb
Fermeture sécurisée du périphérique
cryptsetup close --type luks home
Phases de tests du chiffrage
Pour tester le chiffrage de la clé, on essaye sur un autre eeePC son ouverture. Cependant, il mettait impossible de l'ouvrir à cause d'un souci de version. La clé sur laquelle j'ai chiffré était en version 2.1.0 alors que mes collègues étaient en version 1.7.3. Du coup, leur machine ne voulait pas l'ouvrir à cause d'une version trop récente.
Sécurisation Wifi par clé WEP
Sécurisation Wifi par WPA-PSK
Sécurisation réseau filaire par EAP-TLS
Sécurisation Wifi par WPA2-EAP
Configuration sur Zabeth11
Dans cette partie, on dispose de deux bornes wifi a configurer, la premiére en E306 et l'autre en E304, en utilisera le server FreeRadius pour l'identification. Tout d'abord effectuons un purge:
apt purge brltty
Puis:
1- Acceder à la configuration de la borne wifi :
minicom -os
On change la configuration pour: Port = /dev/ttyUSB0, 9600 bauds et sans control de flux
2- Se mettre en mode previligié :
enable Password = "Cisco"
3- Se mettre en mode configuration :
config term
(On peut aussi verifier la configuration de la borne avec "show run")
4- Pour utiliser le system en 'authentication, authorization, and accounting', il faut cette commande :
aaa new-model
5- On crée un server radius pour un groupe :
radius-server host 193.48.57.162 auth-port 1812 acct-port 1813 key IMA2a5-mol-ish
6- On defini le server group :
aaa group server radius radius_IMA2a5-mol-ish
7- Puis, on associe à ce groupe de serveur le serveur créé sur la VM:
server 193.48.57.162 auth-port 1812 acct-port 1813
8- Ensuite, on defini le login et le groupe server par lequel l'utilisateur passera pour s'authentifier :
aaa authentication login eap_groupe6 group radius_IMA2a5-mol-ish
9- On arrive à la création des SSID, protégé par la méthode WPA2-EAP :
dot11 ssid SSID_IMA2a5-mol-ish vlan 3 authentication open eap eap_ima2a5-mol-ish authentication network-eap eap_ima2a5-mol-ish authentication key-management wpa
10- Configurer les vlans des groupes :
interface Dot11Radio0 encryption vlan 3 mode ciphers aes-ccm tkip ssid SSID_IMA2a5-mol-ish
11- Créer une sous-interface :
interface dot11Radio0.3 encapsulation dot1Q 3 bridge-group 3
12- Créer une sous-interface gigabite :
interface gigabite0.3 encapsulation dot1Q 3 bridge-group 3
13- Ajouter les SSID à l'interface Dot11Radio0
interface Dot11Radio0 dot11 ssid SSID_IMA2a5-mol-ish
14- rendre les SSID visibles :
interface Dot11Radio0 mbssid dot11 ssid SSID_IMA2a5-mol-ish mbssid guest-mode
exit exit write reload
15- Attribuer une ip à la borne
enable conf t int bvi1 ip address 10.60.0.100 255.255.255.0 exit exit
on peut maintenant pinger le routeur: ping 10.60.0.254
, mais le les VM
16-Il faut donc rajouter le gateway
enable conf t ip route 0.0.0.0 0.0.0.0 10.60.0.253 exit
maintenant on peut reussir à pinger les VM: ping 193.48.57.162
Installation du serveur FreeRadius
Effectué sur la machine virtuelle!
Installation de freeradius:
apt-get install freeradius
Dans le fichier /etc/freeradius/3.0/users
on ajoute la ligne:
eishchuk Cleartext-Password := "glopglop"
Dans le fichier /etc/freeradius/3.0/mods-enabled/eap
on modifie la ligne:
eap{ default_eap_type = peap }
Dans le fichier /etc/freeradius/3.0//mods-enabled/mschap
on décommente les lignes suivantes et modifie
use_mppe = yes require_encryption = yes require_strong = yes
et on ajoute la ligne suivante:
with_ntdomain_hack = yes
Dans le fichier /etc/freeradius/3.0/clients.conf
rajouter le borne comme un client qui se connectera sur le server radius:
client access-point { // nom attribué au client ipaddr = 10.60.0.100 //adresse ip de la borne secret = IMA2a5-mol-ish
Une fois toutes les confirations terminées, nous alons:
-arrêter le server Freeradius
service freeradius stop
-puis le relancer en mode debug afin de visualiser les reqûetes et logs
freeradius -X