# SSH
## Fonctionnement
Port : 22

## Installer serveur ssh
```
apt install openssh-server
```
## Ajouter un user pour ssh
```
sudo useradd -m -d /home/bato -s /bin/bash bato
sudo passwd bato
```
## Activer le ssh pour root
Editer `/etc/ssh/sshd_config` et ajouter
```
PermitRootLogin yes
```
Authentifactication par clé
Depuis linux :
```
ssh-keygen
ssh-copy-id root@ip-target
```
Depuis windows
```
type $env:USERPROFILE\.ssh\id_rsa.pub | ssh user@10.10.10.10 "cat >> .ssh/authorized_keys"
```
## Tunnel ssh
### Local Forwarding
- Forward un port sur la machine distante, en local. Par exemple pour accéder à une db accessible qu'en local sur la machine.
### Remote Forwarding
- Forward un port sur la machine local vers la machine distante. Pour exposer un site web disponible sur la machine distante depuis la machine locale.
### Dynamic Port Forwarding
- Forward dynamiquement des ports de la machine distante à l'aide d'un poroxy socks
### Jump
- Permet une connection ssh à travers un bastion (une autre machine ssh)
## VNC
#### Prérequis :
- [ ] Serveur Debian 11, y compris un utilisateur non root avec accès privilégié.
- [ ] un ordinateur local avec client VNC installé
Windows : TightVNC, RealVNC, UltraVNC -> utilisé rdp recommandé
macOS : RealVNC -> utiliser le programme de partage d'écran intégré
Linux : vinagre, krdc, RealVNC, TightVNC
## Étape 1 - Installation de l'environnement de bureau et du serveur VNC
#### Mettre à jour notre liste de paquets
`sudo apt update`
Xfce et TightVNC sont connus pour être légers et rapides, ce qui contribuera à garantir que la connexion VNC sera fluide et stable, même sur des connexions Internet plus lentes.
Installez maintenant l'environnement de bureau Xfce, ainsi que le xfce4-goodiespackage, sur votre serveur :
`sudo apt install xfce4 xfce4-goodies`
Une fois l'installation terminée, installez le serveur TightVNC :
`sudo apt install tightvncserver`
Ensuite, installez la dbus-x11dépendance pour assurer une bonne connexion à votre serveur VNC :
`sudo apt install dbus-x11`
Pour terminer la configuration initiale du serveur VNC après l'installation, utilisez la vncservercommande pour définir un mot de passe sécurisé et créer les fichiers de configuration initiale :
`vncserver`
Ensuite, vous serez invité à entrer et à vérifier un mot de passe pour accéder à votre machine à distance :
```
Output
You will require a password to access your desktops.
Password:
Verify:
```
Le processus crée ensuite les fichiers de configuration par défaut nécessaires et les informations de connexion pour le serveur :
```
Output
Would you like to enter a view-only password (y/n)? n
xauth: file /home/sammy/.Xauthority does not exist
New 'X' desktop is your_hostname:1
Creating default startup script /home/sammy/.vnc/xstartup
Starting applications specified in /home/sammy/.vnc/xstartup
Log file is /home/sammy/.vnc/your_hostname:1.log
```
Ensuite, configurez-le pour lancer Xfce et donner accès au serveur via une interface graphique.
## Étape 2 - Configuration du serveur VNC
port par default : **port 5901**
Lorsque VNC est configuré pour la première fois, il lance une instance de serveur par défaut sur le port 5901. Ce port s'appelle un port d'affichage et est désigné par VNC comme :1. VNC peut lancer plusieurs instances sur d'autres ports d'affichage, comme :2, :3, etc.
Étant donné que vous allez modifier la configuration du serveur VNC, arrêtez d'abord l'instance de serveur VNC qui s'exécute sur le port 5901 avec la commande suivante :
```vncserver -kill :1```
Voici la sortie avec un PID spécifique à votre environnement de serveur :
```
Output
Killing Xtightvnc process ID 17648
```
Avant de modifier le xstartupfichier, sauvegardez l'original :
`mv ~/.vnc/xstartup ~/.vnc/xstartup.bak`
Créez maintenant un nouveau xstartupfichier et ouvrez-le dans votre éditeur de texte préféré :
`nano ~/.vnc/xstartup`
Les commandes de ce fichier sont exécutées automatiquement chaque fois que vous démarrez ou redémarrez le serveur VNC. Vous avez besoin de VNC pour démarrer votre environnement de bureau s'il n'est pas déjà démarré. Ajoutez les commandes suivantes au fichier :
Ajout de ses commande dans le fichier :
```
#!/bin/bash
xrdb $HOME/.Xresources
startxfce4 &
```
Pour vous assurer que le serveur VNC pourra utiliser correctement ce nouveau fichier de démarrage, vous devez le rendre exécutable :
`sudo chmod +x ~/.vnc/xstartup`
Maintenant, redémarrez le serveur VNC :
`vncserver`
La sortie ressemblera à ce qui suit :
```
Output
New 'X' desktop is your_hostname:1
Starting applications specified in /home/sammy/.vnc/xstartup
Log file is /home/sammy/.vnc/your_hostname:1.log
```
De base le canal ne sera pas chiffré, nous pourons créer un canal ssh sécurisé avec la commande suivante :
Créez une connexion SSH sur votre ordinateur local qui transmet en toute sécurité à la localhostconnexion pour VNC.
`ssh -L 5901:127.0.0.1:5901 vagrant 192.168.95.132`

App admin
Windows Admin Center
Port : 6516
Prérequis :
- [ ] Windows Server 2016, 2019 ou 2022. Il peut également être installé avec Windows 10 ou plus récent.
- [ ] Un domaine Windows avec un contrôleur de domaine.
Le télécharger sur le lien ci-dessous :
[https://www.microsoft.com/en-us/evalcenter/download-windows-admin-center]
Windows Admin Center est un outil de gestion local basé sur un navigateur qui permet de gérer les serveurs Windows. Auparavant, cet outil s'appelait « Project Honolulu ». C'est léger, Windows Admin Center rend la gestion des plates-formes Windows Server plus claire et plus facile.
C'est un complément aux plateformes de gestion existantes
Azure security and management
System Center
RSAT
Remote Desktop (inbox)
Windows admin center va prendre des fonctionnalités de chacun de ses outils.
La différence c'est que c'est basé sur une console WEB
Architechture :

Fonctionnnement :
On va installer la passerelle windows admin center sur la machine soit (windows 11) ou (windows server)
On va ensuite se connecter a cette passerelle via un naviguateur internet et on pourra ensuite manager nos différentes machines depuis là.
On peut se connecter en interne ou en externe mais pour cela il il faudra faire une publication dns, ouverture du firewall.
Serveur manageur
Port : 5985 (WinRM)
Protocole :

RSAT
Remote Server Administration Tools
Pour activer les outils RSAT, cliquez sur `Démarrer`, `Paramètres`, `Applications`, puis cliquez sur `Fonctionnalités facultatives`. Sélectionnez ensuite le panneau Ajouter une fonctionnalité et saisissez `RSAT` dans la barre de recherche.
# RDP
## Fonctionnement
Port : 3389
Tcp chiffré de bout en bout
Autorise un maximum de deux connections en même temps.
## Configuration
Activer RDP avec powershell
> En administrateur
```powershell
Set-ItemProperty -Path 'HKLM:\System\CurrentControlSet\Control\Terminal Server' -name "fDenyTSConnections" -value 0
```
```powershell
Enable-NetFirewallRule -DisplayGroup "Remote Desktop"
```
Ajouter un user non administrateur
```
Add-LocalGroupMember -Group "Remote Desktop Users" -Member almir
```
# WINRM
Port http : 5985
Port https : 5986
Peut être utiliser avec Ansible.
## Fonctionnement
- Authentification avec Kerberos
- Même en http, le trafic est chiffré de bout en bout.
## Configuration
```powershell
Set-NetConnectionProfile -NetworkCategory Private
Enable-PSRemoting
```
## Utilisation
```powershell
Enter-PSSession 192.168.100.5 -Credential domain\administrator
```
# WMI
Windows Management Instrumentation
## Fonctionnement

Peut être utilisé en powershell, c++, .net
## Configuration
Pas besoin de configurer, le WMI est activé par défault.
## Utilisation
Get-WmiObject
```powershell
$PSCredential = Get-Credential "Hyperv\Administrator"
Get-WmiObject Win32_OperatingSystem -ComputerName "WinCli" -Credential $PSCredential
SystemDirectory : C:\Windows\system32
Organization :
BuildNumber : 19045
RegisteredUser : User
SerialNumber : 00330-80000-00000-AA811
Version : 10.0.19045
```
## CIM
Common Information Model
Une sorte de "wrapper" pour wmi en powershell
```powershell
$cim = New-CimSession -ComputerName $server -Credential $credential
Get-MpThreat -CimSession $cim
```

## Guacamole
https://raw.githubusercontent.com/MysticRyuujin/guac-install/master/guac-install.sh
