voit käyttää file system object access-tapahtuman valvontaa tunnistaaksesi tietyn käyttäjän, joka on luonut, poistanut tai muokannut tiettyä tiedostoa. Tässä artikkelissa, näytämme, miten määrittää tapahtumien valvonta tiedostoja jaetussa verkkokansiossa Windows Server 2016. Kun olet määrittänyt valvonnan, voit käyttää Tapahtumienvalvonnan tietoja löytääksesi käyttäjän, joka poisti tietyn tiedoston tiedostopalvelimelta.
miten tiedostojen ja kansioiden käytön Valvontakäytäntö otetaan käyttöön Windowsissa?
oletuksena tiedostojärjestelmän objektien käyttöoikeuksien tarkastus ei ole käytössä Windows Server-käyttöjärjestelmässä. Voit ottaa käyttöön ja määrittää tarkastusasetuksia ryhmäkäytännön avulla. Jos haluat ottaa tarkastuskäytännöt käyttöön useilla palvelimilla tai tietokoneilla, voit käyttää toimialueen GPO: ita (konfiguroitavissa käyttämällä gpmc.msc
mmc-konsolia). Jos haluat määrittää vain yhden palvelimen valvonnan, voit käyttää paikallista ryhmäkäytäntöeditoria.
- avaa paikallisen Ryhmäkäytäntöeditorin konsoli–
gpedit.msc
; - Siirry GPO-osioon, jossa on kehittyneet tarkastuskäytännöt: Windows Settings – > Security Settings – > Advanced Audit Policy Configuration – > Object Access;
- Open the Audit File System policy and determine that you want to log only successed access events to file system objects (Configure the following audit events -> Success);
voit myös ottaa käyttöön paikallisten objektien käytön valvonnan käyttämällä Windowsin asetukset – > suojausasetukset – > paikallinen käytäntö – > Tarkastuskäytäntö. Tiedostojärjestelmän Tarkastuskäytännön käyttäminen on kuitenkin suotavaa, koska se seuraa vain NTFS-käyttöoikeustapahtumia.
- Tallenna muutokset ja päivitä paikalliset Ryhmäkäytäntöasetuksesi komennolla
gpupdate /force
.
jaetussa kansiossa
nyt sinun on määritettävä valvonta sen share-verkkokansion ominaisuuksissa, johon haluat seurata käyttöoikeutta. Suorita File Explorer ja avaa kansion ominaisuudet. Mene Turvavälilaskuun. Napsauta Lisäasetukset-painiketta – > siirry valvonta-välilehteen.
jos näkyviin tulee viesti ”sinun on oltava järjestelmänvalvoja tai sinulle on annettu asianmukaiset oikeudet tarkastella tämän objektin tarkastusominaisuuksia”, napsauta Jatka-painiketta.
napsauta Lisää-painiketta määrittääksesi käyttäjän tai ryhmän, jolle haluat tallentaa tarkastustapahtumia. Jos haluat seurata kaikkien käyttäjien käyttöoikeustapahtumia, määritä kaikki-ryhmä.
sitten sinun täytyy määrittää, mitä käyttöoikeuksia käytetään objektin pitäisi olla kirjautunut. Jos haluat tallentaa tapahtumalokiin vain tiedostojen poistotapahtumia, napsauta Näytä lisäoikeudet-painiketta. Jätä tapahtumaluettelossa vain kansioiden ja tiedostojen poistotapahtumien valvonta-Poista ja poista alikansiot ja tiedostot.
$Path = "E:\Public"
$AuditChangesRules = New-Object System.Security.AccessControl.FileSystemAuditRule('Everyone', 'Delete,DeleteSubdirectoriesAndFiles', 'none', 'none', 'Success')
$Acl = Get-Acl -Path $Path
$Acl.AddAuditRule($AuditChangesRules)
Set-Acl -Path $Path -AclObject $Acl
nyt, jos käyttäjä poistaa minkä tahansa tiedoston tai kansion jaetussa verkkokansiossa, tiedostojärjestelmä – > Audit Success file delete event näkyy Tietoturvalokissa Tapahtumatunnus 4663 Microsoft Windows security auditing-lähteestä.
avaa Tapahtumienvalvojan mmc-konsoli (eventvwr.msc
), laajenna Windowsin lokit -> Suojausosa. Käytä EventID 4663: n tapahtumalokisuodatinta.
Avaa kaikki jäljellä olevat tapahtumat Tapahtumienvalvonnassa. Kuten näet, se sisältää tietoja nimi poistetun tiedoston, tilin käyttäjän, joka poisti tiedoston ja prosessin nimi.
An attempt was made to access an object.Subject:Security ID: CORP\jsmithAccount Name: jsmithAccount Domain: CORPLogon ID: 0x32B12627Object:Object Server: SecurityObject Type: FileObject Name: E:\Distr\Backup.rarHandle ID: 0x7bc4Resource Attributes: S:AIProcess Information:Process ID: 0x4Process Name:Access Request Information:Accesses: DELETEAccess Mask: 0x10000
kun tiedostonkäytön valvontakäytäntö on otettu käyttöön, löydät sen Suojauslokista :
- kuka poisti tiedoston jaetusta verkkokansiosta ja milloin se tapahtui;
- millä sovelluksella (prosessilla) tiedosto poistettiin;
- mikä on palautettavan varmuuskopion päivämäärä.
miten kirjoittaa tiedoston Poistotapahtumia SQL-tietokantaan (MySQL/MSSQL)?
vaikka poistettujen tiedostojen tarkastus olisikin käytössä, voi lokeista olla hankala löytää jotain. Ensinnäkin on melko vaikea löytää tiettyä merkintää tuhansien tapahtumien joukosta (Windowsissa ei ole kätevää työkalua etsiä tapahtumaa joustavalla suodattimella). Toiseksi, jos tiedosto on poistettu kauan sitten, tämä tapahtuma voi olla poissa lokit, koska se korvattiin uusia tapahtumia.
voit tallentaa kaikki tiedostojen poistotapahtumat SQL-tietokantaan. Voit tallentaa tapahtumia Microsoft SQL Server -, Elasticsearch-tai MySQL/MariaDB-tietokannoilla.
tässä esimerkissä näytämme, miten auditointitapahtumat kirjataan erilliseen tietokantataulukkoon MySQL: llä. Käytän seuraavaa taulukkomuotoa:
- palvelimen nimi;
- poistetun tiedoston nimi;
- päivämäärä ja kellonaika;
- tiedoston poistaneen käyttäjän nimi.
MySQL-kysely tämän taulukon luomiseksi näyttää tältä:
CREATE TABLE deleted_items (id INT NOT NULL AUTO_INCREMENT, server VARCHAR(100), file_name VARCHAR(255), dt_time DATETIME, user_name VARCHAR(100), PRIMARY KEY (ID));
jos haluat käyttää Microsoft SQL Server-tietokantaa, tutustu artikkeliin ” How to run a MSSQL Server Query from PowerShell?”
jos haluat saada EventID 4663: n tapahtumat nykyisen päivän Suojauslokista, voit käyttää seuraavaa PowerShell-komentosarjaa:
$today = get-date -DisplayHint date -UFormat %Y-%m-%d
Get-WinEvent -FilterHashTable @{LogName="Security";starttime="$today";id=4663} | Foreach {
$event = $_.ToXml()
if($event)
{
$Time = Get-Date $_.TimeCreated -UFormat "%Y-%m-%d %H:%M:%S"
$File = $event.Event.EventData.Data."#text"
$User = $event.Event.EventData.Data."#text"
$Computer = $event.Event.System.computer
}
}
the next PowerShell script will write the data you get to the MySQL database on a remote server (with the IP address 10.1.1.13):
Add-Type –Path 'C:\Program Files (x86)\MySQL\MySQL Connector Net 6.9.8\Assemblies\v4.5\MySql.Data.dll'
$Connection = @{ConnectionString='server=10.1.1.13;uid=posh;pwd=P@ssw0rd;database=aduser'}
$Connection.Open()
$sql = New-Object MySql.Data.MySqlClient.MySqlCommand
$sql.Connection = $Connection
$today = get-date -DisplayHint date -UFormat %Y-%m-%d
Get-WinEvent -FilterHashTable @{LogName="Security";starttime="$today";id=4663} | Foreach {
$event = $_.ToXml()
if($event)
{
$Time = Get-Date $_.TimeCreated -UFormat "%Y-%m-%d %H:%M:%S"
$File = $event.Event.EventData.Data."#text"
$File = $File.Replace('\','|')
$User = $event.Event.EventData.Data."#text"
$Computer = $event.Event.System.computer
$sql.CommandText = "INSERT INTO deleted_items (server,file_name,dt_time,user_name ) VALUES ('$Computer','$File','$Time','$User')"
$sql.ExecuteNonQuery()
}
}
$Reader.Close()
$Connection.Close()