PROJET AUTOBLOG


Planet-Libre

source: Planet-Libre

⇐ retour index

Cyprien Pouzenc : SSH, des tunnels pour tous les services

mardi 23 octobre 2018 à 12:18

Miniature reverse SSH pour HTTP

Cet article est le dernier d'une série de quatre :

  1. SSH, pour se connecter en ligne de commande à un ordinateur distant
  2. SSH, se connecter sans mot de passe à l'aide de la cryptographie
  3. Reverse SSH, pour se connecter à un ordinateur distant protégé par un pare-feu
  4. SSH, des tunnels pour tous les services

Dans le précédent article, nous avons vu comment créer un tunnel SSH pour se connecter en ligne de commande à un ordinateur distant ; comment relier le port d'une machine externe au port SSH de la machine à contacter, et ainsi contourner la protection d'un pare-feu empêchant, a priori, une telle connexion. L'objet de cet article est de montrer que cette méthode peut être généralisée à l'usage de biens d'autres services que la seule connexion en ligne de commande.

Nous allons considérer ici le cas d'un serveur web installé derrière un pare-feu empêchant toute connexion directe. Nous allons ouvrir un tunnel entre le port 22280 de SERVEUR_A et le port 80 de SERVEUR_B — port par défaut d'un serveur web — grâce au SSH inversé.

Connexion au serveur web par SSH inversé, via SERVEUR_A
Connexion au serveur web par SSH inversé, via SERVEUR_A

La procédure à suivre est la même que dans l'article précédent. Seule la configuration du service autossh diffère.

Configuration de SERVEUR_B

Se connecter à SERVEUR_B en tant que super-utilisateur :

su -

Créer un service systemd pour le tunnel SSH dédié au service HTTP :

vim /etc/systemd/system/autossh_http.service

Et y coller ceci :

[Unit]
Description=Keep a tunnel open on port 80
After=network.target

[Service]
User=USER_B
ExecStart=/usr/bin/autossh -o ServerAliveInterval=60 -NR 22280:localhost:80 JAIL_USER@IP_SERVEUR_A
Restart=on-failure

[Install]
WantedBy=multi-user.target

Activer le service au démarrage du système, et le démarrer :

systemctl --now enable autossh_http.service

Se déconnecter :

exit

Se connecter au serveur web

Si un site web est effectivement disponible sur SERVEUR_B, alors il peut désormais être consulté via tout navigateur web, à l'adresse suivante : http://IP_SERVEUR_A:22280.

De la même manière, il est possible d'opérer ainsi pour tout autre service hébergé par le serveur !

Article sous licence Creative Commons BY-SA 3.0 France.

Gravatar de Cyprien Pouzenc
Original post of Cyprien Pouzenc.Votez pour ce billet sur Planet Libre.

genma : Devenir SysAdmin d'une PME - La documentation

lundi 22 octobre 2018 à 09:00

Dans ce billet, je parlerai de documentation d'administrateur système, une documentation reposant sur du texte : les commandes shell (par exemple) restent du texte ; il n'y pas de schéma réseau ou autre (ou alors sous forme d'image intégrée). L'idée ici est de résumé un peu toute l'importance de la documentation, sujet souvent négligé par manque de temps, parce que l'on pense que c'est inutile etc.

Objectif premier de la document : Prévenir la perte d'information

Pour moi, l'objectif premier est de prévenir la perte d'information. J'évoquais dans mon billet Devenir SysAdmin d'une PME - Gestion du legacy- Billet n°1, l'héritage d'une infrastructure existante vieillissante, sur laquelle des générations d'administrateurs systèmes se sont succédés, et avec eux, la perte d'information.

En effet, la plupart du temps, la transmission de connaissances se fait (ou ne se fait pas) de façon orale au sein des membres de l'équipe Lorsque ces derniers partent vers d'autres horizons, même s'il y a eu une phase de passation de connaissances, il y aura toujours une perte d'information...

Toute modification et évolution doit donc être tracée dans la foulée et non "plus tard quand on aura le temps". Sinon, ce ne sera jamais fait et c'est le début d'un cercle vicieux et infernal, et le début de la fin de la documentation…

Et ce n'est pas le jour où l'on aura besoin d'une information qu'il faut se rendre compte qu'on ne la possède plus...

Documentation : définir un standard, une charte

Pour avoir une documentation de qualité uniforme, il faut définir des standards, une sorte de charte d'écriture de la documentation, des conventions. Un exemple valant mieux qu'un long discours, je vous renvoie vers la page Conventions pour le wiki Evolix que je trouve très bien. Ont été définies les règles de nommages, les conventions pour les commandes shell, les adresses réseaux etc.
Il faut également penser à avoir un sommaire, un chapitrage (chapitre et sous-chapitre), pour organiser la documentation de façon structurée.

Documentation, documentation, documentation

Il faut trouver un équilibre en ne rien documenter et trop documenter. Mais la documentation est à faire. Vaut mieux peu de documentation que pas de documentation du tout, mais vaut également mieux de la documentation utile que trop riche et inexploitable. Pour éviter d'aller trop dans le détail, on peut par exemple indiquer des prérequis, renvoyer vers des pages existantes pour avoir plus d'informations.
Il faut que la documentation se suffise à elle-même. Mais il ne faut pas réinventer la roue à chaque fois, et il ne faut pas hésiter à faire des renvois vers d'autres pages qui expliquent en détails, vers les documentations officielles. Les liens vers des sites extérieurs peuvent être mis en complément d'information mais le contenu doit rester disponible, car si le site est temporairement indisponible ou ferme de façon définitive, on perd l'information. Je conseillerai alors de recopier des bouts de tutoriaux existants, pour se les approprier, et avoir une uniformité dans la documentation.

Documenter pour les autres

Quand on écrit une documentation, il faut penser avant tout à l'écrire pour les autres. Ce qui nous semble évident ne l'est pas forcément pour quelqu'un d'autre, il ne faut pas faire de sous-entendu. Le choix des mots est important : ne pas hésiter à mettre plusieurs mots différents dans le titre, d'autant plus s'il y a un système de recherche par mot clefs.

Il faut que la personne qui lise la documentation ait un minimum de bagage technique et l'indication de prérequis : on ne va pas réexpliquer chaque commande Shell, donner un cours de Linux ou autre.

Il faut généraliser les explications, les commandes, sauf cas particulier : idéalement, une documentation sur un sujet donné doit être applicable à l'ensemble des serveurs de l'entreprise. On essaiera autant que possible de mettre des utilisateurs génériques, des IP par défaut etc. cf la charte de l'écriture de la documentation.

Les conseils :
- faire relire la documentation écrite par quelqu'un d'autre ;
- lui faire rejouer les commandes pour valider que tout marche bien.

Documenter, c'est bien. Maintenir à jour la documentation, c'est mieux

Documenter c'est bien mais sans maintenir la documentation à jour ça ne sert à rien. Là encore, il faut trouver un équilibre. Je conseille d'indiquer une date de dernière mise à jour des informations par exemple, pour pouvoir juger au premier coup d'œil de l'obsolescence potentielle de l'information.

On peut envisager une revue de documentation régulière, un passage en revue en se basant sur la date de dernière mise à jour pour vérifier si les informations sont toujours correctes, utiles. Normalement si la documentation est bien maintenue à jour au fil de l'eau, oui, il n'y a pas de pas obsolètes ou incorrectes. Mais comme on est parfois amené à travailler dans l'urgence, que tout le monde n'a pas la même rigueur etc. cette revue de documentation n'est pas inutile.

Documenter, mais avec quel outil ?

Sur ce point, je vous renvoie vers le billet que j'avais écrit Je vous renvoie vers mon billet Lifehacking - Gitlab, outil idéal ? et plus particulièrement sur la partie concernant le wiki. En quelques mots, je conseille de trouver un outil facile, pérenne dans le temps, qui sera facilement adopté par tous.

Les critères à prendre en compte sont :
-multi-utilisateurs et possibilité d'éditer la documentation à plusieurs : le wiki Gitlab repose sur les utilisateurs Gitlab. On a un wiki par projet. On peut éditer à plusieurs, mais à tour de rôle.
-accessible hors ligne : avoir un wiki en ligne (en mode web), c'est pratique car c'est centralisé. Mais le jour où on perd la connexion réseau et que les informations pour rétablir le réseau sont sur le wiki en ligne, on est bien embêté (c'est du vécu). L'avantage d'un wiki dans Gitlab est que l'on peut cloner le wiki en local et donc avoir la documentation en mode hors-ligne.
-historisation : le wiki de Gitlab repose sur Git, on a donc bien l'historisation des pages et un suivi des modifications possibles.
- liens entres les pages : des liens hypertextes pouvant être faits pour renvoyer vers les différentes pages du wiki en lui-même, vers des liens externes (dès lors que l'on a une url).
- possibilité d'ajouter des images, des documents : il est possible d'intégrer des images directement dans le corps du texte dans le mode édition depuis le navigateur. Il est possible de faire un lien hypertexte vers un document ou un fichier qui est stocké dans un des dépôts d'un projet dans l'instance Gitlab.
- un système de recherche : il faut pouvoir recherche à base de mots clefs pour retrouver les différentes pages abordant un sujet particulier.

Sauvegarde de la documentation

Comme toutes données, la documentation doit être intégrée à la politique de sauvegarde, il faut valider que l'on sait restaurer cette documentation etc...

Conclusion

Rien ne remplacera l'expérience acquise, mais on ne peut pas tout savoir et tout retenir. De ce fait, la documentation est importante. Dans ce billet je n'abordais que l'aspect documentation du point de vue de l'administrateur système, mais beaucoup des conseils et recommandations sont aussi valables pour d'autres métiers de l'informatique (développeur par exemple), et sont sûrement adaptables et généralisables à d'autres corps de métiers.

Gravatar de genma
Original post of genma.Votez pour ce billet sur Planet Libre.

Journal du hacker : Liens intéressants Journal du hacker semaine #42

lundi 22 octobre 2018 à 00:01

Pour la 42ème semaine de l'année 2018, voici 10 liens intéressants que vous avez peut-être ratés, relayés par le Journal du hacker, votre source d’informations pour le Logiciel Libre francophone !

Pour ne plus rater aucun article de la communauté francophone, voici :

De plus le site web du Journal du hacker est « adaptatif (responsive) ». N’hésitez pas à le consulter depuis votre smartphone ou votre tablette !

Le Journal du hacker fonctionne de manière collaborative, grâce à la participation de ses membres. Rejoignez-nous pour proposer vos contenus à partager avec la communauté du Logiciel Libre francophone et faire connaître vos projets !

Et vous ? Qu’avez-vous pensé de ces articles ? N’hésitez pas à réagir directement dans les commentaires de l’article sur le Journal du hacker ou bien dans les commentaires de ce billet :)

Gravatar de Journal du hacker
Original post of Journal du hacker.Votez pour ce billet sur Planet Libre.

Articles similaires

vhaguer : Conteneurs chiffrés pour documents envoyés à des clouds douteux

dimanche 21 octobre 2018 à 00:00

Contexte

Le titre parle de cloud douteux, mais il peut s'agir de son propre cloud auto-hébergé sur lequel on aurait des doutes quant à la sécurité : temps ou compétences limités, faille potentielles (probables?) dans le logiciel utilisé,...

Le caractère pratique de disposer de ses données dans un cloud partout, tout le temps, peut conduire à y stocker des données sensibles: historique bancaire, copie de pièces d'identité, bulletins de salaires, factures,... Des données que l'on ne souhaite pas voir exposées aux yeux d'un tiers inconnu. Si le logiciel utilisé en auto-hébergement ne permet pas le chiffrement de bout en bout (ou si on utilise un cloud propriétaire), il semble ainsi pertinent de conserver ces données dans un conteneur chiffré, de sorte qu'un attaquant ayant pénétré le serveur (ou le tiers propriétaire du cloud) ne trouve pas ces données en open bar. En outre, si les clients (ordinateur, téléphone) ne sont pas chiffrés, cela permet également de gagner en sécurité vis-à-vis de ces appareils: quelqu'un qui les trouverait n'aurait pas plus accès à ces données.

La première idée était de chiffrer avec un conteneur LUKS (crédit au guide d'autodéfense numérique: voir qu'ils recommandent LUKS permet de savoir assez vite vers qui se tourner). Néanmoins le débroussaillage me laissait entrevoir quelque chose d'assez peu pratique, j'ai donc commencer par explorer une autre voie basée sur GPG.

Précision en terme de contexte : ordinateur sous Debian stable (Stretch à date), utilisant Thunar comme gestionnaire de fichier et XFCE comme environnement de bureau, et smartphone sous Android 6. L'optique est d'avoir une utilisation quotidienne facile, ce qui se traduit sur l'ordinateur par une semi-automatisation (actions personnalisées Thunar, appariement du conteneur à l'ouverture de session).

À la mode GPG

Principe

Encapsuler le dossier dans un fichier (.zip par exemple) puis chiffrer ce fichier avec une clé GPG, avec pour destinataire la même clé GPG.

Principal inconvénient

Si on perd la clé alors le contenu est perdu.

Mise en oeuvre

  1. créer une clé GPG avec son ordinateur: gen-key

  2. la transférer à son téléphone. Sous Android et avec OpenKeychain voir ici la procédure :

    gpg --armor --gen-random 1 20; gpg --armor --export-secret-keys YOUREMAILADDRESS | gpg --armor --symmetric --output mykey.sec.asc

    avec à la place de YOUREMAILADDRESS l'adresse mail ou l'identité IDENTITE associée à la clé créée plus tôt ; transférer le fichier produit au téléphone et l'ouvrir avec OpenKeychain en suivant les indications ; il faut notamment renseigner le mot de passe généré avec la première commande, permettant la sécurisation du transfert de la clé privée au téléphone) ;

  3. l'action personnalisée pour Thunar pour transformer un dossier en .zip chiffré (qui rend compte des étapes successives pour passer d'un dossier à une archive chiffrée):

    cd %d; zip -r %f.zip $(realpath --relative-to=%d %f); xfce4-terminal -x gpg --encrypt --recipient IDENTITE %f.zip; rm %f.zip

    (%f : chemin absolu du fichier pointé, soit ici un dossier ; %d le chemin absolu du dossier parent ; la bidouille sur le realpath permet d'avoir effectivement les chemins relatifs dans le fichier zippé) ;

    • pour l'action personnalisée Thunar, bien penser à aller cocher que celle-ci doit apparaître pour les dossiers (dans l'onglet "Conditions d'apparition").
  4. pour déchiffrer, l'action personnalisée Thunar (idem, rend compte des commandes successives pour lire le conteneur):

    xfce4-terminal -x gpg --decrypt --output %f_dechiffre --recipient IDENTITE %f

  5. sur le téléphone, déchiffrer le conteneur avec OpenKeychain et consulter le contenu de l'archive avec GhostCommander, par exemple.

À base de conteneur LUKS

Principe

Créer un disque virtuel chiffré de format LUKS et partager ce disque.

Principal inconvénient

La taille du fichier est statique; de sorte que si on n'a quelques mégaoctets de données à chiffrer mais qu'on sait qu'on sera amené à y mettre davantage, pour ne pas refaire un nouveau conteneur à l'avenir, on est contraint de prendre de la marge dès la création du conteneur. Ce qui signifie qu'en général on occupe plus d'espace que n'en requièrent les fichiers chiffrés.

Avantage sur la façon GPG précédente

Retenir la phrase de passe est suffisant pour retrouver l'accès au contenu.

Mise en oeuvre

Principales sources pour cette méthode

En passant

A noter également le projet luckyLUKS qui propose de faciliter l'usage de ces conteneurs chiffrés ; mais pas dans les dépôts, je ne connais pas, donc pas de confiance a priori. Surtout sur un sujet comme le chiffrement des données.

Conclusion

La solution avec LUKS reste plus sûre, dans la mesure où il n'y a pas de fichiers (clé de chiffrement) que l'on puisse égarer, seulement une phrase de passe qu'on peut oublier (problématique qui se traite mieux, de mon point de vue, avec un gestionnaire de mots de passe comme Keepass). L'ouverture d'un conteneur de 500mo sur Android est loin d'être immédiate (2 min à 3 min sur un Nexus 4) mais le cas d'usage n'implique pas un accès nécessairement rapide aux données, l'accent étant mis sur l'accessibilité.

L'avantage de GPG serait une ouverture plus rapide (OpenKeychain + GhostCommander qui sait ouvrir les zip) et une taille de fichier dynamique (vs. statique avec LUKS).

Gravatar de vhaguer
Original post of vhaguer.Votez pour ce billet sur Planet Libre.

Thuban : Guide de Migration OpenBSD 6.3 => 6.4

jeudi 18 octobre 2018 à 20:36

OpenBSD 6.4 est disponible depuis aujourd'hui. Hourra !

Voyons maintenant comment migrer d'OpenBSD 6.3 vers 6.4 ?!

Changement de configuration

Pour info, il y a les changements suivant dans la configuration :

Si vous êtes dans l'un des cas de ces changements, veuillez IMPÉRATIVEMENT lire le Guide de Migration 6.4, que vous retrouverez en fin de cet article.

Avant la mise-à-niveau

 

Conseils pratiques

Avant de faire la mise-à-niveau, si vous utilisez Gnome3, pensez à désactiver gdm : # rcctl disable gdm
Lors du redémarrage, vous vous retrouverez en terminal texte, mais cela permettra de ne pas avoir de soucis avec l'interface graphique.

Vous pouvez faire de même pour xenodm...

Idem, pour les services serveurs, il est recommandé de les désactiver !

Téléchargement

Maintenant que les précautions d'usage ont été exécutées - n'est-ce pas ?! - occupons-nous de télécharger le nécessaire !

Pour cela, positionnons-nous à la racine du système et téléchargeons le binaire bsd.rd, puis les fichiers de sommes de contrôle, et de signature, pour les vérifier :

$ cd /
# for file in bsd.rd SHA256.sig; do [ -f $file ] && rm -fP $file; ftp -n -m -C "https://cdn.openbsd.org/pub/OpenBSD/6.4/$(arch -s)/$file"; done
$ sha256 -c SHA256.sig 2>&1 | awk '/bsd.rd/ {print $3}'
OK
$ signify -Cp /etc/signify/openbsd-64-base.pub -x SHA256.sig bsd.rd
Signature Verified
bsd.rd: OK

Installations

(Re)démarrons la machine informatique, et lors de l'invite 'boot>', tapez : boot bsd.rd

Laissez faire, jusqu'à ce que le processus vous demande le choix d'(I)nstaller, d'(U)pgrader, etc … choisissez : ''U''

Puis, tapez ''http'' si vous voulez la faire en étant connecté à Internet...
ou si vous avez le CD ou une clé USB, tapez ''cd'' !

Ensuite, répondez aux questions, tout comme lors de votre première installation… pour finir par redémarrer, si tout s'est bien passé : reboot

Normalement, OpenBSD met-à-jour automatiquement les firmwares, et essaye de fusionner correctement les nouveaux fichiers de configuration avec ceux que vous auriez pu modifier...

au cas où, utilisez ''sysmerge'', puis ''fw_update''.

Puis terminez par la mise-à-niveau des packages !

# pkg_add -iuv

Laissez faire - cette étape peut être très longue, selon le nombre de paquets que vous aviez précédemment installés pour votre usage.
Parfois, il peut être nécessaire de répèter cette commande... plusieurs fois ; s'il vous est demandé de réparer, faites-le en spécifiant 'y'.

et une fois effectuée, exécutez :

# pkg_check

Et si vous l'avez installé, exécutez :

# sysclean


Ceci étant dit, étant fait, pensez à réactiver les services que vous auriez désactivé, lors de la phase de préparation de la mise-à-niveau, puis une fois fait, redémarrez votre machine...

Une fois que vous êtes dans votre session, pensez à lire les fichiers pkg-readmes préparés dans ''/usr/local/share/doc/pkg-readmes/''.

Documentation

La traduction anglais->français (in)officielle du Guide de migration OpenBSD 6.4 est prête !

Gravatar de Thuban
Original post of Thuban.Votez pour ce billet sur Planet Libre.

Articles similaires