[Proxmox] Cloud serveur Proxmox 6.x sur un serveur Kimsufi

 

Cloud serveur Proxmox 6.x sur un serveur Kimsufi
Article original Publié le : 14 février 2020
Mise a jour le :

 

 

I. Solution

Pour les besoins d’un petit labs de quelques mois, c’est une solution correcte pour une vingtaine d’euros.
Voici l’instance utilisée

  • KS-11 Intel Xeon W3520 4c/8t 2,66GHz
  • 16Go DDR3 ECC 1333 MHz
  • SoftRaid 2x2To
  • 100 Mbps
  • 19,99 € HT (soit 23,99 € TTC)

Toutes les offres ici

Je dispose de quelques serveurs physiques récupérés gracieusement Dell et HP mais le cout élevé en électricité ça douille de ouf, le bruit même si isolé, les coupures de courant car non ondulé et connexion vdsl en carton … m’ont orienté vers cette solution,
C’est aussi l’occasion de tester cet environnement en cloud et d’essayer de le sécurisé au maximum.

 

 

II. Installation

Les templates sont nombreux, j’ai choisi par rapidité Proxmox v6.
L’installation est assez succincte, assez transparente même, à part le partitionnement tout est automatisé, on se retrouve après 20 min avec un Proxmox fraichement installé clé en main.


 

 

 

 

/!\ Le mot de passe root pour la connexion ssh/web est envoyé par mail a l’issu de l’installation.

 

 

III. Préparation de l’environnement

Les premières actions seront bien sûr de désactivés le compte root, faire du filtrage ip, changer le port ssh, générer un certificat Let’s Encrypt, mais commençons par le commencement ..

/!\ Créer un record dns chez le registrar

 

  • Maintenir son système a jour

  • Installation de paquet utile (pour l’utilisation de vim sous Debian voir cet article)

  • Généré un mot de passe solide avec pwgen

  • Changé le mot de passe root

  • Créer un compte utilisateur et l’ajouter au groupe sudoers (visudo)

  • Pour SSH, changer le port d’écoute, désactiver le compte root et ajouter le ou les utilisateurs autorisés à se connecter

  • Recharger ssh

 

Fermé la session et se reconnecter avec le compte utilisateur précédemment

/!\ Si l’erreur Could not chdir to home directory /home/utilisateur: No such file or directory apparait avec le compte utilisateur, il faut créer manuellement son home



Déconnecter/reconnecter et on retrouve un shell en /bin/bash avec son home

 

IV. Iptables

Il faut maintenant sécurisé iptables car par défaut il accepte tout.
Ce serveur n’a pas vocation à être ouvert a tout le monde, du coup je restreins le port ssh et le port d’administration de Proxmox a mes seules IP’s publiques.

/!\ L’importance de verrouiller au mieux ces points d’entrée
Dès que le serveur est en ligne, les bots bombardent à la recherche d’accès …

 

État par défaut

 

Avant de tout droper, il faut créer les règles pour s’assurer de garder la main dessus puis il faudra les sauvegarder.
Autoriser le loopback

 

Autoriser SSH pour son ou ses IP’s publiques

 

Autoriser le port de l’interface Proxmox pour son ou ses IP’s publiques

 

Autoriser les ports dns en udp/tcp et http/https en tcp pour que la machine puisse sortir et faire des updates/installes

 

Conserver un état connecté

 

Autoriser l’icmp,
/!\ J’ai eu droit a un reboot en mode rescue (Le serveur est démarré (demande du ‘login’ à l’écran) mais inaccessible par le réseau (pas de ‘ping’).)

Autant autoriser le ping en sortant pour les machines !

 

Autoriser le ntp

 

Autoriser le DHCP d’Ovh (stack erreur persistante dans les logs)
dhclient[754]: DHCPREQUEST for xx.xx.xx.xx on vmbr0 to 91.121.126.xx port 67
dhclient[754]: send_packet: Operation not permitted
dhclient[754]: dhclient.c:2755: Failed to send 300 byte long packet over fallback interface.

 

Enfin bloquer tout le trafic et sauvegarder l’état de la configuration

 

 

Les règles minimales sont en places, si les règles de drop sont passés alors on peut sauvegarder la conf.

/!\ Sur Debian les règles ne sont pas persistantes au redémarrage
Possible de faire un script au démarrage pre-up qui s’exécute après que la configuration réseau soit chargée ou
Installer le paquet iptables-persistent et son service netfilter-persistent qui va permettre de pérenniser tout ça.

 

Puis sauvegarder les règles

 

Et recharger la conf.

 

/!\ Les règles d’accès ci-dessus sont un minimum, il y aura d’autres règles à ouvrir plus loin dans la doc

 

 

V. Let’s Encrypt

On peut enfin se connecter a l’interface graphique

 

Pour la mise en place du certificat Let’s Encrypt, c’est devenu beaucoup plus simple que dans mon souvenir en v4

  • Aller sur le node -> system -> certificates
  • Cliquer sur Add et ajouter son domaine

  • Puis Add ACME Account, renseigner son mail et accepter le TOS

  • Puis lancer la création du certificat

/!\ Lets’Encrypt nécessite l’ouverture des ports 80 et 443 en entrée

 

Le service pveproxy.service redémarre automatiquement et la page est bien sécurisé

 

 

VI. Création d’un nouveau bridge et NAT

Pour pouvoir créer x machines et contourner la restriction d’une seule IP publique, il faut créer un nouveau subnet pour ensuite naté les IP’s/ports

 

Actuellement il y a un bridge vmbr0 qui porte le port réseau enp1s0 auquel est rattaché l’IP publique

Crée un nouveau bridge sur le serveur qu’il s’appellera vmbr1 et qui portera l’adresse IP 192.168.50.1/24

  • Aller sur le node -> system -> network
  • Cliquer sur Create et Linux Bridge

 

/!\ Un redémarrage du serveur est nécessaire pour appliquer la nouvelle configuration réseau

 

Il faut maintenant faire le routage, on peut imaginer divers scenarios,
Dans mon cas j’ai essentiellement besoin d’accès ssh sur les différentes vms

  • Activer l’IP Forwarding pour router les paquets entre interface

  • Pour translater et renvoyer tout le trafic du subnet 192.168.50.0/24 vers l’interface vmbr0

  • Il reste à définir sur chaque machine une adresse et port et faire une règle de nat prerouting
    le port sur la machine distante sera 22 et sera naté en sortie sur 2223

 

Sauvegarder la conf et redémarrer le service

 

Lancer une connexion ssh sur la machine distante en utilisant le port défini

/!\ Cette machine est exposée sur le net, il convient donc de désactiver le compte root et de configuré iptables comme vu plus haut.

 

 

VII. Next step ?

Pour bien faire il faudrait créer un nouvel admin et verrouiller le compte root de l’interface graphique, mais quand j’ai exécuté le script de Let’s Encrypt il y a eu des erreurs car il faisait appel a root. À voir …

Mettre en place un Fail2ban mais en verrouillant l’accès a mes IP’s publiques je pense que cela ne soit pas nécessaire.
si je me trompe je serais ravie d’avoir un retour

D’autres articles en lien avec celui-ci seront créés prochainement.

 

 

VIII. Tips

Supprimer la popup de subscription

 

 

IX. Quelques docs

http://www.octetmalin.net/linux/tutoriels/iptables-configurer-gerer-table-nat-dnat-snat-chaine-prerouting-postrouting-output.php

https://mind-and-go.com/blog/why-not-1/post/cloud-proxmox-derriere-une-seule-ip-24

https://vdillenschneider.fr/architecture-de-services-avec-proxmox-sur-un-serveur-kimsufi

http://communaute-omr.fr/?p=195

 

 

No votes yet.
Please wait...

2 thoughts to “[Proxmox] Cloud serveur Proxmox 6.x sur un serveur Kimsufi”

  1. Hello, j’avais pensé aussi à héberger chez moi mais trop de contraintes aussi…Je n’ai pas encore testé un dédié mais je pense m’y mettre…

    Pour le moment, je suis encore sur un VPS pour faire mes petites bidouilles…

    Sympa tes articles en tout cas, on sent la personne passionnée…

    Kenavo

    No votes yet.
    Please wait...
    1. Bonjour,
      Merci, je travaille avec des personnes passionnées ça aide 🙂
      le dédié reste une bonne alternative, pour le prix, la dispo h24 et ne pas gérer la maintenance, c’est confortable pour un p’tit labs avec un annuaire, proxy, fw …
      J’adore Proxmox, plus tard j’installerais Openshit ou d’autre solutions quand j’aurais du temps..

      No votes yet.
      Please wait...

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.