werk.feub.net

Icon

Mémo de Fabien Amann à propos de Mac, Fedora et caetera

Changer le port SSH par défaut d’OS X

Ce n’est pas nouveau, mais depuis Tiger, et maintenant sous Snow Leopard, la gestion de SSH est reléguée au démon launchd et non plus à xinetd. Ainsi pour changer le numéro de port de SSH, une petite gymnastique s’impose.

Comme beaucoup de démons sous OS X, le fichier de configuration se trouve sous /System/Library/LaunchDaemons et celui qui nous intéresse se nomme naturellement ssh.plist.

Lorsque l’on édite ce fichier de configuration, on peut trouver ces lignes qui renseignent sur le port du service ssh.

 <key>SockServiceName</key>
 <string>ssh</string>

Oui, mais cela ne ressemble pas à un numéro de port. Juste. En fait, pourquoi faire simple quand on peut compliquer un petit peu, la chaîne ssh renvoie au fichier /etc/services, et on trouve bien que ssh est sur le port standard 22 (en UDP et TCP).

ssh              22/udp     # SSH Remote Login Protocol
ssh              22/tcp     # SSH Remote Login Protocol

Il suffit donc de rajouter un nouveau nom avec le port correspondant, par exemple si l’on veut utiliser SSH sur le port 2222 au lieu de 22 :

ssh2              2222/udp     # SSH Remote Login Protocol
ssh2              2222/tcp     # SSH Remote Login Protocol

Et d’aller bien sur renommer la chaîne correspondant au SockServiceName dans le ssh.plist, comme ceci :

 <key>SockServiceName</key>
 <string>ssh2</string>

On relance le service :

# launchctl unload /System/Library/LaunchDaemons/ssh.plist
# launchctl load /System/Library/LaunchDaemons/ssh.plist

Et le tour est joué. Il suffit de bien penser à se connecter sur le bon port désormais ($ ssh -p 2222).

OS X : serveur VNC Vine Server

Il arrive que j’ai besoin d’accéder à mon Mac Mini depuis le réseau local ou depuis l’extérieur, la plupart des tâches se faisant en ssh, il m’est de temps en temps utile, voir indispensable d’avoir accès à mon bureau. Pour se faire, j’utilise le serveur VNC Vine Server (OSXvnc). Bien qu’il possède un mode server qui permet de le faire tourner au démarrage du système, je ne veux le démarrer que lorsque j’ai vraiment besoin d’un accès GUI. La procédure est donc la suivante, je me connecte en ssh sur la machine, je lance le serveur VNC, je fais mon travail et j’arrête OSXvnc.
Ce petit tutoriel explique la démarche.

Après avoir installé Vine VNC, celui-ci se retrouve naturellement sous /Applications/Vine Server.app, ce répertoire contenant :

Contents
OSXvnc-server -> Contents/Resources/OSXvnc-server
storepasswd -> Contents/Resources/storepasswd

Nous allons créer un mot de passe (crypté) avec l’utilitaire storepasswd fourni :

# cd /Applications/Vine Server.app
# ./storepassword mot_de_passe nom_de_fichier

Voilà, un mot de passe est crée. Ne reste plus qu’à lancer OSXvnc comme ceci :

# ./OSXvnc-server -rfbauth nom_du_fichier -rfbport 5999

L’option -rfbauth va lire le fichier de mot de passe et -rfbport change le port standard.
En fin d’opération, il ne reste plus qu’à tuer le processus OSXvnc.

Squid pour l’Iran

Super idée toute simple relevée sur ce billet de Nicoz pour apporter sa petite contribution au bouleversement iranien de ces derniers jours : mettre en place un proxy pour aider le peuple iranien à se connecter au reste du monde d’une façon plus libre en passant par un proxy maison.

Mise en place

On installe Squid si ce n’est déjà fait, en Fedora/Red Hat/CentOS/Yum-ish :

# yum -y install squid

Edition du fichier de config :

# vim /etc/squid/squid.conf

Puis chercher la ligne http_access deny all, la remplacer naturellement par http_access allow all. Attention, ceci autorise toutes les connexions extérieures – c’est le but – donc penser au côté sécurité, ne pas le faire sur n’importe quelle machine.

Peut-être ne voulez-vous pas ouvrir votre serveur au monde, mais le restreindre aux IP iraniennes, dans ce cas remplacer le http_access deny all par http_access allow TRUSTED et ajouter l’ACL avant cette déclaration, comme suit :

acl TRUSTED src 62.60.128.0/17 62.193.0.0/19 62.220.96.0/19 77.36.128.0/17 77.77.64.0/18 77.104.64.0/18 77.237.64.0/19 77.237.160.0/19 77.245.224.0/20 78.38.0.0/15 78.109.192.0/20 78.110.112.0/20 78.111.0.0/20 78.154.32.0/19 78.157.32.0/19 78.158.160.0/19 79.127.0.0/17 79.132.192.0/19 79.170.144.0/21 79.175.128.0/18 80.66.176.0/20 80.69.240.0/20 80.71.112.0/20 80.75.0.0/20 80.191.0.0/16 80.242.0.0/20 80.253.128.0/20 80.253.144.0/20 81.12.0.0/17 81.28.32.0/20 81.28.48.0/20 81.31.160.0/20 81.31.176.0/20 81.90.144.0/20 81.91.128.0/20 81.91.144.0/20 82.99.192.0/18 82.115.0.0/19 83.147.192.0/18 84.47.192.0/18 84.241.0.0/18 85.9.64.0/18 85.15.0.0/18 85.133.128.0/17 85.185.0.0/16 85.198.0.0/18 86.109.32.0/19 87.107.0.0/16 87.247.160.0/19 87.248.128.0/19 89.144.128.0/18 89.165.0.0/17 89.221.80.0/20 89.235.64.0/18 91.98.0.0/15 91.184.64.0/19 91.186.192.0/19 91.206.122.0/23 91.208.165.0/24 91.209.242.0/24 91.212.16.0/24 91.212.19.0/24 91.212.252.0/24 92.42.48.0/21 92.50.0.0/18 92.61.176.0/20 92.62.176.0/20 92.242.192.0/19 93.110.0.0/16 93.190.24.0/21 94.74.128.0/18 94.101.128.0/20 94.101.176.0/20 94.101.240.0/20 94.139.160.0/19 94.182.0.0/15 94.184.0.0/17 94.232.168.0/21 94.241.128.0/18 95.38.0.0/16 95.80.128.0/18 95.81.64.0/18 95.82.0.0/18 95.82.64.0/18 95.130.56.0/21 95.130.240.0/21 188.34.0.0/16 188.93.64.0/21 188.121.96.0/19 188.121.128.0/19 188.136.128.0/17 188.158.0.0/15 193.189.122.0/23 194.225.0.0/16 195.146.32.0/19 212.16.64.0/19 212.33.192.0/19 212.50.224.0/19 212.80.0.0/19 212.95.128.0/19 212.120.192.0/19 213.176.0.0/19 213.176.32.0/19 213.176.64.0/18 213.195.0.0/18 213.207.192.0/18 213.217.32.0/19 213.233.160.0/19 217.11.16.0/20 217.24.144.0/20 217.25.48.0/20 217.64.144.0/20 217.66.192.0/20 217.66.208.0/20 217.146.208.0/20 217.172.96.0/19 217.174.16.0/20 217.218.0.0/15

Il est également conseillé de stopper les logs qui peuvent grossir vite. Dans le squid.conf :

access_log none
cache_store_log none

Redémarrage du serveur mandataire :

# service squid restart

Et voilà! Vous n’avez plus qu’à en informer Austin Heap (ou via Twitter) qui liste tous les serveurs disponibles de par le monde et qui est l’initiateur de cette démarche.

Mise à jour un peu douloureuse d’edoras en Fedora 11

Petite anecdote pour commencer ce billet, il m’aura fallu toutes ces années pour me rendre compte que le nom de mon petit serveur domestique edoras est à une lettre près (bon allez deux, mais l’autre est plutôt muette) Fedora. Youpie!

Leonidas est dans la place

Après une tentative plutôt infructueuse par le biais de preupgrade – tout se passait bien, mais après la demande de redémarrage, j’étais toujours sous F10 – j’ai décidé de télécharger le DVD de Leonidas, ne serait-ce que pour l’avoir, et de faire la mise-à-jour.

Celle-ci s’est bien passée, mais les problèmes ont débuté avec YUM qui n’était plus là : no module named yum et un soucis de version du paquet rpm-python. J’ai vite vu que c’était toujours la version F10 du gestionnaire de paquets qui était présente, d’où le problème de dépendance relatif à python. J’ai donc installé le RPM de YUM pour F11 et tout est rentré dans l’ordre. J’ai pu mettre à jour cette F11 (pas vraiment) fraîchement installée.

Le gros du soucis a été du côté du serveur DHCP, celui-ci ne voulant absolument pas démarrer. Les logs m’indiquaient qu’il fallait spécifier l’interface réseau utilisée dans le dhcpd.conf comme j’ai deux cartes réseaux. J’ai retourné la doc d’ISC et les forums pendant une bonne heure et demi (je n’ose pas dire deux..) pour m’apercevoir que désormais le fichier de configuration se trouve sous /etc/dhcp et non plus directement sous /etc. L’adage « Petite cause, grands effets » est souvent de mise en informatique – genre pour les problèmes en séries – mais là c’était « Grand effet, petite cause« .

OS 3.0 pour iPhone

Le passage a F11 m’a permis la mise-à-jour de l’iPhone également. Petite étape en OS officiel avant le jailbreak dès qu’il sera disponible.
D’apparence aucun lien entre les deux sujets de ce billet si ce n’est que j’avais besoin d’edoras pour cette opération car ma bibliothèque iTunes est sur un volume NFS du serveur linux, donc pas d’iTunes, pas de mise-à-jour de l’iPhone.

Au menu des nouveautés en vrac donc : enfin le copier-coller-couper, dictaphone, MMS, mode paysage généralisé, Spotlight, synchro des notes, secouer l’appareil pour mélanger….

Script de sauvegarde type snapshot

Il y a de cela un petit moment j’avais publié le script de sauvegarde que j’utilisais. Celui-ci propose un menu afin de choisir quoi sauvegarder. Je le trouvais plus souple pour des sauvegardes ponctuelles, faîtes à la main. Depuis il a évolué, il s’est simplifié. Bien que je l’utilise toujours, j’ai décidé de mettre en place un script plus automatisé côté serveur (clavicogyre est en général lancé depuis la station) et qui me donne une sauvegarde plus globale de type snapshot, un peu à la manière de Time Machine sur Macsans l’aspect graphique.

Le principe

Le principe n’est pas nouveau, il s’agit de faire une sauvegarde rsync avec les options récursifs (-r), archives (-a) et suppression (–delete) dans un répertoire current. Lorsque la tâche est terminée, on fait une copie cp avec les options liens durs (-l) et archives (-a) du contenu de current au même niveau vers un répertoire qui porte la date du jour. Et voilà. Lors de la prochaine sauvegarde, rsync va ajouter les nouveaux fichiers, mettre à jour ceux modifiés et supprimer ceux qui ont été supprimés dans current. L’historisation dans les répertoires avec la date permet de remonter vers différentes versions d’un fichier quant au répertoire current, il dispose toujours de l’image à jour des fichiers.

Le script

Voici le script que j’utilise :

#!/bin/bash
 
#======================================================================
# snapshot_backup.sh - Script de sauvegarde de type snapshot
#======================================================================
# by fabien a. [fabien@feub.net]
# http://werk.feub.net/
#======================================================================
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License
# as published by the Free Software Foundation; either version 2
# of the License, or (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not,
#  - write to the Free Software
#               Foundation, Inc.,
#               51 Franklin Street,
#               Fifth Floor,
#               Boston, MA  02110-1301
#               USA.
#               - See http://www.gnu.org/licenses/gpl.html
#======================================================================
 
#======================================================================
# VARIABLES
#======================================================================
 
SOURCE="/rep/source/"
CIBLE="/rep/cible/"
 
DATE=`date +%Y%m%d-%H%M`
LOG="/rep/du/log/snapshot_rsync-${DATE}.log"
 
REP_A_SVG="etc usr bin home"
 
MAIL_DEST="toto@tata.net"
MAIL_SUBJECT="[snapshot] du `date +%D` à `date +%H:%M` "
 
VER="0.9"
 
#======================================================================
# EXECUTION
#======================================================================
 
echo "======================================================================"  | tee -a $LOG
echo "snapshot_backup.sh v.$VER" | tee -a $LOG
echo "http://werk.feub.net/" | tee -a $LOG
echo "----------------------------------------------------------------------" | tee -a $LOG
 
#======================================================================
# SYNCHRONISATION
#======================================================================
 
echo "Début de la sauvegarde le `date +%D` à `date +%H:%M` " | tee -a $LOG
echo "----------------------------------------------------------------------" | tee -a $LOG
for REP in $REP_A_SVG ;  do
    echo "    *    Sauvegarde de  $REP" | tee -a $LOG
    rsync -vrap --delete ${SOURCE}$REP $CIBLE/current | tee -a $LOG
done;
 
echo "----------------------------------------------------------------------" | tee -a $LOG
 
#======================================================================
# SNAPSHOT
#======================================================================
 
cp -val $CIBLE/current $CIBLE/$DATE | tee -a $LOG
 
echo "Fin de la sauvegarde le `date +%D` à `date +%H:%M` " | tee -a $LOG
echo "======================================================================" | tee -a $LOG
 
 
#======================================================================
# ENVOI EMAIL LOG
#======================================================================
 
/bin/mail -s "$MAIL_SUBJECT" $MAIL_DEST < $LOG
wait
 
exit 0

Cette technique permet d’avoir des sauvegardes historisées tout en gagnant beaucoup de place grâce aux copies en liens durs (hardlinks).