Archives pour la catégorie Linux

Utiliser PowerShell via SSH

Voici une solution permettant d’interagir avec un ordinateur sous Windows depuis un ordinateur sous Linux ou MacOS. La solution utilisée reste relativement simple à mettre en place et utilise des standards. Nous utiliserons Windows Server 2012R2 et un client Linux.

Installation côté Windows

PowerShell :

Récupérez la dernière version de PowerShell pour Windows ici : https://github.com/PowerShell/PowerShell Ici nous utiliserons la version 6.0.4 dans toute la suite de l’article. L’installeur Windows va placer les fichiers ici : C:\Program Files\PowerShell\6.0.4\

OpenSSH :

Récupérez la dernière version de PowerShell pour Windows ici : https://github.com/PowerShell/Win32-OpenSSH/releases/download/v7.7.2.0p1-Beta/OpenSSH-Win64.zip Pour l’installer, je vous recommande de dé-zippez son contenu à la racine du disque sur C:\. Ouvrez une invite de commande PowerShell en mode administrateur et effectuez les commandes suivantes :

PS: cd C:\OpenSSH-Win64\
PS: powershell.exe -ExecutionPolicy Bypass -File install-sshd.ps1
PS: cmd /c /D mklink c:\pwsh "C:\Program Files\PowerShell\6.0.4"

Il faut aller éditer le fichier de configuration sshd_config situé dans le dossier C:\ProgramData\ssh\ et assurez vous d’avoir les paramètres suivants :

PasswordAuthentication yes
Subsystem powershell c:\pwsh\pwsh.exe -sshs -NoLogo -NoProfile

Maintenant il suffit de lancer le service

PS: net ssh start

Path OpenSSH

Il est aussi indispensable de configurer la variable d’environnement « path » pour que les commandes SSH soient reconnues par le système. Pour cela, rendez-vous dans l’application « Modifier les variables d’environnement système ».

Sélectionnez ensuite « path » et cliquez sur « Modifier… ».

Rajoutez le texte suivant à la fin de la ligne (sans oublier le ; ) et validez.

;C:\OpenSSH-Win64\

Installation côté Linux

Pour la partie Linux, pas besoin de SSH il est normalement déjà installé sur votre machine d’administration. La méthode d’installation de PowerShell est la méthode universelle mais sachez que des paquets pour diverses distributions existes (Debian, Red-Hat).
Téléchargez la version stable en cours ici :

https://github.com/PowerShell/PowerShell/releases/tag/v6.0.4

Les commandes suivantes suffisent :

$ wget https://github.com/PowerShell/PowerShell/releases/download/v6.0.4/powershell-6.0.4-linux-x64.tar.gz
$ tar -xvzf powershell-6.0.4-linux-x64.tar.gz
$ cd powershell-6.0.4-linux-x64

Utilisation

Maintenant que tout est installé, voici comment accéder en ssh à votre serveur Windows et y exécuter des commandes via PowerShell. Cette partie reprend la documentation officielle de Microsoft.

Dans le dossier où se trouve PowerShell, lancez le script pwsh

./pwsh
PS /powershell-6.0.4-linux-x64>

Créez ensuite la connexion au serveur :

> $session = New-PSSession -HostName srv.example.com -UserName Administrateur

Vous allez devoir accepter le certificat la première fois et indiquer votre mot de passe. Vérifions que la sessions est bien là :

> $session

Si vous souhaitez vous connecter sur le Shell distant, voici la commande :

> Enter-PSSession $session

Et si vous souhaitez exécuter votre script « script.ps » situé à la racine du disque C sur la machine distante, voici ce qu’il faut faire :

> Invoke-Command $session -ScriptBlock { C:\script.ps1 }

Optimiser la taille des disques virtuels de Proxmox

Cet article vous explique comment réduire l’espace disque physique occupé par vos disques de stockage virtuels. Sous Proxmox, les disques durs virtuels sont dynamiques, c’est à dire que lorsque vous définissez un disque dur de 100 Go par exemple, en réalité, sur la machine hôte, il n’occupe que quelques Go une fois le système installé. Ce qui évite d’occuper directement les 100 Go et de perdre du temps à la création de celui-ci.

Problématique

Ce système fonctionne bien sauf qu’une fois que l’espace disque à été alloué, il restera occupé même une fois vidé.

Par exemple, nous ajoutons 50 Go de données à notre machine qui en contenait déjà 10, la taille physique du disque virtuel est donc montée à 60 Go. Si nous supprimons ensuite ces 50 Go, la taille physique ne change pas et n’est donc pas réduite. Il faut le voir comme un cliquet ( que l’on ne peux que monter ). Cet espace non utilisé ne pose pas de problème directement, peut vite ralentir les sauvegardes Proxmox en utilisant des dizaines voir centaines de Go qui ne sont plus utilisés réellement.

Solution

  • disque SCSI

Pour pouvoir réduire l’espace disque physique, il faut avoir au préalable configuré le disque dur en SCSI et avoir coché l’option Discard.

Ensuite, dans votre machine virtuelle, il suffit d’utiliser la commande fstrim (beaucoup plus connue maintenant avec l’utilisation des SSD).

Continuer la lecture de Optimiser la taille des disques virtuels de Proxmox 

Géolocalisation avec Apache

world-regions-300px

Voici comment mettre en place une redirection vers un site internet en utilisant la géolocalisation directement dans un VirtualHost avec Apache.

1 – Installation des paquets :

Nous faisons cette manipulation sous Debian avec Apache 2.4 déjà installé. Il faut donc rajouter les modules permettant de gérer GeoIP :

# apt-get install libapache2-mod-geoip geoip-database-contrib
  • libapache2-mod-geoip permet de rendre apache compatible avec la géolocalisation
  • geoip-database-contrib permet de mettre à jour la base de correspondance IP <-> Pays

2 – Activation des modules :

L’activation des modules est simple et ne prend qu’une seule ligne :

# a2enmod rewrite geoip

Nous pouvons également mettre à jour la base d’IP comme ceci :

# geoip-database-contrib_update
Downloading: http://geolite.maxmind.com/download/geoip/database/GeoLiteCountry/GeoIP.dat.gz
Downloading: http://geolite.maxmind.com/download/geoip/database/GeoIPv6.dat.gz
Downloading: http://geolite.maxmind.com/download/geoip/database/GeoLiteCity.dat.gz
Downloading: http://geolite.maxmind.com/download/geoip/database/GeoLiteCityv6-beta/GeoLiteCityv6.dat.gz
Downloading: http://geolite.maxmind.com/download/geoip/database/asnum/GeoIPASNum.dat.gz
Downloading: http://geolite.maxmind.com/download/geoip/database/asnum/GeoIPASNumv6.dat.gz

Il faut savoir que le paquet installe également une tâche cron qui permet de maintenir la base à jour régulièrement. A savoir : 0 4 10 * *, soit à 4h00 du matin chaque 10 du mois.

3 – Configuration :

Nous réglons ensuite le module GeoIP pour qu’il aille chercher la bonne base d’IP en éditant le fichier de configuration du module pour Apache :

# vim /etc/apache2/mods-enabled/geoip.conf

Il suffit de dé-commenter la ligne avec le paramètre GeoIPDBFile pour lui indiquer le nouveau chemin :

<IfModule mod_geoip.c>
 GeoIPEnable On
 GeoIPDBFile /var/lib/geoip-database-contrib/GeoIP.dat
</IfModule>

Nous terminons par le vhost que l’on souhaite modifier en intégrant ces règles qui permettent de rediriger les IP Françaises vers un site Français et celles qui ne sont pas françaises vers le reste du monde :

RewriteEngine on
 RewriteCond %{ENV:GEOIP_COUNTRY_CODE} !^(FR)$
 RewriteRule ^(.*)$ http://world.site.com/ [L]
 RewriteCond %{ENV:GEOIP_COUNTRY_CODE} ^(FR)$
 RewriteRule ^(.*)$ http://france.site.fr/ [L]

Et pour finir, ne pas oublier un contrôle de configuration apache, puis un redémarrage du service qui va activer les modules et appliquer la nouvelle configuration :

# service apache2 restart

Reverse proxy avec Apache

Après Nginx voici un autre exemple de reverse proxy, cette fois-ci nous utiliserons Apache avec Redmine.

Si vous utilisez un serveur avec Redmine, voici l’url d’accès à l’application :

http://redmine.myserver.com:3000

De même que pour l’exemple de Kibana, cette URL n’est ni pratique ni jolie, ni même utilisable à travers certains réseaux qui limitent l’utilisation de certains port. Cela donne un avantage de plus quand à l’utilisation d’un reverse proxy.

Nous commençons par installer apache :

httpd_logo_wide_new

Sous Gentoo (en ayant ajouter les variables USE proxy et proxy_http :

# emerge -avq apache

Sous Debian :

# apt-get install apache2

Nous configurons ensuite le vhost correspondant à Redmine et dans le bloc <VirtualHost *:80> nous ajoutons ces lignes :

ProxyPass / http://localhost:3000/
ProxyPassReverse / http://localhost:3000/

ProxyPass permet d’indiquer que nous relayons les requêtes envoyées sur la racine vers notre Redmine sur le port 3000.

ProxyPassReverse permet de retransmettre les informations entre les deux parties.Voilà, votre Redmine est joignable directement sur une URL sur le port 80 :

http://redmine.myserver.com

Reverse proxy avec Nginx

Tout d’abord, voici une petite explication de l’utilité de mettre en place un reverse proxy. Nous allons prendre ici l’exemple d’un serveur disposant du groupe ELK (Elasticsearch  Logstash Kibana) avec l’interface web de Kibana qui écoute par défaut sur le port 5601. Pour y accéder vous devez passer par cette URL :

http://myelk.myserver.com:5601/

Cela oblige à ouvrir le port vers l’extérieur et ce n’est pas très joli à écrire.

Voici comment utiliser Nginx comme reverse proxy pour obtenir une url sans port à spécifier et même permettre de mettre en place une authentification simple par .htaccess.

nginx

Tout d’abord, installer Nginx ( http://nginx.org/ ) sous Debian :

# apt-get install nginx

Allons ensuite configurer le reverse proxy dans le fichier de base d’un nginx fraichement installé :

# vim /etc/nginx/sites-available/default

Voici le bloc à modifier dans ce vhost :

location / {
                proxy_pass http://localhost:5601;
                proxy_http_version 1.1;
                proxy_set_header Upgrade $http_upgrade;
                proxy_set_header Connection 'upgrade';
                proxy_set_header Host $host;
                proxy_cache_bypass $http_upgrade;
 }

Petite explication de ces lignes :

Nous indiquons à proxy_pass l’url vers laquelle on souhaite envoyer les requêtes, soit Kibana pour notre exemple. proxy_http_version indique la version du protocole HTTP à utiliser et les proxy_set_header permettent de faire suivres des informations dans les en-têtes.

Petit plus, vous pouvez ajouter un .htaccess via ces deux lignes à placer avant location / :

auth_basic "Access restreint";
auth_basic_user_file /etc/nginx/htpasswd;

Et sans oublier d’inscrire des utilisateurs dans ce fichier (la commande htpasswd est obtenu grace au paquet apache2-utils ):

htpasswd -c /etc/nginx/htpasswd my-user

Récupérer licence Windows 8/8.1 OEM

Lorsque vous avez acheter votre PC, vous avez en général une licence Windows fournie avec. Avant Windows 8 la licence se trouvait sur une étiquette présente sur le boîtier de celui-ci. Depuis Windows 8, et pour simplifier la vie des utilisateurs, la licence se trouve intégrée dans le BIOS/UEFI et n’est pas accessible depuis son interface.

Si vous avez formaté le disque dur de votre machine pour y installer Linux uniquement, vous n’avez plus la possibilité d’utilisé les différents logiciels de récupérations de clefs disponibles sous Windows. Il y a cependant une petite astuce pour récupérer cette licence et la réutilisée sur une machine virtuelle par exemple.

Dans votre terminal en ROOT :

# strings /sys/firmware/acpi/tables/MSDM

Vous récupérez alors la licence sous ce format :

MSDMU
HPXXXX-CPX	 
AMI 
NWZ27-42VV2-XXXX-XXXX-XXXX

Indiquez cette licence dans l’installation de Windows 8 et vous ne serez pas obligé d’en racheter une.

windows8.1-serial2