Müssen Router twittern können?

Embedded Event Manager (EEM) Scripting Community: Tweet from IOS

via http://etherealmind.com/

Cisco IPv6 Feature Parity

Was es bei einigen Cisco Catalysten schon länger gibt, ist jetzt endlich auch bei der neuen Generation der Integrated Services Router (ISR-G2: 1900, 2900, 3900) angekommen:

Cisco will support packaging parity for IPv6 with IPv4, for Cisco Integrated Services Routers Generation 2, starting with Cisco IOS Software Release 15.0(1)M, as well as in future 15 M and 15 T releases. IPv6 feature support for a technology will now be packaged in the same feature set as IPv4.

Cisco IOS: Public-Key-basierte SSH-Logins

routerEin lang gehegter Wunsch ist mit IOS 15.0 in Erfüllung gegangen. SSH-Logins mit Public-Key-Authentifizierung:

http://www.cisco.com/en/US/docs/ios/sec_user_services/configuration/guide/sec_secure_shell_v2.html#wp1063190

Leider klappt es bei mir noch nicht … :-(

Update 06.10.09: Nach anfänglichen Schwierigkeiten läuft es jetzt. Es hat nicht funktioniert, solange ich den Befehl

aaa authorization exec default local

in der Konfiguration hatte, um beim Login direkt im Enable-Mode zu landen. Ohne Exec-Authorization hat man aber leider nicht die Möglichkeit, verschiedene User in unterschiedliche Level einloggen zu lassen. Der Wechsel in den Level15 klappt aber mit der direkten Konfiguration auf der vty-Line:

line vty 0 4
 privilege level 15

Cisco IOS 15.0: Die nächste Runde ist eröffnet

router
Bisher bin ich davon ausgeganggen, dass die nächste IOS-Version die 12.5 sein soll. Aber inzwischen ist die Version 15.0 verfügbar:

Cisco IOS Software, C180X Software (C180X-ADVIPSERVICESK9-M), Version 15.0(1)M, RELEASE SOFTWARE (fc2)
Technical Support: http://www.cisco.com/techsupport
Copyright (c) 1986-2009 by Cisco Systems, Inc.
Compiled Wed 30-Sep-09 03:28 by prod_rel_team

Aus den Release-Notes:

Cisco IOS Release 15.0(1)M integrates a portfolio of over 2,000 key capabilities spanning multiple technology areas, including Security, Voice, Multiprotocol Label Switching (MPLS), IP Services, and Embedded Management. Key highlights of Cisco IOS Release 15.0(1)M include the following:

• Feature inheritance from Cisco IOS Releases 12.4T and 12.4 Mainline.

• An extended maintenance release (44 months of support) that allows customers to qualify/deploy/remain on the release longer with active bug fix support.

• Rebuilds of Cisco IOS Release 15.0(1)M that contain bug fixes only.

• Cisco IOS Release 15.0M (extended maintenance) releases that delivers incremental new features and hardware support (in addition to supporting features and hardware previously delivered) every 20 months.

Beschreibung der neuen HW- und SW-Features:

http://www.cisco.com/en/US/docs/ios/15_0/release/notes/150MNEWF.html#wp1015067

Der IOS SCP-Server

routerDas Cisco IOS stellt schon seit geraumer Zeit einen SCP-Server zur Verfügung. Trotzdem beobachte ich immer wieder, daß IOS-Images standardmäßig per TFTP übertragen werden. Und das selbst dann, wenn die Client-Plattform “nativ” scp unterstützt.

Auch wenn die SCP-Server-Implementierung in meinen Augen suboptimal ist (was die Berechtigungen angeht), ist die Benutzung des Servers recht einfach:

  1. SSH konfigurieren
  2. SSH benötigt public/private keys. Für das Generieren der Keys muss man einen Host- und Domain-Namen konfigurieren. (Es gibt Tricks, ohne einen Domain-Namen auszukommen, aber der läuft nicht auf allen Plattformen). Die Key-Länge sollte mindestens 1024, besser 2048 Bit sein. Neuere IOS-Releases unterstützen sogar bis 4096 Bit. Weiterhin sollte man die Verwendung der älteren SSH-Version 1 verbieten:

    hostname MyDevice
    ip domain-name example.org
    crypto key generate rsa general-keys modulus 2048
    ip ssh version 2
    
  3. Den SCP-Server einschalten
  4. ip scp server enable
    
  5. Authentifizierung und Autorisierung konfigurieren
  6. Für SCP muss der Router so konfiguriert werden, dass der User direkt Lese- und Schreibrechte auf das Flash hat. Dies wird durch die Exec-Autorisierung gemacht:

    aaa new-model
    aaa authentication login default local
    aaa authorization exec default local
    
  7. Useraccounts anlegen
  8. Der Benutzer bekommt einen Privilege-Level von 15 per Exec-Autorisierung zugewiesen:

    username Admin privilege 15 secret 0 My0wnV3ryS3cur3Passw0rd
    
  9. Kopieren der Daten vom Client
  10. Hierbei muss die Syntax genau beachtet werden. Der Speicher- bzw. der Quellort im Router muss komplett angegeben werden (hier “flash:/):

    scp Quelldatei User@MyDevice.example.org:flash:/Zielname
    

Auch wenn ich in diesem Beitrag immer Router geschrieben habe, so gilt dasselbe auch für die Switche. Voraussetzung ist natürlich jeweils ein Crypto-fähiges Image.
Und natürlich gibt es auch bei Cisco eine SCP-Anleitung.

Entschlüsselung von Cisco Passwörtern

Vermutlich gibt es tausende von Programmen, um Cisco-Passwörter vom Typ “7″ in ihre Klartextform zurückzurechnen. Vor kurzem habe ich aber kein passendes für den MAC gefunden. Daher habe ich mich entschieden, kurzerhand selbst eines in Python zu schreiben. Die Funktion der Passwörter habe ich im Beitrag Der Schutz hinter “service password-encryption” im Cisco IOS schon beschrieben.

Das ist dabei herausgekommen:

Download des Scripts “cipade.py”


#! /usr/bin/python
##
##  Karsten Iwen
##  please send bug-reports, comments or improvements to:
##  ki@security-planet.de
##

import sys

ctable = (0x64, 0x73, 0x66, 0x64, 0x3b, 0x6b, 0x66, 0x6f, 0x41, 0x2c,
0x2e, 0x69, 0x79, 0x65, 0x77, 0x72, 0x6b, 0x6c, 0x64, 0x4a,
0x4b, 0x44, 0x48, 0x53, 0x55, 0x42, 0x73, 0x67, 0x76, 0x63,
0x61, 0x36, 0x39, 0x38, 0x33, 0x34, 0x6e, 0x63, 0x78, 0x76,
0x39, 0x38, 0x37, 0x33, 0x32, 0x35, 0x34, 0x6b, 0x3b, 0x66,
0x67, 0x38, 0x37)

if len(sys.argv) == 2:
	input = sys.argv[1]
	length = len(input)
	if length%2 != 0:
		print ("!!!")
		print ("!!! The encrypted password has an odd number of digits. It should be even!")
		print ("!!! So the decrypted password is not complete!")
		print ("!!!")
		length = length -1
	if length < 4:
		print ("!!!")
		print ("!!! The Input is too short")
		print ("!!!")
	else:
		pos = 2
		tpos = int(input[0:2])
		pw = ""
		while pos < length:
			pw = pw + chr( int("0x"+input[pos:pos+2],16) ^ int(hex(ctable[tpos]),16))
			pos = pos + 2
			tpos = tpos +1
			if tpos == 53: tpos = 0
		print (pw)
else:
	print ("")
	print ("cipade.py v1.0")
	print ("==============")
	print ("cipade (CIsco PAssword DEcoder) 'decrypts' type 7 passwords used in Cisco IOS-configurations")
	print ("")
	print ("Usage")
	print ("=====")
	print ("cipade [the type 7 encrypted password]")
	print ("")
	print ("Written by:")
	print ("===========")
	print ("Karsten Iwen")
	print ("ki@security-planet.de")
	print ("http://security-planet.de")
	print ("")

Ich vermute, daß man mindestens die XOR-Operation noch etwas eleganter programmieren könnte. Verbesserungsvorschläge werden gerne angenommen.
Das Script muss einfach als "cipade.py" im Suchpfad abgespeichert und als ausführbar markiert werden.

VPNs zwischen Standorten mit überlappenden Adressen

Gerade habe ich eine Anfrage bekommen, wie man denn Netze verbinden kann, wenn auf beiden Seiten der gleiche Adress-Bereich verwendet wird. Als Lösung gibt es verschiedene Ansätze:

  1. Readressierung
  2. Je nachdem wie gut das Netz gepflegt ist, muss das nicht ein zu großer Aufwand sein. Spätestens jetzt könnte das ein Grund sein, um DHCP und DNS konsequent umzusetzen. Wenn die überlappenden Adress-Bereiche durch einen Firmen-Zusammenschluss zustande gekommen sind, dann wird es wohl hierauf hinauslaufen.

  3. Erweiterung des Netzes um IPv6
  4. Wenn man sich noch nicht mit IPv6 beschäftigt hat, wird dies sicher am längsten dauern um implementiert zu werden. Aber dann sollte die Wahrscheinlichkeit für überlappende Netze relativ klein sein. ;-)

  5. Double-NAT zwischen den Netzen
  6. Hierbei werden die mehrfach verwendeten Netze per NAT verborgen. Je nachdem wie viele Standorte den gleichen Adress-Bereich verwenden, kann die Konfiguration und auch das Management dieser Lösung etwas “eklig” werden. Aber gerade wenn unterschiedliche Firmen verbunden werden sollen, ist dies oft die verwendete Lösung.

    Dieser Artikel beschreibt die Konfiguration dieses Ansatzes in Verbindung mit VPN-Tunneln.

Das Ausgangs-Szenario:
2router
An beiden Standorten wird das selbe IP-Netz verwendet. Die Lösung beinhaltet, dass beide Standorte ihre IP-Netze per NAT hinter einem anderen Netz “verbergen”. Dieses neue Netz wird dann verwendet, um auf die Geräte der anderen Seite zuzugreifen.
Um die Kombination von NAT und IPSec zu verstehen, muss man sich einfach bewusst sein, in welcher Reihenfolge im IOS die verschiedenen Funktionen abgearbeitet werden: NAT Order of Operation
nat-order-of-operation
Wie man sieht, werden die Daten genatted, bevor sie verschlüsselt werden und auf der anderen Seite entschlüsselt, bevor NAT angewendet wird.

Für jede Seite wird jetzt ein freies Netz gewählt (hier 10.111.111.0/24 und 10.222.222.0/24):
2routernat
Die Source-Adressen des linken Netzes werden in 10.111.111.x übersetzt, die Source-Adressen des rechten Netzes in 10.222.222.x.

Die (relevante) Konfiguration der zwei Router sieht folgendermaßen aus:


hostname R1
crypto isakmp policy 1
 encr aes 256
 authentication pre-share
 group 5
crypto isakmp key Yes,ThisKeyIsNotReallySecret,LongAndRandom address 192.168.2.2
!
crypto ipsec transform-set ESP-AES256-SHA esp-aes 256 esp-sha-hmac
!
crypto map VPN 1 ipsec-isakmp
 set peer 192.168.2.2
 set transform-set ESP-AES256-SHA
 match address CRYPTO-TO-SITE-2
!
interface FastEthernet0/0
 description LAN
 ip address 10.10.10.1 255.255.255.0
 ip nat inside
!
interface Serial1/0
 description Connection to Internet
 ip address 192.168.1.2 255.255.255.0
 ip nat outside
 crypto map VPN
!
ip route 0.0.0.0 0.0.0.0 192.168.1.1
!
ip nat inside source static network 10.10.10.0 10.111.111.0 /24
!
ip access-list extended CRYPTO-TO-SITE-2
 permit ip 10.111.111.0 0.0.0.255 10.222.222.0 0.0.0.255

hostname R2
!
crypto isakmp policy 1
 encr aes 256
 authentication pre-share
 group 5
crypto isakmp key Yes,ThisKeyIsNotReallySecret,LongAndRandom address 192.168.1.2
!
crypto ipsec transform-set ESP-AES256-SHA esp-aes 256 esp-sha-hmac
!
crypto map VPN 1 ipsec-isakmp
 set peer 192.168.1.2
 set transform-set ESP-AES256-SHA
 match address CRYPTO-TO-SITE-1
!
interface FastEthernet0/0
 description LAN
 ip address 10.10.10.1 255.255.255.0
 ip nat inside
!
interface Serial1/0
 description Connection to Internet
 ip address 192.168.2.2 255.255.255.0
 ip nat outside
 crypto map VPN
!
ip route 0.0.0.0 0.0.0.0 192.168.2.1
!
ip nat inside source static network 10.10.10.0 10.222.222.0 /24
!
ip access-list extended CRYPTO-TO-SITE-1
 permit ip 10.222.222.0 0.0.0.255 10.111.111.0 0.0.0.255

Wenn aus dem linken Netz das rechte erreicht werden soll, muss natürlich die NAT-Adresse genommen werden. Bei einem Ping vom linken LAN-Interface zum rechten LAN-Interface sieht das dann folgendermaßen aus:


R1#ping 10.222.222.1 source fastEthernet 0/0 rep 1 

Type escape sequence to abort.
Sending 1, 100-byte ICMP Echos to 10.222.222.1, timeout is 2 seconds:
Packet sent with a source address of 10.10.10.1
!
Success rate is 100 percent (1/1), round-trip min/avg/max = 32/32/32 ms
R1#
*Mar  1 00:49:23.527: ICMP: echo reply rcvd, src 10.222.222.1, dst 10.10.10.1

R2#
*Mar  1 00:49:23.319: ICMP: echo reply sent, src 10.10.10.1, dst 10.111.111.1

Ein entscheidender Nachteil dieser Methode ist, dass diese Adress-Übersetzung immer durchgeführt wird und ein Router mit dieser Konfiguration nicht mehr sinnvoll für andere Verbindungen verwendet werden kann. Diese Translation dürfte eigentlich nur verwendet werden, wenn das gegenüberliegende NAT-Netz angesprochen wird.
Diese Bedingung — die auf der PIX/ASA per Policy-NAT einfach umzusetzen ist — würde auf einem IOS-Router mit einer Route-Map beschrieben werden. Diese Route-Maps können aber leider in einer statischen Translation nicht verwendet werden, wenn ganze Netze übersetzt werden.

Router-Upgrade

Auf die Sekunde genau hätte ich die Angabe nicht einmal benötigt:

File reception completed.
Writing flash:/c870-advipservicesk9-mz.124-15.T9.bin
Write operation will take approximately 116 to 348 seconds

Cisco IOS: Embedded Packet Capture

routerViele Cisco-Geräte erlauben es, direkt auf der Netzwerk-Schnittstelle Pakete mitzuschneiden. Wie das mit der PIX/ASA geht habe ich schon vor längerer Zeit beschrieben.

Seit IOS 12.4(20)T geht das auch auf dem Router. Steffen Lehmann von Systema hat dazu eine kleine Einführung gerschrieben und sie mir zur Verfügung gestellt:


Ab 12.4(20)T kann ohne großen Aufwand ein Router Interface gespiegelt werden und per ftp/tftp der Output im Wireshark kompatiblen Format exportiert werden.

Dies funktioniert auch für SUB Interfaces auf einem 802.1q Trunk .

Die Konfguration

  1. Erstellen des Buffers
  2. Hier wird der das Puffer File definiert, welches für die „gedumpten“ Pakete verwendet wird.

    
    Router#monitor capture buffer >Buffer Filename<
    

    embedded-packet-capture_htm_4d612e2

  3. Erstellen des Capture Point
  4. Damit wird definiert, welche Source für eine bestimmte Session (Capture Point) genutzt wird.

    
    Router#monitor capture point ip cef >CapturePointName< >IF Name< >Richtung<
    

    embedded-packet-capture_htm_m43ffb00a

  5. Zuordnung Buffer – Capture Point
  6. 
    Router#monitor capture point associate >CapturePointName< >Buffer Filename<
    

    embedded-packet-capture_htm_efca750

  7. Start des Capture
  8. 
    Router#monitor capture point start >CapturePointName<
    

    embedded-packet-capture_htm_m69e287f3

  9. Monitoring
  10. Um festzustellen, wie viele Pakete schon gemonitort wurden, kann mit folgendem Kommando nachgesehen werden...

    
    Router#show monitor capture buffer > Buffer Filename<
    

    embedded-packet-capture_htm_m1a74612e

  11. Beenden des Capture
  12. 
    Router#monitor capture point stop >CapturePointName<
    
  13. Kopieren des Capture File auf externen Server
  14. 
    Router#monitor capture buffer >Buffer Filename< export tftp://>IPADRESSE>/>Dateiname<
    

    embedded-packet-capture_htm_43109f51

    Jetzt kann die Datei auf dem remote Rechner mit Wireshark geöffnet und analysiert werden.

IOS 12.4(15)T9

routerEndlich ist diese neue Version erschienen. Wie schon berichtet, ist die 12.4(15)T8 zum Maintenance Deployment Release “befördert” worden. In diesem neuen Release sind dann auch eine Reihe von Bugs beseitigt, die in den Security Advisories vom 25. März angesprochen wurden.

Nächste Seite »