Besoin d’identifier précisément quel poste et quel utilisateur ont ouvert, lu ou modifié un dossier partagé Windows ? Voici une méthode éprouvée, avec des scripts et des filtres prêts à l’emploi pour obtenir l’IP du client, le nom du poste et l’utilisateur dans les journaux de sécurité.
Vue d’ensemble de la question
Dans un environnement Windows (poste isolé, serveur membre ou contrôleur de domaine), l’objectif est de consigner qui (compte utilisateur) et d’où (poste client) accède à un dossier partagé via SMB. La solution fiable repose sur :
- l’activation des stratégies d’audit (Accès aux objets, File Share),
- la pose d’une SACL (Audit) sur le dossier visé,
- l’analyse des événements clés 4663 et 5140 (et, si besoin, 4624 et 5145),
- une corrélation simple pour remonter au nom d’utilisateur, à l’adresse IP et, souvent, au nom NetBIOS/Workstation du poste.
Réponse & Solution
Étape | Action | Où / Comment | Résultat attendu |
---|---|---|---|
1. Activer l’audit “Accès aux objets” | Stratégie de sécurité locale ou GPO : Configuration ordinateur › Paramètres Windows › Paramètres de sécurité › Stratégies locales › Stratégie d’audit › Audit de l’accès aux objets | Cocher Succès et Échecs | Le système enregistre toute tentative d’accès aux fichiers/dossiers |
2. (Recommandé) Activer l’audit “Partage de fichiers” | Configuration ordinateur › Paramètres Windows › Paramètres de sécurité › Stratégies avancées d’audit › Partage de fichiers › Audit File Share | Succès/Échecs | Génère l’ID 5140 (Objet partagé réseau accédé), plus simple à filtrer |
3. Définir l’audit sur le dossier | Onglet Sécurité › Avancé › Audit › Ajouter → principal : Everyone (ou groupe cible) → cocher Read/Write/… | Audit ciblé uniquement sur ce dossier | Réduit le volume de journaux |
4. Vérifier dans l’Observateur d’événements | Event Viewer → Journaux Windows › Sécurité | • ID 4663 → tentative d’accès fichier • ID 5140 → ouverture depuis le partage | Le détail contient : — Account Name (utilisateur) — Source Address / Client Address (IP du poste) — Computer/Workstation Name (souvent présent) |
5. Identifier le poste | L’ID 5140 inclut Network Information › Source/Client Address (IP). L’ID 4624 (connexion), sur le fichier ou le DC, contient Workstation Name. | Faites correspondre l’IP ou le nom d’hôte via DNS (nslookup ) ou arp -a , ou interrogez l’AD (attribut dNSHostName). | Ordinateur source identifié |
6. Automatiser l’analyse (optionnel) | PowerShell : Get-WinEvent -FilterHashtable @{LogName='Security'; Id=@(4663,5140); StartTime=(Get-Date).AddDays(-1)} | Export-Csv | Rapport quotidien ou alerte SIEM : historique clair des accès par utilisateur + poste |
Pas à pas détaillé
Activer l’audit “Accès aux objets” (GPO ou local)
- Via GPMC (domaine) : créez ou éditez une GPO liée à l’OU des serveurs de fichiers → Configuration ordinateur → Paramètres Windows → Paramètres de sécurité → Stratégies locales → Stratégie d’audit → Audit de l’accès aux objets = Succès et Échecs.
- Via stratégie avancée (de préférence) : Configuration ordinateur → Paramètres Windows → Paramètres de sécurité → Stratégies avancées d’audit → Object Access → activez File System, File Share (et si besoin Detailed File Share) en Succès/Échecs.
- Poste isolé : lancez
secpol.msc
et configurez la stratégie locale équivalente.
Astuce : la “Stratégie d’audit” classique est globale et moins granulaire. La “Stratégie avancée d’audit” permet d’affiner par sous-catégorie et est recommandée.
Poser une SACL (Audit) sur le dossier ciblé
Pour éviter un déluge d’événements, appliquez l’audit uniquement sur le(s) dossier(s) critique(s). Utilisez l’onglet Sécurité > Avancé > Audit et ajoutez :
- Principal : Everyone, Authenticated Users ou un groupe AD métier (selon besoin).
- Type : Succès et/ou Échecs.
- Accès : cochez précisément ce que vous voulez tracer : Read Data/List Folder, Write Data/Create Files, Append Data, Delete, etc.
- Appliquer à : Ce dossier, sous-dossiers et fichiers si vous souhaitez hériter.
Pourquoi c’est important ? Sans SACL, Windows ne sait pas que ce dossier doit être audité, même si la stratégie globale est active.
Activer “File Share” et (optionnel) “Detailed File Share”
- File Share (ID 5140) : journalise l’accès au partage (Share Name, Share Local Path, Client Address). Idéal pour identifier le poste source.
- Detailed File Share (ID 5145) : journalise des détails très fins (ciblage par fichier, masques d’accès). Très verbeux, à activer seulement si nécessaire pour une enquête.
Validation dans l’Observateur d’événements
Sur le serveur de fichiers : Event Viewer → Journaux Windows → Sécurité.
- 4663 – An attempt was made to access an object : montre l’objet (fichier/dossier), l’accès demandé (Read/Write/Delete…), l’utilisateur et souvent le processus.
- 5140 – A network share object was accessed : indique le Share Name, le Share Path et la Client/Source Address (IP du poste). C’est l’événement le plus rapide à exploiter pour relier utilisateur et poste.
- 4624 – An account was successfully logged on : utile pour récupérer Workstation Name et le Logon Type (Type 3 = réseau/SMB, Type 10 = RDP).
- 5145 – Detailed File Share (si activé) : permet d’aller au niveau fichier, au prix d’un volume conséquent.
Extraire l’utilisateur, l’IP et le poste : méthodes concrètes
Objectif | Événement(s) | Champs utiles | Remarques |
---|---|---|---|
Utilisateur | 4663, 5140 | Account Name / SubjectUserName | Dans 4663, c’est le compte qui a demandé l’accès NTFS. Dans 5140, c’est le compte SMB. |
Adresse IP du poste | 5140 | Network/Client/Source Address | Affiché lorsqu’il s’agit d’un accès via réseau (SMB). Pour un accès local, ce champ peut être vide ou - . |
Nom du poste | 4624 (sur le serveur ou DC) | Workstation Name | Coupler 4624 (Type 3) avec 5140 permet de lier IP ↔ Workstation. |
Chemin exact ciblé | 4663, 5145 | Object Name / Relative Target Name | 4663 remonte l’objet NTFS; 5145 est très détaillé sur la partie partage (si activé). |
Scripts PowerShell prêts à l’emploi
Configurer l’audit (local) avec auditpol.exe
# 1) Activer les sous-catégories d'audit objet et partage de fichiers
auditpol /set /subcategory:"File System" /success:enable /failure:enable
auditpol /set /subcategory:"File Share" /success:enable /failure:enable
# Optionnel (verbeux) :
# auditpol /set /subcategory:"Detailed File Share" /success:enable /failure:enable
# 2) Vérifier
auditpol /get /category:"Object Access"
Poser une SACL (Audit) sur un dossier avec PowerShell .NET
$Path = "D:\Partages\Finance"
$Identity = New-Object System.Security.Principal.NTAccount("Domain","Authenticated Users")
$Rights = [System.Security.AccessControl.FileSystemRights]::Read, `
[System.Security.AccessControl.FileSystemRights]::Write, `
[System.Security.AccessControl.FileSystemRights]::CreateFiles, `
[System.Security.AccessControl.FileSystemRights]::Delete
$Inheritance = [System.Security.AccessControl.InheritanceFlags]::ContainerInherit, `
[System.Security.AccessControl.InheritanceFlags]::ObjectInherit
$Propagation = [System.Security.AccessControl.PropagationFlags]::None
$AuditFlags = [System.Security.AccessControl.AuditFlags]::Success -bor `
[System.Security.AccessControl.AuditFlags]::Failure
$acl = Get-Acl -Path $Path
$rule = New-Object System.Security.AccessControl.FileSystemAuditRule($Identity, $Rights, $Inheritance, $Propagation, $AuditFlags)
$acl.SetAuditRule($rule)
Set-Acl -Path $Path -AclObject $acl
Variante : utilisez "Everyone"
ou un groupe AD spécifique selon votre contexte.
Collecte rapide des accès (5140 et 4663 sur 24h)
$Start = (Get-Date).AddDays(-1)
$events = Get-WinEvent -FilterHashtable @{ LogName='Security'; Id=@(5140,4663); StartTime=$Start }
$parsed = $events | ForEach-Object {
$xml = [xml]$*.ToXml()
$id = $*.Id
$time = $*.TimeCreated
$user = ($xml.Event.EventData.Data | Where-Object { $*.Name -match 'SubjectUserName|AccountName' } | Select-Object -First 1).'#text'
$ip = ($xml.Event.EventData.Data | Where-Object { $*.Name -match 'ClientAddress|SourceAddress' } | Select-Object -First 1).'#text'
$obj = ($xml.Event.EventData.Data | Where-Object { $*.Name -match 'ObjectName|ShareName|RelativeTargetName' } | Select-Object -First 1).'#text'
[pscustomobject]@{
TimeCreated = $time
EventId = $id
User = $user
ClientIP = $ip
Object = $obj
}
}
$parsed | Sort-Object TimeCreated | Export-Csv -NoTypeInformation -Encoding UTF8 "C:\Temp\Acces_Dossiers_24h.csv"
Write-Host "Rapport : C:\Temp\Acces_Dossiers_24h.csv"
Rapport quotidien (planification)
$script = "C:\Scripts\Rapport-Acces-Partages.ps1"
schtasks /create /TN "Rapport Acces Partages" /TR "powershell.exe -ExecutionPolicy Bypass -File `"$script`"" /SC DAILY /ST 07:30 /RL HIGHEST
Filtres et vues personnalisées (Event Viewer)
Vue “Accès au partage X” (ID 5140 filtré sur un partage)
Dans Event Viewer > Security, créez une Vue personnalisée et choisissez XML pour coller un filtre ciblé :
<QueryList>
<Query Id="0" Path="Security">
<Select Path="Security">
*[System[(EventID=5140) and TimeCreated[timediff(@SystemTime) <= 86400000]]]
and
*[EventData[Data[@Name='ShareName'] and (contains(Data,'\\ServeurFichiers\Finance'))]]
</Select>
</Query>
</QueryList>
Vue “Accès au dossier sensible” (ID 4663 filtré sur un chemin NTFS)
<QueryList>
<Query Id="0" Path="Security">
<Select Path="Security">
*[System[(EventID=4663) and TimeCreated[timediff(@SystemTime) <= 86400000]]]
and
*[EventData[Data[@Name='ObjectName'] and (starts-with(Data,'D:\Partages\Finance'))]]
</Select>
</Query>
</QueryList>
Ces vues réduisent drastiquement le bruit et mettent en avant les accès pertinents.
Corrélation rapide des événements
- 5140 seul suffit souvent : on y trouve l’utilisateur, le partage et le Client/Source Address (IP). Faites ensuite un
nslookup <IP>
pour récupérer le nom du poste. - 4624 (Type 3) sur le serveur : renseigne Workstation Name et l’IP, utile si 5140 ne montre que partiellement l’origine.
- HandleID (4663) : commun aux événements 4656/4663 d’une même opération; pratique pour reconstruire la séquence d’accès.
Cas particuliers et subtilités
Sessions RDS, services et comptes gérés
En environnement RDS, l’événement 4663 peut lister le serveur RDS comme “poste”. Combinez avec l’ID 4624 Type 10 (RDP) sur le serveur RDS pour remonter au poste d’origine. Pour des accès initiés par des services (comptes de service, MSA/gMSA), l’utilisateur sera le compte du service : identifiez ensuite le Client Address via 5140 pour retrouver la machine.
DFS Namespace, clusters et réplicas
Si les utilisateurs passent par un chemin DFS, les événements sont journalisés sur le serveur cible qui héberge la copie réellement accédée. Assurez-vous d’y déployer la GPO d’audit et la SACL. En cluster (Scale-Out File Server), chaque nœud journalise ses accès.
NAT, VPN, IPv6
- Si la Client Address correspond à une IP NAT (par ex. une tête de VPN), il faudra compléter avec les journaux du concentrateur VPN pour l’IP privée réelle.
- En IPv6, l’adresse peut apparaître au format compressé : prévoyez la résolution DNS inverse adaptée (PTR IPv6).
Accès local vs réseau
Un accès local (console du serveur) ne produira pas d’IP client dans 5140. Utilisez alors 4663 pour l’objet et 4624 Type 2 (logon interactif) pour l’utilisateur local.
Performance et volume de logs
- Précisez les droits audités (évitez “Full Control”) et ciblez les groupes réellement concernés.
- Excluez les comptes techniques “bruyants” (antivirus, backup) en posant l’audit sur des groupes métiers plutôt que Everyone.
- Surveillez le CPU et l’I/O lors d’un pic (déploiement “Detailed File Share”).
Taille des journaux & rétention
Augmentez la taille du journal Sécurité pour éviter l’écrasement d’événements en période d’activité intense.
# Exemple : 256 Mo pour le journal "Security"
wevtutil sl Security /ms:268435456
# Politique de rétention : "Remplacer les événements au besoin" ou "Ne jamais écraser le journal"
Bonnes pratiques : mettez en place Windows Event Forwarding (WEC/WEF) ou un SIEM (Sentinel, Splunk, etc.) pour centraliser, indexer et conserver sur la durée (exigences internes / conformité).
Modèle de rapport
Un CSV minimal mais exploitable peut contenir :
TimeCreated;EventId;User;ClientIP;Workstation;Object;Action
2025-09-30 09:41:12;5140;jdupont;10.20.33.45;LAPTOP-1542;\\SRV-FIC\Finance;ShareOpen
2025-09-30 09:41:15;4663;jdupont;10.20.33.45;LAPTOP-1542;D:\Partages\Finance\Budget.xlsx;ReadData
2025-09-30 09:43:02;4663;jdupont;10.20.33.45;LAPTOP-1542;D:\Partages\Finance\Budget.xlsx;WriteData
Dépannage (check‑list)
- Je ne vois aucun 4663 : la Stratégie d’audit est‑elle active et une SACL posée sur le dossier ?
- Je ne vois pas d’IP client : cherchez les 5140 (File Share) et les 4624 Type 3 sur le serveur de fichiers.
- Trop d’événements : resserrez la SACL sur les groupes et les droits nécessaires; n’activez “Detailed File Share” que pour une enquête.
- Nom du poste manquant : utilisez 4624 (Workstation Name) et la résolution DNS inverse de l’IP collectée en 5140.
- DFS/cluster : vérifiez que la GPO et la SACL sont appliquées sur tous les nœuds/serveurs cibles.
FAQ
Peut‑on tracer l’application qui a ouvert le fichier ?
Souvent oui via 4663, grâce au Process Name lorsque l’information est disponible. Sur un accès SMB pur, la corrélation peut être moins évidente.
Comment différencier lecture et modification ?
Regardez la valeur “Accesses” dans 4663 (ex. ReadData, WriteData, AppendData, Delete). Combinez plusieurs 4663 partageant le même Handle ID pour reconstituer l’opération.
Et si l’utilisateur utilise son propre PC non joint au domaine ?
Vous aurez quand même l’IP et, via 4624/5140, le compte (dommaine ou local) utilisé pour s’authentifier sur le partage.
La corbeille/Office crée des événements “fantômes”
Les applications (Office, AV, indexation) ouvrent brièvement les fichiers. Filtrez les processus connus ou les accès ReadAttributes si vous voulez des événements plus “métiers”.
Bonnes pratiques de mise en œuvre
- Principe de moindre bruit : auditez ce qui est utile (dossiers sensibles, opérations critiques) plutôt que tout le serveur.
- Segmentez : différenciez les dossiers sensibles (lecture/écriture/suppression auditées) des dossiers “ouverts” (lecture seule).
- Qualité des noms : imposez une résolution DNS fiable (A/PTR) pour traduire IP ↔ noms de postes.
- Centralisez : intégrez à un SIEM/WEF; créez des alertes (ex. 4663 Delete sur Finance).
- Documentez : conserver une “fiche d’audit” par partage (chemin NTFS, SACL, GPO associée, taille de log, contacts).
Exemple de procédure complète (du zéro au rapport)
- Configurer les sous‑catégories avec
auditpol
(File System, File Share). - Augmenter le journal Sécurité à 256 Mo minimum (
wevtutil sl Security /ms:268435456
). - Poser la SACL sur
D:\Partages\Finance
(groupe Authenticated Users, Succès/Échecs, Read/Write/Delete, héritage). - Créer une Vue personnalisée (4663 sur
D:\Partages\Finance
, 5140 sur\\SRV-FIC\Finance
). - Contrôler : ouvrir/modifier/supprimer un fichier test → vérifier que 4663/5140 sont bien générés.
- Automatiser la collecte via le script PowerShell d’extraction et planifier un export quotidien (
Export-Csv
). - Option SIEM : créer une règle d’alerte (suppression, écriture hors horaires, accès depuis IP anormale).
Récapitulatif visuel des IDs utiles
ID | Nom | Utilité pour la traçabilité | Note |
---|---|---|---|
5140 | Network share object accessed | Donne ShareName, Share Path, Client/Source Address, utilisateur | Filtre simple pour lier utilisateur ↔ IP |
4663 | An attempt was made to access an object | Donne l’objet NTFS, l’accès (Read/Write/Delete) et l’utilisateur | Très fréquent : limiter la SACL |
4624 | Account successfully logged on | Donne Workstation Name, Logon Type (3 = SMB, 10 = RDP) | Complément pour retrouver le poste |
5145 | Detailed File Share | Détails très fins sur l’accès partagé | À activer seulement pour l’investigation |
4656/4658 | Handle requested/closed | Cohésion avec 4663 via Handle ID | Utile pour réassembler une opération |
Informations complémentaires utiles
- Quota de journaux : augmentez la taille du journal Sécurité (au moins 256 Mo) pour éviter l’écrasement d’événements.
- Filtrer par Handle ID : dans un 4663, le champ Handle ID est commun aux événements 4656/4663 d’une même opération; cela aide à reconstituer la séquence d’accès.
- Corrélation rapide : dans beaucoup de cas, l’ID 5140 seul suffit : il mentionne le chemin UNC, l’utilisateur et l’IP du client.
- Scénarios RDS ou services : pour un accès initié par un service ou une session Remote Desktop, le Workstation Name peut être le serveur RDS; combinez alors 4624 type 10 (RDP) pour retrouver le poste d’origine.
- Alerte en temps réel : utilisez l’Assistant de tâches de l’Observateur d’événements ou une solution SIEM pour déclencher un courriel ou une action PowerShell dès qu’un ID 5140/4663 critique est journalisé.
Conclusion
En activant l’audit aux bons niveaux (stratégie, partage, dossier) puis en filtrant les événements clés 4663 et/ou 5140, vous disposez, pour chaque accès, du nom d’utilisateur, de l’adresse IP et très souvent du nom NetBIOS/Workstation du poste ayant accédé au dossier partagé. L’ensemble s’automatise aisément avec PowerShell et s’intègre parfaitement à un SIEM ou à Windows Event Forwarding pour une traçabilité pérenne.