LINUX:SSH et RSYNC

De WIKI sur Linux (ADB)
Aller à la navigation Aller à la recherche

But

Dans les opérations suivantes nous allons utiliser le protocole SSH seul ou en conjonction avec RSYNC. Nous allons donc configurer celui-ci et l'utilisateur concerné par notre projet sur la machine distante.

Nous désignerons comme machine distante ou serveur, celle où on se connecte via le protocole SSH et où on fait les sauvegardes et la machine émettrice ou clienr, celle qui se connecte à celle machine serveur et qui sauvegarde ses données sur cette même machine distante.

En premier lieu, l'utilisateur concerné par le projet sera configuré sur la .

En second lieu, nous allons configurer le protocole SSH.

Enfin le paramétrage de SSH pour cet utilisateur sera effectué.


Utilisateur

Cette étape se fait sur la machine serveur.


Création de l'utilisateur

Nous avons nommé cet utilisateur "sauvegarde". Il ne pourra pas s'authentifier par mot de passe. Son répertoire racine est "/produc/sauvegarde/". Il appartient au nouveau groupe créé "sauvegarde". On pourrait les créer en ligne de commande mais nous avons choisit d'ajouter directement ces informations dans les fichiers concernés et de créer le répertoire dédié avec ses droits. Attention ces ajouts doivent être faits via un éditeur de texte. Cette opération est effectuée sur la machine distante.


Débutons par la création du groupe "sauvegarde".

On ajoute la ligne suivante dans le fichier "/etc/group":


sauvegarde:x:1001:

Attention: L'ID du groupe "1001" doit être unique, sinon adaptez-le.

On ajoute ensuite la ligne suivante dans le fichier "/etc/gshadow":


sauvegarde:!::


Ensuite vient la création de l'utilisateur.

On ajoute la ligne suivante dans le fichier "/etc/passwd":


sauvegarde:x:1001:1001:Sauvegarde:/produc/sauvegarde:/bin/bash

Attention: Nous faisons la même remarque que pour l'ID de groupe (le second "1001") concernant l'ID de l'utilisateur (le premier "1001").

On ajoute ensuite la ligne suivante dans le fichier "/etc/shadow":


sauvegarde:!!:18860:0:99999:7:::

On remarque que l'utilisation du mot de passe est désactivé.


Enfin il faut créer son répertoire racine et adapter les privilèges:

mkdir /produc/sauvegarde
chmod -R 700 /produc/sauvegarde
chown -R sauvegarde:sauvegarde /produc/sauvegarde


Droit ROOT

Dans le projet, l'utilisateur "sauvegarde" doit pouvoir pouvoir éteindre la machine (programme "shutdown") or ce droit est réservé à l'utilisateur "root". De plus ceci doit pouvoir se faire sans l'aval du mot de passe. Pour ce faire, il faut ajouter ce droit dans le fichier "/etc/sudoers":


sauvegarde  ALL= NOPASSWD: /usr/sbin/shutdown

Cette opération est effectuée sur la machine distante. Le paramètre "ALL" doit être remplacé par le nom de la machine locale ou son adresse IP si ce fichier est partagé vers différentes machines.


SSH

Cette seconde étape se fait aussi sur cette machine serveur. Elle consiste a mettre en place un serveur SSH propre à notre projet.


Fichier de configuration

On commence par créer un fichier de configuration. Le fichier de configuration natif se situe sans le répertoire "/etc/ssh" et se nomme "sshd_config"; il utilise le port 22. Notre but est d'utiliser un autre port, le 6333 et nous désirons que seul l'utilisateur "sauvegarde" créé ci-dessus y accède seulement via une clé d'authentification. Seule la machine client ayant l'adresse IP 192.168.1.2 peut y accéder. Nous nommerons ce fichier "sshd6333_config".

Voici sont contenu:


Include /etc/ssh/sshd_config.d/*.conf
# port personnalisé
Port 6333
# limiter à IPV4
ListenAddress 0.0.0.0
LogLevel VERBOSE
# root ne sait pas se connecter
PermitRootLogin no
# maximum 3 essais de connexion
MaxAuthTries 3
MaxSessions 2
# accepte les clés d'authentification
PubkeyAuthentication yes
# les clés publiques de l'utilisateur sont sur le serveur dans son profil dans ce fichier
AuthorizedKeysFile  .ssh/authorized_keys
# login/password unix  désactivé
PasswordAuthentication no
# password vide refusé
PermitEmptyPasswords no
ChallengeResponseAuthentication no
# forwarding désactivé par défaut
AllowTcpForwarding no
# X11 forwarding désactivé
X11Forwarding no
AllowAgentForwarding no
X11UseLocalhost no
# sftp désactivé
#Subsystem      sftp    /usr/libexec/openssh/sftp-server
TCPKeepAlive no
ClientAliveInterval 300
ClientAliveCountMax 1
PermitTTY no
# limité à l'utilisateur sauvegarde à partir de la machine ayant l'adresse IP 192.168.1.2
AllowUsers sauvegarde@192.168.1.2


Service

Il faut ensuite créer ce service.

On crée dans le répertoire "/lib/systemd/system" le fichier "sshd6333.service" sur base du service natif SSH.

Voici son contenu:


[Unit]
Description=OpenSSH server daemon (6333)
Documentation=man:sshd(8) man:sshd_config(5)
After=network.target sshd-keygen.target
Wants=sshd-keygen.target
[Service]
Type=notify
EnvironmentFile=-/etc/sysconfig/sshd
ExecStart=/usr/sbin/sshd -D -f /etc/ssh/sshd6333_config $OPTIONS
ExecReload=/bin/kill -HUP $MAINPID
KillMode=process
Restart=on-failure
RestartSec=42s
[Install]
WantedBy=multi-user.target

La seule différence se situe au niveau de l'appel au fichier de configuration créé ci-dessus.


Maintenant il faut activer ce service.

On commence par recharger la configuration de "systemd" car on vient de la modifier avec la commande suivante:

systemctl daemon-reload

On active le nouveau service par son nom de fichier:

systemctl enable sshd6333.service

Enfin on le lance:

systemctl start sshd6333.service


On peut vérifier que ce port est actif par la commande:

netstat -natp | grep 6333

qui donne:

tcp        0      0 0.0.0.0:6333            0.0.0.0:*               LISTEN      836/sshd: /usr/sbin


Si votre firewall est actif, n'oubliez pas d'ajouter l'accès dans la table FILTER d'IPTABLES:


-A INPUT -p tcp -m tcp --dport 6333 -s 192.168.1.2 -m conntrack --ctstate NEW -j ACCEPT





->retour à RSYNC-Rassemblement sur une autre machine