FreshRSS

🔒
❌ À propos de FreshRSS
Il y a de nouveaux articles disponibles, cliquez pour rafraîchir la page.
À partir d’avant-hierFlux principal

Comment se connecter en RDP à Debian 10 avec xRDP ?

18 août 2021 à 11:00

I. Présentation

Dans ce tutoriel, nous allons voir comment installer xRDP sur Debian pour se connecter en RDP depuis Windows sur notre machine Linux. La connexion sera possible depuis Windows, mais également une autre machine sous Linux, sous macOS ou sous Android : il suffit d'un client RDP.

Le protocole RDP (Remote Desktop Protocol) sert à se connecter à distance sur une machine avec un client Bureau à distance. Quant à xRDP, il s'agit d'une implémentation open source du protocole RDP de Windows.

Au niveau de la machine Linux, il y a un prérequis : vous devez avoir un environnement de bureau installé. Que ce soit GNOME, MATE, XFCE, etc... Au choix. Par exemple, pour installer XCFE Desktop sur Debian 10, il faudra exécuter ces commandes :

apt update -y
apt install task-xfce-desktop -y

Si vous avez une machine Debian 10 avec un environnement de bureau installé, vous pouvez passer à la suite.

II. Installation de xRDP sous Debian 10

Ouvrez un Terminal sur la machine Debian et commencez par mettre à jour les paquets (le préfixe sudo est nécessaire si vous n'utilisez pas le compte "root").

sudo apt update

Ensuite, installez le paquet xRDP qui est dans les dépôts par défaut :

sudo apt install xrdp -y

Suite à l'installation, on peut s'assurer que le service est bien démarré :

sudo systemctl status xrdp

Malheureusement, si l'on regarde le détail du statut, on constate qu'il y a une erreur.

Nous devons ajouter l'utilisateur "xrdp", associé au serveur xRDP, au groupe ssl-cert de notre machine Debian. En fait, xRDP s'appuie sur le fichier "ssl-cert-snakeoil.key" pour la partie certificat de la connexion RDP, mais ce fichier est accessible uniquement aux membres du groupe "ssl-cert".

sudo adduser xrdp ssl-cert

Redémarrez le service xRDP :

sudo systemctl restart xrdp

Enfin, activez le démarrage automatique du service xRDP :

sudo systemctl enable xrdp

Notre serveur xRDP est prêt à l'emploi, passons à la configuration.

Note : si vous utilisez un firewall sur votre machine Debian, il faut penser à ouvrir le port 3389 qui est le port par défaut du protocole RDP. Par exemple pour UFW, voici la commande à exécuter : sudo ufw allow 3389

III. Configurer xRDP sous Debian 10

Sans apporter de modifications à la configuration, on pourrait déjà se connecter sur notre machine Linux à distance. Toutefois, il me semble important de vous présenter les fichiers de configuration du serveur xRDP.

Il y a un premier de configuration ici :

/etc/xrdp/xrdp.ini
Fichier de configuration xRDP
Fichier de configuration xRDP

Dans ce fichier, on pourrait modifier le port d'écoute du serveur xRDP pour ne pas utiliser 3389. Cela se configure au niveau de la directive suivante qu'il suffit de modifier :

port=3389

Ce fichier permet également de gérer l'apparence de l'écran de connexion (message, couleurs, image de fond, etc.).

Il y a un second fichier de configuration, que voici :

/etc/xrdp/sesman.ini

Il contient de nombreux paramètres. Il va permettre d'empêcher l'utilisateur "root" de se connecter en RDP :

# Définir sur "false" pour empêcher le compte "root" de se connecter en RDP (par défaut, c'est autorisé)
AllowRootLogin=false

Dans la configuration de xRDP, on peut aussi autoriser seulement les utilisateurs d'un groupe spécifique, par défaut "tsusers", à se connecter en RDP. Le problème, c'est que ce groupe n'est pas créé et que tout le monde peut se connecter.

Pour déclarer un groupe, il faut renseigner cette directive :

TerminalServerUsers=tsusers

Au passage, il faut basculer sur "true" la directive ci-dessous pour imposer la vérification des membres du groupe pour gérer la connexion.

AlwaysGroupCheck=true

On obtient le fichier suivant :

xRDP - Exemple sesman.ini

Il faut penser à créer votre groupe si ce n'est pas déjà fait. On peut aussi créer un groupe en prenant le nom suggéré par défaut :

sudo groupadd tsusers

Ensuite, on va ajouter un utilisateur au groupe :

sudo adduser florian tsusers

Enfin, pensez à redémarrer le service xRDP pour que les changements soient pris en compte. Il ne reste plus qu'à tester. Si un utilisateur n'est pas autorisé à se connecter, le gestionnaire de sessions lui renverra le message suivant :

Pour gérer les sessions, il y a d'autres paramètres à connaître :

# Nombre de sessions RDP maximales, en même temps
MaxSessions=10

# Tuer une session déconnectée après X minutes ou secondes
KillDisconnected=true

# Délai avant de tuer une session déconnectée. Si "0" = 60 secondes
DisconnectedTimeLimite=0

Les événements sont loggués dans deux fichiers de log :

/var/log/xrdp.log
/var/log/xrdp-sesman.log

Passons maintenant aux tests.

IV. Se connecter à Debian 10 depuis Windows

Depuis la machine Windows, il suffit d'ouvrir le client Bureau à distance, de saisir l'adresse IP de l'hôte Linux et de se connecter. Comme c'est la première connexion, il faudra accepter le certificat.

On arrive sur une fenêtre de connexion, où l'on renseigne un identifiant et un mot de passe.

Et voilà, on est connecté sur la machine Debian en RDP !

V. Résoudre les erreurs de connexion xRDP

Après avoir établi une connexion, si vous obtenez un écran noir ou un écran bleu (de la couleur du fond du prompt RDP) : pas de panique ! En fait, cela se produit si vous utilisez la même session (même utilisateur) en direct sur le serveur et en connexion RDP.

Vous devez fermer la session en local sur la machine et relancer la connexion RDP.  Ensuite, cela va fonctionner.

Il y a de fortes chances pour que deux prompts s'affichent suite à la connexion pour vous demander le mot de passe Administrateur :

  • Il est nécessaire de s'authentifier pour créer un périphérique avec gestion de couleurs
  • Authentication is required to refresh the system repositories

Authentication is required to refresh the system repositories

Cela se produit à cause du composant PolKit qui gère les interactions d'un utilisateur standard avec les applications. Nous allons créer une politique personnalisée pour qu'il nous laisse tranquilles quand on se connecte en RDP.

Créez le fichier suivant :

sudo nano /etc/polkit-1/localauthority.conf.d/02-allow-colord.conf

Ajoutez le contenu ci-dessous pour créer la règle :

polkit.addRule(function(action, subject) {
if ((action.id == "org.freedesktop.color-manager.create-device" ||
 action.id == "org.freedesktop.color-manager.create-profile" ||
 action.id == "org.freedesktop.color-manager.delete-device" ||
 action.id == "org.freedesktop.color-manager.delete-profile" ||
 action.id == "org.freedesktop.color-manager.modify-device" ||
 action.id == "org.freedesktop.color-manager.modify-profile" ||
 action.id == "org.freedesktop.packagekit.system-sources-refresh" || action.id == "org.freedesktop.packagekit.system-network-proxy-configure") &&
 subject.isInGroup("{users}")) {
 return polkit.Result.YES;
 }
});

Sans même redémarrer le service xRDP ou un autre service, vous pouvez retenter une connexion RDP : cette fois-ci vous allez accéder au bureau Linux sans être embêté ! 😉

Nous venons de voir dans ce tutoriel comment installer et configurer xRDP sous Debian 10. C'est assez simple, mais il faut penser à apporter quelques réglages pour que ce soit pleinement opérationnel.

The post Comment se connecter en RDP à Debian 10 avec xRDP ? first appeared on IT-Connect.

Debian – comment installer Nginx en tant que serveur Web ?

5 juillet 2021 à 13:00

I. Présentation

Dans ce tutoriel, nous allons voir comment mettre en place un serveur Web Nginx sur Debian 10, dans le but d'héberger un site Web qui s'appuie sur PHP.

Nginx, que l'on prononce Engine-X, est un logiciel open source qui permet de monter un serveur web, mais également un reverse proxy pour mettre en cache des éléments et assurer la répartition de charge entre plusieurs serveurs Web.

À la différence d'Apache, Nginx est pensé pour les sites à très fort trafic : il est d'ailleurs connu et reconnu pour être un logiciel très performant. Dans de nombreux cas, il n'est pas utilisé en tant que serveur Web directement, mais plutôt en tant que reverse proxy pour gérer les connexions des clients en frontal.

Pour ma part, je vais utiliser une machine sous Debian 10 pour mettre en place le serveur Nginx.

🎥 Débutez avec Nginx grâce à ce tutoriel vidéo (installation, création d'un site, intégration de PHP, mise en place d'un certificat SSL, etc.).

II. Installer Nginx

Commençons par installer le paquet Nginx, mais avant cela mettons à jour le cache de paquets sur notre machine :

sudo apt update -y

Ensuite, on passe à l'installation du paquet Nginx, ce qui est très simple puisqu'il est disponible dans les dépôts officiels.

sudo apt install nginx -y

Lorsque l'installation est effectuée, on peut regarder quelle version est installée à l'aide de la commande suivante (similaire à celle d'Apache ou d'autres paquets) :

sudo nginx -v

Suite à l'installation, le serveur Nginx est déjà démarré, on peut le vérifier avec la commande ci-dessous. Cela permettra de voir qu'il est bien actif.

sudo systemctl status nginx

Pour que notre serveur Web Nginx démarre automatiquement lorsque la machine Linux démarre ou redémarre, on doit exécuter la commande suivante :

sudo systemctl enable nginx

Dès à présent, on peut accéder à la page par défaut du serveur Web à partir d'un navigateur. Si votre machine où est installé Nginx dispose d'une interface graphique, on peut y accéder en local :

http://127.0.0.1

À partir d'une machine distante, utilisez l'adresse IP de votre serveur Web plutôt que l'adresse de loopback (127.0.0.1). Voici la page qui doit s'afficher :

Le contenu de cette page Web correspond au fichier suivant :

/var/www/html/index.nginx-debian.html

En fait, le site par défaut de Nginx est déclaré dans le fichier de configuration suivant :

/etc/nginx/sites-enabled/default

La racine de ce site est :

/var/www/html

On peut le vérifier grâce à la directive suivante :

root /var/www/html;

Avant de continuer, prenez connaissance des informations suivantes :

  • Le fichier de configuration global de Nginx est :
 /etc/nginx/nginx.conf
  • Le dossier qui contient les fichiers de configuration des sites disponibles est :
/etc/nginx/sites-available/
  • Le dossier qui contient les fichiers de configuration des sites actifs est :
/etc/nginx/sites-enabled/

Lorsque l'on crée la configuration d'un nouveau site, on crée le fichier dans "sites-available" et ensuite lorsque le site est prêt à être activé, on crée un lien symbolique vers "sites-enabled". Cela tombe bien, nous allons créer notre premier site Web dans Nginx : l'occasion de voir ce mécanisme, identique à Apache.

III. Créer un premier site dans Nginx

Nous allons déclarer un nouveau site sur notre serveur Web Nginx. Pour ma part, ce sera le site "it-connect.tech", accessible également avec "www.it-connect.tech". Il sera stocké à l'emplacement suivant : /var/www/it-connect.tech.

Commençons par créer le dossier qui va accueillir notre site Web :

sudo mkdir /var/www/it-connect.tech

Ensuite, on va déclarer l'utilisateur www-data comme propriétaire de ce dossier. Il s'agit de l'utilisateur par défaut de Nginx (correspondant à la propriété "user www-data" du fichier nginx.conf).

sudo chown -R www-data:www-data /var/www/it-connect.tech/

On va définir les droits de ce dossier :

sudo chmod 755 /var/www/it-connect.tech/

Ensuite, c'est le moment de créer notre fichier "index.html" : cela correspond à la page d'accueil de notre site Web.

sudo nano /var/www/it-connect.tech/index.html

Dans ce fichier, insérez le code suivant :

<html>
<head></head>
<body>
<h1>Bienvenue sur IT-Connect !</h1>
</body>
</html>

Enregistrez et fermez le fichier. Il est temps maintenant de créer le fichier de configuration de notre site Internet. Dans le dossier "sites-available", on va créer le fichier "it-connect.tech" : grâce à ce nom, il sera facilement identifiable.

sudo nano /etc/nginx/sites-available/it-connect.tech

Dans ce fichier, intégrez la configuration suivante :

server {

    listen 80;
    listen [::]:80;

    root /var/www/it-connect.tech;

    index index.html;
    server_name it-connect.tech www.it-connect.tech;

    location / {
        try_files $uri $uri/ =404;
    }
}

Voici quelques consignes à appliquer quand vous éditez ce fichier, mais aussi pour bien le comprendre :

  • Respectez l'indentation (espace au début des lignes) pour avoir un fichier de configuration lisible facilement
  • Les lignes de type "commentaires" commencent par le caractère "#"
  • Les lignes qui se terminent par ";" correspondent à des directives, c'est-à-dire des options de configuration
  • Le bloc "Server" permet de déclarer un hôte virtuel et à l'intérieur on déclare sa configuration

Maintenant, je vais vous expliquer la signification des différentes directives de la configuration que l'on vient de créer.

listen 80; 
listen [::]:80;

La directive "listen" : la première ligne permet d'indiquer que le serveur Nginx écoute sur toutes ses adresses IPv4, sur le port 80, ce qui correspond au protocole HTTP. La seconde ligne est similaire, mais pour toutes les adresses IPv6 du serveur, toujours sur le port 80.

Pour que le serveur Web écoute seulement sur une adresse IP spécifique du serveur Linux, on pourrait utiliser :

listen 192.168.100.100:80;

En admettant que 192.168.100.100 soit l'adresse IP du serveur Linux.

root /var/www/it-connect.tech;

La directive "root" permet de déclarer la racine du site Internet : en toute logique, on précise la racine que l'on a créée précédemment et où se situe la page index.html.

index index.html;

D'ailleurs, c'est la directive "index" qui permet d'indiquer le nom (ou les noms) des pages par défaut du site. Si l'on définit "index.html", lorsque l'on accède à la racine du site, le serveur Web va chercher à nous présenter le contenu de la page index.html.

server_name it-connect.tech www.it-connect.tech;

La directive "server_name" sert à déclarer le nom de domaine, ou les noms de domaine, concerné par ce bloc "Server". On peut également utiliser une adresse IP. En l'occurrence dans cet exemple, on souhaite que Nginx traite les requêtes qui arrivent sur it-connect.tech et www.it-connect.tech.

location / { 
    try_files $uri $uri/ =404; 
}

Intéressons-nous au dernier bloc de notre fichier de configuration. La directive "location" permet d'indiquer un chemin relatif dans l'URL. En indiquant "/", on cible toutes les requêtes puisqu'une requête commence toujours par "/" après le nom de domaine pour spécifier le chemin vers une page.

Enfin, grâce à la directive "try_files" suivie de $uri et $uri/, nous allons chercher à vérifier l'existence du fichier ou du dossier (d'où le "/") passé en paramètre dans l'URL. La variable $uri reprend automatiquement l'URL saisie par le client qui accède au site. En fait, la règle "try_files $uri $uri/ =404;" permet de retourner une erreur 404 (page introuvable) au client s'il essaie d'accéder à un fichier ou un dossier qui n'existe pas.

Maintenant que vous en savez plus sur la configuration que nous venons de créer, vous pouvez passer à la suite ! 😉

Pour que notre site soit actif et la configuration chargée par Nginx, nous devons créer un lien symbolique : rappelez-vous de l'intérêt du dossier "sites-enabled". Pour créer un lien symbolique et renvoyer "/etc/nginx/sites-enabled/it-connect.tech" vers "/etc/nginx/sites-available/it-connect.tech", voici la commande :

ln -s /etc/nginx/sites-available/it-connect.tech /etc/nginx/sites-enabled/it-connect.tech

On pourrait copier-coller le fichier d'un dossier vers l'autre, mais cela ne serait pas pratique. Grâce à ce lien symbolique, on a qu'un seul fichier à gérer.

Avant de redémarrer le service Nginx, je vous invite à vérifier la syntaxe de la configuration :

sudo nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful

C'est tout bon, on peut redémarrer le service Nginx :

sudo systemctl restart nginx

On peut aussi arrêter Nginx et le démarrer, en deux temps :

sudo systemctl start nginx 
sudo systemctl stop nginx

Le site doit être accessible à deux adresses :

http://www.it-connect.tech
http://it-connect.tech

Je n'ai pas abordé la notion d'enregistrement DNS, mais on part du principe que c'est déjà fait de votre côté. Si vous souhaitez tester sans agir sur les enregistrements DNS, vous pouvez modifier le fichier hosts de votre machine Windows ou Linux.

Par exemple, si vous avez une interface graphique sur votre machine Nginx (ce qui sera peut-être le cas sur un lab), vous pouvez modifier le fichier "/etc/hosts" et ajouter la ligne suivante :

0.0.0.0 it-connect.tech www.it-connect.tech

Si vous utilisez une machine distante, remplacez "0.0.0.0" par l'adresse IP de votre machine Linux.

Les fichiers de logs, c'est-à-dire les journaux de Nginx, sont stockés à l'emplacement suivant :

# Log d'accès (toutes les requêtes)
/var/log/nginx/access.log
# Log d'erreurs
/var/log/nginx/error.log

Bien sûr, ils sont consultables avec la commande "tail" pour récupérer les dernières lignes ajoutées :

sudo tail -f /var/log/nginx/access.log 
sudo tail -f /var/log/nginx/error.log

Passons à l'étape suivante pour que Nginx prenne en charge les scripts PHP.

IV. Ajouter PHP à Nginx

Pour utiliser PHP avec un serveur web Nginx, il est obligatoire d'installer PHP-FPM (PHP FastCGI Process Manager) : Nginx lui transférera les requêtes PHP pour qu'elles soient traitées. 

Si l'on installe le paquet "php-fpm" de Debian 10, nous allons récupérer la version 7.3, ce qui n'est pas top. Il vaut mieux récupérer une version plus récente, par exemple PHP-FPM 7.4.X. Pour cela, nous devons agir sur les dépôts de notre machine. Exécutez les commandes suivantes pour ajouter notre nouveau dépôt PPA :

sudo apt-get update

On récupère la clé GPG du dépôt que l'on va ajouter :

sudo apt -y install lsb-release apt-transport-https ca-certificates 
sudo wget -O /etc/apt/trusted.gpg.d/php.gpg https://packages.sury.org/php/apt.gpg

Enfin, on ajoute le dépôt :

echo "deb https://packages.sury.org/php/ $(lsb_release -sc) main" | sudo tee /etc/apt/sources.list.d/php.list

Il ne reste plus qu'à mettre à jour le cache de paquets et à installer PHP-FPM 7.4 :

sudo apt-get update
sudo apt-get install php7.4-fpm

En complément, et selon ce que vous souhaitez faire sur votre serveur Web Nginx, pensez à installer les extensions PHP qui vont bien (pour MySQL, par exemple).

Nous devons modifier la configuration de notre site :

sudo nano /etc/nginx/sites-available/it-connect.tech

Le bout de configuration suivant doit être ajouté au sein du groupe "Server", à la suite du bloc "location" déclaré précédemment :

location ~ \.php$ {
    include snippets/fastcgi-php.conf;
    fastcgi_pass unix:/var/run/php/php7.4-fpm.sock;
}

Ce qui donne :

Intégration de PHP à Nginx

Grâce à la directive "location ~ \.php$", on peut agir sur le traitement de tous les fichiers PHP. Ce qui est fort intéressant puisque l'on va pouvoir préciser le fichier de configuration (fastcgi-php.conf) et le chemin vers le socket lié à PHP-FPM, c'est-à-dire le chemin vers php7.4-fpm.sock. Si vous utilisez une version différente de PHP-FPM, le chemin devra être adapté.

Lorsque la configuration est prête, enregistrez le fichier et redémarrez le service Nginx. Avant cela, pensez à vérifier qu'il n'y a pas d'erreur de syntaxe :

sudo nginx -t
sudo systemctl restart nginx

V. Vérifier le bon fonctionnement de PHP avec Nginx

Notre serveur Nginx doit être en mesure de gérer l'exécution des scripts PHP. Nous allons le vérifier. Je vous invite à créer un fichier "info.php" à la racine de notre site Web :

sudo nano /var/www/it-connect.tech/info.php

Dans ce fichier, ajoutez le contenu ci-dessous. Pour rappel, la fonction phpinfo() permet d'obtenir un état détaillé de PHP sur un serveur Web.

<?php
phpinfo();
?>

Enregistrez le fichier et tentez d'accéder à la page info.php avec un navigateur. Normalement, vous devez obtenir une page similaire à celle ci-dessous. On peut voir que PHP fonctionne et que j'utilise bien PHP 7.4.

PHP sur un serveur web Nginx
PHP sur un serveur web Nginx

Voilà ! Votre serveur Web sous Nginx est prêt à être utilisé !

The post Debian – comment installer Nginx en tant que serveur Web ? first appeared on IT-Connect.

Remote Desktop Connection Manager (RDCMan) is back as a member of SysInternals

30 juin 2021 à 15:49

RDCMan is for users who need to manage many RDP connections. This tool consolidates them into groups and thus allows settings and actions to be applied to a collection of hosts. Microsoft took RDCMan off the market in 2020 because of security flaws, but it is back now as part of SysInternals.

The post Remote Desktop Connection Manager (RDCMan) is back as a member of SysInternals first appeared on 4sysops.
❌