Squid peut-il être utilisé comme «proxy de terminaison TLS» pour crypter les connexions TCP à l'aide de certificats clients?

8

Abstrait

J'ai besoin d'une connexion TCP cryptée de plusieurs clients vers un seul port via Internet. Cela peut-il être réalisé avec Squid?

Situation concrète

Nous utilisons dans notre entreprise une solution de surveillance et de gestion des clients accessible via LAN et VPN. Il devrait maintenant être accessible à partir de blocs-notes externes qui n'utilisent pas le VPN de l'entreprise . La communication doit être cryptée (TLS). L'authentification des clients doit utiliser des certificats clients. La communication est initiée par les clients et utilise un seul port TCP.

Résultats de mes investigations

NGINX Plus semble offrir cette fonctionnalité mais notre administrateur préfère le calmar ou l'apache. Sur le wiki de Squid, j'ai trouvé que: Fonctionnalité: HTTPS (HTTP sécurisé ou HTTP sur SSL / TLS) où le cryptage TCP est mentionné. Mais j'ai également trouvé cet avertissement:

Il est important de noter que les protocoles passés via CONNECT ne sont pas limités à ceux que Squid gère normalement. Littéralement, tout ce qui utilise une connexion TCP bidirectionnelle peut être transmis via un tunnel CONNECT. C'est pourquoi les ACL par défaut de Squid commencent par deny CONNECT! SSL_Ports et pourquoi vous devez avoir une très bonne raison de placer tout type de règle d'autorisation au-dessus d'eux.

Question similaire

Cette question Crypter la connexion client avec le proxy direct Squid à l' aide de SSL est similaire, mais ne traite pas les proxys inverses / proxies de terminaison TLS.

Ce que je dois savoir

Je n'ai que des connaissances de base sur ces technologies et notre administrateur m'a demandé une faisabilité générale.

  • Squid peut-il être utilisé pour sauvegarder le cryptage des connexions TCP?
  • Cela peut-il être réalisé en utilisant l'authentification avec des certificats clients?
  • Ou doit-il être utilisé uniquement pour les connexions HTTPS?
marsh-wiggle
la source

Réponses:

7

Peut-être que votre administrateur n'aime pas NGINX Plusparce qu'il n'est pas open source et accepterait un autre produit open source bien entretenu. Demandez-lui ensuite de regarder le stunnel . Il est conçu pour exactement vos besoins.

Citant un exemple stupéfiant sur wikipedia (pour SMTP, mais cela conviendrait également à vos besoins):

Par exemple, on pourrait utiliser stunnel pour fournir une connexion SSL sécurisée à un serveur de messagerie SMTP existant ne prenant pas en charge SSL. Supposons que le serveur SMTP attend des connexions TCP sur le port 25. On configurerait stunnel pour mapper le port SSL 465 au port non SSL 25. Un client de messagerie se connecte via SSL au port 465. Le trafic réseau du client passe initialement via SSL au stunnel application, qui crypte / décrypte le trafic de manière transparente et transfère le trafic non sécurisé vers le port 25 localement. Le serveur de messagerie voit un client de messagerie non SSL.

Le processus Stunnel peut s'exécuter sur le même serveur ou sur un serveur différent de l'application de messagerie non sécurisée; cependant, les deux machines se trouvent généralement derrière un pare-feu sur un réseau interne sécurisé (de sorte qu'un intrus ne peut pas établir sa propre connexion non sécurisée directement sur le port 25).

Layer8
la source
+1, ça semble très prometteur
marsh-wiggle
1
stunnel est certainement plus approprié pour relayer des données TCP génériques sur une connexion TLS que n'importe quel proxy HTTP ne pourrait jamais l'être.
Amos Jeffries
2

CONNECT n'est utilisé que par les clients HTTP vers un proxy HTTP pour établir un tunnel via le proxy. Il n'y a pas non plus de schéma dans HTTP pour une connexion cryptée à un proxy HTTP.

Je soupçonne qu'un proxy HTTP n'est pas ce que vous recherchez ici.

Je ne sais pas si Squid prend en charge les plug-ins TCP avec TLS et les certificats clients, mais WinGate le fait. Il a également la possibilité de vérifier le UserPrincipalName dans le certificat auprès d'un Active Directory.

Avertissement: je travaille pour Qbik qui sont les auteurs de WinGate.

Adrien
la source
Squid ne peut donc pas être utilisé pour crypter des connexions TCP (du moins pas sans plugins supplémentaires)?
marsh-wiggle
quel protocole allez-vous exécuter sur les connexions TCP cryptées?
Adrien
TCP avec charge utile inconnue
marsh-wiggle
OK, vous avez donc besoin de quelque chose qui ne va pas essayer d'en analyser HTTP, quelque chose qui n'est pas un proxy HTTP. Je ne trouve aucune preuve en ligne que Squid peut fonctionner comme un démon plug générique, sans parler de TLS et des certificats clients.
Adrien