Wiki [Tuto] Se connecter à son OpenVPN depuis son LAN et WAN malgré routeur pas compatible hairpinning

0
26
sept.
2017

Sommaire

Introduction

Pour une raison suspicieuse, les box des Fournisseurs d'Accès Internet (FAI) sont régulièrement incompatible avec le hairpinning. Pour outrepasser ce problème, nous allons simplement dupliquer le fichier de conf (.ovpn) afin qu'un soit compatible avec le LAN et un avec internet (WAN). Ensuite nous lancerons un script au démarrage de la machine qui décidera quel fichier de conf (.ovpn) il faut lancer en fonction de si votre serveur est sur le même réseau ou non.
Ce script est compatible avec les tunnels SSH (au choix en local ou en wan ou même les deux ou aucun).

Mise en place sur le client

Note : pour ce tuto je pars du principe que votre OpenVPN est déjà installé et le port ouvert sur le routeur du réseau du serveur (par défaut 1194).

  1. Copiez le fichier de configuration de votre client OpenVPN, nous allons ajouter _LAN dans le titre du nouveau fichier
sudo cp /etc/openvpn/monUser.ovpn cp /etc/openvpn/monUser_LAN.ovpn 
  1. Éditez la copie qui nous servira pour le LAN
sudo nano /etc/openvpn/monUser_LAN.ovpn
  • A la ligne commençant par "remote", rajoutez _LAN dans le nom de domaine (ou remplacez le nom de domaine par l'IP LAN statique de votre serveur OpenVPN).
remote www.server_LAN.com 1194
  1. Ensuite éditez votre fichier /etc/hosts afin d'y indiquer la correspondance entre notre nouveau nom de domaine dédié au LAN et l'adresse IP du serveur OpenVPN.
sudo nano /etc/hosts
  • Ajoutez une ligne du style
192.168.1.42       www.server_LAN.com
  1. Créez le script de lancement /opt/scripts/vpnSwitcher.bash (CTRL+X pour sauver & quitter)
sudo nano /opt/scripts/vpnSwitcher.bash
  1. Puis collez le script suivant et adaptez le à votre config

Note : source du script

#!/bin/bash
# -- vpnSwitcher --
#  -> WTFPL - infos script : https://www.0rion.netlib.re/forum4/viewtopic.php?f=9&t=646&p=1460#p1460
# -> code by voxdemonix <-
# -> V1.11 (2017/09/11) <-
# uncomment next line for debug
#set -x

if [ ! "$SUDO_USER" ]; then
echo "!!! i need root !!!"
exit 0
fi

    #SCRIPTS OPTIONS
LANG="fr" # notification service ; accept : fr, usa (default)
notificationType="notify" # accept : echo; notify, nothing. Notify not work with root user.

    # NETWORK OPTIONS
INTERFACE="tun"
hostnameVpnLAN="192.168.1.69" # (VPN1 hostname) l'adresse IP locale (LAN) de votre serveur OpenVPN
MacVpnLocal="69:69:69:69:69:69" #l'adresse mac de votre serveur OpenVPN (tapez ifconfig dans un terminal sur votre server)

    # VPN OPTIONS
fichierOvpnLAN="/etc/openvpn/myUser_LAN.ovpn" # (VPN1) le PATH de votre fichier de conf .ovpn en LAN
fichierOvpnNotLAN="/etc/openvpn/myUser.ovpn" # (VPN2) le PATH de votre fichier de conf .ovpn pour les connnexions WAN/SSH
openVpn1Param=" " # add options (ex: --route-nopull) for openvpn connexion to server 1 (lan)
openVpn2Param=" " # add options (ex: --route-nopull) for openvpn connexion to server 2 (ssh/tor/wan)

    # SSH OPTIONS
hosnameVpnNotLAN="blablablablablabla.onion" # (VPN2 hostname)
UserLocalForSshTunneling="daenerys" # l'user a utiliser sur votre ordinateur pour le montage du tunnel (celui qui a exporté sa clés)
UserRemoteForSshTunneling="proxy-ssh" # l'user a utiliser côté server ( /!\ n'utilisez jamais root !)
portEntree="1194" # le port sur le pc local, par défaut 1194 (tcp)
portSortie="1194" # le port sur le serveur, par défaut 1194 (tcp)
sshLanEnable=0  # 0 for disable ; 1 for enable : enable or disable the ssh tunneling in LAN
sshNotLanEnable=0 # 0 for disable ; 1 for enable : enable or disable the ssh tunneling in Wan | Tor



            # NOTIFICATION SYSTEM
function vpnNotification {
        # $1 = message ID (watch switch/case);
        # $2 = hostnameVPN
    message=""
    #hostnameVPN=$(cat "$2" | grep "remote " | sed 's/remote //g' | sed 's/ [[:digit:]]\+//g')
    hostnameVPN=$2

    case $LANG in
        fr )
                case $1 in
                    VpnDisabled )
                            message="Connexion VPN fermée ($hostnameVPN)"
                        ;;
                    VpnConnecting )
                            message="Connexion VPN en cours ($hostnameVPN)"
                        ;;
                    VpnEnabled )
                            message="VPN Connecté ! ($hostnameVPN)"
                        ;;
                    SshStop )
                            message="Tunnel SSH STOP ($hostnameVPN)"
                        ;;
                    SshStart )
                            message="Tunnel SSH START ($hostnameVPN)"
                        ;;
                    * )
                            message="message inconnu"
                        ;;
                esac
            ;;
        usa | *)
                case $1 in
                    VpnDisabled )
                            message="VPN Connection Close ($hostnameVPN)"
                        ;;
                    VpnConnecting )
                            message="VPN Connection in progress ($hostnameVPN)"
                        ;;
                    VpnEnabled )
                            message="VPN Connected ! ($hostnameVPN)"
                        ;;
                    SshStop )
                            message="SSH Tunneling STOP ($hostnameVPN)"
                        ;;
                    SshStart )
                            message="SSH Tunneling START ($hostnameVPN)"
                        ;;
                    * )
                            message="unknow message"
                        ;;
                esac
            ;;
    esac


    case $notificationType in
        echo)
                echo "$message"
            ;;
        notify)
                notify-send "$message"
            ;;
        nothing | *)
            ;;
    esac
}

function quitOpenVPN {
        # $1 = ovpn ( $fichierOvpnLAN, $fichierOvpnNotLAN)
        # $2 = hostnameVPN ( $hostnameVpnLAN, $hosnameVpnNotLAN)
        ovpn=$1
        hostVPN=$2
            #stop VPN
        if [ $(pkill -c -f $ovpn) -gt 0 ]; then
        hostnameVPN=$(cat $ovpn | grep "remote " | sed 's/remote //g' | sed 's/ [[:digit:]]\+//g')
        vpnNotification "VpnDisabled" $hostnameVPN
        fi
            #stop ssh
        if [ $(pkill -c -f "autossh.*$UserRemoteForSshTunneling@$hostVPN") -gt 0 ]; then
            vpnNotification "SshStop" $hostVPN
        fi
        sleep 1
}

function startOpenVPN {
        # $1 = hostname VPN ($hostnameVpnLAN, $hosnameVpnNotLAN)
        # $2 = ovpn ($fichierOvpnLAN, $fichierOvpnNotLAN)
        # $3 = ssh enable (1) or not (0) ($sshLanEnable, $sshNotLanEnable)
        # $4 = OpenVpn Param ($openVpn1Param, $openVpn2Param)

        hostVPN=$1
        ovpn=$2
        sshChoice=$3
        openvpnParam=$4

                # SSH TUNNELING
            if [ $sshChoice == 1 ]; then
                    # kill oprevious ssh tunneling
                for pid in `ps -ef | grep "[a]utossh" | grep "$hostVPN" | awk '{print $2}'` ; do kill $pid ; done
                    # creat new ssh tunneling
                su $UserLocalForSshTunneling -c "autossh -M 0 -q -N -o 'ServerAliveInterval 60' -o 'ServerAliveCountMax 3' -L $portEntree:127.0.0.1:$portSortie $UserRemoteForSshTunneling@$hostVPN -f"
                if ps -aux | grep "[a]utossh" | grep "$hostVPN"  | grep -v "grep" >> /dev/null 2>&1; then
                    vpnNotification "SshStart" $hostVPN
                fi
            fi

                # START OpenVPN
            openvpn --daemon $openvpnParam --config $ovpn

                # NOTIFICATIONS
            hostnameVPN=$(cat $ovpn | grep "remote " | sed 's/remote //g' | sed 's/ [[:digit:]]\+//g')
            vpnNotification "VpnConnecting" $hostnameVPN

                # boucle qui permet de verifier si le VPN se connecte bien
        stop=0
        while [ $stop -lt 10 ]
        do       # temps d'attente entre chaque tentative
            if ifconfig | grep -iq $INTERFACE; then
                    vpnNotification "VpnEnabled" $hostnameVPN
                    stop=10
                    exit
            fi
                sleep 5
               stop=$((stop+1))
        done

}



        # boucle qui permet d'attendre que le réseau soit connecté
stop="0"
while [ $stop -lt 1 ]
do
    sleep 3       # temps d'attente entre chaque tentative

    _IP=$(hostname -I) || true
    if [ "$_IP" ]; then
            stop=1
    fi
done

if ps -aux | grep "[o]penvpn" >> /dev/null 2>&1; then
    #Connexion VPN active

            # vpn server 1
        quitOpenVPN $fichierOvpnLAN $hostnameVpnLAN
            # vpn server 2
        quitOpenVPN $fichierOvpnNotLAN $hosnameVpnNotLAN


else

        ping $hostnameVpnLAN -c 2 >> /dev/null 2>&1
        macRecover=$(arp -n | grep -i -o $MacVpnLocal)

        if [ "$macRecover" == "$MacVpnLocal" ]; then
        #        echo "local/LAN/First VPN"
            startOpenVPN $hostnameVpnLAN $fichierOvpnLAN $sshLanEnable $openVpn1Param

        else
        #        echo "tor/wan/second VPN"
            startOpenVPN $hosnameVpnNotLAN $fichierOvpnNotLAN $sshNotLanEnable $openVpn2Param

        fi

fi
  • Éditez les valeurs suivantes

    • hostnameVpnLAN="192.168.1.69" => (VPN1 hostname) l'adresse IP locale (LAN) de votre serveur OpenVPN
    • MacVpnLocal="69:69:69:69:69:69" => l'adresse mac de votre serveur OpenVPN (tapez ifconfig dans un terminal sur votre server)
    • fichierOvpnLAN="/etc/openvpn/myUser_LAN.ovpn" => (VPN1) le PATH de votre fichier de conf .ovpn en LAN
    • fichierOvpnNotLAN="/etc/openvpn/myUser.ovpn" => (VPN2) le PATH de votre fichier de conf .ovpn pour les connnexions WAN/SSH
  1. Sauvez et quittez avec CTRL+X, puis rendez votre fichier exécutable
sudo chmod +x /opt/scripts/vpnSwitcher.bash
  1. Lancez ensuite le script afin de le tester
sudo /opt/scripts/vpnSwitcher.bash

S'il fonctionne correctement, ajoutez le au démarrage du client soit via /etc/rc.local soit via cron

sudo crontab -e
  1. Ajoutez enfin la ligne suivante (CTRL+X pour sauver et quitter)
@reboot     /opt/scripts/vpnSwitcher.bash

Mozilla annonce la troisième édition du Winter of Security (MWoS)

Posté par (page perso) . Édité par palm123, Nils Ratusznik, ZeroHeure et Benoît Sibaud. Modéré par ZeroHeure. Licence CC by-sa
23
2
août
2016
Mozilla

Tous les ans, les équipes Sécurité de Mozilla ouvrent une douzaine de projets aux étudiants du monde entier. Le programme Winter of Security (MWoS) permet aux étudiants qui doivent effectuer un projet universitaire autour de la sécurité de réaliser ce dernier sur un sujet proposé et encadré par Mozilla.

Logo MWoS

L’édition 2016 propose 12 projets qui couvrent la cryptographie dans NSS, la sécurité web avec ZAP et la sécurité des infrastructures avec MIG et ssh_scan. La liste détaillée des projets est disponible sur le wiki de Mozilla.

Pour participer à MWoS, les étudiants doivent former des équipes de 1 à 4 personnes et trouver un professeur pour encadrer l’équipe. Chaque équipe doit présenter un dossier de candidature par projet. Les candidatures sont ouvertes jusqu'au 15 septembre, et les équipes sélectionnées seront annoncées deux semaines après la clôture des candidatures.

Forum Programmation.shell astuce : wget trop lent, axel prend le relai

Posté par . Licence CC by-sa
Tags :
9
18
mar.
2016

Le problème

Un fichier archive à télécharger, premier réflexe :

wget http://url/vers/mon/fichier

Et au bout que quelques minutes se dire : "Zut, il est gros ce fichier et c'est lent, ça ne sature même pas mon lien ADSL…"

Second réflexe : j'aurai dû utiliser axel.

Dilemme, je kill le wget en cours et relance avec axel ? Dommage pour tous ces octets qui ont déjà fait un si long voyages.

Si je pouvais dire à axel que wget a déjà (...)

Journal Les interfaces tablettes

Posté par . Licence CC by-sa
41
16
mar.
2016

Encore un journal de mécontent. Mais avec une solution, ou du moins un contournement.

Je suis un client plutôt satisfait de Boursorama Banque. Bon, tout n'est pas parfait, mais grosso modo, ça va. Et là, il y a une nouvelle interface web. Je l'avais essayé quand elle était encore en déploiement, et j'avais remonté des problèmes. Bien sûr, personne n'écoute, ils ont leur cahier des charges. Mais depuis quelques jours, cette interface est devenu obligatoire. Résultat direct : sur mon écran (...)

Root-me: Rémunération des challenges de hacking et naissance de Root-me.pro

Posté par . Édité par Xavier Teyssier, Nÿco, ZeroHeure et palm123. Modéré par Ontologia. Licence CC by-sa
32
11
mar.
2016
Sécurité

Root-me est un MOOC (Massive Open Online Course) de sécurité informatique. Root Me permet à chacun de tester et d’améliorer ses connaissances dans le domaine de la sécurité informatique et du hacking. Cette communauté met librement à disposition une plateforme dédiée à l’apprentissage du ethical hacking.

Nouveautés et évolution pour Root-Me.org :

  • nouveau design ;
  • rémunération pour les créateurs de challenge sur une liste pré-établie par le staff ;
  • une boutique en ligne en partenariat avec Spreadshirt ;
  • la possibilité aux membres de la communauté de cotiser pour l'association et de bénéficier de privilèges supplémentaires ;
  • de nombreux environnements virtuels ont été ajout ;
  • et bien sur toujours plus de challenges…

Root-Me.pro

Pour répondre aux fortes demandes des entreprises, notamment pour des challenges inter-entreprises et d'autres spécificités, Root-me.pro est né :

  • scoreboard dédié ;
  • sélection de challenge ;
  • support dédié.

Journal 6e Journée du libre à Vincennes le samedi 11 juin 2016

3
4
mar.
2016

Samedi 11 juin 2016 de 11h à 18h
EFM Espace de Formation au Multimédia
1er étage de la médiathèque Cœur de Ville
98 rue de Fontenay 94300 Vincennes
Plan

Événement grand public, entrée libre et gratuite.

Dans le cadre de Futur en Seine, Vincennes accueille sa 6e Journée du Libre : aide à l'installation de toute distribution GNU/Linux, mini conférences, ateliers… L'événement s'élargit dorénavant aux domaines du hack, make, do-it-yourself : électronique, robotique, imprimantes 3D, D3E…

Faites vos propositions (...)

Root Me : nouvelle version du "CTF all the day"

Posté par (page perso) . Édité par Xavier Claude. Modéré par ZeroHeure. Licence CC by-sa
32
15
oct.
2015
Sécurité

Root Me permet à chacun de tester et d’améliorer ses connaissances dans le domaine de la sécurité informatique et du hacking. Cette communauté met librement à disposition une plateforme dédiée à l’apprentissage du hack, en publiant notamment des challenges avec leur solution, des articles, mais également des environnements virtuels au travers du "CTF all the day".

Le système de CTF all the day évolue :

  • c’est désormais un environnement virtuel qu’il est possible d’attaquer, composé d’une ou plusieurs machines virtuelles
  • plus de salles de CTF permettant plus de parties simultanées
  • plus de 30 environnements virtuels sont désormais disponible

Le premier challenge a bénéficier de cette évolution est « Bluebox - Pentest », vous vous retrouvez dans la peau d'un pentester attaquant une infrastructure Microsoft Windows Active Directory complète : time to take a revenge ? ,-)

Forum général.général Identification virus/spam

Posté par . Licence CC by-sa
Tags :
1
5
août
2015

Bonjour,

Depuis un mois je reçois plusieurs emails/spams avec le schéma suivant :
- Le nom de l'expéditeur est celui d'un ami, par exemple "Jean Dupont"
- L'email de l'expéditeur est faussé, par exemple JeanDupont@example.com
- Le sujet de l'email est "From: Jean Dupont"
- L'email est envoyé à un sous-ensemble des contacts de mon ami (c'est sûr car les contacts ne sont connus que de mon ami)
- L'email contient uniquement un lien du genre: http://site.bizarre.com/mot.php?Jean_Dupont
- L'email a (...)

Samedi 13 juin 2015 cinquième Journée du Libre à Vincennes

Posté par (page perso) . Édité par Florent Zara et Nÿco. Modéré par Benoît Sibaud. Licence CC by-sa
8
19
mai
2015
Communauté

Proposez vos animations à la cinquième Journée du Libre à Vincennes, le samedi 13 juin 2015 de 11 heures à 18 heures. C'est un événement grand public dont l'entrée est libre et gratuite.

Lieu

EFM Espace de Formation au Multimédia de Vincennes
Premier étage de la Médiathèque Cœur de Ville
98 rue de Fontenay 94300 Vincennes, en face de la Mairie
RER ligne A station Vincennes, métro ligne 1 station Château de Vincennes

15 mars 2015 : Apéro Parisien du Libre

5
10
mar.
2015
Communauté

Comme chaque 15 de chaque mois, Parinux vous convie à l'Apéro Parisien du Libre (aka APL), événement informel pour permettre la rencontre de toutes les communautés de libristes, hackers, makers, de Paris et d'ailleurs. L'APL est ouvert à tou¦te¦s, libristes ou non, de Paris, d'Île-de-France ou d'ailleurs, geeks ou néophytes.

Informations pratique du prochain APL :

  • Dimanche 15 mars 2015 de 13h à 15h ou +
  • Lieu : Le bon plan, 88 rue Albert, 75013 Paris
  • Transports : Métro 14 stations Olympiades ou Bibliothèque, Vélib 13045, Amibus, bus 26, 189, 215, 286, 289, 351, 390… Tramway T3a station Maryse Bastié.

Sondage Hackez-vous le matériel aussi ?

Posté par (page perso) . Licence CC by-sa
5
27
fév.
2014

Hackez-vous (au sens bidouiller) avec un Arduino, ou tâtez-vous du fer à souder dans votre temps libre ?

  • Oui :
    596
    (28.6 %)
  • Non, mais j'aimerais bien :
    831
    (39.8 %)
  • Non, et je n'en ai pas l'intention :
    210
    (10.1 %)
  • Non, et « aussi » par rapport à quoi ? :
    156
    (7.5 %)
  • R2D2 :
    294
    (14.1 %)

Total : 2087 votes

Petits heurts (contre une porte fermée) entre amis

Posté par (page perso) . Édité par dmaciejak, baud123, Benoît Sibaud, Nÿco et Xavier Claude. Modéré par tuiu pol. Licence CC by-sa
45
24
fév.
2012
Sécurité

Root Me est une plateforme d'apprentissage dédiée à la sécurité de l'information, avec l'émulation (dans tous les sens du terme). Sa communauté met à disposition de tous un nouveau système permettant d'appréhender dans un environnement réel, sans limites et sans simulation, les techniques les plus couramment employées.

Le principe est simple : les joueurs attaquent tous la même cible représentée par une machine virtuelle. Le premier ayant réussi à compromettre le système, c'est à dire ayant obtenu les droits d'administration a gagné.

Root Me : CTF all the day

Journal 8 mois de prison pour avoir exploité une faille de sécurité

Posté par . Licence CC by-sa
33
18
fév.
2012

Glenn Mangham, un brillant étudiant britannique de 26 ans, qui avait réussi à utiliser en avril 2011 certaines failles de facebook pour passer dans une partie interne du site, et en copier des informations confidentielles, a été condamné à 8 mois de prison.

Je n'ai pas réussi à trouver s'il s'agit de 8 mois de prison ferme, ou avec sursis.

Quoi qu'il en soit, celui que son avocat décrit comme « hacker éthique » (il n'a pas tiré profit de (...)

Journal Ce qui devait arriver Aréva

Posté par (page perso) . Licence CC by-sa
30
29
sept.
2011

Le "fleuron français de l'industrie nucléaire", l'ancienne COGEMA actuellement nommé Aréva, est un expert en sûreté nucléaire.
On nous le rappelle sur tous les supports médiatiques existants à chaque 'incident' que ce soit dans le Gard ou au Japon.
Ses installations se doivent d'être irréprochables, et ce, dans tous les compartiments de son métier.

En particulier l'informatique. C'est un élément primordial dans la gestion d'un système tel qu'un réacteur nucléaire.

Qu'apprend-t-on aujourd'hui ?

http://lexpansion.lexpress.fr/entreprise/areva-victime-d-une-attaque-informatique-de-grande-ampleur_263462.html#xtor=AL-189

Qu'ils sont "hackés" depuis, au moins, (...)