PROJET AUTOBLOG


IT-Connect

Site original : IT-Connect

⇐ retour index

Serveur RDS : envoyer un message sur toutes les sessions avec PowerShell

mercredi 29 janvier 2020 à 11:10

I. Présentation

Après avoir vu ensemble comment installer un serveur RDS, nous allons maintenant voir comment envoyer un message sur toutes les sessions RDS de votre serveur (ou vos serveur RDS), le tout en PowerShell.

Cette astuce s'avère pratique à plus d'un titre, par exemple lorsque vous souhaitez informer vos utilisateurs qu'une maintenance est prévue ou qu'elle va débuter. D'ailleurs, c'est de cette façon que je l'utilise bien souvent.

Sur les versions récentes de Windows Server, la console de gestion RDS accessible par l'intermédiaire du gestionnaire de serveur, ne permet pas d'envoyer un message à plusieurs utilisateurs en même temps. C'est bien dommage mais bon PowerShell est là pour nous sauver (comme bien souvent).

II. Send-RDUserMessage

Pour envoyer notre message, nous allons utiliser le cmdlet "Send-RDUserMessage" mais avant cela, nous devons récupérer la liste des sessions RDS ouvertes.

Il suffit d'exécuter la commande Get-RDUserSession et de stocker le résultat dans une variable, ici $SessionList.

$SessionList = Get-RDUserSession

Pour chaque session, cela récupère plusieurs informations : le nom de la collection RDS, le nom de domaine (format NETBIOS), l'identifiant de l'utilisateur, le serveur hôte et son ID de session unique. Grâce au paramètre CollectionName, vous pouvez cibler une ou plusieurs collections.

Ensuite, dans l'idée, nous allons boucler avec un foreach pour envoyer un message sur chaque session de la liste.

Foreach($Session in $SessionList){
}

Dans cette boucle, il ne reste plus qu'à faire deux choses : définir le titre du message, son contenu, et exécuter la commande pour envoyer le message.

Commençons par définir le titre et le contenu :

$MessageTitle = "Maintenance"
$MesssageBody = "Bonjour, une maintenance est prévue...."

Enfin, voici la commande pour envoyer le message :

Send-RDUserMessage -HostServer $Session.HostServer -UnifiedSessionID $Session.UnifiedSessionId -MessageBody $MesssageBody -MessageTitle $MessageTitle

Une commande que l'on va intégrer dans la boucle, ce qui nous donne le code complet :

$SessionList = Get-RDUserSession
$MessageTitle = "Maintenance"
$MesssageBody = "Bonjour, une maintenance est prévue...."

Foreach($Session in $SessionList){
  Send-RDUserMessage -HostServer $Session.HostServer -UnifiedSessionID $Session.UnifiedSessionId -MessageBody $MesssageBody -MessageTitle $MessageTitle
}

Exécutez ce bout de code et le message va s'afficher sur toutes les sessions, tour à tour, au milieu de l'écran sous forme de pop-up. Les commandes que nous avons utilisées sont intégrées au module PowerShell RemoteDesktop.

Vous utilisez Avast ? Sachez que vos données de navigation sont revendues !

mercredi 29 janvier 2020 à 09:10

Avast est utilisé par 435 millions d'utilisateurs dans le monde, ce qui en fait l'une des solutions les plus répandues du marché d'autant plus qu'une version gratuite est proposée. Une enquête menée par Motherboard et PCMag montre que les données de navigation Internet sont collectées et revendues à de grandes entreprises.

Si vous cochez l'opt-in de collecte de données d'Avast, alors vous êtes concerné. Ensuite, c'est Jumshop (filiale d'Avast) qui s'occupe de trier les données collectées et de les revendre. Parmi les acheteurs, nous pouvons citer Google, Microsoft, Pepsi, IBM, Yelp ou encore Sephora. Jumshop accède aux données de 100 millions d'appareils.

Quelles données de navigation sont réellement revendues ?

La collecte permet de savoir quelles sont les URL visitées par l'appareil, dans quel ordre et à quel moment. Notamment :

- Les positions GPS sur Google Maps (mais ça Google doit déjà l'avoir, non ?)
- Les recherches YouTube (ça aussi, non ? Ah oui, mais pas Microsoft)
- Les visites sur des pages LinkedIn
- Les visites sur des sites pornographiques
- Etc.

Les données seraient collectées par l'extension Avast pour les navigateurs web, avant d'être anonymisées.

Une nouvelle fois l'adage "Quand c'est gratuit, c'est vous le produit" se vérifie. Avec une version gratuite, il faut bien imaginer qu'Avast puisse payer ses salariés et générer des bénéfices... En tout cas, l'éditeur ne nie pas la situation.

Sinon, il y a aussi Windows Defender, intégré à Windows 10 et qui fait du bon boulot 🙂

Enfin, puisque Avast s'est exprimé sur le sujet, voici le communiqué :

« En décembre 2019, nous avons rapidement pris les mesures nécessaires pour répondre aux normes des boutiques d’extensions des navigateurs et nous sommes maintenant conformes à leurs exigences en ce qui concerne nos extensions de sécurité en ligne. Dans le même temps, nous avons complètement cessé d’utiliser les données des extensions de navigateur à d’autres fins que le moteur de sécurité principal, y compris le partage avec notre filiale Jumpshot.

Nous veillons à ce que Jumpshot n’acquière pas d’information d’identification personnelles, notamment le nom, l’adresse email ou encore les coordonnées. Les utilisateurs ont toujours eu la possibilité de refuser de partager des données avec Jumpshot. En juillet 2019, nous avions déjà commencé à mettre en place un choix explicite d’acceptation ou de refus pour tous les nouveaux téléchargements de notre logiciel, et nous invitons maintenant nos utilisateurs gratuits actuels à faire un choix d’acceptation ou de refus, un processus qui sera achevé en février 2020.

Notre politique de confidentialité détaille les protections que nous mettons en place pour tous nos utilisateurs. Ces derniers peuvent également choisir d’ajuster leur niveau de confidentialité en utilisant le large éventail de paramètres disponibles dans nos produits, y compris le contrôle de tout partage de données à tout moment. Nous nous conformons volontairement aux exigences du RGPD et de la Loi sur la protection du consommateur de Californie (CCPA) en matière de protection de la vie privée pour l’ensemble de notre base d’utilisateurs mondiale.

Nous avons une longue expérience de la protection des appareils et des données des utilisateurs contre les logiciels malveillants. Nous comprenons et prenons au sérieux la responsabilité d’équilibrer la vie privée des utilisateurs avec l’utilisation nécessaire des données pour nos principaux produits de sécurité ».

La Police nationale sensibilise contre l’arnaque au « Ping Call »

mardi 28 janvier 2020 à 09:15

Le ping call, également appelé spam vocal, est utilisé depuis plusieurs années par les escrocs. La Police nationale lance une campagne de sensibilisation pour protéger les citoyens.

Le principe du spam vocal : faire sonner un téléphone et raccrocher directement après la première sonnerie, pour espérer que la personne rappelle le numéro. Les personnes qui n'ont pas connaissance de cette méthode sont tentées de rappeler, le problème c'est que le numéro correspond à un numéro surtaxé. L'objectif est simple : vous faire passer un maximum de temps en ligne.

Evolution des pratiques

Avant, les escrocs utilisaient des numéros de téléphone commençant par 0 899, directement classés comme numéros surtaxés, ce qui réduisait les chances que l'arnaque fonctionne.

Maintenant, la pratique a évoluée : des numéros classiques commençant par 01, 02, 03... correspondants aux zones géographiques de France sont utilisés. Ce sont les numéros rattachés aux particuliers et aux entreprises, donc à première vue, légitimes.

Sauf que si vous rappelez ce fameux numéro, vous allez tomber sur un message qui vous indique que vous avez gagné un superbe lot et que vous devez rappeler un autre numéro pour en savoir plus. Ce numéro quant à lui est surtaxé. Lorsque l'on appelle, on tombe, non pas sur un robot mais sur une personne, qui aura qu'un seul but : vous maintenir le plus longtemps en ligne, car plus le chrono tourne, plus vous payez.

Méfiance donc si un numéro vous appelle et que ça raccroche au bout d'une sonnerie. Si vous ne connaissez pas le numéro, vous pouvez aussi attendre de voir si le correspondant vous laisse un message si c'est vraiment urgent, ou de vérifier sur Internet la réputation du numéro.

Le site 33700.fr

Si vous recevez ce genre d'appels, la Police nationale vous invite à envoyer un SMS gratuitement au 33 700, en indiquant le numéro dans un message sous cette forme : "Spam vocal XX XX XX XX XX".

Par ailleurs, il est également possible de déclarer le numéro sur le site 33700.fr directement. Cette plateforme est sûre et validée par Direction générale de la Concurrence, de la Consommation et de la Répression des Fraudes (DGCCRF).

GLPI – FusionInventory : comment inventorier un appareil Android ?

lundi 27 janvier 2020 à 09:10

I. Présentation

En ce début d'année 2020, l'éditeur Teclib, qui est derrière la solution GLPI depuis plusieurs années, nous a fait un joli cadeau en publiant la première version de l'Agent GLPI pour Android. Enfin, un véritable agent pour GLPI (et FusionInventory) qui fonctionne !

Cela tombe vraiment à pic car j'ai besoin de le déployer sur une centaine d'appareils à inventorier dans GLPI... Quelques jours avant, j'ai tenté ma chance avec l'agent Fusion Inventory qui a plus de deux ans et qui semble remplis de bug. Et là, l'agent officiel GLPI est arrivé comme par magie !

Pour le moment, cet agent réalise seulement de la collecte d'informations afin de créer une fiche pour votre appareil dans la section "Ordinateurs" de GLPI. En aucun cas, cet agent permet de déployer des stratégies ou autre sur ses appareils, en tout cas pour le moment. Pour aller plus loin, il reste toujours la possibilité de passer par la solution Flyve MDM qui vient se greffer à GLPI.

Cet agent va remonter différentes informations :

Avant de commencer, je pars du principe que GLPI est en place et que le plugin Fusion Inventory est également actif. Ensuite, vous pouvez installer l'application gratuitement à partir du Play Store : GLPI Agent

II. Configurer l'agent GLPI pour Android

Démarrez l'application et acceptez les demandes d'autorisations. Maintenant, nous allons ajouter l'adresse de notre serveur GLPI.

Appuyez ensuite sur le bouton en bas à droite de l'application, et appuyez sur "Advanced Settings". Une page va s'ouvrir, appuyez sur "Open List Servers" puis sur le bouton "Add Server".

 

Il faut alors indiquer les informations pour se connecter à votre serveur, à commencer par l'URL. L'URL doit être complète, incluant votre nom de domaine et jusqu'au fichier plugin_fusioninventory.communication.php. Remplissez le champ "Define server address".

Note : si vous souhaitez que l'appareil Android puisse se synchroniser en tout lieu, notamment via une connexion 4G, il est indispensable que votre serveur GLPI soit joignable depuis Internet.

Il me semble intéressant également d'indiquer un TAG en remplissant le champ "Custom asset tag". Cela permettra d'attribuer une entité à l'appareil en se basant sur son TAG grâce à une règle définie dans FusionInventory.

Enfin, pour l'identifiant et le mot de passe, remplissez si nécessaire en fonction de la configuration de votre serveur.

Pensez à valider en appuyant sur "Add Server".

Le serveur est ajouté, maintenant nous allons activer l'inventaire automatique. Retournez sur l'écran d'accueil de l'application, et cette fois-ci appuyez sur "Schedule task". Cochez l'option "Automatic inventory" pour que l'appareil se synchronise automatiquement tous les jours, toutes les semaines ou tous les mois. Pour cela, cliquez sur "Frequency" et choisissez.

Il est temps de tester notre configuration, il suffit d'appuyer sur le bouton "Run inventory now" sur le premier écran de l'application. Un message d'état va s'afficher dans le bas de l'écran.

Si tout se passe bien, un nouvel appareil avec un nom sous la forme "android-xxxxx" va apparaître sur l'interface GLPI. Par exemple :

Voilà, la configuration est terminée. Le plus dur reste à faire : répéter l'opération sur l'ensemble de vos appareils.

Enfin, sachez que dans les options avancées, vous avez la section "Open setting categories" qui vous permettra de choisir les données que vous souhaitez collecter ou non.

A la découverte de l’utilitaire netcat sur Linux

vendredi 24 janvier 2020 à 09:30

I. Presentation

Depuis le temps vous aurez sans doute remarqué que GNU/Linux fournit à peu près tous les outils nécessaires à la communication entre machines. D'ailleurs pour ce billet je vous propose de découvrir l’un de ces utilitaires que l’on a tendance à oublier et qui, pourtant rend de fiers services de transmission. Je veux vous parler de netcat, abrégé en nc.

Son installation est des plus simple. On doit installer le package nmap-ncat qui se trouve dans le dépôt de base de la distribution GNU/Linux CentOS. Le binaire se trouve placé dans /usr/bin. Pour s’en convaincre, il suffit depuis une machine Linux CentOS7 d’exécuter :

# rpm -qf /usr/bin/nc
nmap-ncat-6.40-19.el7.x86_64

REMARQUE: cela signifie que normalement le package faisant partie du dépôt de base, il n’est pas nécessaire de l’installer. Mais, si ce n’était pas le cas, alors vous pouvez effectuer son installation via la commande :

# yum install nmap-ncat

En version CentOS 8, le package est toujours nmap-ncat (dans sa version 7.70), mais le dépôt d’appartenance est @System, comme l’atteste la capture suivante :

Cet outil est disponible de façon générale sur les systèmes Unix, Windows, et MacOS X. Sa fonctionnalité principale consiste à ouvrir les connexions réseau localement sur la machine tout en envoyant les paquets de façon synchrone (paquets TCP) ou asynchrone (paquets UDP).

En fait, il gère les sockets (ou connexions réseau), en établissant n’importe quelle communication vers un serveur distant, en choisissant l’adresse IP et le port et en ouvrant ce dernier en écoute de paquets entrants et/ou sortants. On peut véritablement parler de couteau suisse car, comme nous allons le voir, sa façon d’établir des connexions permet de nombreuses autres applications.

II. Mise en communication

La façon la plus simple d’utiliser nc est d’ouvrir une communication en mode serveur grâce à la commande suivante :

$ nc -l -p <n°Port TCP>

Du côté du client, on peut alors ouvrir une autre session et exécuter la commande suivante :

$ nc @IPServeur <n° Port>

REMARQUE : si l’on doit communiquer via un port UDP, il suffit d’ajouter l’option -u aux commandes côté serveur :

$ nc -l -u -p <n°Port TCP>

Et côté client :

$ nc -u @IPServeur <n° Port>

Ainsi, par exemple, pour ouvrir une communication via le port TCP/8000, sur un serveur dont l’adresse principale est 192.168.1.3, on devra exécuter la commande en mode serveur suivante :

$ nc -l -p 8000

Ensuite, il faudra ouvrir une autre session qui servira de client afin d’exécuter l’instruction suivante :

$ nc 192.168.1.3 8000

Du coup, cela ouvre de nombreuses perspectives d’applications. En effet, grâce à ce mécanisme, on peut facilement transférer de l’information quelle qu’elle soit, au travers du réseau d’entreprise.

III. Transfert d'information

Le plus évident consiste à transférer le contenu d’un fichier qu’il s’agisse d’un fichier de données ou de configuration. Prenons l’exemple du fichier /etc/passwd.

REMARQUE : par précaution, on prendra une copie de ce fichier que l’on déposera dans son propre répertoire d’accueil :

$ sudo cp /etc/passwd ~/mypasswd.orig

Supposons qu’un de nos collègues souhaite nous envoyer le fichier de ses utilisateurs afin que nous disposions des mêmes comptes (uid, gid…) que sur son serveur. Pour se faire, on va lui ouvrir une communication via netcat sur notre terminal, dans un sous-répertoire Recup (pour pouvoir prouver que le protocole fonctionne correctement), en exécutant :

$ cd Recup
$ nc -l -p 8000 > mypasswd.copie

Depuis son terminal, le collègue peut alors exécuter l’instruction suivante :

$ nc <notre @IP> < $HOME/mypasswd.orig

Au niveau de notre terminal, cela va déclencher le transfert d’information, avec l’affichage suivant :

ATTENTION : l’ordre dans lequel doivent être effectuées les commandes est très important. C’est le demandeur qui ouvre sa session netcat en premier et seulement alors, l’émetteur peut alors déclencher le transfert. Dans le cas contraire on obtient un message d’erreur “Ncat : connection refused“.

Du côté de l’émetteur, si l’on a utilisé l’option de verbosité -vv, l’affichage est le suivant :

De notre côté, si l’on regarde le contenu de notre répertoire Recup, on listera alors le fichier passwd.copie que l’on vient de récupérer :

Maintenant, ce mécanisme de transfert n’étant pas sans risque, puisque l’on ignore par quel(s) relai(s) le fichier est passé, il faut être prudent et à la réception du fichier souhaité, on doit vérifier son intégrité via la commande md5sum :

$ md5sum passwd.copie
d41d8dc98f00b204e9800998ecf8427e

REMARQUE: le code d’intégrité du fichier original peut également être envoyé de la même façon via netcat et on devrait alors récupérer le code suivant : d41d8dc98f00b204e9800998ecf8427e

On peut également interroger le système via un navigateur de façon à être encore plus efficace, grâce à l’url suivante : http://localhost:8000. On peut aussi récupérer le fichier au travers de requêtes wget ou curl.

Voici un bref récapitulatif des différentes options disponibles pour la commande nc :

IV. Scan de ports

Par ailleurs, l’utilitaire nc permet également, comme on peut le constater dans le tableau des options ci-dessus, de scanner les ports de services grâce à l’option -z :

$ nc -z <Host> <n° Port>

Par exemple, pour scanner les ports standards : 80 (http), 22 (ssh), 21 (ftp) ou 443 (https), on doit exécuter les commandes suivantes :

V. Rebond de connexion SSH

La procédure de connexion d’une machine à une autre est grandement simplifiée grâce à l’utilisation des clés de chiffrement SSH. Cependant, les normes de sécurité devenant de plus en plus restrictives, les administrateurs réseau choisissent le plus souvent de contrôler les flux entrants et sortants de leur réseau, en bloquant les connexions directes depuis un serveur ou un poste client vers un serveur externe et réciproquement. Cela implique alors de faire passer les flux par un serveur mandataire (aussi appelé proxy), filtrant à la fois les connexions entrantes et sortantes :

Contrairement à d’autres utilitaires, les connexions ssh et les transferts d’information au travers du protocole SSH, entre machines clientes et serveurs ne possèdent aucun dérivatif pour mentionner l’utilisation d’un proxy, comme on peut le faire au travers des variables http_proxy pour yum, wget et curl.

Du coup, pour effectuer des connexions avec rebond cela peut vite devenir fastidieux. En effet, dans le cas de la copie d’un fichier depuis le client d’un réseau local vers un poste ou un serveur distant, il faudrait effectuer les tâches suivantes :

Alors me direz-vous qu’est-ce cela a à voir avec nc ? Et bien en fait ce petit outil va nous permettre d’établir une connexion transparente au travers du proxy afin d’atteindre le serveur distant. La première étape nécessaire pour mettre en place un rebond ssh, consiste à générer les clés de chiffrement sur chacune des machines concernées : à savoir, sur le client, sur le proxy et aussi sur le serveur distant. Bien sûr, l’opération reste possible en utilisant des mots de passe. Mais, cela demeure malgré tout aussi laborieux.

Il faut ensuite créer un fichier ~/.ssh/authorized_keys sur chacune des machines concernées (le client, le proxy et le serveur distant), et il faut aussi copier dans ce fichier, le contenu des parties publiques des différentes clés de chiffrement utilisées sur les deux autres machines.

REMARQUE : cela va permettre notamment d’activer la connexion par clé dans les deux sens : Client => Proxy => Serveur (noté sens 1) et aussi dans le sens Serveur => Proxy => Client (noté sens 2).

En ce qui concerne le sens 1, on doit établir une connexion uniquement en copiant la clé publique du client dans le fichier ~/.ssh/authorized_keys du proxy, ainsi que les deux clés publiques du proxy et du client, dans ce même fichier, sur le serveur distant. Une fois cette étape réalisée, on peut alors créer un fichier appel é config que l’on place dans le répertoire ~/.ssh de la machine client dans lequel on déclare les instructions suivantes :

Host=<Proxy>
Hostname=<Proxy FQDN>
User=<User Proxy>

Host=<Server>
User=<Login Server>
ProxyCommand=ssh <Proxy> nc <Server FQDN> 22

Les trois premières lignes indiquent les instructions relatives à la connexion sur le proxy et les trois dernières concernent la connexion au serveur distant, depuis la machine ou le poste client. C’est grâce au contenu du champ ProxyCommand que l’on autorise l’ouverture d’une session de communication au travers de sockets d’un point à un autre, en utilisant la commande nc via le protocole SSH.

la commande nc peut varier d’une distribution à une autre et/ou d’un système d’exploitation à un autre. Il faut donc bien lire le manuel en ligne afin de disposer des bonnes options.

ATTENTION : les options et arguments de la commande nc ne dépendent pas de l’implémentation de la commande présente sur le poste client, mais de celle présente sur le proxy.

Ensuite, le fichier config que l’on vient de créer ne doit être accessible que par l’utilisateur qui en est le véritable propriétaire et uniquement en lecture-écriture. On doit donc exécuter sur ce fichier la commande suivante :

$ chmod 600 ~/.ssh/config

Dès lors après la création de ce même fichier, une simple commande ssh permet de vérifier la bonne configuration pour la connexion directe :

$ ssh <Server>

Ainsi, la connexion via le proxy passe inaperçue. Le grand avantage de ce mécanisme n’est pas seulement de permettre une connexion plus simple, mais aussi de rediriger de façon sécurisée et maitrisée toute opération ssh, depuis un client vers un ou plusieurs serveurs distants. Le principe reste également vérifiable pour des transferts de fichiers :

$ scp <File> <Server>

Pour établir un lien dans le sens 2 de la communication, il faut également créer un fichier config sur le serveur distant, contenant les lignes suivantes :

Host=<Proxy>
Hostname=<Proxy FQDN>
User=<User Proxy>

Host=<Client>
User=<Login>
ProxyCommand=ssh <Proxy> nc <Client FQDN> 22

VI. Conclusion

Ainsi, à l’avenir lorsque vous aurez besoin d’établir une communication entre deux serveurs quels qu’ils soient, il vous suffira d’utiliser nc (alias netcat). Par ailleurs, comme l’a prouvé le paragraphe précédent, savoir configurer ses communications ssh peut être très utile car cela permet d’établir des connexions avec rebonds de façon transparente. Là encore nc rend de fiers services.