Version 1.2.1.0 of the documentation is no longer actively maintained. The site that you are currently viewing is an archived snapshot.
SQL ಸರ್ವರ್ನೊಂದಿಗೆ ಭದ್ರತಾ ವಿಶ್ಲೇಷಣೆ ಕಾರ್ಯಪ್ರವಾಹ
For AI agents: a documentation index is available at /llms.txt; a markdown version of this page is available at /v1.2.1.0/kn/docs/examples/security-analysis-sql/index.md.
ಈ ಉದಾಹರಣೆ ಭದ್ರತಾ ವಿಶ್ಲೇಷಣೆಯ ಪ್ರಾಯೋಗಿಕ ಕಾರ್ಯಪ್ರವಾಹವನ್ನು ತೋರಿಸುತ್ತದೆ: Convert-DNSDebugLogFile ಬಳಸಿ DNS ಡಿಬಗ್ ಲಾಗ್ ಅನ್ನು ಪಾರ್ಸ್ ಮಾಡಿ, ರಚಿಸಲಾದ CSV ಅನ್ನು SQL ಸರ್ವರ್ಗೆ ಆಮದು ಮಾಡಿ, ಮತ್ತು ಅಸಾಮಾನ್ಯವಾಗಿ ಹೆಚ್ಚಿನ TXT ದಾಖಲೆ ಹುಡುಕಾಟಗಳನ್ನು ಹೈಲೈಟ್ ಮಾಡುವ ಪ್ರಶ್ನೆಯನ್ನು ನಡೆಸಿ.
ಉತ್ತಮ ಪರಸ್ಪರ ಕಾರ್ಯಕ್ಷಮತೆಯಿಗಾಗಿ, ಈ ಉದಾಹರಣೆ -OutputCulture 'sv-SE' ಬಳಸಿ ಟೈಮ್ಸ್ಟ್ಯಾಂಪ್ಗಳನ್ನು ISO-ಹಾಗೆ ಫಾರ್ಮ್ಯಾಟ್ನಲ್ಲಿ ಬರೆಯುತ್ತದೆ.
ಅಗತ್ಯವಿರುವ ಮೋಡ್ಯೂಲ್ಗಳು
ಈ ಉದಾಹರಣೆ ಕೆಳಗಿನ PowerShell ಮೋಡ್ಯೂಲ್ಗಳನ್ನು ಬಳಸುತ್ತದೆ:
DNSServer.DebugLogParserSqlServer
ಅವಶ್ಯಕತೆ ಇದ್ದರೆ ಇನ್ಸ್ಟಾಲ್ ಮಾಡಿ:
Install-Module -Name DNSServer.DebugLogParser -Scope CurrentUser
Install-Module -Name SqlServer -Scope CurrentUser
ದೃಶ್ಯಾವಳಿ
ಪಾರ್ಸ್ ಮಾಡಿದ DNS ಡಿಬಗ್ ಲಾಗ್ ಡೇಟಾವನ್ನು SQL ಸರ್ವರ್ಗೆ ಸ್ಥಳಾಂತರಿಸಲು ಈ ಕಾರ್ಯಪ್ರವಾಹವನ್ನು ಬಳಸಿ, ಇದರಿಂದ ನೀವು:
- ದೊಡ್ಡ ಡೇಟಾಸೆಟ್ಗಳನ್ನು ಪರಿಣಾಮಕಾರಿಯಾಗಿ ಹುಡುಕಬಹುದು
- ಪುನರಾವರ್ತನೀಯ ಪತ್ತೆ ಪ್ರಶ್ನೆಗಳನ್ನು ರಚಿಸಬಹುದು
- ಹಲವಾರು DNS ಸರ್ವರ್ಗಳ ಚಟುವಟಿಕೆಯನ್ನು ಸಂಯೋಜಿಸಬಹುದು
- ನಂತರದ ತನಿಖೆಗೆ ಸಾಮಾನ್ಯೀಕೃತ ಡೇಟಾವನ್ನು ಉಳಿಸಬಹುದು
ಪರಿವರ್ತನೆ ಹಂತದ ಔಟ್ಪುಟ್
Convert-DNSDebugLogFile ನೇರವಾಗಿ SQL ಸರ್ವರ್ಗೆ ಬರೆಯುವುದಿಲ್ಲ. ಮೊದಲು ಇದು CSV ಫೈಲ್ ರಚಿಸುತ್ತದೆ. ಆ CSV ಫೈಲ್ ಅನ್ನು ಡೇಟಾಬೇಸ್ಗೆ ಆಮದು ಮಾಡಲಾಗುತ್ತದೆ.
ಈ ಉದಾಹರಣೆಯಲ್ಲಿ:
- ಇನ್ಪುಟ್ ಲಾಗ್:
C:\Administration\Logs\DNS\dns.log - ರಚಿಸಲಾದ CSV:
C:\Administration\Logs\DNS\dns.csv - ಗಮ್ಯಸ್ಥಾನ ಟೇಬಲ್:
dbo.DNSQueries
ಗಮ್ಯಸ್ಥಾನ ಟೇಬಲ್ ರಚಿಸಿ
ಗಮ್ಯಸ್ಥಾನ ಟೇಬಲ್ ರಚಿಸಲು SQL ಸರ್ವರ್ನಲ್ಲಿ ಕೆಳಗಿನ ಸ್ಟೇಟ್ಮೆಂಟ್ ಅನ್ನು ಒಮ್ಮೆ ಚಲಾಯಿಸಿ.
IF OBJECT_ID('dbo.DNSQueries', 'U') IS NULL
BEGIN
CREATE TABLE dbo.DNSQueries (
DateTime datetime2(0) NOT NULL,
ThreadId int NULL,
Context nvarchar(20) NULL,
PacketId int NULL,
Protocol nvarchar(10) NULL,
Direction nvarchar(10) NULL,
ClientIP nvarchar(64) NULL,
Xid nvarchar(16) NULL,
Type nvarchar(16) NULL,
Opcode nvarchar(16) NULL,
FlagsHex nvarchar(16) NULL,
FlagsChar nvarchar(16) NULL,
ResponseCode nvarchar(32) NULL,
QuestionType nvarchar(32) NULL,
QuestionName nvarchar(512) NULL,
Information nvarchar(max) NULL,
Details nvarchar(max) NULL,
ComputerName nvarchar(256) NULL
);
END;
ಲಾಗ್ ಅನ್ನು ಪರಿವರ್ತಿಸಿ ಮತ್ತು CSV ಅನ್ನು ಆಮದು ಮಾಡಿ
ಕೆಳಗಿನ PowerShell ಉದಾಹರಣೆ ಸಂಪೂರ್ಣ ಕಾರ್ಯಪ್ರವಾಹವನ್ನು ನಿರ್ವಹಿಸುತ್ತದೆ:
- ಅಗತ್ಯವಿರುವ ಮೋಡ್ಯೂಲ್ಗಳನ್ನು ಆಮದು ಮಾಡಿಕೊಳ್ಳಿ
- DNS ಡಿಬಗ್ ಲಾಗ್ ಅನ್ನು CSV ಗೆ ಪರಿವರ್ತಿಸಿ
- ರಚಿಸಲಾದ CSV ಅನ್ನು ಲೋಡ್ ಮಾಡಿ
- ಸಾಲುಗಳನ್ನು SQL ಸರ್ವರ್ಗೆ ಬಲ್ಕ್ ಆಮದು ಮಾಡಿ
# Requires -Modules DNSServer.DebugLogParser, SqlServer
Import-Module -Name DNSServer.DebugLogParser -ErrorAction Stop
Import-Module -Name SqlServer -ErrorAction Stop
$logPath = 'C:\Administration\Logs\DNS\dns.log'
$csvPath = 'C:\Administration\Logs\DNS\dns.csv'
$serverInstance = 'SQLServer'
$databaseName = 'DNSLogs'
$delimiter = ';'
$createTableSql = @'
IF OBJECT_ID('dbo.DNSQueries', 'U') IS NULL
BEGIN
CREATE TABLE dbo.DNSQueries (
DateTime datetime2(0) NOT NULL,
ThreadId int NULL,
Context nvarchar(20) NULL,
PacketId int NULL,
Protocol nvarchar(10) NULL,
Direction nvarchar(10) NULL,
ClientIP nvarchar(64) NULL,
Xid nvarchar(16) NULL,
Type nvarchar(16) NULL,
Opcode nvarchar(16) NULL,
FlagsHex nvarchar(16) NULL,
FlagsChar nvarchar(16) NULL,
ResponseCode nvarchar(32) NULL,
QuestionType nvarchar(32) NULL,
QuestionName nvarchar(512) NULL,
Information nvarchar(max) NULL,
Details nvarchar(max) NULL,
ComputerName nvarchar(256) NULL
);
END
'@
Convert-DNSDebugLogFile `
-InputFile $logPath `
-ComputerName 'DNS01' `
-OutputType CSV `
-OutputFile $csvPath `
-Delimiter $delimiter `
-OutputCulture 'sv-SE'
$rows = Import-Csv -Path $csvPath -Delimiter $delimiter
if (-not $rows) {
throw "The generated CSV file '$csvPath' does not contain any rows."
}
$dataTable = [System.Data.DataTable]::new()
foreach ($columnName in $rows[0].PSObject.Properties.Name) {
$null = $dataTable.Columns.Add($columnName, [string])
}
foreach ($row in $rows) {
$dataRow = $dataTable.NewRow()
foreach ($column in $dataTable.Columns) {
$columnName = $column.ColumnName
$dataRow[$columnName] = $row.$columnName
}
$null = $dataTable.Rows.Add($dataRow)
}
$connectionString = "Server=$serverInstance;Database=$databaseName;Integrated Security=True"
$connection = [System.Data.SqlClient.SqlConnection]::new($connectionString)
try {
$connection.Open()
$command = $connection.CreateCommand()
$command.CommandText = $createTableSql
$null = $command.ExecuteNonQuery()
$bulkCopy = [System.Data.SqlClient.SqlBulkCopy]::new($connection)
$bulkCopy.DestinationTableName = 'dbo.DNSQueries'
foreach ($column in $dataTable.Columns) {
$null = $bulkCopy.ColumnMappings.Add($column.ColumnName, $column.ColumnName)
}
$bulkCopy.WriteToServer($dataTable)
}
finally {
$connection.Dispose()
}
ಅನುಮಾನಾಸ್ಪದ TXT ದಾಖಲೆ ಚಟುವಟಿಕೆಗಾಗಿ ಪ್ರಶ್ನೆ
ಡೇಟಾ SQL ಸರ್ವರ್ನಲ್ಲಿ ಇದ್ದಾಗ, ನೀವು ಅಸಾಮಾನ್ಯವಾಗಿ ಹೆಚ್ಚಿನ TXT ದಾಖಲೆ ಪ್ರಶ್ನೆಗಳನ್ನು ಮಾಡುವ ಕ್ಲೈಂಟ್ಗಳನ್ನು ಹುಡುಕಬಹುದು.
SELECT
ComputerName,
ClientIP,
QuestionName,
COUNT(*) AS QueryCount
FROM dbo.DNSQueries
WHERE QuestionType = 'TXT'
GROUP BY
ComputerName,
ClientIP,
QuestionName
HAVING COUNT(*) > 100
ORDER BY QueryCount DESC;
ನೀವು PowerShell ನಿಂದ ಪ್ರಶ್ನೆಯನ್ನು ನಡೆಸಲು ಇಚ್ಛಿಸಿದರೆ, SqlServer ಮೋಡ್ಯೂಲ್ನಿಂದ Invoke-Sqlcmd ಬಳಸಿ:
$query = @'
SELECT
ComputerName,
ClientIP,
QuestionName,
COUNT(*) AS QueryCount
FROM dbo.DNSQueries
WHERE QuestionType = 'TXT'
GROUP BY
ComputerName,
ClientIP,
QuestionName
HAVING COUNT(*) > 100
ORDER BY QueryCount DESC;
'@
Invoke-Sqlcmd `
-ServerInstance 'SQLServer' `
-Database 'DNSLogs' `
-Query $query
TXT ಪ್ರಶ್ನೆಗಳು ಆಸಕ್ತಿದಾಯಕವಾಗಿರುವ ಕಾರಣ
ಹೆಚ್ಚಿನ ಪ್ರಮಾಣದ TXT ದಾಖಲೆ ಹುಡುಕಾಟಗಳನ್ನು ಪರಿಶೀಲಿಸುವುದು ಉಪಯುಕ್ತ, ಏಕೆಂದರೆ ಅವು ಸೂಚಿಸಬಹುದು:
- DNS ಟನ್ನಲಿಂಗ್
- DNS ಮೂಲಕ ಡೇಟಾ ಹೊರಹೋಗುವಿಕೆ
- ಮ್ಯಾಲ್ವೇರ್ ಅಥವಾ ಉಪಕರಣಗಳಿಂದ TXT ದಾಖಲೆಗಳ ದುರುಪಯೋಗ
- ಅಸಾಮಾನ್ಯವಾಗಿ ಶಬ್ದಮಯ ಅಥವಾ ತಪ್ಪಾಗಿ ಸಂರಚಿತ ಕ್ಲೈಂಟ್ಗಳು
ಈ ಪ್ರಶ್ನೆ ಕೇವಲ ಪ್ರಾರಂಭಬಿಂದುವಾಗಿದೆ. ಉತ್ಪಾದನೆಯಲ್ಲಿ, ನೀವು ಗಡಿ ಮೌಲ್ಯವನ್ನು ಹೊಂದಿಸಬೇಕು ಮತ್ತು ನಿಮ್ಮ ಪರಿಸರಕ್ಕೆ ಹೊಂದುವಂತೆ ಫಿಲ್ಟರ್ಗಳನ್ನು ಸೇರಿಸಬೇಕು.
ಕಾರ್ಯಾಚರಣಾ ಟಿಪ್ಪಣಿಗಳು
Import-Csvಸಂಪೂರ್ಣ ಫೈಲ್ ಅನ್ನು ಮೆಮೊರಿಯಲ್ಲಿ ಓದುತ್ತದೆ. ಬಹಳ ದೊಡ್ಡ ಲಾಗ್ ರಫ್ತುಗಳಿಗೆ, ಸಂಪೂರ್ಣDataTableರಚಿಸುವ ಬದಲು ಸ್ಟ್ರೀಮಿಂಗ್ ವಿಧಾನವನ್ನು ಪರಿಗಣಿಸಿ.- ಪರಿವರ್ತನೆ ಹಂತದಲ್ಲಿ
-ComputerNameಉಳಿಸಿ, ಇದರಿಂದ ಕೇಂದ್ರಿತ ಆಮದು ನಂತರ ದಾಖಲೆಗಳನ್ನು ಗುರುತಿಸಬಹುದು. - ರಫ್ತು ಮತ್ತು ಆಮದು ಸಮಯದಲ್ಲಿ ಸತತ ಡಿಲಿಮಿಟರ್ ಮತ್ತು ಸಂಸ್ಕೃತಿಯನ್ನು ಬಳಸಿ.
- ದೀರ್ಘಕಾಲಿಕ ಸಂಗ್ರಹಣೆಗೆ ಈ ಕಾರ್ಯಪ್ರವಾಹವನ್ನು ಬಳಸುವ ಮೊದಲು SQL ಸರ್ವರ್ನಲ್ಲಿ ಉಳಿಸುವಿಕೆ, ಸೂಚ್ಯಂಕ ಮತ್ತು ಪ್ರವೇಶ ನಿಯಂತ್ರಣವನ್ನು ಪರಿಶೀಲಿಸಿ.