Showing posts with label reseau. Show all posts
Showing posts with label reseau. Show all posts

Monday, July 21, 2014

TCN received from stackport1 on 3750

I was troubleshooting a network issue and during this time, I have done the following command on a 3750 stack:

show spanning-tree vlan 200 detail
Bridge Identifier has priority 20480, sysid 200, address a8b1.d36f.c670
  Configured hello time 2, max age 20, forward delay 15
  Current root has priority 8392, address 0021.e809.0670
  Root port is 568 (Port-channel11), cost of root path is 3
  Topology change flag not set, detected flag not set
  Number of topology changes 27 last change occurred 1w2d ago
          from StackPort1


As you can see, the source of the TCN is the StackPort1 on the switch!!!
But what is the meaning of this StackPort1 and how to determinate the real source of the topology change ?

In fact as my SSH session is open on the master and the TCN come from another switch of the stack, the source for my session is the stack port of the master switch. In order to determine which interface is really the source I have to open a session on each switch in order to find the TCN source.

For example, I have opened a session on the 2nd switch of the stack:
C3750#session 2

C3750-2# show spanning-tree detail | i from|exec|occur
 VLAN0001 is executing the ieee compatible Spanning Tree protocol
  Number of topology changes 26 last change occurred 1w2d ago
          from GigabitEthernet2/0/52
 VLAN0040 is executing the ieee compatible Spanning Tree protocol
  Number of topology changes 26 last change occurred 1w2d ago
          from GigabitEthernet2/0/52

As you can see above, we have found the real source of the TCN.

Thursday, August 9, 2012

VPN connexion and Internet Access

When you are connected to a VPN session, normally you can access to the corporate LAN.
However, it's also possible to have access (in the same time) to Internet.

To do this on ASA, you have to configure some NAT rule.
All traffic that will go to Internet have to use the Internet facing interface like source IP address.

The configuration below is an example that can be applied:

ip local pool Pool_VPN 192.168.40.10-192.168.40.250 mask 255.255.255.0
!
interface GigabitEthernet0/1
 description Outside Facing Interface
 nameif INTERNET
 security-level 0
 ip address 199.199.199.199 255.255.255.240
!
object network NAT-VPN-POOL
 subnet 192.168.40.0 255.255.255.0
 description Pool VPN
!
object network NAT-VPN-POOL
 nat (any,INTERNET) dynamic interface

All traffic with VPN IP Pool source address and with Internet destination will match this NAT rule.
Source address will be modified with the outside interface.

Thursday, February 9, 2012

Archive configuration on a Cisco Switch

In a previously post I have written a script (python) to automatically backup cisco config.
There is another method to backup this configuration. Used the archive command. By this way, it's possible to backup the configuration on a remote FTP server. Below, you will find an example:


ip ftp username user1
ip ftp password password1
!
archive
 path ftp://10.10.10.10/folder/My-switch.cfg
 write-memory
 time-period 1440

The write memory command trigger an automatic backup on the ftp server.
1440 means one backup generate every day.

If you make a mistake and you decide to come back on an old version, it's possible to restore the configuration. The better way is  using this command:


configure replace path ftp://10.10.10.10/folder/My-switch.cfg--9-09-00-23-0

To see the state of the archive you can use the 'show archive' command:


SWITCH#show archive
The maximum archive configurations allowed is 14.
The next archive file will be named ftp://10.10.10.10/folder/My-switch.cfg-%3Ctimestamp%3E-2
 Archive #  Name
   1        ftp://10.10.10.10/folder/My-switch.cfgFeb--9-09-00-23-0
   2        ftp:// 10.10.10.10/folder/My-switch.cfgFeb--9-09-00-37-1 <- Most Recent
   3
   4


Thursday, April 7, 2011

Sauvegarde équipements réseaux via pexpect

Ci-dessous un petit script qui permet de lancer les commandes de sauvegarde TFTP via pexpect sur un composant Cisco:

import pexpect
IPa = raw_input('Entrer l adresse IP du composant:')
IP = 'ssh admin@'+IPa

child = pexpect.spawn (IP)

child.expect ('Password: ')

pwd = raw_input('Entrer le password du composant:')

print pwd

child.sendline (pwd)

child.expect ('#')

child.sendline ('copy running-config tftp:')

child.expect ('\? ')

child.sendline ('10.10.10.20')

child.expect ('\? ')

host = IPa+'.cfg'

child.sendline (host)

child.expect ('#')

child.sendline ('exit')

print child.before


Idem pour un Altéon:

import pexpect
child = pexpect.spawn ('ssh admin@10.10.10.10')
child.expect ('password: ')
child.sendline ('admin')
child.expect (['Main#','[y]'])
i = child.expect (['Main#','[y]'])
if i == 0:
print 'Connexion Ok'
elif i == 1:
child.sendline ('y')
else:
p.expect(pexpect.EOF)
print 'Timeout connexion'
child.expect ('Main#')
child.sendline ('/cfg/ptcfg')
child.expect ('server: ')
child.sendline ('10.10.10.20')
child.expect ('server: ')
child.sendline ('hostname.cfg')
child.expect ('server: ')
child.sendline ('')
print child.before


Idem pour un ISG1000:

import pexpect
child = pexpect.spawn ('ssh admin@10.10.10.10')
child.expect ('password: ')
child.sendline ('admin')
child.expect ('>')
child.sendline ('exec save config to tftp 10.10.10.20 hostname.cfg')
child.expect ('>')
print child.before


N'étant pas familié du scripting, je suis preneur de toute amélioration à apporter.

Wednesday, April 6, 2011

NAT sur Catalyst 6500

Le NAT sur les catalyst n'étant réalisable que sur les châssis 6500 (même les 3750 ne supporte pas le NAT), cette configuration est peut documentée. Dans certains cas, il est cependant nécessaire de réaliser une config de NAT autre part que sur un pare-feu.

Exemple de configuration:



Voici la configuration à appliquer pour reproduire le schéma ci-dessus:

ip nat pool testNAT 201.200.200.200 201.200.200.200 netmask 255.255.255.0
ip nat inside source list 150 pool testNAT overload
access-list 150 permit ip 192.168.20.0 0.0.0.255 200.200.200.0 0.0.0.255
!
interface Vlan100
ip address 192.168.20.1 255.255.255.0
ip nat inside
!
interface Vlan200
ip address 201.200.200.1 255.255.255.0
ip nat outside

La commande suivante permet de valider l'état du NAT:
show ip nat translations

Afin de pousser un peu plus le diagnostique, il est nécessaire
d'activer le mode debug avec la commande
:
debug ip nat

Monday, April 4, 2011

Sécurisation SNMP sur Catalyst Cisco

SNMP est une source importante d'information sur les composants réseaux. La communauté public est trop souvent laissée par défaut sur les composants. Si vous êtes appelé à utiliser SNMP, je conseil d'utiliser SNMPv3 et de filtrer les adresses IP qui ont l'accès en lecture ou lecture/écriture.

Ci-dessous la configuration à appliquer pour du SNMPv3 sur un catalyst Cisco (configuration en lecture avec du filtrage sur l'IP source):
access-list <Numero_ACL> permit
access-list
<Numero_ACL> deny any

snmp-server group <Nom_groupe> v3 priv snmp-server user <Nom_user> <Nom_groupe> v3 auth md5 <password> priv des <password> access <Numero_ACL>
Exemple de configuration:
access-list 1 permit 192.168.1.0 0.0.0.255
access-list 1 deny any

snmp-server group ReadOnly v3 priv snmp-server user admin ReadOnly v3 auth md5 password priv des password access 1

Thursday, March 31, 2011

Sécuriser l'authentification sur les switchs

Pas toujours simple de comprendre le fonctionnement et la configuration de l'authentification sur les switchs, pour cela voici un petit récapitulatif

Cisco:
Chez Cisco il y a trois types de connexion bien distinct:
- en telnet ou ssh: line vty
- par le port console: line con, petit conseil utiliser la commande logging synchronous
- et le dernier que je n'ai que rarement vu fonctionner sert aux connexions type modem à distance: line aux
Je ne vais traiter que le premier qui me semble le plus intéressant
La première protection est de créer un couple username password soit directement dans la configuration line vty:
Switch(config)#line vty 0 4
Switch(config-line)#login
Switch(config-line)#password vty-password
soit en utilisant une liste locale dans la conf du switch:
Switch(config)#username enrico password enrico-password
Switch(config)#username rodrigo password rodrigo-password
Switch(config)#line vty 0 4
Switch(config-line)#login local
Rmq: bien faire attention qu'il existe des users dans la conf avant d'utiliser la commande login local, car lors de la prochaine connexion en telnet il est impossible de se connecter (pas de login local alors que le switch en cherche un pour vous authentifier).
authentification pour le mode priviligier (enable):
enable secret enable-secret
enable password enable-password
Si l'authentification par password et secret sont tous les 2 configurés, par défaut le secret sera utilisé.
Le secret est crypté dans la conf contrairement au password
Il est donc fortement conseillé de ne pas mettre le même password et secret afin de ne pas mettre en clair dans la con l'enable secret.
restriction de connexion par adresse réseaux:
pour cela il faut créer une ACL:
access-list 1 permit 192.168.1.12
access-list 1 permit 192.168.1.15
access-list 1 permit 192.168.10.15
puis entrer la commande:
line vty 0 4
access-class 1 in

Configuration pour une connexion ssh (connexion sécurisée):
Switch(config)#hostname SwitchA
SwitchA(config)#ip domain-name mydomain.com
SwitchA(config)#crypto key generate rsa
The name for the keys will be: SwitchA
Choose the size of the key modulus in the range of 360 to 2048 for your
General Purpose Keys. Choosing a key modulus greater than 512 may take
a few minutes.
How many bits in the modulus 512: 1024
Generating RSA keys ...
OK
SwitchA(config)#ip ssh time-out 60
SwitchA(config)#ip ssh authentication-retries 2
SwitchA(config)#line vty 0 4
SwitchA(config-line)#transport input ssh

Vista et DHCPv6

Vista implante le protocole DHCPv6 or après avoir implanté un serveur DHCPv6, je n'arrivais pas à obtenir une adresse via le DHCP.

Après plusieurs essais, je me suis rendu compte qu'il fallait modifier un champ des paquets Router advertisement : Avant modification du RA distribué par le routeur

0000 33 33 00 00 00 01 00 19 06 2f e9 fc 86 dd 6e 00 33...... ./....n.
0010 00 00 00 40 3a ff fe 80 00 00 00 00 00 00 02 19 ...@:... ........
0020 06 ff fe 2f e9 fc ff 02 00 00 00 00 00 00 00 00 .../.... ........
0030 00 00 00 00 00 01 86 00 2e db 40 "20" 07 08 00 00 ........ ..@ ....
0040 00 00 00 00 0b b8 01 01 00 19 06 2f e9 fc 05 01 ........ .../....
0050 00 00 00 00 05 dc 03 04 40 e0 00 27 8d 00 00 09 ........ @..'....
0060 3a 80 00 00 00 00 20 00 12 34 45 67 89 ac 00 00 :..... . .4Eg....
0070 00 00 00 00 00 00 ......

Quand vista reçoit cet RA, il ne produit pas de DHCPv6 solicitation
Après la commande ipv6 nd managed-config-flag sur l'interface réseau d'un routeur cisco. Nouvel RA :
0000 33 33 00 00 00 01 00 19 06 2f e9 fc 86 dd 6e 00 33...... ./....n.
0010 00 00 00 40 3a ff fe 80 00 00 00 00 00 00 02 19 ...@:... ........
0020 06 ff fe 2f e9 fc ff 02 00 00 00 00 00 00 00 00 .../.... ........
0030 00 00 00 00 00 01 86 00 2e 5b 40 "a0" 07 08 00 00 ........ .[@.....
0040 00 00 00 00 0b b8 01 01 00 19 06 2f e9 fc 05 01 ........ .../....
0050 00 00 00 00 05 dc 03 04 40 e0 00 27 8d 00 00 09 ........ @..'....
0060 3a 80 00 00 00 00 20 00 12 34 45 67 89 ac 00 00 :..... . .4Eg....
0070 00 00 00 00 00 00
Maintenant Vista envoie un DHCPv6 solicitation et reçoit une adresse du serveur DHCP.

Rendre anonyme les traces PCAP avec pktanon

Il arrive régulièrement de déposer des traces d'un trafic réseau sur un forum ou un blog. Pour garder l'anonymat des traces, on est obligé de camoufler les IPs ou autre champ des paquets. L'outil pktanon permet l'automatisation de cette démarche.

Allez hop, je l'installe :

  • Décompression de pktanon :

wget http://www.tm.uka.de/software/pktanon/download/pktanon-1.2.3-dev.tar.gz
tar xfz pktanon-1.2.3-dev.tar.gz

  • Installation des dépendances :

su
apt-get install libxerces-c2-dev libboost-dev

  • Installation :
   ./configure
make
su

make install


Au préalable j'ai récupéré une trace pcap avec wireshark. ensuite je modifie le fichier ''settings_identity.xml situé dans le répertoire profile. Dans l'exemple ci-dessous, mon fichier source de se nomme trace.pcap et je le modifie en trace_new.pcap. Je valorise donc de la manière suivante le fichiersettings_identity.xml '':
name="Input">trace.pcap
name="Output">trace_new.pcap
Dans ma trace, je souhaite modifier l'adresse IP source (celle de mon poste par exemple):
anon="AnonBytewiseHashSha1" name="IpSourceip", par défaut le champ anon est à AnonIdentity
Ensuite, il suffit de lancer l'outil pktanon:
pktanon settings_identity.xml
Paquet d'origine:

tcpdump -neXv -c 1 -r trace.pcap

reading from file trace.pcap, link-type EN10MB (Ethernet)
21:15:30.665242 00:23:54:1c:4c:a6 > 00:07:cb:21:1e:27, ethertype IPv4 (0x0800),
length 71: (tos 0x0, ttl 64, id 7617, offset 0, flags DF, proto TCP (6), length 57)
192.168.0.10
. 53135 > 65.54.172.110.1863: P, cksum 0xae82
(incorrect (-> 0xbe20), 1181321880:1181321885(5) ack 1801540939 win 594
0x0000: 4500 0039 1dc1 4000 4006 6ea7 c0a8 000a E..9..@.@.n.....
0x0010: 4136 ac6e cf8f 0747 4669 8a98 6b61 554b A6.n...GFi..kaUK
0x0020: 8018 0252 ae82 0000 0101 080a 0010 45b7 ...R..........E.
0x0030: 002e b810 504e 470d 0a ....PNG..

Paquet formaté:
tcpdump -neXv -c 1 -r trace_new.pcap

reading from file trace_new.pcap, link-type EN10MB
(Ethernet) 21:15:30.665242 da:d5:44:a7:12:59 > 00:07:cb:21:1e:27,
ethertype IPv4 (0x0800), length 71: (tos 0x0, ttl 64, id 7617, offset 0,
flags DF, proto TCP (6), length 57) 246.142.218.253 .53135 >
65.54.172.110.1863: P, cksum 0x6745 (incorrect (-> 0xad46),
1181321880:1181321885(5) ack 1801540939 win 594
0x0000: 4500 0039 1dc1 4000 4006 5dcd f68e dafd E..9..@.@.].....
0x0010: 4136 ac6e cf8f 0747 4669 8a98 6b61 554b A6.n...GFi..kaUK
0x0020: 8018 0252 6745 0000 0101 080a 0010 45b7 ...RgE........E.
0x0030: 002e b810 504e 470d 0a ....PNG..

Friday, March 18, 2011

Accès de secours au module FWSM

Pour accèder à la configuration d'une carte FWSM sur un châssis Cisco 6500 on utilise généralement une connexion SSH. Or si la carte n'est plus accessible en SSH (se couper l'herbe sous le pied est si vite arrivé:)) et la carte n'ayant pas de port console, la seule solution est de se connecter au châssis puis de simuler l'accès console. Cet accès est un pseudo-accès en telnet comme on peut le voir dans l'exemple ci-dessous:
CAT#session switch 1 slot 3 processor 1
The default escape character is Ctrl-^, then x.
You can also type 'exit' at the remote prompt to end the session
Trying 127.0.0.31 ... Open
Cependant, l'accès en telnet depuis un châssis est souvent refusé par l'administrateur afin d'éviter les rebonds. La solution est donc de créer des ACLs qui autorisent la connexion au module FWSM, pour se faire il suffit de suivre la configuration ci-dessous (remarque: cet exemple s'applique à un cluster VSS):
access-list 1 permit 127.0.0.0 0.0.0.255
access-list 1 permit 127.0.1.0 0.0.0.255! Accès au module dans le switch 2
line vty 0 15
access-class 1 out
transport input telnet ssh
transport output telnet
session switch 1 slot 3 processor 1
CAT#session switch 1 slot 3 processor 1
The default escape character is Ctrl-^, then x.
You can also type 'exit' at the remote prompt to end the session
Trying 127.0.0.31 ... Open
User Access Verification
Password:

CAT#session switch 2 slot 3 processor 1
The default escape character is Ctrl-^, then x.
You can also type 'exit' at the remote prompt to end the session
Trying 127.0.1.31 ... Open
User Access Verification
Password:

Evite les rebonds:

CAT#telnet 192.168.10.61

Trying 192.168.10.61 ...

% Connections to that host not permitted from this terminal