Download SLIDE-C05-Cyber-adv-FR.pdf
Download C05-Cyber-adv-FR.pdf
CIS services
Bien que l'application de mises à jour et de correctifs système permette de corriger les vulnérabilités connues, l'un des meilleurs moyens de protéger le système contre les vulnérabilités non encore signalées est de désactiver tous les services qui ne sont pas nécessaires au fonctionnement normal du système. Cela empêche l'exploitation des vulnérabilités découvertes ultérieurement. Si un service n'est pas activé, il ne peut pas être exploité. Les actions décrites dans cette section du document fournissent des conseils sur certains services qui peuvent être désactivés en toute sécurité et dans quelles circonstances, réduisant ainsi considérablement le nombre de menaces potentielles pour le système résultant. De plus, certains services qui doivent rester activés mais avec une configuration sécurisée sont couverts ainsi que les clients de services non sécurisés.
Services et binaires à activer et/ou supprimer
- Vérifier que l'instance a le paquet chrony
- Vérifier que le service chrony est lancé et que sa configuration est fonctionelle
- Vérifier que chrony n'est pas lancé en tant que root
- Vérifier que les service autofs, samba, cups telnet et ftp ne sont pas activé
- Vérifier que le server X n'est pas utilisé
- Vérifier que les binaires ftp, ldap, nis et tftp ne sont pas présent sur le système
function_Apply
- Créer une fonction permettant de lancer la désactivation de services
- Créer une fonction permettant la suppression de rpms
function_Check
- Créer une fonction permettant de vérifier la présence ou l'absance d'un service
- Créer une fonction permettant la présence ou l'absance de rpms
CIS_Network
Pour réduire la surface d’attaque d’un système, les périphériques inutilisés doivent être désactivés.
Gestion du réseau
- Vérifier que le protocole IPV6 est désactivé
- Vérifier que les périphérique de type wifi sont désactivé
- Vérifier que les périphérique de type bluetooth sont désactivé
- Vérifier que l'ip forwarding est désactivé
- Vérifier que la redirection de paquet via l'icmp est désactivé
- Vérifier la présence d'un firewawll et de son avtivation
Cours : rsyslog syslog-ng journalctl
Introduction
Les systèmes Linux utilisent des outils de journalisation pour collecter et stocker des informations sur le fonctionnement du système, des applications, et des erreurs. Sur CentOS 7, deux des outils les plus courants sont rsyslog et syslog-ng. Ce cours va détailler leur installation, leur configuration et leurs différences.
Objectifs :
- Comprendre le rôle de rsyslog et syslog-ng
- Installer et configurer ces outils sur CentOS 7
- Configurer la collecte des journaux et leur redirection
- Gérer les fichiers de logs sur un serveur Linux
Introduction à rsyslog
Qu'est-ce que rsyslog ?
rsyslog est un démon de journalisation utilisé pour collecter et transmettre des messages de journalisation (logs) générés par le système et les applications. Il est très populaire sous Linux, car il est flexible et performant.
Il permet : - La collecte locale des logs - L'envoi des logs à un serveur distant - La gestion des fichiers de logs - Le filtrage et l'archivage des logs
Installation de rsyslog sur CentOS 7
rsyslog est installé par défaut sur CentOS 7. Pour vérifier si rsyslog est installé, utilisez la commande suivante :
rpm -q rsyslog
Si rsyslog n'est pas installé, vous pouvez l'installer avec :
sudo yum install rsyslog
Configuration de rsyslog
Le fichier principal de configuration de rsyslog se trouve dans /etc/rsyslog.conf. Vous pouvez y définir des règles pour la collecte et la redirection des logs.
Exemple de configuration simple
Activer l'envoi de logs à un serveur distant :
*.* @logserver.example.com:514
Filtrage des messages
authpriv.* /var/log/secure
*.info /var/log/messages
Activer la rotation des logs avec logrotate :
Editez le fichier /etc/logrotate.conf pour configurer la fréquence de rotation et la conservation des logs.
Démarrer et gérer rsyslog
Pour démarrer ou redémarrer le service rsyslog :
sudo systemctl start rsyslog
sudo systemctl enable rsyslog
Pour vérifier son statut :
sudo systemctl status rsyslog
Introduction à syslog-ng
Qu'est-ce que syslog-ng ?
syslog-ng est un autre démon de journalisation similaire à rsyslog, mais il offre plus de fonctionnalités avancées telles que le traitement des logs en temps réel, des filtrages plus poussés et une meilleure gestion des formats de logs.
Installation de syslog-ng sur CentOS 7
Pour installer syslog-ng sur CentOS 7, vous devez d'abord activer le dépôt EPEL :
sudo yum install epel-release
sudo yum install syslog-ng
Configuration de syslog-ng
Le fichier principal de configuration se trouve dans /etc/syslog-ng/syslog-ng.conf
Exemple de configuration de base
Définir une source :
source s_local {
system();
internal();
};
Définir une destination :
destination d_file {
file("/var/log/messages");
};
Définir une règle de filtrage :
log { source(s_local); destination(d_file); };
Envoi des logs à un serveur distant :
destination d_remote {
tcp("logserver.example.com" port(514));
};
log { source(s_local); destination(d_remote); };
Démarrer et gérer syslog-ng
Pour démarrer et activer le service syslog-ng :
sudo systemctl start syslog-ng
sudo systemctl enable syslog-ng
Vérifiez le statut avec :
sudo systemctl status syslog-ng
Comparaison entre rsyslog et syslog-ng
| Critère | rsyslog | syslog-ng |
|---|---|---|
| Installation | Par défaut sur CentOS 7 | Nécessite l'installation via EPEL |
| Facilité de configuration | Configuration simple via /etc/rsyslog.conf |
Configuration plus complexe mais plus flexible |
| Protocole | Utilise principalement UDP/TCP pour l'envoi à distance | Supporte plus de protocoles et formats |
| Performances | Très performant pour des logs classiques | Très performant avec une meilleure gestion des logs en temps réel |
| Filtrage avancé | Filtrage de base via /etc/rsyslog.conf |
Filtrage avancé et personnalisation complète |
| Soutien communautaire | Large communauté, bien documenté | Moins répandu mais puissant pour des cas complexes |
Sécuriser les logs
Sécurisation de l'envoi des logs
Lorsque vous envoyez des logs à un serveur distant, il est crucial de sécuriser la transmission pour éviter les interceptions. Vous pouvez utiliser TLS (Transport Layer Security) pour chiffrer les messages envoyés.
Exemple de configuration avec TLS dans rsyslog :
Installer les paquets nécessaires :
sudo yum install rsyslog-gnutls
Modifier /etc/rsyslog.conf pour activer TLS
module(load="imtcp") # Charge le module TCP
input(type="imtcp" port="514")
$DefaultNetstreamDriver gtls
$DefaultNetstreamDriverCAFile /etc/rsyslog.d/ca.crt
$DefaultNetstreamDriverCertFile /etc/rsyslog.d/cert.crt
$DefaultNetstreamDriverKeyFile /etc/rsyslog.d/cert.key
*.* @@logserver.example.com:514
Exemple de configuration avec TLS dans syslog-ng :
Générer un certificat :
openssl req -new -x509 -days 365 -keyout /etc/syslog-ng/cert.key -out /etc/syslog-ng/cert.crt
Modifier /etc/syslog-ng/syslog-ng.conf pour activer TLS :
destination d_tls {
tcp("logserver.example.com" port(514)
tls(cert_file("/etc/syslog-ng/cert.crt") key_file("/etc/syslog-ng/cert.key") ca_file("/etc/syslog-ng/ca.crt")));
};
log { source(s_local); destination(d_tls); };
Journalisation
systemd-journald est un service de journalisation intégré à systemd, qui est devenu l'outil par défaut de gestion des processus et des services sous CentOS 7. journald est responsable de la collecte, de la gestion et du stockage des journaux système, des logs d'applications et des messages du noyau dans un format binaire.
Contrairement aux systèmes traditionnels comme syslog, qui utilisent des fichiers texte, journald stocke les journaux dans un format binaire qui permet une gestion plus efficace et un accès plus rapide aux données.
Fonctionnalités de systemd-journald :
- Journalisation des messages des services systemd et des applications.
- Collecte des journaux du noyau (kernel logs).
- Support de la journalisation persistante (les logs peuvent être stockés sur disque dur).
- Gestion automatique de la taille des journaux et des fichiers.
- Indexation des journaux pour une consultation rapide avec journalctl.
Le fichier de configuration : /etc/systemd/journald.conf
Le fichier /etc/systemd/journald.conf permet de configurer le comportement de journald. Ce fichier contient plusieurs paramètres importants, notamment la gestion du stockage des journaux et leur rétention.
Voici quelques paramètres importants à connaître :
- Storage : Détermine où les journaux sont stockés. Les options sont :
persistent: Les journaux sont stockés sur disque dans/var/log/journal/(journalisation persistante).volatile: Les journaux sont stockés en mémoire (les logs seront perdus au redémarrage).-
auto: Choisitpersistentsi le répertoire/var/log/journal/existe, sinon utilisevolatile. -
MaxRetentionSec : Définit la durée maximale pendant laquelle les journaux sont conservés. Par exemple,
MaxRetentionSec=1monthconservera les logs pendant 1 mois.
- MaxFileSec : Définit la durée de rétention des fichiers journaux individuels.
Exemple de fichier /etc/systemd/journald.conf :
[Journal]
Storage=persistent
MaxRetentionSec=1month
MaxFileSec=1week
Après avoir modifié ce fichier, vous devez redémarrer systemd-journald pour que les changements prennent effet :
sudo systemctl restart systemd-journald
Gestion des Journaux avec journalctl
journalctl est l'outil principal pour interroger et afficher les journaux collectés par journald. Il permet d'accéder aux logs du système, des services, et des applications de manière centralisée et efficace.
Commandes de base avec journalctl
Voici quelques commandes de base pour utiliser journalctl :
Afficher tous les journaux :
journalctl
Afficher les journaux d'un service spécifique (par exemple, pour sshd) :
journalctl -u sshd
Afficher les journaux du noyau :
journalctl -k
Afficher les journaux depuis un moment spécifique :
journalctl --since "2025-02-01" --until "2025-02-10"
Afficher les dernières entrées du journal :
journalctl -n 50
Suivre les logs en temps réel (similaire à tail -f) :
journalctl -f
Afficher les logs d'un certain niveau de priorité :
journalctl -p err
Cette commande affiche uniquement les logs de niveau err (erreur) et supérieur (critique).
Limiter l'affichage à un certain nombre de lignes :
journalctl -n 100
Afficher les journaux d'un service depuis le démarrage :
journalctl -u sshd -b
Filtrage avancé avec journalctl
Vous pouvez filtrer les journaux selon différents critères :
Afficher les logs d'un utilisateur spécifique :
journalctl _UID=1001
Afficher les logs avec une priorité spécifique :
journalctl -p warning
Afficher les logs d'une unité spécifique (par exemple, nginx.service) :
journalctl -u nginx.service
Afficher les logs d'un service en particulier avec un niveau de priorité spécifique :
journalctl -u nginx.service -p err
Utilisation de journalctl avec des options supplémentaires
Limiter la sortie à un certain nombre de logs par unité de temps :
Afficher les logs du dernier démarrage :
journalctl -b
Afficher les logs des 5 derniers démarrages :
journalctl -b -5
Exporter les logs dans un fichier
Exporter les logs dans un fichier : Vous pouvez rediriger la sortie de journalctl vers un fichier texte pour une consultation ultérieure ou pour des analyses plus approfondies :
journalctl > logs.txt
limiter le logs
Limiter les logs affichés à une période spécifique : Afficher les journaux depuis une date précise :
journalctl --since "2025-02-01"
Afficher les journaux jusqu'à une date précise :
journalctl --until "2025-02-10"
Gestion de la Taille des Journaux
systemd-journald est conçu pour gérer automatiquement la taille des journaux, mais vous pouvez personnaliser cette gestion en modifiant le fichier /etc/systemd/journald.conf.
Paramètres de taille des journaux
- SystemMaxUse : Définit la taille maximale que les journaux peuvent occuper sur le disque (par exemple,
SystemMaxUse=500Mlimite les logs à 500 Mo). - SystemKeepFree : Assure qu'un certain pourcentage de l'espace disque reste libre pour d'autres usages.
- SystemMaxFileSize : Limite la taille des fichiers journaux individuels.
Exemple de configuration dans /etc/systemd/journald.conf :
[Journal]
SystemMaxUse=500M
SystemKeepFree=1G
SystemMaxFileSize=50M
Sécurisation des Journaux
systemd-journald stocke les journaux dans un format binaire qui peut être consulté uniquement par les utilisateurs ayant les permissions appropriées. Voici quelques bonnes pratiques pour sécuriser les journaux :
- Restreindre l'accès aux journaux : Par défaut, seul l'utilisateur root et les membres du groupe
systemd-journalpeuvent accéder aux journaux binaires. Vous pouvez ajouter un utilisateur à ce groupe si nécessaire :
sudo usermod -aG systemd-journal <username>
Activer le chiffrement des journaux : Si vous devez protéger vos logs sensibles, vous pouvez utiliser un serveur distant pour stocker vos logs en utilisant TLS avec rsyslog ou journald.
Préparation
Afin de réaliser ce TP nous allons utiliser un site d'apprentissage de hacking/cracking
Ce dernier se nomme root-me.org
Vous avez la possibilité de vous créer un compte ou d'utiliser celui de la session 2018 de MTN :
- user : mtn2018
- pass : 2018mtn2018
Outils de dev
Les outils de développement des navigateur :
Tous les navigateurs modernes possèdent un ensemble d'outils destinés aux développeurs.
Ces outils permettent de réaliser différentes actions : inspecter le code HTML, CSS ou JavaScript chargé à la volée dans la page, montrer les fichiers téléchargés et le temps de chargement, etc.
Ces outils peuvent donc être utilisé afin de modifer le contenue d'un site pour changer son comportement en local et potentiellement modifier l'accès à certaines données du code source .
Après vous être loggué sur root-me tenté de résoudre l'énigme ci-dessous :
http://challenge01.root-me.org/web-client/ch25/
un bon admin ?
Certains admin doivent être brûlé !!!
Sans trop d'explication essayé de résoudre l'énigme ci-dessous :
http://challenge01.root-me.org/web-serveur/ch3/
les protocoles
Les trames Ftp ...
http://challenge01.root-me.org/reseau/ch1/ch1.pcap
ex de phpbb
Quand on a fini d'installer quelque chose ...
Connaisez vos outils !!!!
http://challenge01.root-me.org/web-serveur/ch6/
Programmation de base
Programmez du javascript c'est bien ... mais là ...
http://challenge01.root-me.org/web-client/ch1/ch1.html
Steno
Trouver les outils qui analyse les fichiers binaires
https://www.root-me.org/fr/Challenges/Steganographie/Pas-tres-carre