NewSID v4.10

Av Mark Russinovich

Publicerad: 1 november 2006

Obs! NewSID har dragits tillbaka och är inte längre tillgängligt för nedladdning. Se Mark Russinovichs blogginlägg: NewSID Retirement och Machine SID Duplication Myth

VIKTIGT

När det gäller SID:er stöder Microsoft inte avbildningar som har förberetts med NewSID. Vi stöder endast bilder som har förberetts med SysPrep. Microsoft har inte testat NewSID för alla alternativ för distributionskloning.

Mer information om Microsofts officiella policy finns i följande knowledge base-artikel:

Introduktion

Många organisationer använder kloning av diskbilder för att utföra massdistributioner av Windows. Den här tekniken innebär att du kopierar diskarna för en fullständigt installerad och konfigurerad Windows-dator till diskenheterna på andra datorer. Dessa andra datorer verkar ha gått igenom samma installationsprocess och är omedelbart tillgängliga för användning.

Även om den här metoden sparar timmar av arbete och krångel jämfört med andra distributionsmetoder, har den det största problemet att varje klonat system har en identisk SID (Computer Security Identifier). Detta äventyrar säkerheten i arbetsgruppsmiljöer, och säkerheten för flyttbara medier kan också äventyras i nätverk med flera identiska dator-SID:er.

Efterfrågan från Windows-communityn har fått flera företag att utveckla program som kan ändra en dators SID efter att ett system har klonats. Symantecs SID Changer ochSymantecs Ghost Walker säljs dock endast som en del av varje företags avancerade produkt. Dessutom körs båda från en DOS-kommandotolk (Altiris changer liknar NewSID).

NewSID är ett program som vi har utvecklat som ändrar en dators SID. Det är gratis och är ett Win32-program, vilket innebär att det enkelt kan köras på system som tidigare har klonats.

Läs hela den här artikeln innan du använder det här programmet.

Versionsinformation:

  • Version 4.0 introducerar stöd för Windows XP och .NET Server, ett gränssnitt i guidestil, där du kan ange det SID som du vill använda, Registerkomprimering och även alternativet att byta namn på en dator (vilket resulterar i en ändring av både NetBIOS- och DNS-namn).
  • Version 3.02 korrigerar ett fel där NewSid inte korrekt kopierar standardvärden med ogiltiga värdetyper när du byter namn på en nyckel med ett gammalt SID till ett nytt SID. NT använder faktiskt sådana ogiltiga värden vid vissa tidpunkter i SAM. Symptomet på den här buggen var felmeddelanden som rapporterade åtkomst nekad när kontoinformation uppdaterades av en behörig användare.
  • Version 3.01 lägger till en work-around för en otillgänglig registernyckel som skapas av Microsoft Transaction Server. Utan work-around skulle NewSID avslutas i förtid.
  • Version 3.0 introducerar en SID-synkroniseringsfunktion som instruerar NewSID att hämta ett SID som ska tillämpas från en annan dator.
  • Version 2.0 har ett alternativ för automatiserat läge och vi ändrar även datornamnet.
  • Version 1.2 åtgärdar ett fel i som introducerades i 1.1 där vissa säkerhetsbeskrivningar för filsystem inte uppdaterades.
  • Version 1.1 korrigerar en relativt liten bugg som endast påverkade vissa installationer. Det har också uppdaterats för att ändra SID:er som är associerade med behörighetsinställningarna för fil- och skrivarresurser.

Kloning och alternativa distributionsmetoder

Ett av de mest populära sätten att utföra massdistributioner av Windows (vanligtvis hundratals datorer) i företagsmiljöer är baserat på tekniken för diskkloning. En systemadministratör installerar basoperativsystemet och tilläggsprogramvaran som används i företaget på en malldator. När du har konfigurerat datorn för drift i företagets nätverk används automatiserade disk- eller systemdupliceringsverktyg (till exempel SymantecsGhost, PowerQuestsImage Drive och Altiris RapiDeploy) för att kopiera malldatorns enheter till tiotals eller hundratals datorer. Dessa kloner får sedan slutgiltiga justeringar, till exempel tilldelning av unika namn och används sedan av företagets anställda.

Ett annat populärt sätt att lansera är att använda Microsoft sysdiff-verktyget (en del av Windows Resource Kit). Det här verktyget kräver att systemadministratören utför en fullständig installation (vanligtvis en skriptbaserad obevakad installation) på varje dator och sedan automatiserar sysdiff tillämpningen av programinstallationsavbildningar för tilläggsprogram.

Eftersom installationen hoppas över och eftersom kopiering av disksektorn är effektivare än filkopiering kan en klonad distribution spara dussintals timmar jämfört med en jämförbar sysdiffinstallation. Dessutom behöver systemadministratören inte lära sig att använda obevakad installation eller sysdiff, eller skapa och felsöka installationsskript. Detta sparar bara timmar av arbete.

SID-dupliceringsproblemet

Problemet med kloning är att det endast stöds av Microsoft i mycket begränsad mening. Microsoft har uppgett att kloningssystem endast stöds om det görs innan GUI-delen av Windows-installationen har nåtts. När installationen når den här punkten tilldelas datorn ett namn och ett unikt sid för datorn. Om ett system klonas efter det här steget har alla klonade datorer identiska dator-SID:er. Observera att bara ändra datornamnet eller lägga till datorn i en annan domän ändrar inte datorns SID. Om du ändrar namnet eller domänen ändras bara domänens SID om datorn tidigare var associerad med en domän.

För att förstå problemet som kloning kan orsaka är det först nödvändigt att förstå hur enskilda lokala konton på en dator tilldelas SID:er. SID:erna för lokala konton består av datorns SID och en bifogad RID (relativ identifierare). RID börjar med ett fast värde och ökas med ett för varje konto som skapas. Det innebär att det andra kontot på en dator, till exempel, får samma RID som det andra kontot på en klon. Resultatet är att båda kontona har samma SID.

Duplicerade SID:er är inte ett problem i en domänbaserad miljö eftersom domänkonton har SID baserat på domän-SID. Men enligt Microsoft Knowledge Base-artikeln Q162001"Diskdreplicera inte installerade versioner av Windows NT" i en arbetsgruppsmiljösäkerhet baseras på lokala konto-SID:er. Om två datorer har användare med samma SID kan arbetsgruppen därför inte skilja mellan användarna. Alla resurser, inklusive filer och registernycklar, som en användare har åtkomst till, kommer den andra också att göra det.

En annan instans där duplicerade SID:er kan orsaka problem är där det finns flyttbara medier som är formaterade med NTFS, och lokala kontosäkerhetsattribut tillämpas på filer och kataloger. Om ett sådant media flyttas till en annan dator som har samma SID, kan lokala konton som annars inte skulle kunna komma åt filerna kunna komma åt om deras konto-ID:n råkade matcha dem i säkerhetsattributen. Detta är inte möjligt om datorer har olika SID:er.

En artikel som Mark har skrivit, med titeln "NT Rollout Options", publicerades i juninumret av Windows NT Magazine. Den beskriver det duplicerade SID-problemet i detalj och presenterar Microsofts officiella inställning till kloning. Om du vill se om du har ett duplicerat SID-problem i nätverket använder du PsGetSid för att visa dator-SID:er.

NewSID

NewSID är ett program som vi har utvecklat för att ändra en dators SID. Den genererar först ett slumpmässigt SID för datorn och fortsätter med att uppdatera instanser av det befintliga dator-SID som hittas i registret och i filsäkerhetsbeskrivningar och ersätter förekomster med det nya SID. NewSID kräver administratörsbehörighet för att köras. Den har två funktioner: ändra SID och ändra datornamnet.

Om du vill använda alternativet för automatisk körning av NewSID anger du "/a" på kommandoraden. Du kan också uppmana den att automatiskt ändra datorns namn genom att inkludera det nya namnet efter växeln "/a". Till exempel:

newsid /a [newname]

Skulle låta NewSID köras utan att fråga, ändra datornamnet till "newname" och få det att starta om datorn om allt går bra.

Obs! Om systemet där du vill köra NewSID kör IISAdmin måste du stoppa IISAdmin-tjänsten innan du kör NewSID. Använd det här kommandot för att stoppa IISAdmin-tjänsten: net stop iisadmin /y

NewSID:s SID-synkroniseringsfunktion som gör att du kan ange att det nya SID ska hämtas från en annan dator i stället för att generera ett slumpmässigt. Den här funktionen gör det möjligt att flytta en säkerhetskopieringsdomänkontrollant (BDC) till en ny domän, eftersom en BDC-relation till en domän identifieras genom att den har samma dator-SID som de andra domänkontrollanterna (DCs). Välj bara knappen Synkronisera SID och ange måldatorns namn. Du måste ha behörighet att ändra säkerhetsinställningarna för måldatorns registernycklar, vilket vanligtvis innebär att du måste vara inloggad som domänadministratör för att kunna använda den här funktionen.

Observera att när du kör NewSID ökar storleken på registret, så se till att den maximala registerstorleken ger utrymme för tillväxt. Vi har upptäckt att den här tillväxten inte har någon märkbar inverkan på systemets prestanda. Anledningen till att registret växer är att det blir fragmenterat när tillfälliga säkerhetsinställningar tillämpas av NewSID. När inställningarna tas bort komprimeras inte registret.

Viktigt: Observera att även om vi har testat NewSID noggrant måste du använda det på egen risk. Precis som med alla program som ändrar fil- och registerinställningar rekommenderar vi starkt att du säkerhetskopierar datorn helt innan du kör NewSID.

Flytta en BDC

Här följer de steg du bör följa när du vill flytta en BDC från en domän till en annan:

  1. Starta den BDC som du vill flytta och logga in på. Använd NewSID för att synkronisera SID för BDC med PDC för domänen som du vill flytta BDC till.
  2. Starta om systemet som du ändrade SID för (BDC). Eftersom domänen som BDC nu är associerad med redan har en aktiv PDC startar den som en BDC i sin nya domän.
  3. BDC visas som en arbetsstation i Serverhanteraren, så använd knappen "Lägg till i domän" för att lägga till BDC i sin nya domän. Se till att ange BDC-alternativknappen när du lägger till.

Hur det fungerar

NewSID börjar med att läsa den befintliga datorns SID. En dators SID lagras i registrets SÄKERHETSdatafil under SECURITY\SAM\Domains\Account. Den här nyckeln har ett värde med namnet F och ett värde med namnet V. V-värdet är ett binärt värde som har dator-SID inbäddat i slutet av sina data. NewSID säkerställer att detta SID är i ett standardformat (3 32-bitars underautentiteter föregås av tre 32-bitars utfärdarfält).

Därefter genererar NewSID ett nytt slumpmässigt SID för datorn. NewSID:s generation gör stora ansträngningar för att skapa ett verkligt slumpmässigt 96-bitarsvärde, som ersätter 96-bitars av de 3 underautentiseringsvärden som utgör ett dator-SID.

Tre faser till dator-SID-ersättningen följer. I den första fasen genomsöks säkerhets- och SAM-registerdatafilerna efter förekomster av den gamla datorns SID i nyckelvärden, samt namnen på nycklarna. När SID hittas i ett värde ersätts det med den nya datorns SID, och när SID hittas i ett namn kopieras nyckeln och dess undernycklar till en ny undernyckel som har samma namn förutom med det nya SID som ersätter det gamla.

De sista två faserna omfattar uppdatering av säkerhetsbeskrivningar. Registernycklar och NTFS-filer har en associerad säkerhet. Säkerhetsbeskrivningar består av en post som identifierar vilket konto som äger resursen, vilken grupp som är den primära gruppägaren, en valfri lista med poster som anger åtgärder som tillåts av användare eller grupper (kallas diskretionär åtkomstkontrollista – DACL) och en valfri lista med poster som anger vilka åtgärder som utförs av vissa användare eller grupper som genererar poster i systemets händelselogg (systemåtkomstkontrollista – SACL). En användare eller en grupp identifieras i dessa säkerhetsbeskrivningar med sina SID:er, och som jag nämnde tidigare har lokala användarkonton (förutom de inbyggda kontona som Administratör, Gäst och så vidare) sina SID:er som består av datorns SID plus en RID.

Den första delen av säkerhetsbeskrivningsuppdateringar sker på alla NTFS-filsystemfiler på datorn. Varje säkerhetsbeskrivning genomsöks efter förekomster av datorns SID. När NewSID hittar ett ersätter det med den nya datorns SID.

Den andra delen av säkerhetsbeskrivningsuppdateringar utförs i registret. Först måste NewSID se till att det genomsöker alla hives, inte bara de som läses in. Varje användarkonto har en registreringsdatafil som läses in som HKEY_CURRENT_USER när användaren är inloggad, men som finns kvar på disken i användarens profilkatalog när de inte är det. NewSID identifierar platserna för alla användardatafiler genom att räkna upp nyckeln HKEY_LOCAL_MACHINE\Software\Microsoft\Windows NT\CurrentVersion\ProfileList , som pekar på de kataloger där de lagras. Sedan läses de in i registret med RegLoadKey under HKEY_LOCAL_MACHINE och genomsöker hela registret och undersöker varje säkerhetsbeskrivning på jakt efter den gamla datorns SID. Uppdateringar utförs på samma sätt som för filer och när det är klart NewSID tar bort användardatafilerna som lästs in. Som ett sista steg söker NewSID igenom HKEY_USERS-nyckeln, som innehåller registreringsdatafilen för den inloggade användaren samt . Standarddatafil. Detta är nödvändigt eftersom en hive inte kan läsas in två gånger, så den inloggade användardatafilen läses inte in i HKEY_LOCAL_MACHINE när NewSID läser in andra användardatafiler.

Slutligen måste NewSID uppdatera undernycklarna ProfileList för att referera till de nya konto-SID:erna. Det här steget är nödvändigt för att Windows NT ska associera profiler korrekt med användarkontona när konto-SID:erna har ändrats för att återspegla den nya datorns SID.

NewSID säkerställer att den kan komma åt och ändra varje fil och registernyckel i systemet genom att ge sig själv följande behörigheter: System, Säkerhetskopiering, Återställning och Ägarskap.