Encapsulation HTTP via tunnel SSH pour site web interne

l’Almanet doLys Gnu/Linux – Open Source – Entreprises Forums L’almanet doLys Open Source Encapsulation HTTP via tunnel SSH pour site web interne

3 sujets de 1 à 3 (sur un total de 3)
  • Auteur
    Articles
  • #12139
    rogn...rogn…
    Maître des clés

    Salut.
    Petite dissertation sur une problématique personnelle.
    /!\ La rédaction de ce sujet est en cours. /!\

    J’ai des photos et des vidéos (non intimes je vous rassure 😉 ) que je ne souhaite pas partager à mes proches via un serveur dont je ne connais ni la localisation ni les lois qui y sont appliquées. Vous avez compris, je refuse d’utiliser un GAFA.
    Comment fait-on dans ce cas alors ? Vous avez Tor mais ça peut faire peur à certains (hoù là là le deep web chiffré c’est pas bien). Merci la presse française qui diabolise tout et n’importe quoi pour vendre son espace publicitaire.
    Une autre solution s’est offerte à moi en parcourant quelques sujets discutant de sécurité sur HTTP et les mots clés qui me sont mis devant le pif sont “tunnel ssh”.
    Le principe ? Partager de la donnée via HTTP(S) mais ces paquets sont encapsulés dans du SSH – donc chiffré.

    Ci-dessous un schéma de ma pensée (oui, c’est du spaghetti)
    Mon image

    Pourquoi un VPN ?

    En temps normal, quand vous avez une connexion client FAI, vos équipements sont dits branchés “derrière une Box” donc invisibles depuis le “ouorlde ouaïde ouaibe”. La box que vous louez à votre fournisseur d’accès internet utilise le NAT pour masquer vos équipements. Vous pouvez cependant ouvrir un port et activer un service écoutant ce port. Ainsi concernant HTTP, le serveur apache sera accessible depuis vos amis mais aussi depuis un hackeur or vous ne lui avez rien demandé à ce hackeur.
    Avec un VPN : vous étendez physiquement le réseau local de votre routeur sur le “ouorlde ouaïde ouaibe” mais comme les paquets IP passent par des cartes réseaux virtuelles (tun0 sur linux), le routage se fera sur les IP du réseau utilisant les cartes réseaux virtuelles. Par conséquent, vos services ne seront exposés qu’aux personnes qui ont un accès au VPN.
    null

    Mais j’ai déjà un VPN.. Celui que vous avez est probablement fourni par un service d’antivirus, votre entreprise, voire NordVPN, et je ne le connais pas tous. Si vous êtes client de l’un de ces services, il y a probablement d’autres – des milliers des millions des milliards – d’autres dans votre cas. En terme de vie privée, c’est tout le contraire de ce que (je) l’on souhaite.

    Pourquoi du SSH ?
    SSH est un protocole de transfert de données en réseau qui permet le chiffrement de ces données transférées.

    Mais HTTPS suffit, non ?
    Oui… et non. Oui car il y a bien échange de clés et chiffrement de bout en bout avec HTTPS. Non car d’une part il est assez raide de maintenir un site en https, vous dépendez d’un service externe pour cela. Ensuite, quand vous montez un site en HTTPS tous les médias doivent être en HTTPS, la maintenance se monnaye car il y a du taf.
    Avec un tunnel SSH, les questions ci-dessus ne se posent pas.

    De quoi ai-je besoin pour partager des photos et des vidéos au nez et à la barbe des GAFA sans que les FAI me cassent les pieds ?

    P0 – Un routeur avec serveur VPN intégré comme le TP-Link Archer C6. En deux clics votre serveur VPN est actif avec lui.
    null
    Exportez ensuite le certificat OpenVpn dans un fichier, dont voici le début.
    L’IP publique, ou l’IP WAN peut s’obtenir avec le couteau suisse inxi.
    inxi -i

    client
    dev tun
    proto tcp
    float
    nobind
    cipher AES-128-CBC
    comp-lzo adaptive
    resolv-retry infinite
    remote-cert-tls server
    persist-key
    persist-tun
    remote <ip-publique-ou-DNS> <port>
    <ca>
    [...]

    P1 – Votre box FAI qui est capable d’ouvrir un port entre 1 et 65535
    P2 – Une connexion fonctionnelle sur les clients.

    1 – Un serveur web Apache , manjaro le préconfigure à l’installation, y a presque rien à faire. Souvent, le contenu à partager se situe dans /srv/http
    L’activation du serveur web : systemctl enable httpd . Le redémarrage de celui-ci quand il y a des changements systemctl restart httpd

    2 – Un serveur SSH avec un utilisateur pour SSH. Vous pouvez filtrer les utilisateurs de sorte que seul l’utilisateur pour SSH puisse s’y connecter, de préférence via clé privée. Pour le type de clé privée , j’ai une préférence pour les ED25519 ssh-keygen -t ed25519 mais elle n’est pas prise en charge partout. Une alternative consiste une clé RSA 4096 bits. ssh-keygen -t RSA -b 4096 -m PEM (l’option -m PEM n’est pas obligatoire ais nécessaire pour certaines applications Android pour du SFTP) Les clés autorisées pour l’utilisateur SSH sont stockées dans ~/.ssh/authorized_keys côté serveur.
    systemctl enable sshdpour activer le SSH
    systemctl restart sshd pour démarrer SSH

    3 – Un client OpenVpn sur le poste client – quelle chance ! On a Network-Manager sur les distros linux les plus populaires qui prend en charche OpenVpn ! (je vous rassure, ça existe aussi ailleurs mais les fonctionnalités sont plus limitées).
    Dans NetworkManager, vous pouvez ajouter une connexion VPN de type OpenVPN, et importer le certificat précédemment créé en P0. NM va parser le fichier de sorte qu’il ait tous ses paramètres nécessaires pour établir la connexion VPN. Dans les paramètres de votre connexion VPN, vous pouvez modifier le serveur DNS.
    ;

    Ci-dessous, il vous faudra importer le certificat dans la section Certificat CA, et renseigner la passerelle telle que
    DNS-Nom-Domaine-ou-adresseIP:port
    Sachez que le sus-cité routeur a son propre système équivalent à ddclient qui vous permet d’avoir un nom de domaine monnayant un compte chez TPLink 😉 .
    ;

    ;

    Il faudra enfin établir la connexion VPN – une case à cocher depuis l’applet NetworkManager
    null

    4 – Un client SSH, là c’est simple. Depuis un terminal,
    ssh -i <fichier-de-clé> -TND <numéro-de-port-supérieur-à-2000> <utilisateur_ssh@votre_serveur_ssh-ip-ou-nom-si-dns-configuré>
    Ne pas fermer le terminal car il abrite maintenant le processus qui héberge l’hôte socks. Si vous voulez l’arrêter, un simple CTRL C dans le terminal suffit.
    Mon image

    5 – Firefox, oui oui. Firefox qui est plus souple que ses concurrents en la matière.
    Dans les paramètres, chercher “socks”. Un seul résultat devrait sortir. Cliquer sur Paramètres et dans la pop-up “Paramètres de connexion” choisir “Configuration manuelle du proxy”.
    Aller dans la section “Hôte Socks” pour y entrer 127.0.0.1 et le port <numéro-de-port-supérieur-à-2000>. Juste en dessous de ces champs, choisissez Socks V5. Puis cliquer sur OK.

    Le proxy chiffré est donc maintenant en place. Il ne vous reste plus qu’à naviguer sur votre serveur web. Firefox vous l’affichera comme non sécurisé, mais en fait ignorera que les paquets HTTP sont encapsulés dans du SSH.

    Voilà, j’espère que ça vous donne du grain à moudre. Comme j’ai dit, c’est une réflexion, un cas d’étude. Pour en faire un tuto, je devrai reprendre ce sujet plusieurs fois mais sachez que tout ce que je dis est en prod chez moi alors n’hésitez pas à me poser des questions ! <3

    #12152
    nam1962nam1962
    Maître des clés

    Waaah !
    …alors je suis tout à l’écoute !
    Le fait d’avoir une solution qui permette d’être maître chez soi et de ne pas dépendre de grandes oreilles est tout à fait dans la ligne de l’almanet !

    Un jeune site que j'aime bien, la ferrari du T-shirt ...bio en plus : GoudronBlanc

    #12156
    rogn...rogn…
    Maître des clés

    Et voilà, premier jet fait 🙂

3 sujets de 1 à 3 (sur un total de 3)
  • Vous devez être connecté pour répondre à ce sujet.