GuiguiAbloc

Tag: pix

L’Hippie est à sec avec un Cisco Pix

par guiguiabloc le 27 mar, 2011, sous architecture, réseau

Ah vous m’avez manqué :) J’avoue avoir un peu délaissé mon blog dernièrement et a force de me faire houspiller (ah oui, ahan, encore, fais-moi mal (pardon)), je vous propose donc un petit billet technique sous forme d’atelier @home.

Comme vous l’avez deviné au titre  de ce billet (dont le jeu de mot bien pourri est digne de la lignée des meilleurs calembours Carambar), nous allons parler d’IPsec.

Bien évidemment, comme je ne fais pas comme tout le monde, j’ai du faire face à une situation un peu différente de ce que l’on rencontre généralement.

Je dispose @home, derrière la Freeteuse, d’un Cisco PIX, et je souhaite me connecter en IPsec, en mode tunnel (LAN to LAN) sur mes serveurs dédiés sous linux, ou sur des serveurs derrière d’autres équipements (dans le cas de ce billet, me connecter a un réseau local chez un pote derrière un Netopia R9100.

Seul petit point à souligner, je suis en ip dynamique et les autres en ip fixe (ca change :) ).

Nous allons donc voir  différentes approches d’une connexion IPsec, le Cisco Pix en client, les Linux avec Racoon en serveurs, et le Netopia R9100 en serveur également.

Bien évidemment, comme je ne veux pas exposer les plans d’adressage ip de mon LAN, je vais NATer et filtrer tout ce qui part dans les tunnels.

Un petit dessin valant mieux qu’un grand discours :

Allez, maintenant au boulot.

J’ai décider d’utiliser les plans d’adressages suivant :

10.250.250.0/24 pour NATer mes ressources internes (comment les serveurs de mon LAN sont vus par les autres au travers du tunnel IPsec).

10.40.0.0/24 les ressources du serveur_dédié vu par mon LAN

10.10.150.0/24 les ressources du LAN derrière le Netopia du copain vu depuis mon LAN

Tout ces plans d’adressage vont devenir nos Domaines d’Encryption.

Linux IPsec Tools et RACOON

Sous Linux, la configuration IPsec se fait grace a la suite d’outils IPsec-Tools.

Cette suite d’outil comprend 2 élements importatns :

- Setkey : un outil pour interagir avec la couche ipsec du kernel

- Racoon : un démon IKE pour gérer les clés de connexion IPsec

Sur votre serveur Debian :

apt-get install ipsec-tools racoon

on se créé un fichier /etc/ipsec-tools.conf dans lequel on va détailler notre tunnel IPsec (mode ESP) :

spdadd 10.40.0.0/24 10.250.250.0/24 any -P out ipsec
esp/tunnel/99.99.99.1-0.0.0.0/require;
spdadd 10.250.250.0/24 10.40.0.0/24 any -P in ipsec
esp/tunnel/0.0.0.0-99.99.99.1/require;

Nous définissons donc nos 2 domaines d’encryptions et les deux extrémités du tunnel.

Comme j’ai une ip dynamique, je spéficie 0.0.0.0 (c’est a dire, n’importe qui).

On charge : setkey -f  /etc/ipsec-tools.conf

Vous pouvez jeter un oeil aux SA avec : setkey -D

Pour racoon :

/etc/racoon/racoon.conf
 
...
path pre_shared_key "/etc/racoon/psk.txt";
timer {
phase1 60 seconds ;
phase2 60 seconds ;
}
remote anonymous {
exchange_mode aggressive ;
doi ipsec_doi ;
situation identity_only ;
lifetime time 1 hour ;
generate_policy on;
passive on;
my_identifier address 99.99.99.1 ;
peers_identifier fqdn "pix.guiguiabloc.fr" ;
proposal {
encryption_algorithm aes 256;
hash_algorithm sha1;
authentication_method pre_shared_key;
dh_group modp1024;
}
proposal_check obey ;
}
sainfo anonymous {
pfs_group modp1024;
lifetime time 1 hour ;
encryption_algorithm aes 256;
authentication_algorithm hmac_sha1;
compression_algorithm deflate;
}

Explication :

On défini ici les différents paramètres de sécurité du tunnel pour les Phase 1 (IKE) et 2 (IPsec) a savoir les méthodes de chiffrement, de hachage, les temps de vie, l’activation du PFS (pour échanger des clés supplémentaires ) etc…

Je ne vais pas entrer dans les détails d’IPsec, donc un peu de lecture :D :

http://www.securiteinfo.com/cryptographie/IPSec.shtml

http://www.tcpipguide.com/free/t_IPSecurityIPSecProtocols.htm

La partie importante qui nous intéresse ici est le mode « Agressive » et non « Main ». En effet, j’ai une ip dynamique et je ne peux donc pas me baser dessus pour la négociation. J’utilise donc le fqdn de mon Pix (pix.guiguiabloc.fr) comme identifiant, et pour faire du fqdn+ pre-shared key, bah il faut etre en mode Agressive :)

Enfin dans le fichier /etc/racoon/psk.txt je renseigne la Pre-shared key (le mot de passe si vous préférez) :

pix.guiguiabloc.fr motdepassesupersecretamoi

Vous pouvez lancer Racoon : /etc/init.d/racoon start et le démon doit écouter sur les ports UDP 4500 et 500.

NETOPIA R9100

Le Netopia R9100 est un vieux routeur qui fait papa/maman. On peut le retrouver dans certaines TPE/PME ou chez des potes Geek qui font de la récupération :p , c’est le cas ici.

Ouf….

Allez on s’occupe de la maison.

On NAT notre pc 192.168.100.1 en une ip du domaine d’encryption

r-backbone
 
int fa 0/0 (interne)
 
ip nat inside
 
int fa 0/1 (externe)
 
ip nat outside
 
ip nat inside source static 192.168.100.1 10.250.250.1
 
ip route 10.250.250.0 255.255.255.0 FastEthernet0/0

On route les domaines d’encyptions des serveurs distants :

ip route 10.40.0.0 255.255.255.0 10.254.254.254
 
ip route 10.10.150.0 255.255.255.0 10.254.254.254
 
Coeur de Réseau
 
ip route 10.40.0.0 255.255.255.0 10.144.1.254
 
ip route 10.10.150.0 255.255.255.0 10.144.1.254

Cisco PIX

# Les ACLS qui vont bien
access-list outside-ipsec extended permit ip 10.250.250.0 255.255.255.0 10.10.150.0 255.255.255.0
access-list outside-ipsec extended permit ip 10.250.250.0 255.255.255.0 10.40.0.0 255.255.255.0
 
access-list outside_serveur extended permit ip 10.250.250.0 255.255.255.0 10.40.0.0 255.255.255.0
access-list outside-pote extended permit ip 10.250.250.0 255.255.255.0 10.10.150.0 255.255.255.0
 
 
# on ne natte pas les ips des domaines d'encryption
 
nat (inside-test) 0 access-list outside-ipsec
 
# La partie IPSEC elle meme
 
crypto ipsec transform-set ESP-AES-256-MD5 esp-aes-256 esp-md5-hmac
crypto ipsec transform-set ESP-DES-SHA esp-des esp-sha-hmac
crypto ipsec transform-set ESP-3DES-SHA esp-3des esp-sha-hmac
crypto ipsec transform-set ESP-DES-MD5 esp-des esp-md5-hmac
crypto ipsec transform-set ESP-AES-192-MD5 esp-aes-192 esp-md5-hmac
crypto ipsec transform-set ESP-3DES-MD5 esp-3des esp-md5-hmac
crypto ipsec transform-set ESP-AES-256-SHA esp-aes-256 esp-sha-hmac
crypto ipsec transform-set ESP-AES-128-SHA esp-aes esp-sha-hmac
crypto ipsec transform-set ESP-AES-192-SHA esp-aes-192 esp-sha-hmac
crypto ipsec transform-set ESP-AES-128-MD5 esp-aes esp-md5-hmac
crypto ipsec security-association lifetime seconds 28800
crypto ipsec security-association lifetime kilobytes 4608000
crypto map map-ipsec 1 match address outside_serveur
crypto map map-ipsec 1 set pfs
crypto map map-ipsec 1 set peer 99.99.99.1
crypto map map-ipsec 1 set transform-set ESP-AES-128-SHA ESP-AES-128-MD5 ESP-AES-192-SHA ESP-AES-192-MD5 ESP-AES-256-SHA ESP-AES-256-MD5 ESP-3DES-SHA ESP-3DES-MD5 ESP-DES-SHA ESP-DES-MD5
crypto map map-ipsec 1 set nat-t-disable
crypto map map-ipsec 1 set phase1-mode aggressive
crypto map map-ipsec 20 match address outside-pote
crypto map map-ipsec 20 set pfs
crypto map map-ipsec 20 set peer 88.88.88.88
crypto map map-ipsec 20 set transform-set ESP-3DES-SHA
crypto map map-ipsec 20 set nat-t-disable
crypto map map-ipsec 20 set phase1-mode aggressive
crypto map map-ipsec interface outside
crypto isakmp identity hostname
crypto isakmp enable outside
crypto isakmp policy 5
authentication pre-share
encryption 3des
hash sha
group 2
lifetime 86400
crypto isakmp policy 10
authentication pre-share
encryption des
hash sha
group 2
lifetime 86400
crypto isakmp policy 20
authentication pre-share
encryption aes-256
hash sha
group 2
lifetime 86400
 
group-policy IPSEC_POLICY internal
group-policy IPSEC_POLICY attributes
vpn-filter none
vpn-tunnel-protocol IPSec
tunnel-group 99.99.99.1 type ipsec-l2l
tunnel-group 99.99.99.1 general-attributes
default-group-policy IPSEC_POLICY
tunnel-group 99.99.99.1 ipsec-attributes
pre-shared-key *
tunnel-group 88.88.88.88 type ipsec-l2l
tunnel-group 88.88.88.88 general-attributes
default-group-policy IPSEC_POLICY
tunnel-group 88.88.88.88 ipsec-attributes
pre-shared-key *

N’oubliez pas que vous ne pouvez avoir qu’1 crypto map par Interface, il faut donc juste rajouter un identifant numerique supplémentaire pour chaque nouveau tunnel (ici 1 pour le premier tunnel, 20 le deuxieme).

Et beh..

Allez maintenant on test :D :

ssh 10.10.150.1

Mar 27 18:12:58 pix Mar 27 2011 18:12:58: %PIX-5-713041: IP = 88.88.88.88, IKE Initiator: New Phase 1, Intf inside-test, IKE Peer 88.88.88.88  local Proxy Address 10.250.250.0, remote Proxy Address 10.10.150.0,  Crypto map (map-ipsec)
Mar 27 18:13:01 pix Mar 27 2011 18:13:01: %PIX-6-713219: IP = 88.88.88.88, Queuing KEY-ACQUIRE messages to be processed when P1 SA is complete.
Mar 27 18:13:07 pix Mar 27 2011 18:13:07: %PIX-6-713219: IP = 88.88.88.88, Queuing KEY-ACQUIRE messages to be processed when P1 SA is complete.
Mar 27 18:13:11 pix Mar 27 2011 18:13:11: %PIX-6-113009: AAA retrieved default group policy (IPSEC_POLICY) for user = 88.88.88.88
Mar 27 18:13:11 pix Mar 27 2011 18:13:11: %PIX-5-713119: Group = 88.88.88.88, IP = 88.88.88.88, PHASE 1 COMPLETED
Mar 27 18:13:11 pix Mar 27 2011 18:13:11: %PIX-3-713122: IP = 88.88.88.88, Keep-alives configured on but peer does not support keep-alives (type = None)
Mar 27 18:13:11 pix Mar 27 2011 18:13:11: %PIX-6-713220: Group = 88.88.88.88, IP = 88.88.88.88, De-queuing KEY-ACQUIRE messages that were left pending.
Mar 27 18:13:24 pix Mar 27 2011 18:13:24: %PIX-5-713073: Group = 88.88.88.88, IP = 88.88.88.88, Responder forcing change of IPSec rekeying duration from 28800 to 3600 seconds
Mar 27 18:13:24 pix Mar 27 2011 18:13:24: %PIX-5-713049: Group = 88.88.88.88, IP = 88.88.88.88, Security negotiation complete for LAN-to-LAN Group (88.88.88.88)  Initiator, Inbound SPI = 0xe4e88f39, Outbound SPI = 0x94160878
Mar 27 18:13:24 pix Mar 27 2011 18:13:24: %PIX-6-602303: IPSEC: An outbound LAN-to-LAN SA (SPI= 0x94160878) between 192.168.1.250 and 88.88.88.88 (user= 88.88.88.88) has been created.
Mar 27 18:13:24 pix Mar 27 2011 18:13:24: %PIX-6-602303: IPSEC: An inbound LAN-to-LAN SA (SPI= 0xE4E88F39) between 192.168.1.250 and 88.88.88.88 (user= 88.88.88.88) has been created.
Mar 27 18:13:24 pix Mar 27 2011 18:13:24: %PIX-5-713120: Group = 88.88.88.88, IP = 88.88.88.88, PHASE 2 COMPLETED (msgid=f0cb61bd)

Rhââ Lovely :D

Idem l’autre tunnel avec un ping 10.40.0.1 par exemple

Si vous voulez filtrer les paquets dans vos tunnels ipsec, utilisez des ACLS de type :

access-list acl-ipsec extended permit tcp 10.40.0.0 255.255.255.0 eq www 10.250.250.0 255.255.255.0 gt 1023

(le reseau distant d’abord, puis votre propre reseau ensuite).

Dans le Pix, modifier l’éntrée vpn-filter none par :

vpn-filter value acl-ipsec

Amusez vous bien :D

Laisser un commentaire :, , , plus...

J’ai envie de PIXer…

par guiguiabloc le 19 mai, 2008, sous cisco, matériel

Oui je sais, le titre de ce billet est nul :-D mais j’aurais pu faire pire, genre « Tu veux pas que je te la tienne pour aller PIXer ?… » :-)

Bon d’accord, j’adore les vannes à 2 euros ;-) (1)

A la découverte donc du Cisco PIX 515-R.

L’accès à la console se fait comme pour tout Cisco, via un câble série sur le port Console.

Pour ceux qui connaissant déjà l’IOS, ils ne seront pas perdu, c’est quasiment pareil (a part le complétement automatique qui ne marche :-( et ça, c’est très désagréable !).

pix# sh version

Cisco PIX Firewall Version 6.3(5)
Cisco PIX Device Manager Version 2.0(2)

Compiled on Thu 04-Aug-05 21:40 by morlee

pix up 8 mins 30 secs

Hardware: PIX-515, 32 MB RAM, CPU Pentium 200 MHz
Flash i28F640J5 @ 0×300, 16MB
BIOS Flash AT29C257 @ 0xfffd8000, 32KB

0: ethernet0: address is 0003.e300.3e9e, irq 11
1: ethernet1: address is 0003.e300.3e9f, irq 10
2: ethernet2: address is 00d0.b76b.3ab0, irq 9
Licensed Features:
Failover: Disabled
VPN-DES: Enabled
VPN-3DES-AES: Disabled
Maximum Physical Interfaces: 3
Maximum Interfaces: 5
Cut-through Proxy: Enabled
Guards: Enabled
URL-filtering: Enabled
Inside Hosts: Unlimited
Throughput: Unlimited
IKE peers: Unlimited

This PIX has a Restricted (R) license.

La première chose qui m’a « dérangé, c’est le fait d’avoir le 3des/aes désactivé, et effectivement, lors de ma première connexion ssh dessus, le message d’erreur fut sans appel :

ssh 192.168.1.1
Selected cipher type <unknown> not supported by server.

Résolu par un : ssh -c des admin@192.168.1.1 mais bon…

Ensuite, lors de l’accès à l’interface graphique PDM en https, Iceweasel (le Firefox des gens biens ;-) ), me jetait gentiment…

Résolu également en autorisant un niveau d’encryptage plus bas :

Taper: about:config dans la barre d’adresse et passer la valeur security.ssl3.rsa_rc4_40_md5 à true.

Cela fonctionnait mais ce niveau de cryptage me dérangeait. Un petit tour sur Google et surtout sur le riche site de Cisco aller me donner la réponse que j’attendais :

Cisco fournit gratuitement une clé d’activation de licence pour les PIX pour ceux qui le demande !!! (lire ici )

Bien sûr il faut s’enregistrer mais nul besoin d’être un client Cisco, un simple compte « Guest » suffit pour obtenir la licence. Ayant déjà un compte chez Cisco, c’était plus simple pour moi.

Une fois enregistré, allez ici : http://www.cisco.com/go/license

Tout en haut, cliquez sur : If you do not have a Product Authorization Key (PAK), please click here for available licenses.

En bas de la liste, vous trouverez le choix : Cisco PIX Security Appliance 3DES/AES License

Remplissez tout les champs (le formulaire est très… pointilleux) avec bien sur le numéro de série de votre PIX et quelques minutes plus tard, oh joie, une clé d’activation dans ma Boite aux Lettres.

Retour sur la console du PIX, passage en mode config :

pix(config)#activation-key 54bf4b80 b7237e20 05022c63 f09e3302
Updating flash...Done.

(ne rêvez pas, c’est pas le vrai numéro hein… On est pas dans le monde des Bisounours non plus…)

Un reload du PIX et :

VPN-3DES-AES: Enabled

Mouah :-D :-D

On reconfigure ses clés :

ca gen rsa key 1024

(si le pix gueule que vous avez déjà des clés, passer la commande : ca zero rsa )

puis : ca save all

reload et voila, du 3DES au lieu d’un pauvre DES :-) (visible par un show ssh session)

PS: Bien sûr, j’ai passé outre dans mes explications le fait de configurer le hostname et le domain du PIX, ainsi que les accès sur l’interface Inside (LAN) du genre : ssh 192.168.1.52 255.255.255.255 inside (pour autoriser la machine 192.168.1.52 a accèder en ssh sur l’interface Inside).

Le PIX a trois interfaces, INSIDE (qui correspond au LAN), OUTSIDE (qui correspond au WAN ou accès au net) et DMZ pour… la DMZ ;-)

A chaque interface on définit un niveau définit par une valeur.
Le Pix interdit toute communication émanent d’une interface ayant un niveau de sécurité bas vers une interface de niveau élevé.

Il faut donc attribuer un niveau de sécurité de 0 pour l’interface connectée à Internet et un niveau de 100 pour l’interface connecter au LAN mais seulement dans le cas ou celle-ci se nomme inside.

Dans le cas contraire on est forcer de prendre une valeur de sécurité inférieur, par exemple 99.

Pour la DMZ (zone démilitarisée), on met un niveau de sécurité à 50.

Simple à comprendre et terriblement efficace.

Les ACL ressemblent à celle de l’IOS donc si vous connaissez déjà les Cisco, vous ne serez pas perdu.

Pour les autres, des centaines de tutos existent sur Internet et bien sur, je vous recommande chaudement le site de Cisco qui est une mine d’information.

(commencer la : CISCO PIX )

Une des choses que je voulais voir aussi, c’est le PDM ou Pix Device Manager, une interface web en Java qui permet de tout faire graphiquement.

Je ne suis pas un fan des trucs graphiques et pour moi, rien ne vaut la CLI, mais par curiosité, j’ai essayer.

Mon show version m’indiquait : Cisco PIX Device Manager Version 2.0(2)

J’ai donc regarder si je n’avais pas une version plus récente :

guiguiabloc@monpc:~/$ ls -lrt /mnt/lamule

Cisco Pix 6.3(5) And Pdm 3.0(4)

Parfait :-D

La mise a jour se fait comme pour un IOS, via tftp.

pix#copy tftp flash
Address or name of remote host [127.0.0.1]? 192.168.1.52
Source file name [cdisk]?pdm-304.bin
copying tftp://192.168.1.52/pdm-304.bin to flash
[yes|no|again]?yes

L’accès en https (n’oubliez pas les ACL…) et voici quelques copies d’écrans :

PDM1

PDM2

PDM3

PDM4

PDM5

PDM6

Intéressant non ?

Les possibilités sont très nombreuses et le PDM permet de vérifier vos ACL, voir même de les optimiser.

De plus, tout ce qui est config VPN, remontée de Logs, Monitoring etc… est inclus.

Je pense donc l’utiliser en plus de la CLI pour gérer ce petit bijou qu’est le PIX :-D

Ne me reste plus maintenant à savoir ou le mettre… Oui je sais ICI

(1) C’est l’histoire de deux oeufs sur une poële.
Le premier dit au deuxième : « Tu trouves pas qu’il fait chaud ? »

L’autre se met alors a crier : « AAAAh ! Un oeuf qui parle ! « 

Ok…je –>[]

 

 

6 Commentairess :, , plus...

Vous cherchez quelque chose ?

Utilisez le formulaire ci-dessous:

Vous ne trouvez pas ce que vous voulez ? Laisser un Commentaire sur un Billet !