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

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 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

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

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

vendredi 29 mars 2013

Adobe Flash Player

Voici les liens pour télécharger directement les exécutable du plugin flash depuis le site d'Abobe :

Windows
Mac OsX
Linux (ce sera la dernière version stable)

Voici le lien pour vérifier les dernières versions en date.

EDIT : Voici la page de téléchargement direct du site d'Abobe. Trouvé après la création de ce billet ... T.T

mercredi 19 décembre 2012

Configurer l'authentification SSH par clé sous CentOS/Redhat 6.*

Il est généralement utile de configurer une machine pour accepter l'authentification SSH par clé. Ce genre d'authentification est assez simple à mettre en place mais dans le cas des dernières versions de Redhat et CentOS, versions 6 et supérieures, il y a quelques petits pièges qui peuvent vite vous faire péter une pile.

Lire la suite...

mardi 18 septembre 2012

Les logiciels Adobe en standalone

Puisque chaque fois que j'en ai besoin je dois faire une recherche Google, voici une bonne fois pour toutes l'emplacement des logiciels Adobe en version offline (standalone) :

ftp://ftp.adobe.com/pub/adobe/reader/

mardi 4 septembre 2012

Désactiver IPV6 sur Debian/Ubuntu

Il arrive que l'on ne souhaite pas avoir d'ipv6 sur une machine ou que ce dernier nous pose des soucis, car un service l'utilise au lieu de l'ipv4. 

Lire la suite...

samedi 7 juillet 2012

Installer Windows depuis un serveur PXE Linux

Voyons comment installer Windows depuis un démarrage PXE. Ceci revient en fait à lancer l'installation de Windows (7 par exemple) depuis un environnement WinPE personnalisé de la manière suivante :
- intégration du pilote Realtek Gigabit PCIe, de plus en plus répandu et indispensable pour lancer l'installation par le réseau ;
- une fois WinPE chargé, montage du media en CIFS contenant le répertoire "source" du média d'installation et lancement de l'assistant.

Lire la suite...

jeudi 5 juillet 2012

Utilisateurs et domains virtuels avec Postfix et Dovecot

Dans un article précédent, j'ai expliqué comment mettre en place un serveur de messagerie. Nous allons ici ajouter un support MySQL pour profiter des alias et domaines virtuels; mais aussi de l'authentification basée dessus.

Lire la suite...

lundi 2 juillet 2012

Serveur mail avec Postfix et dovecot

Nous allons mettre en place un serveur mail relativement basique avec pour MTA Postfix et MDA Dovecot. L'accès à la boite mail se fera par un client lourd (genre thunderbirds) via IMAP/IMAPS avec une authentification sasl/Plain/TLS pour s'y connecter de n'importe où. Les utilisateurs seront les utilisateurs du serveurs de messagerie.

Lire la suite...

- page 1 de 3