Documentation et aide-mémoire

Des références rapides à garder ouvertes pendant votre travail. Recherchez dans toutes les fiches à la fois.

Cybersécurité

Top 10 OWASP (2021)

Les dix risques de sécurité les plus critiques pour les applications web, avec leur signification.

RisqueCe que cela signifie
A01Défaillance du contrôle d’accès : les utilisateurs accèdent à des données ou à des actions qui ne leur sont pas autorisées.
A02Défaillances cryptographiques : données sensibles envoyées ou stockées sans chiffrement robuste.
A03Injection : les données saisies sont exécutées comme du code SQL, shell ou autre. Inclut le cross-site scripting.
A04Conception non sécurisée : la sécurité n’a pas été prévue dès le départ.
A05Mauvaise configuration de sécurité : mots de passe par défaut, stockage ouvert, erreurs trop détaillées.
A06Composants vulnérables et obsolètes : anciennes bibliothèques présentant des failles connues.
A07Défaillances d’identification et d’authentification : authentification faible, absence de MFA, sessions mal gérées.
A08Défaillances d'intégrité des logiciels et des données : mises à jour et pipelines non vérifiés.
A09Défaillances de journalisation et de surveillance de la sécurité : les attaques passent inaperçues.
A10Falsification de requêtes côté serveur : le serveur est manipulé pour appeler des adresses internes.

Cybersécurité

Étapes de réponse aux incidents

Le cycle de vie de réponse aux incidents du NIST, dans l'ordre de mise en œuvre.

ÉtapeCe que vous faites
PréparationPréparez vos plans, contacts, outils et sauvegardes avant tout incident.
Détection et analyseRepérer l'incident, le confirmer et évaluer sa gravité.
ConfinementLimiter la propagation : isoler les machines, bloquer les comptes ou les adresses.
ÉradicationÉliminer la cause : logiciels malveillants, portes dérobées et comptes compromis.
RétablissementRestaurer les systèmes à partir de sauvegardes saines et les surveiller de près.
Retour d’expérienceDocumentez ce qui s'est passé et corrigez les failles pour éviter que cela se reproduise.

Réseaux

Ports courants

Les ports que vous rencontrerez sur les serveurs, dans les analyses et les règles de pare-feu.

PortService
20/tcp · FTP dataCanal de données pour le transfert de fichiers. Non chiffré : privilégiez SFTP.
21/tcp · FTPContrôle du transfert de fichiers. Envoie les mots de passe en clair.
22/tcp · SSHConnexion à distance et copie de fichiers sécurisées (SFTP, SCP).
23/tcp · TelnetAncienne connexion à distance sans chiffrement. Désactivez-la et utilisez SSH.
25/tcp · SMTPAcheminement des e-mails entre serveurs de messagerie.
53/tcp/udp · DNSRésolution de noms de domaine.
67/udp · DHCPAttribue des adresses IP sur un réseau local.
80/tcp · HTTPTrafic web non chiffré. Redirigez-le vers HTTPS.
110/tcp · POP3Téléchargement des e-mails (ancien, non chiffré).
123/udp · NTPSynchronisation de l’heure.
143/tcp · IMAPLecture des e-mails sur le serveur (sans chiffrement).
161/udp · SNMPSupervision des équipements réseau. Modifiez les chaînes de communauté par défaut.
389/tcp · LDAPServices d’annuaire tels qu’Active Directory.
443/tcp · HTTPSTrafic web chiffré (HTTP sur TLS).
445/tcp · SMBPartage de fichiers Windows. Ne l'exposez jamais à Internet.
587/tcp · SMTP submissionEnvoi d'e-mails depuis une application ou un client de messagerie, avec TLS.
993/tcp · IMAPSLecture des e-mails via TLS.
1433/tcp · MS SQLBase de données Microsoft SQL Server.
3306/tcp · MySQLBases de données MySQL et MariaDB. Gardez-les privées.
3389/tcp · RDPBureau à distance Windows. Une cible privilégiée : placez-le derrière un VPN.
5432/tcp · PostgreSQLBase de données PostgreSQL. Gardez-la privée.
6379/tcp · RedisCache Redis. Souvent laissé accessible sans mot de passe.
8080/tcp · HTTP altPort courant pour les serveurs de développement et les proxys.
27017/tcp · MongoDBBase de données MongoDB. Gardez-la privée.

Développement logiciel

Codes d’état HTTP

Ce que signifient les nombres dans les réponses API et les erreurs du navigateur.

CodeSignification
200 OKLa requête a réussi.
201 CreatedUne nouvelle ressource a été créée.
204 No ContentL’opération a réussi et il n’y a rien à renvoyer.
301 Moved PermanentlyL'adresse a changé définitivement ; utilisez la nouvelle.
304 Not ModifiedVotre copie en cache est toujours à jour.
400 Bad RequestLa requête est mal formée ou invalide.
401 UnauthorizedVous n’êtes pas connecté, ou le jeton est absent ou expiré.
403 ForbiddenConnecté, mais non autorisé à effectuer cette action.
404 Not FoundAucune ressource à cette adresse.
409 ConflictLa requête entre en conflit avec l’état actuel, par exemple en cas de doublon.
429 Too Many RequestsUne limite de requêtes a été atteinte ; patientez et réessayez.
500 Internal Server ErrorUn problème est survenu sur le serveur.
502 Bad GatewayUn serveur intermédiaire a reçu une réponse incorrecte du serveur suivant.
503 Service UnavailableLe serveur est surchargé ou indisponible pour maintenance.

Développement logiciel

Aide-mémoire des commandes Git

Les commandes Git qui couvrent presque tous les besoins quotidiens.

CommandeCe qu’il fait
git clone <url>Copiez un dépôt sur votre ordinateur.
git statusVoir les modifications et les éléments dans la zone de staging.
git add -pAjouter les modifications à la zone de staging par petits blocs après les avoir examinées.
git commit -m "message"Enregistrer un instantané avec un message.
git switch -c featureCréez une branche et basculez dessus.
git pull --rebaseRécupérer les dernières modifications et réappliquer les vôtres par-dessus.
git push -u origin featureEnvoyez votre branche et configurez son suivi.
git log --oneline --graphAfficher un historique compact avec les branches.
git diffAfficher les modifications qui ne sont pas encore dans la zone de staging.
git stashMettre de côté les modifications inachevées pour plus tard.
git revert <commit>Annuler un commit avec un nouveau commit, en conservant l’historique.

Cloud et Linux

Aide-mémoire des commandes Linux

Les commandes que vous utiliserez au quotidien sur un serveur Linux.

CommandeCe qu’il fait
pwdAfficher le dossier actuel.
ls -laLister tous les fichiers avec leurs détails, y compris les fichiers cachés.
cd /var/logDéplacer vers un autre dossier.
cat file.txtAfficher un fichier.
less file.txtLire un long fichier page par page.
grep -i error app.logRechercher les lignes contenant un mot, sans tenir compte de la casse.
chmod 755 script.shModifiez les permissions d’un fichier.
chown user:group fileChangez le propriétaire d’un fichier.
ps auxLister les processus en cours d’exécution.
topSurveillez l’utilisation du CPU et de la mémoire en direct.
df -hAfficher l'espace disque libre.
sudo apt update && sudo apt upgradeInstaller les mises à jour sur Debian ou Ubuntu.
ssh user@hostConnectez-vous à un serveur distant.
tail -f /var/log/syslogSuivre un fichier journal à mesure qu’il se remplit.

Cloud et Linux

Commandes Docker et Kubernetes

Créez, exécutez et déboguez des conteneurs, puis gérez-les sur un cluster.

CommandeCe qu’il fait
docker build -t app .Créez une image à partir du Dockerfile de ce dossier.
docker run -p 8080:80 appExécuter l’image et exposer le port 80 sur le port 8080.
docker psLister les conteneurs en cours d’exécution.
docker logs -f <id>Suivre la sortie d’un conteneur.
docker exec -it <id> shOuvrir un shell dans un conteneur en cours d’exécution.
kubectl get podsLister les pods de l’espace de noms actuel.
kubectl describe pod <name>Afficher les détails et les événements récents d'un pod.
kubectl logs <pod>Afficher les journaux d’un pod.
kubectl apply -f deploy.yamlCréez ou mettez à jour des ressources à partir d’un fichier.
kubectl rollout undo deployment/appRevenir à la version précédente.

Réseaux

Types d’enregistrements DNS

Les enregistrements présents dans une zone DNS et le rôle de chacun.

EnregistrementObjectif
AAssocie un nom à une adresse IPv4.
AAAAAssocie un nom à une adresse IPv6.
CNAMEFait d’un nom un alias d’un autre nom.
MXIndique quels serveurs de messagerie reçoivent les e-mails du domaine.
TXTTexte libre, utilisé pour SPF, DKIM et la vérification de propriété d'un domaine.
NSListe les serveurs de noms responsables du domaine.
SOADébut d’autorité : les principaux paramètres de la zone et son numéro de série.
PTRRésolution inverse : associe une adresse IP à un nom.
SRVPointe vers l’hôte et le port d’un service précis.
CAALimite les autorités de certification autorisées à émettre des certificats.

Réseaux

Tableau CIDR et masques de sous-réseau

Longueur du préfixe, masque de sous-réseau, nombre total d’adresses et hôtes utilisables.

PréfixeMasque · total · utilisables
/8255.0.0.0 · 16,777,216 · 16,777,214
/16255.255.0.0 · 65,536 · 65,534
/20255.255.240.0 · 4,096 · 4,094
/22255.255.252.0 · 1,024 · 1,022
/24255.255.255.0 · 256 · 254
/25255.255.255.128 · 128 · 126
/26255.255.255.192 · 64 · 62
/27255.255.255.224 · 32 · 30
/28255.255.255.240 · 16 · 14
/29255.255.255.248 · 8 · 6
/30255.255.255.252 · 4 · 2
/32255.255.255.255 · 1 · 1

Réseaux

Commandes de dépannage réseau

Commandes pour déterminer où une connexion échoue. Testez uniquement les systèmes que vous possédez ou que vous êtes autorisé à tester.

CommandeCe qu’il fait
ping -c 4 example.comVérifier qu’un hôte répond et mesurer son temps de réponse.
traceroute example.comAfficher chaque routeur traversé par un paquet sur son trajet.
dig example.com ARechercher les enregistrements DNS d’un nom.
nslookup example.comUne recherche DNS plus simple qui fonctionne sur la plupart des systèmes.
curl -I https://example.comRécupérer uniquement les en-têtes de réponse d'une page web.
ip addrAfficher vos interfaces réseau et adresses IP.
ip routeAfficher où le trafic est envoyé, y compris la passerelle par défaut.
ss -tulpnLister les ports en écoute et les programmes qui les ont ouverts.
nmap -sV 192.168.1.10Scannez un hôte qui vous appartient pour voir les ports ouverts et les versions des services.
tcpdump -i eth0 port 53Capturer les paquets DNS sur une interface.

Développement logiciel

Aide-mémoire SQL

Les instructions à la base de la plupart des opérations sur les bases de données. Transmettez toujours les saisies utilisateur comme paramètres, jamais en concaténant des chaînes.

InstructionCe qu’il fait
SELECT name, email FROM users;Lire des colonnes d’une table.
SELECT * FROM orders WHERE total > 100;Filtrer les lignes selon une condition.
ORDER BY created_at DESC LIMIT 10Trier le résultat et ne conserver que les premières lignes.
INSERT INTO users (name) VALUES ($1);Ajoute une ligne. $1 est un paramètre renseigné de manière sécurisée.
UPDATE users SET name = $1 WHERE id = $2;Modifier des lignes existantes. N’oubliez jamais le WHERE.
DELETE FROM sessions WHERE expires_at < now();Supprimer les lignes correspondantes.
JOIN orders ON orders.user_id = users.idCombiner les lignes de deux tables qui partagent une valeur.
SELECT status, count(*) FROM orders GROUP BY status;Regrouper les lignes et les compter ou en calculer la somme.
CREATE INDEX ON users (email);Accélérer les recherches sur une colonne.
BEGIN; ... COMMIT;Exécuter plusieurs instructions dans une transaction unique, selon le principe du tout ou rien.

Développement logiciel

Aide-mémoire des expressions régulières

Motifs pour rechercher et valider du texte. Essayez-les dans le testeur de Regex.

MotifCorrespondances
.N'importe quel caractère unique sauf un saut de ligne.
\d \w \sUn chiffre, un caractère de mot, un caractère d'espacement.
^ $Le début et la fin du texte.
\bUne limite de mot.
* + ?Zéro ou plusieurs, une ou plusieurs, zéro ou une occurrence de l’élément précédent.
{2,4}Entre 2 et 4 de l’élément précédent.
[abc] [^abc]Un des caractères indiqués, ou tout caractère non indiqué.
(cat|dog)Un groupe qui correspond à cat ou dog et mémorise la correspondance.
(?:cat|dog)Le même groupe sans le mémoriser.
(?=x)Une anticipation : uniquement si x suit, sans le consommer.

Cloud et Linux

Bases du scripting Bash

Les bases des scripts shell pour l'automatisation.

SyntaxeSignification
#!/usr/bin/env bashPremière ligne : le programme qui exécute le script.
set -euo pipefailArrêter l’exécution en cas d’erreur, de variable non définie ou d’échec dans un pipeline. Un réglage par défaut plus sûr.
name="web01"; echo "$name"Définir et utiliser une variable. La placer entre guillemets pour préserver les espaces.
if [ -f "$file" ]; then ... fiExécuter des commandes uniquement si une condition est vraie, ici si un fichier existe.
for f in *.log; do ... doneRépéter des commandes pour chaque élément d’une liste.
cmd1 | cmd2Transmettre la sortie d’une commande à une autre.
cmd > out.txt cmd >> out.txtÉcrire la sortie dans un fichier, en remplaçant son contenu ou en l’ajoutant à la fin.
$?Le code de sortie de la dernière commande. 0 indique une réussite.
cmd1 && cmd2 cmd1 || cmd2Exécuter la seconde uniquement si la première réussit, ou uniquement si elle échoue.
chmod +x script.sh && ./script.shRendre un script exécutable et le lancer.

Cloud et Linux

Syntaxe de planification Cron

Cinq champs : minute, heure, jour du mois, mois et jour de la semaine. Essayez-les dans l'outil d'explication de Cron.

ExpressionExécutions
* * * * *Toutes les minutes.
*/15 * * * *Toutes les 15 minutes.
0 * * * *Au début de chaque heure.
0 2 * * *Tous les jours à 02:00.
30 9 * * 1-5À 09:30 en semaine, du lundi au vendredi.
0 0 1 * *À minuit le premier jour de chaque mois.
0 0 * * 0À minuit chaque dimanche.
0 8,20 * * *Deux fois par jour, à 08:00 et à 20:00.

Cloud et Linux

Modes de permissions Linux

Valeurs chmod courantes et leurs cas d’usage. Lecture : 4, écriture : 2, exécution : 1.

ModeSignification
777 rwxrwxrwxTout le monde peut tout faire. Presque jamais approprié.
755 rwxr-xr-xAccès complet pour le propriétaire, lecture et exécution pour les autres. Courant pour les programmes et les dossiers.
750 rwxr-x---Accès complet pour le propriétaire, lecture et exécution pour le groupe, aucun accès pour les autres.
700 rwx------Seul le propriétaire dispose d’un accès. Adapté aux dossiers privés.
664 rw-rw-r--Le propriétaire et le groupe peuvent modifier, les autres peuvent lire.
644 rw-r--r--Le propriétaire peut modifier, tout le monde peut lire. Courant pour les fichiers web.
640 rw-r-----Le propriétaire peut modifier, le groupe peut lire. Adapté aux fichiers de configuration contenant des mots de passe.
600 rw-------Seul le propriétaire peut lire et écrire. Requis pour les clés privées SSH.
400 r--------Lecture seule pour le propriétaire. Adapté aux clés qui ne changent jamais.

Cybersécurité

En-têtes de sécurité web et attributs des cookies

En-têtes de réponse qui imposent aux navigateurs un comportement plus sûr.

En-tête ou optionCe que cela protège
Content-Security-PolicyLimite les sources de chargement des scripts, des images et des cadres. Offre une protection solide contre le XSS.
Strict-Transport-SecurityIndique aux navigateurs de toujours utiliser HTTPS pour ce site.
X-Content-Type-Options: nosniffEmpêche les navigateurs de deviner les types de fichiers et d’exécuter des scripts déguisés.
X-Frame-Options: DENYEmpêche les autres sites d’afficher le vôtre dans un cadre (clickjacking).
Referrer-PolicyContrôle quelle partie de votre adresse est transmise aux autres sites.
Permissions-PolicyDésactive des fonctionnalités du navigateur, comme la caméra ou la localisation, pour la page.
Set-Cookie: HttpOnlyMasque le cookie à JavaScript pour qu'une attaque XSS ne puisse pas le voler.
Set-Cookie: SecureEnvoie le cookie uniquement via HTTPS.
Set-Cookie: SameSite=LaxLimite les cookies lors des requêtes intersites, réduisant les risques de CSRF.
Access-Control-Allow-OriginCORS : quels autres sites web peuvent lire les réponses de votre API.

Cybersécurité

La cryptographie en bref

Quel algorithme utiliser pour quelle tâche, et lesquels éviter.

AlgorithmeDéfinition et cas d’utilisation
AES-256-GCMChiffrement symétrique rapide pour les données au repos et en transit. La même clé sert à chiffrer et à déchiffrer.
ChaCha20-Poly1305Un algorithme de chiffrement symétrique moderne, idéal sur les téléphones sans accélération matérielle AES.
RSA 2048+Chiffrement à clé publique et signatures. Plus lent, principalement utilisé pour échanger des clés.
ECDSA / Ed25519Signatures à clé publique compactes avec des clés plus petites que celles de RSA.
Diffie-HellmanPermet à deux parties de convenir d’un secret partagé sur un canal ouvert.
SHA-256Un hachage cryptographique pour les empreintes et les contrôles d'intégrité. Pas pour les mots de passe.
HMACUn hachage combiné à une clé secrète pour prouver qu'un message n'a pas été modifié.
bcrypt / Argon2Des hachages lents et salés, conçus pour stocker les mots de passe.
TLS 1.3Le protocole derrière HTTPS. Utilisez-le et désactivez les anciennes versions.
MD5 / SHA-1Inadaptés à un usage sécurisé. Ne les utilisez jamais pour les signatures ou les mots de passe.

Cybersécurité

Glossaire des attaques courantes

Définitions simples des attaques dont vous entendrez le plus souvent parler.

AttaqueDéfinition
PhishingMessages frauduleux qui incitent les personnes à divulguer leurs mots de passe ou à cliquer sur des liens malveillants.
RançongicielLogiciel malveillant qui verrouille les fichiers et exige un paiement pour les déverrouiller.
DDoSSubmerger un service de trafic provenant de nombreuses machines pour empêcher les utilisateurs légitimes d'y accéder.
Attaque de l’homme du milieuS’interposer secrètement entre deux parties pour lire ou modifier leurs messages.
Force bruteEssayer de nombreux mots de passe jusqu'à en trouver un qui fonctionne.
Bourrage d’identifiantsTester des paires d'identifiants et de mots de passe divulguées sur d'autres sites.
Zero-dayUne attaque exploitant une faille encore inconnue de l'éditeur, pour laquelle aucun correctif n'existe.
Attaque de la chaîne d’approvisionnementCompromettre un fournisseur ou un paquet logiciel pour atteindre ses clients.
Élévation de privilègesTransformer un accès limité en accès administrateur.
Ingénierie socialeManipuler des personnes plutôt que des ordinateurs pour obtenir un accès.
Menace interneDommages causés volontairement ou accidentellement par une personne disposant d'un accès légitime.

Cybersécurité

Tactiques MITRE ATT&CK

Les 14 étapes suivies par les attaquants : un langage commun pour les défenseurs.

TactiqueL'objectif de l'attaquant
ReconnaissanceRecueillir des informations sur la cible.
Développement de ressourcesMettre en place l’infrastructure, les comptes et les outils nécessaires à l’attaque.
Accès initialObtenir un premier accès, par exemple par hameçonnage.
ExécutionExécuter du code malveillant sur le système.
PersistanceConserver l’accès après les redémarrages et les changements de mot de passe.
Élévation de privilègesObtenir des droits plus élevés.
Contournement des défensesÉviter d’être détecté ou bloqué.
Accès aux identifiantsVoler des noms de compte et des mots de passe.
DécouverteDécouvrir l’environnement et ce qu’il contient.
Déplacement latéralPasser d’un système à d’autres sur le réseau.
CollecteRassembler les données pertinentes.
Commande et contrôleCommuniquer avec les systèmes compromis pour les contrôler.
ExfiltrationExfiltrer les données du réseau.
ImpactPerturber, détruire ou verrouiller les systèmes et les données.