CTO & Co-Founder SYNHACK
ET SI ON PARLAIT DE VOTRE SÉCURITÉ ?
SYNHACK est une startup Normande spécialisée dans la sécurité numérique.
Basée à Seine Innopolis (Petit-Quevilly),
notre société est composée d'experts pluridisciplinaires dans les domaines
de la sécurité numérique.
VÉRIFIONS VOTRE NIVEAU DE SÉCURITÉ
NOS AUDITS DE SÉCURITÉ :
- Tests d'intrusion
- Audits de configuration
- Audits de vulnérabilités
- Audits d'infrastructures
NOS CERTIFICATIONS :
- EC-Council CEH
- Cisco CCNP Security
FORMER VOS SALARIES C'EST VOUS PROTÉGER
PARCOURS DE FORMATION :
- Formation et sensibilisation des
collaborateurs de l'entreprise
- Formation et accompagnement
de l'équipe IT de l'entreprise
Centre de formation agréé par
la DIRECCTE de Haute-Normandie.
LAISSEZ NOS EXPERTS VOUS AIDER
NOS OFFRES :
- Diagnostic Interne : Un expert se déplace au sein de votre entreprise afin de comprendre vos enjeux métiers et d'évaluer l'état de votre sécurité.
- SYNHACK @ Work : Un expert vous accompagne régulièrement à raison de 3 jours de prestation par mois.
Commandes système basique
Gestion des droits utilisateur
Gestion des partitions
Tâches CRON
Cette commande permet de changer de dossier courant.
cd = current directory
cd /tmp
cd ../scripts cd ~/downloads
Cette commande permet de lister le contenu d'un dossier
ls = list
ls /tmp ls ../scripts ls -al ../scripts
Cette commande permet d'afficher le contenu d'un fichier
cat /etc/passwd cat example.doc
Cette commande permet d'effacer un fichier ou un dossier.
rm = remove
rm example.doc rm -rf /home/y0no/example_directory
Cette commande permet de modifier le contenu d'un fichier.
nano example.txt nano /etc/passwd
Cette commande permet de changer d'utilisateur.
su = switch user
su root su y0no
Cette commande permet d'executer une commande en tant qu'un autre utilisateur
sudo = switch user do
sudo apt-get install php5 sudo -u y0no nano test.php
Cette commande permet de modifier les droits d'un fichier ou d'un dossier.
chmod 755 example.doc chmod -r 755 ~/ chmod u+x example.doc
chmod ug+rwx example.doc
Cette commande permet de modifier le propriétaire d'un fichier ou d'un dossier.
chown y0no example.doc chown -r y0no ~/ chown y0no:users example.doc
Cette commande permet de formater une partition
mkfs.ext4 /dev/sda1 mkfs.ntfs /dev/sda2
Cette commande permet de formater une partition en tant que swap.
mkswap /dev/sda1 swapon /dev/sda1
SSH
WEB
FTP
DHCP
DNS
Syslog
SAMBA
IPTables
NFS
VNC
SSH est un protocole de communication sécurisé comparable à telnet développé en 1995.
Il intègre un chiffrement natif faisant de lui une réference dans les outils d'administration à distance.
- Installer un serveur SSH sur les deux serveurs Debian
- Interdire à un utilisateur de se loguer en tant que "root"
- Tenter de se connecter via SSH avec putty et/ou le client ssh linux
- Générer une clé asymétrique sur la machine cliente.
- Déposer la clé publique sur les serveurs.
- Tenter de se loguer avec la clé privée sur les serveurs.
Un serveur WEB permet de proposer à un utilisateur du contenu sur le réseau via le protocole HTTP.
Protocole permettant l'échange de fichiers sur le réseau.
Commencé en 1971 (RFC114), finalisé en 1985 (RFC959)
- Installer vsftpd sur la VM1 Debian
- Utiliser la commande 'ftp' pour se loguer avec un user à partir de VM2
- Uploader un fichier dans le dossier d'un user
- Lister les fichiers du dossier
- Créer sur le serveur via SSH un fichier
- Tenter de le récupérer via ftp
- Se connecter en tant qu'anonyme
- Essayer de créer un fichier, que se passe t'il ?
- Autoriser l'utilisateur anonyme à écrire sur le FTP
- Essayer de créer un fichier, que se passe t'il ?
- Interdire l'utilisation de l'utilisateur anonyme
- Tenter de se loguer en anonyme, que se passe t'il ?
- Créer un utilisateur 'commun' sur le système.
- Modifier les droits de sa 'home' pour que tout le monde y est accès.
- Créer un dossier 'commun' dans la home de chaque user.
- Lier le repertoire de 'commun' avec les répertoires 'commun' de chaque user grâce à fstab.
- Permettre à des users ne faisant pas partie du système de se loguer.
Configuration d'hôte automatique via le réseau.
Distribue des IPs
Distribue la passerelle
Distribue des serveurs DNS
Distribue des serveurs NTP
/etc/dhcp/dhcpd.conf:
option domain-name ...
option domain-name-servers ...
log-facility ...
/etc/dhcp/dhcpd.conf:
subnet 192.168.1.0 netmask 255.255.255.0 {
range 192.168.1.100 192.168.1.150;
option routers 192.168.1.1;
}
/etc/dhcp/dhcpd.conf:
host tyrion {
hardware ethernet 02:34:37:24:c0:a5;
fixed-address 192.168.1.110;
}
host printer01 {
hardware ethernet 02:34:37:30:c6:c4;
fixed-address 192.168.1.115;
}
- Installer un serveur DHCP sur la VM2
- Distribuer des adresses pour le réseau 192.168.1.0/24
- La plage d'adresse doit distribuer maximum 30 addresses
- Distribuer les serveurs DNS de google (8.8.8.8, 8.8.4.4)
- Distribuer l'adresse de la passerelle par défaut
- Demander à la VM1 et au client windows de récupérer des IP via DHCP.
- Mettre deux interfaces sur la machine virtuelle
- Configurer le serveur pour distribuer différentes adresses aux différents réseaux
- Ajouter l'adresse MAC de la VM1 à une adresse IP reservé en dehors du range desservie
- Configurer le serveur pour qu'il distribue des routes
- Mettre le temps de leasing à 2 minutes
Permet la résolution nom de domaine vers adresse IP et vice/versa.
Conçu à l'origine en 1983 à l'iniative de la DARPA
On dit bien "system" et non pas "service"!
Création couple nom de domaine/IP
Création d'alias
Configuration mail
Configuration hiérarchique
- A: Résolution vers une adresse IPv4
- AAAA: Résolution vers une adresse IPv6
- CNAME: Alias vers un domaine
- MX: Défini les serveurs mails
- PTR: Résolution inverse (IP vers DNS)
- NS: Défini l'adresse du serveur DNS du domaine
- SRV: Version avancée des enregistrements MX
- TXT: Ajoute du texte à une zone (utilisé par SDF)
- SOA: Donne des informations sur la zone actuelle
Exemple:
test.cesi.fr. IN A 91.198.174.232
machin.truc.bidule.fr. IN A 10.109.173.197
dns.google.fr IN A 8.8.8.8
Exemple:
test.cesi.fr. IN AAAA 8f0:10:907a:8c5::
machin.truc.bidule.fr. IN AAAA 2fd0:1380:40e7:85::104
dns.google.fr IN AAAA 2a00:1450:4007:805::1017
Exemple:
test.cesi.fr. IN CNAME cesi.fr.
machin.truc.bidule.fr. IN CNAME yahoo.com.
Exemple:
synhack.fr. IN MX 5 mx2.ovh.net.
synhack.fr. IN MX 1 mx1.ovh.net.
synhack.fr. IN MX 100 mxb.ovh.net.
Exemple:
232.174.198.91.in-addr.arpa. IN PTR test.cesi.fr
197.173.109.10.in-addr.arpa. IN PTR machin.truc.bidule.fr.
8.8.8.8.in-addr.arpa. IN PTR dns.google.fr
Exemple:
synhack.fr. IN NS olga.ns.cloudflare.com.
synhack.fr. IN NS jim.ns.cloudflare.com.
Exemple:
synhack.fr. IN TXT "v=spf1 include:mx.ovh.com ~all"
- Installer bind9 sur VM2
- Configurer le DNS pour qu'il gère la zone cesi.local
- Ajouter deux entrées DNS correspondants aux autres machines du réseau
- Tester la configuration grâce à nslookup ou dig
Partage de fichier entre UNIX et Windows.
Implémentation opensource de SMB/CIFS.
C'est un logiciel libre, codé par reverse engineering.
Comme FTP, il s'agit d'une relation client/serveur.
SMB est un équivalent propriétaire de FTP.
Il ajoute quelques fonctionnalités
[global]
workgroup = WORKGROUP
server string = Samba Server %v
netbios name = centos
security = user
map to guest = bad user
dns proxy = no
[Anonymous]
path = /opt/anonymous
browsable =yes
writable = yes
guest ok = yes
read only = no
- Installez un serveur samba sur VM1
- Testez la configuration précedente en tentant de se loguer
- Ajoutez un partage pour les utilisateurs du groupe stagiaire, puis un pour ceux du groupe admin
Syslog est un protocole ET un format de log créé en 1980.
Il permet de gérer, filtrer et classer des évenements systèmes.
Présentation:
Les règles permettent de filtrer les logs afin de leur appliquer un traitement différent.
Les filtres:
- Selecteur
- Property based
- Regex
- Blocs (type BSD)
HUM...non
(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?).(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?).(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?).(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)
Présentation
Syntaxe reprise des filtres utilisés par syslogd sous BSD.
Exemples:
if $programname == 'prog1' then {
action(type="omfile" file="/var/log/prog1.log")
if $msg contains 'test' then
action(type="omfile" file="/var/log/prog1test.log")
else
action(type="omfile" file="/var/log/prog1notest.log")
}
Exemples:
if $fromhost == 'host1' then {
mail.* action(type="omfile" file="/var/log/host1/mail.log")
*.err /var/log/host1/errlog
} else {
mail.* action(type="omfile" file="/var/log/mail.log")
*.err /var/log/errlog
}
<date> <nom de l'hôte> <tag> <message>
Exemple:
Feb 19 16:04:46 babar su[3895]: pam_unix(su:session): session opened for ...
NetFilter est un module du kernel Linux, disponible depuis 2.4.
Il permet de gérer les paquets IP transitant sur une machine Linux
IPTables est un logiciel permettant de communiquer avec NetFilter.
Il s'agit donc d'une interface en ligne de commande (CLI) pour NF.
Il est le remplaçant de IPChains.
Dans IPTables, il y a des tables, elles segmentent le logiciel en fonctionnalités.
Ces tables sont composées de chaines qui définissent des moments auquel on applique le traitement.
Ces chaines sont composées de targets qui définissent l'action qu'on applique à cette chaine.
Filter: S'occupe du filtrage des paquets (entrée, sortie, forward)
NAT: S'occupe de la translation d'adresse ou de port
Mangle: S'occupe de la modification de paquet
Raw: S'occupe de configurer les paquets (eg: ne pas tracker le paquet)
Security: Utilisé par SELINUX (?)
Input: s'applique aux paquets qui entre sur une interface
Output: s'applique aux paquets qui sorte d'une interface
Forward: s'applique aux paquets entre deux interfaces
Accept: Accepte le paquet
Reject: Refuse le paquet (et averti l'envoyeur)
Drop: Refuse le paquet
Log: Log le paquet puis continue le processing normalement
Prerouting: s'applique aux paquets avant routage
Postrouting: s'applique aux paquets après routage
SNAT: Modifie l'adresse source
DNAT: Modifie l'adresse de destination
Masquerade: Modifie l'adresse source par celle du routeur
Prérequis:
Noyau Linux 2.4 minimum
Debian/Ubuntu: apt-get install iptables
Debian 8: apt install iptables
Centos/Fedora/RHEL: yum install iptables
Fedora (new): dnf install iptables
Développé par SUN (devenu Oracle) en 1984.
Il s'agit d'un système de fichier accessible via le réseau
Il existe 4 version du protocole:
- Version 1 et 2 non sécurisées fonctionnant sur UDP.
- Version 3 fonctionnant sur TCP.
- Version 4 est un reboot complet du protocole, inspiré par AFS.
- Installez un serveur NFS sur VM1
- Partager un dossier "/opt/nfsshare" via NFS
- Essayer d'y accéder grâce à un client NFS
OpenLDAP est une implémentation libre du protocole LDAP.
Ce protocole sert à créer un annuaire informatique fonctionnant sous forme de client/serveur
C'est sur ce protocole qu'est basé Active Directory
LDAP = Lightweight Directory Access Protocol
L'annuaire repose sur un modèle hierarchique
Il se représente comme un arbre (racine, branche, feuille)
Il est commun d'utiliser le modèle DNS pour la racine (dc)
dc=cesi,dc=fr
Les branches représentent ensuite des unités d'organisation (ou)
ou=computers,ou=network
Ou bien des personnes (cn)
cn=dupond,cn=paul
Le chemin complet vers une "feuille" est donc de la forme suivante:
cn=paul,ou=employés,dc=cesi,dc=local
Chaque feuille contient ensuite des attributs.
Pour un employé, il peut s'agir des éléments suivants:
Installation du démon LDAP
Installation de l'interface d'administration web LDAP
Docker est un système permettant la virtualisation d'application
Il se base sur les Linux Containers (LXC)
Ce système peut être comparé à OpenVZ.
Le même noyau est partagé entre les containers
Le but est de fournir au développeur un environnement de développement production-ready léger.
Il permet de suivre et enregistrer les changements dans la VM
Il permet aussi de créer des images permettant au sysadmin un déploiement rapide
Enfin il offre une architecture simple et scalable
La procédure d'installation changeant régulièrement:
Les volumes permettent de créer un dossier partagé entre l'hôte et la machine virtuelle.
Un container s'autodétruit lorsqu'il s'éteint (ses données aussi)
Les volume ne sont pas détruit à la fermeture ou l'effacement d'un container
Ils peuvent donc servir de point de sauvegarde
Utilisation:
Exemple:
Le but d'une commit est de sauvegarder l'état d'un container sous forme d'image.
Utilisation:
Exemple:
De base, un container a sa propre adresse IP
Mais il est aussi possible de lier un port de la VM avec un port de l'hôte
Syntaxe:
docker run -p <port_vm>:<port_hote> <nom_image> <cmd>
Exemple:
docker run -p 80:80 nginx <cmd>
Les containers docker permettent l'utilisation de variable pour la configuration de l'instance.
Il est par exemple possible de passer en argument les informations de connexion d'un container wordpress à sa base de données.
Les variables sont passé au système virtualisé en tant que variable d'environnement.
Syntaxe:
docker run -e <variable>=<valeur> -e <variable2>=<valeur2> <image> <cmd>
Exemple:
docker run -e bddhost=192.17.10.2 mon_image /bin/bash
Il est possible de lier plusieurs container entre eux.
Les variables de chacun des containers sont partagés entre les VM.
Par exemple pour faire fonctionner un wordpress et son mysql:
docker run --name wp --link mysql:mysql wordpress
La configuration des images peut se faire par l'intermediaire d'un fichier
Le fichier doit être nommé Dockerfile et contient la "recette" de l'image
La recette est l'ensemble des instructions permettant de construire l'image
FROM ubuntu:latest
RUN apt-get update && apt-get upgrade -y
RUN apt-get install apache2 mysql-server php5
Il suffit ensuite de construire l'image: docker build -t mon_image .
Vagrant est un logiciel permettant de créer et provisionner rapidement des machines virtuelles.
Il gère par défaut plusieurs "providers":
Le but est de monter une ou plusieurs VM avec l'aide d'un simple script.
Celui-ci donne les instructions de configuration à l'instar d'un Dockerfile puis donne ensuite à l'utilisateur la main sur la machine.
Exemple:
vagrant init hashicorp/precise32
vagrant up
vagrant ssh
vagrant init: Crée un fichier de configuration dans le dossier courant
vagrant status: Récupère le status de la VM
vagrant up: Démarre la VM
vagrant ssh: Se connecte en SSH à la VM
vagrant reload: Recharge le Vagrantfile (configuration)
vagrant provision: Configure la VM
vagrant suspend: Met en pause la VM
vagrant resume: Retire la pause de la VM
vagrant halt: Arrête la VM
vagrant destroy: Détruit la VM
Vagrant offre à l'instar de docker plusieurs fichiers de configuration prépackagé permettant de rapidement monter une VM.
Il est néanmoins possible de créer ses propres VM avec l'aide d'un fichier de configuration nommé Vagrantfile.
Celui-ci peut être généré par la commande "vagrant init" qui créera un squelette de configuration dans le dossier courant.
La syntaxe de configuration change régulièrement et ajoute de nouvelles fonctionnalités. Voici donc le lien vers la documentation:
Des plugins sont disponible afin d'étendre les fonctionnalités de Vagrant. Il est par exemple possible d'ajouter une extension permettant la configuration du fichier "/etc/hosts" de la VM via le Vagrantfile.
La commande d'installation est la suivante:
vagrant plugin install <nom plugin>