A szkriptek védelme hatalom, ablakok pro
E biztonsági intézkedések meghozatalával kizárja a digitális aláírás által a PowerShell környezetben hitelesített forgatókönyvek végrehajtását, és így megakadályozhatja a betolakodók támadását a rendszeren. Erről beszélve abból a tényből indulok ki, hogy az olvasó már ismeri a PowerShell környezetet
ARUBA INSTANT WI-FI: EGYSZERŰ, KIADHATÓ, ELÉRHETŐ
Az egyik fontos szempont, amelyet figyelembe kell venni a Windows PowerShell szkriptek biztonsági környezetben történő megvalósításakor, annak szükségessége, hogy megakadályozza a szkriptek jogosulatlan futását a rendszeren. Alapértelmezés szerint a PowerShell környezetben nem történik szkriptelés. A szkriptek azonban hatékony Windows-adminisztrációs eszköz, így ha PowerShell-et használ, akkor a legvalószínűbb.
A PowerShell szkript egy egyszerű szöveges fájl, amely kiterjesztéssel rendelkezik. PS1. A fájl tartalmaz egy vagy több PowerShell utasítás végrehajtását, amikor a parancsfájlt a konzolról hívják. A PowerShell lehetővé teszi a felhasználó számára annak meghatározását, hogy a szkriptek engedélyezettek-e, és ha igen, mely szkriptek futtathatók. A forgatókönyvek végrehajtásának és a rendszerbiztonság magasabb szintjének biztosítása érdekében a következőket kell tennie:
- generál egy PowerShell végrehajtási politikát;
- hozzon létre egy X.509 tanúsítványt;
- hitelesíti a forgatókönyvet digitálisan.
A végrehajtási politika kialakítása
A PowerShell futásidejű házirend meghatározza, hogy a parancsfájlok engedélyezettek-e, és hogy a konfigurációs fájlok betöltődnek-e a PowerShell shell indításakor. Végrehajtási házirend létrehozásához használnia kell az összetett Set-ExecutionPolicy parancsot, és meg kell adnia az alábbi végrehajtási paraméterek egyikét.
- Korlátozott: a PowerShell konfigurációs fájlok nincsenek betöltve és a szkriptek nem futnak le. Ez a paraméter a legszigorúbb paramétereket alkalmazza alapértelmezés szerint. Ennek eredményeként a PowerShell telepítése után a szkriptek nem szándékos végrehajtása, valamint a konfigurációs adatok betöltése kizárt. Ugyanakkor külön parancsokat futtathat a PowerShell konzolról.
- AllSigned: minden szkriptet és konfigurációs fájlt hitelesített digitális aláírással kell hitelesíteni. A szkript aláírásához a kód aláírási tanúsítványt kell használnia. Amint az alábbiakban látható, egy ilyen tanúsítvány önállóan hozható létre.
- RemoteSigned: Az internetről letöltött összes szkriptet és konfigurációs fájlt digitálisan alá kell írni. A számítógépen tárolt szkriptek azonban végrehajthatók, és a helyi konfigurációs fájlok is letölthetők, ha nem rendelkeznek digitális aláírással.
- Korlátlan: az összes parancsfájl végrehajtásra kerül és az összes konfigurációs fájl letöltésre kerül. Ez a lehetőség a legkevesebb korlátozással jár, ezért a legnagyobb kockázattal jár.
Tehát, ha meg akarjuk védeni a rendszert, ugyanakkor biztosítani kell, hogy a szkriptek végrehajthatók és a konfigurációs fájlok letöltődjenek, a végrehajtási szabályt AllSignedként kell meghatározni. Ehhez írja be a következő parancsot a PowerShell parancssorba:
X.509 tanúsítvány létrehozása
Ha az AllSigned paraméter a végrehajtási házirendhez van megadva, akkor azt jelenti, hogy be kell írnia a fájlokat; vagyis X.509 kód aláírásra van szüksége. Az X.509 egy titkosítási szabvány, amely meghatározza az ilyen biztonsági eszközök formátumát, mint a nyilvános kulcsú tanúsítványokat és a visszavonási tanúsítványlistakat. Vagy megvásárolhat egy nyilvános hitelesítési központ által kiadott X.509 tanúsítványt, vagy létrehozhat saját tanúsító központot és tanúsítványt. Az X.509 szabványos és nyilvános CA-k teljes leírása nem kapcsolódik közvetlenül a cikk témájához. Megmagyarázom azonban, hogyan hozhat létre saját helyi személyazonosító központot és tanúsítványt.
Mint bármely más parancssori segédprogram, a Makecert programot egy sorban futtathatja PowerShell utasításokkal. Például, amikor létrehoz egy hitelesítő hatóságot (amit meg kell tennie, mielőtt megkezdi a tanúsítvány létrehozását), meg kell adnia a segédprogram (Makecert) nevét, valamint a szükséges beállításokat. A következő példában létrehozom a PowerShell CA nevű nevet a gyökérkönyvtárban:
Ez a parancs számos paramétert tartalmaz. Az alábbi táblázat rövid leírást tartalmaz.
Táblázat. A példában használt Makecert parancsparaméterek
A parancs futtatásakor a jelszó megadása után megnyílik a Privát kulcs jelszó létrehozása párbeszédpanel (1. képernyő).
1. képernyő párbeszédpanel Személyes kulcsú jelszó létrehozása
Miután kétszer beírta a jelszót, és az OK gombra kattintva megjelenik az Enter Privát kulcs jelszó párbeszédpanel (2. képernyő), és adja meg a jelszót, amelyet a Privát kulcs jelszó létrehozása párbeszédpanelen megadott.
Képernyő 2. Adja meg a Privát kulcs jelszó párbeszédpanelt
Amikor az OK gombra kattint, megjelenik a képernyőn megjelenő Biztonsági figyelmeztetés üzenetablak (hasonló a 3. képernyőn megjelenő ablakhoz), amely figyelmezteti a PowerShell CA tanúsító központ telepítését.
3. képernyő: Biztonsági figyelmeztetés ablak
Amikor az Igen gombra kattint, a Makecert segédprogram létrehoz egy hitelesítési központot a helyi tanúsítványtárolóban.
Az előző parancshoz hasonlóan ez a parancs számos Makecert opciót tartalmaz. E paraméterek leírását a táblázat tartalmazza. Meg kell jegyeznünk, hogy a tanúsítványt létrehozó -ss opciót (amely a tanúsítványtárolót definiálja) a My, nem Root-ra állítom be, amelyet a hitelesítő hatóság létrehozásakor használtam. Az My érték azt jelzi, hogy a tanúsítvány a jelenlegi felhasználó személyes tároló mappájának tanúsítványtárába kerül. A jelenlegi felhasználói tároló alapértelmezés szerint használatos. A LocalMachine -sr opcióval is elhelyezheti a tanúsítványt a helyi számítógép tanúsítványtárolójában.
Ha a Makecert parancsot egy tanúsítvány létrehozására futtatja, a rendszer ismét jelszót kér. A beállított privát kulcsú jelszóról van szó, amely tanúsító központot hoz létre. Ezután létrehoz egy tanúsítványt az aktuális felhasználó Trusted Root Certification Authorities tárolójában.
A tanúsítványt a Tanúsítványok beépülő modulban tekintheti meg a Microsoft menedzsmentkonzolban (MMC, lásd 4. képernyő).
4. képernyő: MMC tanúsítványok beépülő modulja
Ellenőrizze a PowerShell parancsfájlokat aláírással
A parancsfájl aláírással való megbízása egyszerű folyamat. A kompozit Set-AuthenticodeSignature parancsot kell megadnia, és meg kell adnia a hitelesítendő szkriptfájlt, valamint a fájl érvényesítéséhez használt kód aláírási tanúsítványt. Például biztosítani szeretné a C: \ Audit \ SecurityAudit.ps1 parancsfájlt, amelyet az A töredékben ábrázol. Ez a szkript megjeleníti a biztonsági naplóban felsorolt utolsó 20 eseményt.
A következő utasítások először jelzik a szkriptfájlt és a tanúsítványt, majd végrehajtják a kompozit Set-AuthenticodeSignature parancsot:
Az első állításban a teljes fájlnevet a $ file változó karakterláncaként rendelem hozzá. A második állításban a Get-ChildItem parancsot használom a tanúsítványtároló kód aláírásának tanúsítványának olvasásához és a $ cert változóhoz való hozzárendeléséhez. A tanúsítvány elolvasásához a cert útvonalat jelöli: \ CurrentUser \ My. Az előtag cert: a meghajtó, amelyet a tanúsítványtároló eléréséhez használt. Következő a CurrentUser, amely a tanúsítványtárolóban található könyvtárra mutat. A My paraméter a Személyes mappában található tanúsítványokat határozza meg. Ha a Get-ChildItem összetett parancsot használja a tanúsítvány elolvasásához, engedélyeznie kell a -CodeSigningCert kapcsolót is, hogy csak azokat az tanúsítványokat olvassa el, amelyek rendelkeznek az aláírási jóváhagyási kóddal.
Ha a tanúsítványtároló több kód aláíró tanúsítvánnyal rendelkezik, a $ cert tartalmazza ezeket a tanúsítványokat; Ebben az esetben meg kell adnia a kívánt tanúsítványt, amikor a $ cert változóra hivatkozik. Ennek egyik módja az objektum index hozzáadása a változó nevét követően. Például, ha hívja az első kód-aláíró tanúsítvány szükséges egy linket $ cert [0], ha hívja a második igazolás - .. link $ cert [1], stb De ha tudjuk, hogy csak egy kód-aláíró tanúsítványt, az indexek szögletes zárójelek nem szerepelnek.
Ha digitálisan aláírt szkriptet futtat, a rendszer felkéri Önt, hogy ellenőrizze végrehajtásának biztonságát. Adhatsz parancsot, hogy soha ne fussod ezt a fájlt, ne hajtsa végre ezt a fájlt, futtassa le egyszer vagy mindenkorra. Ha parancsot adsz meg, hogy soha ne fussod ezt a fájlt, vagy mindig végrehajtod, akkor a parancsfájl megpróbálásakor a rendszer nem kéri a biztonság ellenőrzését. Más esetekben, amikor megpróbálja futtatni a szkriptet, akkor ilyen javaslatot kap.
A parancsfájl aláírása a .pfx fájl használatával
Ha személyes tanúsítványt használ a fájlok aláírásához, előfordulhat, hogy egy rosszindulatú program aláírja a szkriptet, és végrehajtja a nem kívánt szkript végrehajtását. Ezt elkerülheti, és még megbízhatóbb védelmet biztosíthat a rendszerrel a kód aláíró tanúsítvány exportálásához .pfx fájlba, hogy ezt a fájlt később felhasználhassa a szkript aláírásához.
A tanúsítvány exportálásához nyissa meg a Tanúsítványok beépülő modult és keresse meg a tanúsítványt (4. képernyő). Kattintson a jobb egérgombbal a kód aláírási tanúsítványra, és válassza a legördülő menü Minden feladat parancsát, majd kattintson az Exportálás gombra. Ezzel megnyílik a Tanúsítvány exportálás varázsló. A fájl exportálásához kövesse a varázsló utasításait. Ne felejtse el exportálni a privát kulcsot a tanúsítvány mellett, és biztosítson megbízható védelmet. Azt is meg lehet adni, hogy tartalmaz-e az összes tanúsítványt a tanúsítási útvonalra, törli a privát kulcsot és exportálja a kiterjesztett tulajdonságokat. Meg kell adnia a jelszót és a fájl helyét is. A szóban forgó példákhoz mentettem a fájlt a C: \ Audit \ PS_Cert.pfx könyvtárba. A tanúsítvány exportálásának befejezése után mindenképpen távolítsa el azt a tanúsítványtárolóból, és győződjön meg róla, hogy a .pfx fájl biztonságos helyen van.
A varázsló utasításainak végrehajtása után minden készen áll a fájl aláírására. Az első két állításnak meg kell határoznia a szükséges változókat - például a következő kódrészlet esetében:
Az első állításban a parancsfájl helyét a $ file változóhoz rendelem. Ezután a Get-PfxCertificate parancsot használom a .pfx fájl elolvasásához és a $ cert változóba való elmentéséhez.
Amikor elindítja a második utasítást, a rendszer kéri a jelszót. Ez a jelszóról szól, amelyet a tanúsítványnak egy fájlba történő exportálásakor megadott. Mint korábban, használd a Set-AuthenticodeSignature parancsot a fájl aláírásához. A parancs futtatásakor adja meg a szkriptfájlokat és a .pfx fájlt, mint a következő példában:
Ez minden, ami a digitális aláírással ellátott fájl tanúsításáról szól. Mint láthatja, miután létrehozta a parancsfájlt, és esetleg egy fájlt exportál. pfx, a fájlok hitelesítésének folyamata nem okozhat problémát. Eközben ez hatékony módja annak, hogy biztosítsa a rendszer biztonságát. Minden rendszergazda tudja, hogy nem tudja túlzni, különösen a PowerShell szkriptek védelmében.
Lista. A SecurityAudit.ps1 parancsfájl aláírása
Ossza meg az anyagot kollégákkal és barátokkal