Vhalholl’s Weblog
STFU and STFW we RTFM !
Il y a actuellement 1 visiteur connecté.

VPN over SSH

Le 3 juin 2009, par logout

openssh


SSH, nous permet de créer des tunnels, nous permettant d’accéder de façon sûre à des services offerts web,mail sur un réseau protégé, sans créer de vpn.

Mais il permet aussi de créer des tunnels entre deux interfaces réseau virtuelles :

Au niveau 3 :

Donc une interface réseau virtuelle au niveau IP l’interfaceTun (tun0,tun1).


0u au niveau 2 :

Donc une interface réseau virtuelle ou tout Ethernet est routé l’interface Tap (tap0,tap1).

Il ne nous reste plus qu’as créer le reseau privé virtuel :

Globalement :

Le réseau privé virtuel : 10.254.254.0/30
Le réseau privé : 10.99.99.0/24

Coté serveur :

IP publique sur eth0 : 88.131.161.3
IP privé sur eth1 : 10.99.99.1
IP privé virtuel sur : tun0 10.254.254.2

Coté client :

IP privé virtuel sur : tun0 10.254.254.1


Comencons par le client, on génère la paire de clefs SSH pour le root :

root@helghardhr:~# ssh-keygen -t rsa

On s’assure que le module tun est bien monté :

root@helghardhr:~# lsmod | grep tun
tun 8292 0
root@helghardhr:~#

Sinon :

root@helghardhr:~# modprobe tun
root@helghardhr:~#

Puis on modifie le fichier /etc/network/interfaces pour rajouter notre interface :

iface tun0 inet static
pre-up ssh -S /var/run/ssh-vpn-tunnel-control -M -f -w 0:0 88.131.161.3 true
pre-up sleep 5
address 10.254.254.1
pointopoint 10.254.254.2
netmask 255.255.255.252
up route add -net 10.99.99.0 netmask 255.255.255.0 gw 10.254.254.2 tun0
post-down ssh -S /var/run/ssh-vpn-tunnel-control -O exit 88.131.161.3

Ensuite nous nous connectons en tant que root à notre server :

root@helghardhr:~# ssh 88.131.161.3
The authenticity of host ‘88.131.161.3 (88.131.161.3)’ can’t be established.
RSA key fingerprint is 60:fe:60:01:b0:11:78:60:01:b0:aa:78:90:ab:6a:d2.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added ‘88.131.161.3′ (RSA) to the list of known hosts.
^C
root@helghardhr:~#

Puis nous créont notre script de connection/déconnection vpn_ssh.sh dans /etc/init.d et nous lui donnons les droits nécéssaires :

root@helghardhr:~# cat >/etc/init.d/vpn_ssh.sh
#!/bin/bash

#/etc/init.d/vpn_ssh.sh

case $1 in
start)
su -c “ifup tun0″;
;;
stop)
su -c “ifup tun0″;
;;
*)
echo -e “\n$0 start|stop\n”;
esac
^D
root@helghardhr:~# chown root:logout /etc/init.d/vpn_ssh.sh
root@helghardhr:~# chmod 750 /etc/init.d/vpn_ssh.sh
root@helghardhr:~#

Heu … Si j’oublie rien la, tout est bon coté client :)

Coté serveur :

Il faut modifier le fichier /etc/ssh/sshd_config :

#PermitRootLogin no #normal+tunnels

#b_vpn server only
PermitRootLogin forced-commands-only
PermitTunnel point-to-point
#e_vpn server only

Puis nous allons limiter la session ssh du root à l’activation et désactivation du vpn
et donner la clef publique du root située dans/root/.ssh/id_rsa.pub de la machine cliente au serveur,
en modifiant le fichier /root/.ssh/authorized_keys :

tunnel=”0″,command=”/sbin/ifdown tun0;/sbin/ifup tun0″ ssh-rsa AAAA[...]== root@asghardhr

Maintenant nous rajoutons l’interface en modifiant /etc/network/interfaces :

iface tun0 inet static
address 10.254.254.2
netmask 255.255.255.252
pointopoint 10.254.254.1

On active le forwarding en modifiant /etc/sysctl.conf en ajoutant la directive : net.ipv4.conf.default.forwarding=1

root@lifthrasir:~# cat >>/etc/sysctl.conf
net.ipv4.conf.default.forwarding=1
^C
root@lifthrasir:~# reboot

Et oué c’est pas glop mais si le forwarding étais pas activé faut redémarrer . (Peut-être que je me trompe aussi à vérifié ;)

Et voila pour la configuration coté serveur .

C’est bien beau mais il est ou le vpn ? ôÔ


Et bien on se connecte en activant l’interface tun0 et on test avec un ping et on se déconnecte comme on est venue :

logout@helghardhr:~$ /etc/init.d/vpn_ssh.sh start
password :



logout@helghardhr:~$ ping -c 2 10.99.99.1
PING 10.99.99.1 (10.99.99.1) 56(84) bytes of data.
64 bytes from 10.99.99.1 icmp_seq=1 ttl=64 time=96.3 ms
64 bytes from 10.99.99.1 icmp_seq=2 ttl=64 time=94.9 ms


— 10.99.99.1 ping statistics —
2 packets transmitted, 2 received, 0% packet loss, time 999ms
rtt min/avg/max/mdev = 94.954/95.670/96.387/0.780 ms
logout@helghardhr:~$ /etc/init.d/vpn_ssh.sh stop
Password :

Exit request sent.

Vous trouverez le script d’installation clients et serveurs ici :) {Non ternminé}

Amusez vous bien ;)

GNU Screen

Le 10 avril 2009, par logout

Screen est un multiplexeur de terminal qui à la manière d’un gestionaire de fenêtrage, permet à plusieurs programmes en mode texte de tourner en même temps et depuis une seule interface, typiquement un terminal local ou distant via ssh (non rien à voir avec nohup que j’utilise principalement pour certains scripts et wget).

Installation :

  • Sous Gentoo :
  • logout@lifthrasir ~ $ su -c “emerge app-misc/screen”
    Password:
    [...]
    logout@lifthrasir ~ $

  • Sous Debian :
  • logout@helghardhr:~$ sudo apt-get install screen”
    Password for user logout :
    [...]
    logout@helghardhr:~$



    Passons à la pratique, nous allons créer une session screen pour prendre la main sur un switch :

    logout@lifthrasir ~ $ screen -S elivghar
    logout@lifthrasir ~ $



    Ici nous avons donc créer une session screen du nom d’elivghar, nous pouvons verifier avec la commande screen -ls :

    logout@lifthrasir ~ $ screen -ls
    There are screens on:
        15115.oftc (Detached)
        3927.elivghar (Attached)
        15090.fansub (Attached)
        15078.worldnet (Attached)
        17976.challenge (Attached)
    5 Sockets in /var/run/screen/S-logout.

    logout@lifthrasir ~ $



    Nous allons maintennant, nous connecter à notre switch et détacher la session screen via Ctrl+A D :

    logout@lifthrasir ~ $ ssh elivghar
    Elivghar>
    ^A D
    [detached]
    logout@lifthrasir ~ $



    Maintenant, nous allons nous connecter à lifthrasir depuis yggdrasill et reprendre la session elivghar via screen -r :

    logout@yggdrasill:~$ ssh lifthrasir
    logout@lifthrasir ~ $ screen -ls
    There are screens on:
        15115.oftc (Detached)
        3927.elivghar (Detached)
        15090.fansub (Attached)
        15078.worldnet (Attached)
    17976.challenge (Attached)
    5 Sockets in /var/run/screen/S-logout.

    logout@lifthrasir ~ $ screen -r elivghar
    Elivghar> sh terminal
    Terminal width: 80 length: 24

    Elivghar>



    Si nous voulions par exemple qu’une personne puisse intéragir avec nous, il suffit qu’elle utilise screen -x :

    logout@asghardhr:~$ ssh lifthrasir
    logout@lifthrasir ~ $ screen -x elivghar
    Elivghar> sh terminal
    Terminal width: 80 length: 24

    Elivghar>



    Nous pouvons aussi faire tourner screen en multiuser, du coup l’utilisateur 0din pourrais invoquer la session screen elivghar de logout de cette façon screen -r logout/elivghar, pour cela il faut rendre screen “root setuid” # chmod u+s `which screen` && chmod 755 /var/run/screen , vue les implication au niveau de la sécurité, je vous le déconseille fortement privilégiez plutôt l’utilisation d’un compte de travail colaboratif.

    Neamoins je vous donne le lien de la page de Deimos ici, qui décrit dans ça méthode deux l’utilisation en mode multiusers et le fonctionnement des acls.

    Vous trouverez les racourcies clavier pour screen ici, sur ce, amusez vous bien ;)

    SSH-FileSystem

    Le 22 mars 2009, par logout


    openssh



    Voici un petit apercue d’sshfs un système de fichiers utilisant le protocole ssh.
    Les principaux avantages sont la simplicité de mise en oeuvre et la sécurité ( le chiffrement des données, le tunneling et l’utilisation de clefs ).


    Pour ce qui est de l’installation :

  • Sous Gentoo :
  • logout@lifthrasir ~ $ su -c “emerge sys-fs/sshfs-fuse”
    Password:
    logout@lifthrasir ~ $

  • Sous Debian :
  • logout@helghardhr:~$ sudo apt-get install sshfs
    [sudo] password for logout:
    logout@helghardhr:~$



    Il ne nous reste plus qu’as monter notre répertoire distant, la synthaxe est simple :

    sshfs user@host:rep_distant point_de_montage

    pour démonter notre répertoire vue que c’est fuse qui prend en charge sshfs, c’est simple il nous suffit de faire :
    fusermount -u point_de_montage

    Nous allons créer notre point de montage :

    logout@helghardhr:~$ mkdir ./sshfs
    logout@helghardhr:~$



    Pour nous simplifier la vie nous allons aussi éditer notre fichier .bashrc comme pour encfs:

    logout@helghardhr:~$ cat >>./.bashrc
    #encfs
    function sshmount() {
    if [ -z $1 ];then
    echo -e “\n$0 SSH-Filesystem\n”;
    echo -e “Usage : $0 \n”;
    echo -e “e.g : $0 me@my.comput.er:/home/me/mydir\n”;
    else
    sshfs $1 /home/logout/sshfs;
    fi }
    function sshumount() {
    fusermount -u /home/logout/sshfs; }
    ^D
    logout@helghardhr:~$ source ./.bashrc
    logout@helghardhr:~$ sshmount

    /bin/bash SSH-Filesystem

    Usage : /bin/bash

    e.g : /bin/bash me@my.comput.er:/home/me/mydir

    logout@helghardhr:~$



    Il ne nous reste plus qu’as tester la chose :

    logout@helghardhr:~$ sshmount lifthrasir:./dev/sdata/c/
    logout@helghardhr:~$ ls ./sshfs/
    ATd.c charShellcode.c exemplegdb1 HelloW pile2.c stealth vmsplice-local-root-exploit.c
    ATds.txt date exemplegdb1.c HelloWorld.c pile2.s syscall vmsplice-local-root-exploit.c.1
    back_root.c date.c exemplegdb.c keyfinder.c raw-socket test.c vmsplice-local-root-exploit.c.2
    bckd.c dnstest.c fonction_system-vuln_path.c mydo0R.c reg_ouverture.c test_fichier.c vulnfuncsys
    bof egg.c gnastinork.c pile1.c root test_racine.c windowsAPI
    bof.c exemplegdb hello pile1.s sploit_and_root_me vmsplice-detail-patche.txt wsck2-cli-servr.c
    logout@helghardhr:~$ sshumount
    logout@helghardhr:~$ ls ./sshfs/
    logout@helghardhr:~$



    De toute évidence, cela fonctionne à merveille, il est bon de noter un certain temps d’accès, mais ça reste franchement accéptable, alors amusez vous bien. ;)

    Linux is Beautyfull

    Le 8 mars 2009, par logout



    Voici une video présentant le résultat de l’utilisation de compiz avec la distribution elive ( basée sur Debian avec le gestionnaire de fennêtre Enlightenment)




    Vous pouvez la telecharger ici , parcontre elle est toujours en cours de devellopement, mais ça reste quand même le seul live-cd que je connaisse qui propose compiz+e17 et ça vaut franchement le coup d’oeuil, sinon autre live-cd enorme, celui de la knoppix 6.0 sans e17 cette fois, mais avec LXDE et compiz par défaut. ;)