Où conserver le référentiel source central?


10

Quelle est la meilleure pratique de l'industrie concernant la sécurisation de l'accès au code source? Je pense que seules les connexions SSL via apache sont autorisées sur notre serveur sur un port obscur qui n'entre en conflit avec rien d'autre. Ce qui me dérange, c'est de stocker du code source sur un serveur public, c'est-à-dire non seulement accessible via un LAN. De plus, ce serveur a plusieurs utilisations. Apache propose déjà d'autres sites Web internes à l'entreprise. J'aimerais que tout le monde puisse accéder au code source de n'importe où (domicile, aéroport, etc.) tant qu'il dispose des informations d'identification correctes. Suggestions?

Réponses:


13

Si vous êtes préoccupé par le fait qu'il se trouve sur un serveur public mais que vous souhaitez y accéder de n'importe où, vous devriez envisager de demander à vos développeurs d'utiliser un VPN client pour se connecter à distance à votre réseau pour accéder à un serveur de contrôle de source interne.


1
Pouvez-vous expliquer votre raisonnement pour expliquer pourquoi vous pensez qu'un VPN est plus sécurisé qu'un serveur basé sur SSL / TLS étant donné que les deux doivent être "accessibles au public"? Les VPN utilisent un cryptage familier pour SSL / TLS. Donc, si vous pouviez pirater le VPN, vous obtenez tout.
Matt

1
@Matt S'il n'y a aucune raison pour lui d'avoir son référentiel sur un segment public, alors pourquoi le mettre là? De plus, un VPN peut avoir d'autres avantages pour ses développeurs. Vous remarquerez également que je n'ai jamais dit nulle part que "VPN est plus sécurisé que SSL / TLS", alors ne mettez pas de mots dans ma bouche :)
phoebus

1
Vrai. Je sentais que la sécurité était implicite dans ma déclaration. Vous pouvez peut-être qualifier ceci: "Si vous êtes préoccupé par le fait qu'il se trouve sur un serveur public"
Matt

À mon avis, avoir des serveurs / services privés derrière un VPN fait partie de l'approche en couches. Il aide à protéger contre les erreurs de configuration qui pourraient exposer la source au public. Pas obligatoire, mais intelligent.
Martijn Heemels

4

Je ne sais pas trop pourquoi les gens pensent que l'approche VPN est la meilleure. Ce n'est pas nécessairement plus sûr et n'offre qu'un avantage auquel je peux penser.

PPTP par exemple est connu pour avoir une sécurité moins qu'idéale, bien que je pense qu'il s'est quelque peu amélioré depuis son introduction ... alors faites attention à la solution VPN que vous utilisez. J'irais avec OpenVPN ou IPSEC.

Cependant, vous ne pouvez pas battre la commodité de SSL / TLS sans le VPN (lire plus loin). Et pour le rendre encore plus sûr, vous pouvez le faire uniquement avec un certificat.

Cependant, si vous pensez que vous pourriez offrir d'autres services que le contrôle des sources, envisagez une solution VPN car vous y tunnelerez d'autres services.

L'inconvénient de l'utilisation d'un VPN est que votre PC fait effectivement partie du réseau auquel il se connecte. Cela peut également être un avantage. Mais, si vous êtes à un million de kilomètres de chez vous et que la connexion réseau à la base d'origine n'est pas trop rapide, chaque fois que vous voulez faire une différence ou enregistrer ou extraire du code, vous pourriez vous retrouver à connecter et déconnecter le VPN.

Je peux parler d'expérience personnelle ici car je suis développeur et ce fut une vraie douleur dans le cul de faire ça !!! Idéalement, les deux options sont préférées.

Donc, si vous allez naviguer sur le Web, etc., cela pourrait ralentir la lecture des actualités, etc. Mais au moins, vous bénéficiez d'un accès sécurisé aux e-mails. Réfléchissez donc à comment vous allez l'utiliser en premier ... Si j'étais vous, j'envisagerais d'implémenter les deux.


3

En fait, j'aime votre suggestion. Si vous rendez votre référentiel de code source accessible UNIQUEMENT via SSL / TLS et que vous vous assurez que vos développeurs n'utilisent pas de phrases secrètes faciles à utiliser (ou mieux encore, utilisent des certificats), alors cela devrait être aussi sûr que n'importe quoi. .

Vous pouvez, à la place, masquer votre serveur à l'intérieur de votre réseau local et forcer les développeurs à utiliser un VPN pour y accéder, mais cela signifie simplement que vos développeurs doivent mettre leur nom d'utilisateur / mot de passe (et / ou cert) dans une boîte de connexion différente. Je déconseille de créer un point d'entrée dans votre réseau dont les implications en matière de sécurité ne sont pas toujours évidentes, simplement pour permettre l'accès à un seul service. Si vous avez déjà configuré et sécurisé un VPN pour d'autres utilisations, alors bien sûr, c'est une évidence, allez-y et utilisez-le. Sinon, il peut être plus simple, et donc plus sûr, de rendre le service lui-même directement disponible via SSL / TLS.


3

La norme de l'industrie dépend probablement de votre industrie (ou de celle de vos clients) :-)

Pratiquement, vous devez considérer à qui vous voulez donner accès et ce qu'ils peuvent gérer. Certaines personnes auxquelles vous voudrez / devrez accéder ne pourront pas faire face à bien plus qu'un nom d'utilisateur / mot de passe. D'autres pourraient être en mesure de contourner ssh et une clé privée, à condition que vous puissiez leur obtenir la clé en toute sécurité, n'est pas mauvaise. Le client TortoiseSVN peut gérer ssh + svn et prend en charge les clés privées avec un peu de torsion du bras. Cela a été assez bon pour mes besoins.

Un tunnel VPN est également une bonne suggestion, bien que dans de nombreux endroits, vous seriez heureux de donner aux personnes externes l'accès à votre contrôle de source, mais pas à votre réseau entier!


2

Comme les autres, je préfère un VPN. Une alternative serait un tunnel SSH, qui je suppose en termes pratiques est de toute façon une sorte de VPN.


0

Rendez-le interne uniquement et implémentez une solution VPN pour les utilisateurs distants. / Doh- dupliquer.


0

Si vous voulez accéder de n'importe où, alors vous avez besoin d'un serveur public - cela est clair.

Sur ce serveur, vous souhaitez exposer le moins possible , de préférence juste Mercurial / Subversion et rien d'autre. Il s'agit d'empêcher une faille de sécurité de se propager du contrôle des sources au reste de votre entreprise. Pour cette raison, je suis d' accord avec Matt quand il dit qu'un VPN peut être dangereux: il donne un accès beaucoup plus large que nécessaire.

Pour Mercurial, vous pouvez verrouiller les choses étroitement en utilisant hg-sshpour restreindre les commandes disponibles aux clients qui se connectent via SSH. En utilisant SSH, vous pouvez facilement exiger que les clients utilisent l'authentification par clé publique au lieu des mots de passe. Cela protège votre serveur contre les attaques par connexion par force brute.

Même si une clé SSH est compromise (peut-être qu'elle avait une phrase de passe faible et que l'ordinateur portable la stockant a été volé), le pire dommage qu'un attaquant peut faire est d'ajouter l'historique des ordures dans Mercurial. Le protocole utilisé est intrinsèquement ajouté uniquement, donc rien ne peut être supprimé avec hg push.

Pour HTTPS, l' authentification est effectuée par le serveur Web frontal . Cela signifie que vous pouvez exiger des certificats de site client si vous le souhaitez et ainsi obtenir une sécurité comme l'authentification par clé publique SSH ci-dessus.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.