Sind IPv6-Wildcard-Übereinstimmungen in Cisco IOS möglich?


9

Facebook ist mit seinem IPv6-Adressschema sehr clever, aber ich habe über ACLs nachgedacht. Ist es möglich, eine passende Cisco IOS IPv6-ACL zu schreiben? In IPv4 können Sie ein mittleres Oktett wie 10.xxx.10.xxx abgleichen, um ein 'x' mit 'egal' zu treffen. Ich denke nicht, dass dies in IPv6 möglich ist, zumindest nicht ab IOS 15.1.

In meinem Beispiel ist es, da Facebook clever war, einfach, auf FACE: B00C zu passen, wenn Sie könnten. In gewisser Weise vereinfacht sich dies, da ich, ohne nachzuschlagen, welcher Block zugewiesen wurde, nur in diesem Bereich übereinstimmen kann.

2A03: 2880: F000: [0000-FFFF]: GESICHT: B00C :: / 96

Der offensichtliche und normale Weg ist, auf 2A03: 2880: F000 :: / 48 zu passen, aber leider bin ich mir auf einen Blick nicht sicher, ob FB einen größeren Bereich hat (wahrscheinlich). Wenn ich in diesem speziellen Fall nur mit dem FACE: B00C-Teil übereinstimmen könnte, könnte ich alles abgleichen, was sie verwenden, vorausgesetzt, sie wechseln nicht zu FACE: B00D

Da ich in IOS für und IPv6-ACL keine Platzhaltermaske eingeben kann, glaube ich nicht, dass Sie dies tun können, aber ich bin gespannt, ob jemand eine interessante Problemumgehung hat. Ich denke, es wäre nützlich, dies zu wissen, da ich irgendwann möglicherweise einen Unterblock nur aufgrund von DDoS oder aggressivem Datenverkehr filtern muss, ohne ein ganzes / 32 für einen großen Anbieter blockieren zu wollen.

Darüber hinaus könnte dies eine richtlinienbasierte Umleitung oder Priorisierung des Datenverkehrs ermöglichen. Wenn ich feststelle, dass sich die Werbung in einem anderen Block befindet, könnte ich sie beispielsweise anders QoS-fähig machen, eine nette Funktion für überlastete Satellitenverbindungen mit geringer Bandbreite.

EDIT: Um ein bisschen zu klären. Es kann Fälle geben, in denen ich bestimmte Bereiche innerhalb eines großen Blocks wie a / 32 blockieren oder zulassen muss. Diese können leicht zusammenhängend sein und anstelle von Hunderten von Einträgen kann ein Platzhalter mit großen Teilen davon übereinstimmen. Dies könnte auch für die Verkehrstechnik verwendet werden, so wie ich alle 10.x.10.0-Blöcke routen könnte. Wenn x ungerade ist, geht es eine Route gegen gerade zu einer anderen Route.

Ein weiteres Beispiel ist ein DDoS, bei dem die IPv6-Quell-IP mit einem Muster gefälscht wird, das den Gruppennamen des Hackers buchstabiert. Dies wird mindestens einmal passieren, es wäre schön, darauf filtern zu können.

Eine kompakte ACL ist sauberer, aber nicht immer überschaubarer. Diese Dinge können gute oder schlechte Ideen / Praktiken sein, nicht um dies zu argumentieren, sondern nur um herauszufinden, welche Tools ich habe und welche Tools ich möglicherweise erstellen muss.


Bitte helfen Sie uns zu verstehen, wie Sie die ACLs verwenden würden, wenn Sie sie erhalten würden. Ist das für die Sicherheit? Wenn ja, gibt es Firewalls, auf die Sie diese auslagern können? Was für eine Firewall?
Mike Pennington

Mach dir keine Sorgen. Wenn Sie nach Facebook suchen, passen Sie einfach die Präfixe an und fertig. Ich habe kürzlich eine gesehen, ...:face:b00c:0:1die Ihr Ansatz nicht aufgreifen wird.
Michael Hampton

Wenn Sie Bereiche blockieren möchten, verwenden Sie Subnetze. Wenn es mehr als eine / 48 ist, verwenden Sie / 47, / 46 ... usw. Ich bin mir nicht sicher, was Sie mit "Wildcard" -Matching in diesem Szenario erreichen würden. Können Sie vielleicht etwas mehr klarstellen?
Sebastian Wiesinger

Hat dir eine Antwort geholfen? Wenn ja, sollten Sie die Antwort akzeptieren, damit die Frage nicht für immer auftaucht und nach einer Antwort sucht. Alternativ können Sie Ihre eigene Antwort bereitstellen und akzeptieren.
Ron Maupin

Antworten:


6

Leider hat Cisco in IPv6 Platzhaltermasken abgeschafft. Das ist meistens eine gute Sache, AUSSER in diesem speziellen Fall. Damit Ihre Idee funktioniert, müssen Sie sich jedoch darauf verlassen, dass Facebook sowohl "clever" als auch konsistent ist, was wahrscheinlich mehr ist, als man sich erhoffen kann.

Wenn Sie den Datenverkehr von Facebook jedoch anders als andere Daten verarbeiten möchten, können Sie einfach nach dem zugewiesenen Adressblock filtern. Diejenige, die Sie in Ihrer Frage erwähnen, ist tatsächlich Facebook Irland zugewiesen: 2a03: 2880 :: / 32.

Es ist aber genauso einfach, andere in den Registern nachzuschlagen.


Amüsant, denn das ist der Block bei Facebook, mit dem ich mich von meinem Labor in Florida aus verbinde. GeoIP ist ein weiterer Scherz. Ja, gut, akzeptiere / filtere / blockiere das Ganze / 32. Der konzeptionelle Grund, den ich frage, ist praktischer, wenn ein ISP eine Reihe von Blöcken zuweist, die missbräuchlich sind. Ich möchte blockieren, aber ich kann nicht die gesamten / 32 nur spezifischen / 48s oder / 64s blockieren. Die Verwendung von FACE: B00C ist ein einfaches anschauliches Beispiel, könnte aber auch 2001: 2880: 0100-0FF0: FACE: B00C sein, das ich blockieren möchte. Es wird kein gewöhnlicher Filter sein, aber ich würde immer gerne akzeptieren : C0FF: EE:
John Spade - 'DaSpadeR'

1
@ JohnSpade-'DaSpadeR 'A /32ist groß genug, dass Sie es in sehr viele Subnetze aufteilen und weltweit weiterleiten können. Das sind so viele Subnetze wie IPv4-IP-Adressen! Die whois-Aufzeichnung ist zu diesem Zeitpunkt fast irrelevant. Und die Geolokalisierung ist für IPv6-Adressen noch nicht sehr gut.
Michael Hampton

5

Ich mache ein paar Spiele mit FPM und ich denke , es kann das tun , was Sie suchen:

load protocol system:fpm/phdf/ether.phdf
load protocol flash:/fpm/phdf/ipv6.phdf
!
class-map type stack match-all cm-ipv6
 match field ETHER type eq 0x86DD next IPV6
class-map type access-control match-all cm-ipv6-facebook
 match start IPV6 dest-addr offset 9 size 4 eq 0xFACEB00C
!
policy-map type access-control pm-ipv6-facebook
 class cm-ipv6-facebook
   drop
policy-map type access-control pm-filter
 class cm-ipv6
   log
  service-policy pm-ipv6-facebook
!
interface FastEthernet0/1
 service-policy type access-control input pm-filter

Ich musste meine eigene ipv6.phdf-Datei für diese rollen:

<?xml version="1.0" encoding="UTF-8"?>
<phdf>
 <version>1</version>
 <protocol name="ipv6" description="Definition-for-the-IPv6-protocol">
 <field name="version" description="IP version">
  <offset type="fixed-offset" units="bits">0</offset>
  <length type="fixed" units="bits">4</length>
 </field>
 <field name="tc" description="IPv6-Traffic-Class">
  <offset type="fixed-offset" units="bits">4</offset>
  <length type="fixed" units="bits">8</length>
 </field>
  <field name="fl" description="IPv6-Flow-Label">
  <offset type="fixed-offset" units="bits">12</offset>
  <length type="fixed" units="bits">20</length>
 </field>
 <field name="length" description="IPv6-Payload-Length">
  <offset type="fixed-offset" units="bits">32</offset>
  <length type="fixed" units="bits">16</length>
 </field>
 <field name="nh" description="IPv6-Next-Header">
  <offset type="fixed-offset" units="bits">48</offset>
  <length type="fixed" units="bits">8</length>
 </field>
 <field name="hl" description="IPv6-Hop-Limit">
  <offset type="fixed-offset" units="bits">56</offset>
  <length type="fixed" units="bits">8</length>
 </field>
 <field name="source-addr" description="IPv6-Source-Address">
  <offset type="fixed-offset" units="bits">64</offset>
  <length type="fixed" units="bits">128</length>
 </field>
 <field name="dest-addr" description="IPv6-Destination-Address">
  <offset type="fixed-offset" units="bits">192</offset>
  <length type="fixed" units="bits">128</length>
 </field>
 <field name="payload-start" description="IPv6-Payload-Start">
  <offset type="fixed-offset" units="bits">320</offset>
  <length type="fixed" units="bits">0</length>
 </field>
 <headerlength type="fixed" value="320"></headerlength>
 <constraint field="version" value="6" operator="eq"></constraint>
</protocol>
</phdf>

Wenn ich eine "show policy-map type access-control interface fa0 / 1" mache, erhalte ich leider keine Übereinstimmungen mit dem Ethertyp:

FastEthernet0/1 

  Service-policy access-control input: pm-filter

    Class-map: cm-ipv6 (match-all)
      0 packets, 0 bytes
      5 minute offered rate 0 bps, drop rate 0 bps
      Match: field ETHER type eq 0x86DD next IPV6
      log

      Service-policy access-control : pm-ipv6-facebook

        Class-map: cm-ipv6-facebook (match-all)
          0 packets, 0 bytes
          5 minute offered rate 0 bps
          Match: start IPV6 dest-addr offset 9 size 4 eq 0xFACEB00C
      drop

        Class-map: class-default (match-any)
          0 packets, 0 bytes
          5 minute offered rate 0 bps, drop rate 0 bps
          Match: any 

    Class-map: class-default (match-any)
      10000 packets, 1863618 bytes
      5 minute offered rate 14000 bps, drop rate 0 bps
      Match: any 

Ich vermute, dass meine Pings an die IPv6-Adresse von Facebook nicht ordnungsgemäß über CEF ausgeführt werden ( laut FPM-FAQ ist dies erforderlich), oder ich vermisse etwas. Trotzdem mache ich das für jeden, der daran kauen will.


Hallo Jody, +1 für eine kreative Antwort. Cisco IOS verarbeitet Pings zum und vom Router auf Prozessebene (dh nicht CEF-geschaltet). Vielleicht lohnt es sich, einen weiteren Host hinter dem Router hinzuzufügen, um die Lösung zu beweisen.
Mike Pennington

Hey Mike. Guter Punkt. Ich habe alle meine Ping-Tests von meinem Mac auf Facebook durchgeführt. Es handelt sich also zwar immer noch um ein Problem bei der Prozessumschaltung, aber nicht darum, dass es vom Router stammt oder beendet wurde. Ich versuche immer noch, das herauszufinden. Interessant ist, dass ich nicht einmal eine Übereinstimmung mit dem 0x86dd-Ethertyp der übergeordneten Richtlinie erhalte.
Jody Lemoine

Wenn sie nicht vom Router stammen / enden, sollten sie cef-umgeschaltet werden, solange ipv6 cef aktiviert ist.
Mike Pennington

IPv6 CEF ist definitiv eingeschaltet, also denke ich, dass wir dort gut sind. Ich frage mich wirklich, warum es keine Übereinstimmung mit dem Äthertyp gibt.
Jody Lemoine
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.