Journal Auto-hébergement sous OpenBSD

Posté par  (site web personnel) . Licence CC By‑SA.
Étiquettes :
20
4
mar.
2021

Bon, tu as lu le titre, tu te doutes que je ne suis pas là pour te parler de mes protèges préservatifs cousus maison. Je te réserve ça pour un prochain journal.

Aujourd'hui, je vais te résumer mon installation d'OpenBSD sur un netbook pour faire tourner mon blog et une instance FreshRSS.

Fluff

Cela fait un moment que Solène, développeuse OpenBSD me parle de ce système. Je n'y ai jamais trop prêté attention. Voyez-vous, elle et moi n'avons pas la même définition de la simplicité. Elle code en lisp et perl sous emacs avec un stacking vm, alors que je suis plutôt du genre arch/kde/vscode/python/rust. Je n'ai jamais compris comment elles faisait pour aimer ses trucs et réciproquement¹. Alors quand ses principaux arguments étaient « ça marche pas », « c'est lent », et « les programmes crashent à cause des protections mémoires :D », je pense que vous comprendrez aisément mon manque d’intérêt. Pis là, comme l'envie de m'auto-héberger commence à poindre, j'ai décidé de lui donner une chance.

Le serveur ? Un netbook de récupération qui prenait la poussière et que j'ai décidé de sacrifier pour la cause.

Un netbook affichant le prompt OpenBSD

Installation

Pour l'installation, Read The Fine Documentation.

Mais en résumé, télécharger l'image, l'écrire sur une clé usb, l'insérer dans le netbook et booter.

Il est temps d'attaquer les choses sérieuses. "fr-dvorak" (bépo), enter, "harvest.slaanesh.org", enter, "killruana", enter, reboot. Yup, aussi simple que ça. Au premier boot, le système va automatiquement chercher les dernières mises du système et télécharger les firmware du processeur et du module Wi-Fi.

La connexion au Wi-Fi se fait avec un simple fichier de configuration et fonctionne sans aucun soucis.

$ cat /etc/hostname.ral0
nwid MY-SSID wpakey MY-TOP-SECRET-PASSWORD
dhcp

Installation des paquets nécessaires

$ doas pkg_add php php-curl php-pdb_pgsql php-fpm postgresql-server 

Génération des certificats Let's Encrypt avec le client ACME intégré au système

$ doas cp /etc/examples/httpd.conf /etc/httpd.conf
$ doas rcctl start httpd
$ doas cp /etc/examples/acme-client.conf /etc/acme-client.conf
$ doas vi /etc/acme-client.conf
$ cat /etc/acme-client.conf
<snip>
domain slaanesh.org {
    alternative names { www.slaanesh.org rss.slaanesh.org }
    domain key "/etc/ssl/private/slaanesh.org.key"
    domain full chain certificate "/etc/ssl/slaanesh.org.fullchain.pem"
    sign with letsencrypt
}
$ acme-client slaanesh.org

Configuration du serveur web intégré au système :

$ doas nvim /etc/httpd.conf
$ cat /etc/httpd.conf
# $OpenBSD: httpd.conf,v 1.20 2018/06/13 15:08:24 reyk Exp $

server "slaanesh.org" {
    alias "beta.slaanesh.org"
    alias "www.slaanesh.org"

    listen on * port 80

    location "/.well-known/acme-challenge/*" {
        root "/acme"
        request strip 2
    }

    location * {
        block return 302 "https://$HTTP_HOST$REQUEST_URI"
    }
}

server "slaanesh.org" {
    alias "www.slaanesh.org"

    listen on * tls port 443

    tls {
        certificate "/etc/ssl/slaanesh.org.fullchain.pem"
        key "/etc/ssl/private/slaanesh.org.key"
    }

    root "/htdocs/blog"
}

server "rss.slaanesh.org" {
    listen on * tls port 443

    tls {
        certificate "/etc/ssl/slaanesh.org.fullchain.pem"
        key "/etc/ssl/private/slaanesh.org.key"
    }

    root "/htdocs/freshrss/p"
    directory index "index.html"

    location "*.php*" {
        fastcgi socket "/run/php-fpm.sock"
    }

    location "/i/*" {
        directory index "index.php"
    }
}
$ rcctl restart httpd

Configuration de postgresql et de php classique, création de la base de données et de l'utilisateur pour freshrss, chargement des modules php nécessaires, …

Lancement des services php-fpm et postgresql :

# rcctl php74_fpm postgresql

L'installation de FreshRSS est laissé en exercise au lecteur. Mais en résumé, récupérer les sources, les mettre dans /var/www/htdocs/freshrss, et accéder à votre instance.

Conclusion

Ça m'a pris moins de trois heures pour avoir mon blog et mon [instance](https://rss.slaanesh.org/i/ freshrss en partant de zéro. Il n'y pas eu de mauvaises surprises. Tout fonctionne simplement et directement. La documentation est claire (si jamais vous trouvez ce que vous cherchez. Ça manque d'un wiki tout ça). C'est simple d'utilisation. Ça juste marche. Je recommande et je regrette de ne pas avoir découvert plus tôt.

1: c'était à l'époque hein, les goûts et avis ont depuis évolués.

  • # LA doc d'OpenBSD

    Posté par  (site web personnel) . Évalué à 3. Dernière modification le 05 mars 2021 à 09:21.

    La documentation est claire (si jamais vous trouvez ce que vous cherchez. Ça manque d'un wiki tout ça)

    Le point fort d'OpenBSD, toujours cité dans les revues, est bien sa documentation ultra-claire et au taquet.

    Après les barbus de Theo sont pas les plus grandes Web wh*res ; je me rappelle d'un mec qui voulait ajouter une feuille de style CSS à ladite doc et s'était fait trouer la peau. Un wiki ? Spontanément, ça les ennuiera sans doute de devoir surveiller le truc s'il est hébergé chez eux ; ils seront peut-être OK si on s'occupe de l'admin (infra+contenu) en même temps.

    • [^] # Re: LA doc d'OpenBSD

      Posté par  (site web personnel) . Évalué à 4.

      On notera que le projet OpenBSD met en avant la sécurité de son système. Et cela impose une documentation claire, précise, et ultra-détaillé.
      Un système peut être documenté, et ne pas être sûr, mais un système non documenté ne peut revendiquer d'être sûr.

      • [^] # Re: LA doc d'OpenBSD

        Posté par  . Évalué à 2.

        Et ça impose aussi de privilégier les programmes bien écrits.

        C'est clair que la doc est excellente, pas besoin de connexion Internet pour configurer son système.

        Il y a quelques années, j'ai installé OpenBSD pour la première fois, sur un netbook mais le système refusait de booter à cause d'une erreur au niveau ACPI. Je ne suis pas programmeur système et je n'ai jamais osé toucher au noyau Linux mais j'ai réussi à trouver la cause de l'erreur dans l'interpréteur AML (les entiers étaient considérés signés alors qu'ils sont non-signés). Ca m'avait pris 8 heures tout de même.

  • # FreshRSS

    Posté par  . Évalué à 2.

    Je connaissais pas, mais je vais l'essayer.

    Merci pour la découverte

  • # «Héberger son serveur avec OpenBSD» par Thuban

    Posté par  . Évalué à 3.

  • # apropos

    Posté par  (site web personnel) . Évalué à 3.

    La documentation est claire (si jamais vous trouvez ce que vous cherchez. Ça manque d'un wiki tout ça).

    En plus de la FAQ (qui fait un peu office de wiki, mais plus à jour), personnellement j'adore apropos, qui sur OpenBSD a plus de fonctionnalités et permet de faire des requêtes vraiment variées.

  • # Is OpenBSD secure?

    Posté par  . Évalué à 3.

    • [^] # Re: Is OpenBSD secure?

      Posté par  (site web personnel) . Évalué à 7. Dernière modification le 05 mars 2021 à 19:07.

      J'ai déjà vu ce site mentionné une ou deux fois. C'est trop sarcastique et sorti de contexte pour ce qui est du contenu non technique (dont les citations), et bien que l'analyse de la partie technique soit plus sérieuse (pour ce que j'en ai vu vite fait), elle ne met pas toujours les choses dans leur contexte non plus.

      L'intérêt de l'approche de la sécurité dans OpenBSD n'est pas dans une validation de la pertinence théorique de toutes ses mitigations (certaines sont très utiles, d'autres moins mais ajoutées pour expérimenter car elles ne coûtent pas cher), ni que chacune soit la version la plus avancée connue de la mitigation (pour certaines oui, pour d'autres non). Ce qui importe, c'est qu'elles sont appliquées par défaut, s'ajoutent entre elles (défense en profondeur) et restent pragmatiques et sans gêne pour l'utilisateur (pas de grosse perte de performances et ne cassent pas trop de programmes).

      Certaines critiques ont tendance à supposer que l'attaquant peut se permettre un nombre très grand d'attaques, alors qu'en réalité l'attaquant n'a souvent qu'un nombre d'essais limités lorsqu'il attaque une machine à distance : s'il crashe le programme, son attaque est le plus souvent ratée. OpenBSD ne relance pas par défaut un démon qui aurait crashé, un admin est censé passer par là pour voir ce qui s'est passé. Le site en question a tendance à passer en revue les mitigations dans le contexte d'attaque locale : toutes les mitigations ne visent pas forcément à être utiles dans ce contexte.

      • [^] # Re: Is OpenBSD secure?

        Posté par  . Évalué à 4.

        OpenBSD ne relance pas par défaut un démon qui aurait crashé, un admin est censé passer par là pour voir ce qui s'est passé.

        Du coup, ça fait un DoS.

        « Rappelez-vous toujours que si la Gestapo avait les moyens de vous faire parler, les politiciens ont, eux, les moyens de vous faire taire. » Coluche

    • [^] # Re: Is OpenBSD secure?

      Posté par  (site web personnel) . Évalué à 1. Dernière modification le 05 mars 2021 à 19:10.

      if you don’t explain exactly what you are securing against and how you secure against it, the answers can be assumed to be: “bears” and “not very well”.

      😆

      OpenBSD disabled HyperThreading support by default in June 2018

      La sécurité contre la performance : fine. Un choix assumé dés la page d'accueil.

      No bugtracker - No public code reviews - No justification/context/threat model for mitigations - No context for security issues - No continuous integration

      …ce qui fonctionne uniquement car, contrairement à Linux, OpenBSD fonctionne en cathédrale.

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.