Systèmes d'exploitation

Samuel AUBERTIN

WHOAMI

  • DUT R&T 2015
  • Ingénieur INFRES - École des Mines d'Alès 2018
    • Spécialité Systèmes et Réseaux
    • Apprentissage avec IBM
  • Consultant Cybersécurité - Doctorant CIFRE 2022 ?

    twitter.com/sk4nz

sk4.nz

Avant Propos

Un peu de hardware

Architecture VON NEUMANN

Basic Input Output System

UN pEtit coup ?

Les modes Processeur x86

Appels systèmes (Linux x86)

; hello_world.nasm
 section .data
      ; maVariable: valeur     
        helloMsg:   db 'Hello world!',10         ; Hello world!\n
        helloSize:  equ $-helloMsg               ; 13 = sizeof('Hello world!\n');
 section .text
      ; main()
        global _start
 _start:
        mov eax, 4            ; A = Appel système N° 4 : "write" (sys_write)
        mov ebx, 1            ; B = Descripteur de fichier N° 1 : STDOUT (sortie standard)
        mov ecx, helloMsg     ; C = Paramètre : la chaîne à afficher
        mov edx, helloSize    ; D = Paramètre : la taille de la chaîne
        int 80h               ; Exécution de l'appel système avec l'interruption 0x80
      ; === MODE NOYAU ===
        mov eax, 1            ; Appel système "exit"
        mov ebx, 0            ; Code de retour
        int 80h               ; Exécution de l'appel système avec l'interruption 0x80
      ; === MODE NOYAU ===
<unistd.h> : ssize_t sys_write(unsigned int fd, const char * buf, size_t count)

Mode utilisateur

#include <stdio.h>

int main(int argc, char **argv) {
    printf("Hello World !\n");
    return 0;
}

Mode noyau

#include <unistd.h> 

int main(int argc, char **argv) {
    write(1, "Hello World!", 12);
    return 0;
}

UNIX ?
FreeBSD
NETBSD

OpenBSD

UNIX ?

L'abstraction

Unix

  • Une famille de systèmes d'exploitation

 

 

 

 

 

  • Qui répondent à des normes
    • ISO/IEC 9945-2009
    • IEEE Standard n°1003.1

 

 

Un système d'exploitation ?

Noyau

Système d'exploitation

Interface utilisateur

Hardware

API/ABI

Drivers

Des normes ?

POSIX

API

ABI

Philosophie

Rasoir d'Ockham : Pluralitas non est ponenda sine necessitate
(les multiples ne doivent pas être utilisés sans nécessité)

 

La simplicité est la sophistication suprême

Léonard de Vinci

 

Il semble que la perfection soit atteinte non quand il n'y a plus rien à ajouter, mais quand il n'y a plus rien à retrancher

Antoine de Saint-Exupéry

 

 

 

 

 

PhilosophiE'

KISS : Keep it simple, stupid

 

 

 

Arbre généalogique unix

Arbre généalogique unix

Dates Clés

  • 1964 - Multics - Bell Labs, MIT, DARPA et G.E.
  • 1969 - Unics - Ken Thompson de Bell Labs
  • 1973 - 25 machines Unics, réécriture en C (Denis Ritchie)
  • 1977 - Berkeley Software Distribution sur VAX
  • 1981 - Dirty Operating System
  • 1983 - 4.2BSD - Avec TCP/IP
  • 1987 - Minix - Andrew Tanenbaum
  • 1991 - Linux v0.0.1 - Linus Torvalds
  • 1992 - 386BSD  - Jolix
    • 1993 - FreeBSD et NetBSD
    • 1996 - OpenBSD - Theo De Raadt

Pourquoi ça a marché

"Do One Thing and Do It Well."

ls

cat

grep

cd

cp

Freebsd

aK-47 du sysadmin

Un système Complet

Un noyau ET une base.

 

Facilement modifiable.

 

Une équipe de développeurs barbus.

Assez peu connu...

Qui tourne sur BEAUCOUP D'ARCHITECTURES

  • amd64
  • i386
  • ia64
  • powerpc
  • powerpc64
  • sparc64
  • ARM

Fonctionnalités

  • ZFS : Sytème de fichiers
  • Jails : Conteneurs
  • bHyve : Hyperviseur
  • PacketFilter : Pare-Feu
  • 25450 ports et packages disponibles
  • Cartes graphiques ATI et nVidia !
  • Excellent support audio

~15 vulnérabilités/an

Patchs dans -STABLE et -CURRENT :

Fiable

 

  • HEARTBLEED : 6h
  • SHELLSHOCK : 12h
  • POODLE : 2h

Simple à Administrer

 

# pkg install nmap

Installation de nmap via les packages

# portsnap fetch extract
# cd /usr/ports/security/nmap/
# make install clean

Installation de nmap via les ports

  • Handbook
  • Developers Handbook
  • Arch Handbook

Documentation

 

Beaucoup de littérature parue !

Licence

Copyright (c) 1998, Regents of the University of California
All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:

* Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
* Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.
* Neither the name of the University of California, Berkeley nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission.

NETbsd

Bien sûr que ce machin tourne sous netbsd

NETbsd

57 architectures supportées
http://www.netbsd.org/ports/

OpenBSD

Le TURFU

connaissez-vous...

Tous proviennent du projet OpenBSD !

OpenSSH

OpenSMTPd

OpenBGPd

OpenNTPd

PacketFilter

LibreSSL

La sécurité avant tout

~7.5 vulns/an !

strlcpy()

strlcat()

W^X

segments .rodata

random malloc()

random mmap()

chroot amélioré

doas

pledge()

Mais aussi...

Pas de BLOBS !

DOAS

Dedicated OpenBSD Application Subexecutor : le sudo maison.

 

 

#/etc/sudoers
sk4nz ALL = (root) NOPASSWD: /usr/sbin/nmap
#/etc/doas.conf
permit nopass sk4nz as root cmd /usr/sbin/nmap

DOAS'

Pledge()

#include <unistd.h>
int pledge(const char *promises, const char *paths[]);
if (pledge(“dns”, NULL) == -1)
    err(1, “Pledge Init”);

Avec pledge(), on promets à l'OS que le programme ne fera que ce qui est énoncé.

La DOCUMENTATION

La plus complète de toutes celles que j'ai pu lire.

  • Pas de forum.
  • Pas de chat IRC officiel pour les utilisateurs.

LEs points à améliorer

  • Le support multicoeur

 

 

 

 

 

 

  • Le système de fichiers : UNIX v7 Fast File System
    • Pas de snapshots
    • Pas über-performant

Un serveur WWW ?

# cat /etc/httpd.conf
server "sk4.nz" {
    listen on * port 80
}

Dynamique ?

# cat /etc/httpd.conf
server "sk4.nz" {
    listen on * port 80
    location "/*.php*" {
        fastcgi socket "/run/php-fpm.sock"
    }
}

Licence

Copyright (C) <année(s)> <détenteur(s)>

Permission to use, copy, modify, and/or distribute this software for any purpose with or without fee is hereby granted, provided that the above copyright notice and this permission notice appear in all copies.

Conclusion

La Cohérence

La Sécurité PRO-ACTIVE

LA DOCUMENTATION

Systèmes d'exploitations : BSD

By samuelaubertin

Systèmes d'exploitations : BSD

Une présentation d'Unix, FreeBSD et OpenBSD.

  • 968