Aussi bien dans la précision des calculs que dans la structure du code, je fais attention aux détails. Je respect le nommage et optimise mon code dans sa lecture et l'utilisation de ses ressources.
Utilisation de la convention de nommage Pascal Case (la plus répandue).
Code commenté et détaillé, permettant de générer une documentation.
Contrôle de la mémoire utilisée pour l'initialisation des variables.
Pas de duplication de code.
Réduction des imbrications.
Ordre de calcul des conditions optimisé.
Mon but n'est pas de faire le code le plus court ou le plus long pour prouver la production mais un code lisible que je peux reprendre facilement après plusieurs mois.
Le langage où je suis le plus à l'aise est le Java. Quand j'ai voulu me spécialiser et approfondir mes connaissances j'ai choisi le Java car l'utilisation de sa VM permet d'être compatible avec tous les systèmes d'exploitation et c'était le langage le plus demandé dans les offres d'emploi.
Cependant, des projets et la curiosité m'ont amené à utiliser d'autres langages. Mes connaissances globales de la programmation me permettent de comprendre et d'apprendre rapidement les langages. Langages de bas niveau comme le C, les pointeurs de C++ qui disparaissent avec les nouvelles versions, les langages interprétés comme PHP.
J'ai pu utiliser (par ordre décroissant de temps d'utilisation) : Java, PHP, MySQL, Lua, C++, Javascript (+Typescript), Julia, C#, Python.
La structure d'un projet est important pour moi. Avant même de commencer à coder il est important de créer des schémas, choisir la bonne technologie. Je préfère passer du temps à réfléchir au bon design qui permettra de rendre le code modulable et d'optimiser les ressources. C'est ce qui facilitera la maintenabilité et les futures mise à jour d'un projet.
Par expérience, cette approche ne se limite pas à la programmation. Beaucoup d'outils d'automatisation sont proposés et utilisés mais s'ils sont mal configurés ils deviendront aussi un projet difficilement maintenable qui ne pourra pas évoluer.
Le développement ne consiste pas uniquement à produire du code. Je prépare en amont l'environnement qui intégrera le logiciel ou le site web : serveur FTP, base de données, Apache, serveur de versioning, contrôle des accès. Cet environnement permet d'assurer le bon fonctionnement, d'organiser des tests et de contrôler les coûts.
Le déploiement est réfléchi dès le début du projet et s'accompagne des documents technique et d'utilisation. Le document technique permet de reprendre le projet pour le modifier comprenant le dictionnaire des variables, les schémas logiques, les rapports techniques. Le document d'utilisation accompagne l'utilisateur de l'installation à une utilisation détaillée.
Schématisation du réseau - scan du réseau (adresses IP, ports ouverts, services utilisés), rédaction d'un dictionnaire des adresses IP fixe, relations entre les équipements, table de routage.
Brassage des baies.
Entretien de local technique.
Gestion de l'Active Directory, attribution des groupes, vérifications des comptes (dernière connexion, erreur d'authentification).
Administration des comptes Google.
Installation, contrôle software et firmware, mise à jour de tout type de serveur.
Gestion des NAS et mise en place de sauvegarde automatique.
Veille quotidienne.
Rédaction et mise à jour de la documentation et des registres.
Les attaques sont de plus en plus automatisées, intelligentes et silencieuses.
L’ANSSI a observé plus de 620 attaques de ransomware entre 2020 et 2023 (environ 60 en 2019).
Notre principal ennemi est le ransomware. Ces logiciels de rançon ne laissent peu ou pas de trace, extraient les données pour la vente, cryptent les serveurs pour la demande de rançon et suppriment les sauvegardes. Ils sont utilisés par des groupes partenaires qui ont différents objectifs et attaquent principalement les USA mais la France n’est pas épargnée.
Je surveille quotidiennement les alertes des sites d'administration qui centralisent les vulnérabilités connues et proposent des correctifs. Je vérifie également que les sauvegardes sont effectuées et exploitables.
Régulièrement je met à jour la documentation et sensibilise mes collaborateurs.
J'établi des plans de reprise d'activité et de fonctionnement en mode dégradé, la documentation doit être à jour et les procédures validées avec rapport technique. En général les points stratégiques sont plus ou moins protégés mais mal ciblés. Cette documentation permet d'être préparé en cas de problème (virus, ransomware, panne matériel, incendie). Pour aider au déploiement de la sécurité je rédige et exploite des documents de schéma réseau, de gestion serveur et d'inventaire des postes informatique.
Les vulnérabilités des logiciels représentent 6.8% des attaques, 34.1% par phishing et 59.1% par RDP compromis. Le plus important à protéger c’est tout ce qui est accès initial.
Je met donc à niveau les postes informatiques pour qu'ils répondent aux critères de mise à jour de la sécurité. Mise à jour du système d'exploitation et des logiciels, intégration au domaine, déploiement du paramétrage de sécurité par GPO. La protection passe aussi par la sensibilisation des utilisateurs, la réinitialisation programmée des mots de passe, la mise en place d'authentification forte, la désactivation des macros et la rédaction d'une charte informatique.
J'analyse aussi la sévérité des alertes pour assurer la sécurité sans devoir bloquer systématiquement les services.
L'ANSSI propose 42 règles à respecter pour sécuriser son parc informatique. Je veille à la compréhension de ces règles ainsi que leur mise en place et leur validation. Je met en place une feuille de route et un plan d'action à respecter.
Je met en place un serveur utilisant des outils open source et libre pour déployer un agent qui contrôle chaque poste et propose des correctifs. Cet outils permet d'aller plus loin après avoir validé l'hygiène informatique, il peut vérifier les comportements suspects en temps réel et aide au paramétrage de sécurité en décrivant les techniques utilisées par les ransomware et les groupes de hacker l'ayant utilisé.
La journalisation permet quand à elle de garder une trace de toutes les modifications de chaque poste, c'est le moyen de découvrir des ransomwares qui passent sous le radar de l'anti-virus.
Après avoir protégé globalement le service d'information, cette méthode permet de renforcer la gestion du risque, de préparer les projets numériques et d'aborder des scénarios plus précis. Le but est de s'assurer qu'il n'y aura pas de création de faille lors de mise en place de nouveaux projets et de se préparer aux scénarios d'attaque les plus probables.
Je peux reproduire le comportement d'un ransomware ou d'un hack, localement ou à distance, en boîte noir ou boîte grise. Il peut être simulé sur un réseau compartimenté pour éviter les modification d'un réseau en production ou testé en direct. Un pentest sur plusieurs semaines est le seul moyen de s'assurer que les règles de sécurité sont bien appliqués et de trouver des failles qu'il faut corriger.