Forcer un controleur de domaine a « monter » sysvol et netlogon

Parfois, lors d’une migration de serveur, si l’ancien contrôleur de domaine est un peu trop bancal, il se peut que la réplication de l’active directory vers le nouveau serveur échoue, le pire étant que parfois cela se produit sans que l’échec de migration soit réellement visible.

Cela se traduit par le fait que le nouveau contrôleur de domaine ne rentre pas dans ses fonctions en partageant le répertoire SYSVOL et NETLOGON, ce qui, si l’on n’a pas vu le problème avant de descendre l’ancien, mener au désastre de ne plus avoir aucun contrôleur de domaine actif.

La solution… genre kamikaze … Mais parfois pas trop le choix.

copier manuellement le répertoire SYSVOL de l’ancien serveur (ou d’un backup) sur le nouveau serveur
puis dans le registre sur la clef
HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\Netlogon\Parameters
Mettre la valeur SysVolReady=1
puis rebooter => Le nouveau contrôleur de domaine devrais monter le sysvol et le netlogon.

Il convient alors de vérifier que si les 5 rôles FSMO ont bien été rapatriés ou pas. Et si tel n’est pas le cas, il faut les forcer a migrer avec ntdsutil.

Voir l’état d’une réplication DFS

Le système DFS de Microsoft est particulièrement puissant mais aussi beaucoup trop hermétique
En effet il n’existe pas de console permettant de visualiser clairement la file d’attente ni de voir la progression de la synchronisation entre les différents réplicats.
Heureusement une commande, dont la simplicité est égale à leurs habitudes, existe:

dfsrdiag backlog /ReceivingMember:(nom fqdn du serveur destination) /SendingMember:(nom fqdn du serveur source) /RGName:"(nom de la branche)" /RFName:"(nom du groupe de réplication)"

exemple:

dfsrdiag backlog /ReceivingMember:srv2.reseau.local /SendingMember:srv1.reseau.local /RGName:"reseau.local\partage\dossiers_communs" /RFName:"dossiers_communs"

pour voir l’état de réplication du répertoire dossiers_communs situé dans la racine partage

Un petit script qui efface les fragments d’installations, les fichiers log gzippé de plus de 30 jours etc…:

#/bin/bash
apt-get autoremove
apt-get autoclean
apt-get clean
dpkg --purge $(COLUMNS=200 dpkg -l | grep "^rc" | tr -s ' ' | cut -d ' ' -f 2)
find /var/log/ -name "*.gz" -mtime +30 -a -exec rm -f {} \;

Creer un backup mx avec postfix et spamassassin

Le serveur de courriel utilisé est postfix

sudo apt-get install postfix

Ensuite on créer la base de données des destinations des site a relayer c’est a dire la liste de leur mx principal

sudo vi /etc/postfix/transport
### debut du fichier transport
toto.com smtp:mail.toto.com
titi.fr smtp:mx1.titi.fr
(et ainsi de suite avec tout les sites a relayer)
### fin du fichier transport

ensuite on converti le fichier text transport en hash comprehensible pas postfix:

cd /etc/postfix/
sudo postmap transport

=> ceci génère le fichier transport.db

Note importante: Si on rajoute des domaine a relayer par la suite, il ne faudra pas oublier de régénérer le fichier transport.db avec cette commande

sudo vi main.cf
### debut du fichier main.cf

# Debian specific: Specifying a file name will cause the first
# line of that file to be used as the name. The Debian default
# is /etc/mailname.
#myorigin = /etc/mailname

smtpd_banner = $myhostname ESMTP $mail_name (Ubuntu)
biff = no

# appending .domain is the MUA's job.
append_dot_mydomain = no

# Uncomment the next line to generate "delayed mail" warnings
#delay_warning_time = 4h

readme_directory = no

# TLS parameters
smtpd_tls_cert_file=/etc/ssl/certs/ssl-cert-snakeoil.pem
smtpd_tls_key_file=/etc/ssl/private/ssl-cert-snakeoil.key
smtpd_use_tls=yes
smtpd_tls_session_cache_database = btree:${data_directory}/smtpd_scache
smtp_tls_session_cache_database = btree:${data_directory}/smtp_scache

# See /usr/share/doc/postfix/TLS_README.gz in the postfix-doc package for
# information on enabling SSL in the smtp client.

alias_maps = hash:/etc/aliases
alias_database = hash:/etc/aliases
myorigin = /etc/mailname

mynetworks = 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128
mailbox_size_limit = 0
recipient_delimiter = +
inet_interfaces = all

#Notre configuration commence ici
myhostname = mxbackup1.mondomaine.com
mydestination = $myhostname, monserveur.{mondomainelocal}, localhost.[mondomainelocal}, localhost
relayhost =

relay_recipient_maps =
relay_domains = $mydestination,
  toto.com,
  titi.fr

smtpd_recipient_restrictions = permit_sasl_authenticated,
  permit_mynetworks,
  permit_mx_backup,
  reject_non_fqdn_hostname,
  reject_non_fqdn_sender,
  reject_non_fqdn_recipient,
  reject_unauth_destination,
  reject_unauth_pipelining,
  reject_invalid_hostname,
  reject_rbl_client zen.spamhaus.org
# helo required
smtpd_helo_required = yes
# disable vrfy command
disable_vrfy_command = yes
smtpd_data_restrictions =
  reject_unauth_pipelining,
  permit

# Delais au dela duquel on envoi un message de retard de distribution
delay_warning_time = 4h
# will it be a permanent error or temporary
unknown_local_recipient_reject_code = 450
# Duree de retention maxi
maximal_queue_lifetime = 15d
# Temps entre les essais quans la connexion vers le mx primaire echoue
minimal_backoff_time = 1000s
maximal_backoff_time = 8000s
# Temps maxi entre le helo et l'envoi par l'expediteur
smtp_helo_timeout = 60s
# nombre de destinataires maxi
smtpd_recipient_limit = 25
# how many error before back off.
smtpd_soft_error_limit = 3
# how many max errors before blocking it.
smtpd_hard_error_limit = 12

# fichier contenant les destinations des sites relayes.
transport_maps = hash:/etc/postfix/transport

# fin du fichier main.cf

ce fichier fait réference a un fichier mailname dans le dossier etc. Celui-ci doit contenir le nom du smtp de votre hebergeur:

sudo vi /etc/mailname

puis tapez le nom de votre serveur smtp sortant, par exemple:

smtp.free.fr

(si vous êtes chez free)
puis enregistrez le fichier.

Si tout a fonctionné, le lancement du service postfix

sudo service postfix start

devrait reussir.

A ce stade, cela fonctionne, mais il se trouve que les spammeurs sont des petits malins et savent qu’il est plus facile de s’infiltrer par le backup que par le serveur principal souvent mieux défendu.

Donc il convient d’armer le backup MX d’un antispam

installation de spamassassin:

sudo apt-get install -qq spamassassin spamc

Ensuite on créer un groupe spécialement pour spamassassin:

sudo groupadd -g 5001 spamd
sudo useradd -u 5001 -g spamd -s /sbin/nologin -d /var/lib/spamassassin spamd
sudo mkdir /var/lib/spamassassin
sudo chown spamd:spamd /var/lib/spamassassin

ensuite on configure spam assassin pour taguer SPAM les mails dont le score est supérieur à 5

sudo vi /etc/spamassassin/local.cf
### debut du fichier local.cf
rewrite_header Subject [***** SPAM _SCORE_ *****]
required_score 5.0
# to be able to use _SCORE_ we need report_safe set to 0
# If this option is set to 0, incoming spam is only
# modified by adding some \"X-Spam-\" headers and no
# changes will be made to the body.
report_safe 0

# Enable the Bayes system
use_bayes 1
use_bayes_rules 1
# Enable Bayes auto-learning
bayes_auto_learn 1

# Enable or disable network checks
skip_rbl_checks 0
use_razor2 0
use_pyzor 0
# This is the right place to customize your installation of SpamAssassin.
#
# See 'perldoc Mail::SpamAssassin::Conf' for details of what can be
# tweaked.
#
# Only a small subset of options are listed below
#
###########################################################################

# Add *****SPAM***** to the Subject header of spam e-mails
#
# rewrite_header Subject *****SPAM*****

# Save spam messages as a message/rfc822 MIME attachment instead of
# modifying the original message (0: off, 2: use text/plain instead)
#
# report_safe 1

# Set which networks or hosts are considered 'trusted' by your mail
# server (i.e. not spammers)
#
# trusted_networks 212.17.35.

# Set file-locking method (flock is not safe over NFS, but is faster)
#
# lock_method flock

# Set the threshold at which a message is considered spam (default: 5.0)
#
# required_score 5.0

# Use Bayesian classifier (default: 1)
#
# use_bayes 1

# Bayesian classifier auto-learning (default: 1)
#
# bayes_auto_learn 1

# Set headers which may provide inappropriate cues to the Bayesian
# classifier
#
# bayes_ignore_header X-Bogosity
# bayes_ignore_header X-Spam-Flag
# bayes_ignore_header X-Spam-Status

# Some shortcircuiting, if the plugin is enabled
#
ifplugin Mail::SpamAssassin::Plugin::Shortcircuit
#
# default: strongly-whitelisted mails are *really* whitelisted now, if the
# shortcircuiting plugin is active, causing early exit to save CPU load.
# Uncomment to turn this on
#
# shortcircuit USER_IN_WHITELIST on
# shortcircuit USER_IN_DEF_WHITELIST on
# shortcircuit USER_IN_ALL_SPAM_TO on
# shortcircuit SUBJECT_IN_WHITELIST on

# the opposite; blacklisted mails can also save CPU
#
# shortcircuit USER_IN_BLACKLIST on
# shortcircuit USER_IN_BLACKLIST_TO on
# shortcircuit SUBJECT_IN_BLACKLIST on

# if you have taken the time to correctly specify your "trusted_networks",
# this is another good way to save CPU
#
# shortcircuit ALL_TRUSTED on

# and a well-trained bayes DB can save running rules, too
#
# shortcircuit BAYES_99 spam
# shortcircuit BAYES_00 ham

endif # Mail::SpamAssassin::Plugin::Shortcircuit

### fin du fichier local.cf

Petite subtilitée: le service (daemon) de spamassassin est desactivé par défaut
donc

sudo vi /etc/default/spamassassin
et changer ENABLED=0 en ENABLE=1

puis

sudo service spamassassin start

pour mettre a jour spamassassin la commande est

sa-update

suivi du redémarrage du service:

service spamassassin restart

ce qui donne

sudo sa-update && sudo service spamassassin restart

ceci peut etre automatiser dans un tache quotidienne cron:
sudo crontab -e
ajouter la ligne
0 4 * * * sa-update && service spamassassin restart

pour le mettre a jour toute les nuit a 4h du matin.

une fois spamassassin installé, il faut l’interconnecter dans postfix
Ceci est fait dans le master.cf, le second fichier de configuration de posfix

sudo vi /etc/postfix/master.cf
### debut du fichier master.cf
#
# Postfix master process configuration file. For details on the format
# of the file, see the master(5) manual page (command: "man 5 master").
#
# Do not forget to execute "postfix reload" after editing this file.
#
# ==========================================================================
# service type private unpriv chroot wakeup maxproc command + args
# (yes) (yes) (yes) (never) (100)
# ==========================================================================
smtp inet n - - - - smtpd
  -o smtpd_helo_restrictions=reject_unknown_hostname,permit
  -o content_filter=spamassassin
#smtp inet n - - - 1 postscreen
#smtpd pass - - - - - smtpd
#dnsblog unix - - - - 0 dnsblog
#tlsproxy unix - - - - 0 tlsproxy
#submission inet n - - - - smtpd
# -o syslog_name=postfix/submission
# -o smtpd_tls_security_level=encrypt
# -o smtpd_sasl_auth_enable=yes
# -o smtpd_client_restrictions=permit_sasl_authenticated,reject
# -o milter_macro_daemon_name=ORIGINATING
#smtps inet n - - - - smtpd
# -o syslog_name=postfix/smtps
# -o smtpd_tls_wrappermode=yes
# -o smtpd_sasl_auth_enable=yes
# -o smtpd_client_restrictions=permit_sasl_authenticated,reject
# -o milter_macro_daemon_name=ORIGINATING
#628 inet n - - - - qmqpd
pickup fifo n - - 60 1 pickup
cleanup unix n - - - 0 cleanup
qmgr fifo n - n 300 1 qmgr
#qmgr fifo n - n 300 1 oqmgr
tlsmgr unix - - - 1000? 1 tlsmgr
rewrite unix - - - - - trivial-rewrite
bounce unix - - - - 0 bounce
defer unix - - - - 0 bounce
trace unix - - - - 0 bounce
verify unix - - - - 1 verify
flush unix n - - 1000? 0 flush
proxymap unix - - n - - proxymap
proxywrite unix - - n - 1 proxymap
smtp unix - - - - - smtp
relay unix - - - - - smtp
# -o smtp_helo_timeout=5 -o smtp_connect_timeout=5
showq unix n - - - - showq
error unix - - - - - error
retry unix - - - - - error
discard unix - - - - - discard
local unix - n n - - local
virtual unix - n n - - virtual
lmtp unix - - - - - lmtp
anvil unix - - - - 1 anvil
scache unix - - - - 1 scache
#
# ====================================================================
# Interfaces to non-Postfix software. Be sure to examine the manual
# pages of the non-Postfix software to find out what options it wants.
#
# Many of the following services use the Postfix pipe(8) delivery
# agent. See the pipe(8) man page for information about ${recipient}
# and other message envelope options.
# ====================================================================
#
# maildrop. See the Postfix MAILDROP_README file for details.
# Also specify in main.cf: maildrop_destination_recipient_limit=1
#
maildrop unix - n n - - pipe
  flags=DRhu user=vmail argv=/usr/bin/maildrop -d ${recipient}
#
# ====================================================================
#
# Recent Cyrus versions can use the existing "lmtp" master.cf entry.
#
# Specify in cyrus.conf:
# lmtp cmd="lmtpd -a" listen="localhost:lmtp" proto=tcp4
#
# Specify in main.cf one or more of the following:
# mailbox_transport = lmtp:inet:localhost
# virtual_transport = lmtp:inet:localhost
#
# ====================================================================
#
# Cyrus 2.1.5 (Amos Gouaux)
# Also specify in main.cf: cyrus_destination_recipient_limit=1
#
#cyrus unix - n n - - pipe
# user=cyrus argv=/cyrus/bin/deliver -e -r ${sender} -m ${extension} ${user}
#
# ====================================================================
# Old example of delivery via Cyrus.
#
#old-cyrus unix - n n - - pipe
# flags=R user=cyrus argv=/cyrus/bin/deliver -e -m ${extension} ${user}
#
# ====================================================================
#
# See the Postfix UUCP_README file for configuration details.
#
uucp unix - n n - - pipe
  flags=Fqhu user=uucp argv=uux -r -n -z -a$sender - $nexthop!rmail ($recipient)
#
# Other external delivery methods.
#
ifmail unix - n n - - pipe
  flags=F user=ftn argv=/usr/lib/ifmail/ifmail -r $nexthop ($recipient)
bsmtp unix - n n - - pipe
  flags=Fq. user=bsmtp argv=/usr/lib/bsmtp/bsmtp -t$nexthop -f$sender $recipient
scalemail-backend unix - n n - 2 pipe
  flags=R user=scalemail argv=/usr/lib/scalemail/bin/scalemail-store ${nexthop} ${user} ${extension}
mailman unix - n n - - pipe
  flags=FR user=list argv=/usr/lib/mailman/bin/postfix-to-mailman.py
${nexthop} ${user}
spamassassin unix - n n - - pipe
  user=spamd argv=/usr/bin/spamc -f -e
  /usr/sbin/sendmail -oi -f ${sender} ${recipient}

### fin du fichier master.cf

pour voir la file d’attente:

mailq

pour forcer la tentative d’envoi de la file d’attente:

postqueue -f

resoumettre la file d’attente (quand des messages n’arrivent pas a partir):

postsuper -r ALL

Réferences:

http://www.system-linux.eu/index.php?post/2009/01/15/Serveur-de-Backup-MX-sous-Postfix

http://www.howtoforge.com/postfix_backup_mx

http://www.debianadmin.com/how-to-filter-spam-with-spamassassin-and-postfix-in-debian.html

OpenVPN sur Ubuntu

Openvpn_logoL’installation d’OpenVPN présente un certain niveau de difficulté et il y’a des choses a bien garder a l’esprit.
En premier lieu, les étapes a réaliser:

1) Installer OpenVPN
2) Installer Webmin et le module de controle de OpenVPN
3) Creer l’autorité de certification
4) Creer les deux certificats (serveur et client)
5) Creer la connexion VPN partie serveur
6) Creer la connexion VPN partie cliente
7) Récuperer l’export de la partie cliente et sur l’ordinateur client dans le dossier correspondant
8) La connexion est opérationnelle.

En second lieu, le fait que l’on aura 3 réseaux: le réseau local du serveur VPN, le sous réseau de connexion, et le réseau local du client. Aucun des 3 ne doit être identiques sinon aucun routage n’est possible.
Dans cet exemple:
– le réseau local sera 192.168.10.0/24 au sein duquel, le serveur vpn sera en 192.168.10.5 sur sa carte eth0,
– le réseau de connexion 10.10.10.0/24. le réseau local du client est inconnu mais devra OBLIGATOIREMENT être différents de ces deux la.

1) Installer OpenVPN:

sudo apt-get install openvpn

Le VPN aura une interface réseau séparé (tun0) de l’interface de base (eth0) donc pour que les clients connecté puis accéder au réseau local il y aura 2 choses a effectuer:

  • S’assurer que le serveur VPN achemine les paquets entre le réseau de connexion et le réseau local en activant routage de paquets:
sudo vi /etc/sysctl.conf

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

  • Pour que les appareils du réseau local puisse répondent aux client connectés, il est nécessaire qu’ils puisse acheminer cette réponse. Les appareils ne connaissent qu’une adresse de sortie: la passerelle par défaut, donc pour des raisons pratique, c’est sur celle ci qu’il sera souhaitable d’ajouter la route vers les clients vpn pointant sur le serveur VPN.

Dans notre exemple, la route sera du style:

route add 10.10.10.0 mask 255.255.255.0 192.168.10.5

=>   où 192.168.10.5 est l’ip lan du serveur vpn et 10.10.10.0/24 le sous réseau de connexion vpn.

Il existe un cas d’exception: Free qui considère que leur usagers sont trop basiques pour avoir besoin de route statique donc, contrairement au livebox, sfr box et autres petits routeurs meme de premier prix, la Freebox n’intègre aucune route statique. Pour les malheureux freenautes, dont je fais parti, soit on transforme le serveur VPN en routeur pour en faire la passerelle par défaut du réseau, soit il faudra alors définir la route statique en persistant dans tous les appareil nécessitant un dialogue avec les clients VPN.

2) Installer webmin

(voir tuto webmin)

Installer le module openvpn en spécifiant le liens de téléchargement dans l’interface de webmin
L’adresse est:
http://www.openit.it/downloads/OpenVPNadmin/openvpn-2.6.wbm.gz

OPENVPN-1-install-module-webmin-openvpnDans Webmin =>Configuration de Webmin =>Module Webmin
recharger le modules => le module OpenVPN+CA est présent

OPENVPN-2-Apres-install-module-webmin-openvpn

3) Créer l’autorité de certification:

Remplir le formulaire puis valider.

IMPORTANT: contrairement a cette capture d’écran State doit contenir LE CODE du pays c’est a dire FR sinon cela provoque un message d’erreur.

OPENVPN-3-creation-autorite-certificationLa création dure un certain temps puis se termine:

OPENVPN-5-creation-autorite-termine

Ensuite cliquer sur Retourner a OpenVPN Administration

4) Créer les deux certificats (serveur et client):

Cliquer sur Certification authority list puis sur la droite de la ligne de votre autorité de certification sur list

D’abord le certificat serveur:

OPENVPN-7-creation-certificat-serveurPuis cliquer sur Sauvegarder
Ensuite le certificat client

OPENVPN-8-creation-certificat-client

Puis cliquer sur Sauvegarder

Normalement on doit a ce moment avoir 2 certificats avec le statut « active »:OPENVPN-9-resultat-creation-certificats

Cliquez sur « Retourner à OpenVPN Administration ».

5) Creer la connexion VPN partie serveur:

Sur l’écran OpenVPN Administration cliquez sur le bouton « VPN list » puis sur le bouton « New VPN server »

Creer la connexion Vpn en définissant
– le certificat sur le certificat serveur créé juste avant,
– L’interface désigner dans « Network Device for Bridge » est celle qui correspond a votre Lan. Dans cet exemple, c’est eth0
– la plage ip distribué hors du réseau lan du serveur vpn, par exemple 10.10.10.0/24
– l’algorithme d’authentification « Encrypt packets with cipher algorithm (option cipher) » doit être sur AES 256 CBC256 sinon ne fonctionne pas
– Le changement du port d’écoute peut être une bonne idée pour améliorer la sécurité.

OPENVPN-b-creation-vpn-server-definition-dhcpet en paramètres envoyés (a changer selon vos paramètres LAN):

push « route 192.168.10.0 255.255.255.0 »
push « dhcp-option DNS 192.168.10.3 »

Pour permettre le routage et la résolution DNS du réseau local derrière le serveur VPN.

et éventuellement: push « redirect-gateway » pour rediriger tout le trafic sur le VPN

OPENVPN-c-creation-vpn-server-definition-options-dhcppuis sauvegarder

Puis, très important, cliquer sur START pour l’activer.

6) Créer la connexion VPN partie cliente:

Cliquer sur Client List

Puis cliquer sur New VPN Client

OPENVPN-d-creation-vpn-client-1
Choisir le certificat client
Puis saisir l’ip externe (l’ip publique ou l’alias internet) de votre serveur VPN.
Note: Celle ci devra être statique ou aliassé avec un DNS dynamique.

OPENVPN-e-creation-vpn-client-1
puis Sauvegarder
Ensuite cliquer sur Export  pour récupérer le package de configuration pour l’ordinateur client a désarchiver puis copier dans le répertoire conf de celui-ci.

7) Vérification:

  • Avant de lancer la connexion un « sudo service openvpn restart » pour s’assurer de l’application des paramètres
  • S’assurer que dans le routeur (ou box) le port spécifié (ici 1194 udp) est ouvert vers l’ip du serveur VPN (ici 192.168.10.5)
  • Faire un ifconfig pour voir si l’interface tun0 est bien crée dans la liste des interfaces du serveur Ubuntu.

Il ne reste plus qu’a se connecter avec l’ordinateur client.

8) Références:

http://doc.ubuntu-fr.org/openvpn

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