Cheat Sheets
Ce livre contient l'ensemble de mes Cheat Sheet.
- Switchs & routeurs Cisco
- TCP/IP
- Windows serveur
- PhP
- Powershell
- Pen Test - Test d'intrusion
- ITIL - Information Technology Infrastructure Library
- Sublime Text
- Logiciels
- Screen
- Jinja2
- Windows
- Web
- git
- MongoDb
- Python
- VMware.PowerCLI - Dialoguer avec Vsphere via Powershell
- Réseau
- VIM
- hardware
Switchs & routeurs Cisco
Aide mémoire des commandes de commutateurs Cisco
Changer de mode :
switch> enable # Commande pour passer du Mode 1 au Mode 2.
switch# conf t # Commande pour passer du Mode 2 au Mode 3.
switch(config)# # Nous sommes désormais dans le mode 3
Afficher les VLANs :
switch# show vlan
Configurer un port :
switch(config)# interface fastEthernet 0/1
switch(config-if)# switchport access vlan 50
switch(config-if)# exit
switch(config)#
Configurer une plage de port :
switch(config)# interface range fastEthernet 0/1-24
switch(config-if)# switchport access vlan 30
switch(config-if-range)# exit
switch(config)#
Réinitialiser le switch :
switch# write erase
switch# reload
Configurer SSH :
SW_POD4_BOT(config)#username pod4-user password P@ssw0rd
SW_POD4_BOT(config)#ip domain-name gsb.local
SW_POD4_BOT(config)#crypto key generate rsa general-keys modulus 1024
SW_POD4_BOT(config)# line vty 0 4
SW_POD4_BOT(config-line)# transport input ssh
SW_POD4_BOT(config-line)# login local
SW_POD4_BOT(config-line)# exit
SW_POD4_BOT(config)#enable secret P@ssw0rd
Configurer le routage :
# VLAN SORTIE
switch(config)# interface vlan 400
switch(config-if)# ip address 172.31.192.1 255.255.192.0
switch(config-if)# no shutdown
switch(config-if)# exit
switch(config)#
# VLAN GSB
switch(config)# interface vlan 300
switch(config-if)# ip address 172.31.64.1 255.255.192.0
switch(config-if)# no shutdown
switch(config-if)# exit
switch(config)#
# VLAN SUPERVISION
switch(config)# interface vlan 200
switch(config-if)# ip address 172.31.128.1 255.255.192.0
switch(config-if)# no shutdown
switch(config-if)# exit
switch(config)#
# Route par défaut
switch(config)#ip route 0.0.0.0 0.0.0.0 172.31.192.2
Relai DHCP :
switch(config)# interface vlan 100
switch(config-if)# ip helper-address 172.31.64.10
switch(config-if)# ip helper-address 172.31.64.30
Activation du routage statique :
switch(config)#sdm prefer landbase-routing
switch(config-if)#switch#write
switch#reload
Activation du routage :
switch(config)#ip routing
Affichage du routage :
switch#show ip route
Activer le trunk :
SW_POD4_BOT#configure terminal
SW_POD4_BOT(config)#interface gigabitEthernet 0/2
SW_POD4_BOT(config-if)#switchport mode trunk
W_POD4_BOT(config-if)#switchport trunk allowed vlan none
SW_POD4_BOT(config-if)#switchport trunk allowed vlan add 400
SW_POD4_BOT(config-if)#switchport trunk allowed vlan add 300
SW_POD4_BOT(config-if)#switchport trunk allowed vlan add 200
SW_POD4_BOT(config-if)#switchport trunk allowed vlan add 100
ACL :
Ajouter :
RT_POD4_TOP(config)#ip access-list standard LPortailCaptif
RT_POD4_TOP(config-std-nacl)#deny 172.31.0.255
RT_POD4_TOP(config-std-nacl)#permit any
RT_POD4_TOP(config-std-nacl)#Interface GigabitEthernet 0/1.200
RT_POD4_TOP(config-subif)#ip access-group LPortailCaptif in
RT_POD4_TOP(config-subif)#end
#Les flux de l'IP 172.31.0.255/32 sont bloqués vers le réseau 172.31.128.0/18
Supprimer :
Router#show access-list
Extended IP access list 125
10 permit icmp 10.x.x.x 0.0.0.255 any
20 permit icmp 20.x.x.x 0.0.0.255 any
30 permit icmp 30.x.x.x 0.0.0.255 any
Router#conf t
Router(config)#ip access-list extended 125
Router(config-ext-nacl)#no permit icmp 10.x.x.x 0.0.0.255 any
Router#sh access-lists
Extended IP access list 125
20 permit icmp 20.x.x.x 0.0.0.255 any
30 permit icmp 30.x.x.x 0.0.0.255 any
Aide mémoire des commandes de Routeurs Cisco
QoS en fonction d'une interface source :
Déclaration de classes de flux :
MonRouteur#configure terminal
MonRouteur(config)#class-map match-all prio-sur-interface
MonRouteur(config-cmap)#match input-interface fa1/0
MonRouteur(config-cmap)#exit
MonRouteur(config)#
Déclaration d'une politique de QoS :
MonRouteur (config)#policy-map ma-politique-qos
MonRouteur (config-pmap)#class prio-sur-interface
MonRouteur (config-pmap-c)#set ip dscp cs7
MonRouteur (config-pmap-c)#exit
MonRouteur (config-pmap)#exit
MonRouteur (config)#
Application de la politique de QoS sur une interface :
MonRouteur(config)#interface fa0/1
MonRouteur(config-if)#service-policy output ma-politique-qos
MonRouteur(config-if)#exit
MonRouteur(config)#exit
QoS en fonction du protocole :
Déclaration d'une nouvelle classe de flux :
MonRouteur (config)#class-map match-all prio-sur-ftp
MonRouteur (config-cmap)#match protocol ftp
MonRouteur (config-cmap)#exit
MonRouteur (config)#
Élargissement de la politique de QoS :
MonRouteur (config)#policy-map ma-politique-qos
MonRouteur (config-pmap)#class prio-sur-ftp
MonRouteur(config-pmap-c)#bandwidth percent 10 // On réserve 10% de la bande passante pour ce flux
MonRouteur (config-pmap-c)#set ip dscp cs1
MonRouteur (config-pmap-c)#exit
MonRouteur (config-pmap)#exit
MonRouteur (config)#
Routage sur un routeur
# VLAN SORTIE
switch(config)# Interface GigabitEthernet 0/1.400
switch(config-if)# encapsulation dot1q 400
switch(config-if)# ip address 172.31.192.1 255.255.192.0
switch(config-if)# no shutdown
switch(config-if)# exit
switch(config)#
# VLAN SERVEURS
switch(config)# Interface GigabitEthernet 0/1.300
switch(config-if)# encapsulation dot1q 300
switch(config-if)# ip address 172.31.64.1 255.255.192.0
switch(config-if)# no shutdown
switch(config-if)# exit
switch(config)#
# VLAN SUPERVISION
switch(config)# Interface GigabitEthernet 0/1.200
switch(config-if)# encapsulation dot1q 200
switch(config-if)# ip address 172.31.128.1 255.255.192.0
switch(config-if)# no shutdown
switch(config-if)# exit
switch(config)#
# VLAN SERVICES UTILISATEURS
switch(config)# Interface GigabitEthernet 0/1.100
switch(config-if)# encapsulation dot1q 100
switch(config-if)# ip address 172.31.0.1 255.255.192.0
switch(config-if)# no shutdown
switch(config-if)# ip helper-address 172.31.64.10
switch(config-if)# ip helper-address 172.31.64.30
switch(config-if)# exit
switch(config)#
# Route par défaut
interface GigabitEthernet 0/1
switch(config)#ip route 0.0.0.0 0.0.0.0 172.31.192.2
switch(config)#no shutdown
Routage groupé (redondance de routeurs) :
J'ai deux routeurs :
RT 1 - 192.168.0.1
RT 2 - 192.168.0.2
Et nous allons créé une interface virtuelle qui permettra la redondance :
SW 1 :
// Activation de RIP
SW-1(config)#router rip
SW-1(config-router)#version 2
// Définition de tous les réseaux auquel le routeur est connectés
SW-1(config-router)#network 192.168.0.0
SW-1(config-router)#network 172.16.0.0
// Maximum de Sauts autorisés (n)
SW-1(config-router)default-metric n
// Réglage des conteurs de retenue
// timers basic update invalid holddown flush
// update = envoie en seconde des mises à jours de routage ;
// invalid = temps pour être invalide ;
// holddown = l'intervalle pendant lequel les informations de routage sur les meilleurs chemins sont supprimées ;
// flush = le délai écoulé avant que la route ne soit retirée de la table de routage.
//
//
SW-1(config-router)#timers basic 30 180 180 260
// Propagation de la route par défaut
SW-1(config-router)#default-information originate
// Désactivation de l'auto agrégation
SW-1(config-router)#no auto-summary
// Luter contre les boucles réseau
SW-1(config-router)#ip split-horizon
// Route par défaut
SW-1(config-router)#ip default-network W.X.Y.Z
// Mise en oeuvre du HSRP
// Où 1 est le numéro du groupe HSRP et l'ip est l'adresse réseau virtuelle du groupe
SW-1(config-router)#standby 1 ip 192.168.0.254
SW 2 :
// Activation de RIP
SW-2(config)#router rip
SW-2(config-router)#version 2
// Définition de tous les réseaux auquel le routeur est connectés
SW-2(config-router)#network 192.168.0.0
SW-2(config-router)#network 172.16.0.0
// Maximum de Sauts autorisés (n)
SW-2(config-router)default-metric n
// Réglage des conteurs de retenue
// timers basic update invalid holddown flush
// update = envoie en seconde des mises à jours de routage ;
// invalid = temps pour être invalide ;
// holddown = l'intervalle pendant lequel les informations de routage sur les meilleurs chemins sont supprimées ;
// flush = le délai écoulé avant que la route ne soit retirée de la table de routage.
//
//
SW-2(config-router)#timers basic 30 180 180 260
// Propagation de la route par défaut
SW-2(config-router)#default-information originate
// Désactivation de l'auto agrégation
SW-2(config-router)#no auto-summary
// Luter contre les boucles réseau
SW-2(config-router)#ip split-horizon
// Route par défaut
SW-2(config-router)#ip default-network W.X.Y.Z
// Mise en oeuvre du HSRP
// Où 1 est le numéro du groupe HSRP et l'ip est l'adresse réseau virtuelle du groupe
SW-2(config-router)#standby 1 ip 192.168.0.254
SW-2(config-router)#standby 1 priority 120
SW-2(config-router)#standby 1 preempt
La tolérance de panne a bien été installée !
NTP Maitre :
SW-2(config-router)#ntp master 1
NTP Esclaves :
SW-2(config-router)#ntp server 192.168.1.1
NAT :
// Création d'une ACL
routeur1(config)#ip access-list standard NAT_INTERNET_VLAN2
routeur1(config-std-nacl)#permit 192.168.2.0 0.0.0.255
routeur1(config-std-nacl)#exit
// NAT Sortant
routeur1(config)#int gi0/1
routeur1(config-if)#ip nat outside
routeur1(config-if)#exit
// NAT Entrant
routeur1(config)#int gigabitEthernet 0/0.2
routeur1(config-subif)#ip nat inside
routeur1(config-if)#exit
// Affectation
routeur1(config)#ip nat inside source list NAT_INTERNET_VLAN2 interface GigabitEthernet0/1 overload
// Porte de sortie
routeur1(config)#ip nat inside source static 192.168.2.1 223.0.0.1
// Redirection de port
routeur1(config)#ip nat inside source static tcp 192.168.2.1 80 223.0.0.1 80
TCP/IP
| CIDR | Adresses | Machines | Masques |
| /30 | 4 | 2 | 255.255.255.252 |
| /29 | 8 | 6 | 255.255.255.248 |
| /28 | 16 | 14 | 255.255.255.240 |
| /27 | 32 | 30 | 255.255.255.224 |
| /26 | 64 | 62 | 255.255.255.192 |
| /25 | 128 | 126 | 255.255.255.128 |
| /24 | 256 | 254 | 255.255.255.0 |
| /23 | 512 | 510 | 255.255.254.0 |
| /22 | 1 024 | 1 022 | 255.255.252.0 |
| /21 | 2 048 | 2 046 | 255.255.248.0 |
| /20 | 4 096 | 4 094 | 255.255.240.0 |
| /19 | 8 192 | 8 190 | 255.255.224.0 |
| /18 | 16 384 | 16 382 | 255.255.192.0 |
| /17 | 32 768 | 32 766 | 255.255.128.0 |
| /16 | 65 536 | 65 534 | 255.255.0.0 |
| /15 | 131 072 | 131 070 | 255.254.0.0 |
| /14 | 262 144 | 262 142 | 255.252.0.0 |
| /13 | 524 288 | 524 286 | 255.248.0.0 |
| /12 | 1 048 576 | 1 048 574 | 255.240.0.0 |
| /11 | 2 097 152 | 2 097 150 | 255.224.0.0 |
| /10 | 4 194 304 | 4 194 302 | 255.192.0.0 |
| /9 | 8 388 608 | 8 388 606 | 255.128.0.0 |
| /8 | 16 777 216 | 16 777 214 | 255.0.0.0 |
| /7 | 33 554 432 | 33 554 430 | 254.0.0.0 |
| /6 | 67 108 864 | 67 108 862 | 252.0.0.0 |
| /5 | 134 217 728 | 134 217 726 | 248.0.0.0 |
| /4 | 268 435 456 | 268 435 454 | 240.0.0.0 |
| /3 | 536 870 912 | 536 870 910 | 224.0.0.0 |
| /2 | 1 073 741 824 | 1 073 741 822 | 192.0.0.0 |
| /1 | 2 147 483 648 | 2 147 483 646 | 128.0.0.0 |
| /0 | 4 294 967 296 | 4 294 967 294 | 0.0.0.0 |
IEEE 802 est un comité de l'IEEE (Institute of Electrical and Electronics Engineers) qui décrit une famille de normes relatives aux réseaux locaux (LAN) :
- 802.11 -> WIFI
- 802.1q -> VLAN
- 802.1p -> QOS ( FAIBLE | 12034567 | ÉLEVÉE )
- 802.ad -> Agrégation de liens
FLAGS :
SEW --> Problème de flux FIREWALL a reconfig
Windows serveur
Afficher les rôles FSMO :
netdom query fsmo
GPO :
Intitulé |
Emplacement |
| Forcer le changement de mot de passe tous les X jours | Computer Configuration > Policies > Windows Settings > Security Settings > Local Policies > Security Options |
| Désactiver les ports USB | Configuration Ordinateur > Stratégies > Modèles d’Administration > Système > Accès au stockage amovible > Toutes les classes de stockage amovible : refuser tous les accès |
| Ajouter un lecteur réseau | Configuration Utilisateur > Préférences > Paramètres Windows > Mappages de lecteurs |
| Désactiver le CMD | Configuration Utilisateur > Stratégies > Modèles d'administration > Système > Désactiver l'accès à l'invite de commandes |
| Désactiver le micro |
Configuration Ordinateur > Stratégies > Modèles d’administration > Composants Windows > Confidentialité de l’application > Permettre aux applications Windows d’accéder au micro |
| Désactiver la caméra | Configuration Ordinateur > Stratégies > Modèles d’administration > Composants Windows > Confidentialité de l’application > Permettre aux applications Windows d’accéder à l’appareil photo |
| Interdire REGEDIT |
Configuration Utilisateur > Stratégies > Modèle d'administration > Système > Empêche l'accès aux outils de modifications du Registre |
| Interdire la modification du serveur Proxy du navigateur | Configuration Utilisateur > Stratégies > Modèle d'administration > Composants Windows > Internet Explorer > Empêcher la modification des paramètres de proxy |
| Profil Itinérant | Configuration Utilisateur > Stratégies > Paramètres Windows > Redirections de dossier |
| Suppression du menu exécuter dans le menu démarré | Configuration Utilisateur > Modèles d'administration > Menu démarrer et barre des tâches > Supprimer le menu exécuter du menu démarrer. |
| Empêcher l'accès au panneau de configuration | Configuration Utilisateur > Modèles d'administration > Panneau de configuration > Interdire l'accès au Panneau de configuration et l'application Paramètres du PC. |
| Désactivation de la modification des paramètres de connexion | Configuration Utilisateur > Modèles d'administration > Réseau > Interdire la configuration avancée de TCP/IP |
Profil itinérant :
Créer un partage de fichier : \\SERVER\home$
Créer la GPO "Profil Itinérant", et rediriger par exemple le dossier "Documents" des utilisateurs :
Modifier l'utilisateur : (Onglet Profil)
WDS - Windows Deployment Services :
On doit ajouter une image d'installation ;
- dans le fichier iso chercher : sources/install.wim
On doit ajouter une image de démarrage :
- dans le fichier iso chercher : sources/boot.wim
Sur le serveur DHCP, on doit activé l'option d'étendue 060 PXECLIENT :
Très important ! Le serveur ne fonctionnera pas tant que l'on aura pas démarré !
Le client :
Et voilà !
Serveur Multipoint :
Les rôles et services de rôle suivants seront installés sur votre serveur :
-
Service Broker pour les connexions Bureau à distance.
-
Accès web des services Bureau à distance.
-
Hôte de session Bureau à distance.
Puis :
On peut maintenant tenter d'accéder à :
https://localhost/rdWeb
IIS :
Installer la Web Platform Installer : https://www.microsoft.com/web/downloads/platform.aspx
On va pouvoir maintenant installer PHP !
Après avoir cliqué sur "Ajouter" vous aurez PHP d'activé !
Gestion des services
Trouver le PID d'un service :
sc queryex "nom_du_service"
Stoper un PID :
PS C:\> Stop-Process -Id 3952
Restauration d'un instantané d'une partition C
Ne peut pas être réalisée à chaud
- Redémarrer en mode rescue puis lancer l'invite de commande ;
- Lister les clichés instantanés disponibles : vssadmin list shadows ;
- Monter le cliché sur le disque (bien faire attention a avoir le "\" à la fin) : ex. mklink /d c:\shadowrestore \\?\GLOBALROOT\Device\HarddiskVolumeShadowCopy1744\
- Sauvegarder le contenu actuel du C: sur le D: : robocopy C:\ D:\windows.old\ /mir /copyall /dcopy:T ;
- Sauvegarder le contenu du cliché sur le D: : robocopy C:\shadowrestore D:\windows.snap\ /mir /copyall /dcopy:T ;
- Démonter le cliché : rmdir c:\shadowrestore ;
- Restaurer les fichiers depuis le cliché : robocopy D:\windows.snap\ C:\ /mir /copyall /dcopy:T
Voici le lien vers le post que nous avons utilisé en partie : https://www.reddit.com/r/sysadmin/comments/w7fwgp/restore_shadow_copies_from_cli/
PhP
Changer le nombre de Mo max pour l'upload :
Editer le fichier php.ini
nano /etc/php/7.4/apache2/php.ini
Et changer les valeurs suivantes :
post_max_size = 3000M
upload_max_filesize = 3000M
Puis redémarrer apache :
service apache2 restart
Powershell
Généralités :
Savoir le répertoire courant :
Get-Location
Afficher le contenue d'un fichier :
Get-ChildItem
Créer un répertoire :
New-Item -Name "SUPERDOSSIER" -ItemType Directory
Créer un répertoire avec déclaration de chemin :
New-Item -Path "C:\SUPERDOSSIER" -ItemType Directory
Créer un fichier :
New-Item -Name "fichier.txt" -ItemType File
Créer un fichier avec des données à l'intérieur :
New-Item -Name "utilisateurs.txt" -ItemType File -Value "Mon super Contenu !"
Copier un fichier vers un autre répertoire :
Copy-Item -Path utilisateurs.txt -Destination COMPTA
Déplacer un fichier :
Move-Item -Path C:\Users\Administrateur\utilisateurs.txt -Destination C:\Users\Administrateur\COMPTA
Renommer un fichier :
Rename-Item -Path C:\Users\Administrateur\COMPTA\utilisateurs.txt -NewName C:\Users\Administrateur\COMPTA\utilisateurs_save.txt
Supprimer un dossier :
Remove-Item C:\COMPTA\
Créer un partage SMB :
New-SmbShare -Name Compta -Path C:\COMPTA -FullAccess Administrateurs
Définir des droits sur le partage :
Grant-SmbShareAccess -Name Compta -AccountName "Tout le Monde" -AccessRight Read
Les différents types de droits :
- Full : Controle total
- Change : Modification
- Read : Lecture
- Custom : Personnalisé
Afficher les droits de partage :
Get-SmbShareAccess -Name Compta
Afficher les droits de sécurité :
Get-Acl C:\COMPTA | fl
Autorisation d'exécution d'un scripte PowerShell sur le système :
Get-ExecutionPolicy
Changer l'autorisation :
Set-ExecutionPolicy Unrestricted
Créer un objet :
$vm_list=@( @{
Name = "VM1"
snapshot_fresh = 'VM1-fresh'
snapshot_v10 = 'VM1-v10'
snapshot_v11 = 'VM1-v11'
},
@{
Name = "VM2"
snapshot_fresh = 'VM2-fresh'
snapshot_v10 = 'VM2-v10'
snapshot_v11 = 'VM2-v11'
},
@{
Name = "VM3"
snapshot_fresh = 'VM3-fresh'
snapshot_v10 = 'VM3-v10'
snapshot_v11 = 'VM3-v11'
},
@{
Name = "VM4"
snapshot_fresh = 'VM4-fresh'
snapshot_v10 = 'VM4-v10'
snapshot_v11 = 'VM4-v11'
},
)
foreach ($vm in $vm_list)
{
Write-Host $vm.Name
Write-Host $vm.snapshot_v11
}
PowerShell Pour Active Directory
Créer un utilisateur :
New-ADUser -Name "PICHARD Nicolas" -SamAccountName pichard -UserPrincipalName "pichard@mondomaine.fr" -AccountPassword (ConvertTo-SecureString -AsPlainText Pwd2019 -Force) -PasswordNeverExpires $true -CannotChangePassword $true
Activation du compte :
Enable-ADAccount pichard
Exemple d'un scripte permettant d'automatiser la création d'un utilisateur :
$nom = Read-Host "Merci de Rentrer le Nom et le Prénom de l’Utilisateur à Créer"
$login = Read-Host "Merci de Rentrer le Login de l’Utilisateur à Créer"
$mdp = Read-Host "Merci de Rentrer le Mot de Passe de l’Utilisateur à Créer"
New-ADUser -Name $nom -SamAccountName $login -UserPrincipalName $login@lavachette.com -AccountPassword (ConvertTo-SecureString -AsPlainText $mdp -Force) -PasswordNeverExpires $true -CannotChangePassword $true -Enabled $true
Source : Planifiez vos tâches avec des scripts PowerShell sur Windows Server par Open Classroom
Afficher les utilisateurs créés :
Get-ADUser -Filter * | select Name, samAccountName, UserPrincipalName
Scripte permettant d'automatiser la création d'un groupe et de ses utilisateurs :
$groupe = Read-Host "Merci de Rentrer le Nom du Groupe à Créer"
New-ADGroup $groupe -GroupScope Global
[int] $nombre = Read-Host "Merci de Rentrer le Nombre d’Utilisateurs à Insérer dans le Groupe"
for ($i=1; $i -le $nombre; $i++)
{
$nom = Read-Host "Merci de Rentrer le Nom de l’Utilisateur à Insérer dans le Groupe $groupe"
Add-ADGroupMember -identity $groupe -Members $nom
Write-Host "L’Utilisateur $nom a Bien Eté Inséré dans le Groupe $groupe."
}
Source : Planifiez vos tâches avec des scripts PowerShell sur Windows Server par Open Classroom
Afficher les utilisateurs d'un groupe :
Get-ADGroupMember COMPTA
Conversion de machine virtuelles :
PS C:\WINDOWS\system32> Import-Module 'C:\Program Files\Microsoft Virtual Machine Converter\MvmcCmdlet.psd1'
PS C:\WINDOWS\system32> ConvertTo-MvmcVirtualHardDisk -SourceLiteralPath E:\VM\Metasploitable2-Linux\Metasploitable.vmdk -VhdType DynamicHardDisk -VhdFormat vhdx -destination E:\VM\Metasploitable2-Linux\
Installer des applications :
Openssh
Add-WindowsCapability -Online -Name OpenSSH.Client*
Pen Test - Test d'intrusion
Le Pen Test :
Le test d'intrusion peut être employé pour différentes cibles :
- Une adresse IP
- Une application
- Un serveur Web
- Un réseau complet
Les objectifs d'un test d'intrusion sont :
- Identifier les vulnérabilités de son système d'information ou de son application
- Évaluer le degré de risque de chaque faille identifiée
- Proposer des correctifs de manière priorisée
Le test d'intrusion permet donc de qualifier :
-
La sévérité de la vulnérabilité
-
La complexité de la correction
-
L'ordre de priorité qu’il faut donner aux corrections
Quand faire un test d'intrusion :
-
Durant la conception du projet
- Pendant la phase d'utilisation du composant ou du réseau (à intervalle régulier)
- Suite à une cyberattaque
Deux type de test :
- Interne
- Test d'intrusion depuis le réseau local
- Externe
- Test d'intrusion depuis internet
Il existe trois types de test :
- Le test en boite noir
- Le testeur n'as aucune information sur le réseau au début du test, il ne connait pas non-plus de mots de passes ou d'identifiants. Il va donc rechercher des informations sur l'entreprise en général pour l'aider à trouver des vulnérabilités.
- Le test en boite grise
- Le testeur dispose uniquement d'un couple identifiant/mot de passe que l'entreprise cible lui a fourni avant de démarrer la phase de test.
- L'objectif de ce test c'est de se mettre dans la peau d'un utilisateur "normal" au sein de l'entreprise cible.
- Le test en boite blanche
- Le testeur dispose de nombreuses informations comme des schémas d'infrastructure, le code source de l'application. La recherche de faille est donc très approfondie et très compète.
Les systèmes d'exploitations pour le Pen Test :
- Linux
- Kali Linux (regroupe l'ensemble des outils nécessaires pour procéder au test de sécurité d'un système d'information)
- Nmap (détecte les ports ouverts)
- Wireshark (analyse les trames réseau)
- Metasploit (fourni des informations sur les vulnérabilités des systèmes d'information et qui les exploites)
- Burp suite (sécurisation ou test d'intrusion des applications web)
- Kali Linux (regroupe l'ensemble des outils nécessaires pour procéder au test de sécurité d'un système d'information)
- Windows
- De nombreux logiciels similaires à ceux évoqués ci-dessus sont disponible sur Windows.
- Android
- Des outils très performants sont disponibles sur Android
- zANTI
- FaceNiff
- AndroRAT
- cSploit
- Des outils très performants sont disponibles sur Android
Préparer le Pen Test :
Premièrement, il faut définir un périmètre de test :
- Un Serveur
- Une partie d'un réseau
- Une IP publique
- Plusieurs IP publiques
- L'ensemble du réseau Interne
Avant de faire quoi que ce soit, il faut s'assurer de contracter avec l'entreprise cible pour ne pas avoir de problèmes juridiques ! Le document se nomme "mandat d'autorisation de test de pénétration"
Différentes attaques :
- DOS
- DDOS
- WEB
- Utilisation de failles connues
- Technique de l'homme du milieu
- L'utilisation de la technique de l'homme du milieu ou man-in-the-middle attack. Cette attaque consiste à se positionner au milieu dans la communication entre un client et un serveur pour intercepter et modifier les paquets échangés entre les deux machines. Le logiciel « Burp suite » permet de le faire.
- Forge de paquets HTTP
- Cette technique consiste à écrire manuellement des requêtes HTTP, qui vont ensuite être envoyées au serveur. Ces requêtes seront non standards, avec des malformations qui peuvent générer des plantages sur le serveur Web. Le logiciel Wfetch intégré à Microsoft IIS permet de le faire.
- Intégration de paramètres
- Ici, nous pouvons ajouter ou modifier des paramètres dans les chemins HTTP qui seront mal interprétés par le serveur et qui permettront de l'exploiter. Aucun logiciel n'est nécessaire car c'est faisable manuellement.
- Cross-site scripting ou XSS
- Le cross-site scripting ou XSS. C’est un type de faille de sécurité de sites Web permettant d'injecter du contenu dans une page, provoquant ainsi des actions sur les navigateurs Web visitant la page. Par exemple, sur un serveur vulnérable, dans une zone où les utilisateurs peuvent poster un commentaire, si l'on rajoute la suite de caractères <script>alert("This Website has been hacked")</script> au prochain affichage de la page, un script s’exécutera à la place d’afficher le commentaire.
- Injection SQL
- Outil sur Kali : BSQL
- Ingénierie Sociale
- Création de site clone via Kali : social engineering toolkit
Test des réseaux sans-fils :
- Scan : insider, wifi analyser, Lnissid.
- Injection de trafique : AiroDump, Rmon
- Écoute et enregistrement du trafique : WireShark
- Décryptage de clés : Cain&abel, Aircrack-ng
Équipements de protection :
- Pare-feu
- IDS
- IPS
- Honeypot = Simule des machines d'un réseau informatique (c'est un leurre)
- KFsensor
- Snort
Outils pour contourner ces protections :
- Nmap et Hping3 (gestion de fragmentation d'une attaque pour ne pas qu'elle soit identifiée)
- HTTP Host (côté serveur) et HTTP Port (côté client) = Établie un tunnel HTTP
- DNS2TCP = Établie un tunnel DNS
- Métasploit = Optenir et maintenir l'accès à distance sur une machine à l'intérieur d'un réseau cible
Partie Pratique :
Utiliser NMAP pour scanner un réseau :
nmap -sn 10.0.2.0 /24
Utiliser NESSUS pour scanner un réseau :
dpkg -i PAQUET.deb
Puis nous démarrons le service :
/etc/init.d/nessusd start
Définition du démarrage automatique :
update-rc.d nessusd enable
Puis on met à jour metasploit :
msfconsole
aptupdate;aptinstallmetasploit-framework
Puis, nous accédons au site https://kali:8834 :
On constate, après le scan, que le système n'a pas trouvé de vulnérabilités :
Si il y avait eu des vulnérabilités, on aurait été informés sur la façon de résoudre les problèmes de sécurité.
Utiliser The social engineering toolkit :
Pour lancer cette applications nous allons dans l'outils recherche, 13 - Social Enginering Tools.
En suite, nous devons accepter les termes du contrat :
Puis nous allons sélectionner l'option une :
Et puis, l'option 2 :
Puis, l'option 3 :
Et enfin l'option 2 :
Et puis on spécifie l'url à cloner :
Pour ne pas avoir de problème j'ai choisi un site qui m'appartient personnellement !
Résultat :
Utiliser MSFConsole pour accéder au Shell via une vulnérabilité :
service postgresql start
msfconsole
On recherche un exploit :
search distcc
On utilise l'exploit :
On va ensuite lister les payloads :
show payloads
On choisie un payload :
On affiche les paramètres :
Je définie l'adresse cible :
Dans cette exemple je me choisi moi-même !
Lancement de l'exploit :
exploit
Rapport de Pen Test :
Critères d'évaluations :
On peux chercher les détailles d'une faille via les numéros CVEC (numéro attribué à chaque faille rendue publique).
Le rapport du Pentest peut-être adressé au :
- DSI
- Responsable système et réseau
- Équipes d'informatiques
- Prestataires
Le rapport doit donc être rédigé de telle façon à ce qu'une personne ne possédant pas de capacité techniques poussée comprenne son contenu !
Structure :
- Format = PDF 10 pages
- Document confidentiel
- Rédigé en français ou en anglais
- Sommaire
- Contexte et périmètre
- Conditions du test internet / externe
- Méthodologie de test
- Axes d'évaluations
- Résultats
- Synthèses
Présenté le travail réalisé :
Il est préférable de faire une réunion avec le client pour revoir avec lui le rapport et les vulnérabilités trouvées. Il faut faire attention à la forme de la présentation. Il est important que le client comprenne vos travaux pour apporter une correction adéquate.
ITIL - Information Technology Infrastructure Library
Définition :
ITIL signifie Information Technology Infrastructure Library. En français, on traduirait par bibliothèque pour l'infrastructure des technologies de l'information. C'est un ensemble de bonnes pratiques permettant d'assurer une bonne gestion du SI d'une entreprise.
Un incident :
Un incident est isolé et ne nécessite pas la résolution d'un problème plus global. La gestion des incidents permet de restaurer le fonctionnement normal du service, souvent par un contournement, pas toujours par une résolution définitive.
Incident = Situation bloquante pour l'utilisateur
Un problème :
Lorsqu'un incident se répète, ou lorsque plusieurs incidents résultent de la même cause supposée, il s'agit d'un problème. La gestion des problèmes, elle, vise à traiter la cause de l’incident pour que celui-ci ne se reproduise plus.
Problème = Cause inconnue d'un incident significatif ou la répétition d'un incident
Les différents types de tickets :
- Tickets d'incident
- Tickets de problème
- Tickets de changement
Selon ITIL :
- la valeur d’un service est fonction de :
-
son utilité : le service est adapté aux besoins du client ;
-
sa garantie selon 4 axes : assurer la disponibilité, la performance, la sécurité de l’information et la continuité de service.
-
- Les bénéfices d’une approche orientée services sont multiples :
-
la fourniture de services informatiques est plus orientée vers le client, sur les objectifs de l’entreprise, en soutien du business en augmentant la productivité ;
-
l’amélioration de l’efficacité du SI et la réduction des coûts associés ;
-
l’augmentation de la qualité de service et de la satisfaction des utilisateurs (employés et clients/partenaires) ;
-
l’amélioration des relations DSI – utilisateurs grâce aux accords relatifs à la qualité des services ;
-
la réduction de l’impact des incidents sur les activités métiers, augmentant ainsi leur performance.
-
La gestion des niveaux de service :
-
le SLA (Service Level Agreement) ou accord de niveaux de service : accord défini entre l’utilisateur (client du service) et la DSI sur le niveau de qualité de service offert ;
-
le OLA (Operational Level Agreement) ou accord sur les niveaux opérationnels : accord passé entre les différents pôles de la DSI ;
-
l'UC (Underpinning Contract) ou contrat de sous-traitance : contrat entre la DSI et un fournisseur externe.
Le centre de services :
4 grandes missions sont assurées par le centre de services :
1. Prendre en compte toutes les sollicitations des utilisateurs :
-
accueillir, recevoir et enregistrer l’ensemble des appels, requêtes, réclamations, demandes, incidents liés aux services fournis par la DSI ;
-
suivre de bout en bout les demandes et incidents ;
-
tracer et suivre toutes les interventions dans l'outil GLPI.
2. Assurer le bon traitement des sollicitations :
-
résoudre les incidents conformément aux SLA, en facilitant le retour à un service opérationnel normal en accord avec les conventions de niveau de service ;
-
dépanner les utilisateurs soit en direct ou en différé, soit en escaladant vers d’autres équipes plus qualifiées, c’est-à-dire en leur confiant la résolution de l’incident ;
-
traiter les demandes ou les faire suivre aux équipes qui gèrent les demandes.
3. Prendre en charge la communication avec les utilisateurs :
-
informer les utilisateurs sur l’état de leur sollicitation : donner de la visibilité sur le suivi de l’avancement du traitement de leur demande, de leur incident ;
-
assurer l’interface entre les opérationnels et la DSI via une communication apaisée, sereine et efficace ;
-
produire et diffuser des métriques de qualité de service : niveau d’activité (nombre de tickets sur une période…), satisfaction perçue, délais réels de résolution… ;
-
permettre d’améliorer l’image de la DSI auprès des utilisateurs.
Le centre d’appels (call center) : compétences techniques limitées et compétences métiers inexistantes. S’en tient à la prise d’appels, à l’enregistrement et à l’affectation des demandes aux personnes compétentes (délai de traitement long !).
Le centre de support (help desk) : ne traite (gestion, coordination et résolution) que les incidents, avec un niveau technique peu approfondi, généralement peu communicant, peu proche des métiers. Traite inlassablement le même dysfonctionnement qui se reproduit sans cesse.
Le centre de services (service desk) englobe plus de missions que le help desk ou le call center :
-
approche client : extension à toutes les demandes. Restreindre les missions du centre de services uniquement à la restauration du service normal aux utilisateurs dès que possible est trop limité ;
-
point de vue de l’utilisateur et connaissance du métier ;
-
communicant ;
-
prend la hauteur de vue nécessaire pour lancer la résolution définitive des incidents récurrents.
Un problème s’identifie par :
-
un incident de cause inconnue : la cause définitive n'a pas été déterminée, donc l’incident est susceptible de se reproduire ;
-
un incident récurrent dans le temps (répétitivité de l’incident) ;
-
un incident qui entraîne en cascade d’autres incidents ;
-
un incident qui a un impact critique ou majeur sur l’activité ;
-
un afflux d’incidents présentant les mêmes symptômes ;
-
un défaut de l'infrastructure ou d'une application dont un outil d’alerte (supervision) a créé automatiquement un incident ;
-
l’analyse a posteriori des incidents survenus, dans le but de rechercher leur cause fondamentale et une solution définitive ;
-
un incident qui a été corrigé mais en dehors des délais de rétablissement des niveaux de services (SLA).
Interdiction de copier sans préciser ! (Quelques modifications ont été réalisés)
Source : Openclassroom https://openclassrooms.com/fr/courses/1730486-gerez-vos-incidents-avec-le-referentiel-itil-sur-glpi
Sublime Text
Créer plusieurs curseur par rapport à la sélection :
Ctrl + Shift + L
Sélectionner une chaine de char :
Ctrl + Shift + Espace
Mettre un curseur sur tous les mots identiques à la sélection :
ALT + F3
Logiciels
WINDOWS :
Logiciel |
Utilité |
| Unlocker | Supprime les fichiers récalcitrants |
| Recuva | Récupère des fichiers supprimés |
| Win32 Disk Imager | Rend Une clef USB Bootable |
| Hasleo Disk Clone | Clone un disque dur |
| Crystal Disk Info | Affiche la santé de vos disques durs |
| Adw Cleaner | Supprime les malwares |
| Remmina | RDP sur Linux |
Linux
Logiciel |
Utilité |
|
nmtui
|
Gestion des connexions WIFI et RJ |
|
ddclient
|
Gestion des DDNS (type OVH) |
|
gpm
|
Affiche le pointeur de la sourie |
Screen
Créer un Screen nommé :
screen -S toto
Se détacher du Screen
ctrl + ad
Créer un screen dans un screen :
Ctrl + a + c
Lister les screen enfants d'un screen :
Ctrl + a + "
Se déplacer dans les screens enfants :
# Next
Ctrl + a + n
# Previous
Ctrl + a + p
Jinja2
Filtres :
first
{{maliste | first}}
maliste:
- atribut1
sous_atribut1 = "xxxx"
sous_atribut2 = "xxxx"
...
- atribut2
sous_atribut1 = "xxxx"
sous_atribut2 = "xxxx"
...
{{maliste}}
-->
atribut1 sous_atribut1 = \"xxxx\" sous_atribut2 = \"xxxx\",
atribut2 sous_atribut1 = \"xxxx\" sous_atribut2 = \"xxxx\"
{{maliste |first}}
--> atribut1 sous_atribut1 = \"xxxx\" sous_atribut2 = \"xxxx\"
lower
{{"MACHAINE" | lower}}
--> machaine
Windows
Débugger Windows Update
Il m'est arrivé de constater que windows update m'informait qu'il fallait mettre à jour mon système d'exploitation. Pour autant, quand je lui confirmer vouloire, il ne procéder à aucun téléchargement et à aucune mise à jour.
Étape N°1 : Éteindre le service de windows update
Lancer une fenetre powershell est exécuter :
net stop wuauserv
Étape N°2 : Supprimer les fichiers de WU
Puis, se rendre dans le dossier "C:\Windows\SoftwareDistribution". Et supprimer les dossier DataStore & Download.
Étape N°3 : Démarrer le service de windows update
net start wuauserv
Étape N°4 : Relancer la découverte de mises à jours
Comme dit dans le titre, il vous faut relancer la recherche de mise à jour sur l'utilitaire windows update.
Web
Accéder à un site sécurisé sans bouton pour accepter le risque :
thisisunsafe
git
Afficher l'état de la branche en cours :
git status
Ajouter des modifications à un commit :
git add <chemin vers mon fichier>
Commit :
git commit -m "Mon message de commit"
Envoie du commit :
git push
Récupération des derniers commits distants :
git pull
Supprimer le dernier commit :
git reset --hard HEAD~1
Options :
- hard
- supprime le commit et enlève tes changements en local
- mixed
- supprime le commit de la staging area mais les changements en local (retours à l'état nécessitant un
git add xxxx).
- supprime le commit de la staging area mais les changements en local (retours à l'état nécessitant un
- soft
- supprime le commit mais reste dans la staging area (après un
git add xxxx), plus qu'à re- commit !
- supprime le commit mais reste dans la staging area (après un
Changer de branche :
git checkout <nom de ma branche>
Astuces :
Tu t'es trompé de branches et tu veux pas perdre ton code ?
Sauvegarder ton code dans un tampon :
Avance de stash, il faut avoir add ton code en faisant un git add /path/to/file
git stash
Fait ton changement de branche :
git checkout ....
Applique ton code en mémoire tampon :
git statch pop
MongoDb
db.getCollectionInfos().forEach(function (c) { var stats = db.getCollection(c.name).stats(); print(c.name + ": " + (stats.size / 1024 / 1024).toFixed(2) + " MB"); });
show dbs
use mabase
show collections
db.utilisateurs.find()
db.utilisateurs.findOne().pretty()
db.utilisateurs.find({'mon_attribut':'mavaleur'}).pretty()
Afficher uniquement certainnes collones (de la requêtte précédente) :
db.utilisateurs.find({'mon_attribut':'mavaleur'},{_id:1,'mon_attribut':1,created_at:1})
Remplacer les valeurs d'une collone dans toutes les lignes :
db.ma_collone.find().forEach(function (document) {
var query = { "_id": document["_id"] }, /* query predicate */
update = { /* update document */
"$set": { "attribut_a_changer": "valleur_a_definir" }
},
options = { "upsert": true };
db.ma_collone.updateOne(query, update, options);
});
Calculer la taille des collections :
db.getCollectionInfos().forEach(function (c) { var stats = db.getCollection(c.name).stats(); print(c.name + ": " + (stats.size / 1024 / 1024).toFixed(2) + " MB"); });
Inserrer des valeurs de tests :
Utilisation de la base de donnée "ma_base" :
use ma_base
Création d'une collection de test :
db.createCollection("collection_full")
Installation des librairies necessaires :
pip install Faker
pip install mongoclient
Fichier d'insertion de data :
from faker import Faker
from pymongo import MongoClient
fake = Faker()
client = MongoClient()
db = client.ma_base
collection = db.collection_full
for i in range(100000):
utilisateur = {
"nom": fake.name(),
"adresse": fake.address(),
"email": fake.email(),
"telephone": fake.phone_number()
}
print(i)
collection.insert_one(utilisateur)
Nous lançons le script pour générer les 100 000 utilisateurs
Comtage du nombre d'utilisateurs insérés :
db.collection_full.find().count()
--> 100 000 utilisateurs présent.
Exemple d'un utilisateur inséré :
{
"_id" : ObjectId("642f2d1e0171695384ffda56"),
"nom" : "Jason Tucker",
"adresse" : "74817 Johnson Wall\nPort Karen, WI 81831",
"email" : "robertsalexis@example.org",
"telephone" : "+1-814-184-2896"
}
Python
Afficher un objet au complet :
from pprint import pprint
pprint(vars(your_object))
Afficher date + heure + milisecondes :
now = datetime.now()
current_time = now.strftime("%d-%m-%Y %H:%M:%S.%f")
VMware.PowerCLI - Dialoguer avec Vsphere via Powershell
Lancer un conteneur avec Powershell :
docker run -it mcr.microsoft.com/powershell
Installer le module VMware.PowerCLI :
Install-Module -Name VMware.PowerCLI -Confirm:$false
Accepter les certificats SSL invalides :
Set-PowerCLIConfiguration -InvalidCertificateAction Ignore -Confirm:$false
Etablir une conexion au VCENTER :
Connect-VIServer -Server "vsphere.mon-entreprise.fr" -User "utilisateur" -Password "mot-de-passe"
Récupérer la liste des VM :
$vm = Get-VM
Récupérer une VM précise :
$vm = Get-VM -Name "srv-web-01"
Eteindre la VM :
Stop-VM -VM "$vm" -Confirm:$false
Démarrer la VM :
Start-VM -VM "$vm" -Confirm:$false
Créer une snapshot :
New-Snapshot -VM "$vm" -Name "Snapshot_1" -Description "Avant MAJ OS"
Récupérer les snapshots d'une VM :
$snapshots = Get-Snapshot -VM $vm
Récupérer une snapshots d'une VM :
$snapshot = Get-Snapshot -VM "$vm" -Name "ma-snapshot"
Appliquer une snapshot d'une vm :
Set-VM -VM 'ma-vm' -Snapshot (Get-Snapshot -VM 'ma-vm' -Name 'ma-snapshot') -Confirm:$false
Déconnecter le disque CD d'une vm :
$cd = Get-CDDrive -VM $vm
Set-CDDrive -CD $cd -Connected:$false
Blocs de code intéréssant :
Créer une snapshot sur toutes les vm :
foreach ($vm in Get-VM)
{
New-Snapshot -VM "$vm" -Name "$vm-before" -Description "Before update"
}
Stop / Start toutes les vm :
foreach ($vm in Get-VM)
{
Stop-VM -VM "$vm" -Confirm:$false
}
foreach ($vm in Get-VM)
{
Start-VM -VM "$vm" -Confirm:$false
}
Appliquer une snapshot à toutes les vm :
foreach ($vm in Get-VM)
{
Set-VM -VM "$vm" -Snapshot (Get-Snapshot -VM "$vm" -Name "$vm-fresh") -Confirm:$false
}
Détacher tous les CD des lecteurs CD virtuels de toutes les vm :
foreach ($vm in Get-VM)
{
$cd = Get-CDDrive -VM $vm
Set-CDDrive -CD $cd -Connected:$false
}
Afficher toutes les snapshots de toutes les vm :
foreach ($vm in Get-VM)
{
Write-Host "[$vm] :"
$snapshots = Get-Snapshot -VM "$vm"
foreach ($snapshot in $snapshots)
{
Write-Host "$snapshot"
}
}
Réseau
Proxy VS Reverse Proxy
Proxy
Rôle : Filtre les accès des clients via authentification
Direction : LAN vers WAN
Reverse Proxy
Rôle : Redirige les requêtes vers le bon service
Direction : WAN vers LAN
VIM
Supprimer une ligne :
dd
UNDO :
u
REDO :
ctrl + R
Couper - Coller 11 lignes :
11 dd
p
Supprimer 11 lignes :
11 dd
Copier :
11 yy
p
Faire une tabulation sur un block de texte :
CTRL + V # On sélectionne le block voulu
SHIFT + I
TAB
Echap
Rechercher Remplacer :
:%s/toto/tata/g
Supprimer toutes les lignes qui contient "toto" :
:%g/toto/d
hardware
- Serveurs Micro Blade
- Chassis physique qui accueille des noeuds physique, serveur très bruillant
Processeurs :
| Critère | AMD (x86-64) | ARM (RISC) |
|---|---|---|
| ⚙️ Architecture | CISC (Complex Instruction Set Computer) — instructions puissantes mais plus complexes | RISC (Reduced Instruction Set Computer) — instructions simples, optimisées pour l’efficacité |
| 🔋 Consommation énergétique | Plus élevée, dégage plus de chaleur, nécessite un refroidissement actif | Très faible, idéal pour appareils mobiles, embarqués ou serveurs écoénergétiques |
| 🧠 Performances et usages | Excellente performance brute (PC, gaming, serveurs haute charge) | Efficience et scalabilité (mobiles, Raspberry Pi, serveurs ARM comme AWS Graviton) |
| 🧩 Compatibilité logicielle | Support universel (Windows, Linux, applications x86) | Support croissant, mais parfois besoin d’émulation ou de recompilation |
| 💰 Coût et production | Coût de production plus élevé, moins économe en énergie | Production moins coûteuse, meilleure autonomie et densité de calcul |
| 🌐 Exemples concrets | AMD Ryzen, EPYC | Apple M1/M2/M3, Snapdragon, Raspberry Pi |
(généré par chatgpt)