[workarounddal megoldva] Group policy, batch, hatalmas delay boot alkalmával (Win 10, WPKG)

Sziasztok!

 

Fut pár 10 gépen a WPKG nevű szoftver, ez amolyan távoli/unattended install. (https://wpkg.org/)

Ehhez Win7 óta van egy wpkg-gp "kiterjesztés", amely az indítás során service-ként futtatja a megadott installereket. (https://wpkg.org/WPKG-GP) (szerk. pontosítok: igazából a WPKG kliens fut service-ként, és az installereket, batch fileokat ez futtatja)

 

Eddig, több, mint 10 éve viszonylag kevés szívással működött.

 

Most felmerült, hogy tantermenként a gépeken le kellene tiltani a külső net hozzáférést (vizsgák, zh-k alkalmával egy eséllyel kevesebb a csalásra). Meg is volna a batch fájl, cmd ablakból lefut pillanat alatt.

(Azért kell batch, mert a wpkg login előtt fut, nincs semmi interaktív lehetőség, ha pedig van output, az megakasztja a bootot, mert írná, de nincs hova, és megáll minden. Ezt megtanultam kezelni az évek alatt, nem gond. Általában...)

Ha a wpkg-gp futtatja a fenti batch filet, 10 perc. Vagy több. A rendszernaplóban hiba nincs (ha a wpkg-nek baja van, azt oda pakolgatja).

A legszebb az az, hogy nem mindig. 10 indításból mondjuk 1-2 alkalommal. Ez pedig - tekintve, hogy órák reggel 8-tól este 6-ig, vagy akár tovább is vannak, sokszor pár perces teszttel az elején, vagy éppen 90 perces zh-k alkalmával - nem elfogadható.

 

Tanácstalan vagyok, tudna valaki segíteni, hogy kiderítsem, indulásnál mi tart ilyen sokáig??

 

További részletekkel szívesen szolgálok, most a batch file-t teszem ide, ez ennyi (kínomban már két fájlba is szedtem, de ugyanez az eredmény):

 

 

@echo off

SETLOCAL EnableDelayedExpansion

REM netsh sets errorlevel to 0 if the rule exists, non-zero otherwise
rem see: https://stackoverflow.com/questions/72283256/how-to-check-firewall-rule-before-creating-it-using-batch-script-and-netsh

if "%~1" == "" GOTO END
if %1 == net_down GOTO net_down
if %1 == net_up GOTO net_up
 
:net_down
netsh advfirewall firewall show rule name="SZTEOnly" | findstr "SZTEOnly" > NUL 2>&1
        if %ERRORLEVEL% NEQ 0 (
            netsh advfirewall firewall add rule name="SZTEOnly" dir=out action=block protocol=ANY remoteip=1.1.1.1-10.111.0.0,10.111.50.0-160.114.0.0,160.115.0.0-255.255.255.255 > NUL 2>&1
            netsh advfirewall firewall set rule name="SZTEOnly" new enable=yes > NUL 2>&1
            GOTO END
                        ) else (
                            netsh advfirewall firewall set rule name="SZTEOnly" new enable=yes > NUL 2>&1
                            GOTO END
                            )

:net_up
    netsh advfirewall firewall show rule name="SZTEOnly" > nul 2>&1
    if %ERRORLEVEL% EQU 0 (
    netsh advfirewall firewall delete rule name="SZTEOnly" dir=out > NUL 2>&1
    ) else (
        GOTO END
        )

:END
EXIT /B 0


Hozzászólások

Most felmerült, hogy tantermenként a gépeken le kellene tiltani a külső net hozzáférést (vizsgák, zh-k alkalmával egy eséllyel kevesebb a csalásra).

Keresd meg a GTK-s kollégát, hogy ott milyen megoldás van erre, az ottani oktató kollégák szeretik :) (pár hónapja otthagytam az egyetemet, de még annó én raktam össze: a DHCP szerver mindegyik gépnek fix IP címet oszt ki, gateway-nek pedig egy VM-ként futó szerver címét osztja ki, ami iptables szabályokkal ipset-ek alapján szűr (pl. a coospace ipset tagjai elérhetik a CooSpace IP-címét), és kapott egy webes felületet, amivel akár gépenként egyesével be tudják kattintgatni, hogy ki mit érhessen el). Ha egyszer beállítod, onnantól set & forget, az évek alatt csak annyi gond volt vele, hogy néhány oktató beállította, hogy visszavonásig legyen valami tiltás (ami valójában visszavonás vagy éjfél, mert készültem erre :) ), aztán nem vonta vissza, a következő oktató meg nem értette, mizu...

Erre meg a legjobb tippem, hogy lehet, hogy túl hamar fut le és még nem fut rendesen a tűzfal-szolgáltatás. Az elejére egy net start mpssvc?

BlackY

"Gyakran hasznos ugyanis, ha számlálni tudjuk, hányszor futott le már egy végtelenciklus." (haroldking)

Köszi a tippet, és bocsi a késői válaszért!

 

Végül kicsit másképp oldottam meg. A megoldás, amit felvázoltál, elegáns, és nagyon jól használható.

Viszont nálunk - ahogy a kollégák mondták - nincs szükség tanteremnél finomabb granularitásra, másrészt az infrastruktúra (meg az emberanyag (khm, én :) ) nem bírna el egy ekkora váltást. Fenntartani tudom, hogy már szinte nem kell, de ennyire átvariálni a jelenlegi rendszert most nem akartam/tudom. (oktatás, meg egyéb feladatok mellett rugdosom én is a rendszert)

Nekem is az volt a gyanúm, hogy a tűzfal szolgáltatás még nem (legalábbis nem mindig) ment, mikor a script már hozzányúlt volna, és emiatt a boot során elkezdett rá várni. Viszont abban sem voltam biztos, hogy ha a tűzfalat elindítom, az nem vár más service-re...

Szóval az lett a vége, hogy a gépekre lemegy a fenti batch fájl lokálba, és onnan futtatom egy ütemezett feladattal bejelentkezéskor.

Így az az előny is megvan, hogy a boot során még van net, majd a bejelentkezés után tiltom csak le.

A tiltáshoz, illetve az újra engedélyezéshez nálunk egy hálózati megosztáson levő batch file-t kell futtatni, az onnantól intéz mindent. Tulajdonképpen ez adja hozzá, vagy veszi el az adott tantermek gépeihez/-ről a azt a wpkg feladatot, ami a fenti ütemezett feladatot hozzá adja a Windowshoz, vagy törli azt. Ami meg már maga a Windows saját tűzfalához adja hozzá, vagy törli a szabályt.

Tehát WPKG-ban bekapcs/kikapcs tiltás -> a WPKG leküldi a tűzfal tiltó/engedélyező szabályt a gépre, és létrehozza, vagy törli a bejelentkezéskor lefutó feladatot -> ez a feladat maga a tűzfal szabály létrehozása és engedélyezése vagy törlése.

Ha valakit részletesebben érdekel szívesen mesélek, de most, ide szerintem ennyi elég :)

Köszi még egyszer a segítséget!

<-------
You can't grep on dead trees.