251 lines
8.8 KiB
Markdown
251 lines
8.8 KiB
Markdown
Clean Win10
|
||
===========
|
||
|
||
CleanW10 est un script powershell pour rendre Windows plus respectueux de la
|
||
vie privée de son|ses utilisateur(s) - Utilisatrice(s). Il réalise tout un tas
|
||
d'actions afin de désactiver, supprimer, modifier des composant du système et
|
||
applications tierces.
|
||
|
||
Ce script est avant tout destiné aux utilisateurs avancés, il réalise beaucoup
|
||
d'actions normalement réservées aux GPO (version pro et entreprise de Windows
|
||
mais accessible) via la base de registre, ou autre (désactivation de
|
||
services par exemple)
|
||
|
||
# Actions réalisées
|
||
|
||
CleanW10 réalise beaucoup d'actions, en voici une liste non exhaustive :
|
||
|
||
* Désinstallation d'applications universelles (ModernApp) pour l'utilisateur
|
||
et en version provisionnée. Attention, **Windows Store sera aussi supprimé**.
|
||
* Blocage d'applications dans le pare-feu Windows (explorer, Cortana,
|
||
Edge). Attention, **vous ne pourrez plus utiliser Edge**.
|
||
* Blocage d'adresse IP Microsoft connue pour récolter des données de
|
||
télémétrie. Attention, des IP utilisées pour **Skype et Outlook** seront
|
||
bloquées.
|
||
* Blocage de noms de domaine appartenant à Microsoft connus pour récolter des
|
||
données
|
||
* Désintallation de OneDrive
|
||
* Désactivation des comptes Microsoft. Attention, si vous utilisew des
|
||
comptes Microsoft sous Windows 10, **transformez-le en compte local AVANT de
|
||
lancer CleanW10**.
|
||
* Désactivation des droits pour les applications (caméra, localisation,
|
||
synchronisation des contacts / calendriers etc.)
|
||
* Modifications des paramètres relatifs au programme d’amélioration de
|
||
l’expérience utilisateur (apprentissage de la saisie clavier, envoi de
|
||
rapports d'erreurs ...)
|
||
* Désactivation des services relatifs aux données personnelles / de
|
||
télémétrie.
|
||
* Supression des tâches planifiées problématiques pour les données
|
||
personelles
|
||
|
||
# Lancer le CleanW10
|
||
|
||
Par défaut, Windows n'autorise pas l'execution de script powershell non signé
|
||
ou dont il ne connait pas la signature. Pour exécuter ce script, Il est donc
|
||
conseillé d'exécuter la commande suivante dans une fenêtre powershell en mode
|
||
administrateur :
|
||
|
||
```
|
||
Set-ExecutionPolicy unrestricted
|
||
```
|
||
|
||
Vous pouvez cependant lancer ``launcher.cmd`` en tant qu'administrateur.Il se
|
||
chargera de basculer la politique de sécurité relative à powershell, de lancer
|
||
CleanW10 puis de la remettre à son état initial.
|
||
|
||
## Options de la ligne de commande
|
||
|
||
voici les options du script en ligne de commande :
|
||
|
||
```
|
||
CleanW10.ps1 -module <path> -dir <path> -debug
|
||
```
|
||
|
||
### -module
|
||
|
||
Avec cette option vous pouvez executer un seul module. Le paramètre est suivi
|
||
par le chemin complet du fichier module.
|
||
|
||
### -dir
|
||
|
||
Cette option donne le chemin complet vers le répertoire contenant les modules à
|
||
executer, par défaut ``./modules.d/``. Elle est imcompatible avec ``-module``
|
||
|
||
### -debug
|
||
|
||
Affiche des information de debug en plus des messages relatifs au script.
|
||
|
||
# Comment ça marche?
|
||
|
||
Le script fonctionne à partir de modules sous forme de fichiers écrits en JSON.
|
||
Un module contient un ensemble d'actions à réaliser ainsi que leurs paramètres.
|
||
Voici un exemple de fichier module :
|
||
|
||
```JSON
|
||
{
|
||
"name" : "Block Telemetry IPs",
|
||
"description" : "Block IPs relative to Microsoft telemery.",
|
||
"actions" :
|
||
[
|
||
{
|
||
"_comment" : "Block telemetry IPS",
|
||
"action" : "FwBlockOutputIP",
|
||
"file" : "telemetry.txt"
|
||
},
|
||
{
|
||
"_comment" : "Block IP relative to Skype and Messenger",
|
||
"action" : "FwBlockOutputIP",
|
||
"file" : "skype-msn.txt"
|
||
}
|
||
]
|
||
}
|
||
```
|
||
|
||
Chaque module contient un nom (``name``), une description (``description``) et
|
||
une série d'actions à réaliser (``actions``).
|
||
|
||
Une action contient une instruction à réaliser (ici ``FwBlockOutputIP``),
|
||
éventuellement un commentaire (``_comment``) puis un ou plusieurs paramètre(s)
|
||
en fonction de l'action. Voici une liste des actions disponibles :
|
||
|
||
## Liste des actions
|
||
|
||
### BlockHost
|
||
|
||
Bloque un ou plusieurs noms d'hôtes via le fichier hosts, les paramètres de
|
||
cette action sont :
|
||
|
||
* ``host`` : nom d'hote à bloquer
|
||
* ``file`` : nom du fichier contenant une adresse IP par ligne pour un
|
||
traitement par lots. Voir la section (#fichiers-externes)[fichiers]
|
||
* ``firewall`` [Booléen] : Bloque la ou les adresse(s) IP relative au nom
|
||
d'hôte par le module FwBlockOutputIP
|
||
|
||
Activer ce paramètre permet de bloquer par le firewall certains hôtes pour
|
||
lesquels Windows ne prends pas en compte le fichier hosts.
|
||
|
||
### FwBlockOutputIP
|
||
|
||
Bloque une ou plusieurs adresse(s) IP, les paramètres relatifs à cette action
|
||
sont :
|
||
|
||
* ``ip`` : adresse IP à bloquer
|
||
* ``file`` : nom du fichier contenant une adresse IP par ligne pour un
|
||
traitement par lot. Voir la section [#fichiers-externes](fichiers)
|
||
|
||
|
||
### FwBlockProgram
|
||
|
||
Bloque un ou plusieurs programmes dans le pare-feu, les paramètres relatifs à
|
||
cette action sont :
|
||
|
||
* ``name`` : ce paramètre est utilisé pour créer le nom de la règle du
|
||
pare-feu Windows - facultatif, utilise le chemin complet si absent
|
||
* ``path`` : chemin complet vers l'exécutable à bloquer.
|
||
* ``file`` : nom du fichier contenant un chemin par ligne pour un traitement
|
||
par lot. Voir la section [#fichiers-externes](fichiers)
|
||
|
||
|
||
### AddRegKey
|
||
|
||
Ajoute ou modifie une clé de registre. Si une clé concerne l'utilisateur
|
||
courant (HKCU) alors la clé sera ajoutée / modifiée pour tous les utilisateurs
|
||
mais aussi sur le gabarit de registre pour la création d'utilisateurs. Les
|
||
paramètres sont :
|
||
|
||
* ``path`` : chemin vers la clé
|
||
* ``key`` : la clé
|
||
* ``value`` : la nouvelle valeur - facultatif
|
||
* ``type`` : le type de valeur (DWord QWord, Multistring ...) - facutlatif,
|
||
DWord par défaut
|
||
|
||
### DelRegKey
|
||
|
||
Supprime une clé de registre, les mêmes actions que pour ``AddRegKey`` seront
|
||
réalisées si la clé concerne HKCU. Les paramètres sont :
|
||
|
||
* ``path`` : chemin vers la clé
|
||
* ``key`` : clé à supprimer.
|
||
|
||
### UninstallModernApp
|
||
|
||
Désintalle une ou plusieurs applications universelles, les paramètres sont :
|
||
|
||
* ``name`` : nom de l'application à désintaller
|
||
* ``removeProvisionned`` [Booléen] : supprimer aussi des application
|
||
provisionnées (que le système réinstallera pour tout nouvel utilisateur créé)
|
||
* ``file`` : nom du fichier contenant un nom d' application par ligne pour un
|
||
traitement par lots. Voir la section [fichiers externes](#fichiers-externes)
|
||
|
||
### DisableService
|
||
|
||
Désactive un service, les paramètres sont :
|
||
|
||
* ``name`` : nom du service à désactiver
|
||
* ``userService`` [Booléen] : service est lancé en mode utilisateur. Pour
|
||
désactiver la création du service par utilisateur, la clé de registre
|
||
``userServiceFlag`` sera modifiée.
|
||
* ``file`` : nom du fichier contenant un nom de service par ligne pour un
|
||
traitement par lots. Voir la section [fichiers externes](#fichiers-externes)
|
||
|
||
|
||
### RemoveSchedukedTask
|
||
|
||
Désactive une tâche planifiés, les paramètres sont :
|
||
|
||
* ``name`` : nom de la tache planifiée
|
||
* ``path`` : chemin de la tache planifiée - facultatif
|
||
* ``file`` : nom du fichier contenant un nom de tâche par ligne pour un
|
||
traitement par lots. Voir la section [fichiers externes](#fichiers-externes)
|
||
|
||
### DisableFeature
|
||
|
||
Désactive une fonctionnalité de Windows (accessible via dism.exe) les paramètres
|
||
sont :
|
||
|
||
* ``name`` : nom de la fonctionnalité
|
||
* ``file`` : nom du fichier contenant un nom de fonctionnalité par ligne pour
|
||
un traitement par lot. Voir la section [fichiers externes](#fichiers-externes)
|
||
|
||
### KillProcess
|
||
|
||
Tue un processus, le paramètre est :
|
||
|
||
* ``name`` : nom du processus à tuer
|
||
|
||
### DelFile
|
||
|
||
Supprime un fichier / dossier, les paramètres sont :
|
||
|
||
* ``path`` : chemin du fichier / dossier à supprimer
|
||
* ``recurse``[Booléen] : supprimmer de manière récursive. - facultatif
|
||
|
||
### ExecCommand
|
||
|
||
Executer un commande, les paramètres sont :
|
||
|
||
* ``path`` : chemin vers l'exécutable. Celui-ci peut contenir des variables
|
||
d'environnement powershell comme par exemple ``"$env:systemroot\``, Si la
|
||
* ``arguments`` : liste des arguments
|
||
|
||
## Fichiers externes
|
||
|
||
Pour certaines actions il est possible de charger un fichier externe pour du
|
||
traitement par lot. Ce peut être le cas pour ``BlockHost`` par exemple. Il
|
||
faut alors renseigner le paramètre ``file`` dans l'action correspondante avec
|
||
le nom du fichier à charger, Celui-ci decra se trouver **obligatoirement** dans
|
||
un sous-dossier portant le même nom que le fichier module.
|
||
|
||
Prenons l'exemple du module FW_Hosts.conf, il contient l'action ``BlockHost``
|
||
avec commr paramètre ``file`` hosts.txt, voici donc l'arborescence obtenue :
|
||
|
||
```
|
||
modules.d\FW_Hosts\hosts.txt
|
||
modules.d\FW_Hosts.conf
|
||
```
|
||
|
||
# Licence
|
||
|
||
Ce script est disponible sous licence Beeware : utilisez, copiez, modifiez,
|
||
redistribuez comme ça vous chante. Et offrez-moi une bière si l'on se recontre
|
||
un de ces 4 (et si ça vous chante).
|