Su Windows, come limitare l'accesso a una cartella, sottocartella e file solo ad alcune applicazioni (non agli utenti)

3

Abbiamo un'applicazione che non è per utente e può essere utilizzata da più utenti contemporaneamente. I dati sono condivisi anche da tutti gli utenti.
Il percorso delle cartelle di dati che utilizziamo è ProgramData \ OurAppName \ Data (post Vista) e diamo il pieno controllo a tutti gli utenti, in modo che la nostra applicazione da loro eseguita possa apportare modifiche ai file nella cartella Data.

Ora il problema con questo è, ora qualsiasi altra applicazione (malware / virus) può anche modificare i file - cioè un attacco può essere fatto sui file di dati della nostra applicazione. Le nostre applicazioni sono un'applicazione desktop Win32.

C'è un modo in cui possiamo limitare l'accesso alla cartella Dati solo alle nostre applicazioni?

    
posta Abhishek Jain 04.02.2015 - 11:36
fonte

3 risposte

1

Le applicazioni sui sistemi operativi Windows vengono eseguite nel contesto dell'utente che lo esegue e quindi ereditano ACL di quell'utente.

Se guardato in modo astratto, il tuo programma non fa altro che Word (winword.exe) o Excel (excel.exe) con i file .doc o .xls. Non dovrebbe essere necessario limitare l'accesso dei dati solo all'applicazione, tuttavia la riduzione del rischio si presenta:

  • limitando gli utenti che hanno accesso ai dati (ACL, ovvero i permessi dei file, idealmente attraverso un gruppo)
  • limitando le operazioni che un utente può eseguire (ad esempio l'installazione dell'applicazione per impedire il malware)
  • whitelist dell'applicazione
  • protezione antimalware
  • controllo per l'integrità dei dati
risposta data 04.02.2015 - 13:13
fonte
0

Su Unix, suggerirei di eseguire quell'applicazione come un particolare utente o gruppo e limitare le autorizzazioni su quella cartella all'utente e al gruppo.

Potresti fare lo stesso su Windows, ma non altrettanto facilmente. Se conosci tutti gli utenti che eseguiranno l'applicazione, puoi aggiungerli a un particolare gruppo, quindi dare al gruppo il pieno controllo su quel file?

    
risposta data 04.02.2015 - 11:42
fonte
0

Gli elementi essenziali di Android vengono utilizzati durante l'installazione delle applicazioni. Ad ogni app viene assegnato un gruppo e solo quel gruppo può accedere ai dati dell'app. In un sistema basato su Unix è piuttosto semplice da implementare. Windows diventa un po 'più difficile.

Elenchi di controllo di accesso

Quello che puoi fare è creare una personalizzazione < em> Elenco di controllo di accesso discrezionale (DACL) per la tua applicazione. Questi possono essere convertiti in Descrittori di sicurezza che possono essere usati con funzioni come CreateDirectory . Il DACL conterrà tutte le informazioni su chi può accedere alla cartella. In questo caso probabilmente vorrai creare un gruppo Windows per l'applicazione.

Quando crei la tua directory puoi limitare l'accesso al DACL che hai creato. Quando l'applicazione esegue / ha bisogno di accedere alla directory acquisisce il DACL e lo utilizza nelle successive chiamate di sistema. Questi non sono gli oggetti Windows più facili al mondo con cui lavorare, ma fanno quello che vuoi.

Più di quanto probabilmente vorresti sapere sui descrittori di sicurezza di Windows e l'accesso controllo.

Ulteriori informazioni sulla creazione di DACL

Creazione utenti

Puoi creare un Profilo utente in Vista +. Più che un po 'complicato perché Windows non è stato progettato per questo. La rappresentazione di un utente connesso richiede un tipo di token di accesso per l'utente che si sta tentando di utilizzare. Esistono più funzioni che restituiscono un tale token:

BOOL WINAPI ImpersonateLoggedOnUser(
  _In_  HANDLE hToken
);

hToken [in]

A handle to a primary or impersonation access token that represents a logged-on user. This can be a token handle returned by a call to LogonUser, CreateRestrictedToken,DuplicateToken, DuplicateTokenEx, OpenProcessToken, or OpenThreadToken functions. If hToken is a handle to a primary token, the token must have TOKEN_QUERY and TOKEN_DUPLICATE access. If hToken is a handle to an impersonation token, the token must have TOKEN_QUERY and TOKEN_IMPERSONATE access.

LogonUser richiede una password. Probabilmente non si desidera eseguire l'hardcode nella propria applicazione. DuplicateToken genera solo token di rappresentazione, che non possono essere utilizzati con CreateProcessAsUser (che è il nostro obiettivo finale). Ora ci restano un sacco di funzioni che richiedono un token esistente da duplicare e partire da. Ciò significa che ti rimane il token dell'utente corrente che non è quello che desideri.

Creare token è praticamente impossibile. Questa operazione viene spesso eseguita solo da LSASS e non sarei sorpreso se l'intero comportamento fosse contrassegnato da antivirus. In Windows questo approccio è probabilmente una cattiva idea, e non vale la pena dei cerchi fiammeggianti che dovresti passare per farlo funzionare.

    
risposta data 04.02.2015 - 14:31
fonte

Leggi altre domande sui tag