Forum général.général sécuriser un serveur web auto hébergé

Posté par . Licence CC by-sa.
Tags : aucun
2
1
déc.
2019

Bonjour,

Voiçi un compte rendu des actions opérés après que l'os de mon raspberry pi (utilisé pour un serveur web perso) m'ait lâché.
Bien sûr, j'éviterais de parler de tout ce qui est récuperation de la db à froid de la carte SD , ni de la reconstruction du site web, ni de la reinstallation de l'OS, plutôt les choix que j'ai fait.

1- L'ancien site web était sur apache/MySQL/PHP, j'ai décidé de migrer vers nginx/mariadb/php.
Raison:
Nginx me semble plus facilement configurable, même si la doc pour apache est plus facilement accessible
j'ai choisi mariadb pour les performances

2- J'ai choisi de prendre les package plutôt que créer des containers pour la simple raison que ce site web ne néccessite pas de CI/CD, et donc, je ne voulais pas non plus que ça se transforme en prise de tête

Suite à ça, il m'a fallu penser un peu sécurité

3- Bien sûr, j'ai supprimé l'utilisateur pi, et créer un user à moi

4- Je n'autorise que les accès ssh avec clef, pour éviter les attaques brut force

5- J'ai modifié le port d'écoute du ssh pour éviter que ça loggue de trop
6- j'ai installé fail2ban et sshguard

Côté ssh , cela me semble suffisant, mais si vous avez des idées, je suis preneur

6- Côté web, étant amené à modifier le site web en remote, j'ai configuré le site web en SSL via certbot (Let's encrypt) et rediriger toutes les requêtes du ports 80 vers le port 443

Cela me semble suffisant, du moins les trucs que j'ai pu lire à droite à gauche ne me semble pas aller plus loin.

Il me semble qu'il me manque une chose, mais j'ignore quoi , avez vous une idée  ?

  • # ip table

    Posté par . Évalué à 2 (+0/-0).

    il manque pas le parfeu ? :)

    iptable (mais je crois que ca existe plus)

    j'utilise shorewall, avec un policy qui interdit tout sauf ce que j'ai autorisé

  • # Accès ssh local

    Posté par (page perso) . Évalué à 8 (+6/-0).

    De mon côté, j'ai conservé l'accès avec mot de passe sur mon pi, uniquement à partir des adresses locales.

    Ça donne quelque chose comme ça dans le fichier /etc/ssh/sshd_config

    PasswordAuthentication no
    Match Address 192.168.0.*
            PasswordAuthentication yes
    
    
  • # Renforcer la sécurité de https

    Posté par . Évalué à 4 (+3/-0).

    Le site de Mozilla https://ssl-config.mozilla.org/ permet de générer une configuration pour plusieurs serveur web mais aussi base de données, serveur mail…

    3 niveaux de sécurité sont proposés : moderne, intermédiaire et vieux.

  • # Renforcer la sécurité de openssh

    Posté par . Évalué à 3 (+3/-1).

    Au minimum, désactive la connexion pour le compte root.

    Le site de Mozilla (encore ;) https://infosec.mozilla.org/guidelines/openssh propose des configurations pour le serveur openssh mais aussi le client.

    C'est un document pour aider les employés de Mozilla, mais il donne plein de bons conseils (par exemple comment avoir une authentification à plusieurs facteurs).

  • # Mariadb

    Posté par (page perso) . Évalué à 2 (+0/-0).

    j'ai choisi mariadb pour les performances

    Wrong choice, try again?
    D'expérience mysql est toujours devant Maria en terme de perf à releases équivalentes, et Maria a de grosses 'régression' de parsing/perfs qui commencent tout juste à s'améliorer en 10.4 (ie on retrouve les perfs de mysql 5.5)

    • [^] # Re: Mariadb

      Posté par . Évalué à 1 (+0/-0).

      Bad choice alors. Fait chier, vraiment.
      Bon la base est pas enorme non plus, je vais dumper la base et la remettre sur du mysqld

      Merci

    • [^] # Re: Mariadb

      Posté par (page perso) . Évalué à 1 (+0/-0).

      tu as une source objective de ce que tu avance ? ( pas un blog mysql quoi .. )

      • [^] # Re: Mariadb

        Posté par (page perso) . Évalué à 1 (+0/-0).

        Parceque bon ca fait une paille que mysql est derriere, bien avant la 10.3, surtout que mysql ne fait pas la moitié de mariadb en terme de functionnalité… https://www.softizy.com/blog/mariadb-10-1-mysql-5-7-performances-ibm-power-8/

        • [^] # Re: Mariadb

          Posté par . Évalué à 2 (+0/-0).

          Je ne sais pas si cet article est encore d'actualité suite à la sortie de Mysql 8.

        • [^] # Re: Mariadb

          Posté par (page perso) . Évalué à 2 (+0/-0).

          fonctionnalité != performances

          source: experience professionnelle

          Nous avons une douzaine de serveurs SQL qui tournaient sous mysql 5.5, l'upgrade debian/stretch à imposé la migration sur mariadb 10.0, résultat les requêtes de recherches de notre application on nécessité l'ajout d'un /tmp de 100Go (sur des machines dont la racine fait 10Go, + volume séparé pour le /var/lib/mysql) car le parser analyse mal les requêtes et génère des fichiers temporaires énormes (et donc des temps de requêtes supérieurs a 3 minutes).

          Accessoirement les saturations de /tmp entrainement des blocages d'écritures des relay-logs, avec corruption, alors même que le relay-logs n'est pas sur la même partition.

          Pour l'instant mes tests montrent que seul un passage à mariadb 10.4 permet de retrouver un parseur digne de mysql 5.5 mais il est tout juste sorti et je n'ai pas encore suffisamenet analysé les impacts

  • # .

    Posté par . Évalué à 2 (+1/-0).

    D'une manière générale, mysql n'est pas bon non plus contrairement à ce qu'on pourrait penser : ) du fait de son fonctionnement interne… et de sa façon d'exécuter les requêtes (son optimiseur interne est une aberration…) mais cela n'importe pas beaucoup au final sur des petites bases…

    Sinon très clairement il va te manquer une couche iptable et n'ayant pas d'info sur la segmentation que tu as faite sur ta machine en terme de lv mais si on veut être dans les "règle de l'art" il faut s'y pencher :)

    What else ? suivre les correctifs niveaux applicatifs

  • # En plus

    Posté par . Évalué à 1 (+0/-0).

    Si tu veux t'amuser tu peux faire tourner selinux (ou apparmor). C'est un peu douloureux au début ou sur des déploiements complexes.

    Et sinon les indispensables : backup et monitoring !

Envoyer un commentaire

Suivre le flux des commentaires

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