Journal WPA2 est bronsonisé

Posté par . Licence CC by-sa
33
16
oct.
2017

Salut nal'

Une faille sur le WPA2 semble avoir été découverte. Un Github et un site web ont été mis en place, ils pourraient contenir plus d'informations dans la journée. Le 1er novembre, une présentation plus détaillée aura lieu durant une conférence ACM à Dallas. cf. https://www.macg.co/ailleurs/2017/10/une-faille-dans-le-wpa2-met-le-wi-fi-en-danger-100079 pour plus de détail.

ça t'inquiète cette histoire de wpa2 cracké ou bien tu penses que c'est du vent ?

Tu vas mettre à jour tes imprimantes et tes milliers gadgets connectés ? Comment parce (...)

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

Wiki [Tuto/HowTo] [Ubuntu/Debian] Chiffrer ses volumes Glusterfs

0
25
sept.
2017

Introduction

Par défaut les communications de glusterfs-server et de glusterfs-client ne sont pas chiffrées. Glusterfs peut néanmoins utiliser TLS (ex SLL) pour chiffrer les communications et casser ainsi toute tentative de MITM.
Ensemble, nous allons voir comment.

Note : Pour une raison inconnue (Ré-installation d'un des node? Bug après un reboot?), il peut arriver que les certificats TLS expirent. Vous vous retrouverez avec des "State: Peer in Cluster (Disconnected)" lorsque vous lancez la commande "gluster peer status". Dans /var/log/glusterfs/etc-glusterfs-glusterd.vol.log vous trouverez des lignes du style "SSL routines:ssl3_read_bytes:sslv3 alert certificate expired". Reforger les certificats et les clés privées semble régler le problème.

Les fichiers dont à besoin glusterfs pour le chiffrement via TLS

  • /etc/ssl/glusterfs.pem => Votre certificat. Ce fichier unique doit être sur chaque noeud et ne doit pas être partagé.
  • /etc/ssl/glusterfs.key => Votre clés privée. Elle doit être disponible sur chacun des Noeuds et clients.
  • /etc/ssl/glusterfs.ca => Ce fichier doit être à l'identique sur toutes les machines du cluster, autant client que serveur.
  • /var/lib/glusterd/secure-access => Fichier vide dont l'existence permet à glusterfs de savoir qu'il doit activer TLS. Doit être présent sur toutes les machines du cluster.

Mise en place

Installer le module de chiffrement

  • On se rend dans le dossier /etc/ssl
cd /etc/ssl/
  • Création des clés
sudo openssl genrsa -out glusterfs.key 2048
  • Création des certificats, remplacez hostnameNode par vos valeus - à répéter pour chaque node (server & client)
sudo openssl req -new -x509 -key glusterfs.key -subj "/CN=hostnameNODE" -out glusterfs_hostnameNode.pem
  • Concaténation des certificats (client & server), pour les serveurs
cat glusterfs_hostnameNode.pem glusterfs_hostnameNode.pem glusterfs_hostnameNode.pem glusterfs_hostnameNode.pem > glusterfs_server.ca
  • Concaténation des certificats (server), pour les clients
cat glusterfs_hostnameNode.pem glusterfs_hostnameNode.pem glusterfs_hostnameNode.pem glusterfs_hostnameNode.pem > glusterfs_client.ca
  • Note : autant utiliser directement celle juste ci-haut

    • On prépare l'export
mkdir /tmp/gluster
cp /etc/ssl/gluster* /tmp/gluster/
chmod 777 -R /tmp/gluster/
  • Envoyez sur chaque Noeuds sa clés privé (.key) et son certificat (.pem)
    • Exemple en lançant la commande depuis un client
scp monUser@machineQuiAGenereLesCertif:/tmp/gluster/glusterfs_hostnameNode.pem /etc/ssl/
  • On exporte maintenant le certificat concaténé sur tout les serveurs
    • Exemple en lançant la commande depuis un client
scp monUser@machineQuiAGenereLesCertif:/tmp/gluster/glusterfs_server.ca /etc/ssl/glusterfs_server.ca
  • On exporte maintenant le certificat concaténé sur tout les clients
    • Exemple en lançant la commande depuis un client
scp monUser@machineQuiAGenereLesCertif:/tmp/gluster/glusterfs_client.ca /etc/ssl/glusterfs_client.ca
  • Activer le chiffrement côté serveur (à reproduire sur chaque serveur)
sudo touch /var/lib/glusterd/secure-access
service glusterfs-server restart
  • Activer le chiffrement côté client (à reproduire sur chaque client)
sudo touch /var/lib/glusterd/secure-access

Activer le chiffrement des communications d'un volume

Note : il est conseillé de démonter (umount) les dossiers glusterfs déjà monté sur les clients.

gluster volume stop VOLNAME
gluster volume set VOLNAME server.ssl on
gluster volume set VOLNAME client.ssl on
gluster volume start VOLNAME

Désactiver le chiffrement des communications d'un volume

Note : il est conseillé de démonter (umount) les dossiers glusterfs déjà monté sur les clients.

gluster volume stop VOLNAME
gluster volume set VOLNAME server.ssl off
gluster volume set VOLNAME client.ssl off
gluster volume start VOLNAME

Journal --== GUIDE DE L'ADMINISTRATEUR LINUX ==--

Posté par (page perso) . Licence CC by-sa
23
10
sept.
2017

Bonjour à toutes et à tous,

Je mets à disposition gratuitement un guide assez exhaustif de 80 pages, qui est le fruit de quelques années d'administration et d'ingénierie des systèmes Open-Source.

Mon objectif, en 1996, était de rédiger un pense-bête, avec l’une des premières distributions libres d’Unix (Slackware). Je l’ai ensuite étoffé via des systèmes similaires, dont RedHat, Mandrake (actuellement Mandriva). Par la suite, j’ai ajouté des commandes et syntaxes propres à Solaris ou Novell/Suse.

Il s'agit d'un document de (...)

Forum général.hors-sujets Quand Synology incite à envoyer un mot de passe administrateur en clair

6
6
sept.
2017

Salut,

Pour faire court : le support technique de Synology me demande de lui envoyer un mot de passe administrateur de mon NAS, en clair, par mail. Je leur demande une clé publique PGP, un compte Wire, que sais-je ? Un canal chiffré.

Niet, ils insistent : par mail, en clair. Ils n'ont pas d'autre moyen…

C'est courant ce genre de situation ou c'est Synology qui est à l'Ouest ?

Franck.

PS: pendant ce temps, depuis que j'ai ouvert le port Telnet (...)

Sortie de LDAP Tool Box Self Service Password 1.1

Posté par (page perso) . Édité par Davy Defaud et Xavier Claude. Modéré par Xavier Claude. Licence CC by-sa
24
4
sept.
2017
Sécurité

Le logiciel Self Service Password est développé au sein du projet LDAP Tool Box. Il fournit une interface permettant aux utilisateurs de changer leur mot de passe dans un annuaire LDAP, y compris Active Directory ou Samba 4, ainsi que leur clé SSH.

Outre le changement de mot de passe simple, l’interface propose de réinitialiser son mot de passe en cas de perte, soit par l’envoi d’un courriel, soit par la réponse à des questions, soit par l’envoi d’un SMS.

Les contraintes de qualité du mot de passe sont paramétrables : taille minimale, maximale, présence de différentes classes de caractères, caractères interdits, contrôle de la valeur par rapport à l’ancien mot de passe ou à l’identifiant.

Le logiciel Self Service Password est écrit en PHP et est sous licence publique générale GNU. La version 1.1 est sortie le 1er septembre 2017.

Embedded Recipes, première édition à Paris

Posté par (page perso) . Édité par Davy Defaud et Xavier Claude. Modéré par Xavier Claude. Licence CC by-sa
15
30
août
2017
Linux

Nous y réfléchissions depuis un moment. Après avoir lancé Kernel Recipes il y a six ans, nous sommes fiers de vous annoncer Embedded Recipes, une journée consacrée au Libre dans le domaine de l’embarqué, le 26 septembre 2017, à Paris.

Logo Embedded Recipes

Kernel Recipes 2017 : les inscriptions vont bientôt démarrer

25
29
août
2017
Noyau

C’est devenu presque une tradition. Avec la fin de l’été, hupstream est fier de vous présenter la septième édition de Kernel Recipes. Elle aura lieu à Paris du 27 au 29 septembre 2017.

Pour cette septième édition, nous avons tenté encore une fois de vous proposer une liste d’intervenants qui viendront du monde entier : Greg Kroah‐Hartman, Brendan Gregg, Benjamin Tissoires, Steven Rostedt, James Bottomley, Kees Cook, Andrea Arcangeli, Thomas Gleixner, Maxime Ripard, Johan Hovold, Sasha Levin, Werner Koch, Jens Axboe, Kevin Hilman, Hans Verkuil, Sjoerd Simons, Éric Leblond.

Logo Kernel Recipes

Forum Linux.général La sécurité sous Linux: partagez vos conseils, astuces et outils

Posté par . Licence CC by-sa
5
11
août
2017

Bonjour,

Quand on arrive sous GNU-Linux (et autre *nix) on pense souvent qu'on est au top de la protection (à cause des "pas de virus" et "code open-source très relu"). Très rapidement on se rend compte que c'est un système comme un autre mais on a la chance d'avoir des outils géniaux. Je voulais donc écrire un article sur le sujet mais je pense que pour collecter quelques avis le forum est un bon début, je vous invite donc à (...)

Journal Au voleur.sh

Posté par .
12
4
août
2017

Un package « nodejs » assez populaire balance les variables d'environnement des imprudents utilisateurs vers son serveur. Bien sur, ces variables contiennent souvent des mots de passes, des tokens API et autres informations spécifiques.

Plus de détail sur https://medium.com/@ceejbot/crossenv-malware-on-the-npm-registry-45c7dc29f6f5 le 3ème point va vous faire halluciner !

Il y a vraiment des gens qui utilisent ça sur des serveurs de production ? Je veux dire dans un mode de vrais professionnels.

L'une des parades seraient un firewall applicatif. Ca existe sous Linux ?

Journal Mise à jour du firmware d’un Lenovo Thinkpad moderne…

Posté par . Licence CC by-sa
61
1
août
2017

Bonsoir nal,

Il y a quelques semaines, je fus victime d’un odieux larcin, mon PC portable pro a été dérobé (cher voleur, tu peux faire un git push de mes devs ferroviaires ?). Donc nouveau PC portable pro, installation de Debian, et toute la phase rigolote de sécurisation de la machine.
Je vous passe l’installation de Debian (LUKS, SELinux, nftables…), on va se concentrer ici sur les firmwares.

1er firmware : le microcode du processeur

Comme vous le savez peut‐être, les (...)

Suricata 4.0 : la détection d’intrusion en mode hipster

35
29
juil.
2017
Sécurité

Suricata, l’outil de détection des menaces réseau, passe en version 4.0 avec pléthore de nouveautés :

  • ajout de l’analyse du protocole NFS ;
  • améliorations de la gestion de TLS ;
  • gestion des changements de protocoles (STARTTLS, HTTP CONNECT) ;
  • enrichissement des événements générés ;
  • prise en charge d’analyseurs de protocoles en Rust.

Suricata est un moteur de détection d’intrusions réseau et de supervision réseau orienté sécurité. En clair, il analyse le trafic des réseaux pour détecter des menaces et journaliser les événements. Suricata est disponible sous licence GPL v2 et est développé par une fondation à but non lucratif, l’OISF.

Suricata est devéloppé en C avec depuis la version 4.0 des analyseurs de protocoles en Rust écrits avec utilisant le framework Nom.

Journal Les clients graphiques FTP par défaut sous Debian ne gèrent pas TLS/SSL

Posté par . Licence CC by-sa
3
11
juil.
2017

Ce matin, j'ai été surpris de constater que lorsqu'on se connecte à un serveur FTP distant via gvfs (donc via Nautilus, PCManFM, …), le chiffrement TLS n'est pas pris en charge. Conséquence : les identifiants et les données sont transmis en clair sur le réseau. La commande suivante permet de le vérifier :

$ sudo tcpdump "port 21" -vvv

Plutôt attentif à la sécurité et étant sous Debian stable, je suis surpris de constater que TLS/SSL n'est pas activé par (...)