<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>RMFB &#8211; Read My F-Blog</title>
	<atom:link href="https://blog.angenieux.info/feed/" rel="self" type="application/rss+xml" />
	<link>https://blog.angenieux.info/</link>
	<description>Linux, Scripts &#38; Configurations</description>
	<lastBuildDate>Wed, 15 Nov 2017 14:10:51 +0000</lastBuildDate>
	<language>fr-FR</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	

<image>
	<url>https://blog.angenieux.info/wp-content/uploads/2017/10/cropped-favicon-32x32.png</url>
	<title>RMFB &#8211; Read My F-Blog</title>
	<link>https://blog.angenieux.info/</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>Gnome Keyring et autologin solutions</title>
		<link>https://blog.angenieux.info/linux/astuces/gnome-keyring-autologin-solutions/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=gnome-keyring-autologin-solutions</link>
					<comments>https://blog.angenieux.info/linux/astuces/gnome-keyring-autologin-solutions/?noamp=mobile#respond</comments>
		
		<dc:creator><![CDATA[Rémi ANGENIEUX]]></dc:creator>
		<pubDate>Mon, 23 Oct 2017 11:29:59 +0000</pubDate>
				<category><![CDATA[Astuces]]></category>
		<category><![CDATA[Gnome-Keyring]]></category>
		<category><![CDATA[Linux Mint]]></category>
		<category><![CDATA[Solution]]></category>
		<guid isPermaLink="false">https://blog.angenieux.info/?p=102</guid>

					<description><![CDATA[<p>Astuces pour corriger tout les problèmes lié a l'autologin et à gnome-keyring tel que "gnome-keyring-daemon ne réponds plus" ou bien l'obligation de rentrer son mot de passe sur chrome.</p>
<p>L’article <a rel="nofollow" href="https://blog.angenieux.info/linux/astuces/gnome-keyring-autologin-solutions/">Gnome Keyring et autologin solutions</a> est apparu en premier sur <a rel="nofollow" href="https://blog.angenieux.info">RMFB - Read My F-Blog</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<h1>Présentation de Gnome Keyring</h1>
<p>C&rsquo;est un porte clef de mot de passe. Vous avez un mot de passe principal pour déverrouiller votre porte clé. Une fois celui-ci déverrouillé vous pouvez récupérer tout les mots de passe que vous aurez stocker dans ce porte clé.<br />
Sur gnome il est automatiquement utilisé par Chromium, pgp et d&rsquo;autres&#8230;</p>
<p>Par défaut gnome-keyring verrouille le porte clé principal avec le mot de passe de votre session.</p>
<h1>Problèmes</h1>
<p>Tout ne fonctionne pas correctement avec l&rsquo;<strong>autologin</strong> des gestionnaire de session graphiques tel que <strong>lightdm</strong></p>
<h2>Demande d&rsquo;entrer son mot de passe</h2>
<p>Si vous avez configuré votre session en <em>autologin</em>. C&rsquo;est root qui va lancer votre session, et il ne connait pas votre mot de passe. Il ne peut donc pas déverrouiller votre trousseau de clé.</p>
<h2>Erreur lors de l&rsquo;arrêt de la machine</h2>
<p>En plus cela produit une erreur lors de l&rsquo;arrêt du PC : « gnome-keyring-daemon not responding ».<br />
Ce processus est lancé en tant que root, l&rsquo;utilisateur local ne peut donc pas tuer ce processus sans demander un <em>kill</em>.</p>
<h1>Solutions</h1>
<p>Toutes ces opérations sont a faire en étant connecté avec l&rsquo;utilisateur qui est en <em>autologin</em>. <strong>Jamais en root.</strong> (Sinon vous allez configurer gnome-keyring de root).</p>
<h2>Demande d&rsquo;entrer son mot de passe</h2>
<p>On va créer un script python qui va entrer votre mot de passe à votre place.</p>
<p class="warning">
Cette solution est pas très sécurisée. Serte le script sera accessible que par votre user. Mais cela n’empêche pas un virus, qui a prit le contrôle de votre user, de récupérer votre mot de passe. Je vous conseille donc de ne pas stocker votre mot de passe en clair.<br />
Faites attention surtout si votre user peut faire un <strong>sudo su</strong> !<br />
Il faut quand même noter que si vous avez un user en <em>autologin</em>, c&rsquo;est que n&rsquo;importe qui physiquement peut se passer pour cet user. Donc ses droits doivent être réduit au maximum.
</p>
<p>Fichier /home/<em>tonUtilisateur</em>/.keyring-unlocker.py</p>
<pre><code class="python">#!/usr/bin/python
import gnomekeyring
gnomekeyring.unlock_sync(None, 'tonMdp');</code></pre>
<p class="warning">
Il est aussi conseillé d&rsquo;utiliser des noms de fichiers qui ne comporte aucun signification. Cela permet de rendre plus difficile la détection de mot de passe par un virus.
</p>
<pre><code class="shell">chmod 700 /home/tonUtilisateur/.keyring-unlocker.py</code></pre>
<p>On va mainteant lancer ce script a chaque login de notre user :<br />
Fichier ~/.config/autologin/keyring-unlocker.desktop</p>
<pre><code>[Desktop Entry]
Type=Application
Exec=/home/tonUser/.keyring-unlocker.py
X-GNOME-Autostart-enabled=true
NoDisplay=false
Hidden=false
Name[fr_FR]=Keyring Unlocker
Comment[fr_FR]=Keyring unlock
X-GNOME-Autostart-Delay=0</code></pre>
<p><strong>Exec</strong> : Vous devez mettre le chemin entier. Il n&rsquo;est pas possible d&rsquo;utiliser <strong>$HOME</strong> ou <strong>~</strong><br />
&nbsp;</p>
<p class="warning">
Encore une fois je vous conseille de donner aucune significations a votre nom de fichier ainsi que ses commentaires .</p>
<p>Vérifiez que tout fonctionne :</p>
<pre><code class="shell">~/.keyring-unlocker.py
echo $?</code></pre>
<p>Si vous la commande <em>echo</em> vous renvoie un <strong>0</strong> c&rsquo;est que tout fonctionne.<br />
Si vous avez un <strong>Keyring IO exception</strong> cela veut dire que vous vous êtes trompé dans votre mot de passe.</p>
<h2>Erreur lors de l&rsquo;arrêt de la machine</h2>
<p>Si vous faites un :</p>
<pre><code class="shell">grep "gnome-keyring-daemon" /var/log/syslog</code></pre>
<p>Vous devez avoir quelque chose dans ce genre :</p>
<pre><code>cinnamon-session[1413]: WARNING: t+53,26576s: Unable to find desktop file 'gnome-keyring-daemon.desktop': Impossible de trouver un fichier de clés valide dans les répertoires de recherche</code></pre>
<p>Cela veut juste dire que <em>cinnamon-session</em> chercher un fichier <em>/home/tonUtilisateur/.config/autologin/gnome-keyring-daemon.desktop</em><br />
On va donc le créer :</p>
<pre><code>[Desktop Entry]
Type=Application
Exec=/usr/bin/gnome-keyring-daemon -r -d
Hidden=false
NoDisplay=false
X-GNOME-Autostart-enabled=true
Name=Gnome Keyring Daemon
Comment=Charge gnome keyring daemon
</code></pre>
<p>Les arguments <strong>-r</strong> permettent d&rsquo;arrêter toutes instances de <em>gnome-keyring-daemon</em> déjà lancées. L&rsquo;erreur vient enfaîte de là.<br />
Et le <strong>-d</strong> permet de lancer <em>gnome-keyring-daemon</em> en tant que daemon.</p>
<p>Il vous reste plus qu&rsquo;a redémarrer et tout est bon !</p>
<p>L’article <a rel="nofollow" href="https://blog.angenieux.info/linux/astuces/gnome-keyring-autologin-solutions/">Gnome Keyring et autologin solutions</a> est apparu en premier sur <a rel="nofollow" href="https://blog.angenieux.info">RMFB - Read My F-Blog</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://blog.angenieux.info/linux/astuces/gnome-keyring-autologin-solutions/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Installer Linux Mint en LAN/PXE</title>
		<link>https://blog.angenieux.info/linux/installer-linux-mint-lan-pxe/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=installer-linux-mint-lan-pxe</link>
					<comments>https://blog.angenieux.info/linux/installer-linux-mint-lan-pxe/?noamp=mobile#respond</comments>
		
		<dc:creator><![CDATA[Rémi ANGENIEUX]]></dc:creator>
		<pubDate>Mon, 23 Oct 2017 09:38:05 +0000</pubDate>
				<category><![CDATA[Linux]]></category>
		<category><![CDATA[Serveur]]></category>
		<category><![CDATA[Installation]]></category>
		<category><![CDATA[Linux Mint]]></category>
		<category><![CDATA[PXE]]></category>
		<category><![CDATA[TFTP]]></category>
		<guid isPermaLink="false">https://blog.angenieux.info/?p=99</guid>

					<description><![CDATA[<p>Etape par étape je vais vous expliquer comment installer Linux Mint via le réseau. Pratique pour des veilles machines !</p>
<p>L’article <a rel="nofollow" href="https://blog.angenieux.info/linux/installer-linux-mint-lan-pxe/">Installer Linux Mint en LAN/PXE</a> est apparu en premier sur <a rel="nofollow" href="https://blog.angenieux.info">RMFB - Read My F-Blog</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>Chez moi nous utilisons toujours un vieux PC, un vieux papy de 14/15 ans. Avec une installation très propre de Windows XP, cela fonctionnait bien. Surtout avec le boost de RAM, 2 Go. Sauf que de nos jours c&rsquo;est bien loin du minimum pour avoir un PC fluide. En plus, une barette de RAM a cramer. Il lui reste donc plus qu&rsquo;1,5 Go de RAM.</p>
<p>J&rsquo;ai donc voulus migrer ce petit PC sous Linux Mint. Le problème semble simple, graver une clée USB et hop on la met dans le PC et c&rsquo;est fini.</p>
<p>Oui, mais non. Les PC récents permettent de faire ça simplement, les anciens c&rsquo;est toujours plus complexe. Ils n’acceptent pas les même méthodes de <em>boot</em>.</p>
<p>J&rsquo;ai commencé par graver un DVD, changer le <em>boot order</em> de la machine et&#8230; Rien<br />
Je me suis rendus compte que ce BIOS acceptait l&rsquo;<strong>USB-CDROM</strong> et <strong>USB-FDD</strong>. J&rsquo;ai donc tenté l&rsquo;USB. J&rsquo;ai formaté ma clée USB via la CMD et j&rsquo;ai utilisé <a href="https://rufus.akeo.ie/">Rufus</a>, en utilisant les deux modes de copie du logiciel&#8230; Rien sur tout les ports USB de la machine.<br />
Je me suis donc dis, pourquoi pas le faire en <strong>Boot PXE</strong>. Bon déjà petit tricks, il faut penser a activer l&rsquo;alimentation de la carte Ethernet avant la séquence de boot. Sinon bah&#8230; ça fait rien.</p>
<h1>Préambule</h1>
<p>Je vais donc vous présenter ici comment installer un serveur PXE sur votre machine afin de permettre l’installation de Linux Mint sur une autre machine.<br />
Les procédures décrites ici partent du principe que c&rsquo;est une installation temporaire faite depuis un Live CD Linux Mint et que le réseau qui relis le serveur au client et vide de tout serveurs (DHCP entre autre, donc pas de Box). Typiquement un câble reliant le serveur au client.<br />
Si cela corresponds pas à votre configuration il suffira de changer certains chemins, et/ou modifier votre serveur DHCP pour qu&rsquo;il donne les informations vers votre serveur <a href="https://fr.wikipedia.org/wiki/Trivial_File_Transfer_Protocol">TFTP</a>.</p>
<h1>Présentation du boot PXE</h1>
<h2>Utilisation</h2>
<p>Cette technologie permet de démarrer (<em>booter</em>) une machine sur des ressources distantes qui vont êtres rapatriées à l&rsquo;aide tu protocole <a href="https://fr.wikipedia.org/wiki/Trivial_File_Transfer_Protocol">TFTP</a>. Cela est couramment utilisé par les admin sys car cela permet, couplé avec <a href="https://fr.wikipedia.org/wiki/Wake-on-LAN">Wake On Lan</a> de réinstaller des machines à intervalles réguliers. A chaque démarrage la machine va télécharger un fichier en <a href="https://fr.wikipedia.org/wiki/Trivial_File_Transfer_Protocol">TFTP</a> pour savoir si il doit réinstaller son système ou non. Si c&rsquo;est le cas, via <a href="https://fr.wikipedia.org/wiki/Trivial_File_Transfer_Protocol">TFTP</a> un second script va été télécharger pour lancer la procédure d&rsquo;installation. Sinon le script PXE va s&rsquo;arrêter et le boot normal va alors se faire.</p>
<h2>Fonctionnement</h2>
<p>Cette technologie se repose sur DHCP/BOOTP. Au démarrage, client va demander une adresse IP au serveur DHCP de son LAN. Ce dernier va lui proposer une adresse IP et fournir les informations de connexion au serveur <a href="https://fr.wikipedia.org/wiki/Trivial_File_Transfer_Protocol">TFTP</a>.<br />
Le client va utiliser les informations de connexion (IP/port/fichier à télécharger) pour communiquer avec le serveur <a href="https://fr.wikipedia.org/wiki/Trivial_File_Transfer_Protocol">TFTP</a>. (certains téléphones IP ont le nom du fichier à récupérer codé en dur).<br />
Une fois le fichier principal récupéré (un script, <em>pxelinux.0</em> en général pour du linux). Il va l’exécuter, et généralement télécharger de nombreuses dépendances pour installer un système pour démarrer un système.<br />
Comme <a href="https://fr.wikipedia.org/wiki/Trivial_File_Transfer_Protocol">TFTP</a> est un protocole simple(iste), il n&rsquo;est pas performant. On couple donc souvent <a href="https://fr.wikipedia.org/wiki/Trivial_File_Transfer_Protocol">TFTP</a> avec un protocole transfert de fichier. Dans le monde linux on utilise souvent <a href="https://fr.wikipedia.org/wiki/Network_File_System">NFS</a> mais il est tout à fait possible d&rsquo;utiliser HTTP ou bien <a href="https://fr.wikipedia.org/wiki/Server_Message_Block">SMB </a>.</p>
<p class="information">
Sur un ordinateur disposant de Windows vous pouvez très bien <em>booter </em>sur un système linux (<em>pxelinux.0</em>).
</p>
<h1>Liste des serveurs à installer</h1>
<p>On va installer :</p>
<ul>
<li>Serveur DHCP pour fournir les informations du serveur <a href="https://fr.wikipedia.org/wiki/Trivial_File_Transfer_Protocol">TFTP</a> (fichiers à télécharger et IP du serveur)</li>
<li>Serveur <a href="https://fr.wikipedia.org/wiki/Trivial_File_Transfer_Protocol">TFTP</a> pour fournir les fichiers lors du boot PXE</li>
<li>Serveur <a href="https://fr.wikipedia.org/wiki/Network_File_System">NFS</a> pour accélérer les transferts de fichiers une fois le premier script téléchargé</li>
</ul>
<h1>Configuration réseau</h1>
<p>J&rsquo;ai branché la clée USB de Linux Mint dans le pc qui servira de serveur <a href="https://fr.wikipedia.org/wiki/Trivial_File_Transfer_Protocol">TFTP</a>. J&rsquo;ai ensuite lancé le live CD de Mint. Le serveur disposera donc en directe de tout les fichiers requis pour le boot PXE.<br />
J&rsquo;ai branché directement en ethernet le serveur et le client (la veille machine).</p>
<p>Ce nouveau réseau va être configuré pour être <strong>192.168.30.0/24</strong><br />
Le serveur sera en <strong>192.168.30.254</strong>. (<a href="https://wiki.debian.org/fr/NetworkConfiguration">Cliquez ici</a> si vous ne savez pas le faire).<br />
Et le client va récupérer une adresse IP depuis le serveur DHCP du serveur.</p>
<h1>Installation du DHCP</h1>
<pre><code class="shell">apt-get install isc-dhcp-server</code></pre>
<p>Mainteant il faut configurer le serveur DHCP pour qu&rsquo;il serve le réseau <strong>192.168.30.0/24</strong>. Automatiquement il saura quelle interface écouter. Pour cela il va regarder quelle interface à un adresse IP dans les réseaux qu&rsquo;il doit servir.</p>
<p>Fichier /etc/dhcp/dhcpd.conf</p>
<pre><code>subnet 192.168.30.0 netmask 255.255.255.0 {
        range 192.168.30.100 192.168.30.200;
        filename "pxelinux.0";
}</code></pre>
<p>Rien d&rsquo;extraordinaire. On définis le sous réseau, on fixe le range des IPs qui seront délivrées par DHCP. Et on indique le fichier par défaut à récupérer en cas de PXE.</p>
<pre><code class="shell">service isc-dhcp-server restart</code></pre>
<p>Vérifiez bien dans /var/log/syslog que le serveur s&rsquo;est lancé sans erreur</p>
<h1>Installation du TFTP</h1>
<pre><code class="shell">apt-get install tftpd-hpa</code></pre>
<p>On ne va pas installer <strong>xinetd</strong> ou bien <strong>inetutils-inetd</strong>. Pour rappel l’intérêt d&rsquo;un super serveur est d&rsquo;avoir un seul daemon qui écoute plusieurs services. Cela permet de vérifier qu&rsquo;un client à le droit d&rsquo;utiliser un service avant même de rediriger la requête vers ce dit service. Cela peut aussi réduire le nombre de daemons qui tournent sur une machine, ce qui est utiles si vous hébergez des services peu utilisés.</p>
<p class="information">
Contrairement à APACHE/PHP qui inclue le moteur PHP dans tout ses fork, xinetd va faire un appel vers le service demandé.
</p>
<p>Fichier /etc/default/tftpd-hpa</p>
<pre><code># /etc/default/tftpd-hpa

TFTP_USERNAME="tftp"
TFTP_DIRECTORY="/var/lib/tftpboot"
#TFTP_ADDRESS="[::]:69"
TFTP_ADDRESS="0.0.0.0:69"
TFTP_OPTIONS="--secure"</code></pre>
<p><strong>TFTP_USERNAME</strong> : Par défaut, via apt, un utilisateur tftp est crée. Autant l&rsquo;utiliser.<br />
<strong>TFTP_DIRECTORY</strong> : J&rsquo;ai choisis comme racine TFTP ce dossier, mais vous pouvez le changer en <em>/tftpboot</em><br />
<strong>TFTP_ADDRESS</strong> : Adresse IP destination écoutée par le serveur TFTP. J&rsquo;ai choisi n&rsquo;importe quel adresse IPv4 de mon serveur tant que c&rsquo;est à destination du port 69 (TFTP).<br />
<strong>TFTP_OPTIONS</strong> : J&rsquo;ai rajouté le <em>secure</em>, sans quoi une erreur « Only absolute filename allowed » risque d&rsquo;apparaître sur le client (<a href="https://bugs.launchpad.net/ubuntu/+source/tftp-hpa/+bug/544377">Lien du bug</a>).</p>
<pre><code class="shell">service tftpd-hpa start</code></pre>
<h1>Configuration des fichiers</h1>
<p>Le majeur problème via l&rsquo;ISO de Linux Mint c&rsquo;est l&rsquo;absence totale de fichier pour le boot PXE. On va donc les créer.</p>
<pre><code class="shell">mkdir -p /var/lib/tftpboot/images/linuxmint /var/lib/tftpboot/pxelinux.cfg</code></pre>
<p>L&rsquo;argument <strong>-p</strong> de mkdir permet de créer les dossiers parents si ils n&rsquo;existent pas.</p>
<pre><code class="shell">cp -R /media/cdrom/* /var/lib/tftpboot/images/linuxmint</code></pre>
<p>En supossant que le serveur fonctionne sur le live CD de Linux Mint.</p>
<div class="information">
Il est aussi possible d&rsquo;utiliser mount à la place de copier :</p>
<pre><code class="shell">mount --bind /media/cdrom/ /var/lib/tftpboot/images/linuxmint</code></pre>
</div>
<p>Pour pas avoir de soucis d&rsquo;accès pensez à donner les droits de lecteurs aux fichiers :</p>
<pre><code class="shell">chmod -R o+r /var/lib/tftpboot</code></pre>
<h2>pxelinux.cfg/default</h2>
<p>Via la configuration de DHCP on a indiqué a notre client de télécharger pxelinux.0. Mais il est possible de configurer ce script pour faire ce que nous voulons. Voici la configuration requise pour installer Linux Mint.<br />
Fichier /var/lib/tftpboot/pxelinux.cfg/default :</p>
<pre><code>DEFAULT Linux-Mint
 
LABEL Linux-Mint
MENU LABEL Linux-Mint
KERNEL images/linuxmint/casper/vmlinuz
APPEND root=/dev/nfs boot=casper netboot=nfs nfsroot=192.168.30.254:/var/lib/tftpboot/images/linuxmint initrd=images/linuxmint/casper/initrd.lz nosplash --</code></pre>
<p>Dans ce fichier on doit donner le chemins vers le <strong>kernel</strong> et l&rsquo;<strong>initrd</strong> qui va permettre d&rsquo;installer notre Linux Mint. Evidemment on va utiliser les fichiers de notre Linux Mint.<br />
C&rsquo;est ici qu&rsquo;on définis que nous allons utiliser <strong>NFS</strong> pour télécharger notre installation de Linux Mint. On entre donc l&rsquo;adresse IP du serveur NFS ainsi que le dossier NFS à demander.</p>
<h2>Télécharger pxelinux.0</h2>
<p>On a indiqué dans le serveur DHCP que le fichier par défaut à téléharger en PXE (via TFTP) est <em>pxelinux.0</em>, sauf qu&rsquo;on a pas ce fichier. Et il est pas fournis par Mint. On va donc le télécharger.</p>
<p>Il est possible de le télécharger depuis le site Kernel.org à l&rsquo;adresse <a href="https://www.kernel.org/pub/linux/utils/boot/syslinux/">https://www.kernel.org/pub/linux/utils/boot/syslinux/</a></p>
<p>Le mieux est de télécharger le fichier qui corresponds au linux à déployer. Mais vu que le script de boot est basique on peut prendre presque <strong>n&rsquo;importe quel fichier</strong>. Moi j&rsquo;ai pris le dernier en date.</p>
<p>Il faut ensuite désarchiver et copier le fichier <em>syslinux-x.xx/bios/core/pxelinux.0</em> vers <em>/var/lib/tftpboot/pxelinux.0</em></p>
<h2>Corriger l&rsquo;erreur « failed to load ldlinux.c32 »</h2>
<p>Il se peut que lors du boot votre client retourne l&rsquo;erreur « failed to load ldlinux.c32 », a ce moment il faut copier ce fichier dans le dossier <em>tftpboot</em>.</p>
<pre><code class="shell">cp /var/lib/tftpboot/images/linuxmint/isolinux/ldlinux.c32 /var/lib/tftpboot</code></pre>
<h1>Configuration de NFS</h1>
<p>Le protocole TFTP (Trivial File Transfer Protocol) est comme son nom l&rsquo;indique un protocole basique. Il est très lent et n&rsquo;est pas fait pour transférer des gros fichiers. Mais comme nous voulons quand même qu&rsquo;un système d&rsquo;exploitation entier puisse être installé. On va utiliser un protocole dédier au transfert de fichier.<br />
En gros TFTP va permettre de télécharger un système linux basique, qui va ensuite télécharger tout les gros fichier en NFS. Puis lancer le script d&rsquo;installation du système.</p>
<pre><code class="shell">apt-get install nfs-kernel-server</code></pre>
<p>Fichier /etc/exports</p>
<pre><code class="bash"># /etc/exports: the access control list for filesystems which may be exported
#		to NFS clients.  See exports(5).
#
# Example for NFSv2 and NFSv3:
# /srv/homes       hostname1(rw,sync,no_subtree_check) hostname2(ro,sync,no_subtree_check)
#
# Example for NFSv4:
# /srv/nfs4        gss/krb5i(rw,sync,fsid=0,crossmnt,no_subtree_check)
# /srv/nfs4/homes  gss/krb5i(rw,sync,no_subtree_check)
#
/var/lib/tftpboot/images/linuxmint 192.168.30.0/24(ro,sync,no_subtree_check,fsid=42)</code></pre>
<p>On partage que /var/lib/tftpboot/images/linuxmint, car les fichiers qui se trouvent dans le dossier/var/lib/tftpboot/ ne seront accédés que depuis le serveur TFTP.<br />
<strong>192.168.30.0/24</strong> : La requête NFS doit être faite depuis une machine dans le réseau 192.168.30.0/24.<br />
<strong>ro</strong> : On donne l&rsquo;accès en Read Only.<br />
<strong>sync</strong> : Permet d&rsquo;avoir un fonctionnement de nfs-kernel-server tel que définis par le protocole <a href="https://fr.wikipedia.org/wiki/Network_File_System">NFS</a>.<br />
<strong>no_subtree_check</strong> : Réduit le nombre de vérifications a chaque requêtes. Ce qui accélère les accès mais réduit un peu la sécurité (pas dans notre cas).<br />
<strong>fsid=42</strong> : Si votre système de fichier n&rsquo;as pas de UUID ou votre disque n&rsquo;a pas <em>device number</em> vous devez spécifier un identifiant de de système de fichier. Sans quoi vous aurez cette erreur :</p>
<pre><code>qword_eol: fflush failed: errno 22 (Invalid argument)
Cannot export /var/lib/tftboot/images/linuxmint possibly unsupported filesystem or fsid= required</code></pre>
<p>Comme identifiant <em>fsid</em> vous pouvez mettre n&rsquo;importe quelle chaîne hexadécimale. La longueur maximale est de 32 caractères. <strong>root </strong>et <strong>0</strong> sont des identifiants réservés.</p>
<pre><code>service nfs-kernel-server restart</code></pre>
<p>L’article <a rel="nofollow" href="https://blog.angenieux.info/linux/installer-linux-mint-lan-pxe/">Installer Linux Mint en LAN/PXE</a> est apparu en premier sur <a rel="nofollow" href="https://blog.angenieux.info">RMFB - Read My F-Blog</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://blog.angenieux.info/linux/installer-linux-mint-lan-pxe/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Corriger le CSS du plugin WP TOC+</title>
		<link>https://blog.angenieux.info/wordpress/corriger-css-plugin-wp-toc-table-of-content-plus/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=corriger-css-plugin-wp-toc-table-of-content-plus</link>
					<comments>https://blog.angenieux.info/wordpress/corriger-css-plugin-wp-toc-table-of-content-plus/?noamp=mobile#respond</comments>
		
		<dc:creator><![CDATA[Rémi ANGENIEUX]]></dc:creator>
		<pubDate>Sun, 15 Oct 2017 11:26:22 +0000</pubDate>
				<category><![CDATA[Wordpress]]></category>
		<category><![CDATA[Style]]></category>
		<category><![CDATA[Table Of Content]]></category>
		<category><![CDATA[TOC+]]></category>
		<category><![CDATA[Wordpress plugin]]></category>
		<guid isPermaLink="false">http://blog.angenieux.info/?p=65</guid>

					<description><![CDATA[<p>Le plugin Wordpress "Table Of Content +" peut avoir quelques soucis d'affiche, surtout pour les sous menus. Je vais vous expliquer comment corriger cela.</p>
<p>L’article <a rel="nofollow" href="https://blog.angenieux.info/wordpress/corriger-css-plugin-wp-toc-table-of-content-plus/">Corriger le CSS du plugin WP TOC+</a> est apparu en premier sur <a rel="nofollow" href="https://blog.angenieux.info">RMFB - Read My F-Blog</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>Il est possible que votre thème écrase les styles de TOC+. Si c&rsquo;est le cas il suffit de modifier quelques fichiers.</p>
<h1>table-of-contents-plus/toc.php</h1>
<p>On va changer l&rsquo;ordre de chargement du style CSS, et le mettre en dernier.<br />
Remplacer</p>
<pre><code class="php">add_action( 'wp_enqueue_scripts', array(&$this, 'wp_enqueue_scripts') );</code></pre>
<p>Par</p>
<pre><code class="php">add_action( 'wp_enqueue_scripts', array(&$this, 'wp_enqueue_scripts'), 99 );</code></pre>
<h1>table-of-contents-plus/screen.css</h1>
<p>Remplacer</p>
<pre><code class="css">#toc_container ul ul {
	margin-left:1.5em;
}</code></pre>
<p>Par</p>
<pre><code class="css">#toc_container ul ul {
	margin:0;
	padding:0;
	margin-left:1.5em;
}</code></pre>
<p>Pour vérifier que tout fonctionne il suffit de faire CTRL+F5 et vérifier que tout est bon.</p>
<p>L’article <a rel="nofollow" href="https://blog.angenieux.info/wordpress/corriger-css-plugin-wp-toc-table-of-content-plus/">Corriger le CSS du plugin WP TOC+</a> est apparu en premier sur <a rel="nofollow" href="https://blog.angenieux.info">RMFB - Read My F-Blog</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://blog.angenieux.info/wordpress/corriger-css-plugin-wp-toc-table-of-content-plus/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Créer un utilisateur système</title>
		<link>https://blog.angenieux.info/linux/astuces/unix-creer-utilisateur-systeme/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=unix-creer-utilisateur-systeme</link>
					<comments>https://blog.angenieux.info/linux/astuces/unix-creer-utilisateur-systeme/?noamp=mobile#respond</comments>
		
		<dc:creator><![CDATA[Rémi ANGENIEUX]]></dc:creator>
		<pubDate>Sun, 15 Oct 2017 02:53:04 +0000</pubDate>
				<category><![CDATA[Astuces]]></category>
		<category><![CDATA[Administration]]></category>
		<category><![CDATA[debian]]></category>
		<guid isPermaLink="false">http://blog.angenieux.info/?p=61</guid>

					<description><![CDATA[<p>Vous trouverez la commande pour créer des utilisateurs sécurisés dédiés a l’exécution de daemon/server.</p>
<p>L’article <a rel="nofollow" href="https://blog.angenieux.info/linux/astuces/unix-creer-utilisateur-systeme/">Créer un utilisateur système</a> est apparu en premier sur <a rel="nofollow" href="https://blog.angenieux.info">RMFB - Read My F-Blog</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>Quand on créer des serveurs, une bonne pratique est de faire tourner les serveurs sous un nom d&rsquo;utilisateur qui n&rsquo;est pas root.</p>
<h1>Code</h1>
<p>Voici comment un créer un utilisateur dit « système » :</p>
<pre><code>addgroup --system openvpn
adduser --no-create-home --system --disabled-login --ingroup openvpn --home /etc/openvpn  openvpn</code></pre>
<p>L’article <a rel="nofollow" href="https://blog.angenieux.info/linux/astuces/unix-creer-utilisateur-systeme/">Créer un utilisateur système</a> est apparu en premier sur <a rel="nofollow" href="https://blog.angenieux.info">RMFB - Read My F-Blog</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://blog.angenieux.info/linux/astuces/unix-creer-utilisateur-systeme/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>OpenVPN IPv4/IPv6 en NAT (sans NDP)</title>
		<link>https://blog.angenieux.info/linux/serveur/openvpn-ipv4-ipv6-nat-sans-ndp/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=openvpn-ipv4-ipv6-nat-sans-ndp</link>
					<comments>https://blog.angenieux.info/linux/serveur/openvpn-ipv4-ipv6-nat-sans-ndp/?noamp=mobile#comments</comments>
		
		<dc:creator><![CDATA[Rémi ANGENIEUX]]></dc:creator>
		<pubDate>Sun, 15 Oct 2017 00:37:55 +0000</pubDate>
				<category><![CDATA[Serveur]]></category>
		<category><![CDATA[debian]]></category>
		<category><![CDATA[Easy-RSA]]></category>
		<category><![CDATA[Installation]]></category>
		<category><![CDATA[IPv6]]></category>
		<category><![CDATA[OpenVPN]]></category>
		<category><![CDATA[Proxy NDP]]></category>
		<category><![CDATA[systemd]]></category>
		<category><![CDATA[ULA]]></category>
		<category><![CDATA[Unique Local Address]]></category>
		<category><![CDATA[VPN]]></category>
		<guid isPermaLink="false">http://blog.angenieux.info/?p=41</guid>

					<description><![CDATA[<p>Un long article expliquant le fonctionnement d'OpenVPN et comment l'utiliser pour "cacher" son adresse IPv4 <strong>ET</strong> IPv6 tout en chiffrant vos communications.</p>
<p>L’article <a rel="nofollow" href="https://blog.angenieux.info/linux/serveur/openvpn-ipv4-ipv6-nat-sans-ndp/">OpenVPN IPv4/IPv6 en NAT (sans NDP)</a> est apparu en premier sur <a rel="nofollow" href="https://blog.angenieux.info">RMFB - Read My F-Blog</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>Un VPN est utile pour de nombreuses utilisations :</p>
<ul>
<li>Chiffrer ses communications sur un Wifi non sécurisé ou bien un réseau <em>WPA-personnal</em> (WPA des Box)</li>
<li>Cacher son identité (utilisation de proxy)</li>
<li>Permettre d&rsquo;accéder a un réseau uniquement accessible depuis le serveur VPN</li>
<li>Pour connecter 2 réseaux locaux via une connexion p2p (point à point) &#8211; Je ne vais pas traiter cette partie &#8211;</li>
</ul>
<p>IPv6 est sorti en 1998 et moins de 10% du trafic internet est en IPv6, cependant il serrait bien temps de commencer a prendre en compte IPv6 dans ses configurations. Je vais donc vous présenter une configuration d&rsquo;OpenVPN en IPv4 <strong>ET</strong> IPv6.</p>
<p>On trouve sur internet de nombreuses configurations pour OpenVPN en IPv4, moi je vais vous proposer une configuration qui permet a la stack IPv4 <strong>ET</strong> IPv6 de fonctionner avec votre tunnel. Que ça soit dans le tunnel ou en dehors du tunnel.</p>
<p>Cette solution va utiliser du NAT pour IPv4 <strong>ET</strong> IPv6. En effet, je ne souhaite pas que mon serveur utilise plusieurs adresses IPv6 vers l’extérieur.</p>
<h1>Présentation du protocole VPN</h1>
<p>Le principe est que le client va encapsuler son paquet IP (si VPN TUN) dans un nouveau paquets IP avec comme data(payload) le paquet IP de base.</p>
<p>Il est donc possible de chiffrer le contenu du paquets VPN ce qui sécurise le trafic entre le client et le serveur.<br />
Cela va évidement pas sécuriser de bout en bout, puisque le serveur VPN va déchiffrer le contenu du paquet, dés-encapsuler la trame initiale, router cette dernière et la transmettre au destinataire final.</p>
<p>Pour faire cela le logiciel VPN va créer une interface dite virtuelle (car elle existe pas physiquement) sur le client et sur le serveur. Une adresse IP va être assignée a l&rsquo;interface du client par le serveur. L&rsquo;interface du client et celle du serveur sont sur le même réseau. Tout ce qui rentre dans l&rsquo;interface client, re-sort par l&rsquo;interface serveur. Comme si il y avait eu rien entre les deux machines.</p>
<p>Une grosse partie de la configuration d&rsquo;un VPN est le routage, comme vous pouvez le penser. Effectivement, il faut rediriger le trafic client que vous voulez vers cette nouvelle interface (celle côté client). Et il faut rediriger le trafic sortant du tunnel vers la cible que vous voulez.<br />
La configuration du routage va beaucoup dépendre de votre utilisation de VPN.</p>
<h2>Les différents cas d&rsquo;utilisation de VPN</h2>
<p>Le protocole VPN n&rsquo;est qu&rsquo;un protocole réseau, c&rsquo;est à vous de l&rsquo;utiliser comme vous en avez besoin. Mais je vais vous présenter ici quelques cas d&rsquo;utilisations très courants.<br />
Je ne vais pas tous les détailler, car certains ne sont utiles que dans des cas très spécifiques.</p>
<h3>Cas « connexion à réseau local a distance »</h3>
<p>Ce genre de configuration est très utilisée dans des entreprises multi-sites. Une agence à Paris et une agence à Marseille par exemple. Et on voudrais que les machines de Paris puissent communiquer avec les machines de Marseille comme si il étaient dans le même réseau local.<br />
En général ce genre de configuration se fait sur des routeurs ou des concentrateurs VPN (équipement dédié aux communication VPN) car le trafic est très important.</p>
<p>Dans ce cas les deux équipements VPN (celui de Paris et celui de Marseille) seront connecté en P2P (peer to peer). Il n&rsquo;y auras donc aucun réseau entre ces deux machines (ou bien un réseau en /30).</p>
<p>Aucun routage n&rsquo;est requis car dès lors que l&rsquo;équipement à accès a tout les réseaux locaux, ils saurât router les paquets vers ces réseaux locaux.</p>
<p class="warning">Je ne vais pas expliquer en détail comment il faut faire ce genre de configuration. Cependant il suffira de supprimer des directives forçant tout le trafic d&rsquo;internet vers le serveur VPN, et il n&rsquo;y auras pas besoin de regarder la partie routage de ce post.</p>
<h3>Cas « proxy »</h3>
<p>Si vous voulez cacher votre identité (adresse IP). Vous voulez rediriger tout le trafic du client vers cette interface VPN et que le serveur, lui, redirige tout le trafic vers le destinataire final.</p>
<p>Il faut donc rajouter une entrée dans la table de routage du client pour tout rediriger vers l&rsquo;interface VPN. On pourrais penser à changer la route par défaut, sauf que le client en a déjà une. L&rsquo;écraser est pas une bonne idée car il faudrait la stocker pour pouvoir la remettre après.<br />
La solution est l&rsquo;utilisation de deux routes, une qui va rediriger la moitié des IP, et une seconde la deuxième partie des IP. Cela à pour effet de rendre ineffectif la route par défaut, car pour rappel en routage CIDR on cherche la route la plus spécifique en premier et dès qu&rsquo;on en trouve une : on l&rsquo;utilise.<br />
Comme le protocole VPN n&rsquo;est pas magique il va bien falloir lui ajouter une route à destination de serveur VPN. En effet notre interface VPN à pour effet d&rsquo;encapsuler, mais après il envoie bien les trames au serveur VPN. Il doit donc il y avoir une entrée dans la table de routage pour que ce paquet puisse arriver à destination.</p>
<p>Le serveur va récupérer les trames, mais une fois décapsulées il va trouver une adresse IP de type privée (192.168.x.x ou bien 10.x.x.x en IPv4), en effet le protocole VPN en mode non P2P va créer un réseau privé entre le client et le serveur. Le problème c&rsquo;est que ces IP privées ne peuvent pas être utilisées sur internet. On va donc remplacer les IP sources avec celle du serveur VPN. Le destinataire final va envoyer sa réponse au serveur VPN, on va cette fois-ci faire le fonctionnement inverse, on va changer l&rsquo;adresse IP destinataire par l&rsquo;adresse du client (l&rsquo;adresse de l&rsquo;interface VPN). Ce fonctionnement se fait via le protocole <a href="https://fr.wikipedia.org/wiki/Network_address_translation" target="_blank" rel="noopener">NAT</a>. Il est utilisé par votre Box par exemple, toutes vos machines locales ont la même adresse IP publique.</p>
<h4>Spécificités IPv6 (Proxy NDP et Unique Local Address)</h4>
<p>Vu qu&rsquo;en général votre FAI vous fournis un bloc /64 en IPv6 il est possible de faire du <a href="https://fr.wikipedia.org/wiki/Sous-r%C3%A9seau" target="_blank" rel="noopener">subnetting</a> pour qu&rsquo;une partie de ce bloc soit utilisé par votre serveur et ses services et un second bloc soit utilisé par les clients VPN.<br />
En clair vos clients quand ils communiqueront sur internet via le VPN ils auront une adresse IP comprise dans le bloc assigné à votre serveur. Et chaque client aurait une adresse IP différente.<br />
Si votre serveur VPN à l&rsquo;adresse IP 2001:dead:dead:dead::/64 votre client sera visible sur internet par 2001:dead:dead:dead::10:1<br />
Cependant le routeur de votre serveur doit avoir connaissance de ces nouvelles IP pour pouvoir les router.</p>
<p>C&rsquo;est la qu&rsquo;entre en jeu le proxy NDP. Vous avez deux choix, soit à chaque nouveau client créer un nouveau proxy pour la nouvelle adresse IPv6. Soit installer ndpd pour proxifier tout le subnet qui va être réserver au VPN.<br />
Pour plus d&rsquo;informations : <a href="https://unix.stackexchange.com/questions/136211/routing-public-ipv6-traffic-through-openvpn-tunnel" target="_blank" rel="noopener">Lien</a></p>
<p>Cette solution est celle la plus courante sur internet, mais je suis pas fan que de l’extérieur on puisse faire une différenciation entre 2 de mes clients (vu qu&rsquo;ils auront une adresse IP externe différente). En plus cela demande de surcharger le routeur. Et pour en finir avec cette solution, notre client va avoir tout ses services exposés sur internet. Tout les ports de son PC seront directement accessible depuis internet.<br />
L&rsquo;idée est donc de faire comme IPv4, utiliser du NAT. On va donc utiliser des adresses IPv6 de type Unique Local Address, elles sont comparables aux adresses privées d&rsquo;IPv4, elles ne sont pas routables.</p>
<p class="warning">NAT ne sécurise pas votre réseau, il ne remplace pas un parfeux sur votre client. De plus le processus NAT fonctionne avec des tables de conversions et augmente la latence contrairement à la solution de proxy NDP.</p>
<h2>Authentification des clients</h2>
<p>Il est possible de limiter l&rsquo;accès au serveur VPN, plusieurs solutions existent :</p>
<ul>
<li>Par mot de passe</li>
<li>Par certificats</li>
</ul>
<p>Généralement on chiffre les communications entre le client et le serveur. Ce chiffrement est habituellement du TLS, il y a donc déjà des certificats qui sont utilisés pour le chiffrement. Il est donc très simple d&rsquo;utiliser ces certificats pour authentifier le client. Mais il est possible aussi de demander un couple utilisateur/mot de passe.<br />
L&rsquo;authentification par mot de passe est moins sécurisé car le « secret » est beaucoup plus court. A un potentiel sens (si vous avez un mot de passe faible). Et pour d&rsquo;autres raisons plus complexes.</p>
<p>L&rsquo;authentification par certificats se faire à l&rsquo;aide de signatures.<br />
Pour cela vous avez besoin d&rsquo;un <strong>CA</strong> (Certification Authority). Nous allons signer tout nos certificats client avec ce <strong>CA</strong>. Et le serveur va vérifier que le certificat du client est bien signé par le <strong>CA</strong>. Si c&rsquo;est le cas, le client sera autorisé, sinon la connexion se verra rejetée.<br />
La technique de signature est assez complexe, je ne vais pas rentrer dans les détails, mais utilise la notion de clée privé/publique et est sûre.<br />
Vous pouvez soit générer votre propre <strong>CA</strong>, à ce moment le client doit connaitre la clée Publique du <strong>CA</strong>. Si vous payez pour utiliser un <strong>CA</strong> reconnus. A ce moment votre système d&rsquo;exploitation à déjà la clée Publique de ce <strong>CA</strong>.</p>
<p class="information">Quand vous naviguez sur internet en <strong>https</strong> vous pouvez des fois voir « Votre connexion n&rsquo;est pas privé ». En réalité cela veut dire que le site sur lequel vous naviguez utilise un certificat TLS qui n&rsquo;a pas été signé par un CA reconnus (certificat auto signé).</p>
<h1>Spécification de la configuration</h1>
<p>Je vais donc vous présenter comment utiliser le protocole <strong>VPN</strong> à l&rsquo;aide du logiciel <strong>OpenVPN</strong>.</p>
<ul>
<li>Cette configuration va chiffrer les communications entre le serveur et le client à l&rsquo;aide de <strong>TLS</strong>.</li>
<li>L’<strong>authentification</strong> se ferra à l&rsquo;aides des <strong>certificats</strong>.</li>
<li>Le serveur sera configuré pour router les paquets IPv6 <strong>ET</strong> IPv4 du client vers internet (pour <strong>cacher son adresse IP</strong>).</li>
<li>Le serveur sera accessible en IPv4 <strong>ET</strong> en IPv6.</li>
<li>Le client auras <strong>toujours la même adresse</strong> IP sur le réseau VPN.</li>
</ul>
<p>Malgré tout, je vais vous donner toutes les informations requises pour faire ce que bon vous semble.</p>
<h1>Installation d&rsquo;OpenVPN</h1>
<p>C&rsquo;est donc partis !</p>
<pre><code class="shell">apt-get install openvpn</code></pre>
<p>C&rsquo;était compliqué, avouez-le ! Malheureusement c&rsquo;est pas comme apache, toute la configuration est à faire par vos soins. Rien n&rsquo;est pré configuré. On va donc faire tout ça.</p>
<h1>Configuration d&rsquo;OpenVPN</h1>
<h2>Création des certificats</h2>
<p>OpenVPN se base sur des certificats pour le chiffrement, on va donc créer tout les certificats nécessaires. Pour simplifier la génération de ces derniers nous allons utiliser <strong>Easy-RSA</strong></p>
<pre><code class="shell">apt-get install easy-rsa
cd /etc/openvpn
cp -R /usr/share/easy-rsa/ /etc/openvpn
cd easy-rsa
vim vars
</code></pre>
<p>L&rsquo;édition de ce fichier permet de modifier les valeurs par défaut lors de la génération de certificats, très utile si vous allez générer de nombreux certificats.<br />
Modifiez <strong>KEY_COUNTRY</strong>, <strong>KEY_PROVINCE</strong>, <strong>KEY_CITY</strong>, <strong>KEY_ORG</strong>, <strong>KEY_EMAIL</strong>, <strong>KEY_OU</strong> et <strong>KEY_NAME</strong> par ce qui vous convient.<br />
Voici ce que j&rsquo;ai mis :</p>
<pre><code class="bash">export KEY_COUNTRY="FR"
export KEY_PROVINCE="Nord-Pas-De-Calais"
export KEY_CITY="Roubaix"
export KEY_ORG="RMFB"
export KEY_EMAIL="openvpn@angenieux.info"
export KEY_OU="VPN"

# X509 Subject Field
export KEY_NAME="OpenVPN"
</code></pre>
<p>Il faut ensuite charger ces variables et générer les différents certificats :</p>
<pre><code class="shell">. ./vars
# On supprime les clées si il y en avait
./clean-all
./build-ca
</code></pre>
<p>Résultats de la dernière commande :</p>
<pre><code>Generating a 2048 bit RSA private key
.....................++++++
...++++++
writing new private key to 'ca.key'
-----
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Country Name (2 letter code) [FR]:
State or Province Name (full name) [Nord-Pas-De-Calais]:
Locality Name (eg, city) [Roubaix]:
Organization Name (eg, company) [RMFB]:
Organizational Unit Name (eg, section) [VPN]:
Common Name (eg, your name or your server's hostname) []: <strong>ca-openvpn</strong>
Name [OpenVPN]:
Email Address [openvpn@angenieux.info]:

Please enter the following 'extra' attributes
to be sent with your certificate request
A challenge password []:
An optional company name []:</code></pre>
<p>Laissez tout par défaut, pour le <em>common name</em> entrez « ca-openvpn ».<br />
Je vous recommande de définir une <em>passphrase</em> pour le CA. Cette <em>passphrase</em> sera demandé à chaque fois que vous aller signer un nouveau certificat.</p>
<p class="warning">Si vous oubliez cette <em>passphrase</em> vous pourrez continuer à utiliser OpenVPN mais vous ne pourrez plus créer de nouveaux certificats ni révoquer des certificats.</p>
<p class="information">Un CA va signer les certificats, si on fait confiance à un CA. On fait confiance a tout les certificats signés par ce CA. OpenVPN va donc autoriser l&rsquo;accès a tout les possesseurs de certificat signé par le CA que nous venons de créer.</p>
<pre><code class="shell">./build-key-server server</code></pre>
<p>Vous pouvez tout laisser par défaut.</p>
<p class="information">Je vous conseille de ne pas utiliser de <em>passphrase</em>, ce sera moins sécurisé mais vous pourrez au moins démarrer votre serveur OpenVPN au démarrage de votre serveur physique. Sinon à chaque démarrage votre serveur demandera la <em>passphrase</em> pour pouvoir accéder au la clée privée du certificat du serveur.</p>
<p>Ensuite il nous reste à générer les certificats pour nos différents clients via cette commande :</p>
<pre><code class="shell">./build-key client1</code></pre>
<p>Cette commande permet de créer un certificat signé par le CA avec comme <em>common name</em> client1.<br />
Vous pouvez personnaliser le certificat pour qu&rsquo;il corresponde au mieux à l&rsquo;utilisateur.<br />
Le nom (<em>client1</em> ici) est très important car il permet de désigner l&rsquo;utilisateur. Je vous recommande d&rsquo;utiliser des nom comme : « <em>remi-pc</em>« .</p>
<p>Il faut ensuite générer les paramètres Diffie-Hellman, cette étape peut être très longue !</p>
<pre><code class="shell">./build-dh</code></pre>
<p>Il est possible qu&rsquo;un jour vous aller supprimer un utilisateur, ou bien supprimer un certificat car il a été compromis (clée privé divulguée publiquement). On va donc créer un fichier contenant les certificats révoqués. Pour cela on va créer un certificat puis le révoquer.</p>
<pre><code class="shell">./build-key revoked
./revoke-full revoked
</code></pre>
<p class="information">Le “error 23” a la dernière ligne est normal. Cela indique que la vérification du certificat révoqué à échoué, c&rsquo;est ce que nous voulons.</p>
<p>Cette manipulation a créé un fichier keys/crl.pem que nous allons utiliser plus tard.</p>
<p>Je vous conseille de garder le dossier /etc/openvpn/easy-rsa comme dossier pour créer et révoquer des certificats, vous y accéderez en root. Et copier les certificats utiles à OpenVPN dans le dossier /etc/openvpn. Ces dernier fichiers seront uniquement accessibles a l&rsquo;utilisateur système :</p>
<pre><code class="shell">addgroup --system openvpn
adduser --no-create-home --system --disabled-login --ingroup openvpn --home /etc/openvpn openvpn
chmod 700 /etc/openvpn/easy-rsa
cp /etc/openvpn/easy-rsa/ca.crt /etc/openvpn/ca.crt
cp /etc/openvpn/easy-rsa/server.crt /etc/openvpn/server.crt
mkdir cp /etc/openvpn/private
chmod -R 700 /etc/openvpn/private
cp /etc/openvpn/easy-rsa/server.key /etc/openvpn/private/server.key
cp /etc/openvpn/easy-rsa/dh2048.pem /etc/openvpn/dh2048.pem
cp /etc/openvpn/easy-rsa/crl.pem /etc/openvpn/crl.pem
chown -R openvpn:openvpn /etc/openvpn/private/
chown openvpn:openvpn /etc/openvpn/dh2048.pem /etc/openvpn/crl.pem /etc/openvpn/server.crt /etc/openvpn/ca.crt
</code></pre>
<h2>Configuration du serveur</h2>
<p>Je vous conseille de partir de la configuration d&rsquo;OpenVPN fournie en exemple.<br />
Pour cela faites :</p>
<pre><code class="shell">zcat /usr/share/doc/openvpn/examples/sample-config-files/server.conf.gz &gt; /etc/openvpn/server.conf</code></pre>
<p>Pour utiliser la configuration que je vous proposer il faut créer le dossier <em>clientstatic</em>. Il va permettre d&rsquo;assigner un adresse IP fixe aux clients.</p>
<pre><code class="shell">mkdir /etc/openvpn/clientstatic
chown openvpn:openvpn /etc/openvpn/clientstatic</code></pre>
<p>Voici mes modifications au fichier server.conf :</p>
<pre><code class="apache"># Si vous voulez vous connecter a votre serveur OpenVPN uniquement en IPv4 mettez
# "proto udp". Si vous voulez que votre serveur soit accessible en IPv4 ET en IPv6 laissez "proto udp6"
# Vous pouvez aussi utiliser le protocole tcp. Il sera moins rapide mais plus fiable si vous avez beaucoup de
# pertes de paquets : "proto tcp6" ou "proto tcp"
proto udp6

# Il est aussi possible de faire du TAP
dev tun
# On ne veut pas une topologie p2p mais bien qu'il y ait un réseau entre notre serveur et
# notre client
topology subnet

# Pour indiquer à TLS que ça va être le côté serveur
tls-server
# Chemin vers notre CA
ca /etc/openvpn/keys/ca.crt
# Chemins vers la clée privée et la clée publique du serveur
cert /etc/openvpn/server.crt
key /etc/openvpn/private/server.key
dh /etc/openvpn/dh2048.pem
# A chaque connexion le serveur va vérifier que le certificat n'est pas révoqué
crl-verify /etc/openvpn/crl.pem
# Réseau IPv4 créer pour les interfaces VPN
server 10.8.0.0 255.255.255.0
# Réseau IPv6 créer pour les interfaces VPN
# Il est possible d'utiliser n'importe quel réseau qui commence par fd.
# Cela corresponds aux réseau ULA. (voir plus haut).
server-ipv6 fd42:feed:feed:feed::/64
# Créé l'interface TUN IPv6 sur le serveur
tun-ipv6
# Pousse la création de l'interface TUN IPv6 sur le client
push tun-ipv6
# Pousse la création de la route en destination de réseau local VPN
push "route-ipv6 2001:41d0:2:bb7:80::/64"
# Pousse la création de la route redirigeant tout le trafic internet vers le VPN
# On utilise pas "default" pour ne pas écraser la passerelle IPv6 par défaut.
# Vu que cette route est plus précise que default, elle sera utilisée pour le
# routage de tout les paquets internet. Pour rappel toutes les IPv6 routables sur
# internet sont 2000::/3
push "route-ipv6 2000::/3"
# Permet d'avoir un adressage statique de nos client
# Chaque client aura une adresse IPv4 et IPv6 fixe.
client-config-dir /etc/openvpn/clientstatic
# Permet de garder les même adresses IP, même après une déconnexion.
# Ici cela est une sécurité, si on a oublié de donner une adresse IP fixe à un client
# ce dernier ne risquera pas d'être en conflits avec un adresse IP déjà utilisé.
ifconfig-pool-persist ipp.txt

# Permet de rediriger tout le trafic internet vers notre serveur VPN
push "redirect-gateway def1 bypass-dhcp"
push "redirect-gateway ipv6" # Pour iOS

# Vu que le DNS de votre FAI n'est pas accesible par votre serveur VPN.
# Il faut que les requêtes VPN se fassent sur des serveur DNS publiques.
# Ici c'est du OpenDNS
push "dhcp-option DNS 208.67.222.222"
push "dhcp-option DNS 208.67.220.220"
# Si vous avez openvpn =&gt; 2.4
push "dhcp-option DNS6 2620:0:ccd::2"
# Sinon
;setenv "ipv6dns 2620:0:ccd::2"
# Permet d’exécuter OpenVPN sur un utilisateur disposant de moins de droits.
# Nous avons créer cet utilisateur/groupe juste avant.
user openvpn
group openvpn
</code></pre>
<div class="information">
<p>
Si vous voulez une authentification par mot de passe, il est possible d&rsquo;utiliser le système d&rsquo;authentification PAM. Par défaut il va utiliser vos utilisateurs locaux comment couple utilisateur/mot de passe.<br />
Fichier server.conf</p>
<pre><code class="apache"># Utilise le module <em>login</em> de PAM
plugin openvpn-auth-pam.so login
# On ne veut plus vérifier l'utilisateur via son certificat
verify-client-cert none
# Permet d'utiliser l'adressage IP fixe malgré tout
username-as-common-name
Plus d'informations disponibles à <a href="https://github.com/OpenVPN/openvpn/tree/master/src/plugins/auth-pam">ce lien (en)</a>.
</code></pre>
<p>Vous avez toujours besoin d&rsquo;un certificat client pour chiffrer la communication mais vous avez plus besoin de signer ce certificat par le <strong>CA</strong>.<br />
Vous pouvez donc enlever la ligne « ca /etc/openvpn/keys/ca.crt ».</p>
</div>
<p>Pour chaque client/certificat vous allez devoir créer un fichier dans /etc/openvpn/clientstatic.<br />
Voici un exemple de mon user remi-pc (/etc/openvpn/clientstatic/remi-pc) :</p>
<pre><code class="apache"># Ces adresses doivent être dans le range définis par <em>server</em> ou <em>server-ipv6</em>
ifconfig-push 10.8.0.10 255.255.255.0 # IPv4
ifconfig-ipv6-push fd42:feed:feed:feed::10/64 # IPv6</code></pre>
<h3>Configurer syslog</h3>
<p>Par défaut tout les logs sont envoyés vers syslogs, mais on peut souhaiter de rassembler les logs d&rsquo;OpenVPN.</p>
<pre><code class="shell">mkdir /var/log/openvpn
vim /etc/rsyslog.d/openvpn.conf</code></pre>
<pre><code class="shell">if $programname startswith 'ovpn-' then /var/log/openvpn/openvpn.log</code></pre>
<pre><code class="shell">service rsyslog restart</code></pre>
<h3>Configurer logrotate</h3>
<p>Le fichier risque de grossir vite, il faut donc mettre en place un logrotate.<br />
Créez le fichier <em>/etc/logrotate.d/openvpn</em> :</p>
<pre><code>/var/log/openvpn/openvpn.log
{
    # On change de fichier toutes les semaines
    weekly
    # On garde 1 an de log
    rotate 48
    # Permet au processus de ne pas s'arrêter à chaque erreur et de poursuivre avec le fichier de log suivant.
    missingok
    # Empêche la rotation de s'effectuer si le fichier de log est vide.
    notifempty
    # Ne compresse pas les fichiers les plus récents
    delaycompress
    compress
}</code></pre>
<h3>Démarrer OpenVPN au boot</h3>
<p>La commande va dépendre du nom de votre fichier de configuration. Moi j&rsquo;ai garder le nom par défaut, soit <em>server.conf</em>. La commande est donc :</p>
<pre><code class="shell">systemctl enable openvpn@server.service</code></pre>
<p>Et si vous voulez démarrer le serveur c&rsquo;est :</p>
<pre><code class="shell">systemctl start openvpn@server.service</code></pre>
<h2>Configuration du client</h2>
<p>Déjà il faudra transférer les fichiers <em>/etc/openvpn/easy-rsa/keys/remi-pc.crt</em> et <em>/etc/openvpn/easy-rsa/keys/remi-pc.key</em> vers le client. Utilisez un protocole de transfert sécurisé tel que SSH, ou FTPS. Il ne faut pas que le fichier <em>remi-pc.key</em> soit divulgué. Il contient votre clée privée, si quelqu&rsquo;un récupère ce fichier, cette personne pourra se faire passer pour vous.<br />
Vous aurez aussi besoin de copier le fichier <em>/etc/openvpn/easy-rsa/keys/ca.crt</em></p>
<p>Je vous conseille de partir de la configuration d’OpenVPN fournie en exemple.<br />
Cette configuration se situe a l&#8217;emplacement : /usr/share/doc/openvpn/examples/sample-config-files/client.conf</p>
<p class="information">Sur Windows il faudra changer l&rsquo;extension en <em>.ovpn</em></p>
<p class="warning">Limitez l&rsquo;accès au fichier <em>remi-pc.key</em>. Si vous êtes sur un PC partagé ne mettez pas ce fichier dans le dossier de configuration général mais dans le dossier de votre utilisateur.<br />
Réduisez les droits de lecture sur ce fichier au strict minimum, c&rsquo;est à dire « vous ».</p>
<p>Voici mes modifications du fichier client.conf :</p>
<pre><code class="apache">client
# Vu qu'on a choisi TUN su le serveur
dev tun
# Vu qu'on a choisi UDP sur le serveur, sinon changez
# Si vous voulez vous connecter en IPv6 a votre serveur changer udp en upd6 ou en tcp6
proto udp
# Changer la valeur par l'adresse IPv4 ou IPv6 de votre serveur
remote 8.8.8.8
persist-key
persist-tun
# Indique à TLS que vous êtes du côté client
tls-client
# Chemin vers le fichier ca.cert que vous venez de télécharger (non requis en cas d'authentification par mot de passe)
ca ca.crt
# Chemin vers le fichier remi-pc.cert que vous venez de télécharger
cert remi-pc.crt
# Chemin vers le fichier remi-pc.key que vous venez de télécharger
key remi-pc.key
# Pour augmenter la sécurité on peut vérifier que le certificat du serveur est bien un certificat de type serveur.
# Permet de réduire les risques de "man in the middle".
remote-cert-tls server
# Pour éviter l'usurpation de votre serveur il est possible de vérifier des informations
# du certificat du serveur.
# Pour vérifier le CN (CommonName) du certificat du serveur utilisez la commande :
;verify-x509-name <em>CNDuServeur</em> name
# Dans notre cas ça sera "server"
# Si vous voulez vérifier tout les champs du certificat vous pouvez utiliser :
; verify-x509-name 'C=FR, ST=Nord-Pas-De-Calais, L=Roubaix, O=RMFB, CN=server, name=OpenVPN, emailAddress=openvpn@angenieux.info'</code></pre>
<h1>Routage</h1>
<p>On a un serveur OpenVPN fonctionnel qui fournis des adresse locales en IPv6 et IPv4 et pousse aussi des DNS. Mais nos paquets ne sont pas router vers internet. On va donc changer ça !</p>
<p>Activer les fonctions de routage dans le kernel :</p>
<pre><code class="shell">sysctl -w net.ipv4.ip_forward=1
sysctl -w net.ipv6.conf.all.forwarding=1</code></pre>
<p>Pour que ces options soient permanentes, pas supprimées après un reboot, modifiez le fichier /etc/sysctl.d/10-routing.conf</p>
<pre><code class="ini">net.ipv4.ip_forward = 1
net.ipv6.conf.all.forwarding = 1</code></pre>
<h2>Masquerade/NAT</h2>
<p>Nous allons maintenant mettre en place le NAT</p>
<pre><code class="shell">iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o eth0 -j MASQUERADE
ip6tables -t nat -A POSTROUTING -s fd42:feed:feed:feed::/64 -o eth0 -j MASQUERADE</code></pre>
<p>Il faudra modifier les adresses pour que cela corresponde aux adresses de réseau privé que vous avez configuré sur le serveur.<br />
Je pars du principe que votre serveur est connecté à internet via eth0.</p>
<p>Si vous voulez garder ces règles en cas de reboot de votre serveur, je vous redirige vers <a href="https://blog.angenieux.info/linux/serveur/installation-configuration-firewall-iptables/">cet article</a>.</p>
<p>Si vous utilisez des Dirty protocols tel que Bittorent, vous aurez besoin de faire de la translation de port. Je vous redirige vers <a href="http://blog.angenieux.info/linux/serveur/ouvrir-translation-ports-derriere-openvpn/">cet article</a>.</p>
<p>L’article <a rel="nofollow" href="https://blog.angenieux.info/linux/serveur/openvpn-ipv4-ipv6-nat-sans-ndp/">OpenVPN IPv4/IPv6 en NAT (sans NDP)</a> est apparu en premier sur <a rel="nofollow" href="https://blog.angenieux.info">RMFB - Read My F-Blog</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://blog.angenieux.info/linux/serveur/openvpn-ipv4-ipv6-nat-sans-ndp/feed/</wfw:commentRss>
			<slash:comments>10</slash:comments>
		
		
			</item>
		<item>
		<title>Installation et configuration d&#8217;un firewall Iptables</title>
		<link>https://blog.angenieux.info/linux/serveur/installation-configuration-firewall-iptables/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=installation-configuration-firewall-iptables</link>
					<comments>https://blog.angenieux.info/linux/serveur/installation-configuration-firewall-iptables/?noamp=mobile#respond</comments>
		
		<dc:creator><![CDATA[Rémi ANGENIEUX]]></dc:creator>
		<pubDate>Sat, 19 Dec 2015 15:38:35 +0000</pubDate>
				<category><![CDATA[Astuces]]></category>
		<category><![CDATA[Serveur]]></category>
		<category><![CDATA[debian]]></category>
		<category><![CDATA[iptables]]></category>
		<category><![CDATA[iptables-persistent]]></category>
		<category><![CDATA[iptables-save]]></category>
		<guid isPermaLink="false">http://blog.angenieux.info/?p=24</guid>

					<description><![CDATA[<p>Explications permettant de configurer un firewall iptables en prenant en compte les services que vous utilisez. Et configuration pour que le firewall garde ses configurations après un redémarrage.</p>
<p>L’article <a rel="nofollow" href="https://blog.angenieux.info/linux/serveur/installation-configuration-firewall-iptables/">Installation et configuration d&rsquo;un firewall Iptables</a> est apparu en premier sur <a rel="nofollow" href="https://blog.angenieux.info">RMFB - Read My F-Blog</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>Un serveur en production est soumis à de nombreuses requêtes venant de partout. Leurs buts ? Trouver une faille pour transformer votre serveur en zombie. Les serveur hébergés dans des datacenter sont des cibles de choix, bande passante importante et disponibilité constante.</p>
<p>Il vaut donc mieux changer votre port d&rsquo;écoute SSH car c&rsquo;est le service le plus critique. Mais aussi configurer votre firewall. Le mieux étant de rester très restrictif.</p>
<p>Je vais vous proposer ici une configuration qui va par défaut drop (ne pas répondre) les paquets. Puis nous allons lister tout les ports que nous voulons garder ouvert.<br />
</p>
<h1>Listes les services présent sur votre serveur</h1>
<p>Nous allons bloquer tout le trafic entrant, il faut donc savoir quels sont les ports en écoute sur le serveur, pour autoriser le trafic en destination de ces ports.</p>
<pre><code class="shell">netstat -tulpn | grep LISTEN</code></pre>
<p>Je vous conseille de vérifier tout les services, il est possibles que votre serveur héberge des services que vous ne voulez pas rendre disponible sur internet.</p>
<h1>Configuration</h1>
<p>Pour pouvoir vous souvenir de pourquoi vous avez mit telle au telle ligne, je vous conseille de faire un fichier bash qui va contenir toutes les insertions de règles.</p>
<p class="information">Si vous perdez votre connexion SSH vous pourrez toujours redémarrer votre machine (en hard si vous avez accès sinon via le panel de votre hébergeur), toutes les règles ne seront pas reéxécutés.</p>
<p class="warning">C&rsquo;est une configuration en IPv4, la même chose est a faire en IPv6 avec la commande <strong>ipv6tables</strong> !</p>
<pre><code class="bash">#!/bin/sh
IPT="/sbin/iptables"

# Supression des anciennes regles pour que celles presentes soient appliques
$IPT --flush
$IPT --delete-chain
$IPT -t nat --flush
$IPT -t nat --delete-chain

# Regles par defaut
$IPT -P INPUT DROP
$IPT -P FORWARD DROP
$IPT -P OUTPUT ACCEPT # On choisit la solution de facilité et on permet au serveur d'accéder a tout le monde extérieur. Une meilleure pratique est de bloquer la sortie de certains paquets qui pourraient être émis en cas de compromisation de votre serveur. Ce qui permanenterait de réduire les attaques possible à partir de votre serveur.

# Aucune restriction sur l'interface de loopback
$IPT -A INPUT -i lo -j ACCEPT
$IPT -A OUTPUT -o lo -j ACCEPT

# All TCP session

# Oblige que les paquets TCP commencent pas une connexion (comportement normal de TCP)
$IPT -A INPUT -p tcp ! --syn -m state --state NEW -j DROP

# On accepte tout les paquets qui proviennent d'une session TCP déjà établie.
# Si le serveur ouvre une connexion TCP vers un destination extérieur, via
# cette commande, la réponse ne sera pas DROP.
$IPT -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
$IPT -A INPUT -p tcp --dport 20 -j ACCEPT # ftp-data
$IPT -A INPUT -p tcp --dport 21 -j ACCEPT # ftp
$IPT -A INPUT -p tcp --dport 22 -j ACCEPT # SSH
$IPT -A INPUT -p tcp --dport 80 -j ACCEPT # http
$IPT -A INPUT -p tcp --dport 443 -j ACCEPT # https

# Accepte les paquets ICMP (pour la configuration des protocoles de routage internet comme BGP
# ICMP ping est utilisé, nous autorisons donc les pings)
$IPT -A INPUT -p ICMP --icmp-type 8 -j ACCEPT</code></pre>
<h1>Valider votre configuration</h1>
<p>Faites bien tout les tests de tout vos service pour être bien sur que tout est bon. Une fois le cas il vous reste plus qu&rsquo;a rendre cette configuration permanente (après un reboot iptables reprendra la configuration que vous avez mise).</p>
<h1>Sauvegarder votre configuration</h1>
<p>Pour sauvegarder votre configuration (vérifiez bien avant que tout est bon !).<br />
Vous aurez besoin de la commande iptables-save.<br />
Vous devez l&rsquo;installer via.</p>
<pre><code class="shell">apt-get install iptables-converter</code></pre>
<p>ou</p>
<pre><code class="shell">apt-get install iptables-persistent</code></pre>
<pre><code class="shell">mkdir /etc/iptables
iptables-save &gt; /etc/iptables/rules</code></pre>
<p>Cela permet de sauvegarder les règles iptables dans le fichier /etc/iptables/rules</p>
<p>Nous allons maintenant faire un script pour charger ce fichier. Pour cela on va utiliser un hook présent dans ifconfig. Avant que les interfaces réseaux soit disponibles (montées), nous allons charger les règles <em>iptables</em>.</p>
<p>Créez un fichier /etc/network/if-pre-up.d/iptables et mettez cette commande dedans :</p>
<pre><code class="bash">#!/bin/sh
/sbin/iptables-restore &lt; /etc/iptables/rules</code></pre>
<p>N&rsquo;oubliez pas de donner les droit d&rsquo;execution a ce nouveau fichier et tout est bon !</p>
<pre><code class="shel">chmod +x /etc/iptables/rules</code></pre>
<p>L’article <a rel="nofollow" href="https://blog.angenieux.info/linux/serveur/installation-configuration-firewall-iptables/">Installation et configuration d&rsquo;un firewall Iptables</a> est apparu en premier sur <a rel="nofollow" href="https://blog.angenieux.info">RMFB - Read My F-Blog</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://blog.angenieux.info/linux/serveur/installation-configuration-firewall-iptables/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Raccourcis VIM</title>
		<link>https://blog.angenieux.info/linux/astuces/raccourcis-vim/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=raccourcis-vim</link>
					<comments>https://blog.angenieux.info/linux/astuces/raccourcis-vim/?noamp=mobile#respond</comments>
		
		<dc:creator><![CDATA[Rémi ANGENIEUX]]></dc:creator>
		<pubDate>Sat, 19 Dec 2015 13:07:48 +0000</pubDate>
				<category><![CDATA[Astuces]]></category>
		<category><![CDATA[Raccourci]]></category>
		<category><![CDATA[vim]]></category>
		<guid isPermaLink="false">http://blog.angenieux.info/?p=18</guid>

					<description><![CDATA[<p>Commandes les plus utiles de l'éditeur en ligne de commande VIM.</p>
<p>L’article <a rel="nofollow" href="https://blog.angenieux.info/linux/astuces/raccourcis-vim/">Raccourcis VIM</a> est apparu en premier sur <a rel="nofollow" href="https://blog.angenieux.info">RMFB - Read My F-Blog</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>VIM c&rsquo;est bien, mais si on sait pas utiliser ses commandes ça sert à rien. Donc voici quelques commandes utiles :</p>
<h1>Général</h1>
<pre>
:q close
:w write/saves
:wa[!] write/save all windows [force]
:wq write/save and close
:x save and quit, same as wq
:q! force close if file has changed and not save changes
v Enter visual mode for selection of LINES
C-v Enter visual mode for selection of BLOCKS
y Yank/copy selected region
yy Yank/copy entire line
"y Yank/copy marked region into register (register from a-z)
c Cut selection
p Paste yanked content
"p Paste yanked content in register (from a-z)
P Paste yanked content BEFORE
u Undo
C-r Redo
:! Execute shell command
C-z send vim to background (fg brings it to front again)</pre>
<h1>Insert mode</h1>
<pre>
a Append text after the cursor
A Append text at the end of the line
i Insert text before the cursor
I Insert text before the first non-blank in the line
o Begin a new line BELOW the cursor and insert text
O Begin a new line ABOVE the cursor and insert text
s Erase the current letter under the cursor, set insert-mode
S Erase the whole line, set insert-mode
cc Delete the current line, set insert-mode
cw Delete word, set insert-mode
dd Delete line under curser
</pre>
<h1>Commandes</h1>
<pre>
:syntax on
:set number Affiche les numéros de ligne
</pre>
<p>L’article <a rel="nofollow" href="https://blog.angenieux.info/linux/astuces/raccourcis-vim/">Raccourcis VIM</a> est apparu en premier sur <a rel="nofollow" href="https://blog.angenieux.info">RMFB - Read My F-Blog</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://blog.angenieux.info/linux/astuces/raccourcis-vim/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Installation d&#8217;un serveur MySql</title>
		<link>https://blog.angenieux.info/linux/serveur/installation-serveur-mysql/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=installation-serveur-mysql</link>
					<comments>https://blog.angenieux.info/linux/serveur/installation-serveur-mysql/?noamp=mobile#respond</comments>
		
		<dc:creator><![CDATA[Rémi ANGENIEUX]]></dc:creator>
		<pubDate>Sat, 19 Dec 2015 13:04:38 +0000</pubDate>
				<category><![CDATA[Serveur]]></category>
		<category><![CDATA[debian]]></category>
		<category><![CDATA[Installation]]></category>
		<category><![CDATA[MySQL]]></category>
		<guid isPermaLink="false">http://blog.angenieux.info/?p=16</guid>

					<description><![CDATA[<p>Procédure pour installer un serveur MySQL ainsi qu'un utilisateur et une base de donnée associée à cet utilisateur.</p>
<p>L’article <a rel="nofollow" href="https://blog.angenieux.info/linux/serveur/installation-serveur-mysql/">Installation d&rsquo;un serveur MySql</a> est apparu en premier sur <a rel="nofollow" href="https://blog.angenieux.info">RMFB - Read My F-Blog</a>.</p>
]]></description>
										<content:encoded><![CDATA[<h1>Installation du serveur</h1>
<p>De ce côté je vais rien vous apprendre, on utilise apt :</p>
<pre><code class="shell">apt-get install mysql-server</code></pre>
<p>Lorsque l&rsquo;installateur vous demander de rentrer le mot de passe superutilisateur de mysql (root) ne mettez surtout pas de caractères spéciaux car sinon vous pourrez pas vous connecter. C&rsquo;est assez étrange mais bon.</p>
<h1>Configuration</h1>
<p>Une bonne pratique est de sécuriser votre serveur tout de suite. Pour cela exécutez la commande :</p>
<pre><code class="shell">mysql_secure_installation</code></pre>
<p>Rentrez votre mot de passe utilisé lors de l&rsquo;installation</p>
<p class="information">Si vous avez utilisé des caractère spéciaux ils seront reconnus ici mais pas lors de la connexion a la base de donnée.</p>
<p>Répondez « oui » a toutes les questions pour augmenter au mieux la sécurité.</p>
<h2>Création d&rsquo;un utilisateur</h2>
<p>Pour cela on va le faire en SQL, on va donc se connecter en tant que <strong>root </strong>(utilisateur mysql) pour entrer nos requêtes.</p>
<pre><code class="shell">mysql -u root -p</code></pre>
<p>Il suffit ensuite de créer notre nouvel utilisateur comme cela :</p>
<pre><code class="sql">CREATE USER "nom_utilisateur"@"localhost";
SET password FOR "nom_utilisateur"@"localhost" = password('mot_de_passe');</code></pre>
<p>Si vous voulez créer une table où il a tout les droits (pas recommandé)</p>
<pre><code class="sql">GRANT ALL ON nom_base.* TO "nom_utilisateur"@"localhost";</code></pre>
<p>L’article <a rel="nofollow" href="https://blog.angenieux.info/linux/serveur/installation-serveur-mysql/">Installation d&rsquo;un serveur MySql</a> est apparu en premier sur <a rel="nofollow" href="https://blog.angenieux.info">RMFB - Read My F-Blog</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://blog.angenieux.info/linux/serveur/installation-serveur-mysql/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Ouvrir/translation des ports derrière OpenVPN</title>
		<link>https://blog.angenieux.info/linux/serveur/ouvrir-translation-ports-derriere-openvpn/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=ouvrir-translation-ports-derriere-openvpn</link>
					<comments>https://blog.angenieux.info/linux/serveur/ouvrir-translation-ports-derriere-openvpn/?noamp=mobile#respond</comments>
		
		<dc:creator><![CDATA[Rémi ANGENIEUX]]></dc:creator>
		<pubDate>Tue, 10 Nov 2015 20:13:44 +0000</pubDate>
				<category><![CDATA[Astuces]]></category>
		<category><![CDATA[Serveur]]></category>
		<category><![CDATA[Bittorent]]></category>
		<category><![CDATA[debian]]></category>
		<category><![CDATA[iptables]]></category>
		<category><![CDATA[OpenVPN]]></category>
		<guid isPermaLink="false">http://blog.angenieux.info/?p=13</guid>

					<description><![CDATA[<p>Si vous utilisez des protocoles dit "drity" tel que BitTorrent derrière votre VPN, vous avez besoin de translation de port. Cet article vous explique comment la réaliser.</p>
<p>L’article <a rel="nofollow" href="https://blog.angenieux.info/linux/serveur/ouvrir-translation-ports-derriere-openvpn/">Ouvrir/translation des ports derrière OpenVPN</a> est apparu en premier sur <a rel="nofollow" href="https://blog.angenieux.info">RMFB - Read My F-Blog</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>C&rsquo;est bien beau d&rsquo;avoir un VPN mais des fois on a besoin que les clients puissent utiliser des services un peu exotiques. On appel ces protocoles les dirty protocols (Bittorent en fait partis). Or il est impossible d&rsquo;utiliser ces protocoles dernière un <a href="https://fr.wikipedia.org/wiki/Network_address_translation">NAT</a> vu que le serveur VPN ne sait pas vers quel machine il doit rediriger le trafic entrant.<br />
Sur une Box (qui utilise aussi <a href="https://fr.wikipedia.org/wiki/Network_address_translation">NAT</a>) <a href="https://fr.wikipedia.org/wiki/Universal_Plug_and_Play">uPnP</a> ou autre permet d&rsquo;ouvrir les ports de manière dynamique. Mais personnellement je préfère tout gérer de bout en bout, donc je préfère faire une redirection de port.<br />
Pour cela il faut que notre client OpenVPN ait toujours la même adresse IP car notre règle de redirection de port va s&rsquo;appuyer sur une adresse IP destination.<br />
Pour cela je vous redirige vers <a href="http://blog.angenieux.info/openvpn-ipv4-ipv6/">cet article</a>.</p>
<h1>Iptables</h1>
<div id="attachment_46" style="width: 224px" class="wp-caption alignright"><a href="https://blog.angenieux.info/linux/serveur/ouvrir-translation-ports-derriere-openvpn/attachment/iptables/#main" rel="attachment wp-att-46"><img aria-describedby="caption-attachment-46" decoding="async" class="wp-image-46 size-medium" src="https://blog.angenieux.info/wp-content/uploads/2017/10/Iptables-214x300.gif" alt="Legende" width="214" height="300" /></a><p id="caption-attachment-46" class="wp-caption-text">Cas d&rsquo;utilisation des différentes chaines Iptable</p></div>
<p>Maintenant que nous une adresse IP statique côté client il faut faire la redirection de port. On va donc travailler dans la <em>table</em> NAT et dans la <em>chaine PREROUTING</em> car c&rsquo;est la <em>chaine</em> qui permet de modifier une adresse IP/port destinataire.</p>
<p>Ce qui donne cette commande :</p>
<pre><code class="shell">iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 32936 -j DNAT --to-destination 10.0.0.6:32936</code></pre>
<p>Là ça transforme tout les paquets <strong>TCP</strong> a destination de votre serveur OpenVPN et avec le port destination <strong>3296 </strong>en un paquets qui auras pour destination <strong>10.0.0.6</strong> et pour port <strong>32936</strong>. Puis le paquet va être routé via la table de routage de votre serveur OpenVPN.</p>
<p class="information">Vous pouvez remplacer TCP par UPD.<br />
Bittorent utilise UDP <strong>ET</strong> TCP</p>
<p>Vous avez donc bien fait votre redirection de port !</p>
<p>L’article <a rel="nofollow" href="https://blog.angenieux.info/linux/serveur/ouvrir-translation-ports-derriere-openvpn/">Ouvrir/translation des ports derrière OpenVPN</a> est apparu en premier sur <a rel="nofollow" href="https://blog.angenieux.info">RMFB - Read My F-Blog</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://blog.angenieux.info/linux/serveur/ouvrir-translation-ports-derriere-openvpn/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>FTP &#8211; mettre en place des dossiers partagés</title>
		<link>https://blog.angenieux.info/linux/serveur/ftp-dossiers-partages/?utm_source=rss&#038;utm_medium=rss&#038;utm_campaign=ftp-dossiers-partages</link>
					<comments>https://blog.angenieux.info/linux/serveur/ftp-dossiers-partages/?noamp=mobile#respond</comments>
		
		<dc:creator><![CDATA[Rémi ANGENIEUX]]></dc:creator>
		<pubDate>Sat, 26 Oct 2013 00:17:13 +0000</pubDate>
				<category><![CDATA[Astuces]]></category>
		<category><![CDATA[Serveur]]></category>
		<category><![CDATA[Bind]]></category>
		<category><![CDATA[debian]]></category>
		<category><![CDATA[FTP]]></category>
		<guid isPermaLink="false">http://blog.angenieux.info/?p=10</guid>

					<description><![CDATA[<p>Astuce permettant de partager des dossiers entre les virtual user FTP.</p>
<p>L’article <a rel="nofollow" href="https://blog.angenieux.info/linux/serveur/ftp-dossiers-partages/">FTP &#8211; mettre en place des dossiers partagés</a> est apparu en premier sur <a rel="nofollow" href="https://blog.angenieux.info">RMFB - Read My F-Blog</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>Proftpd c&rsquo;est super, surtout avec les virtual user. Mais quand on a pas mal d&rsquo;utilisateurs on veux des fois aussi qu&rsquo;ils puissent se partager des choses.<br />
Le premier réflexe c&rsquo;est de créer un un lien symbolique (<em>ln -s</em>) avec les bon droits UNIX/virtual user. Ouai sauf que&#8230; <strong>Non</strong>.<br />
Cela ne peut pas fonctionner car vos utilisateurs sont <em>chrooter</em>, votre user vois comme racine du système de fichier non pas <em>/</em> mais son <em>home</em>. Comme un lien symbolique n&rsquo;est ni plus ni moins qu&rsquo;un raccourci, celui-ci ne peut pas aboutir à la bonne destination.<br />
Si dans le home de <em>Patrick</em> il y avait un lien symbolique vers le un dossier du home de <em>Jean</em>. On aurait donc un fichier <em>/home/patrick/jean-partage</em> par exemple. Hors ce lien symbolique pointerait donc vers <em>/home/jean/partage</em>. Sauf que pour <strong>Patrick</strong> la racine du système de fichier est <em>/home/patrick</em>. Suivre le lien symbolique revient donc à aller dans <em>/home/patrick/home/jean/partage</em>. Donc ça ne marchera pas.</p>
<p>La solution, mettre en place un point de montage</p>
<pre><code class="shell">mount --bind /home/dossier/reel/a/partager /home/dossier/d/acces/au/dossier/paratge</code></pre>
<p>Et voilà maintenant ça marche !</p>
<p>Maintenant à vous de vous amuser avec les droits UNIX pour faire ce que vous voulez</p>
<p>L’article <a rel="nofollow" href="https://blog.angenieux.info/linux/serveur/ftp-dossiers-partages/">FTP &#8211; mettre en place des dossiers partagés</a> est apparu en premier sur <a rel="nofollow" href="https://blog.angenieux.info">RMFB - Read My F-Blog</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://blog.angenieux.info/linux/serveur/ftp-dossiers-partages/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
	</channel>
</rss>
