30 Nov

Intel RST – Comment retirer le RAID sur un laptop ACER et retrouver son disque HDD ?

Préambule

Un article afin de venir en aide à ceux qui utilisent un laptop de marque Acer et galèrent pour retirer le RAID « logiciel » d’Intel Rapid Storage Technology…

Pour ma part je suis (l’heureux !) propriétaire d’un Acer Aspire A715-72G-55EP. Aucun problème, il fonctionne très bien, un vrai régal. Il contient 2 disques : 1 SSD de 128 Go et 1 HDD de 1 To (important pour la suite…)

Mais je ne sais pas ce qui m’a pris, dès le premier jour j’ai voulu tester l’application d’Intel RST en créant un nouveau volume unique… quelle erreur !!!

Déjà je n’ai pas réfléchi car l’OS étant installé sur le disque SSD, donc le plus rapide des 2, je n’avais aucun avantage en terme de performance à faire cela… ensuite, j’ai choisi la sécurité en prenant l’option RAID 1 (mirroring), du coup, bye bye les 1 To, je ne pouvais utiliser que 128 Go en tout et pour tout…

Et dernière remarque, mon HDD (D:\) avait naturellement disparu de l’explorateur de fichiers… je ne voyais plus que mon disque SSD (C:\)…

Je me suis dit, pas de panique, on va revenir en arrière, il suffit de chercher dans l’interface… que nenni, il n’y a pas d’options pour cela !!! Ah, là je commence à stresser un peu…

Avant de tenter quoi que ce soit, et je vous le conseille, j’ai réalisé une sauvegarde du laptop via l’application Acer eRecovery Management, qui est bien faite au passage. Pour cela, insérez une clé USB de 16 Go minimum puis faites :

Gestion de la récupération / Sauvegarder / Créer une sauvegarde… et cliquez sur « Pour commencer »

Attention, elle sera complètement formatée. Il faudra compter une bonne heure.

Solutions tentées mais sans résultat

J’ai d’abord trouvé qu’Intel proposait une option pour arriver dans le menu RAID durant le boot avec la combinaison CTRL + I… malheureusement, Acer ne permet pas l’accès à ce menu…

J’ai ensuite tenté de « jouer » dans le BIOS avec F2 afin de voir les choix possibles… il y en a peu. On peut tout de même passer du mode RST à AHCI et choisir les disques à activer ou non par exemple…Malgré de nombreux tests, impossible de voir le deuxième disque :

Bon, j’ai donc réinstallé le laptop via l’application Acer eRecovery Management (Gestion de la récupération / Restaurer) mais aucun changement…

J’ai ensuite tenté une restauration via le menu de restauration Windows avec la combinaison ALT + F10 2 fois à l’apparition du logo Acer au boot, aucun changement, c’est le même déroulement que précédemment en fait.

Nouvelle tentative avec la clé USB fraîchement crée (depuis le même menu ALT + F10 2 fois toujours), même constat…

Après, j’ai vu qu’il existait une utilitaire qui permettait de modifier le RAID en CLI sur le FTP d’acer, bien qu’il ne soit pas pour mon modèle : ftp://ftp.acer-euro.com/Notebook/Predator/G9-793/RAID_Tool.zip

J’ai bien essayé mais… la version de mon pilote est trop récente.

J’ai aussi tenté de le mettre à une ancienne version, de désinstaller l’application Intel RST etc… même résultat !!!

J’ai fini par contacter le support via le chat, ils répondent rapidement, super !… mais il me donne la même procédure qu’au début, faire ALT + F10 2 fois et restaurer… Arghhh !!!

Oui, là je commence à stresser un peu (beaucoup !!!) plus j’avoue, je me voyais déjà remballer le laptop et le renvoyer chez Acer…

Solution qui fonctionne (enfin !)

On y arrive ! Désolé, je n’ai pas beaucoup de screenshot, il faut bien suivre la procédure décrite. Je ne pensais pas rencontrer tous ces problèmes aussi…Bon, ce forum (Update le 16/05/2020, le lien ne semble plus fonctionner) m’a permis de venir à bout du problème, ouf. L’idée est de modifier l’exécutable de l’utilitaire RAID en lui indiquant que notre version de pilote est compatible.

Avant toute chose, si vous aviez joué dans le BIOS comme moi au préalable, il faudrait mieux remettre les réglages par défaut : F2, F9 puis F10

1/ Notez le nom du volume que vous avez défini (Volume_0000 par défaut), à droite dans l’interface Intel RST sous « Affichage du système de stockage »

2/ Téléchargez l’application RAID chez Intel en version 13.2 et dé-zippez-la à la racine de votre lecteur C:\ https://downloadcenter.intel.com/download/24310/Intel-Rapid-Storage-Technology-Intel-RST-Command-Line-Interface-CLI

UPDATE le 16/05/2020 : Voici le fichier car il ne semble plus disponible chez Intel, lien non fonctionnel (Merci ABDOUL Raza) :

3/ Toujours dans le répertoire « RST13.2.0.1016_CLI_Tools », dé-zippez également le dossier « x64 » (pour la version 64 bits bien-sur)

4/ Téléchargez l’application HxD et installez-la : https://mh-nexus.de/downloads/HxDSetupFR.zip

5/ Lancez l’application HxD, ouvrez le fichier nommé « rstcli64.exe », modifiez la valeur de l’offset 0x75FE1 à 84 (au lieu de 85 par défaut) et sauvegardez :

6/ Maintenant redémarrez le PC en mode invite de commandes (CMD), une petit astuce pour cela :

  • cliquez sur le logo Windows (en bas à gauche de l’écran),
  • puis sur le bouton d’alimentation,
  • et là faites SHIFT + Redémarrer
  • Choisir : Dépannage / Options avancées / Invite de commandes

7/ Une fois dans la fenêtre CMD :

Attention, à cette étape si vous aviez opté pour un RAID 0 (striping) au départ vous allez perdre toutes vos données !!! Mais pas le choix. D’où l’intérêt de sauvegarder vos données avant sur un support externe.

  • c: + Enter
  • cd RST13.2.0.1016_CLI_Tools
  • cd x64
  • Et maintenant la commande magique : 
rstcli64.exe --manage --delete [Votre nom de volume de l'étape 1/] + Enter

Si tout va bien, vous devriez avoir un message de succès.

8/ Vérifier que vous pouvez voir à nouveau le second disque :

  • Toujours dans l’invite de commandes, tapez diskpart, puis list disk :

Yes !

9/ Ce n’est pas fini, il faut maintenant nettoyer le disque avec l’utilitaire diskpart toujours :

  • Tapez diskpart
  • puis list disk et identifiez bien l’ID correspondant au disque à supprimer (1 certainement)
  • ensuite faites select disk [ID du disque à effacer] ne pas se tromper de disque !!!
  • enfin tapez clean c’est suffisant et instantané. Vous pouvez également taper clean all mais ce sera beaucoup plus long, c’est un effacement sécurisé

10/ Dernière étape, il vous suffit de formater votre disque avec l’utilitaire « Gestion du disque » :

  • Clic droit sur le logo Windows et choisissez « Gestion du disque« 
  • Puis clic droit sur le lecteur à formater (probablement D:) et faites Formater… (choississez le système de fichiers qui vous convient le mieux)

Voilà, c’est fini ! Le second disque est enfin visible et utilisable, ouf !

05 Fév

Authentification RADIUS sous Linux OS Debian (PAM)

Introduction

Dans ce 1er article nous verrons ensemble comment nous authentifier sur un serveur Linux en nous appuyant sur le protocole RADIUS (pour Remote Authentification DIal-in User Service, protocole AAA).

Il s’agit plus d’une découverte du « système » PAM (Pluggable Authentication Modules) car son implémentation peut devenir relativement complexe. Il peut notamment permettre la mise en place de diverses stratégies et mécanismes d’authentification comme LDAP, kerberos, lecteur d’empreinte digital etc… PAM fait également office d’API, de librairie… Ce qui ouvre beaucoup de possibilités aux développeurs et différents langages de programmation.

Si vous utilisez déjà un serveur d’annuaire Microsoft pour authentifier vos utilisateurs en entreprise (Active Directory), l’intérêt sera de pouvoir se baser sur ce dernier pour authentifier de la même manière les linuxiens 😉

Cela permet de faciliter la gestion des utilisateurs (une seule base de données), d’augmenter le niveau de sécurité et d’apporter plus de confort à l’utilisateur final.

Nous nous attarderons un peu sur la partie débogage que je trouve intéressante.

Pré-requis

  • Un serveur RADIUS opérationnel avec les règles qui vont bien comme FreeRADIUS ou NPS Server de Microsoft
  • Un serveur Linux sur une architecture Debian assez récente (Debian 8 ou Ubuntu 16.04 par exemple)
  • Un compte utilisateur ayant un accès avec privilèges (via sudo ou root directement)
  • Un accès console SSH ou un terminal
  • Un éditeur de texte comme vi
  • Un accès Internet
  • Un serveur Active Directory Microsoft

Installation et configuration du module PAM

Important: Assurez-vous de garder un shell ouvert durant les opérations, afin de vous assurer de toujours avoir la main et de faire un rollback en cas de soucis

Nous installons la librairie RADIUS en premier lieu :

sudo apt-get update && sudo apt-get upgrade
sudo apt-get install libpam-radius-auth

Nous devons ensuite créer les comptes utilisateurs sur le serveur Linux. Ils doivent strictement correspondre au logon name c.-à-d. au champ « sAMAccountName » dans l’annuaire :

sudo useradd -s /bin/bash -m -G sudo admin

A noter que l’on ne créé pas de mot de passe pour cet utilisateur.

On modifie les propriétés du fichier de configuration de la librairie ainsi que les droits associés. Par sécurité, il ne doit appartenir qu’au compte root en lecture/écriture :

sudo chown root /etc/pam_radius_auth.conf
sudo chmod go-rwx /etc/pam_radius_auth.conf

On édite ce fichier de configuration et on ajoute notre serveur RADIUS dans la section adéquate :

sudo vi /etc/pam_radius_auth.conf
# server[:port] shared_secret      timeout (s)
#127.0.0.1      secret             1
[adresse IP du serveur RADIUS] :1812     [secret/mot de passe partagé]    60

Suivant la version de votre serveur RADIUS, vous devrez peut-être mettre le port UDP 1645 à la place de UDP 1812. A noter qu’il est préférable d’augmenter le timeout à 60 secondes, notamment si vous utilisez du 2FA. Pour laisser le temps aux usagers de se connecter si leur connexion n’est pas bonne.

Autorisons maintenant l’authentification par le protocole RADIUS en SSH. Nous allons pour cela éditer le fichier suivant et ajouter la ligne qui commence par « auth… » au tout début, juste avant le ligne « @include common-auth » :

sudo vi /etc/pam.d/sshd
# Standard Un*x authentication.
auth        sufficient     /lib/security/pam_radius_auth.so
@include common-auth

Petite explication sur cette ligne :

auth = permet la vérifier l’identité de l’utilisateur lors de la connexion

sufficient = cela indique que si le test d’authentification réussi (utilisateur existant dans l’annuaire et mot de passe correct), le traitement s’arrête là.

/lib/security/pam_radius_auth.so = chemin vers la librairie utilisée, RADIUS dans notre cas

En effet, ce fichier, et un fichier « PAM » de manière générale,  comprend un séquencement d’opérations qui sont traitées successivement sur conditions (échec ou réussite). Cela représente une « pile » de règles en quelque sorte.

Pour plus de détails et d’explications claires, je vous invite à vous rendre sur ce site : http://debian-facile.org/doc:systeme:pam

A ce stade, un administrateur linux pourra s’authentifier mais il n’aura pas de privilèges. On doit donc éditer le fichier suivant et ajouter la ligne qui commence par « auth… » au tout début, juste avant le ligne « @include common-auth » :

sudo vi /etc/pam.d/sudo
# Standard Un*x authentication.
auth        sufficient     /lib/security/pam_radius_auth.so
@include common-auth

Et enfin, on doit autoriser l’administrateur à changer de compte utilisateur si besoin. Aussi, on va donc éditer le fichier suivant et cette fois on ajoute la ligne qui commence par « auth… » en fin de fichier, juste avant le ligne « @include common-auth » :

sudo vi /etc/pam.d/sudo
# The standard Unix authentication modules, used with
# NIS (man nsswitch) as well as normal /etc/passwd and
# /etc/shadow entries.
auth        sufficient     /lib/security/pam_radius_auth.so
@include common-auth

La partie configuration est terminée. Passons à la phase de test !

Tests et débogage

Si tout va bien, vous devriez pouvoir vous connecter en SSH avec votre compte Active Directory et voir apparaître le prompt :

Last login: Wed Feb 7 14:25:01 2018 from mon_pc.mon_domaine.corp
admin@mon_serveur-01:~$

On vérifie que notre compte a bien les privilèges en appelant une commande non accessible pour un utilisateur sans droit :

admin@mon_serveur-01:~$ sudo ifconfig
[sudo] password for admin:
eth0 Link encap:Ethernet HWaddr 00:50:13:37:05:34
  inet addr:10.66.0.200 Bcast:10.66.0.255 Mask:255.255.255.0
  inet6 addr: fe80::250:56ff:fe85:6ffb/64 Scope:Link
  UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
  RX packets:109443470 errors:0 dropped:1 overruns:0 frame:0
  TX packets:18550308 errors:0 dropped:0 overruns:0 carrier:0
  collisions:0 txqueuelen:1000
  RX bytes:10289511895 (9.5 GiB) TX bytes:2060556027 (1.9 GiB) 

De la même manière vous devriez être en mesure de passer root et changer d’utilisateur :

admin@mon_serveur-01:~$ sudo su (votre mot de passe)
root@mon_serveur-01:/home/admin#
admin@mon_serveur-01:~$ su root (mot de passe root cette fois)
root@mon_serveur-01:/home/admin#

En cas de soucis, vous avez la possibilité d’activer le mode debug. Pour cela, il faut ajouter le mot clé « debug » comme ici dans le fichier « /etc/pam.d/sshd » (mais applicable dans tout fichier « PAM ») :

auth sufficient /lib/security/pam_radius_auth.so debug

Assurez-vous ensuite que votre serveur log correctement les messages en mode « debug » dans un fichier de logs, qui est le mode le plus bavard.

Si ce n’est pas le cas, ajoutez ce fichier dans le répertoire rsyslog, service installé par défaut normalement (remplaçant de syslog, sinon installez-le avec « sudo apt-get install rsyslog« ) :

sudo vi /etc/rsyslog.d/80-debug.conf

Puis ajoutez ceci dedans :

$template debug-mode,"/var/log/%hostname%-debug.log"
*.* ?debug-mode

Cela aura pour effet de rediriger/d’écrire l’ensemble des messages du serveur dans un fichier qui aura comme nom le nom du serveur: mon_serveur-01-debug.log

Pour que le changement soit pris en compte, il faut relancer le service rsyslog :

sudo systemctl restart rsyslog.service

Ou suivant votre gestionnaire de système :

sudo service rsyslog restart

En enfin, affichez les logs à l’écran en temps réel grâce à la commande tail -f et en filtrant les messages :

tail -f /var/log/mon_serveur-01-debug.log | grep sshd

Ici j’ai rentré un utilisateur qui est inconnu sur le serveur Linux et dans l’Active Directory (j’ai retiré l’horodatage pour une meilleure lecture) :

sshd[31232]: Invalid user le_matou from 192.168.2.200
sshd[31232]: input_userauth_request: invalid user le_matou [preauth]
sshd[31232]: pam_radius_auth: Got user name le_matou
sshd[31232]: pam_radius_auth: Sending RADIUS request code 1
sshd[31232]: pam_radius_auth: Got RADIUS response code 3
sshd[31232]: pam_radius_auth: authentication failed
sshd[31232]: pam_unix(sshd:auth): check pass; user unknown
sshd[31232]: pam_unix(sshd:auth): authentication failure; logname= uid=0 euid=0 tty=ssh ruser= rhost=mon_pc.mon_domaine.corp
sshd[31232]: Failed password for invalid user le_matou from 192.168.2.200 port 21962 ssh2
sshd[31232]: Connection closed by 192.168.2.200 [preauth]

On voit que le système détecte d’emblée que le compte utilisateur n’existe pas sur le serveur puis que le serveur RADIUS rejette l’utilisateur.

Un autre cas où cette fois l’utilisateur existe bien sur le serveur Linux (avec un mot de passe) mais pas dans l’Active Directory :

sshd[26457]: pam_radius_auth: Got user name le_matou
sshd[26457]: pam_radius_auth: Sending RADIUS request code 1
sshd[26457]: pam_radius_auth: Got RADIUS response code 3
sshd[26457]: pam_radius_auth: authentication failed
sshd[26457]: Accepted password for le_matou from 192.168.2.200 port 22070 ssh2
sshd[26457]: pam_unix(sshd:session): session opened for user le_matou by (uid=0)

Cela fonctionne mais grâce à l’authentification locale de PAM dans ce cas. Cela pourrait être utile en cas de défaillance ou d’inaccessibilité du ou des serveurs RADIUS configuré(s). Soit vous avez un compte utilisateur de « secours » (que vous conserveriez soigneusement dans votre KeePass 😉 ), soit vos utilisateurs utilisent un mot de passe « de secours », ce que je ne conseille pas.

Côté serveur RADIUS on verra ce type d’événement lors d’un rejet (ici une log d’un serveur NPS de Microsoft, le client utilise un PC sous Windows 10 donc pas de client NAP) :

User:
Security ID: S-1-0-0
Account Name: le_matou
Account Domain: DOMAINE
Fully Qualified Account Name: DOMAINE\le_matou
Client Machine:
 Security ID: S-1-0-0
 Account Name: -
 Fully Qualified Account Name: -
 OS-Version: -
 Called Station Identifier: -
 Calling Station Identifier: mon_serveur-01.mon_domaine.corp

NAS:
 NAS IPv4 Address: 127.0.0.1
 NAS IPv6 Address: -
 NAS Identifier: sshd
 NAS Port-Type: Virtual
 NAS Port: 8206

RADIUS Client:
 Client Friendly Name: SERVER_IN_10.66.0.0/24
 Client IP Address: 10.66.0.200

Authentication Details:
 Connection Request Policy Name: Request SERVER_IN_10.66.0.0/24
 Network Policy Name: -
 Authentication Provider: Windows
 Authentication Server: mon_serveur_RADIUS.mon-domaine.corp
 Authentication Type: PAP
 EAP Type: -
 Account Session Identifier: -
 Logging Results: Accounting information was written to the local log file.
 Reason Code: 16
 Reason: Authentication failed due to a user credentials mismatch. Either the user name provided does not map to an existing user account or the password was incorrect.

Il existe également un petit utilitaire bien pratique développé par FreeRADIUS (je crois) qui s’appelle « radtest ». Il s’installe de cette manière :

sudo apt-get install freeradius-utils

Il suffit ensuite de taper la commande suivante (pensez à vider votre historique bash ensuite avec « history -c ») :

radtest -x -4 "compte utilisateur AD" "mot de passe AD" [addresse ip/fqdn du serveur radius]:1812 0 "secret partagé (mot de passe)"

Suivant la version de votre serveur RADIUS, vous devrez peut-être mettre le port UDP 1645 à la place de UDP 1812.

Voici une trace lorsque le test fonctionne :

Sending Access-Request of id 93 to mon_serveur_RADIUS.mon-domaine.corp port 1812
 User-Name = "admin"
 User-Password = "***********"
 NAS-IP-Address = 127.0.0.1
 NAS-Port = 0
 Message-Authenticator = 0x00000000000000000000000000000000
rad_recv: Access-Accept packet from host mon_serveur_RADIUS.mon-domaine.corp port 1812, id=93, length=202
 Marque-Exec-Privilege = 3
 Marque-AVPair = "web-administrative-role=Manager"
 Filter-Id = "Marque:version=1:mgmt=su:policy=SYS_ADMIN_AAA"
 Login-Service = 50
 Service-Type = Administrative-User
 Class = 0x89d4084f00006543102000a0a047900000000789764a6f44df9d01d3993c0951af0700000000000353bd
 MS-Link-Utilization-Threshold = 50
 MS-Link-Drop-Time-Limit = 120

Cela permet notamment de voir les attributs de l’utilisateur.

Important : Une fois le débogage terminé, pensez à commenter (# en début de ligne) les 2 lignes du fichier de configuration rsyslog et relancez le service. Avec le temps, vous risquez d’avoir un TRÈS gros fichier. Sinon, utilisez le service logrotate afin d’archiver et compresser les messages.

Le mot de la fin

Voilà, c’est tout pour cet article. J’espère avoir pu aider ou éclairer quelques personnes 😉

J’ajouterai que par sécurité et redondance, il est préférable d’avoir aux moins 2 serveurs RADIUS configurés. Utile lors des maintenances, ce sera transparent pour les utilisateurs.

Comme indiqué en introduction, il s’agit d’une « simple » introduction. Nous pourrions aller plus loin en gérant le changement de mot de passe, la création automatique des répertoires à la première connexion etc…