Connecter Ubuntu Server à un VPN PPTP (installation du vpn client)

Contrairement a beaucoup de chose sous linux, la connexion cliente a un VPN PPTP sans interface graphique est pas d’une clarté limpide…

Les pré-requis:
– Avoir un serveur Vpn distant dont vous avez l’ip, le login et le mot de passe de connexion (dans mon exemple: Login => « Dominique », Mot de passe => « D7o6m1i2ni0que! », Adresse: « test.dfconcept.com ») (note: ils sont faux, c’est juste pour documenter ce didacticiel)
– Connaitre la plage Ip du sous réseau distant sur lequel on souhaite se connecter (dans mon cas 192.168.0.0/24)
– Définir arbitrairement un nom a cette connexion. (Dans mon exemple « MaConnexionVPN »)

La première chose c’est l’installation du paquet:

sudo apt-get install pptp-linux

Ensuite il faut ajouté une ligne dans le fichier /etc/ppp/chap-secrets avec
le login, le nom de la connexion, le mot de passe de la connexion selon le format suivant:
NomUtilisateur NomDeLaConnexion MotDePasse AdresseIp

sudo vi /etc/ppp/chap-secrets

Puis dans le fichier:

# Secrets for authentication using CHAP
# client        server  secret                  IP addresses
Dominique MaConnexionVPN D7o6m1i2ni0que! *

Ensuite il faut creer le fichier de connexion dans /etc/ppp/peers/

pty "pptp test.dfconcept.com --nolaunchpppd"
name Dominique
remotename MaConnexionVpn
require-mppe-128
file /etc/ppp/options.pptp
ipparam MaConnexionVpn

La derniere étape est de définir un script qui ajoutera dynamiquement les routes vers le réseau distants lors de l’établissement de la connexion vpn:

sudo vi /etc/ppp/ip-up.d/99mesroutesvpn

Puis dans se fichier faire un copier coller de ceci (a adapter a votre config):

#!/bin/bash

if [ "$PPP_IPPARAM" == "MaConnexionVpn" ]; then
        route add -net 192.168.0.0/24 dev $PPP_IFACE
fi

ensuite rendre ce script exécutable:

sudo chmod +x /etc/ppp/ip-up.d/99mesroutesvpn

Pour lancer la connexion:

sudo pon MaConnexionVpn

Pour l’arrêter

sudo poff

En cumulant cet article au précédent, il est possible de faire un routeur dont la sortie est un VPN.

Creer un routeur lan-lan sur ubuntu

Pour se créer un routeur Lan<=>Lan rapide, installer un Ubuntu sans aucun module.

régler eth0 sur une ip du premier réseau en statique
regler eth1 sur une ip du second réseau en statique

ensuite pour activer le routage des paquets entre les deux réseaux, lancer les commandes:

sudo route add -net (premier réseau) netmask (masque du premier réseau) gw (ip de la carte eth0)

sudo route add -net (second réseau) netmask (masque du second réseau) gw (ip de la carte eth1)

sudo vi /etc/sysctl.conf

décommenter la ligne
net.ipv4.ip_forward=1
puis sauvegarder et sortir.

=> le routage entre les deux réseaux est alors actif

Mise en situation dans mon cas:

  • Le réseau informatique est en 192.168.27.0/24
  • Le réseau téléphonique est en 192.168.65.0/24
  • Le réseau informatique et le réseau téléphonique possède tout deux un DHCP
  • Chaque réseau est sur son propre switch.
  • Le client doit pouvoir depuis le réseau informatique pouvoir accéder au statistique et aux paramètres de l’autocom.

schema_lan-lanSolution retenue:

  • Création d’un VLAN 10 sur le switch informatique pour la téléphonie. (sur une prise en non taguée et sur l’agrégat de prise du serveur 2012 en taguée)
  • Connexion du Switch Téléphonie sur la prise non taguée
  • Création d’un machine virtuelle Hyper-V ayant 2 cartes réseaux. la seconde réglée sur le VLAN 10
  • Installation de Ubuntu
  • Configuration de Eth0 en 192.168.27.7 masque 255.255.255.0 passerelle 192.168.27.1
  • Configuration de Eth1 en 192.168.65.254 masque 255.255.255.0
  • Réglage de l’autocom pour utiliser l’adresse 192.168.65.254 comme passerelle.

puis sur le Ubuntu:

sudo route add -net 192.168.27.0 netmask 255.255.255.0 gw 192.168.27.7
sudo route add -net 192.168.65.0 netmask 255.255.255.0 gw 192.168.65.254

A cette étape le réseau informatique pouvait pinger 192.168.65.254 mais pas l’autocom 192.168.65.1 => les paquets n’étaient pas envoyé vers l’autocom =>

sudo vi /etc/sysctl.conf

décommenter la ligne
net.ipv4.ip_forward=1
puis sauvegarder et sortir.

=> Le réseau informatique peut alors pinger l’autocom en 192.168.65.1 car le serveur Ubuntu envoi bien le paquet vers celui-ci.

Observation:

Oui c’est minimaliste, pas de pare-feu, rien du tout, c’est juste une démonstration qu’Ubuntu peut être d’un grand secours lors d’un déploiement et ce en très peu de temps pour ponter deux réseaux de confiance sans se lancer dans les lourdeurs du service ce routage de Windows, ni matériel supplémentaire.

script php lancé sur création de fichier avec incron sur ubuntu 14.04

Objectif:
Créer un script php exécutant un traitement sur un fichier reçu dans un dossier. Dans mon cas, c’était pour l’intégration automatique de fichiers csv reçu par ftp dans une base de donnée.

Méthode utilisée: Incron

Incron:
Logiciel qui permet de planifier le lancement d’un programme ou d’un script sur un événement système (fichier créé ou modifié etc…)
Très utilise pour réaliser un process se déclenchant à la réception d’un fichier.
L’installation de Incron se fait apt-get install.
La seule chose déroutante c’est que par défaut l’utilisateur root lui-même est interdit et donc il faut l’autoriser.

Donc cela donne:

sudo apt-get install incron
sudo vi /etc/incron.allow

=> ajouter une ligne contenant juste
root
=> enregistrer & quitter

sudo incrontab -e

=> on arrive sur nano et l’on peu ajouter

/var/www/sentinelle/depot IN_CLOSE_WRITE /var/www/sentinelle/sentinelle.php "$#"

=> lors de la création d’un fichier dans /var/www/sentinelle/depot,  le script sentinelle.php sera lancé avec le nom du fichier en argument.
La commande:

sudo chmod +x /var/www/sentinelle/sentinelle.php

aura été préalablement lancé pour rendre le script « exécutable » depuis un shell.

exemple de contenu du script schellscript.php:

#!/usr/bin/php
<?php
// $arg[0] correspond au nom du script
// $arg[1] correspond au 1er parametre
// $arg[2] correspond au 2eme parametre etc...

// si le nombre de parametres est différent du nombre prévu ou que le 1er correspond 
// a une demande d'aide on affiche l'aide 
if ($argc != 2 || in_array($argv[1], array('--help', '-help', '-h', '-?'))) {
?>

Ce script traite le fichier reçu en argument.

  Utilisation :
  <?php echo $argv[0]; ?> <option>

  <option> doit être le nom de fichier.
  Avec les options --help, -help, -h,
  et -?, vous obtiendrez cette aide.

<?php
// sinon execute le traitement normal du script
} else {
    echo $argv[1]."\n";
}
?>

Note: Attention à ce que le texte du script soit au format linux (retour à la ligne par \n) car ce dernier n’aime pas les scripts comportant des retour à la ligne format Microsoft (\r\n).

reférences:

Un excellent tutorial d’INCRON: http://www.admin-linux.fr/?p=4840
Un autre: http://www.cyberciti.biz/faq/linux-inotify-examples-to-replicate-directories/
Un dernier: http://www.howtoforge.com/triggering-commands-on-file-or-directory-changes-with-incron

Historique et configuration du shell « bash » (interpreteur de commande)

bash étant l’interpréteur de commande le plus courant dans linux.

Dans le dossier de l’utilisateur, il existe deux fichiers important à connaitre:

tapez « ls -al » dans le dossier de l’utilisateur et certains fichiers apparaissent:

drwxr-xr-x 4 dominique dominique 4096 août 25 11:40 .
drwxr-xr-x 3 root root 4096 mai 3 17:40 ..
-rw------- 1 dominique dominique 4692 août 28 22:32 .bash_history
-rw-r--r-- 1 dominique dominique 220 mai 3 17:40 .bash_logout
-rw-r--r-- 1 dominique dominique 3486 mai 3 17:40 .bashrc
drwx------ 2 dominique dominique 4096 mai 3 17:42 .cache
-rw------- 1 dominique dominique 176 juil. 20 15:03 .mysql_history
-rw-r--r-- 1 dominique dominique 675 mai 3 17:40 .profile
drwxr-xr-x 2 root root 4096 août 25 11:39 .vim
-rw------- 1 root root 5785 août 25 11:40 .viminfo

il s’agit des fichiers « .bash_history » et « .bashrc »

.bash_history est la liste des dernières commandes saisies. Très utilise pour se souvenir de ce que l’on a lancé précédemment car il garde un historique conséquent.

.bashrc est le fichier de configuration de l’interpréteur.

Comme vous le voyez, il en existe d’autres, tel que l’historique des commande mysql (si vous l’utilisez) et autres.

Régénérer les fichiers de stratégie par défaut

Par exemple suite a l’effacement accidentel du dossier Policies ou un dommage sur l’un des fichiers contenu dedans…

J’ai eu l’occasion de voir a plusieurs reprises ce problèmes. Il en résulte un fonctionnement hasardeux du domaine (parce qu’il n’y a plus les réglages effectués par défaut), des centaines, voire des milliers de messages d’erreurs dans les événements… bref le chaos !!!

La meilleur action est la restauration mais malheureusement, beaucoup de PME ne sauvegardent que leurs documents… Donc si on ne dispose pas d’une sauvegarde suivre cette méthode:

1) s’assurer de l’arborescence (et recréer si besoin les dossiers manquants):

 C:\windows\SYSVOL
 C:\windows\SYSVOL\domain
 C:\windows \SYSVOL\staging\domain
 C:\windows \SYSVOL\staging areas
 C:\windows \SYSVOL\domain\Policies
 C:\windows \SYSVOL\domain\scripts
 C:\windows \SYSVOL\SYSVOL

Ensuite il faut recréer les liens symbolique existants avec la commande mklink:

 cd c:\windows\SYSVOL
 mklink /J votrenomdedomainefqdn c:\windows\SYSVOL\domain
 cd "staging areas"
 mklink /J votrenomdedomainefqdn c:\windows\SYSVOL\staging\domain

exemple si votre domaine s’appelle « reseau.local »:

 cd c:\windows\SYSVOL
 mklink /J reseau.local c:\windows\SYSVOL\domain
 cd "staging areas"
 mklink /J reseau.local c:\windows\SYSVOL\staging\domain

ce qui recréera les liens symboliques nécessaires.

Terminez par:

dcgpofix /ignoreschema

Les stratégies systèmes « default domain policies » et « default domain controlers policies » sont recrées.

Explication des valeurs de chmod pour les débutants

Valeur Niveau de permission

400 Lecture pour le propriétaire
200 Ecriture pour le propriétaire
100 Exécution pour le propriétaire
40 Lecture pour le groupe
20 Ecriture pour le groupe
10 Exécution pour le groupe
4 Lecture pour tous le monde
2 Ecriture pour tous le monde
1 Exécution pour tous le monde

Donc:

775 Lecture écriture, exécution pour le propriétaire, lecture, écriture, exécution pour le groupe, lecture exécution pour les autres
770 Lecture écriture, exécution pour le propriétaire, lecture, écriture, exécution pour le groupe, rien pour les autres
755 Lecture écriture, exécution pour le propriétaire, lecture, exécution, pour le groupe, lecture exécution pour les autres
777 Lecture, écriture, exécution pour tous le monde.

« Error in evaluating table display tls Error » sur liste des partages d’un nas Netgear

Le problème viens du navigateur Internet Explorer et non du nas.
Utilisez de préférence Chrome qui fonctionne parfaitement avec le materiel NETGEAR.

Windows Serveur 2012: Mettre à jour la version d’évaluation en version standard

Contrairement aux bêtises que j’ai lues sur le web, c’est tout à fait possible.
La ligne de commande est:

DISM /online /Set-Edition:ServerStandard /ProductKey:(votre clef de produit) /AcceptEULA

Récuperer le modèle et le numéro de série d’un ordinateur

Si par exemple lors d’une télémaintenance vous devez récupérer le numéro de série d’un ordinateur, pour faire appel au constructeur ou pour commandé une pièce détachée, il n’est pas toujours évident de demander au client de vous le dicter si vous ne l’avez pas sur la facture de vente. Il existe une façon de l’obtenir en commande msdos:

Pour le modèle:

wmic csproduct get name,vendor,identifyingNumber

Pour le numéro de série

wmic bios get serialnumber

Pour la liste des adresses mac (bien qu’on peu aussi les obtenir avec ipconfig /all)

wmic nic get macaddress,description