deb-on-air logo
Actualisé le 08/03/2007

Démons et Services réseau

Démons et processus

Les démons désignent des programmes fonctionnant de manière permanente durant les sessions actives de l'ordinateur. On les appelle aussi services ou processus. Le processus initrd est lancé et pour le moment, c'est le processus ou démon père utilisé pour activer tous les autres processus utiles au démarrage de votre système GNU/Linux. C'est pourquoi votre chargeur de démarrage a absolument besoin de trouver initrd pour que votre système se lance.

Quand un programme se lance, se crée son symbole de représentation dans le répertoire /proc, et qui désigne son ou ses processus particuliers. Grâce à cette représentation symbolique, il est possible de "tuer" un programme récalcitrant en adressant une commande d'arrêt vers son ou ses identifiants de processus.

Les démons qui nous occupent ici sont des services qui peuvent assurer des fonctions réactives du fait qu'ils veillent en permanence, au cas où on leur adresse des requêtes dans leur domaine de compétences. Les démons les plus connus son cupsys, le service pour l'impression et bien entendu xserver, le service pour l'affichage à l'écran. Mais par exemple si vous voulez permettre à certains service complémentaires de fonctionner ainsi pour attendre des requêtes, il vous faudra les lancer soit manuellement en ligne de commande, soit configurer votre ordinateur afin qu'ils se lancent comme cups ou kdm au démarrage de l'ordinateur.

Saisir cette nécessité est utile pour pouvoir utiliser des serveurs comme Apache2, Mysql, ssh, samba et bien d'autres démons, qui doivent impérativement être activés pour que leurs fonctions soient opérationnelles pour leurs utilisateurs.

La commande standard pour lancer un service en cours de session est une commande administrateur, qui nécessite de préciser le chemin absolu du script permettant son lancement. Sa syntaxe est la suivante :

# /etc/init.d/nom_du_service start

Activer de nouveaux services au démarrage de sidux

Le système de gestion des programmes de Debian Sid présente l'inconvénient d'activer par défaut au démarrage les services de tout nouveau programme installé (ou mis-à-jour) qui le permettrait. Le démarrage automatisé des services s'opère par l'appel de scripts d'exécution au moyen de raccourcis disposés dans des répertoires correspondant à chaque niveau d'exécution du système et intitulés /etc/rc.x, où x détermine la valeur de niveau. Bien que relativement aisé à gérer, ce système peut conduire lors des mises-à-jour d'une distribution Debian, à obtenir un système très lent du fait qu'il lance plein de services inutiles ordinairement.

Veillez donc à surveiller attentivement la gestion des services, en particulier quand vous en installez de nouveau.

Par défaut, Sidux active les services suivants au démarrage : cpid, cron, dbus, hotkey-setup, kdm, klogd, sysklogd et ceux-ci sont mis-à-jour chaque fois qu'un dist-upgrade est opéré. Comme indiqué plus haut, en cas de dist-upgrade, tous les services inactifs à l'origine devienne actifs par la suite !

Heureusement, il existe un outil très pratique pour corriger cet effet et choisir à bon escient les services qu'on désire activer au démarrage de son ordinateur : rcconf. Il se lance dans un terminal d'administration via la commande :

# rcconf

Son fonctionnement est des plus simples puisqu'il suffit d'y naviguer d'un service à l'autre à l'aide des touches haut/bas du pavé fléché de votre clavier, en sélectionnant/désélectionnant les services à l'aide de la barre espace (les services dont l'activation est commandée sont signalés au moyen d'une étoile), d'utiliser la touche TAB (tabulation) pour changer de commande ou annuler, et d'appuyer sur la touche "Entrée" pour y appliquer vos changements.

Une commande console directe pour le contrôle d'activation d'un service particulier, à laquelle vous pourrez recourir en tant qu'alternative à rcconf est :

update-rc.d nom_du_service defaults

n'oubliez pas les aides accessibles via man rcconf et man update-rc.d !

Services réseau :
ssh et ftp

Ftp

Deux outils pratiques permettent à GNU/linux de communiquer entre ordinateurs connectés en réseau local et notamment d'échanger des fichiers entre ordinateurs: le protocole ftp et le démon ssh. Ssh présente l'avantage d'être crypté et d'authentifier la connexion. Il est particulièrement judicieux d'utiliser ssh pour réaliser à distance des opérations de configuration en mode console sur une machine du réseau local dont on connait l'adresse TCP/IP.

Utiliser ftp avec gftp

L'outil Gftp vous rendra service pour échanger grâce à ssh et ftp des fichiers entre vos machines locales. Comme pour le paramétrage cité plus haut, on y entre l'adresse IP locale de destination, le port 22 (port utilisé par ssh), le nom d'utilisateur, son mot de passe, et pour protocole ssh2. Les deux fenêtres du logiciel, la gauche locale et la droite distante, y permettent de visualiser et réaliser aisément les transferts de fichier et répertoires. Pour l'installer :

$ apt-get update
$ apt-get install gftp

L'installation achevée, vous trouverez gftp au 'Menu -> Internet -> Gftp'

Pour utiliser ftp, changez simplement l'adresse du port en 21 et le protocole en ftp. Se substituant dans champ ad hoc à l'adresse ip locale, l'url d'un serveur ftp vous permet aussi avec gftp de gérer les fichiers d'un serveur ftp distant ; par exemple :

ftp.serveur_untel.fr

FTP n'est guère utilisé que pour transférer de gros fichiers localement, car ce protocole n'est absolument pas sécurisé. Utilisez-le chez vous exclusivement.

Utilisation sommaire de ssh

Se connecter à une machine distante

Le protocole ssh ne fonctionne que si le démon ssh est actif sur les deux machines à connecter entre elles. Pour le lancer on entre :

# /etc/init.d/ssh start

Pour se connecter au système Linux d'une machine locale en ssh on entre dans une console :

$ ssh utilisateur@adresse_ip_de_la_machine

(l'utilisateur doit bien entendu être un utilisateur de la machine distante, pour être admis à s'y connecter)

Lors de la première connexion à une machine le démon ssh vous demandera s'il doit créer une clé d'authentification de la connexion. Il faut accepter pour rendre la communication ssh possible. Cette clé est destinée à authentifier les connexions de machine à machine, qui dans ce protocole, s'opèrent en mode crypté.

Une fois connecté l'utilisateur distant a accès aux répertoires et fonctions suivant ses droits.

On ne se connecte jamais directement en tant que root avec ssh. La règle veut qu'on se connecte en tant qu'utilisateur, et qu'on change au besoin d'utilisateur une fois connecté avec

su

SSH sécurisé

En informatique, secure shell ou SSH est un jeu de standards associé à un protocole réseau qui permettent d'établir des connexions sécurisées d'un ordinateur local à un ordinateur distant. Il utilise un clé publique cryptographique pour authetifier l'ordinateur distant et (de manière optionnelle) pour permettre à cet ordinateur distant d'authentifier l'utilisateur. SSH permet de préserver la confidentialité et l'intégrité des échanges de données entre deux ordinateurs, en les cryptant et identifiant par messages codés d'authentification (MACs). SSH est typiquement utilisé pour se connecter à distance sur une machine et y excuter des commandes, mais il permet également le tunneling, le reroutage de connexions vers des adresses arbitraires de ports TCP et X11. Il peut transférer des fichiers en utilisant ses protocoles associés SFTP ou SCP. Un serveur SSH par défaut, écoute sur le port TCP standard 22.

Reférence extraite de wikipedia

Sécurisez convenablement vos connexions SHH

Autoriser les connexions SSH directes de l'administrateur n'est pas sûr. N'autorisons pas à l'utilisateur root de se connecter comme tel directement. Si nous ne voulons pas laisser aux malveillants l'opportunité de réussir en 10 minutes une attaque par dictionnaire de mots-de-passe sur notre serveur, il nous appartient de fixer des limites au délai et nombre de tentatives tolérés !

Pour rendre votre SSH plus sûr, utilisez simplement votre éditeur de texte préféré avec des permissions d'administration et ouvrez ce fichier :

/etc/ssh/sshd_config

Puis nous y localisons les paramètres dangereux afin de les modifier :

Port <port souhaité>: Ceci doit désigner le port que vous fixerez également dans votre routeur, afin d'assurer la continuité de connexion. Si vous ne savez pas comment le faire, alors peut-être ne devriez-vous pas utiliser ssh à distance. Debian utilise le port 22 par défaut, mais il est recommandé d'utiliser un port sortant de la gamme explorée normalement par les scanners. Mettons que vous voulions utiliser le port 5874, cela devient alors :

Port 5874

ListenAddress <IP de la machine ou interface réseau>: Là bien sûr, puisque vous faites suivre les connexions distantes SSH vers votre ordinateur, en fixant à cet effet un port déterminé de votre routeur, vous devrez, à moins d'utiliser un DNS local, utiliser une IP fixe. Entrez-là suivant votre paramétrage particulier ; elle se présentera sous cette forme :

ListenAddress 192.168.2.134

Ensuite, Protocol 2 est normalement déjà fixé dans Debian mais vérifiez-le au cas où.

LoginGraceTime <délai en secondes autorisé pour se loguer>: La valeur par défaut 600 secondes est absurde. Cela ne prend pas dix minutes d'entrer votre nom d'utilisateur et votre mot-de-passe. Aussi entrez quelque chose de plus raisonnable comme ceci :

LoginGraceTime 45

À présent vous avez 45 secondes pour vous loguer et les hackers n'ont plus 600 secondes à chaque essai pour cracker votre mot-de-passe.

PermitRootLogin <oui>: Pourquoi Debian autorise-t-elle par défaut les connexions directes de root est incompréhensible. Aussi réglerons-nous cette valeur sur 'no' (Non) :

PermitRootLogin no
StrictModes yes

MaxAuthTries <valeur>: Nombre de tentatives autorisées. Fixe-le à 3 ou 4 au maximum, mais pas plus :

MaxAuthTries 2

Vous pourrez vouloir ajoûter les options qui suivent, si elles n'existent pas :

AllowUsers <nom des utilisateurs autorisés à accéder via ssh séparés par un espace>

AllowUsers <xxx>: créez, via la commande adduser un utilisateur pour ssh seulement avec aucun droit. Ensuite entrez son nom ici:

AllowUsers nomdecetutilisateur

PermitEmptyPasswords <xxx>: donnez à ce utilisateur, seul autorisé à se connecter via ssh un joli mot-de-passe très long, impossible à deviner avant un million d'années. Une fois logué sous son identité, vous aurez juste à faire su pour devenir 'root' :

PermitEmptyPasswords no

PasswordAuthentication <xxx>: À l'évidence, pour vous connecter avec un mot-de-passe et non avec une clé, vous aurez besoin que cette option soit ficée sur yes (oui) :

PasswordAuthentication yes [sauf en cas d'utilisation de clés]

Votre fichier une fois sauvegardé avec vos paramétrages, relancez le démon ssh :

/etc/init.d/ssh restart

À ce stade, et après avoir crée votre unique utilisateur habilité à n'utiliser que ssh, vous avez un serveur ssh sinon totalement au moins un peu plus sécurisé.

Utiliser les application X en réseau avec SSH

Utiliser une application sur une machine distante et afficher son interface graphique sur votre machine locale.

Supposés de l'exemple:

Configuration

Sur l'ordinateur distant, commencez par ajoûter dans le fichier /etc/hosts.allow une ligne pour ajoûter des droits pour l'accès ssh :

ssh sshd : 192.168.1.0/24 : ALLOW 

Avec cette ligne vous déclarez permettre à toutes les adresses de votre réseau local l'accès au serveur ssh.

Sur l'ordinateur local, ouvrez une console pour établir une connexion ssh avec X-forwarding :

ssh -X nom_d_utilisateur@xxx.xxx.xxx.xxx (ou IP)

(entrez votre mot-de-passe ssh quand il vous est demandé, ou le mot-de-passe vers la clé ssh si vous avez envoyé votre clé ssh à la machine distante et l'y avez ajoûtée au fichier authorized_keys de l'utilisateur)

Lancez l'application X dans la console. Dans cet exemple, "firefox".

ssh -X nom_d_utilisateur@xxx.xxx.xxx.xxx (ou IP)
(entrez votre mot-de-passe ssh quand il vous est demandé, ou le mot-de-passe vers la clé ssh si vous avez envoyé votre clé ssh à la machine distante et l'y avez ajoûtée au fichier authorized_keys de l'utilisateur)
firefox

Accès ssh distant avec X-forwarding depuis un PC-Windows

ssh -X username@xxx.xxx.xxx.xxx 

xxx.xxx.xxx.xxx est l'adresse IP de l'ordinateur distant ou son URL (par exemple celle de son compte sur dyndns.org) et le nom d'utilisateur cité doit évidemment consister en un identifiant d'utilisateur existant vraiment sur la machine distante. Après une connexion fructueuse, lancez kmail par exemple et relevez votre courriel !

Assurez-vous que host.allow comporte une entrée permettant l'accès depuis des PC d'autres réseaux. Si vous êtes derrière un routeur ou un parefeux-Nat, assurez-vous que le port 22 et/ou celui que vous avez configuré pour s'y substituer soit bien re-routé vers votre ordinateur Linux.

SSH dans Konqueror

Konqueror et Krusader sont tous deux capables d'accéder à des données distantes, grâce au protocole fish://, basé sur SSH. Voyons comment ceci fonctionne :

  1. Ouvrez une nouvelle fenêtre Konqueror
  2. Entrez dans sa barre d'adresses:
    fish://nom_d_utilisateur@serveur_ssh.com

Exemple 1:

fish://sidux1@mon-serveur-perso.dyndns.org

Une fenêtre popup s'ouvre et qui vous demande votre mot-de-passe ssh ; entrez-le puis cliquez sur OK

Exemple 2:

fish://username:password@ssh-server.com

Cette syntaxe vous permet de ne PAS être questionné sur votre mot-de-passe de connexion. Vous vous retrouvez alors directement connecté.

La connexion SSH est alors initialisée. Avec cette fenêtre de Konqueror, vous pouvez travailler sur les fichiers se trouvant le serveur ssh (les visualiser, les copier), tout comme si ceux-ci se trouvaient sur votre machine locale.

SSHFS - Montage de répertoires distants

SSHFS est une méthode utilisant FUSE, permettant de monter des systèmes de fichiers distants, facile, rapide et sûre à utiliser. La seule exigeance qu'elle impose côté serveur est que le démon ssh soit actif.

Côté machine cliente, vous devrez probablement installer sshfs :

# apt-get update
# apt-get install sshfs

Àprès cette installation, vous devrez vous déconnecter puis vous reconnecter à nouveau.

Monter un système de fichiers distant vous sera alors facile (pensez toutefois à créer en préalable le répertoire où vous monterez celui-ci) :

sshfs nom_d_utilisateur@machine_distante:répertoire point_de_montage_local

Dans cette commande nom_d_utilisateur désigne celui de votre compte sur la machine distante.

Si aucun répertoire de connexion n'est précisé dans cette commande, l'utilisateur distant sera logué par défaut dans son répertoire home.Attention !la signalétique ":" est essentielle, y compris si aucun répertoire particulier n'est spécifié !

Après le montage le répertoire distant se comporte exactement de la même façon que n'importe quel répertoire local. Vous pouvez y naviguer, éditer des fichiers et même y lancer des scripts, comme vous le feriez dans vos répertoires locaux.

Pour démonter un répertoire distant utiliez la systaxe suivante :

fusermount -u point_de_montage_local

Si vous utilisez fréquemment SSHFS ce peut être intéressant d'ajoûter son entrée à votre fstab :

sshfs#nom_d_utilisateur@nom_de_machine_distante:repertoire point_de_montage_local fuse user,noauto 0 0

Ceci fera en sorte que tout utilisateur membre du groupe fuse puisse monter le système de fichiers en utilisant la célèbre commande de montage :

mount /chemin/du/repertoire/de/montage

Avec cette ligne dans votre fstab vous pourrez évidemment aussi lancer la commande de démontage :

umount /chemin/du/repertoire/de/montage

Pour vérifier si vous êtes membres du groupe fuse entrez ceci :

cat /etc/group | grep fuse

Vous devez obtenir un résultat de ce type :

fuse:x:117: <nom_d_utilisateur>

L'identifiant ne sera pas listé dans le group "fuse" avant que vous soyiez comme demandé plus haut déconnecté puis reconnecté à nouveau.

Si votre nom d'utilisateur n'est pas listé, employez la commande d'administration adduser comme suit :

# adduser <nom_d_utilisateur> fuse

après quoi votre nom d'utilisateur sera listé et vous pourrez utiliser les commandes :

mount point_de_montage_local

et

umount point_de_montage_local

Réseau Windows avec Samba

En mode Live-CD

Avec Sidux, il vous suffira d'appeler le script Sambastart depuis le menu 'Sidux -> Partages Samba' pour intégrer les partages d'autres machines Windows de votre réseau local.

Une fois Sidux installée

Les procédures sont les suivantes :

Pour accéder aux données partagées Windows

Toutes les commandes de terminal s'effectuent en mode administrateur (root) ;
Les entrées dans Konqueror s'effectuent en mode utilisateur.

serveur = nom du serveur ou IP de la machine Windows
partage = nom du partage

Dans la barre d'adresse de Konqueror entrez l'url :

smb://serveur

ou l'url complète

smb://serveur/partage

Dans une console root, vous pouvez voir les partages situés sur un serveur par la commande :

# smbclient -L server

Pour monter le système de fichiers d'un partage dans un répertoire, et en permettre le plein accès à TOUS les utilisateurs souvenez-vous de ceci :

Le répertoire local de montage doit exister en préalable !

Si il n'existe pas encore voici un exemple de commande avec un nom arbitraire de répertoire à adapter suivant vos désirs :

# mkdir -p /mnt/partages_machine_x

Ce répertoire une fois disponible, le partage distant en FAT32 peut y être monté via la commande suivante :

# mount -t smbfs -o username=Administrator,fmask=777,dmask=777 //serveur/partage /mnt/partages_machine_x

Le partage distant en NTFS peut y être monté via la commande suivante :

# mount -t smbfs -o username=Administrator,fmask=777,dmask=777,lfs //serveur/partage /mnt/partages_machine_x

Pour déconnecter ce type de partage, on entre la commande :

# umount /mnt/partages_machine_x

Pour monter le partage plus aisément par la suite :

Il faudra ajoûter une entrée dans le fichier de configuration /etc/fstab
Voici la typologie de la ligne à ajoûter :

//serveur/partage /mnt/serveur_machine_x smbfs defaults,username=votre_nom_d'utilisateur,password=**********,fmask=777,dmask=777 0 0

Configurer Sidux en tant que Serveur Samba

Depuis le Live-CD Sidux, tout ce que vous aurez à faire pour démarrer un simple serveur Samba consistera à le démarrer/configurer à l'aide du script "sambastart", accessible également depuis 'Menu K -> Sidux -> Services -> Partages...'

Depuis une instalation de Sidux sur disque dur, des ajustements de configuration complémentaires devront être effectués. En voici un exemple simple. Si vous souhaitez aller plus loin dans l'utilisation de Samba et la configuration d'un serveur Samba sous GNU/Linux, il vous est vivement conseillé de consulter avec attention toute la documentation de Samba.

Pour ajuster sommairement la configuration de Samba faites ceci :

  1. Dans un éditeur de texte (par exemple ; Kate, nano), ouvrez le fichier /etc/samba/smb.conf.

    Et entrez-y ceci :

    # Changements Généraux - Les plus simples possibles - pas de mot de passe, comme pour Windows 9x

    [global]
    security = share
    workgroup = WORKGROUP

    # Partage sans permission d'écriture -important si des systêmes de fichiers NTFS doivent être partagés !

    [WINDOWS]
    comment = Windows Partition
    browseable = yes
    writable = no
    path = /mnt/hda1 # <- à ajuster à votre partition
    public = yes

    # Partage avec permission d'écriture - la partition doit être montée avec ces droits d'écriture - s'applique par exemple aux partitions FAT32.

    [DATA]
    comment = Data Partition (first extended Partition)
    browseable = yes
    writable = yes
    path = /mnt/hda5
    public = yes

  2. Sauvez votre fichier.
  3. Vous pouvez désormais démarrer/arrêter Samba avec :
    # /etc/init.d/samba start
    # /etc/init.d/samba stop

    Vous pouvez également commander de démarrer/arrêter Samba automatiquement au démarrage et à l'arrêt de l'ordinateur, en suivant les précautions évoquées en haut de cette page, au moyen de cette série de commandes :

    # unfreeze-rc.d
    # update.rc.d samba defaults
    # freeze-rc.d