Archives pour la catégorie ‘Réseau’

FreeBSD : configuration réseau des jails

Lorsqu’une seule IP publique est disponible, la configuration réseau des jails doit s’appuyer sur un réseau privé où chaque jail possède son IP tout comme l’hôte réél (eh oui). Ainsi, une nouvelle interface loopback doit être créée, en y attribuant l’adresse IP dédiée à l’hôte :

# ifconfig lo1 create
# ifconfig lo1 inet 172.16.0.254 netmask 255.255.255.0

Ici, l’interface loopback lo1 est créée et l’hôte réel y est associée par l’IP 172.16.0.254. Ensuite, les alias réseaux peuvent être ajoutés de cette façon :

# ifconfig lo1 alias 172.16.0.1 netmask 255.255.255.0

La première jail aura donc l’IP 172.16.0.1. Cette commande est évidemment à répéter pour chaque jail, en y affectant une autre IP. Une fois l’ensemble des alias créés, les jails pourront enfin être démarrées.

Pour recréer la configuration réseau au démarrage, il faut modifier rc.conf :

# network_interfaces="lo0 re0 lo1"
# ifconfig_lo1="inet 172.16.0.254 netmask 255.255.255.0 broadcast 172.16.0.255"
# ifconfig_lo1_alias0="inet 172.16.0.1 netmask 255.255.255.0 broadcast 172.16.0.255"

Puis, créer le fichier start_if.lo1 :

# echo '/sbin/ifconfig lo1 create' > /etc/start_if.lo1

Au niveau de votre parefeu, il faudra évidemment effectuer les redirections de port sur l’IP de la jail pour rendre le service accessible. Par exemple avec PF :

rdr pass on $ext_if proto tcp from any to port 80 -> 172.16.0.1 port 80

OpenVPN : installation console sous Mac OS X (sans GUI)

OpenVPN est un logiciel client/serveur permettant d’interconnecter des réseaux privés distants (VPN) de manière sûre et sécurisée par le protocole SSL/TLS. Il est disponible pour la plupart des OS, pour peu que ceux-ci possèdent les drivers réseaux virtuels nécessaires : les drivers TUN/TAP.

Sous Mac OS X, le plus simple est d’utiliser le logiciel Tunnelblick qui est un package contenant OpenVPN, une interface graphique et les modules noyaux pour le réseau. Cela convient parfaitement pour une utilisation client, mais aucunement dans le cas d’une configuration serveur. Les scripts de création des certificats utilisateur ne sont d’ailleurs pas fournis. De plus, dans le cas d’une utilisation à distance par console SSH, l’interface graphique n’est pas disponible.

Ce billet vous détaille les étapes principales de l’installation console d’OpenVPN sous Mac OS X.

  • Installation des drivers réseaux :

Rendez-vous sur le site des drivers TUN/TAP pour Mac OS : http://tuntaposx.sourceforge.net/. Téléchargez et installez le package. N’oubliez pas de redémarrer votre système pour que les modules noyaux soient chargés automatiquement. Pour le vérifier, lancez cette commande et contrôlez sa sortie :

$ kextstat

Si les drivers ne sont pas chargés, vous pouvez le faire manuellement :

$ sudo kextload /Library/Extensions/tun.kext
$ sudo kextload /Library/Extensions/tap.kext

Les périphériques réseaux doivent être présents dans /dev :

$ ls /dev/tun* /dev/tap*
/dev/tun0  /dev/tun1  /dev/tun10 /dev/tun11 /dev/tun12 /dev/tun13 /dev/tun14 /dev/tun15 /dev/tun2  /dev/tun3  /dev/tun4  /dev/tun5  /dev/tun6  /dev/tun7  /dev/tun8  /dev/tun9

Un de ces périphériques sera spécifié dans le fichier de configuration de votre connexion VPN.

  • Installation d’OpenVPN :

Je l’installe par le biais de MacPorts :

$ sudo port install openvpn2
--->  Computing dependencies for openvpn2
--->  Dependencies to be installed: lzo2
--->  Fetching lzo2
--->  Attempting to fetch lzo-2.03.tar.gz from http://www.oberhumer.com/opensource/lzo/download/
--->  Verifying checksum(s) for lzo2
--->  Extracting lzo2
--->  Configuring lzo2
--->  Building lzo2
--->  Staging lzo2 into destroot
--->  Installing lzo2 @2.03_2
--->  Activating lzo2 @2.03_2
--->  Cleaning lzo2
--->  Fetching openvpn2
--->  Attempting to fetch openvpn-2.1.1.tar.gz from http://lil.fr.distfiles.macports.org/openvpn2
--->  Verifying checksum(s) for openvpn2
--->  Extracting openvpn2
--->  Configuring openvpn2
--->  Building openvpn2
--->  Staging openvpn2 into destroot
--->  Installing openvpn2 @2.1.1_2
--->  Activating openvpn2 @2.1.1_2
--->  Cleaning openvpn2

Je vous renvoie à la documentation d’OpenVPN pour configurer votre connexion VPN. Pour ma part, j’ai créé le répertoire /opt/local/etc/openvpn2 pour y stocker les fichiers de configuration.

Pour lancer une connexion VPN, rien de plus simple :

$ cd /opt/local/etc/openvpn2
$ sudo openvpn2 --config vpn-sample.conf
Mon Aug  9 09:51:52 2010 OpenVPN 2.1.1 i386-apple-darwin10.4.0 [SSL] [LZO2] built on Aug  9 2010
Mon Aug  9 09:51:52 2010 NOTE: the current --script-security setting may allow this configuration to call user-defined scripts
Enter Private Key Password:
Mon Aug  9 09:51:55 2010 WARNING: this configuration may cache passwords in memory -- use the auth-nocache option to prevent this
Mon Aug  9 09:51:55 2010 Control Channel Authentication: using 'interact.lu/ta.key' as a OpenVPN static key file
Mon Aug  9 09:51:55 2010 Outgoing Control Channel Authentication: Using 160 bit message hash 'SHA1' for HMAC authentication
Mon Aug  9 09:51:55 2010 Incoming Control Channel Authentication: Using 160 bit message hash 'SHA1' for HMAC authentication
Mon Aug  9 09:51:55 2010 LZO compression initialized
Mon Aug  9 09:51:55 2010 Control Channel MTU parms [ L:1542 D:166 EF:66 EB:0 ET:0 EL:0 ]
Mon Aug  9 09:51:55 2010 Data Channel MTU parms [ L:1542 D:1450 EF:42 EB:135 ET:0 EL:0 AF:3/1 ]
Mon Aug  9 09:51:55 2010 Local Options hash (VER=V4): '504e774e'
Mon Aug  9 09:51:55 2010 Expected Remote Options hash (VER=V4): '14168603'
Mon Aug  9 09:51:55 2010 Socket Buffers: R=[42080->65536] S=[9216->65536]
Mon Aug  9 09:51:55 2010 UDPv4 link local: [undef]
Mon Aug  9 09:51:55 2010 UDPv4 link remote: 80.80.80.80:1194
Mon Aug  9 09:51:55 2010 TLS: Initial packet from 80.80.80.80:1194, sid=750c51a1 be4999e0
Mon Aug  9 09:51:56 2010 VERIFY OK: depth=1, /C=FR/ST=FR/L=France/O=Sample/CN=Sample_CA/emailAddress=admin@sample.fr
Mon Aug  9 09:51:56 2010 VERIFY OK: nsCertType=SERVER
Mon Aug  9 09:51:56 2010 VERIFY OK: depth=0, /C=FR/ST=FR/L=France/O=Sample/CN=Sample_CA/emailAddress=admin@sample.fr
Mon Aug  9 09:51:57 2010 Data Channel Encrypt: Cipher 'BF-CBC' initialized with 128 bit key
Mon Aug  9 09:51:57 2010 Data Channel Encrypt: Using 160 bit message hash 'SHA1' for HMAC authentication
Mon Aug  9 09:51:57 2010 Data Channel Decrypt: Cipher 'BF-CBC' initialized with 128 bit key
Mon Aug  9 09:51:57 2010 Data Channel Decrypt: Using 160 bit message hash 'SHA1' for HMAC authentication
Mon Aug  9 09:51:57 2010 Control Channel: TLSv1, cipher TLSv1/SSLv3 DHE-RSA-AES256-SHA, 1024 bit RSA
Mon Aug  9 09:51:57 2010 [server] Peer Connection Initiated with 80.80.80.80:1194
Mon Aug  9 09:51:59 2010 SENT CONTROL [server]: 'PUSH_REQUEST' (status=1)
Mon Aug  9 09:51:59 2010 PUSH: Received control message: 'PUSH_REPLY,route 192.168.201.0 255.255.255.0,ping 10,ping-restart 120,dhcp-option DNS 192.168.100.254,route 192.168.1.0 255.255.255.0,route 192.168.2.0 255.255.255.0,route 192.168.100.0 255.255.255.0,ifconfig 192.168.201.1 192.168.201.2'
Mon Aug  9 09:51:59 2010 OPTIONS IMPORT: timers and/or timeouts modified
Mon Aug  9 09:51:59 2010 OPTIONS IMPORT: --ifconfig/up options modified
Mon Aug  9 09:51:59 2010 OPTIONS IMPORT: route options modified
Mon Aug  9 09:51:59 2010 OPTIONS IMPORT: --ip-win32 and/or --dhcp-option options modified
Mon Aug  9 09:51:59 2010 ROUTE default_gateway=0.0.0.0
Mon Aug  9 09:51:59 2010 TUN/TAP device /dev/tun0 opened
Mon Aug  9 09:51:59 2010 /sbin/ifconfig tun0 delete
Mon Aug  9 09:51:59 2010 /sbin/ifconfig tun0 192.168.201.1 192.168.201.2 mtu 1500 netmask 255.255.255.255 up
Mon Aug  9 09:51:59 2010 /sbin/route add -net 192.168.201.0 192.168.201.2 255.255.255.0
add net 192.168.201.0: gateway 192.168.201.2
Mon Aug  9 09:51:59 2010 /sbin/route add -net 192.168.1.0 192.168.201.2 255.255.255.0
add net 192.168.1.0: gateway 192.168.201.2
Mon Aug  9 09:51:59 2010 /sbin/route add -net 192.168.2.0 192.168.201.2 255.255.255.0
add net 192.168.2.0: gateway 192.168.201.2
Mon Aug  9 09:51:59 2010 /sbin/route add -net 192.168.100.0 192.168.201.2 255.255.255.0
add net 192.168.100.0: gateway 192.168.201.2
Mon Aug  9 09:51:59 2010 Initialization Sequence Completed

Si vous obtenez à la place l’erreur suivante :

Mon Aug  9 09:49:02 2010 Cannot allocate TUN/TAP dev dynamically
Mon Aug  9 09:49:02 2010 Exiting

Cela signifie que les modules noyaux ne sont pas chargés. Reportez-vous à l’étape précédente pour y remédier.

Si vous devez utiliser un serveur DNS différent de votre connexion Internet, créez une nouvelle configuration réseau  dans Préférences Systèmes / Réseau et utilisez les commandes suivantes pour la changer :

$ networksetup -listlocations
Automatic
Sample VPN
$ sudo networksetup -switchtolocation 'Sample VPN'
found it!
$ sudo networksetup -getcurrentlocation
Sample VPN

Au revoir Tunnelblick !

Fichier de configuration client : openvpn.conf

Bind : journaliser les requêtes DNS

Pour enregistrer l’ensemble des requêtes soumises à votre serveur DNS bind, il faut ajouter ce bloc à votre fichier de configuration :

// Logging
logging {
 category "default" { "debug"; };
 category "general" { "debug"; };
 category "database" { "debug"; };
 category "security" { "debug"; };
 category "config" { "debug"; };
 category "resolver" { "debug"; };
 category "xfer-in" { "debug"; };
 category "xfer-out" { "debug"; };
 category "notify" { "debug"; };
 category "client" { "debug"; };
 category "unmatched" { "debug"; };
 category "network" { "debug"; };
 category "update" { "debug"; };
 category "queries" { "debug"; };
 category "dispatch" { "debug"; };
 category "dnssec" { "debug"; };
 category "lame-servers" { "debug"; };

 channel "debug" {
 file "/var/log/named.log" versions 3 size 10m;
 print-time yes;
 print-category yes;
 };
};

L’ensemble des requêtes et opérations effectuées par le serveur sera alors logué. Voici un exemple de sortie type :

18-May-2010 09:46:06.775 queries: client 192.168.2.26#64549: query: www.liberation.fr IN A +
18-May-2010 09:46:06.776 queries: client 192.168.2.26#64550: query: images.apple.com IN A +
18-May-2010 09:46:06.776 queries: client 192.168.2.26#64551: query: permanent.nouvelobs.com IN A +
18-May-2010 09:46:06.823 queries: client 192.168.1.4#58414: query: pagead2.googlesyndication.com IN A +
18-May-2010 09:46:06.997 queries: client 192.168.2.26#64552: query: tempsreel.nouvelobs.com IN A +
18-May-2010 09:46:07.022 queries: client 192.168.1.4#57886: query: googleads.g.doubleclick.net IN A +
18-May-2010 09:46:08.023 queries: client 192.168.1.4#57582: query: oswald.pages.de IN A +
18-May-2010 09:46:08.024 queries: client 192.168.1.4#61346: query: twitter.com IN A +
18-May-2010 09:46:08.024 queries: client 192.168.1.4#51376: query: www.facebook.com IN A +
18-May-2010 09:46:08.733 queries: client 192.168.100.25#43974: query: 10.1.168.192.sbl-xbl.spamhaus.org IN A +
18-May-2010 09:46:08.797 queries: client 192.168.100.25#43974: query: 10.1.168.192.bl.spamcop.net IN A +
18-May-2010 09:46:08.859 queries: client 192.168.100.25#43974: query: 10.1.168.192.cbl.abuseat.org IN A +
18-May-2010 09:46:08.859 queries: client 192.168.100.25#43974: query: 10.1.168.192.rbl.mail-abuse.org IN A +
18-May-2010 09:46:09.317 queries: client 192.168.2.29#57087: query: www.facebook.com IN A +
18-May-2010 09:46:09.516 queries: client 192.168.100.25#43974: query: hookah.nl IN MX +
18-May-2010 09:46:09.558 lame-servers: host unreachable resolving 'ns2.sekeris.nl/A/IN': 2a00:d78:0:102:193:176:144:2#53
18-May-2010 09:46:09.558 lame-servers: host unreachable resolving 'ns2.sekeris.nl/AAAA/IN': 2001:7b8:606::28#53
18-May-2010 09:46:09.558 lame-servers: host unreachable resolving 'ns2.sekeris.nl/A/IN': 2001:500:2e::1#53
18-May-2010 09:46:09.558 lame-servers: host unreachable resolving 'ns2.sekeris.nl/AAAA/IN': 2a00:d78:0:102:193:176:144:2#53
18-May-2010 09:46:09.558 lame-servers: host unreachable resolving 'ns2.sekeris.nl/AAAA/IN': 2001:610:0:800d::2#53

Réseau : détecter les adresses IP utilisées

Pour détecter automatiquement l’ensemble des IP utilisées sur un réseau particulier, le scanneur nmap est d’un grand secours :

$ sudo nmap -T4 -sP 192.168.100.0/24

Starting Nmap 5.21 ( http://nmap.org ) at 2010-04-18 10:22 CEST
Nmap scan report for lenny.interact.lu (192.168.100.2)
Host is up (0.00024s latency).
Nmap scan report for scratchy.interact.lu (192.168.100.3)
Host is up (0.00034s latency).
Nmap scan report for flanders.interact.lu (192.168.100.25)
Host is up (0.00023s latency).
Nmap scan report for filmfund.interact.lu (192.168.100.82)
Host is up (0.00047s latency).
Nmap scan report for krusty.interact.lu (192.168.100.86)
Host is up (0.00056s latency).
Nmap scan report for maggie.interact.lu (192.168.100.100)
Host is up (0.00040s latency).
Nmap scan report for otto.interact.lu (192.168.100.254)
Host is up (0.00012s latency).
Nmap done: 256 IP addresses (7 hosts up) scanned in 3.36 seconds

La sortie peut être plus verbeuse (adresse MAC, constructeur de la carte réseau) si le poste est connecté sur le réseau scanné.

Réseau : DNS publics Google

nameserver 8.8.8.8
nameserver 8.8.4.4

Réseau : géolocalisation de votre connexion

Pour géolocaliser votre connexion Internet (au niveau du DSLAM de votre FAI), une commande sympa :

$ curl -s "http://www.geody.com/geoip.php?ip=$(curl -s icanhazip.com)" | sed '/^IP:/!d;s/<[^>][^>]*>//g'
IP: XX.XX.XX.XXX Location: Munshausen, Luxembourg   (Visual Online S.A.)
Haut de page