Category Archives: network

deny access to .git directory with Apache 2 on Debian

When you use GIT in order to deploy your website on an Apache web server, in everybody can access to the .git subfolder. Which means that it’s possible to get your source code (even passwords…).

Create a file name /etc/apache2/conf.d/denyGIT

# do not allow .git version control files to be issued
<Directorymatch "^/.*/\.git+/">
  Order deny,allow
  Deny from all
</Directorymatch>
<Files ~ "^\.git">
    Order allow,deny
    Deny from all 
</Files>

retart apache

/etc/init.d/apache restart

Remettre les serveurs DNS OVH

Un de mes domaines a pour registrar OVH. J’avais indiqué que ses DNS étaient un serveur privé pendant un temps, maintenant que je désire utiliser de nouveau les DNS d’OVH je ne trouve nulle part les Serveurs DNS à utiliser. après 24h sans réponse du support je fini par faire un choix un peu dangereux (car il est possible que je coupe la reception des emails pendant la transition).

Comme il m’est impossible de savoir quel serveur parmi les nsXX.ovh.net dnsXX.ovh.net (XX = 11, 12, 13 ou 14 ….) je fini par tenter à l’aveugle  ns.ovh.net et dns.ovh.net et là miracle, OVH a remplacé automatiquement par ns13.ovh.net dns13.ovh.net.

En conclusion, ce comportement n’est expliqué nulle part dans les doc et forum.

Mais mon soucis ne s’arrête pas là. Car en fait il m’est toujours impossible de gerer la zone DNS. Seul le support technique peut réparer cela car il semble que mon domaine est dejà déclaré chez eux et changer l’hébergement en choisissant

“Activer les redirections web et email (gratuit)” me donne le résultat suivant :

Ce domaine est déjà configuré sur notre système

 

Les forum sont unanimes, seul le support peut intervenir sur ce dernier soucis.

Git Server on Debian

After testing GIT, and without hesitation, I decided to abandon SVN/Subversion. I won’t write here one more article comparing them but I wrote (and update regularly) a wiki page explaining how to install it on Debian and give access via HTTP, SSH and HTML.

http://wiki.gonzofamily.com/a/Install_GIT_as_public_repository_on_Debian

I also noted how I transfered my existing local XCode repositories to this server, but I will improve this doc soon:

http://wiki.gonzofamily.com/a/GIT_and_XCode

PID on Mac OS X without Netstat

On Linux we use to see the Processes associated to a listening network port with the following command
netstat -p

On Windows it’s
netstat -o

Sadly on Mac OS X this option doesn’t exist. The equivalent will be
sudo lsof -P

So we can imagine that we need to know which program dare listening on port 123
sudo lsof -Pn | grep 123

You will see something like that:

ntpd 21 root 20u IPv4 0x0899ace4 0t0 UDP *:123
ntpd 21 root 21u IPv6 0x0899ac08 0t0 UDP *:123
ntpd 21 root 22u IPv6 0x0899baa4 0t0 UDP [::1]:123
ntpd 21 root 23u IPv6 0x0899b8ec 0t0 UDP [fe80:1::1]:123
ntpd 21 root 24u IPv4 0x0899b810 0t0 UDP 127.0.0.1:123
ntpd 21 root 25u IPv6 0x098b5658 0t0 UDP [fe80:4::cabc:c8ff:fe90:6472]:123
ntpd 21 root 27u IPv6 0x098b5b80 0t0 UDP [2002:3ba7:d4b1::cabc:c8ff:fe90:6472]:123
ntpd 21 root 28u IPv4 0x15463370 0t0 UDP 10.0.130.101:123
ntpd 21 root 30u IPv6 0x15464b80 0t0 UDP [2002:3ba7:d4b1::c3e:e29a:8de6:68cc]:123

So it was the NTP Daemon with the process ID 21…. petit coquin !

(Cf this page of my Wiki: http://wiki.gonzofamily.com/a/Port_listening_on_Mac,_Windows_or_Linux)

IPv6 Forwarding OVH

Vous arrivez peut-être sur cette page car vous galerez  à votre tour.

Le symptome :

Dès qu’on active le forwarding IPv6 sur un serveur dédié OVH on ne peut plus utiliser l’IPv6. Un ping6 indique “Network unreachable”.

Dans le fichier /etc/sysctl.conf vous avez ajouté la ligne suivante :

# Uncomment the next line to enable packet forwarding for IPv6
#  Enabling this option disables Stateless Address Autoconfiguration
#  based on Router Advertisements for this host
net.ipv6.conf.all.forwarding=1>

C’est bien indiqué : en activant cette option on perd la configuration automatique de l’ipv6 (Stateless Address Autoconfiguration).
Il faut donc indiquer votre routeur à la main dans /etc/network/interfaces (pour Debian) :

iface eth0 inet6 static
address 2001:DB8:1:52bb::1
netmask 56
up route -A inet6 add default gw 2001:DB8:1:52FF:FF:FF:FF:FF
down route -A inet6 del default gw 2001:DB8:1:52FF:FF:FF:FF:FF

Vous l’avez surement compris avec cette exemple, notre serveur est en fait sur un netmask /56 et sa gateway est basée sur l’ipv6 de votre host où vous remplacez les derniers octets ainsi:

aaaa:bbbb:cccc:ddFF:FF:FF:FF:FF

Cela me perturbait d’écrire /56 au netmask, mais OVH est formel sur cette page : http://guides.ovh.com/Ipv4Ipv6

A présent, je comprend mieux d’où viennent les erreurs kernel régulièrement affichées dans le syslog :

kernel: IPv6 addrconf: prefix with wrong length 56

IPv6 sur Dedibox v3

Comme l’explique si bien http://wiki.debian.org/DebianIPv6

“Vous ne le savez peut-être pas, mais si vous avez une adresse publique IPv4, vous avez déjà une adresse IPv6 réservée. Il existe un système de transition nommé 6to4 qui lie toute adresse IPv4 à un sous réseaux entier d’adresses IPv6”.

Donc pour toutes IPv4 aaa.bbb.ccc.ddd vous avez le sous réseau entier suivant:

2002:aaa.bbb.ccc.ddd::/48 (ce qui vous permet plus de 65000 sous réseau en /64, et de connecter des millions d’ordinateurs dans chacun).

aaa.bbb.ccc.ddd doit être converti en Hexadecimal. La commande suivante est très efficace sur Mac et Linux:
printf “2002:%02x%02x:%02x%02x::1\n” aaa bbb ccc ddd

Example : IPv4 88.34.32.76, prefix de votre réseau IPv6 2002:5822:204c::/48

Encore faut-il un minimum d’installation pour que ça marche. Un tunnel vers 192.88.99.1 qui vous assure d’être connecté au routeur le plus proche. Si votre provider ou équipe informatique a bien fait son travail.

Sur Debian, ajoutez tout simplement dans /etc/network/interfaces :

auto tun6to4
iface tun6to4 inet6 v4tunnel
address 2002:5822:204c::1
netmask 16
gateway ::192.88.99.1
endpoint any
local 88.34.32.76 #fits address

Le mode tunnel IPv6 automatique de la Time Capsule et Airport extrem doit certainement être basé là dessus. Et le firewall ipv6 intégré est plus rassurant que la Freebox.

D’après mes premiers tests sur Dedibox, le tunnel broker (Hurrican) est plus rapide que le 6to4. Mais le 6to4 est d’une simplicité bien bluffante. Et si Proxad avait choisi un routeur 192.88.99.1 dans leur locaux au lieu d’hurricane (justement 🙂 ) les résultats seraient certainement bien meilleurs que le tunnel broker.

IPv6 and Privacy

IPv6 makes it easy to track you. Let me explain.

IPv6 is composed of a Prefix and a suffix:
IPv6 address: 2001:0DB8:1fc3:481:b357:83ff:fecb:4c30
Prefix: 2001:0DB8:1fc3:481:
Suffix: b357:83ff:fecb:4c30

The prefix changes according to your internet access (at home, work, friend’s…) but the Suffix is deduced from your MAC address and will be always the same for one computer.
So even if your IPv6 Adresse changes, the end of it is unique and identifies your device for sure.

The counter mesure is called IPv6 Privacy Address.
When you enable this policy on your computer, a second IPv6 is randomly affected during autoconfiguration, called Temporary IPv6 address. Even if you cannot change the Prefix, the Suffix changes each time.
It means: you can still contact your computer with the previous IPv6 address, but in the other way (when the computer connect to the internet) it will have a different random address. It has got 2 addresses.
Windows Vista/Seven: it’s enabled by default, you certainly saw “Temporary IPv6 Address” in your ipconfig
Mac OS X 10.6: you have to enable it

How to enable IPv6 Privacy Address on Mac?

you must create the file /etc/sysctl.conf with the following content:

net.inet6.ip6.use_tempaddr=1
net.inet6.ip6.prefer_tempaddr=1

Next restart you’ll get a second IPv6 address and it will be prefered for every internet access.

But I use to protect my servers via the IP address!

Many SSH/FTP/HTTPS servers use IP Addresses to filter access. You would like to keep always the same IP.

I think that every client software should be able to choose which IPv6 address it want to use (since we have 2 IPv6 in Privacy Mode), I guess it will become common very soon. For example in ssh you can add the following line in .ssh/config :

BindAddress 2001:0DB8:1fc3:481:b357:83ff:fecb:4c30

But I think, most of the time, a limited access can be based on the prefix of your IPv6 address. Allowing all your local network to access.

IPv6 Certification

I just got my Free IPv6 certification from Hurrican ( tunnelbroker.net ).

It’s a very interesting process. I think this certification is worth the time spent on it, and means you really mastered IPv6 network and servers configuration.

Before continuing I must wait for my Glue Register…
IPv6 Certification Badge for chriscatfr

Anyway, here in Australia this free tunner broker is very efficient. It allowed me to connect my all home network on IPv6 (the Apple Time Capsule has everything necessary for ipv6 tunnels, even a selective Firewall).

It also allowed me to connect my experimental Linux server (whose provider doesn’t provide IPv6 connexion). This website (on a Dedibox v3) will at last receive an IPv6 next week, Online.net promised… thanks to Hurricane Electric, I did all the necessary tests before the big jump (that I already had done 4 years ago on an OVH server… Online.net is very late…)

change the SSH port on Mac OS X

Being a user of Linux, I got used to change the port of SSH on my Mac with the following line:
sudo vi /etc/sshd_config
Then I could change the number and uncomment the following line:
#Port 22

Sadly I noticed that it makes my IPv6 SSH connection unavailable on the new port (neither on the previous port 22).

The real clean way of changing a Mac OS X Daemon is in the plist files

So now I just changed the port in the ssh.plist file and my SSH Daemon runs on IPv4 and IPv6, on the new port.
sudo vi /System/Library/LaunchDaemons/ssh.plist

And modify as following if you want the port to become 22222:

<key>Sockets</key>
    <dict>
            <key>Listeners</key>
            <dict>
                    <key>SockServiceName</key>
                    <string>22222</string>
                    <key>Bonjour</key>
                    <array>
                            <string>22222</string>
                            <string>sftp-ssh</string>
                    </array>
            </dict>
    </dict>

You can add 2 lines to make SSH available only via IPv4:

<key>Sockets</key>
    <dict>
            <key>Listeners</key>
            <dict>
                    <key>SockServiceName</key>
                    <string>22222</string>
                    <key>SockFamily</key>
                    <string>IPv4</string>
                    <key>Bonjour</key>
                    <array>
                            <string>22222</string>
                            <string>sftp-ssh</string>
                    </array>
            </dict>
    </dict>

Partage d’écran activé via le Terminal

Nous souhaitons activer le contrôle d’écran à distance sur un Mac OS X grace à la ligne de commande

sur Leopard :
$ echo -n enabled > /Library/Preferences/com.apple.ScreenSharing.launchd

sur Snow Leopard Mac OS 10.6 :
$ echo -n enabled > /private/etc/ScreenSharing.launchd

sur Lion Mac OS 10.7 :
$ sudo /bin/launchctl load -w /System/Library/LaunchDaemons/com.apple.screensharing.plist

Pour le désactiver :

sur Leopard
$ rm /Library/Preferences/com.apple.ScreenSharing.launchd

sur Snow Leopard 10.6 :
$ rm /private/etc/ScreenSharing.launchd

sur Lion 10.7 :
$ sudo /bin/launchctl unload -w /System/Library/LaunchDaemons/com.apple.screensharing.plist