web-dev-qa-db-fra.com

Comment configurer un serveur Ubuntu pour qu'il soit (en toute sécurité) disponible sur Internet?

(excusez-moi d'avance, je suis un pro-windows récemment converti en ubuntu ... si mes questions sont évidentes, dites-le-moi).

Je veux construire un serveur Ubuntu connecté en permanence à Internet. Je ne possède qu'une adresse IP. L’objectif principal du serveur est de servir de contrôleur de code source (probablement pas encore choisi git ou svn ...), mais aussi d’autres utilisations occasionnelles (partage de fichiers avec la famille ou le client, sauvegarde personnelle, hôte d’applications Web Je peux écrire, etc. J'aimerais également pouvoir accéder à tout moment à l'ordinateur pour l'administrer, même derrière le proxy d'un client n'autorisant que le protocole http ou https.

Quelles sont les étapes standard pour y parvenir?

  • Ma première tâche consiste à configurer le serveur openssh. Est-il possible (et "assez" sécurisé) de l’ouvrir à Internet sur un port standard (compatible pare-feu/proxy client).
  • Est-il possible de configurer un serveur VPN, qui est exécuté à partir d'un plugin de page Web (également hébergé par le serveur)?
  • comme je n'ai qu'une seule adresse IP (IP V4 et IPV 6 en fait, mais je ne pense pas que l'adresse IP V6 sera désormais accessible depuis le réseau du client), puis-je faire coexister Apache et un autre logiciel serveur sur les mêmes ports standard?

merci d'avance ;)

7
Steve B

Lorsqu'il est correctement configuré, OpenSSH est sûr, même sur le port standard. Le fait de l'éloigner du port standard vous évite que vos fichiers journaux soient remplis par des tentatives de connexion non autorisées. Plus de détails sur la fin.

Il est très dangereux d'accéder à votre serveur si vous ne possédez pas le contrôle de l'ordinateur sur lequel vous devez vous connecter (ce qui, à mon avis, est la raison pour laquelle vous devez utiliser un plugin de navigateur).

OpenVPN peut être configuré pour partager TCP ports avec un serveur HTTP/HTTPS, à partir de sa page de manuel :

--port-share host port
Lorsqu’il est exécuté en mode serveur TCP, partagez le port OpenVPN avec une autre application, telle qu’un serveur HTTPS. Si OpenVPN détecte une connexion à son port qui utilise un protocole non OpenVPN, il connectera par proxy la connexion au serveur sur l'hôte: port. Actuellement conçu uniquement pour fonctionner avec HTTP/HTTPS, il serait théoriquement possible de l'étendre à d'autres protocoles tels que ssh.

Il n'est pas recommandé d'utiliser OpenVPN avec une connexion TCP en raison de sa surcharge (établissement de liaison TCP à 3 voies). Si vous n'avez pas le choix, vous pouvez essayer.

En utilisant OpenVPN, vous pouvez éviter toute restriction de port qui vous est imposée et sécuriser la connexion. Veuillez vous référer à Comment puis-je configurer OpenVPN pour pouvoir utiliser Internet en toute sécurité à partir d'un hotspot non sécurisé? pour un guide sur la configuration d'OpenVPN.

Vous ne pouvez pas partager de ports à moins qu'une application ne la prenne en charge (comme OpenVPN), je dois donc vous décevoir à ce sujet.

Serveur SSH

L'authentification par mot de passe sans limiter les tentatives de connexion pose des problèmes. Pour cette raison, il est préférable d'utiliser l'authentification basée sur une clé et de désactiver complètement l'authentification basée sur un mot de passe.

  1. Installer serveur opensshInstall openssh-server en exécutant Sudo apt-get install openssh-server
  2. Désactivez l'authentification par mot de passe en modifiant le fichier de configuration /etc/ssh/sshd_config. Pour commencer l’édition, lancez Sudo nano /etc/ssh/sshd_config. Recherchez la ligne #PasswordAuthentication yes et remplacez-la par PasswordAuthentication no. Par défaut, SSH écoute sur le port 22. Si vous souhaitez le modifier, utilisez un port inférieur à 1024 pour des raisons de sécurité. (changez la ligne avec Port 22)
  3. Pour plus de sécurité, vous pouvez configurer une liste d'utilisateurs autorisés à se connecter. Ajouter une ligne avec:

    AllowUsers someuser
    

    Remplacez someuser par le nom d'utilisateur du compte autorisé à se connecter. Plusieurs noms d'utilisateur doivent être séparés par un espace.

  4. Générez une clé sur votre ordinateur à l’aide de la commande ssh-keygen -t rsa. Entrez les valeurs souhaitées et choisissez une phrase secrète sécurisée.
  5. Copiez le contenu du fichier ~/.ssh/id_rsa.pub dans le fichier /home/someuser/.ssh/authorized_keys sur votre serveur. someuser est l'utilisateur qui devrait être autorisé à se connecter. (c'est une seule ligne qui doit être copiée, jamais copier le contenu d'un fichier qui commence par -----BEGIN RSA PRIVATE KEY
  6. Rechargez la configuration de votre serveur SSH:

    Sudo reload ssh
    
  7. Si vous accédez à distance à votre serveur via SSH, vérifiez que vous pouvez établir une nouvelle connexion SSH pour éviter de vous verrouiller.
10
Lekensteyn