Stel: ik heb een Windows service gebouwd. Deze draait als LocalSystem. De service leest zijn configuratie uit enkele bestanden in z'n executable folder. De configuratiebestanden worden geschreven door een wizard welke door Administrator wordt uitgevoerd. Enkele configuratie strings zijn echter van gevoelige aard (wachtwoorden).
Op dit moment (nog in testfase) "beveilig" ik deze wachtwoorden door de installer de programmafolder enkel lees- en schrijfbaar te maken voor Administrator (om de configuratie te kunnen wijzigen) en LocalSystem (zodat de service de bestanden kan inlezen) en alle andere users te weren.
Maar eigenlijk wil ik de wachtwoorden encrypten met de hiervoor uiterst geschikte ProtectedData API. Hiermee kan ik een string wegschrijven die enkel door hetzelfde account weer kan worden gelezen. En daar zit het probleem: dat zijn twee gebruikers, Administrator en LocalSystem. Om dit toch voor elkaar te krijgen wil ik de configuratiewizard het LocalSystem account laten impersonaten, zodat de service ze toch kan lezen.
En dat wil niet echt vlotten. Ik blijf een "unknown username or bad password" melding krijgen wanneer ik als password null of "" opgeef, en als username/domain heb ik allerlei varianten op "NT AUTHORITY\LocalSystem" geprobeerd. Hoe impersonate ik (als Administrator) de LocalSystem user? Voor zover ik weet hebben speciale system accounts geen wachtwoorden maar is een impersonation privilege benodigd om ze te impersonaten. Of is er een andere oplossing om de configuratiebestanden te versleutelen zodanig dat beide processen ze kunnen lezen en schrijven, zonder het probleem te verplaatsen door symmetrische encryptie met een gebruiker-onafhankelijke sleutel te gebruiken die vervolgens weer ergens moet worden opgeslagen?
Op zich zou het blokken van bestandstoegang de configuratie redelijk veilig moeten maken voor andere gebruikers, maar we weten allemaal hoe ingeburgerd het is in de Windows wereld om je eigen gebruikersaccount Administrator-rechten te geven, dus het doel van deze stap is meer het voorkomen dat iemand de wachtwoorden zomaar in cleartext kan lezen als de eigenaar zichzelf ingelogd laat terwijl hij even niet bij de PC zit.
P.S. enige uren google hebben tot heden niks opgeleverd, enkel wat informatie over het impersonaten van NetworkService/LocalService, maar dat mag alleen LocalSystem en heeft dus geen nut voor het configuratieprogramma (als ik de LocalSystem impersonation al niet verkrijg
)
Op dit moment (nog in testfase) "beveilig" ik deze wachtwoorden door de installer de programmafolder enkel lees- en schrijfbaar te maken voor Administrator (om de configuratie te kunnen wijzigen) en LocalSystem (zodat de service de bestanden kan inlezen) en alle andere users te weren.
Maar eigenlijk wil ik de wachtwoorden encrypten met de hiervoor uiterst geschikte ProtectedData API. Hiermee kan ik een string wegschrijven die enkel door hetzelfde account weer kan worden gelezen. En daar zit het probleem: dat zijn twee gebruikers, Administrator en LocalSystem. Om dit toch voor elkaar te krijgen wil ik de configuratiewizard het LocalSystem account laten impersonaten, zodat de service ze toch kan lezen.
En dat wil niet echt vlotten. Ik blijf een "unknown username or bad password" melding krijgen wanneer ik als password null of "" opgeef, en als username/domain heb ik allerlei varianten op "NT AUTHORITY\LocalSystem" geprobeerd. Hoe impersonate ik (als Administrator) de LocalSystem user? Voor zover ik weet hebben speciale system accounts geen wachtwoorden maar is een impersonation privilege benodigd om ze te impersonaten. Of is er een andere oplossing om de configuratiebestanden te versleutelen zodanig dat beide processen ze kunnen lezen en schrijven, zonder het probleem te verplaatsen door symmetrische encryptie met een gebruiker-onafhankelijke sleutel te gebruiken die vervolgens weer ergens moet worden opgeslagen?
Op zich zou het blokken van bestandstoegang de configuratie redelijk veilig moeten maken voor andere gebruikers, maar we weten allemaal hoe ingeburgerd het is in de Windows wereld om je eigen gebruikersaccount Administrator-rechten te geven, dus het doel van deze stap is meer het voorkomen dat iemand de wachtwoorden zomaar in cleartext kan lezen als de eigenaar zichzelf ingelogd laat terwijl hij even niet bij de PC zit.
P.S. enige uren google hebben tot heden niks opgeleverd, enkel wat informatie over het impersonaten van NetworkService/LocalService, maar dat mag alleen LocalSystem en heeft dus geen nut voor het configuratieprogramma (als ik de LocalSystem impersonation al niet verkrijg
[ Voor 18% gewijzigd door johnwoo op 24-01-2008 15:05 ]
4200Wp ZO + 840Wp ZW + 1680Wp NW | 14xIQ7+ + 1xDS3-L | MTVenusE | HWP1