cd / ; apropos ;
Table des matières

Divers services #

XMPP avec prosody #

Pourquoi choisir une messagerie instantanée XMPP ? #

Vous connaissez peut-être déjà IRC pour la messagerie instantanée dans des salons de discussions. Cependant, XMPP présente des avantages devant IRC non négligeables pour communiquer :

De tous ces points, c'est principalement la question de la vie privée et de la possibilité de chiffrer les communications qui, à ma grande surprise, semblent d'un seul coup peu intéressants pour des libristes habituellement scrupuleux sur ces questions. Pourtant, n'importe quel participant d'un salon sur IRC peut connaître votre IP. Certes, ça ne fait pas tout, mais ça reste énorme comme "fuite".

D'autres ont écrit sur le sujet, en préférant par exemple lister les défauts d'IRC (IRC's flaws) :

https://tilde.team/~kiedtl/blog/irc/

Mise en place de prosody #

Prosody est un serveur XMPP à la fois léger et facile à configurer.

https://prosody.im

Voici quelques éléments à propos de sa mise en place pour les détails relatifs à OpenBSD.

Tout d'abord, on installe le port :

# pkg_add prosody

Ajout de champs DNS pour XMPP #

Vous avez besoin d'ajouter à votre zone de nouveaux champs :

Un champ A :

xmpp.chezmoi.tld

Ce champ doit correspondre à celui définit ensuite dans les champs SRV suivants.

Des champs SRV :

_xmpp-client._tcp.chezmoi.tld. 18000 IN SRV 0 5 5222 xmpp.chezmoi.tld.
_xmpp-server._tcp.chezmoi.tld. 18000 IN SRV 0 5 5269 xmpp.chezmoi.tld.

Il faudra en ajouter pour les services proposés par le serveur xmpp s'il y en a, comme les MUC :

_xmpp-server._tcp.conference.chezmoi.tld. 18000 IN SRV 0 5 5269 xmpp.chezmoi.tld.

Configuration de prosody #

Éditez /etc/prosody/prosody.cfg.lua.

Il n'y a rien à faire si ce n'est préciser l'adresse de l'admin ajouter un virtualhost et préciser l'emplacement du certificat :

VirtualHost "chezmoi.tld"
    ssl = {
        certificate = "/etc/prosody/certs/chezmoi.tld.crt";
        key = "/etc/prosody/certs/chezmoi.tld.key";
    }

Le certificat doit être lisible par l'user _prosody.

Puisque dans cette documentation on suggère d'obtenir les certificats avec acme-client, installez-les ainsi après avoir lancé acme :

install -g _prosody -o _prosody -m 400 /etc/ssl/private/chezmoi.tld.key /etc/prosody/certs/
install -g _prosody -o _prosody -m 400 /etc/ssl/chezmoi.tld.crt /etc/prosody/certs/

Si les certificats sont renouvelés automatiquement, pensez à ajouter les lignes précédentes au script appelé périodiquement 😎.

Ajoutez l'administrateur :

# prosodyctl adduser batman@chezmoi.tld

On vérifie que la configuration est correcte :

prosodyctl check config

Ouverture des ports pour Prosody #

Ouvrez les ports 5222 (xmpp-client) et 5269 (xmpp-server).

Archivage des logs de Prosody #

Éditez /etc/newsyslog.conf :

/var/prosody/prosody.log                644  5     300  *     Z
/var/prosody/prosody.err                644  5     300  *     Z

Vérifiez la configuration du serveur XMPP #

Remplacez "chezmoi.tld" par le domaine de votre serveur et ouvrez l'URL suivante :

https://xmpp.net/result.php?domain=chezmoi.tld&type=server

mod_http_file_share #

Si vous choisissez d'activer le module http_file_share pour partager des fichiers, veillez à ouvrir les ports 5280 et 5281.

https://prosody.im/doc/modules/mod_http_file_share

De plus, ajoutez dans votre certificat le domaine utilisé pour le partage de fichiers.

Performances améliorées avec SQLite #

Je vous encourage à utiliser SQLite plutôt que le stockage par fichiers par défaut pour de meilleures performances. Notez toutefois que c'est tout à fait facultatif.

storage = "sql" -- Default is "internal"
sql = { driver = "SQLite3", database = "prosody.sqlite" } -- Default. 'database' is the filename.

Installer et tenir à jour des modules #

Précisez dans /etc/prosody/prosody.cfg.lua l'URL des modules disponibles:

plugin_server = "https://modules.prosody.im/rocks/"

Vous pourrez alors installer/mettre à jour des modules avec la commande:

prosodyctl install nom_du_module

Afin d'être alerté si de nouvelles versions de modules sont disponibles, je vous suggère d'ajouter dans /etc/daily.local la ligne suivante:

/usr/local/sbin/prosodyctl list --outdated

Voir aussi:

https://prosody.im/doc/installing_modules

En apprendre plus sur Prosody #

Ça se passe sur le site officiel 😉

https://prosody.im/doc/configure

mlmmj : Liste de diffusion #

À l'heure où il existe des réseaux sociaux en tous genres, avec leurs interfaces spécifiques, ainsi que des applications de messagerie instantanées, des forums, ..., rappelons que les listes de diffusion sont géniales.

Oui, je le dis et je l'assume, les mailing lists, c'est l'avenir car :

Je suis convaincu que les listes de diffusion ont de belles années devant elles.

Ici, je vous propose d'utiliser mlmmj puisqu'il fonctionne bien avec OpenBSD et répond à des exigences fortes en termes de performances, de sécurité et de simplicité.

Site officiel mlmmj :

https://mlmmj.org/

Installer mlmmj #

C'est plus long à écrire qu'à faire :

# pkg_add mlmmj

Enregistrement DNS requis #

La liste de diffusion est sur un serveur qu'il faut préciser dans un champ DNS. C'est d'autant plus important si vous utiliser un domaine pour votre liste de diffusion qui n'est pas exactement le même que le domaine principal.

Vous devez donc avoir un champ MX qui pointe vers le domaine de l'IP de la liste :

liste.chezmoi.tld.  IN  MX  1  list.chezmoi.tld.
liste.chezmoi.tld.  IN  A      192.0.2.2

Ajouter une liste de diffusion #

Utilisez la commande mlmmj-make-ml fournie avec le port, puis laissez-vous guider.

Voici un exemple pour créer la liste "pizza" sur le domaine "list.chezmoi.tld", soit "pizza@list.chezmoi.tld".

# mlmmj-make-ml
Creating Directorys below /var/spool/mlmmj. Use '-s spooldir' to change
What should the name of the Mailinglist be? [mlmmj-test] : pizza
The Domain for the List? [] : chezmoi.tld
The emailaddress of the list owner? [postmaster] : batman@chezmoi.tld

For the list texts you can choose between the following languages or
give a absolute path to a directory containing the texts.

Available languages:
ast   cs    de    en    fi    fr    gr    it    pt    sk    zh-cn
The path to texts for the list? [en] :

Don't forget to add this to /etc/aliases:
pizza:  "|/usr/local/bin/mlmmj-receive -L /var/spool/mlmmj/pizza/"

If you're not starting mlmmj-maintd in daemon mode,
don't forget to add this to your crontab:
0 */2 * * * "/usr/local/bin/mlmmj-maintd -F -L /var/spool/mlmmj/pizza/"

 ** FINAL NOTES **
1) The mailinglist directory have to be owned by the user running the
mailserver (i.e. starting the binaries to work the list)
2) Run newaliases

Assurez-vous que les permissions sont correctes :

# chown -R _smtpd:_smtpd /var/spool/mlmmj/pizza

Éditez le crontab de root ou d'un utilisateur dédié (# crontab -e) pour ajouter la ligne donnée précédemment. En passant, veillez à bien retirer les guillemets proposés :

0 */2 * * *  /usr/bin/mlmmj-maintd -F -L /var/spool/mlmmj/pizza

Préparer smtpd pour mlmmj #

Éditez le fichier /etc/mail/smtpd.conf pour qu'il traite correctement les mails destinés à votre liste de diffusion :

table aliases "/etc/mail/aliases"
[...]
action local_mail maildir alias <aliases>
[...]
match from any for domain "list.chezmoi.tld" action local_mail

⚠ Il est important que l'action PRENNE EN COMPTE les alias.

Il faut justement éditer le fichier /etc/mail/aliases pour envoyer à mlmmj les messages destinés à votre liste :

pizza:"|/usr/local/bin/mlmmj-receive -L /var/spool/mlmmj/pizza/"

Terminez avec la commande # newaliases ou en redémarrant smtpd.

Personnaliser une liste de diffusion #

Comme vous vous en doutez, les fichiers concernant votre liste sont situés dans /var/spool/mlmmj/pizza.

mlmmj se configure en éditant seulement quelques fichiers situés dans le répertoire control. Dans notre cas, cela donne /var/spool/mlmmj/pizza/control.

Voici quelques éléments de configuration non exhaustifs en ajoutant les fichiers suivants :

deny !^Content-Type: text/plain
allow
Quitter la liste: pizza+unsubscribe@list.chezmoi.tld
Anciens messages (N: un nombre): pizza+get-N@list.chezmoi.tld
Aide: pizza+help@list.chezmoi.tld

On peut aussi modifier le contenu des modèles de message en allant les chercher dans /var/spool/mlmmj/pizza/text.

Consultez la documentation pour d'autres éléments de configuration :

http://mlmmj.org/docs/tunables/

Gemini #

Gemini est un protocole internet récent qui se veut plus simple et plus léger que http. Il bénéficie des "bonnes" limitations de gopher et évite les problèmes inhérents à http (javascript, publicités, traçage des visiteurs...). Il s'inscrit dans la logique du "smolweb".

C'est un moyen idéal pour publier ses écrits en privilégiant d'abord le contenu plutôt que le contenant.

Il existe plusieurs serveurs, mais je voudrais donner quelques éléments pour installer "vger", un serveur gemini spécialement conçu pour OpenBSD qui met à profit ses méthodes de sécurisation (unveil, pledge...). En supplément, on discutera rapidement de gmid, un autre serveur plus simple à mettre en place.

vger #

Afin de garder vger aussi simple que possible, Solène (développeuse de vger) a eu la brillante idée d'utiliser des éléments déjà présents dans OpenBSD; à savoir :

Voici donc comment installer vger.

# pkg_add vger

La lecture du readme nous apprend la suite de la procédure.

Éditez le fichier /etc/inetd.conf pour y indiquer la façon dont vger sera invoqué :

127.0.0.1:11965 stream tcp nowait _vger /usr/local/bin/vger vger

Par défaut, vger ira chercher les fichiers dans /var/gemini.

Vous pouvez préciser des options, par exemple pour changer le dossier dans lequel est situé la capsule/le site (-d), activer l'auto-indexation des dossiers ne contenant pas de fichier index.gmi (-i) ou encore permettre le support des hôtes virtuels aussi appelés "virtualhosts" (-v). Ce dernier point est intéressant si vous souhaitez servir plusieurs domaines : vger ira ouvrir un dossier chezmoi.tld situé dans /var/gemini si un client demande gemini://chezmoi.tld. Vous pouvez donc ainsi héberger plusieurs capsules en utilisant un dossier portant le nom du domaine à servir (/var/gemini/chezmoi.tld, /var/gemini/autrecapsule.tld).

# serve files in /var/gemini/chezmoi.tld
localhost:11965 stream tcp6 nowait _vger /usr/local/bin/vger vger -v -d /var/gemini/ -i
localhost:11965 stream tcp nowait _vger /usr/local/bin/vger vger -v -d /var/gemini/ -i

Si vous avez été attentif à la ligne ci-dessus, vous aurez remarqué qu'inetd écoute en local (localhost) sur le port 11965 et renvoie la requête vers vger, invoqué en tant qu'utilisateur "_vger". Cela permet de restreindre les possibilités de vger s'il devait être compromis.

De plus, une ligne supplémentaire avec "tcp6" a été ajoutée : cela permet de servir aussi en IPv6. Il faut toutefois avoir correctement rempli le fichier /etc/hosts :

127.0.0.1   localhost
::1         localhost

Ensuite, on ajoute une configuration à relayd dans /etc/relayd.conf :

ext_ip4 = "192.0.2.2"
ext_ip6 = "2001:db8::2"
log connection

tcp protocol "gemini" {
        tls keypair chezmoi.tld
}

relay "gemini" {
        listen on $ext_ip4 port 1965 tls
        protocol "gemini"
        forward to localhost port 11965
}
relay "gemini6" {
        listen on $ext_ip6 port 1965 tls
        protocol "gemini"
        forward to localhost port 11965
}

Quelques explications :

Voici un schéma qui résume le chemin suivi lors d'un accès à votre capsule :

               1965       11965
Visiteur ---> Relayd ---> inetd ---> vger

Il ne reste plus qu'à activer et lancer les services :

# rcctl enable inetd relayd
# rcctl start inetd relayd

Enfin, ouvrez le port 1965 en TCP dans /etc/pf.conf.

Quelques liens pour aller plus loin:

Site officiel Gemini :

https://geminiprotocol.net/

Analyse de vger point de vue sécurité :

https://dataswamp.org/%7Esolene/2021-01-14-vger-security.html

Code source de vger :

https://tildegit.org/solene/vger


gmid #

Omar Polo est l'auteur de gmid, lui aussi un développer d'OpenBSD.

L'avantage principal de gmid est d'avoir une syntaxe semblable aux autres démons OpenBSD, comme httpd.

gemini://gmid.omarpolo.com

On l'installe comme d'habitude:

# pkg_add gmid
# rcctl enable gmid

Vous compléterez /etc/gmid.conf pour y ajouter un nouveau site. Cela peut ressembler à ceci:

user "_gmid"
chroot "/var/gemini"
log style combined

types {
        include "/usr/share/misc/mime.types"
}

server "si3t.ch" {
        listen on * port 1965
        cert "/etc/ssl/si3t.ch-self.crt"
        key  "/etc/ssl/private/si3t.ch-self.key"
        root "si3t.ch"
        lang fr
        auto index on
}

server "b2khgkvb2wn4avjshjp63kknsjwikgwff5dwwydldia6qwf4kdnueyad.onion" {
        listen on localhost port 11966
        cert "/etc/ssl/si3t.ch-self.crt"
        key  "/etc/ssl/private/si3t.ch-self.key"
        root "si3t.ch"
        lang fr
        auto index on
}

Lisez les man gmid et gmid.confi(5) pour y trouver quelques exemples.

Gopher (geomyidae) #

J'en entends déjà rire en lisant ce titre. Non, le protocole gopher n'est pas mort. Bien que peu utilisé, on y trouve encore quelques trésors et sa simplicité est rafraichissante. Gopher vous permettra de partager des textes et des documents sans difficultés. Il s'inscrit dans la logique du "smolweb".

Que ce soit par utilité ou par jeu, nous allons voir comment installer un serveur gopher sous OpenBSD.

Il vous faudra ouvrir et rediriger le port 70 (gopher).

Vous déposerez vos fichiers textes, vos images, vos vidéos (...) dans le dossier /var/gopher, ils seront automatiquement disponibles à l'adresse gopher://chezmoi.tld.

Le serveur geomyidae est écrit en C par un des développeurs chez suckless.

http://r-36.net/scm/geomyidae/file/README.html

L'installation est toute bête :

# pkg_add geomyidae
# rcctl enable geomyidae
# rcctl start geomyidae

Et voilà, plus qu'à remplir votre site dans /var/gopher. 😊

Cependant, je vous conseille de lire le man et d'éditer les options par défaut. Par exemple, on pourra préférer :

# rcctl set geomyidae flags -c -e -h chezmoi.tld -b /var/gopher/chezmoi.tld -t /etc/ssl/private/chezmoi.tld.key /etc/ssl/chezmoi.tld.crt

Vous pourrez consulter les logs dans /var/log/geomyidae.log.

Vous voudrez peut-être jeter un œil au serveur gophernicus (gopher://gophernicus.org/) qui peut profiter d'unveil sous OpenBSD.

gopher://gophernicus.org/

Seedbox #

Ce chapitre décrit comment mettre en place une seedbox, afin de partager et télécharger des fichiers torrent.

Seedbox avec rtorrent #

rtorrent est un client efficace et très léger. Il dispose d'une interface en console pour le contrôler, que certains préfèrent à l'interface web de transmission. En effet, seul un accès SSH est nécessaire pour l'utiliser.

rtorrent est un client efficace et très léger.

https://github.com/rakshasa/rtorrent/wiki/

On commence par l'installer :

# pkg_add rtorrent

Ajoutez ensuite un utilisateur _rtorrent dont l'unique tâche sera de faire tourner rtorrent (ce n'est pas obligé, mais j'aime bien séparer les processus 😊). Nous pouvons maintenant nous connecter en tant qu'utilisateur _rtorrent :

# su _rtorrent

Nous allons créer les dossiers qui serviront à télécharger les torrents, ainsi qu'un dossier dans lequel tous les fichiers .torrent ajoutés seront directement pris en charge par rtorrent :

$ mkdir -p Telechargements/{download,session,torrents}

On crée maintenant le fichier ~/.rtorrent.rc. Vous pouvez copier l'exemple fourni avec le paquet :

$ cp /usr/local/share/examples/rtorrent/rtorrent.rc ~/.rtorrent.rc

On modifie la configuration selon nos besoins. Seules les lignes ne commençant pas par "#" sont prises en comptes. Les autres correspondent souvent aux valeurs par défaut.

# Global upload and download rate in KiB. "0" for unlimited.
download_rate = 0
upload_rate = 20

directory = ~/Telechargements/download 
session = ~/Telechargements/session

# Ajoute ou supprime les fichiers torrents present
schedule = watch_directory,5,5,load_start=~/Telechargements/torrents/*.torrent
schedule = untied_directory,5,5,stop_untied=~/Telechargements/torrents/*.torrent

# Pour utiliser les magnets, il est parfois necessaire d'ouvrir le port d'ecoute
# en tcp seulement
#port_range = 6890-6999
#port_random = no

check_hash = yes

use_udp_trackers = yes

# Ces options permettent l'utilisation des magnets
encryption = allow_incoming,try_outgoing,enable_retry

# Important pour ne pas necessiter le besoin de trackers
dht = auto

# dht_port = 6881
peer_exchange = yes

# Avertissement des chargements terminés
system.method.set_key = event.download.finished,notify_me,"exécute=~/.rtorrent_mail.sh,$d.get_name="

# Ajout de nœuds dht si besoin après un délai : 
schedule2 = dht_node_1, 5, 0, "dht.add_node=router.utorrent.com:6881"
schedule2 = dht_node_2, 5, 0, "dht.add_node=dht.transmissionbt.com:6881"
schedule2 = dht_node_3, 5, 0, "dht.add_node=router.bitcomet.com:6881"
schedule2 = dht_node_4, 5, 0, "dht.add_node=dht.aelitis.com:6881"

Afin d'être averti lorsqu'un téléchargement est terminé, on crée le script ~/.rtorrent_mail.sh :

#!/bin/sh
echo "$(date) : $1 - Download completed." | mail -s "[rtorrent] - Download completed : $1" root

Notez que tous les fichiers .torrents qui seront déposés dans le dossier ~/Telechargements/torrents seront directement téléchargés par rtorrent. Si vous voulez ajouter un fichier torrent à partir de votre ordinateur habituel, vous pouvez utiliser un client SFTP ou la commande scp :

$ scp *.torrent _rtorrent@chezmoi.tld:/home/_rtorrent/Telechargements/torrents/

Reste à lancer rtorrent en arrière-plan à chaque démarrage du serveur. Éditez le crontab de l'utilisateur _rtorrent en entrant crontab -e puis indiquez la ligne suivante :

@reboot /usr/bin/tmux new -s rtorrent -d /usr/local/bin/rtorrent

On utilise tmux installé par défaut sur OpenBSD pour envoyer rtorrent en arrière-plan.

https://man.openbsd.org/tmux

Si vous souhaitez administrer rtorrent par la suite, connectez-vous en SSH avec l'utilisateur _rtorrent, et affichez rtorrent avec la commande tmux a -t rtorrent. Appuyez successivement sur ctrl-b puis la touche d pour vous détacher de rtorrent.

Pour ajouter un lien magnet, vous pouvez appuyer sur backspace (effacer) puis collez le lien magnet (Shift-Inser). Il semble que certains ont besoin d'ouvrir le port d'écoute configuré dans rtorrent (en tcp) afin d'utiliser les magnets sans trackers. Avec la configuration en exemple ci-dessus, ça devrait fonctionner dans problèmes 😁.

Si vous ne vous souvenez plus des touches permettant de contrôler rtorrent, saisissez cette commande :

$ rtorrent -h

Notez que ^s correspond à Ctrl-s. 😉

Seedbox avec transmission #

Transmission se montre très efficace et devrait convenir à la plupart de vos besoins.

https://www.transmissionbt.com/

Il dispose d'interfaces graphiques ainsi que d'une interface dans un navigateur, ce qui le rend très facile à contrôler.

Nous configurerons transmission de façon à télécharger les torrents dans le dossier /var/transmission. Adaptez les chemins du tutoriel selon vos besoins.

La commande habituelle permet de l'installer :

# pkg_add transmission

On va ensuite activer le service. On le démarre puis l'arrête aussitôt afin de créer les fichiers de configurations dont on aura besoin :

# rcctl enable transmission_daemon
# rcctl start transmission_daemon
# rcctl stop transmission_daemon

Nous allons créer des dossiers spécifiques afin d'enregistrer les téléchargements effectués par transmission et stocker les fichiers .torrent :

# mkdir -p /var/transmission/{downloads,incomplete,torrents}

Modifiez les propriétaires de ces répertoires afin d'en autoriser l'accès à transmission :

# chown -R _transmission:_transmission /var/transmission

Si vous souhaitez que d'autres utilisateurs puissent consulter ces répertoires, modifiez les permissions sur ces derniers :

# chmod a+rX /var/transmission

Afin de configurer transmission, éditez le fichier suivant :

/var/transmission/.config/transmission-daemon/settings.json

À l'intérieur, vous pourrez adapter la configuration selon vos besoins. Voici les lignes que j'ai modifiées :

"download-dir": "/var/transmission/downloads",
"encryption": 2,
"incomplete-dir": "/var/transmission/incomplete",
"incomplete-dir-enabled": true,
"peer-port-random-on-start": true,

Je vous propose d'ajouter les lignes suivantes afin que chaque fichier .torrent ajouté dans le dossier /var/transmission/torrents (par SFTP par exemple) soit automatiquement téléchargé par transmission.

"watch-dir": "/var/transmission/torrents",
"watch-dir-enabled": true

Afin de recevoir un mail lorsque le téléchargement d'un torrent est terminé, ajoutez ces lignes :

"script-torrent-done-enabled": true,
"script-torrent-done-filename": "/var/transmission/dl-done.sh",

Le script dl-done.sh peut par exemple contenir ceci :

#!/bin/sh
echo "$(date) : $TR_TORRENT_NAME - Download completed." | mail -s "[transmission] - Download completed : $TR_TORRENT_NAME" toto@example.com

N'oubliez pas de rendre ce dernier exécutable :

# chmod +x /var/transmission/dl-done.sh

Une fois vos modifications terminées, rechargez la configuration de transmission avec la commande suivante :

# rcctl start transmission_daemon

Transmission dispose d'une interface web. Le plus simple afin d'y accéder est d'utiliser un tunnel SSH. À partir de l'ordinateur avec lequel vous souhaitez consulter transmission, lancez la commande suivante :

ssh -N -L 9999:127.0.0.1:9091 utilisateurssh@chezmoi.tld

Une fois identifié, vous pouvez ouvrir un navigateur à l'adresse http://localhost:9999 afin d'accéder à transmission.

Syncthing #

Syncthing permet de sauvegarder ses données et facilement les synchroniser sur plusieurs appareils.

https://syncthing.net/

Il dispose de plusieurs clients (logiciels permettant de l'utiliser) pour Windows, Linux, Android et aussi OpenBSD. Par défaut, tout est chiffré ce qui est tout de même rassurant. C'est, à mon avis, un excellent outil 😋.

Installation et configuration #

Notez qu'il a été empaqueté pour OpenBSD, on peut donc l'installer en une simple commande :

# pkg_add syncthing

Nous allons le laisser tourner en arrière-plan sur notre serveur afin que vous puissiez à tout moment synchroniser vos documents et les sauvegarder. Pour cela, lancez ces commandes :

# rcctl enable syncthing
# rcctl start syncthing

Par défaut, syncthing va stocker sa configuration et les fichiers synchronisés dans /var/syncthing. Ce dossier contient :

Nous pourrions configurer syncthing en éditant ces fichiers, cependant, l'ajout d'autres appareils avec lesquels se synchroniser va vite devenir insupportable. Heureusement, il existe une interface d'administration pour syncthing. Elle n'est disponible qu'à partir du serveur, ce qui n'est pas pratique pour s'en servir car on a besoin d'un navigateur web pour y accéder.

Heureusement, SSH est là 😊.

En effet, nous allons créer un tunnel SSH qui va relier votre ordinateur au serveur. En passant par ce tunnel, nous pourrons accéder à l'interface d'administration de syncthing très facilement.

À partir de votre ordinateur, lancez la commande suivante :

ssh -N -L 9999:127.0.0.1:8384 utilisateurssh@chezmoi.tld

Tant que la session est ouverte, vous pouvez utiliser un navigateur sur votre ordinateur et ouvrir l'adresse http://localhost:9999 afin d'administrer syncthing.

Vous pouvez maintenant ajouter des machines avec lesquelles le serveur restera synchronisé, comme si vous étiez sur le serveur. Je vous laisse visiter le site officiel pour éventuellement télécharger la toute dernière version du client OpenBSD et en savoir plus si vous le souhaitez.

Que faire si les transferts ne démarrent pas ? #

Normalement, syncthing se débrouille tout seul pour trouver les machines à qui il doit envoyer des données.

Si toutefois, il y avait un problème, référez-vous à la documentation officielle qui propose quelques solutions.

https://docs.syncthing.net/users/

Modification dans le pare-feu #

Si l'UPnP n'est pas supporté par votre routeur, vous devriez ouvrir les ports suivant dans le pare-feu :

Il vous faudra aussi rediriger ces ports dans votre routeur.

Tunnel SSH entre les machines #

Vous pouvez relier deux appareils par un tunnel SSH puis indiquer à syncthing de n'écouter qu'en local. Ainsi, il ne se fatiguera plus à chercher les appareils partout, vous aurez déjà établi la connexion entre les 2.

Tout d'abord, creusez le tunnel SSH :

ssh \
    -L 127.0.0.1:22001:127.0.0.1:22000 \
    -R 127.0.0.1:22001:127.0.0.1:22000 \
    batman@chezmoi.tld

L'utilisation de clés peut s'avérer utile... 😉

Un tunnel est donc établi entre les ports 22000 et 22001.

Ensuite, dans la configuration de syncthing, section "Connexions", désactivez toutes les options pour ne laisser que cette adresse d'écoute:

tcp://127.0.0.1:22000

Ensuite, modifiez la configuration des appareils associés pour leur attribuer l'adresse suivante :

tcp://127.0.0.1:22001

Ces deux manipulations sont à faire sur chaque machine.

Utilisation de syncthing #

Partager des documents avec Syncthing est relativement simple. Pour commencer, sur l'ordinateur qui a les documents "sources", cliquez sur "Ajouter un partage" :

../../syncthingshare1.png

Choisissez ensuite un nom au partage afin de vous repérer. Laissez l'ID proposé puis précisez le chemin racine du partage. Ce chemin correspond à l'emplacement des données à sauvegarder, par exemple "/home/jean-eudes/Documents". Si vous aviez déjà ajouté un appareil avec lequel partager, vous pouvez le cocher en bas :

../../syncthingshare2.png

Sinon, ajoutez l'appareil avec lequel partager vos documents. Pour cela, dans la partie "Autres appareils", cliquez sur "Ajouter un appareil" :

../../syncthingshare3.png

../../syncthingshare4.png

Il faut juste coller l'ID de l'appareil que vous pouvez trouver à l'emplacement indiqué.

L'appareil ajouté recevra une notification à accepter, et le partage peut alors commencer.

En apprendre plus sur Syncthing #

Lisez la FAQ de syncthing, très complète et pleine d'astuces 😊

https://docs.syncthing.net/users/

TOR : relay et service caché #

Tor est un logiciel libre permettant de renforcer la vie privée de ses utilisateurs et ainsi passer outre les surveillances subies lors de l'utilisation d'Internet.

https://www.torproject.org/

Lorsqu'on l'utilise, les communications sont réparties à travers une maille de serveurs, afin d'obtenir un onion router. En gros, ce que vous demandez sur le web circule entre une série de serveurs (les couches de l'oignon), ce qui rend très difficile de savoir d'où viennent les paquets, et donc de vous localiser.

Configurer un relais tor #

Il vous est possible de participer à ce réseau en étant un serveur relais. Qui plus est, cela rendra d'autant plus difficile de déterminer vos propres activités, puisque vos centres d'intérêt seront noyés parmi le trafic sortant de votre connexion.

Tor peut avoir besoin d'ouvrir de nombreuses connexions. Réduire les limitations peut alors être une bonne idée. Ajoutez dans le fichier /etc/sysctl.conf

kern.maxfiles=20000

Installez et activez Tor ainsi :

# pkg_add tor
# rcctl enable tor

Assurez-vous d'ouvrir dans votre pare-feu, et de rediriger dans votre routeur le port 9001.

Ensuite, éditez le fichier /etc/tor/torrc, afin d'obtenir ces quelques lignes :

SOCKSPort 0
ORPort 9001
Nickname Surnom
RelayBandwidthRate 75 KB  
RelayBandwidthBurst 100 KB 
ContactInfo votrenom <adresse AT email dot fr>
ExitPolicy reject *:* # no exits allowed

Modifiez les valeurs pour RelayBandwidthRate et RelayBandwidthBurst selon votre accès à Internet. Il s'agit de la bande passante que vous laissez disponible pour Tor. C'est une bonne idée de préciser votre adresse mail aussi pour être averti en cas de problème ou de mise à jour importante.

Enfin, démarrez Tor avec # rcctl start tor et attendez de voir apparaître dans le fichier /var/log/messages :

May 12 12:20:41 chezmoi Tor[12059]: Bootstrapped 80%: Connecting to the Tor network
May 12 12:20:41 chezmoi Tor[12059]: Bootstrapped 85%: Finishing handshake with first hop
May 12 12:20:42 chezmoi Tor[12059]: Bootstrapped 90%: Establishing a Tor circuit
May 12 12:20:44 chezmoi Tor[12059]: Tor has successfully opened a circuit. Looks like client functionality is working.
May 12 12:20:44 chezmoi Tor[12059]: Bootstrapped 100%: Done
May 12 12:20:44 chezmoi Tor[12059]: Now checking whether ORPort 109.190.xxx.xxx:9001 is reachable... (this may
take up to 20 minutes -- look for log messages indicating success)
May 12 12:21:10 chezmoi Tor[12059]: Self-testing indicates your ORPort is reachab

Configurer un service caché tor #

Vous pouvez proposer votre site web (ou n'importe quel autre service) au travers du réseau Tor. Ceux qui voudront y accéder utiliseront une adresse se terminant par ".onion", comme "5rud2tr7sm3oskw5.onion".

Cela présente un avantage considérable : **cette URL restera inchangée**, même si votre IP est modifiée ou dynamique 😎.

⚠ Avant d'aller plus loin, notez qu'il est très fortement déconseillé d'héberger un relais et un service caché en même temps.

Ceci étant dit, vous pouvez activer votre site caché en éditant le fichier /etc/tor/torrc. Décommentez les lignes correspondantes ou ajoutez-les :

SOCKSPort 0
HiddenServiceDir /var/tor/hidden/
HiddenServicePort 80 localhost:80

Relancez Tor pour activer ce service caché : # rcctl restart tor. Deux nouveaux fichiers vont apparaître dans le dossier /var/tor/hidden/ : hostname et private_key. L'adresse de votre service en ".onion" se trouve dans le fichier hostname. Notez-la :

# cat /var/tor/hidden/hostname
5rud2tr7sm3oskw5.onion

Cependant, ne communiquez jamais le contenu de private_key.

Il ne nous reste plus qu'à configurer httpd pour lui dire de recevoir les connexions vers l'adresse en ".onion" et de les servir. Le fichier /etc/httpd.conf pourra alors contenir ceci :

server "5rud2tr7sm3oskw5.onion" {
        listen on localhost port 80
        # emplacement du site
        root "/htdocs/chezmoi.tld"     
        directory index index.html

        [...]
}

Vous pouvez tester votre site (après un # rcctl reload httpd bien sûr) avec le navigateur torbrowser.

torbrowser

https://www.torproject.org/download/

Mais, ce n'est pas chiffré dans une adresse https! Est-ce vraiment sécurisé?

Bonne remarque. Le chiffrement TLS n'est pas nécessaire ici, puisque le tunnel ouvert par Tor pour accéder au site est entièrement chiffré. De plus, le navigateur devrait valider le certificat, or, ce dernier n'est pas enregistré pour un domaine en ".onion". Notez que si vous pouvez obtenir un certificat pour cette adresse, c'est alors possible de configurer un accès en https.

Monitoring #

Voici quelques possibilités pour surveiller la charge de votre serveur.

systat #

Systat est présent par défaut dans OpenBSD. Vous pouvez obtenir des informations sur le système en temps réel en saisissant la commande systat vm. Vous aurez alors des informations sur l'utilisation de la mémoire, des processeurs, des disques...

Pour avoir des informations sur le débit montant et descendant, tapez systat ifstat. Vous observerez en temps réel la quantité de données entrantes (IBYTES) et sortantes (OBYTES).

Pour des informations concernant la température du matériel (si vous craignez la surchauffe !), entrez systat sensors.

cpu0.temp0          51.00 degC
acpitz0.temp0       26.80 degC      zone temperature

À chaque fois, appuyez sur la touche q pour quitter.

vmstat #

Lui aussi présent par défaut, vmstat donne un aperçu rapide sur la charge du système :

$ vmstat
 procs    memory       page                    disks    traps          cpu
 r   s   avm     fre  flt  re  pi  po  fr  sr sd0 sd1  int   sys   cs us sy id
 1 274 1500M   1253M  657   0   0   0   0   0   1   4  190 15482 1826  2  1 97

symon #

Symon va vous permettre d'obtenir des statistiques sur les ressources utilisées par votre serveur et de les consulter sur une page web.

Commençons par installer le nécessaire :

# pkg_add symon symux syweb

On modifie ensuite la configuration de symon qui va surveiller le système. Pour cela, on modifie le fichier /etc/symon.conf et on garde les informations qui nous intéressent :

monitor { cpu(0),  mem,
          if(lo0),
          if(re0),
          pf,
          mbuf,
          sensor(cpu0.temp0),
          proc(httpd),
          io(wd0),
          io(wd1),
          df(sd1b)
} stream to 127.0.0.1 2100

De la même façon, on configure symux qui va analyser les données recueillies par symon. On édite le fichier /etc/symux.conf :

mux 127.0.0.1 2100

source 127.0.0.1 {
  accept { cpu(0),  mem,
      if(lo0),
      if(re0),
      pf,
      mbuf,
      sensor(cpu0.temp0),
      proc(httpd),
      io(wd0),
      io(wd1),
      df(sd1b)
  }

  datadir "/var/www/symon/rrds/localhost"
}

On ne fait que reproduire les mêmes éléments que dans /etc/symon.conf. Attention à bien indiquer le chemin vers le dossier contenant les données datadir. On va d'ailleurs le créer dès maintenant :

# mkdir -p -m 0755 /var/www/symon/rrds/localhost

On crée maintenant les fichiers rrd :

# /usr/local/share/examples/symon/c_smrrds.sh all

Puisque le serveur web est dans un chroot, il faut lancer la commande suivante pour installer l'outil d'analyse des données et ses dépendances (rddtool) :

# /usr/local/share/examples/rrdtool/rrdtool-chroot enable

Une fois ceci fait, il faut préciser dans la configuration de syweb où trouver l'outil rrdtool. Dans le fichier /var/www/htdocs/syweb/setup.inc, modifiez si nécessaire la ligne contenant $symon['rrdtool_path'] ainsi :

$symon['rrdtool_path']='/usr/local/bin/rrdtool';

Reste une dernière modification à apporter. Puisque le serveur web est dans un chroot, il faut lui donner accès au shell /bin/sh afin que PHP puisse lancer rrdtool qui génère les graphiques :

# mkdir -p /var/www/bin
# cp /bin/sh /var/www/bin

On recharge tous les nouveaux démons après les avoir activés :

# rcctl enable symon
# rcctl enable symux
# rcctl start symon
# rcctl start symux

On ajoute la configuration convenable pour le serveur http, dans le fichier /etc/httpd.conf (c'est du PHP) :

server "statistiques.chezmoi.tld" {
        listen on * port 80  
        root "/htdocs/syweb"
        directory index index.php

        location "*.php" {
                fastcgi socket "/run/php-fpm.sock"
        }
}

Reste à recharger ce dernier avec # rcctl reload httpd puis à ouvrir le site définit pour voir les beaux graphiques.

Autres #

https://oss.oetiker.ch/rrdtool/

https://oss.oetiker.ch/smokeping/

https://grafana.com/

https://www.mmonit.com/monit/


Table des matières

Donate