Este objeto monitoriza as regras de entrada da firewall para a Partilha de Ficheiros e Impressoras, gerando um alerta se as regras estiverem desativadas ou se as portas TCP correspondentes estiverem bloqueadas.
Este objeto monitoriza as regras de entrada da firewall para a Partilha de Ficheiros e Impressoras, gerando um alerta se as regras estiverem desativadas ou se as portas TCP correspondentes, 445 e 139, estiverem bloqueadas.
Este monitor poderá entrar num estado de funcionamento Crítico pelos seguintes motivos:
A Firewall do Windows não está em execução.
As regras de firewall da Partilha de Ficheiros e Impressoras que utilizam as portas TCP 445 ou 139 estão desativadas.
Se o estado de funcionamento for desconhecido, isso significa que a monitorização ainda não começou para este objeto.
Determinar se a Firewall do Windows está ativada
Para determinar se a Firewall do Windows está ativada, utilize o seguinte procedimento:
1. Numa linha de comandos elevada no servidor afetado, escreva: sc query mpssvc e prima ENTER.
2. Se a firewall não estiver em execução, escreva o seguinte comando: net start mpssvc.
Determinar se as regras de firewall das portas estão ativadas
Para determinar se as regras de firewall das portas estão ativadas, utilize o seguinte procedimento:
1. No servidor afetado abra o Painel de Controlo, clique em Sistema e Segurança e clique em Firewall do Windows.
2. No painel da esquerda, clique em Definições Avançadas e clique em Regras de Entrada.
3. Verifique se as regras seguintes estão ativadas e se a Ação é Permitir:
Partilha de Ficheiros e Impressoras (Entrada da Sessão NB)
Partilha de Ficheiros e Impressoras (Entrada de SMB)
4. Se as regras de firewall não estiverem ativadas, clique na regra e, no menu Ação, clique em Ativar Regra.
Quando tiver resolvido o problema, este monitor será automaticamente reposto num Bom estado de funcionamento.
Target | Microsoft.Windows.FileServices.Service.SMB.6.3 | ||
Parent Monitor | System.Health.AvailabilityState | ||
Category | Custom | ||
Enabled | True | ||
Alert Generate | True | ||
Alert Severity | Error | ||
Alert Priority | Normal | ||
Alert Auto Resolve | True | ||
Monitor Type | Microsoft.Windows.TimedScript.TwoStateMonitorType | ||
Remotable | True | ||
Accessibility | Public | ||
Alert Message |
| ||
RunAs | Microsoft.Windows.FileServices.MonitoringAccount |
<UnitMonitor ID="Microsoft.Windows.FileServices.Service.SMB.6.3.FirewallPortConfig" Accessibility="Public" Enabled="true" Target="Microsoft.Windows.FileServices.Service.SMB.6.3" ParentMonitorID="SystemHealth!System.Health.AvailabilityState" Remotable="true" Priority="Normal" RunAs="FileServices!Microsoft.Windows.FileServices.MonitoringAccount" TypeID="Windows!Microsoft.Windows.TimedScript.TwoStateMonitorType" ConfirmDelivery="false">
<Category>Custom</Category>
<AlertSettings AlertMessage="Microsoft.Windows.FileServices.Service.SMB.6.3.FirewallPortConfig.AlertMessage">
<AlertOnState>Error</AlertOnState>
<AutoResolve>true</AutoResolve>
<AlertPriority>Normal</AlertPriority>
<AlertSeverity>Error</AlertSeverity>
</AlertSettings>
<OperationalStates>
<OperationalState ID="Error" MonitorTypeStateID="Error" HealthState="Error"/>
<OperationalState ID="Success" MonitorTypeStateID="Success" HealthState="Success"/>
</OperationalStates>
<Configuration>
<IntervalSeconds>30</IntervalSeconds>
<SyncTime/>
<ScriptName>CheckFirewallPort.vbs</ScriptName>
<Arguments>$Target/Host/Property[Type="Windows!Microsoft.Windows.Computer"]/PrincipalName$</Arguments>
<ScriptBody>
Option Explicit
SetLocale("en-us")
Dim oArgs
Dim serverName
Set oArgs = WScript.Arguments
If oArgs.Count < 1 Then
Wscript.Quit -1
Else
serverName = oArgs(0)
End If
' NET_FW_PROFILE_TYPE2
Const NET_FW_PROFILE2_DOMAIN = &h0001
Const NET_FW_PROFILE2_PRIVATE = &h0002
Const NET_FW_PROFILE2_PUBLIC = &h0004
Const NET_FW_IP_PROTOCOL_TCP = &h0006
' Create the FwPolicy2 object
Dim fwPolicy2
Set fwPolicy2 = CreateObject("HNetCfg.FwPolicy2")
Dim fwCurrentProfile, fwCheckProfile
fwCurrentProfile = fwPolicy2.CurrentProfileTypes
fwCheckProfile = fwCurrentProfile And (NET_FW_PROFILE2_DOMAIN Or NET_FW_PROFILE2_PRIVATE)
Dim fwFileSharingPortsEnabled
fwFileSharingPortsEnabled ="False"
Dim rule
For Each rule in fwPolicy2.Rules
If (rule.Protocol = NET_FW_IP_PROTOCOL_TCP) And (rule.LocalPorts = "445") Then
If (Not rule.Enabled) And (rule.Profiles And fwCheckProfile ) Then
fwFileSharingPortsEnabled = "True"
Exit For
End If
End If
Next
Dim regularShareExist, objWMIService, colShares, objShare
regularShareExist = "False"
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & serverName & "\root\microsoft\windows\smb")
Set colShares = objWMIService.ExecQuery("Select * from MSFT_SmbShare")
For each objShare in colShares
If objShare.Special = "False" Then
regularShareExist = "True"
Exit For
End If
Next
Dim portStatus
portStatus = "Disabled"
' Only if regular share exists and port 139/445 are not open will portStatus be returned as "Disabled"
If fwFileSharingPortsEnabled = "True" Then
portStatus = "Enabled"
Else
If regularShareExist = "False" Then
portStatus = "Enabled"
End If
End If
Dim oAPI, oBag
Set oAPI = CreateObject("MOM.ScriptAPI")
Set oBag = oAPI.CreatePropertyBag()
Call oBag.AddValue ("PortStatus", portStatus)
Call oAPI.Return(oBag)
</ScriptBody>
<TimeoutSeconds>300</TimeoutSeconds>
<ErrorExpression>
<SimpleExpression>
<ValueExpression>
<XPathQuery Type="String">Property[@Name='PortStatus']</XPathQuery>
</ValueExpression>
<Operator>NotEqual</Operator>
<ValueExpression>
<Value Type="String">Enabled</Value>
</ValueExpression>
</SimpleExpression>
</ErrorExpression>
<SuccessExpression>
<SimpleExpression>
<ValueExpression>
<XPathQuery Type="String">Property[@Name='PortStatus']</XPathQuery>
</ValueExpression>
<Operator>Equal</Operator>
<ValueExpression>
<Value Type="String">Enabled</Value>
</ValueExpression>
</SimpleExpression>
</SuccessExpression>
</Configuration>
</UnitMonitor>