Путь до лог файлов MS ISA Server
Программа Internet Access Monitor для MS ISA Server работает с лог файлами ISA Server 2000, ISA Server 2004 и ISA Server 2006(Как с текстовыми логами, так и с логами сохраняемыми в формате MSDE). В процессе работы программа ищет лог файлы вида *FWS*.*, IP*.log, *WEB*.*
Например, FWSEXTD20030408.log
Обычно лог файлы прокси сервера MS ISA Server находятся в каталоге C:\Program Files\Microsoft ISA Server\ISAlogs.
Настройка Microsoft ISA Server 2004/2006
Для того, чтобы Microsoft ISA Server 2004/2006 и Internet Access Monitor могли работать совместно необходимо его настроить таким образом, как показано ниже:





В том случае если Microsoft ISA Server 2004/2006 хранит лог файлы в формате MSDE(по умолчанию), то Internet Access Monitor должен быть установлен на том же компьютере. Это необходимо для того чтобы программа имела возможность получить доступ к MSDE, который требуется для обработки .MDF лог файлов.
Импорт лог файлов из MSDE баз данных с удаленной машины
Начиная с версии 3.8, программа Internet Access Monitor для MS ISA Server позволяет импортировать лог файлы ISA Server, которые создаются и хранятся в формате MSDE(по умолчанию). Ниже представлены пошаговые инструкции, которые необходимо выполнить перед началом импорта. Если Internet Access Monitor и Microsoft ISA Server работают на одном компьютере, то ничего из нижеизложенного выполнять не нужно!
Важное замечание о безопасности
Данные инструкции носят информационный характер и не должны рассматриваться как рекомендации. Следует понимать, что некоторые из представленных ниже шагов могут снизить защищенность компьютера, на котором работает MS ISA Server. Компания Red Line Software не несет и не может нести какой-либо ответственности за возможный причиненный и не причиненный ущерб от применения данных инструкций.
Конфигурирование MS ISA Server
Шаг 1. Предоставление сетевого доступа к папке ISALogs
Для того чтобы IAM мог импортировать лог файлы с удаленный машины, первое что необходимо сделать – это расшарить папку с лог файлами MS ISA Server. Рекомендуется использовать стандартное имя ISALogs. В целях повышения конфиденциальности данных, можно сделать сетевое имя невидимым добавив в конце знак «$» - ISALogs$
Обязательно следует проверить доступность сетевого имени, выполнив на компьютере, на котором будет производиться импорт, команду: \\ServerName\ISALogs. Если список файлов виден, то все сделано верно.
Шаг 2. Предоставление доступа к MSDE по протоколу TCP/IP
Коммуникация MSDE и компьютера, с которого будет производиться импорт лог файлов, осуществляется по протоколу TCP/IP. По умолчанию данный способ коммуникации запрещен на том экземпляре MSDE, который устанавливается вместе с MS ISA Server. Соответственно, необходимо разрешить его. Для этого следует запустить программу SVRNETCN.exe, которая находится в каталоге "X:\Program Files\Microsoft SQL Server\80\Tool\Binn\", где X – это имя диска, на котором стоит MS ISA Server.
В появившемся окне следует разрешить протокол TCP/IP. Затем выбрать его и, нажав кнопку Properties, убедиться что указан порт 1433:
Шаг 3. Создание правила, разрешающего доступ к компьютеру ISA Server по протоколам Microsoft SQL
Internet Access Monitor будет пытаться устанавливать соединение с компьютером, на котором работает MSDE. ISA Server, по умолчанию, блокирует доступ такого рода. Поэтому необходимо создать специальное правило, устраняющее данную проблему. Например, такое:
Но лучше включить компьютер, с которого будет осуществляться импорт в перечень «Remote Management Computers» и создать такое правило:
Шаг 4. Предоставление прав на чтение данных из баз данных MSDE
Если импорт лог файлов осуществляется пользователем, входящим в группу администраторов на компьютере ISA Server, то никаких дополнительных прав предоставлять нет необходимости. В противном случае, следует применить следующую последовательность действий:
- Перейти на компьютер с ISA Server
- Набрать Visual Basic скрипт, представленный ниже и сохранить его в любом месте на диске. Например, с именем isamsde.vbs
- Отредактировать скрипт согласно инструкциям представленным ниже
- Запустить скрипт на выполнение командой: cscript.exe isamsde.vbs
Шаг 5. Перезапуск сервисов
Для успешного применения сделанных изменений, следует ОБЯЗАТЕЛЬНО остановить и затем снова запустить службы Microsoft Firewall и Microsoft Data Engine.
Внимание! Следует понимать, что на время перезапуска данных сервисов, доступ в интернет для пользователей сети будет невозможен.
Скрипт
Ниже представлен скрипт, предоставляющий доступ к MSDE базам данных определенному пользователю или их группе. Внимание! В скрипте заведомо заложена ошибка, а именно там не указан аккаунт, для которого предоставляются разрешения. Поэтому перед запуском следует открыть скрипт в любом редакторе и вставить реальное имя пользовательского аккаунта или группы пользователей, которые будет осуществлять импорт лог файлов с удаленной машины. После внесения изменений следует удалить из скрипта комментарий, из-за которого возникает ошибка компиляции и запустить его на исполнение.
Копию данного скрипта можно скачать по ссылке: http://www.Redline-Software.com/upload/products/iam/isamsde.vbs
'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
' THIS CODE IS MADE AVAILABLE AS IS, WITHOUT WARRANTY OF ANY KIND. THE ENTIRE
' RISK OF THE USE OR THE RESULTS FROM THE USE OF THIS CODE REMAINS WITH THE
' USER. USE AND REDISTRIBUTION OF THIS CODE, WITH OR WITHOUT MODIFICATION, IS
' HEREBY PERMITTED.
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
' This script grants access to all MSDE log databases for specified user
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
Option Explicit
Main
Sub Main
Dim shell ' A WshShell object
Dim serverName ' A String
Dim cn ' An ADODB Connection object
Dim rs ' An ADODB Recordset object
Dim cmd ' An ADODB Command object
Dim cmdText ' A String
Dim dbNamesCounter ' A Snteger
Dim dbNames(1000) ' An Array
Dim dbUser ' A String
Dim itemIndex ' A Integer
!!!!!Replace the variable value below with a real account or group name!. Then delete this line !!!!
dbUser = "SERVER\User"
WScript.Echo "Starting..."
On Error Resume Next
Set shell = CreateObject("WScript.Shell")
If Err.Number <> 0 Then
ReportError "creating the WshShell object."
WScript.Quit
End If
On Error GoTo 0
If LCase(Right(WScript.FullName, 11)) <> "cscript.exe" Then
WScript.Echo "Usage:" & VbCrLf _
& " This script can be run from a command prompt " & VbCrLf _
& " by entering the following command:" & VbCrLf _
& " Cscript " & WScript.ScriptName
WScript.Quit
End If
' Get the name of the local ISA Server computer.
On Error Resume Next
serverName = shell.ExpandEnvironmentStrings("%ComputerName%")
If Err.Number <> 0 Then
ReportError "reading the %ComputerName% environment variable."
WScript.Quit
End If
On Error GoTo 0
' Create and open an ADODB Connection object.
Set cn = CreateObject("ADODB.Connection")
cn.ConnectionTimeout = 25
cn.Provider = "SQLOLEDB"
cn.Properties("Data Source").Value = serverName & "\MSFW"
cn.Properties("Integrated Security").Value = "SSPI"
On Error Resume Next
cn.Open
If Err.Number <> 0 Then
ReportError "opening a database connection."
WScript.Quit
End If
' Create an ADODB Command object.
On Error Resume Next
Set cmd = CreateObject("ADODB.Command")
If Err.Number <> 0 Then
ReportError "creating a Command object."
WScript.Quit
End If
Set cmd.ActiveConnection = cn
On Error GoTo 0
' Create and open an ADODB Recordset object to get the collection
' of active databases.
Set rs = CreateObject("ADODB.Recordset")
cmdText = "SELECT name FROM master.dbo.sysdatabases WHERE (name like 'ISALOG_%') or (name like 'model')"
On Error Resume Next
rs.Open cmdText, cn
If Err.Number <> 0 Then
ReportError "selecting active databases list."
WScript.Quit
End If
On Error GoTo 0
' Iterate through the databases list, fill array of database names
rs.MoveFirst
dbNamesCounter = 0
Do While Not rs.EOF
dbNames(dbNamesCounter) = rs("name")
dbNamesCounter = dbNamesCounter + 1
rs.MoveNext
Loop
rs.Close
' Iterate through the databases list, granting access
For itemIndex = 0 To UBound(dbNames)
If Not(dbNames(itemIndex)) = Empty Then
GrantUserAccessToDB cmd, dbNames(itemIndex), dbUser
End If
Next
WScript.Echo "Done."
End Sub
' Grants access to database for specified user
Sub GrantUserAccessToDB(cmd, dbName, dbUser)
WScript.Echo "Updating " & dbName & " ..."
cmd.CommandText = "use " & dbName
WScript.Echo " >" & cmd.CommandText
On Error Resume Next
cmd.Execute
If Err.Number <> 0 Then
ReportError "attempting to change context to " & dbName & "."
WScript.Quit
End If
On Error GoTo 0
' Grant database login permission to user
cmd.CommandText = "exec sp_grantlogin '" & dbUser & "'"
WScript.Echo " >" & cmd.CommandText
On Error Resume Next
cmd.Execute
If Err.Number <> 0 Then
ReportError "attempting to grant database login permission to " & dbUser & "."
End If
On Error GoTo 0
cmd.CommandText = "exec sp_grantdbaccess '" & dbUser & "'"
WScript.Echo " >" & cmd.CommandText
On Error Resume Next
cmd.Execute
If Err.Number <> 0 Then
ReportError "granting access for " & dbUser & " to " & dbName & "."
End If
On Error GoTo 0
cmd.CommandText = "exec sp_addrolemember 'db_datareader','" & dbUser & "'"
WScript.Echo " >" & cmd.CommandText
On Error Resume Next
cmd.Execute
If Err.Number <> 0 Then
ReportError "adding reader role for " & dbUser & " to " & dbName & "."
End If
On Error GoTo 0
End Sub
Sub ReportError(message)
WScript.Echo " ------------------------------------------ " & vbCrLf _
& " | An error was encountered while " & message & vbCrLf _
& " | Number : " & Hex(Err.Number) & vbCrLf _
& " | Description : " & Err.Description & vbCrLf _
& " ------------------------------------------ "
Err.Clear
End Sub
Конфигурирование Internet Access Monitor
Никаких специальных настроек в программе не требуется.
Комментарии
Импорт из MSDE баз данных с удаленной машины немного отличается от варианта с установкой обеих программы(ISA Server и Internet Access Monitor) на одном компьютере. Поскольку доступ к базе данных предоставляется только на чтение, то IAM не может подключать новые базы данных к SQL Server'у с удаленной машины. Поэтому, если в папке ISALogs есть лог файл в формате MSDE, но он сильно устарел и ISA Server уже исключил данный файл из списка активных, то он не будет импортирован. Чтобы решить данную проблему следует либо самостоятельно присоединить файл базы данных к серверу(exec sp_attach_single_file_db “DBName”, “DBFileName”), либо установить программу на том же компьютере, на котором работает ISA Server. Из-за этой проблемы рекомендуется настроить планировщик Internet Access Monitor на ежедневный импорт лог файлов.
Еще одним важным моментом является правильное указание пути до лог файлов в программе Internet Access Monitor. В случае импорта MSDE лог файлов с удаленной машины обязательно следует использовать UNC пути до лог файлов. Вариант с подключением сетевого диска не будет работать корректно. Пример правильного указания путей до лог файлов:
Настройка Microsoft ISA Server 2000
Для того, чтобы Microsoft ISA Server 2000 и Internet Access Monitor могли работать совместно необходимо его настроить таким образом, как показано ниже:





