edi.pfisterer
Goto Top

3 Skripts zur Erstellung von ACL für einen 3COM 4500G

Weil ich gerade mit einem 3COM 4500G und seinen Eigenheiten herumkämpfe und meine Lösung vielleicht mal jemand anders auch brauchen kann....

Allgemeines zu ACLs auf einem 3COM 4500G gibts hier nachzulesen...

Hier nun 3 selbstgebastelte Tipps, die bei der Erstellung von ACLs hilfreich sein können (speziell, wenn man eine große Menge von VLANs hat...)

Script 1:
3COM_ACL_fuer_1_VLAN_anlegen.vbs
Anmerkung: es wird eine txt-Datei mit den jeweiligen Rules erstellt...
in die CLI kopieren muss man sie noch selber ;-(
VLAN=InputBox ("ACL für welche VLAN?","Input","VLAN")*1  
datei= "H:\ADMINISTRATOR\3com\ACLs\3com_VLAN_" & VLAN & ".txt"  

'Annahme: Die Server haben 172.16.0.0/24 er Adressen  

Anzahl_der_VLANs = 25
'Annahme: ich möchte 25 VLANs  

AdminNetz = 19
'Annahme: Die Admins sitzen in 172.16.19.0/24 er Netz  

    n=0
    for i = 1 to Anzahl_der_VLANs
    if i = VLAN then i=i+1
    if i = AdminNetz then i=i+1
       Zeile = zeile & "rule " & n & " deny ip source any destination 172.16." & i & ".0   

0.0.0.255"  & vbcrlf  
    n=n+1
    Next

'bei Bedarf in folgender Zeile das Hochkomma entfernen:  
'Zeile = zeile & "rule permit ip source any destination any" & vbcrlf& vbcrlf  

Set fs = CreateObject("Scripting.FileSystemObject")  
set dateineu = fs.createtextfile(datei, true)
dateineu.write Zeile
dateineu.close

wscript.echo "Datei erstellt für das VLAN " & VLAN  

Script 2:
Alle_ACLs_als_txt_generieren.vbs
Anmerkung: es werden n- txt-Dateien mit den jeweiligen Rules erstellt...
in die CLI kopieren muss man sie noch selber ;-(
Anzahl_der_VLANs=InputBox ("ACL für wie viele VLANs?","Input","VLAN")*1  
'Annahme: Die Server haben 172.16.0.0/24 er Adressen  

AdminNetz = 19
'Annahme: Die Admins sitzen in 172.16.19.0/24 er Netz  

Set fs = CreateObject("Scripting.FileSystemObject")  

for k = 1 to Anzahl_der_VLANs
datei= "H:\ADMINISTRATOR\3com\ACLs\3com_VLAN_" & k & "_ACL.txt"  



    n=0
        for i = 1 to Anzahl_der_VLANs

               if i = k then i=i+1
               if i = AdminNetz then i=i+1

            if i <= Anzahl_der_VLANs Then
            Zeile = zeile & "rule " & n & " deny ip source any destination 172.16." & i &   

".0 0.0.0.255"  & vbcrlf  
            end if
            'bei Bedarf in folgender Zeile das Hochkomma entfernen:  
            'Zeile = zeile & "rule permit ip source any destination any" & vbcrlf& vbcrlf  
            n=n+1
        next

            set dateineu = fs.createtextfile(datei, true)
            dateineu.write Zeile
            dateineu.close
            Zeile = ""  

Next

wscript.echo "Dateien erstellt für " & Anzahl_der_VLANs & " VLANs erstellt"  

Script 3:
Die Königsklasse - wenn man sich dem Real Men dont click-Karma verschrieben hat face-wink

ACLs_per_telnet_auf_3COM_4500G_erstellen.vbs
Anmerkungen:

Dieses Tool
- verbindet Euch mit dem Switch per Telnet auf die CLI
- zeigt Euch die bestehenden ACLs an
- fragt nach einer kurzen Pause, für wieviel VLANs eine ACL erstellt werden soll
- legt anschließend mit ACL Number 300n beginnend die jeweiligen ACLs an (es bleibt die
deny-Regel für das jeweilige Netz ausgespart)
- zeigt Euch abschließend alle vorhandenen ACLs an

Achtung: bestehende ACLs mit der selben Nummer werden überschrieben - daher die Anzeige aller bestehenden ACLs zu Beginn
daher: genau prüfen, bevor ihr die Anzahl der anzulegenden ACLs angebt
Die Auswahl der Schaltfläche "abbruch" legt KEINE ACLs an, dh, der Switch bleibt unverändert...

set oShell = CreateObject("WScript.Shell")  
oShell.run "cmd.exe"  
WScript.Sleep 1000
'  
'  
'  
oShell.SendKeys"telnet 172.16.19.254"  
oShell.SendKeys("{Enter}")  
WScript.Sleep 1000
oShell.SendKeys"admin"  
oShell.SendKeys("{Enter}")  
WScript.Sleep 1000
'  
'  
'  
oShell.SendKeys"password"             'HIER MUESST IHR EUER ADMIN-PASSWORT EINTRAGEN  
oShell.SendKeys("{Enter}")  
WScript.Sleep 500
oShell.SendKeys"system-view"  
oShell.SendKeys("{Enter}")  
WScript.Sleep 500
'  
'  
'  
oShell.SendKeys"display acl all"  
oShell.SendKeys("{Enter}")  
WScript.Sleep 5000


Anzahl_der_VLANs=InputBox ("ACL für wie viele VLANs?","Input","VLAN")*1  
'Annahme: Die Server haben 172.16.0.0/24 er Adressen  

AdminNetz = 19
'Annahme: Die Admins sitzen in 172.16.19.0/24 er Netz  

Set fs = CreateObject("Scripting.FileSystemObject")  

for k = 1 to Anzahl_der_VLANs

oShell.SendKeys"acl number " & 3000+k  
oShell.SendKeys("{Enter}")  
WScript.Sleep 500


    n=0
        for i = 1 to Anzahl_der_VLANs

               if i = k then i=i+1
               if i = AdminNetz then i=i+1

            if i <= Anzahl_der_VLANs Then
                 oShell.SendKeys"rule " & n & " deny ip source any destination 172.16." & i   

& ".0 0.0.0.255"  
                 oShell.SendKeys("{Enter}")  
                 WScript.Sleep 500
            end if

            n=n+1
        next

oShell.SendKeys"quit"  
oShell.SendKeys("{Enter}")  
WScript.Sleep 5000

Next

oShell.SendKeys"display acl all"  
oShell.SendKeys("{Enter}")  
WScript.Sleep 500

Falls etwas nicht so ist, wie ihr es wollt, könnt ihr in der CLI mit
undo acl number [nummer der ACL]
die entsprechende wieder löschen


have fun
lg
Edi Pfisterer

Content-Key: 152520

Url: https://administrator.de/contentid/152520

Printed on: April 19, 2024 at 10:04 o'clock

Member: Edi.Pfisterer
Edi.Pfisterer Oct 07, 2010 at 07:40:32 (UTC)
Goto Top
So, hier nun der Abschluss...

folgendes Script wendet die oben erstellten ACL auf das jeweilige VLAN an
Prämissen:
VLAN-ID und IP hängen wie folgt zusammen:

VLAN ID 10 --> 172.16.0.0/24
VLAN ID 11 --> 172.16.1.0/24
VLAN ID 12 --> 172.16.2.0/24
...
VLAN ID 19 --> 172.16.9.0/24
VLAN ID 110 --> 172.16.10.0/24
VLAN ID 111 --> 172.16.11.0/24

sprich: die erste Ziffer der VLAN ID ist Schall und Rauch, die restlichen Ziffern geben Aufschluss über das IP-Subnetz

Anmerkung: es wird KEINE ACL für VLAN ID 119 angewendet, weil dieses ja das Admin-Netz ist bzw. KEINE ACL für VLAN ID 10, da dort die Server stehen...

set oShell = CreateObject("WScript.Shell")  
oShell.run "cmd.exe"  
WScript.Sleep 1000
'  
'  
'  
oShell.SendKeys"telnet 172.16.19.254"  
oShell.SendKeys("{Enter}")  
WScript.Sleep 1000
oShell.SendKeys"admin"  
oShell.SendKeys("{Enter}")  
WScript.Sleep 1000
'  
'  
'  
oShell.SendKeys"Urobe"  
oShell.SendKeys("{Enter}")  
WScript.Sleep 500
oShell.SendKeys"system-view"  
oShell.SendKeys("{Enter}")  
WScript.Sleep 500
'  
'  
'  


Anzahl_der_VLANs=InputBox ("ACL für wie viele VLANs?","Input","VLAN")*1  
'Annahme: Die Server haben 172.16.0.0/24 er Adressen  
AdminNetz = 19


Set fs = CreateObject("Scripting.FileSystemObject")  

for k = 1 to Anzahl_der_VLANs
if k <> AdminNetz then

        oShell.SendKeys"traffic classifier CL" & k  
        oShell.SendKeys("{Enter}")  
        WScript.Sleep 1000

        oShell.SendKeys"if-match acl " & 3000+k  
        oShell.SendKeys("{Enter}")  
        WScript.Sleep 1000

        oShell.SendKeys"quit"  
        oShell.SendKeys("{Enter}")  
        WScript.Sleep 1000

        oShell.SendKeys"qos policy p" & k  
        oShell.SendKeys("{Enter}")  
        WScript.Sleep 1000

        oShell.SendKeys"classifier CL" & k & " behavior deny"  
        oShell.SendKeys("{Enter}")  
        WScript.Sleep 1000

        oShell.SendKeys"quit"  
        oShell.SendKeys("{Enter}")  
        WScript.Sleep 1000

        oShell.SendKeys"qos vlan-policy p" & k & " VLAN 1" & k & " inbound"  
        oShell.SendKeys("{Enter}")  
        oShell.SendKeys("{Enter}")  
        oShell.SendKeys("{Enter}")  
        oShell.SendKeys("{Enter}")  
        WScript.Sleep 5000



end if
Next

Mensch, bin ich froh, dass ich mich jetzt wieder mit Betriebssystemen abgeben darf, die a) gut dokumentiert sind (von wegen, Redmond verschweigt da was face-wink...) und b) zumindest großteils logisch aufgebaut sind...

lg