lundi 30 avril 2018

Installer Windows 10 depuis un PXE Linux

Un certain temps s'est écoulé depuis la rédaction de ce billet expliquant comment installer Windows sur un PXE Linux. Il existe désormais une méthode plus simple grâce au bootloader wimboot, développé par le projet iPXE.

Sur un machine sous Windows, installer le Windows 10 ADK (Assessment and Deployment Kit). Copier les éléments suivants dans un répertoire acessible en TFTP :

  • C:\Program Files (x86)\Windows Kits\10\Assessment and Deployment Kit\Windows Preinstallation Environment\amd64\Media\Boot\boot.sdi
  • C:\Program Files (x86)\Windows Kits\10\Assessment and Deployment Kit\Windows Preinstallation Environment\amd64\Media\Boot\BCD
  • C:\Program Files (x86)\Windows Kits\10\Assessment and Deployment Kit\Windows Preinstallation Environment\amd64\en-us\winpe.wim
  • wimboot


Ajouter un fichier "startnet.cmd" avec la liste des commandes à lancer au démarrage :

wpeinit
net use Y: \\boot\windows10 /user:user pass
Y:\setup.exe


Pour du PXElinux, ajouter une entrée dans le menu :

# Installation de Windows 10
LABEL win10installer
        MENU LABEL Installation de Windows 10 Professionnel 64 bits
        COM32 linux.c32
        APPEND win10installer/wimboot initrdfile=win10installer/startnet.cmd,win10installer/BCD,win10installer/boot.sdi,win10installer/boot.wim

Attention : il faut avoir une version de pxelinux assez récente pour pouvoir lancer wimboot !

dimanche 5 février 2017

Debian : The attempt to mount a file system with type ext4 ... at / failed.

En installant Debian depuis un serveur PXE (netboot), il arrive parfois que l'installeur n'arrive pas à monter la partition où installer l'OS :

The attempt to mount a file system with type ext4 [...] at / failed.


L'explication se trouve ici : https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=780812

This is due to kernel and module version mis-match in debian-installer [...] which was built with an older kernel version


Solution : mettre à jour debian-installer sur le serveur PXE, tout simplement. Il suffit de récupérer les derniers noyau et initrd en date :

  • http://ftp.fr.debian.org/debian/dists/stable/main/installer-amd64/current/images/netboot/debian-installer/amd64/linux
  • http://ftp.fr.debian.org/debian/dists/stable/main/installer-amd64/current/images/netboot/debian-installer/amd64/initrd.gz

lundi 25 juillet 2016

Reverse proxy Apache pour RDP over HTTPS (Windows Server 2008 R2)

Générer un certificat autosigné :

openssl req -newkey rsa:2048 -nodes -keyout myrdp.mydomain.key -x509 -days 365 -out myrdp.mydomain.crt

openssl pkcs12 -inkey myrdp.mydomain.key -in myrdp.mydomain.crt -export -out myrdp.mydomain.pfx


Importer le certificat dans le magasin "Personnel" du serveur RDS et désactiver tous les rôles sauf "Authentification du serveur".

Installer le rôle "services de bureau à distance" avec les services de rôle "gestionnaire de passerelle"


Config Apache :

<VirtualHost *:443>
        ServerName myRDP.domain
        SSLEngine On
        SSLCertificateFile /etc/apache2/ssl/myrdp.crt
        SSLCertificateKeyFile /etc/apache2/ssl/myrdp.key
        CustomLog ${APACHE_LOG_DIR}/myrdp.log combined
        ErrorLog ${APACHE_LOG_DIR}/myrdp.log
	#LogLevel info proxy_msrpc:trace2

	SSLProxyEngine On
	SSLProxyCheckPeerCN Off
	SSLProxyCheckPeerName Off
	# Enable RPC over HTTPS
	OutlookAnywherePassthrough On
	#LogLevel info proxy_msrpc:trace2
	
        ProxyRequests Off
        <Proxy *>
                Order deny,allow
                Allow from all
        </Proxy>
        ProxyPass / https://RDPServer/
        ProxyPassReverse / https://RDPServer/
</VirtualHost>

<VirtualHost *:80>
        ServerName myrdp.domain
        Redirect / "https://myrdp.domain/"
        CustomLog ${APACHE_LOG_DIR}/myrdp.log combined
        ErrorLog ${APACHE_LOG_DIR}/myrdp.log
</VirtualHost>

Issue : le certificat doit être reconnu comme CA sur le client.

mercredi 6 avril 2016

BSOD sur un contrôleur de domaine après un déplacement de partition

Si un contrôleur de domaine ne boote plus après un déplacement de partition (GParted inside)...

Démarrer en DSRM, et vérifier que la clé HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\NTDS\Parameters\DS Drive Mapping est correcte.
On peut connaître le GUID des volumes avec la commande PowerShell suivante :

GWMI -namespace root\cimv2 -class win32_volume

samedi 13 juin 2015

Désinstaller l'assistant "Obtenir Windows 10"

Pour virer l'assistant "Obtenir Windows 10" => désinstaller le KB3035583

lundi 18 mai 2015

Échec de l'installation de Mint 17 depuis un live-PXE

Suite à ce billet, je me suis rendu compte que l'installateur plante s'il est lancé depuis un "live-PXE".
À l'origine du problème, la procédure de fabrication du fichier de configuration d'APT (gestionnaire de paquets), qui n'est pas adaptée à un "live-PXE". Néanmions, voici comment le contourner.

Solution 1 : one-shot

Une fois Mint démarré, éditer /usr/lib/ubiquity/apt-setup/apt-setup et trouver la ligne suivante :

mv $ROOT/etc/apt/sources.list.new $ROOT/etc/apt/sources.list

La remplacer par ceci :

if [ -f $ROOT/etc/apt/sources.list.new ]; then
	mv $ROOT/etc/apt/sources.list.new $ROOT/etc/apt/sources.list
fi

Attention : cette modification n'est pas enregistrée. Elle doit donc être faite à chaque redémarrage.

Solution 2 : correction permanente

Cette solution consiste à appliquer le patch ci-avant à l'image SquashFS. Pour ceci, installer les outils squashfs :

apt-get install squashfs-tools

Décompresser le squashfs de Mint :

unsquashfs casper/filesystem.squashfs

Appliquer le patch indiqué précédemment.
Recompresser le squashfs :

mksquashfs squashfs-root/ filesystem.squashfs -noappend -always-use-fragments


3... 2... 1... bootez !

jeudi 23 avril 2015

Script Bash pour afficher un arbre

Voici un petit script permettant de présenter sous forme d'arbre un fichier CSV sous la forme : enfant;parent

Lire la suite...

mardi 7 octobre 2014

Sauvegarde Rsync over SSH sur QNAP TS-269L

Dans une récente mise à jour du firmware, QNAP a ajouté la possibilité d'utiliser Rsync sur SSH pour les sauvegardes. Voici comment paramétrer une sauvegarde vers un serveur Debian.

Sur le serveur de destination

  • Installer rsync

apt-get install rsync

  • Activer le démarrage dans /etc/default/rsync
RSYNC_ENABLE=true
  • Configurer une section dans /etc/rsyncd.conf
[backup]
path = /home/user/MyQNAP
use chroot = no
read only = no
list = yes
uid = user
gid = user
  • (Re)démarrer rsyncd

service rsync restart



Sur le NAS, dans Backup Station :

  • Créer une réplication Rsync dans le Backup Manager.
  • Mettre n'importe quoi en passwd (mais pas vide)
  • Cocher "enable encryption", port 22
  • Décocher "execute backup immediately"



Se connecter en SSH sur le NAS

  • Copier la clé publique de l'utilisateur "admin" vers le serveur de destination. Attention à ne pas écraser un éventuel fichier existant /!\

scp .ssh/id_rsa.pub user@192.168.1.250:.ssh/authorized_keys

On en profite au passage pour enregistrer la clé du serveur de sauvegarde (TOFU). Note à ce sujet : il semble que sur le NAS, le fichier .ssh/known_hosts est remis à zéro si un échec de connexion survient.


Sur le serveur :

  • Créer /home/user/rsyncd.conf

ln -s /etc/rsyncd.conf /home/user/

  • Arrêter et désactiver le service rsync dans /etc/default/rsync

service rsync stop

RSYNC_ENABLE=false

mardi 22 juillet 2014

SFTP en Chroot

Pour réaliser cette recette, il nous faut un utilisateur (Lazare) et sshd. Ce dernier pourra utiliser le SFTP, mais pourra pas se connecter en ssh au serveur. De plus il sera restreint (jail) dans sont répertoire utilisateur (home)

Nous commençons par crée un groupe dédié au utilisateurs SFTP :
# groupadd sftp_users

Si Lazare n'existe pas, nous le crééons :
# useradd -G sftp_users -s /sbin/nologin lazare # passwd lazare

Sinon :
usermod –G sftp_users -s /sbin/nologin

* pour changer le répertoir utilisateur, utiliser l'option -d dans les deux cas précédents.

Nous éditons ensuite le fichier de configuration ssh /etc/ssh/sshd_config.

Il faut commenter la ligne :
#Subsystem sftp /usr/libexec/openssh/sftp-server

et ajouter les options suivantes :
Subsystem sftp internal-sftp
Match Group sftp_users
X11Forwarding no
AllowTcpForwarding no
ChrootDirectory %h
ForceCommand internal-sftp


Pour finir cette étape, nous redémarrons le service : # service sshd restart

Nous devons ensuite attribuer les droits sur le dossier utilisateurs :
# chmod 755 /home/lazare
# chown root /home/lazare
# chgrp -R sftp_users /home/lazare
Le tour est joué :)

lundi 21 juillet 2014

Nommer une carte ethernet

Pour corriger le nom, parfois bizarre, d'une carte Ethernet, il est possible de le remplacer durablement par le nom de votre choix.

Cela fonction avec les systèmes qui utilisent un fichier de configuration persistant de type : /etc/udev/rules.d/70-persistent-net.rules

il suffit de modifier la variable : NAME="nom_eth"

Après redémarrage le tour est joué.

Partages Samba

Voici une configuration rapide pour un serveur samba :
dans le /etc/samba/smb.conf
[global]
workgroup = WORKGROUP
server string = Samba Server %v
netbios name = debian
security = user
map to guest = bad user
dns proxy = no
### Partages
[Fouretout]
path = /mon/dossier
browsable =yes
writable = yes
guest ok = yes
read only = no

Une correction des droits d'accès :
# chmod -R 0755 /mon/dossier/
# chown -R nobody:nogroup /mon/dossier/

lundi 7 juillet 2014

Si toi y en a parler Windows

Petite note pour l'utilisation de certains outils en ligne de commande Windows ...

Lire la suite...

vendredi 13 juin 2014

Supprimer la configuration iSCSI d'un ESX

Il arrive que ce soit la merde sur genre d'adaptateur, il est alors nécessaire de repartir de zéro ...

Lire la suite...

lundi 10 février 2014

Rsync (avec transport SSH) sur un autre port que le 22

rsync -e 'ssh -p 42'
(Sinon j'oublie !)

lundi 14 octobre 2013

Mise à jour d'une base Postgres sous Debian

Supprimer la grappe 9.1 créée par défaut :

pg_dropcluster--stop 9.1 main

Mettre à jour l'actuelle grappe :

pg_upgradecluster 8.4 main

Supprimer l'ancienne grappe :

pg_dropcluster 8.4 main

Désinstaller le moteur 8.4 :

apt-get autoremove --purge postgresql-8.4 postgresql-client-8.4

jeudi 10 octobre 2013

Pidgin : "Authentification Windows Live ID : réponse non valide."

Depuis la fusion MSN-Skype, les comptes MSN peuvent se désactiver régulièrement. Il suffit de s'identifier sur https://login.live.com/ une fois pour réactiver le compte.

samedi 14 septembre 2013

Ce billet n'existe pas.

O_O

ruliane@testsrv01:~$ cat /etc/debian_version
7.1
ruliane@testsrv01:~$ head -1 /etc/udev/links.conf
# This file does not exist. Please do not ask the Debian maintainer about it.
ruliane@testsrv01:~$

mardi 25 juin 2013

Mise à jour Squeeze -> Wheezy

Ce billet porte mal son nom. En effet, il est censé recueillir mes notes prises lors de la mise à jour de mes serveur de Debian 6 (Squeeze) à Debian 7 (Wheezy) et surtout les surprises que j'ai eues. En fait, les cinq paragraphes ci-dessous traitent de Munin, car tout le reste a fonctionné ou, au moins, était documenté (en amont ou lors de la migration).

Munin : racine en double sur le plugin df

La racine apparaît deux fois sur le plugin df. Pour corriger, éditer le fichier /etc/munin/plugin-conf.d/munin-node et, dans la section [df*], exclure le rootfs :

[df*]
env.exclude none unknown iso9660 squashfs udf romfs ramfs debugfs rootfs
env.warning 92
env.critical 98


Munin : erreur du plugin apt_all

Le plugin apt_all ne fonctionne plus. La tâche cron de mise à jour renvoie des messages d'erreur :

E: The value 'testing' is invalid for APT::Default-Release as such a release is not available in the sources
E: The value 'unstable' is invalid for APT::Default-Release as such a release is not available in the sources


Après investigation, il s'agit apparemment d'un problème similaire à celui-ci : Bug#702442: munin-node: apt_all uses different state files for cron job and as a plugin.

Pour corriger, éditer le fichier /usr/share/munin/plugins/apt_all et modifier la variable "@releases" :

#my @releases = ("stable", "testing","unstable");
my @releases = ("stable");

Puis définir dans /etc/munin/plugin-conf.d/munin-node la variable d'environnement MUNIN_PLUGSTATE :

[apt_all]
env.MUNIN_PLUGSTATE /var/lib/munin-node/plugin-state/root/


Munin - alertes Munin et plugin ntp_states

Certains plugins Munin se traînent lamentablement, à tel point que le timeout expire, comme le signale le journal :

2013/06/11-09:10:59 [30489] Service 'ntp_states' timed out.
2013/06/11-09:11:01 [30489] Service 'open_files' timed out.
2013/06/11-09:11:02 [30489] Node side timeout while processing: 'fetch open_files'
[...]
2013/06/11-09:15:59 [30772] Service 'postfix_mailvolume' timed out.
2013/06/11-09:16:01 [30772] Service 'postfix_mailvolume' timed out.
2013/06/11-09:16:02 [30772] Node side timeout while processing: 'config proc_pri'

On se retrouve avec des graphiques en pointillés.
Explication du problème :
J'avais désactivé IPv6 sur mon serveur mail. (Ou je croyais l'avoir fait.) Lors de la mise à jour, IPv6 a été réactivé et le démon NTP a choisi comme serveurs de référence des serveurs en IPv6. Il faut savoir aussi que le plugin Munin ntp_state part de l'adresse IP des serveurs et effectue une requête DNS pour obtenir son nom. Et cette requête prenait beaucoup de temps et échouait ; je ne sais pas exactement pourquoi.
Pour contourner ce problème, deux possibilités. La première est simplement de désactiver de nouveau IPv6 :

  • sysctl net.ipv6.conf.all.disable_ipv6=1

Il est aussi possible de ne pas résoudre les adresses en modifiant le plugin. Dans /usr/share/munin/plugins/ntp_state, commenter les lignes 116 à 123 :

#        if ($packet) {
#                my @answer = $packet->answer;
#                foreach my $rr (@answer) {
#                        if ("PTR" eq $rr->type) {
#                                $host = $rr->ptrdname;
#                        }
#                }
#        }


Munin - erreurs "Use of uninitialized value ..."

Au passage, je me suis rendu compte que mes logs étaient remplis de cette erreur :

Use of uninitialized value in pattern match (m//) at /usr/share/perl5/Net/Server.pm line 600.

C'est le package libnet-server-perl qui est en cause. Il est encore en version 2.006 et ce bug n'est donc pas encore résolu : libnet-server-perl: Uninitialized value in pattern match spam. On peut appliquer le patch ou attendre que la version 2.007 soit mise sur les dépôts.

Munin - Erreur 404 lors de la consultation des graphiques

Après mise à jour de Munin (tout court, pas -node), je ne pouvais tout simplement plus accéder à l'interface de Munin : erreur 404. Pour cause, le lien vers le fichier de configuration avait sauté. Il m'a donc suffit de le refaire :

  • ln -s /etc/munin/apache.conf /etc/apache2/conf.d/munin.conf

vendredi 21 juin 2013

Windows Update : merci qui ?

2013-06-21 08:33:38:916   AU client reboot notification: user clicked Restart Later
2013-06-21 08:33:49:432   AU received handle event
2013-06-21 08:33:53:932   AU scheduling auto reboot check since no user is logged on and reboot is required.
2013-06-21 08:35:53:930   WARNING: Initiating reboot since no user logged on

Merci Microsoft...

EDIT (26/06/2013) : Vous en voulez encore ? http://support.microsoft.com/kb/970605

lundi 10 juin 2013

Configurer Asterisk avec Free

Activation du compte SIP

Avant toute chose, se connecter sur le site de Free et aller dans Téléphonie > Paramétrer mon compte SIP. Activer le compte SIP et rediriger les appels entrant vers le "téléphone SIP". Choisir un mot de passe, puis valider. Redémarrer la box (en Freebox v5).

Configuration d'Asterisk en interface web

On commence par configurer les informations classiques :
Type : SIP
Provider name : Un nom pour le trunk, par exemple "Freephonie"
Hostname : le serveur d'en face. Dans notre cas, "freephonie.net"
Username : l'identifiant, qui est le numéro de téléphone assigné par Free (souvent en 09xxxxxxxx)
Password : le mot de passe renseigné dans la première étape.

Une fois le trunk créé, il faut l'éditer pour remplir les champs suivants :
FromDomain : pour les appels sortants, doit être défini à "freephonie.net"
FromUser : pour les appels sortants, doit être votre numéro de téléphone au format international. Quelque chose comme "00339xxxxxxxx".
AuthUser : votre numéro de téléphone ("09xxxxxxxx")
insecure : very (recommandé)

Attention : sans FromUser et FromDomain, vous pourrez recevoir les appels mais pas en émettre.

Configuration d'Asterisk en CLI

Éditer /etc/asterisk/users.conf et ajouter une section :

[09xxxxxxxx]
host = freephonie.net
username = <numéro de téléphone>
secret = <mot de passe>
trunkname = Freephonie
context = <nom de votre contexte (p.ex : default) >
hassip = yes
registersip = yes
trunkstyle = voip
fromuser = <numéro au format international. ex : 00339xxxxxxxx>
authuser = <numéro de téléphone>
insecure = port,invite


Augmentation du "defaultexpiry"

Le temps d'expiration du REGISTER est par défaut à 120 secondes alors que Free refuse le ré-enregistrement avant 30 minutes. Pour éviter d'avoir plein de warnings dans les logs, on peut l'augmenter : éditer /etc/asterisk/users.conf et dans la section du trunk, ajouter :

[09xxxxxxxx]
[...]
defaultexpiry = 3600

- page 1 de 3