Grundkonfiguration per CLI

Allgemeine Fragen zu Problemen. Keine Fehlerberichte oder Feature-Anfragen

Moderator: Securepoint

Antworten
abmurXerli
Beiträge: 7
Registriert: Mo 27.05.2019, 15:31

Grundkonfiguration per CLI

Beitrag von abmurXerli »

Liebes Forum

Ich möchte ein Script schreiben, mit dem ich eine Grundkonfiguration per CLI auf eine Firewall packen kann. In diesem soll man Variablen wie DHCP-Pool, die IP etc. eintragen können (wie mit dem Installationsmanager, nur eben mit CLI). Das habe ich so auch mehr oder weniger geschafft. Aber wenn ich die FW neu starte ist die ganze Konfiguration wider futsch und der Installationsmanager kommt. System config save etc. schon versucht.

Das Endziel währe, dass ich schneller eine Grundkonfiguration auf Firewalls packen kann, da ich dass in naher Zukunft oft machen muss. Kennt sich jemand mit dem Thema aus? 

Jetzt schon vielen Dank und liebe Grüsse, Paul

Svenja
Beiträge: 85
Registriert: Mo 16.04.2018, 12:00

Beitrag von Svenja »

Moin!

Das klingt nach einem Thema für kennethj.
Schreib ihm am Besten einfach eine PN ;-)

Grüße
Svenja

kennethj
Beiträge: 408
Registriert: Di 25.04.2017, 10:17
Wohnort: Lüneburg
Kontaktdaten:

Beitrag von kennethj »

Hallo,

hast du am Anfang des Scriptes eine Config erstellt? Ansonsten kann keine Abgespeichert werden:

Code: Alles auswählen

# Create Config for Script Deployment
spcli system config new name "$deploy_config_name"
spcli system config load name "$deploy_config_name"
Am Ende setzt die Config als Startkonfiguration und speicherst:

Code: Alles auswählen

# Set Deploy Configuration as startup and save
spcli system config set name "$deploy_config_name" flags [ BOOT }
spcli system config save name "$deploy_config_name"

Gruß

Kenneth

abmurXerli
Beiträge: 7
Registriert: Mo 27.05.2019, 15:31

Beitrag von abmurXerli »

Hallo Kenneth

Vielen Dank für deine Antwort!

Ja, das habe ich gemacht. Jedoch: Nach dem ich die erstellte Konfiguration geladen habe, habe ich keine Rechte mehr, den nächsten Befehl auszuführen... Auch wenn ich mich auslogge, komme ich nicht mehr ins CLI mit admin und insecure...

Liebe Grüsse, Paul

kennethj
Beiträge: 408
Registriert: Di 25.04.2017, 10:17
Wohnort: Lüneburg
Kontaktdaten:

Beitrag von kennethj »

Hallo Paul,

führst du die Befehle Lokal auf der UTM aus oder Remote von einem anderen System via SSH?

Gruß

abmurXerli
Beiträge: 7
Registriert: Mo 27.05.2019, 15:31

Beitrag von abmurXerli »

beides... bin gerade am testen, als ich den Befehl "system config new name configuration-test" und "system config load name configuration-test" direkt mit Monitor und Tastatur auf der UTM konnte ich keine weiteren Befehle eingeben (bsp. "syslog get type audit" --> no permissions). 
Aber als ich ein Script habe laufen lassen, per Putty, hat es funktioniert mit den Befehlen... Kannst du mir sagen, an was das liegt?!

Grüsse

kennethj
Beiträge: 408
Registriert: Di 25.04.2017, 10:17
Wohnort: Lüneburg
Kontaktdaten:

Beitrag von kennethj »

Öhm - hab das eben bei mir gegen getestet (in der 11.8.3): Funktioniert bei mir....

Mit Welcher Firmware testet du?

abmurXerli
Beiträge: 7
Registriert: Mo 27.05.2019, 15:31

Beitrag von abmurXerli »

Auf meinem Stick befindet sich 11.7.15

kennethj
Beiträge: 408
Registriert: Di 25.04.2017, 10:17
Wohnort: Lüneburg
Kontaktdaten:

Beitrag von kennethj »

Hab mir eben noch mal eine 11.7.15 installiert - klappt bei mir:

Code: Alles auswählen

New-SSHSession -ComputerName 192.168.175.1 -Credential $LoginCreds
SessionId  Host                                                                                           Connected
---------  ----                                                                                           ---------
    0      192.168.175.1                                                                                    True

 Invoke-SSHCommand -SessionId 0 -Command 'system info'
Host       : 192.168.175.1
Output     : {attribute        |value, -----------------+-----, version          |11.7.15 (Final), flavor           |release...}
ExitStatus : 0

Invoke-SSHCommand -SessionId 0 -Command 'system config new name "Test"'
Host       : 192.168.175.1[/size]
Output     : {}
ExitStatus : 0

 Invoke-SSHCommand -SessionId 0 -Command 'system config load name "Test"'
Host       : 192.168.175.1
Output     : {}
ExitStatus : 0

 Invoke-SSHCommand -SessionId 0 -Command 'user new name root password insecure groups administrator'
Host       : 192.168.175.1
Output     : {}
ExitStatus : 0

Invoke-SSHCommand -SessionId 0 -Command 'user get'
Host       : 192.168.175.1
Output     : {id |name |groups       |permission, ---+-----+-------------+----------, 147|admin|administrator|ADMIN     , 151|root |administrator|ADMIN     }
ExitStatus : 0

 Invoke-SSHCommand -SessionId 0 -Command 'system config set name Test flags [ BOOT ]'
Host       : 192.168.175.1
Output     : {}
ExitStatus : 0

Invoke-SSHCommand -SessionId 0 -Command 'system config save name Test'
Host       : 192.168.175.1
Output     : {}
ExitStatus : 0

abmurXerli
Beiträge: 7
Registriert: Mo 27.05.2019, 15:31

Beitrag von abmurXerli »

Also ich muss zugeben, dass ich gerade etwas überfordert bin :D. Ich habe mein Script, dass ich als Admin ausführe, wenn die Firewall mit dem Stick neu aufgesetzt habe. Jetzt hat es etwa drei mal funktioniert und drei mal nicht... Ich sehe das Problem nicht...

Code: Alles auswählen

::::::::::::::::::::::::::::::::::::::::Vorbereitungen::::::::::::::::::::::::::::::::::::::::
@echo off
set plink_dir="C:\Programme\Putty"
::setzt den Pfad zum Putty Programm in eine Variable

for /f "tokens=2 delims==" %%a in ('wmic OS Get localdatetime /value') do set "dt=%%a"
set "YY=%dt:~2,2%" & set "YYYY=%dt:~0,4%" & set "MM=%dt:~4,2%" & set "DD=%dt:~6,2%"
set "HH=%dt:~8,2%" & set "Min=%dt:~10,2%" & set "Sec=%dt:~12,2%"
set "fullstamp=%YYYY%-%MM%-%DD%_%HH%-%Min%-%Sec%"
::Timestamp erstellen --> der Timestamp bleibt im ganzen Script GLEICH. Die Zeit passt sicht NICHT an.

::::::::::::::::::::::::::::::::::::::::Richtiger Netzwerkadapter auswählen für die Verbindung mit der FW::::::::::::::::::::::::::::::::::::::::
:Ask1
echo welchen Netzwerkadapter soll geändert werden?
netsh interface show interface
set INPUTnetworkadapter=
set /P INPUTnetworkadapter=Schnittstellenname: %=%

:Ask2
echo Ist das Korrekt?(Y/N)
set INPUT=
set /P INPUT=: %=%
If /I "%INPUT%"=="y" goto correct
If /I "%INPUT%"=="Y" goto correct
If /I "%INPUT%"=="n" goto Ask1
If /I "%INPUT%"=="N" goto Ask1

:correct
netsh interface ipv4 set address name="%INPUTnetworkadapter%" source=static addr=192.168.175.2 mask=255.255.255.0 gateway=192.168.175.1
::ändert den gewünschten Internetadapter zur standart-Einstellung der Firewall

timeout 4
::Das Timeout bewirkt, dass die anderen commants ausgeführt werden können. Macht man dies nicht, ist das Gerät noch nicht mit der Firewall verbunden und man kriegt ein Fatal-Error. Host nich erreichbar.

::::::::::::::::::::::::::::::::::::::::Daten vom CSV in Variablen abfüllen::::::::::::::::::::::::::::::::::::::::
for /f "usebackq tokens=1,2,3 DELIMS=;" %%a in ("C:\Users\CFU\Desktop\Firewall Batch\angaben\fwinfos.csv") do (
	set "name=%%a"
	set "iprangevon=%%b"
	set "iprangebis=%%c"
)
::Für jede Eingabe im CSV wird eine Variable erstellt.

echo DHCP Name: %name%
echo DHCP start-IP: %iprangevon%
echo DHCP end-IP: %iprangebis%
::Die Varriablen werden zur Überprüfung ausgegeben

::::::::::::::::::::::::::::::::::::::::Ausführung von Befehlen für Konfiguration::::::::::::::::::::::::::::::::::::::::

%plink_dir%\plink.exe -ssh -P 22 -pw insecure admin@192.168.175.1 system config new name configuration-wizard-"%fullstamp%"
%plink_dir%\plink.exe -ssh -P 22 -pw insecure admin@192.168.175.1 system config load name configuration-wizard-"%fullstamp%"
::Konfiguration erstellen und laden

%plink_dir%\plink.exe -ssh -P 22 -pw insecure admin@192.168.175.1 dhcp pool new name "%name%" start "%iprangevon%" end "%iprangebis%"
echo DHCP-Pool erstellt!
::DCHP Pool wird erstellt

%plink_dir%\plink.exe -ssh -P 22 -pw insecure admin@192.168.175.1 system update interface
echo update interface
::Das Interface von der Firewall wird upgedatet, damit wir sicher gehen können, dass die Firewall auf dem neusten Stand ist.


%plink_dir%\plink.exe -ssh -P 22 -pw insecure admin@192.168.175.1 system config save name configuration-wizard-[size=85][font=monospace]"%fullstamp%"[/font][/size]
%plink_dir%\plink.exe -ssh -P 22 -pw insecure admin@192.168.175.1 system config set name configuration-wizard-[size=85][font=monospace]"%fullstamp%"[/font][/size] flags [ Boot ]


::Konfiguration speichern und als Boot-Konfiguration deklarieren

pause
::Damit man alles nachlesen kann, auch alfällige Fehler und sich das Fenster nicht einfach so schliesst.
 
Und bitte sei nett zu mir, das ist mein ganzer Stolz und mein erstes Batch Projekt^^. Wahrscheinlich fern von best practice und allem gutem...
Wenn es nicht funktioniert, seht es folgendermassen aus (pw natürlich "insecure"):

Code: Alles auswählen

welchen Netzwerkadapter soll geõndert werden?

Verw.-status   Status         Typ              Schnittstellenname
-------------------------------------------------------------------------
Aktiviert      Verbunden      Dediziert        Ethernet
Aktiviert      Getrennt       Dediziert        Ethernet 3
Aktiviert      Getrennt       Dediziert        Ethernet 4
Aktiviert      Getrennt       Dediziert        WLAN

Schnittstellenname: Ethernet
Ist das Korrekt?(Y/N)
: y


Gewartet wird 0 Sekunden. Weiter mit beliebiger Taste...
DHCP Name: test
DHCP start-IP: 192.168.175.5
DHCP end-IP: 192.168.175.10
WARNING - POTENTIAL SECURITY BREACH!
The server's host key does not match the one PuTTY has
cached in the registry. This means that either the
server administrator has changed the host key, or you
have actually connected to another computer pretending
to be the server.
The new ecdsa-sha2-nistp256 key fingerprint is:
ecdsa-sha2-nistp256 256 df:45:5d:1f:7b:a3:77:5e:bc:15:ee:cb:3e:3a:05:0b
If you were expecting this change and trust the new key,
enter "y" to update PuTTY's cache and continue connecting.
If you want to carry on connecting but without updating
the cache, enter "n".
If you want to abandon the connection completely, press
Return to cancel. Pressing Return is the ONLY guaranteed
safe choice.
Update cached key? (y/n, Return cancels connection) y
Access denied
Using keyboard-interactive authentication.
Password:
Access denied
Using keyboard-interactive authentication.
Password:
Liegt es eventuell daran, dass ich keinen root Benutzer anlege? Aber wieso funktioniert es dann ab und an?

kennethj
Beiträge: 408
Registriert: Di 25.04.2017, 10:17
Wohnort: Lüneburg
Kontaktdaten:

Beitrag von kennethj »

Das geht auch ohne root (mache ich auch ja auch ohne)

Woran das Problem genau liegt kann ich dir leider nichts sagen aber:
1. plink / putty sind manchmal komisch und machen murks (gerade plink ist meiner Meinung nach sehr unzuverlässig)
2. Batch.....

Verwende am besten die PowerShell (es gibt eh keinen Grund mehr die normale cmd zu verwenden bzw. Batch Scripte zu schreiben)
Die PowerShell ist in allen Punkten besser und eigentlich auch einfacher.

Mit PowerShell hast du zwei Möglichkeiten dich per SSH auf die UTM zu verbinden:
Entweder du verwendest die native SSH Implementierung (setzt einen root + SSH Schlüssel voraus) oder aber du verwendest das verwendest das Modul "Posh-SSH" (welches ich Verwende und auch persönlich Bevorzuge)

Anbei einmal ein kleines Beispiel mit Posh-SSH:

Code: Alles auswählen

$Loginuser = 'admin'
$LoginUserPasswordSec =  convertto-securestring -asplaintext -force 'insecure'
$LoginCreds = New-Object System.Management.Automation.PSCredential($Loginuser,$LoginUserPasswordSec)

New-SSHSession -ComputerName 192.168.175.1 -Credential $LoginCreds -AcceptKey
invoke-sshcommand -sessionID 0 -command 'CLI Befehl'
...
...
...
...
Wenn du magst, kann ich dir auch einmal einer meiner Deployment Scripte bereitstellen. (Die werden allerdings mit Werten aus .XML gefüttert)

Gruß

abmurXerli
Beiträge: 7
Registriert: Mo 27.05.2019, 15:31

Beitrag von abmurXerli »

Vielen Dank für deine wertvollen Informationen! Dann werde ich mein Script mal in PowerShell umschreiben^^.

Ja das währe super, wenn ich eine Reverenz hätte...

Liebe Grüsse

kennethj
Beiträge: 408
Registriert: Di 25.04.2017, 10:17
Wohnort: Lüneburg
Kontaktdaten:

Beitrag von kennethj »

Ich lasse dir die Tage das einmal per PN zukommen.
Ich muss die nur noch einmal korrektur lesen und evtl. einige Kommentare zur Verständlichkeit reinschreiben :D

abmurXerli
Beiträge: 7
Registriert: Mo 27.05.2019, 15:31

Beitrag von abmurXerli »

Super. Vielen Dank für deine Hilfe!

PeterG
Beiträge: 2
Registriert: Mo 29.03.2021, 09:39

Beitrag von PeterG »

kennethj hat geschrieben: Ich lasse dir die Tage das einmal per PN zukommen.
Ich muss die nur noch einmal korrektur lesen und evtl. einige Kommentare zur Verständlichkeit reinschreiben :D
Auch wenn das Thema schon älter ist: an einem Powershell-Muster wäre ich ebenfalls interessiert.

LG Peter

MB1982
Beiträge: 20
Registriert: Fr 05.07.2019, 17:04

Beitrag von MB1982 »

Da wir demnächst 77 Firewalls ausrollen, die zwar als Firewall as a Service zum Teil vorkonfiguriert sind, wäre ich auch an der Referenz interessiert.
Wobei ich da auch aktuell teste und mir hilft ungemein die Audit Funktion. So kann man auch direkt seine gängigen Filterregeln und Co setzen. Einfach einmal auf einer Test UTM machen, Befehl aus dem Audit Log kopieren.

Grüße,

Marc

kennethj
Beiträge: 408
Registriert: Di 25.04.2017, 10:17
Wohnort: Lüneburg
Kontaktdaten:

Beitrag von kennethj »

Hallo,

Marc ich habe dir mal eine PN zukommen lassen
@Peter: Dir kann ich leider keine PN zukommen lassen

Gruß

Kenneth

karl-heinz.fiedler
Beiträge: 1
Registriert: So 07.02.2016, 13:27

Beitrag von karl-heinz.fiedler »

Hallo,

zur Zeit arbeiten wir mit putty, sind auch auf der Suche , mit Hilfe Script eine Konfiguration auszurollen.
An einem Powershell-Muster wäre ich ebenfalls interessiert ?
Wenn ich das richtig verfolgt habe, wäre ein Umstieg auf Powershell zuverlässiger ?

PeterG
Beiträge: 2
Registriert: Mo 29.03.2021, 09:39

Beitrag von PeterG »

Moin moin!

@kenneth: Das Board sagt mir auch, daß ich keine PMs lesen darf. Gibt's eine Hürde, ab wann PM freigeschaltet wird, oder wen muß ich womit bestechen?

Edit: Hab mal ein Ticket eingestellt.
 
MfG

Peter

Marc17
Beiträge: 1
Registriert: Mo 13.12.2021, 14:29

Beitrag von Marc17 »

Hallo Kenneth,
ich bin neu hier im Forum und auf der Suche nach einem Reverenz CLI Skript auf diesen Beitrag gestoßen. Der ist zwar schon etwas älter, ich würde mich aber auch sehr freuen, wenn du mir netter Weise Dein Skript zur Verfügung stellen könntest, dann bräuchte ich nicht bei null anzufangen. Ein Powershell Script mit Daten aus einer XML Datei wäre echt perfekt.

Grüße
Marc

kennethj
Beiträge: 408
Registriert: Di 25.04.2017, 10:17
Wohnort: Lüneburg
Kontaktdaten:

Beitrag von kennethj »

Moin Marc,

ich kann einmal schauen ob ich das PowerShell Script noch irgendwo rumliegen habe - das Script ist aber seit ca. 2 Jahren nicht mehr maintained.
Ob es daher noch funktioniert weiß ich nicht. 

Sollte dennoch Interesse an dem Script bestehen, schick mir am besten mal eine E-Mail an info@kj-network.de

Gruß

Kenneth 

DominikA
Beiträge: 10
Registriert: Di 21.07.2020, 22:45

Beitrag von DominikA »

Hallo zusammen, 

auch ich stehe vor einem ähnlichen Problem... Die SSH Verbindung zur Securepoint über Powershellmodul Poshssh funktioniert und ich kann auch Befehle absetzen. 

Allerdings sollte das cmdlet ja wie folgt aussehen. 


Code: Alles auswählen

Invoke-SSHCommand -SessionId 0 -command 'extc global set variable "GLOB_TIMEZONE" value [ "Europe/Berlin" ]'Host       : 10.50.209.29Output     : {}ExitStatus : 0




Ich würde aber gerne für manche Konfigurationen Variablen verwenden, die ich vorher über eine .csv importiere und dann weiterverwenden möchte. 
Variablen die in ' ' stehen werden aber nicht ausgewertet... 

Code: Alles auswählen

$timezone = 'Europe/Berlin'

Invoke-SSHCommand -SessionId 0 -command "extc global set variable "GLOB_TIMEZONE" value [ "$Timezone" ]"Invoke-SSHCommand : Die Argumenttransformation für den Parameter "TimeOut" kann nicht verarbeitet werden. Der Wert "GLOB_TIMEZONE value [ Europe/Berlin ]" kann nicht in den Typ "System.Int32" konvertiert werden. Fehler: "Die Eingabezeichenfolge hat das falsche Format."In Zeile:1 Zeichen:68+ ... mand "extc global set variable "GLOB_TIMEZONE" value [ "$Timezone" ]"+                                     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~    + CategoryInfo          : InvalidData: (:) [Invoke-SSHCommand], ParameterBindingArgumentTransformationException    + FullyQualifiedErrorId : ParameterArgumentTransformationError,Invoke-SSHCommand








[size=100][font=Verdana, Arial, Helvetica, sans-serif]Auch mit anderer Schreibweise funktioniert das nicht.. [/font][/size]



$timezone = "Europe/Berlin"                                                                                 PS C:\Users\dominik.aumer\Documents\VisualStudio> $timezoneEurope/BerlinPS C:\Users\dominik.aumer\Documents\VisualStudio> Invoke-SSHCommand -SessionId 0 -command "extc global set variable "GLOB_TIMEZONE" value [ $Timezone ]"  Invoke-SSHCommand : Die Argumenttransformation für den Parameter "TimeOut" kann nicht verarbeitet werden. Der Wert "GLOB_TIMEZONE value [ Europe/Berlin ]" kann nicht in den Typ "System.Int32" konvertiert werden. Fehler: "Die Eingabezeichenfolge hat das falsche Format."In Zeile:1 Zeichen:68+ ... ommand "extc global set variable "GLOB_TIMEZONE" value [ $Timezone ]"+                                       ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~    + CategoryInfo          : InvalidData: (:) [Invoke-SSHCommand], ParameterBindingArgumentTransformationException    + FullyQualifiedErrorId : ParameterArgumentTransformationError,Invoke-SSHCommand




Die Securepoint CLI verlangt für die meisten Befehle auch ein Dopple Quote...


Hat jemand eine Lösung für dieses Problem? Wie kann man hier die Reihenfolge der Quotes richtig gestalten? 


Vielen Dank

Mit freundlichen Grüßen, 


Aumer Dominik

DominikA
Beiträge: 10
Registriert: Di 21.07.2020, 22:45

Beitrag von DominikA »

Es funktioniert jetzt so:
Invoke-SSHCommand -SessionId 0 -command "extc global set variable GLOB_TIMEZONE value [ $Timezone ]"

anstatt
Invoke-SSHCommand -SessionId 0 -command "extc global set variable "GLOB_TIMEZONE" value [ $Timezone ]"

Antworten