cd /
;
apropos
;
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/
Prosody est un serveur XMPP à la fois léger et facile à configurer.
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
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.
É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
Ouvrez les ports 5222 (xmpp-client) et 5269 (xmpp-server).
Éditez /etc/newsyslog.conf :
/var/prosody/prosody.log 644 5 300 * Z /var/prosody/prosody.err 644 5 300 * Z
Remplacez "chezmoi.tld" par le domaine de votre serveur et ouvrez l'URL suivante :
https://xmpp.net/result.php?domain=chezmoi.tld&type=server
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.
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.
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
Ça se passe sur le site officiel 😉
https://prosody.im/doc/configure
À 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 :
C'est plus long à écrire qu'à faire :
# pkg_add mlmmj
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
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
É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.
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 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.
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 :
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
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.
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.
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.
Ce chapitre décrit comment mettre en place une seedbox, afin de partager et télécharger des fichiers torrent.
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.
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. 😉
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 permet de sauvegarder ses données et facilement les synchroniser sur plusieurs appareils.
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 😋.
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.
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/
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.
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.
Partager des documents avec Syncthing est relativement simple. Pour commencer, sur l'ordinateur qui a les documents "sources", cliquez sur "Ajouter un partage" :
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 :
Sinon, ajoutez l'appareil avec lequel partager vos documents. Pour cela, dans la partie "Autres appareils", cliquez sur "Ajouter un appareil" :
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.
Lisez la FAQ de syncthing, très complète et pleine d'astuces 😊
https://docs.syncthing.net/users/
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.
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.
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
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.
Voici quelques possibilités pour surveiller la charge de votre serveur.
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.
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 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.
https://oss.oetiker.ch/rrdtool/
https://oss.oetiker.ch/smokeping/