title | description | ms.prod | ms.localizationpriority | author | manager | ms.topic | ms.date | ms.reviewer | ms.author | ms.technology | appliesto | |||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Windows Defender Firewall with Advanced Security Administration with Windows PowerShell (Windows) |
Windows Defender Firewall with Advanced Security Administration with Windows PowerShell |
windows-client |
medium |
paolomatarazzo |
aaroncz |
conceptual |
09/08/2021 |
jekrynit |
paoloma |
itpro-security |
|
Windows Defender Firewall with Advanced Security Administration with Windows PowerShell
The Windows Defender Firewall with Advanced Security Administration with Windows PowerShell Guide provides essential scriptlets for automating Windows Defender Firewall management. It’s designed for IT pros, system administrators, IT managers, and others who use and need to automate Windows Defender Firewall management in Windows.
You can use Windows PowerShell to manage your firewall and IPsec deployments. This object-oriented scripting environment will make it easier for you to manage policies and monitor network conditions than was possible in netsh. Windows PowerShell allows network settings to be self-discoverable through the syntax and parameters in each of the cmdlets. This guide demonstrates how common tasks were performed in netsh and how you can use Windows PowerShell to accomplish them.
In future versions of Windows, Microsoft might remove the netsh functionality for Windows Defender Firewall. Microsoft recommends that you transition to Windows PowerShell if you currently use netsh to configure and manage Windows Defender Firewall.
Windows PowerShell and netsh command references are at the following locations.
- Netsh Commands for Windows Defender Firewall
Scope
This guide doesn’t teach you the fundamentals of Windows Defender Firewall, which can be found in Windows Defender Firewall. It doesn’t teach the fundamentals of Windows PowerShell, and it assumes that you’re familiar with the Windows PowerShell language and the basic concepts of Windows PowerShell. For more info about Windows PowerShell concepts and usage, see the reference topics in the Additional resources section of this guide.
Audience and user requirements
This guide is intended for IT pros, system administrators, and IT managers, and it assumes that you’re familiar with Windows Defender Firewall, the Windows PowerShell language, and the basic concepts of Windows PowerShell.
In this topic
Section | Description |
---|---|
Set profile global defaults | Enable and control firewall behavior |
Deploy basic firewall rules | How to create, modify, and delete firewall rules |
Manage Remotely | Remote management by using -CimSession |
Deploy basic IPsec rule settings | IPsec rules and associated parameters |
Deploy secure firewall rules with IPsec | Domain and server isolation |
Other resources | More information about Windows PowerShell |
Set profile global defaults
Global defaults set the device behavior in a per-profile basis. Windows Defender Firewall supports Domain, Private, and Public profiles.
Enable Windows Defender Firewall with Advanced Security
Windows Defender Firewall drops traffic that doesn’t correspond to allowed unsolicited traffic, or traffic that is sent in response to a request by the device. If you find that the rules you create aren’t being enforced, you may need to enable Windows Defender Firewall. Here’s how to enable Windows Defender Firewall on a local domain device:
Netsh
netsh advfirewall set allprofiles state on
Windows PowerShell
Set-NetFirewallProfile -Profile Domain,Public,Private -Enabled True
Control Windows Defender Firewall with Advanced Security behavior
The global default settings can be defined through the command-line interface. These modifications are also available through the Windows Defender Firewall with Advanced Security console.
The following scriptlets set the default inbound and outbound actions, specifies protected network connections, and allows notifications to be displayed to the user when a program is blocked from receiving inbound connections. It allows unicast response to multicast or broadcast network traffic, and it specifies logging settings for troubleshooting.
Netsh
netsh advfirewall set allprofiles firewallpolicy blockinbound,allowoutbound netsh advfirewall set allprofiles settings inboundusernotification enable netsh advfirewall set allprofiles settings unicastresponsetomulticast enable netsh advfirewall set allprofiles logging filename %SystemRoot%System32LogFilesFirewallpfirewall.log
Windows PowerShell
Set-NetFirewallProfile -DefaultInboundAction Block -DefaultOutboundAction Allow –NotifyOnListen True -AllowUnicastResponseToMulticast True –LogFileName %SystemRoot%System32LogFilesFirewallpfirewall.log
Disable Windows Defender Firewall with Advanced Security
Microsoft recommends that you don’t disable Windows Defender Firewall because you lose other benefits provided by the service, such as the ability to use Internet Protocol security (IPsec) connection security rules, network protection from attacks that employ network fingerprinting, Windows Service Hardening, and boot time filters.
Disabling Windows Defender Firewall with Advanced Security can also cause problems, including:
- Start menu can stop working
- Modern applications can fail to install or update
- Activation of Windows via phone fails
- Application or OS incompatibilities that depend on Windows Defender Firewall
Microsoft recommends disabling Windows Defender Firewall only when installing a third-party firewall, and resetting Windows Defender Firewall back to defaults when the third-party software is disabled or removed.
If disabling Windows Defender Firewall is required, don’t disable it by stopping the Windows Defender Firewall service (in the Services snap-in, the display name is Windows Defender Firewall and the service name is MpsSvc).
Stopping the Windows Defender Firewall service isn’t supported by Microsoft.
Non-Microsoft firewall software can programmatically disable only the parts of Windows Defender Firewall that need to be disabled for compatibility.
You shouldn’t disable the firewall yourself for this purpose.
The proper method to disable the Windows Defender Firewall is to disable the Windows Defender Firewall Profiles and leave the service running.
Use the following procedure to turn off the firewall, or disable the Group Policy setting Computer Configuration|Administrative Templates|Network|Network Connections|Windows Defender Firewall|Domain Prolfile|Windows Defender Firewall:Protect all network connections.
For more information, see Windows Defender Firewall with Advanced Security deployment guide.
The following example disables Windows Defender Firewall for all profiles.
Set-NetFirewallProfile -Profile Domain,Public,Private -Enabled False
Deploy basic firewall rules
This section provides scriptlet examples for creating, modifying, and deleting firewall rules.
Create firewall rules
Adding a firewall rule in Windows PowerShell looks a lot like it did in Netsh, but the parameters and values are specified differently.
Here’s an example of how to allow the Telnet application to listen on the network. This firewall rule is scoped to the local subnet by using a keyword instead of an IP address. Just like in Netsh, the rule is created on the local device, and it becomes effective immediately.
Netsh
netsh advfirewall firewall add rule name="Allow Inbound Telnet" dir=in program= %SystemRoot%System32tlntsvr.exe remoteip=localsubnet action=allow
Windows PowerShell
New-NetFirewallRule -DisplayName “Allow Inbound Telnet” -Direction Inbound -Program %SystemRoot%System32tlntsvr.exe -RemoteAddress LocalSubnet -Action Allow
The following scriptlet shows how to add a basic firewall rule that blocks outbound traffic from a specific application and local port to a Group Policy Object (GPO) in Active Directory. In Windows PowerShell, the policy store is specified as a parameter within the New-NetFirewall cmdlet. In Netsh, you must first specify the GPO that the commands in a Netsh session should modify. The commands you enter are run against the contents of the GPO, and the execution remains in effect until the Netsh session is ended or until another set store command is executed.
Here, domain.contoso.com is the name of your Active Directory Domain Services (AD DS), and gpo_name is the name of the GPO that you want to modify. Quotation marks are required if there are any spaces in the GPO name.
Netsh
netsh advfirewall set store gpo=domain.contoso.comgpo_name netsh advfirewall firewall add rule name="Block Outbound Telnet" dir=out program=%SystemRoot%System32telnet.exe protocol=tcp localport=23 action=block
Windows PowerShell
New-NetFirewallRule -DisplayName “Block Outbound Telnet” -Direction Outbound -Program %SystemRoot%System32tlntsvr.exe –Protocol TCP –LocalPort 23 -Action Block –PolicyStore domain.contoso.comgpo_name
GPO Caching
To reduce the burden on busy domain controllers, Windows PowerShell allows you to load a GPO to your local session, make all your changes in that session, and then save it back at all once.
The following command performs the same actions as the previous example (by adding a Telnet rule to a GPO), but we do so by applying GPO caching in PowerShell. Changing the GPO by loading it onto your local session and using the -GPOSession parameter aren’t supported in Netsh
Windows PowerShell
$gpo = Open-NetGPO –PolicyStore domain.contoso.comgpo_name New-NetFirewallRule -DisplayName “Block Outbound Telnet” -Direction Outbound -Program %SystemRoot%System32telnet.exe –Protocol TCP –LocalPort 23 -Action Block –GPOSession $gpo Save-NetGPO –GPOSession $gpo
This command doesn’t batch your individual changes, it loads and saves the entire GPO at once. So if any other changes are made by other administrators, or in a different Windows PowerShell window, saving the GPO overwrites those changes.
Modify an existing firewall rule
When a rule is created, Netsh and Windows PowerShell allow you to change rule properties and influence, but the rule maintains its unique identifier (in Windows PowerShell, this identifier is specified with the -Name parameter).
For example, you could have a rule Allow Web 80 that enables TCP port 80 for inbound unsolicited traffic. You can change the rule to match a different remote IP address of a Web server whose traffic will be allowed by specifying the human-readable, localized name of the rule.
Netsh
netsh advfirewall firewall set rule name="Allow Web 80" new remoteip=192.168.0.2
Windows PowerShell
Set-NetFirewallRule –DisplayName “Allow Web 80” -RemoteAddress 192.168.0.2
Netsh requires you to provide the name of the rule for it to be changed and we don’t have an alternate way of getting the firewall rule. In Windows PowerShell, you can query for the rule using its known properties.
When you run Get-NetFirewallRule
, you may notice that common conditions like addresses and ports don’t appear. These conditions are represented in separate objects called Filters. As shown before, you can set all the conditions in New-NetFirewallRule and Set-NetFirewallRule. If you want to query for firewall rules based on these fields (ports, addresses, security, interfaces, services), you’ll need to get the filter objects themselves.
You can change the remote endpoint of the Allow Web 80 rule (as done previously) using filter objects. Using Windows PowerShell, you query by port using the port filter, then assuming other rules exist affecting the local port, you build with further queries until your desired rule is retrieved.
In the following example, we assume the query returns a single firewall rule, which is then piped to the Set-NetFirewallRule
cmdlet utilizing Windows PowerShell’s ability to pipeline inputs.
Windows PowerShell
Get-NetFirewallPortFilter | ?{$_.LocalPort -eq 80} | Get-NetFirewallRule | ?{ $_.Direction –eq “Inbound” -and $_.Action –eq “Allow”} | Set-NetFirewallRule -RemoteAddress 192.168.0.2
You can also query for rules using the wildcard character. The following example returns an array of firewall rules associated with a particular program. The elements of the array can be modified in subsequent Set-NetFirewallRule
cmdlets.
Windows PowerShell
Get-NetFirewallApplicationFilter -Program "*svchost*" | Get-NetFirewallRule
Multiple rules in a group can be simultaneously modified when the associated group name is specified in a Set command. You can add firewall rules to specified management groups in order to manage multiple rules that share the same influences.
In the following example, we add both inbound and outbound Telnet firewall rules to the group Telnet Management. In Windows PowerShell, group membership is specified when the rules are first created so we re-create the previous example rules. Adding rules to a custom rule group isn’t possible in Netsh.
Windows PowerShell
New-NetFirewallRule -DisplayName “Allow Inbound Telnet” -Direction Inbound -Program %SystemRoot%System32tlntsvr.exe -RemoteAddress LocalSubnet -Action Allow –Group “Telnet Management” New-NetFirewallRule -DisplayName “Block Outbound Telnet” -Direction Outbound -Program %SystemRoot%System32tlntsvr.exe -RemoteAddress LocalSubnet -Action Allow –Group “Telnet Management”
If the group isn’t specified at rule creation time, the rule can be added to the rule group using dot notation in Windows PowerShell. You can’t specify the group using Set-NetFirewallRule
since the command allows querying by rule group.
Windows PowerShell
$rule = Get-NetFirewallRule -DisplayName “Allow Inbound Telnet” $rule.Group = “Telnet Management” $rule | Set-NetFirewallRule
With the help of the Set
command, if the rule group name is specified, the group membership isn’t modified but rather all rules of the group receive the same modifications indicated by the given parameters.
The following scriptlet enables all rules in a predefined group containing remote management influencing firewall rules.
Netsh
netsh advfirewall firewall set rule group="Windows Defender Firewall remote management" new enable=yes
Windows PowerShell
Set-NetFirewallRule -DisplayGroup “Windows Defender Firewall Remote Management” –Enabled True
There’s also a separate Enable-NetFirewallRule
cmdlet for enabling rules by group or by other properties of the rule.
Windows PowerShell
Enable-NetFirewallRule -DisplayGroup “Windows Defender Firewall Remote Management” -Verbose
Delete a firewall rule
Rule objects can be disabled so that they’re no longer active. In Windows PowerShell, the Disable-NetFirewallRule cmdlet will leave the rule on the system, but put it in a disabled state so the rule no longer is applied and impacts traffic. A disabled firewall rule can be re-enabled by Enable-NetFirewallRule. This cmdlet is different from the Remove-NetFirewallRule, which permanently removes the rule definition from the device.
The following cmdlet deletes the specified existing firewall rule from the local policy store.
Netsh
netsh advfirewall firewall delete rule name=“Allow Web 80”
Windows PowerShell
Remove-NetFirewallRule –DisplayName “Allow Web 80”
Like with other cmdlets, you can also query for rules to be removed. Here, all blocking firewall rules are deleted from the device.
Windows PowerShell
Remove-NetFirewallRule –Action Block
It may be safer to query the rules with the Get command and save it in a variable, observe the rules to be affected, then pipe them to the Remove command, just as we did for the Set commands. The following example shows how you can view all the blocking firewall rules, and then delete the first four rules.
Windows PowerShell
$x = Get-NetFirewallRule –Action Block $x $x[0-3] | Remove-NetFirewallRule
Manage remotely
Remote management using WinRM is enabled by default. The cmdlets that support the CimSession parameter use WinRM and can be managed remotely by default.
The following example returns all firewall rules of the persistent store on a device named RemoteDevice.
Windows PowerShell
Get-NetFirewallRule –CimSession RemoteDevice
We can perform any modifications or view rules on remote devices by using the –CimSession parameter. Here we remove a specific firewall rule from a remote device.
Windows PowerShell
$RemoteSession = New-CimSession –ComputerName RemoteDevice Remove-NetFirewallRule –DisplayName “AllowWeb80” –CimSession $RemoteSession -Confirm
Deploy basic IPsec rule settings
An Internet Protocol security (IPsec) policy consists of rules that determine IPsec behavior. IPsec supports network-level peer authentication, data origin authentication, data integrity, data confidentiality (encryption), and replay protection.
Windows PowerShell can create powerful, complex IPsec policies like in Netsh and the Windows Defender Firewall with Advanced Security console. However, because Windows PowerShell is object-based rather than string token-based, configuration in Windows PowerShell offers greater control and flexibility.
In Netsh, the authentication and cryptographic sets were specified as a list of comma-separated tokens in a specific format. In Windows PowerShell, rather than using default settings, you first create your desired authentication or cryptographic proposal objects and bundle them into lists in your preferred order. Then, you create one or more IPsec rules that reference these sets. The benefit of this model is that programmatic access to the information in the rules is much easier. See the following sections for clarifying examples.
Create IPsec rules
The following cmdlet creates basic IPsec transport mode rule in a Group Policy Object. An IPsec rule is simple to create; all that is required is the display name, and the remaining properties use default values. Inbound traffic is authenticated and integrity checked using the default quick mode and main mode settings. These default settings can be found in the console under Customize IPsec Defaults.
Netsh
netsh advfirewall set store gpo=domain.contoso.comgpo_name netsh advfirewall consec add rule name="Require Inbound Authentication" endpoint1=any endpoint2=any action=requireinrequestout
Windows PowerShell
New-NetIPsecRule -DisplayName “Require Inbound Authentication” -PolicyStore domain.contoso.comgpo_name
Add custom authentication methods to an IPsec rule
If you want to create a custom set of quick-mode proposals that includes both AH and ESP in an IPsec rule object, you create the associated objects separately and link their associations. For more information about authentication methods, see Choosing the IPsec Protocol .
You can then use the newly created custom quick-mode policies when you create IPsec rules. The cryptography set object is linked to an IPsec rule object.
In this example, we build on the previously created IPsec rule by specifying a custom quick-mode crypto set. The final IPsec rule requires outbound traffic to be authenticated by the specified cryptography method.
Netsh
netsh advfirewall set store gpo=domain.contoso.comgpo_name netsh advfirewall consec add rule name="Require Outbound Authentication" endpoint1=any endpoint2=any action=requireinrequestout qmsecmethods=ah:sha1+esp:sha1-3des
Windows PowerShell
$AHandESPQM = New-NetIPsecQuickModeCryptoProposal -Encapsulation AH,ESP –AHHash SHA1 -ESPHash SHA1 -Encryption DES3 $QMCryptoSet = New-NetIPsecQuickModeCryptoSet –DisplayName “ah:sha1+esp:sha1-des3” -Proposal $AHandESPQM –PolicyStore domain.contoso.comgpo_name New-NetIPsecRule -DisplayName “Require Inbound Authentication” -InboundSecurity Require -OutboundSecurity Request -QuickModeCryptoSet $QMCryptoSet.Name –PolicyStore domain.contoso.comgpo_name
IKEv2 IPsec transport rules
A corporate network may need to secure communications with another agency. But, you discover the agency runs non-Windows operating systems and requires the use of the Internet Key Exchange Version 2 (IKEv2) standard.
You can apply IKEv2 capabilities in Windows Server 2012 by specifying IKEv2 as the key module in an IPsec rule. This capability specification can only be done using computer certificate authentication and can’t be used with phase-2 authentication.
Windows PowerShell
New-NetIPsecRule -DisplayName “Require Inbound Authentication” -InboundSecurity Require -OutboundSecurity Request –Phase1AuthSet MyCertAuthSet -KeyModule IKEv2 –RemoteAddress $nonWindowsGateway
For more info about IKEv2, including scenarios, see Securing End-to-End IPsec Connections by Using IKEv2.
Copy an IPsec rule from one policy to another
Firewall and IPsec rules with the same rule properties can be duplicated to simplify the task of re-creating them within different policy stores.
To copy the previously created rule from one policy store to another, the associated objects must also be copied separately. There’s no need to copy associated firewall filters. You can query rules to be copied in the same way as other cmdlets.
Copying individual rules is a task that isn’t possible through the Netsh interface. Here’s how you can accomplish it with Windows PowerShell.
Windows PowerShell
$Rule = Get-NetIPsecRule –DisplayName “Require Inbound Authentication” $Rule | Copy-NetIPsecRule –NewPolicyStore domain.costoso.comnew_gpo_name $Rule | Copy-NetPhase1AuthSet –NewPolicyStore domain.costoso.comnew_gpo_name
Handling Windows PowerShell errors
To handle errors in your Windows PowerShell scripts, you can use the –ErrorAction parameter. This parameter is especially useful with the Remove cmdlets. If you want to remove a particular rule, you’ll notice that it fails if the rule isn’t found. When rules are being removed, if the rule isn’t already there, it’s acceptable to ignore that error. In this case, you can do the following to suppress any “rule not found” errors during the remove operation.
Windows PowerShell
Remove-NetFirewallRule –DisplayName “Contoso Messenger 98” –ErrorAction SilentlyContinue
The use of wildcards can also suppress errors, but they could potentially match rules that you didn’t intend to remove. These wildcards can be a useful shortcut, but should only be used if you know there aren’t any extra rules that will be accidentally deleted. So the following cmdlet will also remove the rule, suppressing any “not found” errors.
Windows PowerShell
Remove-NetFirewallRule –DisplayName “Contoso Messenger 98*”
When using wildcards, if you want to double-check the set of rules that is matched, you can use the –WhatIf parameter.
Windows PowerShell
Remove-NetFirewallRule –DisplayName “Contoso Messenger 98*” –WhatIf
If you only want to delete some of the matched rules, you can use the –Confirm parameter to get a rule-by-rule confirmation prompt.
Windows PowerShell
Remove-NetFirewallRule –DisplayName “Contoso Messenger 98*” –Confirm
You can also just perform the whole operation, displaying the name of each rule as the operation is performed.
Windows PowerShell
Remove-NetFirewallRule –DisplayName “Contoso Messenger 98*” –Verbose
Monitor
The following Windows PowerShell commands are useful in the update cycle of a deployment phase.
To allow you to view all the IPsec rules in a particular store, you can use the following commands. In Netsh, this command doesn’t show rules where profile=domain,public or profile=domain,private. It only shows rules that have the single entry domain that is included in the rule. The following command examples will show the IPsec rules in all profiles.
Netsh
netsh advfirewall consec show rule name=all
Windows PowerShell
Show-NetIPsecRule –PolicyStore ActiveStore
You can monitor main mode security associations for information such as which peers are currently connected to the device and which protection suite is used to form the security associations.
Use the following cmdlet to view existing main mode rules and their security associations:
Netsh
netsh advfirewall monitor show mmsa all
Windows PowerShell
Find the source GPO of a rule
To view the properties of a particular rule or group of rules, you query for the rule. When a query returns fields that are specified as NotConfigured, you can determine which policy store a rule originates from.
For objects that come from a GPO (the –PolicyStoreSourceType parameter is specified as GroupPolicy in the Show command), if –TracePolicyStore is passed, the name of the GPO is found and returned in the PolicyStoreSource field.
Windows PowerShell
Get-NetIPsecRule –DisplayName “Require Inbound Authentication” –TracePolicyStore
It’s important to note that the revealed sources don’t contain a domain name.
Deploy a basic domain isolation policy
IPsec can be used to isolate domain members from non-domain members. Domain isolation uses IPsec authentication to require that the domain-joined devices positively establish the identities of the communicating devices to improve security of an organization. One or more features of IPsec can be used to secure traffic with an IPsec rule object.
To implement domain isolation on your network, the devices in the domain receive IPsec rules that block unsolicited inbound network traffic that isn’t protected by IPsec. Here we create an IPsec rule that requires authentication by domain members. Through this authentication, you can isolate domain-joined devices from devices that aren’t joined to a domain. In the following examples, Kerberos authentication is required for inbound traffic and requested for outbound traffic.
Netsh
netsh advfirewall set store gpo=domain.contoso.comdomain_isolation netsh advfirewall consec add rule name=“Basic Domain Isolation Policy” profile=domain endpoint1=”any” endpoint2=”any” action=requireinrequestout auth1=”computerkerb”
Windows PowerShell
$kerbprop = New-NetIPsecAuthProposal –Machine –Kerberos $Phase1AuthSet = New-NetIPsecPhase1AuthSet -DisplayName "Kerberos Auth Phase1" -Proposal $kerbprop –PolicyStore domain.contoso.comdomain_isolation New-NetIPsecRule –DisplayName “Basic Domain Isolation Policy” –Profile Domain –Phase1AuthSet $Phase1AuthSet.Name –InboundSecurity Require –OutboundSecurity Request –PolicyStore domain.contoso.comdomain_isolation
Configure IPsec tunnel mode
The following command creates an IPsec tunnel that routes traffic from a private network (192.168.0.0/16) through an interface on the local device (1.1.1.1) attached to a public network to a second device through its public interface (2.2.2.2) to another private network (192.157.0.0/16). All traffic through the tunnel is checked for integrity by using ESP/SHA1, and it’s encrypted by using ESP/DES3.
Netsh
netsh advfirewall consec add rule name="Tunnel from 192.168.0.0/16 to 192.157.0.0/16" mode=tunnel endpoint1=192.168.0.0/16 endpoint2=192.157.0.0/16 localtunnelendpoint=1.1.1.1 remotetunnelendpoint=2.2.2.2 action=requireinrequireout qmsecmethods=esp:sha1-3des
Windows PowerShell
$QMProposal = New-NetIPsecQuickModeCryptoProposal -Encapsulation ESP -ESPHash SHA1 -Encryption DES3 $QMCryptoSet = New-NetIPsecQuickModeCryptoSet –DisplayName “esp:sha1-des3” -Proposal $QMProposal New-NetIPSecRule -DisplayName “Tunnel from HQ to Dallas Branch” -Mode Tunnel -LocalAddress 192.168.0.0/16 -RemoteAddress 192.157.0.0/16 -LocalTunnelEndpoint 1.1.1.1 -RemoteTunnelEndpoint 2.2.2.2 -InboundSecurity Require -OutboundSecurity Require -QuickModeCryptoSet $QMCryptoSet.Name
Deploy secure firewall rules with IPsec
In situations where only secure traffic can be allowed through the Windows Defender Firewall, a combination of manually configured firewall and IPsec rules are necessary. The firewall rules determine the level of security for allowed packets, and the underlying IPsec rules secure the traffic. The scenarios can be accomplished in Windows PowerShell and in Netsh, with many similarities in deployment.
Create a secure firewall rule (allow if secure)
Configuring firewalls rule to allow connections if they’re secure requires the corresponding traffic to be authenticated and integrity protected, and then optionally encrypted by IPsec.
The following example creates a firewall rule that requires traffic to be authenticated. The command permits inbound Telnet network traffic only if the connection from the remote device is authenticated by using a separate IPsec rule.
Netsh
netsh advfirewall firewall add rule name="Allow Authenticated Telnet" dir=in program=%SystemRoot%System32tlntsvr.exe security=authenticate action=allow
Windows PowerShell
New-NetFirewallRule -DisplayName “Allow Authenticated Telnet” -Direction Inbound -Program %SystemRoot%System32tlntsvr.exe -Authentication Required -Action Allow
The following command creates an IPsec rule that requires a first (computer) authentication and then attempts an optional second (user) authentication. Creating this rule secures and allows the traffic through the firewall rule requirements for the messenger program.
Netsh
netsh advfirewall consec add rule name="Authenticate Both Computer and User" endpoint1=any endpoint2=any action=requireinrequireout auth1=computerkerb,computerntlm auth2=userkerb,userntlm,anonymous
Windows PowerShell
$mkerbauthprop = New-NetIPsecAuthProposal -Machine –Kerberos $mntlmauthprop = New-NetIPsecAuthProposal -Machine -NTLM $P1Auth = New-NetIPsecPhase1AuthSet -DisplayName “Machine Auth” –Proposal $mkerbauthprop,$mntlmauthprop $ukerbauthprop = New-NetIPsecAuthProposal -User -Kerberos $unentlmauthprop = New-NetIPsecAuthProposal -User -NTLM $anonyauthprop = New-NetIPsecAuthProposal -Anonymous $P2Auth = New-NetIPsecPhase2AuthSet -DisplayName “User Auth” -Proposal $ukerbauthprop,$unentlmauthprop,$anonyauthprop New-NetIPSecRule -DisplayName “Authenticate Both Computer and User” -InboundSecurity Require -OutboundSecurity Require -Phase1AuthSet $P1Auth.Name –Phase2AuthSet $P2Auth.Name
Isolate a server by requiring encryption and group membership
To improve the security of the devices in an organization, you can deploy domain isolation in which domain-members are restricted. They require authentication when communicating among each other and reject non-authenticated inbound connections. To improve the security of servers with sensitive data, this data must be protected by allowing access only to a subset of devices within the enterprise domain.
IPsec can provide this extra layer of protection by isolating the server. In server isolation, sensitive data access is restricted to users and devices with legitimate business need, and the data is additionally encrypted to prevent eavesdropping.
Create a firewall rule that requires group membership and encryption
To deploy server isolation, we layer a firewall rule that restricts traffic to authorized users or devices on the IPsec rule that enforces authentication.
The following firewall rule allows Telnet traffic from user accounts that are members of a custom group called “Authorized to Access Server.” This access can additionally be restricted based on the device, user, or both by specifying the restriction parameters.
A Security Descriptor Definition Language (SDDL) string is created by extending a user or group’s security identifier (SID). For more information about finding a group’s SID, see: Finding the SID for a group account.
Restricting access to a group allows administrations to extend strong authentication support through Windows Defender Firewall and/or IPsec policies.
The following example shows you how to create an SDDL string that represents security groups.
Windows PowerShell
$user = new-object System.Security.Principal.NTAccount (“corp.contoso.comAdministrators”) $SIDofSecureUserGroup = $user.Translate([System.Security.Principal.SecurityIdentifier]).Value $secureUserGroup = "D:(A;;CC;;;$SIDofSecureUserGroup)"
By using the previous scriptlet, you can also get the SDDL string for a secure computer group as shown here:
Windows PowerShell
$secureMachineGroup = "D:(A;;CC;;;$SIDofSecureMachineGroup)"
For more information about how to create security groups or how to determine the SDDL string, see Working with SIDs.
Telnet is an application that doesn’t provide encryption. This application can send data, such as names and passwords, over the network. This data can be intercepted by malicious users. If an administrator would like to allow the use of Telnet, but protect the traffic, a firewall rule that requires IPsec encryption can be created. This firewall rule is necessary so that the administrator can be certain that when this application is used, all of the traffic sent or received by this port is encrypted. If IPsec fails to authorize the connection, no traffic is allowed from this application.
In this example, we allow only authenticated and encrypted inbound Telnet traffic from a specified secure user group through the creation of the following firewall rule.
Netsh
netsh advfirewall set store gpo=domain.contoso.comServer_Isolation netsh advfirewall firewall add rule name=“Allow Encrypted Inbound Telnet to Group Members Only” program=%SystemRoot%System32tlntsvr.exe protocol=TCP dir=in action=allow localport=23 security=authenc rmtusrgrp ="D:(A;;CC;;; S-1-5-21-2329867823-2610410949-1491576313-1735)"
Windows PowerShell
New-NetFirewallRule -DisplayName "Allow Encrypted Inbound Telnet to Group Members Only" -Program %SystemRoot%System32tlntsvr.exe -Protocol TCP -Direction Inbound -Action Allow -LocalPort 23 -Authentication Required -Encryption Required –RemoteUser $secureUserGroup –PolicyStore domain.contoso.comServer_Isolation
Endpoint security enforcement
The previous example showed end to end security for a particular application. In situations where endpoint security is required for many applications, having a firewall rule per application can be cumbersome and difficult to manage. Authorization can override the per-rule basis and be done at the IPsec layer.
In this example, we set the global IPsec setting to only allow transport mode traffic to come from an authorized user group with the following cmdlet. Consult the previous examples for working with security groups.
Windows PowerShell
Set-NetFirewallSetting -RemoteMachineTransportAuthorizationList $secureMachineGroup
Create firewall rules that allow IPsec-protected network traffic (authenticated bypass)
Authenticated bypass allows traffic from a specified trusted device or user to override firewall block rules. This override is helpful when an administrator wants to use scanning servers to monitor and update devices without the need to use port-level exceptions. For more information, see How to enable authenticated firewall bypass.
In this example, we assume that a blocking firewall rule exists. This example permits any network traffic on any port from any IP address to override the block rule, if the traffic is authenticated as originating from a device or user account that is a member of the specified device or user security group.
Netsh
netsh advfirewall set store gpo=domain.contoso.comdomain_isolation netsh advfirewall firewall add rule name="Inbound Secure Bypass Rule" dir=in security=authenticate action="bypass" rmtcomputergrp="D:(A;;CC;;;S-1-5-21-2329867823-2610410949-1491576313-1114)" rmtusrgrp="D:(A;;CC;;; S-1-5-21-2329867823-2610410949-1491576313-1735)"
Windows PowerShell
New-NetFirewallRule –DisplayName “Inbound Secure Bypass Rule" –Direction Inbound –Authentication Required –OverrideBlockRules $true -RemoteMachine $secureMachineGroup –RemoteUser $secureUserGroup –PolicyStore domain.contoso.comdomain_isolation
Other resources
For more information about Windows PowerShell concepts, see the following topics.
-
Windows PowerShell Getting Started Guide
-
Windows PowerShell User Guide
-
Windows PowerShell About Help Topics
-
about_Functions
-
about_Functions_Advanced
-
about_Execution_Policies
-
about_Foreach
-
about_Objects
-
about_Properties
-
about_While
-
about_Scripts
-
about_Signing
-
about_Throw
-
about_PSSessions
-
about_Modules
-
about_Command_Precedence
Hey All,
This is probably my biggest pet peeve with core. We all know core is slim with no GUI. We all know you usually remotely manage Core services via RSAT or Web Client, or whatever else the particular services being implemented on core might be. It’s nice that
the service itself is allowed remotely. However it be nice if there was a Group (I guess in this case a DisplayGroup since the «Group» as listed under AdvFirewall Snap-in is actually DisplayGroup under the objects attributes instead of Group, same
thing goes for the Name column, you have no idea how much I hate that.) that could enable RSAT snap-in to connect to core services (Adv Firewall Snap-in, Comp Mgmt, Disk Mgmt, etc)
Took long enough to find a decent blog that showed the proper PowerShell command to enable the existing rule for ICMPv4-in vs making a new rule (which seem to be the most common answer for applying ICMP via CMD)
«Set-NetFirewallRule -DisplayName “File and Printer Sharing (Echo Request – ICMPv4-In)” -enabled True»
Source
However the other remote management requirements are not so easy to determine. Many say enable group «Remote Administration» which running Get-NetFirewallRule | FT DisplayGroup, clearly shows no such group exists.
Looking through the list I saw Windows Remote Management Group, enabling that group still didn’t allow my RSAT Snap-ins to connect successfully.
What is the Powershell command to allow all remote management of my core server via RSAT?!?!?!
В предыдущей статье я рассказал про установку Windows Server Core, теперь о том, как управлять серверами развернутыми в core. Сервера, с которых будет выполнятся администрирование будем называть source, а сервера которые будем администрировать – target.
Target и source могут входить как в домен, так и в рабочую группу. Source может быть рабочим ПК администратора и работать под управлением Windows 7/8/8.1/10 с установленным пакетом RSAT соответствующей версии.
Рабочий ПК администратора не должен быть единственным местом откуда инфраструктурой можно управлять, его можно дополнить высокодоступным сервером размещенным в Microsoft Azure или Amazon, но их точкой отказа будет Интернет-канал.
Кроме RSAT, управлять серверами можно с помощью PowerShellWebAccess, но это скорее дополнительная возможность на случай недоступность RSAT. О настройке PSWA Вы можете почитать в моей статье “Настройка PowerShell Web Access“.
Перейдем непостредственно к настройке удаленного управления.
Чтобы посмотреть текущее значение удаленного управления на target можно выполнить:
Configure-SMRemoting.exe -get
Для удаленного управления, на целевом сервере должен быть настроен WinRM, его текущую конфигурацию можно запросить так:
winrm get winrm/config
Обратите внимание, Device Manager недоступен для удаленного управления в любых сценариях:
А все дело в том, что Microsoft “выпилила” удаленный доступ к PnP из соображений безопасности – http://support.microsoft.com/kb/2781106/en-us
Вместо этого, предлагается использовать PowerShell – http://blogs.technet.com/b/wincat/archive/2012/09/06/device-management-powershell-cmdlets-sample-an-introduction.aspx
Если Вам все-таки нужнен полноценный Device manager, вам придется установить хотя бы minimal GUI (о том, как это сделать написано выше).
Создадим и распространим на source и на target групповую политику, которой включим правила Firewall Remote Event Log Management, Remote Service Management, Windows Firewall Remote Management, Remote Volume Management:
В кажом правиле можно указать с каких сетей (лучше выделить админов в отдельную сеть, чем указывать список IP админских машин) разрешен этот трафик, на каких профилях и т.д. Хорошим вариантом будет использование IPSec.
Этот вопрос важен и требует индивидуального планирования чтобы, с одной стороны, минимизировать возможности атак, а с другой стороны, обеспечить возможность администрирования из нескольких мест, вт.ч. на случай аварии.
Если вас интересует управление Windows Firewall с помощью PowerShell рекомендую эту статью.
Теперь рассмотрим сценарий когда source находится в домене, а target в рабочей группе. В начале нужно убедится что source и target корректно разрешают fqdn и netbios имена друг друга, если нет – нужно поправить это в DNS. Как и в большинстве случаев, предпочтительно использование fqdn имен.
После этого, на source нужно добавить имя target в TrustedHosts:
Set-Item WSMan:localhostClientTrustedHosts -Value %target_fqdn% -Concatenate -Force
После этого, можно будет использовать PowerShell remote sessions.
Вы можете посмотреть содержимое TrustedHosts:
Get-Item -Path WSMan:localhostClientTrustedHosts | fl Name, Value
.. и очистить его содержимое при необходимости:
Clear-Item -Path WSMan:localhostClientTrustedHosts
Теперь доступ к target есть по PowerShell, bus воспользуемся им чтобы включить на target таке правила firewall:
Set-NetFirewallRule -DisplayGroup "Windows Remote Management" -Enabled True -RemoteAddress "192.168.1.0/24" Set-NetFirewallRule -DisplayGroup "Remote Event Log Management" -Enabled True -RemoteAddress "192.168.1.0/24" Set-NetFirewallRule -DisplayGroup "Remote Service Management" -Enabled True -RemoteAddress "192.168.1.0/24" Set-NetFirewallRule -DisplayGroup "Windows Firewall Remote Management" -Enabled True -RemoteAddress "192.168.1.0/24" Set-NetFirewallRule -DisplayGroup "Remote Volume Management" -Enabled True -RemoteAddress "192.168.1.0/24" Set-NetFirewallRule -DisplayGroup "File and Printer Sharing" -Enabled True -RemoteAddress "192.168.1.0/24"
Чтобы снять ограничения которые накладывает UAC на target нужно выполнить:
New-ItemProperty -Name LocalAccountTokenFilterPolicy -path HKLM:SOFTWAREMicrosoftWindowsCurrentVersionPoliciesSystem -propertyType DWord -value 1
Теперь можно добавить target в ServerManager на source и, а затем нужно выбрать опцию “Manage As..” и ввести учетные данные администратора target
Последний сценарий – когда source находится в рабочей группе, а target в домене – аналогичен предыдущему, и не требует дополнительных комментариев.
Если вам нужно управлять старыми версиями Windows Server, это сделать можно, 2012R2 и 2012 добавляются без проблем, а вот на 2008R2 и 2008 нужно будет поставить WMF 3.0 + Hotfix + выполнить:
Set-ExecutionPolicy -ExecutionPolicy RemoteSigned Enable-PSremoting -Force
После этого (само собой нужно включить правила firewall, о которых выше) серверами 2008 и 2008R2 можно будет ограниченно управлять, но нельзя, например, устанавливать роли и фичи.
Вообще, запускать скрипты без цифровой подписи в рабочей инфраструктуре не очень хорошо, поэтому есть смысл поставить политику AllSigned:
Set-ExecutionPolicy AllSigned
Если серверов больше чем несколько, есть смысл сделать это через групповую политику (Administrative TemplatesWindows ComponentsWindows PowerShell):
Вот еще наглядный пример, почему большинство задач желательно выполнять через Remote Access:
Для подписи скриптов я буду использовать Comodo Code Signing certificate:
Для подписывания используется командлет Set-AuthenticodeSignature :
Подписанный скрипт будет выглядеть следующим образом:
При запуске необходимо будет принять решение по издателю, я обычно использую Run once – работая с большим количеством скриптов от коллег это становится необходимостью.
Если вы используете для подписывания самозаверенный сертификат его нужно будет добавить на все сервера где планируется запуск подписанных им скриптов.
Так что самозаверенные сертификаты, как всегда, лучше не использовать.
Добавление Windows Sever 2003 я не описываю т.к. во-первых в нем потолок PS 2.0, во-вторых его поддержка заканчивается в обозримом будущем, а в-третьих за годы его эксплуатации процессы управления наверняка налажены и менять их нецелесообразно.
Новый Server Manager сделал большой шаг перед на пути к выполнению массовых операций, но на практике PowerShell более функционален.
Команду на удаленном компьютере можно выполнить указав в Invoke-Command -ComputerName (по-умолчанию Invoke-Command добавляется ко всем командлетам выполняемым локально):
Если команду нужно выполнить на нескольких сервера, откроем на них сессии и выполним операции на каждом параллельно:
Можете посмотреть разницу в скорости выполнения командлетов:
Подробнее про управление:
http://technet.microsoft.com/en-us/library/hh831456.aspx
… старыми версиями –
http://blogs.technet.com/b/servermanager/archive/2012/09/10/managing-downlevel-windows-based-servers-from-server-manager-in-windows-server-2012.aspx
Надеюсь озвученная информация будет полезной, а если нужна будет помощь — используйте форму на главной странице моего сайта.
01:00 10.05.2019
Установка и настройка Hyper-V Server 2016
Продолжая тему виртуализации на основе Hyper-V в данном материале мы рассмотрим установку и настройку бесплатного гипервизора Hyper-V Server 2016. Основным отличием этой версии от Hyper-V как роли Windows Server является его полная бесплатность — вам не требуются лицензии на серверную версию ОС и благодаря минимальному числу служб повышается стабильность, уменьшается возможный периметр атаки и сокращаются затраты на обслуживание. За это приходится платить более сложным процессом установки и настройки о которых мы расскажем в данной статье.
На момент написания данной статьи Hyper-V Server 2016 является предпоследней версией гипервизора, однако в Hyper-V Server 2019 были обнаружены ошибки и релиз был отозван, в настоящий момент он недоступен для скачивания. А с учетом здоровой консервативности, версию 2016 можно смело рассматривать как основной гипервизор для современных внедрений, актуальность которого будет сохраняться еще как минимум в течении года — полутора, пока в новой версии найдут и исправят все ошибки, а также отшлифуют огрехи.
Получить Hyper-V Server 2016 можно на официальном сайте, для скачивания вам потребуется учетная запись Microsoft, либо будет необходимо заполнить небольшую анкету. При этом мы настоятельно не рекомендуем скачивать установочный образ из иных, непроверенных источников.
Установка и первоначальная настройка Hyper-V Server
Мы не будем подробно останавливаться на процессе установки — он ничем не отличается от установки других продуктов Microsoft и не должен вызвать каких-либо сложностей.
При первой загрузке вы попадете в интерфейс командной строки, в которой вам предложат изменить пароль Администратора, будьте внимательны, в русской системе по умолчанию активирована русская раскладка.
После чего нас встретит уже знакомый с версии Hyper-V Server 2012 текстовый интерфейс конфигурации сервера.
Если вы случайно закрыли это окно, то повторно его можно вызвать командой:
sconfig
Если же вы закрыли все окна и оказались перед пустым экраном, то нажмите Ctrl+Shift+Esc, данное сочетание клавиш работает в том числе и в RDP-сессии и вызывает диспетчер задач, с помощью которого вы можете запустить командную строку или утилиту конфигурации.
Далее идем практически по порядку. Но первым шагом следует изменить имя сервера на что-нибудь более информативное и удобное, в нашем случае это будет HV-CORE-2016. Затем, при необходимости, изменяем рабочую группу или присоединяем сервер к домену. Также рекомендуется добавить локального администратора, чтобы не использовать встроенную учетную запись.
Если вы хотите, чтобы ваш сервер отвечал на пинги, то следует явно разрешить такое поведение в пункте 4) Настройка удаленного управления, которое также должно быть включено.
Следующий пункт — Параметры центра обновления Windows имеют по умолчанию настройку Только скачивание, это означает, что установку обновлений вам надо будет запускать вручную. Если ваши виртуальные машины не предполагают режима работы 24/7 есть смысл рассмотреть вариант настройки Автоматически, тем более новая система обновлений предусматривает получение накопительного пакета один раз в месяц.
Затем включаем удаленный рабочий стол (пункт 7) и настраиваем сетевые параметры (пункт . Отдельным пунктом нас ожидает телеметрия (куда же без нее), полностью отключить ее невозможно, поэтому устанавливаем минимальный уровень — Безопасность.
После того, как вы настроили сеть дальнейшую работу с сервером удобнее производить по RDP, как минимум это позволить вам просто скопировать некоторые длинные команды. Но перед тем, как двигаться дальше следует скачать и установить доступные обновления (пункт 6).
В этом выпуске разработчики учли свои ошибки (в версии 2012 требовалось указывать совсем иные буквы, нежели было написано) и все параметры соответствуют указанным на экране, также, во избежание разночтений, используются только буквы латинского алфавита. Обновлений немного, всего три пакета, однако накопительный пакет старый — май 2018. Поэтому после установки обновлений их поиск следует повторить.
Действительно, теперь нам стал доступен последний накопительный пакет. Данный пример очень хорошо иллюстрирует все достоинства новой модели обновления. Чтобы привести в актуальное состояние систему, выпущенную более 2,5 лет назад, нам потребовалось всего четыре пакета обновления и менее часа времени.
Для полноценного удаленного управления данным сервером нужно включить соответствующие правила брандмауэра, для этого выйдем в командную строку и запустим оболочку PowerShell:
powershell
Цвет окна при этом останется черным, но в начале приглашения командной строки появятся буквы PS. Затем последовательно выполним следующие команды:
Enable-NetFireWallRule -DisplayName "Инструментарий управления Windows (DCOM - входящий трафик)"
Enable-NetFireWallRule -DisplayGroup "Удаленное управление журналом событий"
Enable-NetFireWallRule -DisplayGroup "Удаленное управление Windows"
Enable-NetFireWallRule -DisplayGroup "Удаленное управление томами"
Enable-NetFireWallRule -DisplayGroup "Удаленное управление брандмауэром Windows"
Enable-NetFireWallRule -DisplayGroup "Удаленное управление назначенными задачами"
для англоязычного выпуска Hyper-V эти команды будут выглядеть следующим образом:
Enable-NetFireWallRule -DisplayName "Windows Management Instrumentation (DCOM-In)"
Enable-NetFireWallRule -DisplayGroup "Remote Event Log Management"
Enable-NetFireWallRule -DisplayGroup "Remote Service Management"
Enable-NetFireWallRule -DisplayGroup "Remote Volume Management"
Enable-NetFireWallRule -DisplayGroup "Windows Firewall Remote Management"
Enable-NetFireWallRule -DisplayGroup "Remote Scheduled Tasks Management"
На этом настройку сервера можно считать законченной, и мы перейдем к настройке клиентского ПК.
Настройка клиента для работы с Hyper-V Server
Для работы с Hyper-V Server 2016 вам потребуется ПК с операционной системой Windows 10 версий Pro или Enteprise х64, иные редакции или 32-х разрядные версии не подойдут, так как в них нет возможности установить диспетчер Hyper-V.
Прежде всего проверим, что сервер доступен по своему сетевому имени, в доменной сети ему должна соответствовать A-запись на DNS-сервере, в одноранговой сети такую запись потребуется создать вручную на локальном DNS, либо добавить нужную запись в файл hosts клиентской машины, в нашем случае она выглядит следующим образом:
192.168.16.146 HV-CORE-2016
Если учетная запись под которой вы работаете на клиентском ПК отличается от учетных данных администратора Hyper-V, а это практически всегда так, даже если вы работаете в доменной сети (мы надеемся, что вы не используете в повседневной деятельности учетку Администратора домена), то следует явно указать учетные данные для соединений с сервером:
cmdkey /add:HV-CORE-2016 /user:Администратор /pass:MyPa$$word
В особых пояснениях данная команда не нуждается, мы указали сетевой узел и учетные данные для подключения к нему. Если вы будете подключаться к нескольким серверам, то необходимо выполнить данное действие для каждого из них.
Теперь запустим консоль PowerShell от имени Администратора и выполним следующую команду:
winrm quickconfig
Утвердительно отвечаем на все вопросы, при этом будет настроен автоматический запуск службы WinRM и созданы разрешающие правила в брандмауэре.
После чего добавим наш сервер в доверенные узлы:
Set-Item WSMan:localhostClientTrustedHosts -Value "HV-CORE-2016"
Если серверов несколько — добавляем в доверенные каждый из них.
Теперь через командную строку или команду Выполнить (Win + R) запустим оснастку dcomcnfg, в ней разверните дерево Службы компонентов — Компьютеры — Мой компьютер. После чего по щелчку правой кнопки мыши выберите Свойства и перейдите на закладку Безопасность COM — Права доступа — Изменить ограничения и в открывшемся окне установите для пользователя АНОНИМНЫЙ ВХОД права Удаленный доступ.
Теперь попробуем подключиться к удаленному серверу. Запустите оснастку Управление компьютером и щелкнув правой кнопкой на верхнем уровне выберите Подключиться к другому компьютеру.
После чего вы сможете управлять удаленным сервером используя привычные инструменты. Можно просмотреть журнал событий:
Управлять заданиями планировщика, дисками, службами:
Единственной недоступной оснасткой останется Диспетчер устройств, при желании его можно включить, но особого смысла в этом нет, так как он будет доступен только на чтение.
Теперь установим Диспетчер Hyper-V, для этого откроем оснастку Программы и компоненты и перейдем во Включение или отключение компонентов Windows. В открывшемся окне найдем пункт Hyper-V и отметим для установки Средства управления Hyper-V.
После чего запустим установленную оснастку и подключимся к серверу Hyper-V. В первую очередь обеспечим связь наших виртуальных машин с внешним миром, для этого перейдем в Диспетчер виртуальных коммутаторов и создадим новый коммутатор с типом Внешний и укажем для него ту сетевую карту, которая смотрит в локальную сеть. Более подробно о настройке сети в Hyper-V вы можете прочитать здесь.
Для того, чтобы установить ОС на виртуальную машину нам потребуется передать на сервер Hyper-V установочный образ, это можно легко сделать через подключение к стандартным общим ресурсам, например, набрав в адресной строке проводника:
\HV-CORE-2016C$
мы попадем на диск C сервера.
Мы не будем подробно рассматривать процесс создания новой виртуальной машины, но обратим внимание на некоторые моменты. Прежде всего Снимки они же Контрольные точки, это удобно для целей настройки и тестирования, но не следует использовать их в продакшене, поэтому использование снимков у рабочих виртуальных машин следует отключить (можно оставить на период настройки, но обязательно выключить перед вводом в эксплуатацию).
Также обязательно настройте поведение виртуальной машины при перезагрузке сервера. Для этого в пунктах Автоматическое действие при запуске и Автоматическое действие при завершении укажите желаемое поведение. Обратите внимание, что при выборе пункта Сохранять состояние виртуальной машины следует проверить поведение прикладного ПО в этом режиме, так как не все приложения корректно ведут себя при выходе виртуальной машины из этого режима.
Для примера мы создали новую виртуалку и без каких-либо проблем установили туда свежую Ubuntu 19.04.
Как видим, работа с Hyper-V Server 2016 не доставляет никаких сложностей, достаточно лишь один раз выполнить ряд действий по настройке сервера и клиента, в чем вам поможет данная статья.
read more at Записки IT специалиста
Как бы не ругали пользователи Windows 10 но это самая популярная ОС. Серверные ОС Windows Server также не имеют аналогов. Это что касается относительной простоты настройки и дружелюбности к пользователю. Каждый меня поймет кто хоть когда то пытался соорудить нечто подобное Active Directory на Linux. Это небольшое отступление. Но сегодня я хочу рассказать насколько проста установка и настройка Microsoft Hyper-V Server 2019. Это бесплатный гипервизор от Microsoft.
Я долго сравнивал разные бесплатные гипервизоры (Proxmox, VMWare). Мне хотелось чтобы была возможность управлять сервером через WEB и консоль. Рассматривал Proxmox, но совсем не тривиальная настройка меня остановила.
Про Microsoft Hyper-V Server я знал, но в нем не было WEB интерфейса для управления. Хотя подкупал RDP доступ, Hype-V Manager и возможность использовать Powershell со всем его огромным функционалом.
Буквально на днях узнал о существовании WEB консоли для управления WIndows серверами Windows Admin Center. Этот факт подтолкнул меня к установке бесплатного гипервизора от Microsoft последней версии.
Установка Microsoft Hyper-V Server 2019
Перед началом установки необходимо проверить в BIOS что аппаратная виртуализация включена. У Intel — Intel VT (VT-x и VT-d), AMD — AMD-V. Скачать Hyper-V Server 2019 можно с сайта Microsoft. Обычно я использую английскую версию серверного софта для исключения различных проблем с локализацией.
Скачанный ISO файл необходимо записать на USB Flash. Для этих целей я использую Rufus. Используйте накопитель с минимальным объемом не менее 4 Гб.
- Устройство: выбрать ваш Flash накопитель
- Метод загрузки: Диск или ISO нажать кнопку ВЫБРАТЬ и указать ISO образ Hyper-V 2019
- Файловая система: NTFS
Нажать СТАРТ и дождаться окончания записи образа на Flash накопитель.
После окончания записи на флешку можно приступить к установке системы.
Установка системы проста как любой Windows, на этом заострять внимание я не буду.
Настройка Microsoft Hyper-V Server 2019
Пройдя авторизацию в Hyper-V Server возникнет окошко Server Configuration с основными настройками сервера. Для использования каждого пункта нажимаем соответствующую цифру и далее Enter.
- Domain/Workgroup — добавить сервер в рабочую группу либо домен. По умолчанию используется рабочая группа WORKGROUP
- Computer Name — имя компьютера. Можно оставить автоматически присвоенное либо изменить на свое.
- Add Local Administrator — добавить локального администратора. Позволяет добавить нескольких локальных администраторов. По умолчанию включен только один администратор с логином Administrator
- Configure Remote Management — настройка разрешений удаленного управления сервером для подключения с помощью Powershell, WEB консоли и т.д.
- Windows Update Settings — установка обновлений Windows. Возможные варианты: Automatic — полностью автоматически, DownloadOnly — только скачать, Manual — ручной режим.
- Download and Install Updates — скачать и установить обновления. Непосредственный запуск установки обновлений.
- Remote Desktop — удаленный доступ к рабочему столу. Необходимо включить для удаленного доступа по RDP. Можно использовать RDP with NLA и RDP any. RDP with NLA для использования на клиентах Windows XP SP3 и выше, более безопасный и быстрый вариант. RDP any для использования на любых клиентах Windows, Linux, Android и т.д.
- Network Settings — доступ к настройкам сетевой карты. Изменить IP, маску, DNS и т.д.
- Date and Time — открывает окошко настройки времени с возможностью изменить сервер синхронизации
- Telemetry settings — сбор сведений телеметрии. Для выбора есть Security, Basic, Enhanced, Full.
- Log Off User — выйти из текущей сессии
- Restart Server — перезагрузить сервер
- Shut Down Server — выключить сервер
- Exit to Command Line — закрыть текущее окно настроек и оставить активным только окно командной строки.
Проведем первоначальные настройки сервера с помощью консоли Server Configuration
Изменим имя компьютера на WHS19. Включим удаленное управление Remote Management и Remote Desktop. Windows Update Settings я оставляю в изначальном состоянии DownloadOnly. Меняю часовой пояс на свой и настройки телеметрии ставлю Secutiry. Сетевые настройки приходят по DHCP (не забываем сделать резервацию) или вручную. После измененных настроек рекомендую перезагрузить сервер.
Если по чистой случайности вы закрыли оба окна (консоль cmd и Server Configuration) можно воспользоваться сочетанием клавиш Ctrl+Shift+Esc и вызвать диспетчер задач.
В диспетчере задач меню File — Run new task можно запустить cmd, powershell и любое приложение установленное в системе. Небольшой лайфхак: как быстро скопировать файл со своей машины на сервер Hyper-V Core. Заходим на сервер по RDP, запускаем блокнот. В блокноте нажимает File — Open. На своем компьютере выбираем нужный файл и копируем его в буфер обмена. На сервере в открытом окне блокнота нажимаем правой кнопкой и выбираем вставить. Файл скопируется в текущее место открытое в блокноте.
Настройка дисков
В моём сервере установлено 3 диска. На одном диске установлена система, два других под виртуальные машины и резервные копии. Запустим Powershell из консоли cmd.
Получим список дисков установленных в сервере
В моем случае система установлена на диск 0 — OCZ-VERTEX3. Диск 1 WDC WD1600AAJS я буду использовать под виртуальные машины. И самый емкий из установленных диск 2 HGST HTS725050A7E630 использую под резервные копии. Подготовим диски.
Создадим новый раздел на диске и присвоим ему букву D.
New-Partition -DiskNumber 1 -DriveLetter D –UseMaximumSize
Отформатируем диск под файловую систему NTFS
Format-Volume -DriveLetter D -FileSystem NTFS -NewFileSystemLabel "VMDrive"
Создаем новый раздел на диске HGST для резервных копий и присвоим диску букву E
New-Partition -DiskNumber 2 -DriveLetter E –UseMaximumSize
Форматируем диск E
Format-Volume -DriveLetter E -FileSystem NTFS -NewFileSystemLabel "Backup"
Место хранения виртуальных машин
По умолчанию система сохраняет новые виртуальные машины на диск C. Изменим путь сохранения на диск D
Создаем папку для хранения виртуальных машин и дисков
New-Item -ItemType Directory D:Hyper-VVHD
Укажем системе куда сохранять настройки и диски виртуальных машин
Set-VMHost -VirtualMachinePath D:Hyper-V -VirtualHardDiskPath D:Hyper-VVHD
Проверим что все получилось
Get-VMHost | select virtualmachinepath, virtualharddiskpath
Настройка виртуального коммутатора Hyper-V
Нам необходимо создать виртуальный коммутатор который будет связан с сетевой картой сервера Hyper-V. Он будет получать сетевые адреса также по DHCP как и остальные физические машины в сети.
Проверим поддерживает ли наша сетевая карта технологию SR-IOV (Single Root Input/Output Virtualization). Данная технология виртуализации предоставляет виртуальным машинам прямой доступ к части аппаратных возможностей сетевой карты.
Если данная технология поддерживается, необходимо ее включить командлетом Enable-NetAdapterSriov. После создания виртуального коммутатора включить данную технологию уже не получится.
Получим список всех сетевых адаптеров установленных в системе.
Создадим новый виртуальный коммутатор с именем External. Он будет использоваться как внешний сетевой адаптер получающий адреса по DHCP. При создании включим функцию совместного использования виртуального коммутатора и сетевой карты с виртуальной машиной.
New-VMSwitch -Name "External" -NetAdapterName "Ethernet" -AllowManagementOS $True
Просмотреть детальную информацию по сетевым настройкам можно так
Get-NetIPConfiguration –Detailed
Enhanced Session Mode
Включение функции Enhanced Session Mode позволит подключиться к консоли виртуальной машины используя RDP соединение. С той лишь разницей что подключение будет не к самой виртуальной машине а через средства интеграции гипервизора. Данный метод позволяет подключаться к виртуальной машине даже с отсутствующей сетевой картой. Для себя я вижу удобство именно в подключении к виртуальным машинам с изолированной сетью. Нет необходимости запускать консоль Hyper-V, все можно сделать через RDP.
Основные преимущества Enhanced Session Mode
- можно выбрать произвольное разрешение экрана
- использование локальных принтеров
- перенаправление USB устройств
- подключение дисков
- общий буфера обмена
- работа с аудиоустройствами
- проброс смарт-карт
- поддержка остальных plug-and-play устройств
Включим данный режим сразу для всего сервера
Set-VMHost -EnableEnhancedSessionMode $True -Passthru
Удаленное управление Microsoft Hyper-V Server 2019
Удаленное управление Hyper-V сервером доступно многими средствами. Среди них консоль Hyper-V Manager, Powershell, Windows Admin Center, MMC. Для удаленного управления сервером Hyper-V необходимо произвести настройки на сервере и на каждом клиенте с которого будет подключение. Настройку клиента буду проводить на Windows 10 Pro (минимально необходимая версия).
Если сервер используется в сети с доменом, то необходимо добавить запись типа A в DNS сервер (обычно это контроллер домена). В случае рабочей группы просто добавляем имя сервера Hyper-V в файл C:WindowsSystem32driversetchosts. В моем случае запись будет выглядеть так:
Вначале идет IP адрес сервера: 172.16.169.49 далее через пробел имя WHS19. В случае использования файла hosts не забываем добавлять запись на каждой машине используемой для управления сервером.
На сервере Hyper-V запустим Powershell и выполним командлет для разрешения удаленного подключения
По умолчанию данный командлет открывает доступ только из доменной и приватной сети. Разрешим доступ также из публичной сети.
Enable-PSRemoting -SkipNetworkProfileCheck -Force
Включаем поддержку проверки подлинности CredSSP на стороне сервера
Enable-WSManCredSSP -Role Server
Проверим что на сервере открыт порт WinRM
Test-NetConnection -ComputerName WHS19 -Port 5985
В выводе командлета поле TcpTestSucceeded должно иметь статус True.
Добавим в межсетевой экран правило разрешающее подключаться с любых IP адресов
Set-NetFirewallRule -Name "WinRM-HTTP-In-TCP-Public" -RemoteAddress Any
Список правил межсетевого экрана касаемо WinRM можно посмотреть с помощью командлета Get-NetFirewallRule
Get-NetFirewallRule -DisplayName "Windows Remote*" |where {$_.Enabled -eq $True}|ft displayname, Description
Добавим еще одно разрешающее правило для доступа с помощью оснасток MMC
Enable-NetFirewallRule -DisplayGroup "Remote Administration"
На данном этапе с настройкой сервера мы закончили переходим к настройке клиента.
Настройка клиента Windows 10
Если вы следовали четко по инструкции то прописали имя компьютера в соответствии с его адресом в файле hosts либо на DNS сервере. Следующим этапом убедимся что на компьютере установлена консоль управления Hyper-V Management. Если её нет, давайте установим.
Нажимаем правой кнопкой мыши на Пуск -> Приложения и возможности -> Программы и компоненты -> Включение или отключение компонентов Windows -> Hyper-V -> Средства управления Hyper-V
Далее запускаем Powershell с правами администратора и выполняем все действия по ним.
Включим возможность удаленного подключения
Добавим сервер Hyper-V в доверенные узлы на локальном ПК
Set-Item WSMan:localhostClientTrustedHosts -Value "WHS19"
Проверим что все получилось
Get-Item WSMan:localhostClientTrustedHosts
Настройка проверки подлинности CredSSP для службы WS-Management
Enable-WSManCredSSP -Role client -DelegateComputer "WHS19"
Отредактируем локальную групповую политику. Нажимаем правой кнопкой мыши Пуск -> Выполнить запускаем cmd и далее gpedit. В русской версии: Конфигурация компьютера -> Административные шаблоны -> Система -> Передача данных -> Разрешить передачу новых учетных данных с проверкой подлинности сервера «только NTLM». В английской версии: Computer Configuration -> Administrative Template -> System -> Credentials Delegation -> Allow delegating fresh credentials with NTLM-only server authentication. Включаем данную политику и добавляем сервер Hyper-V в список разрешенных.
Настройка клиента закончена. Пробуем подключится к серверу используя Hyper-V Manager.
Подключение к серверу с помощью Hyper-v Manager
Запустим Hyper-V Manager (он же Диспетчер Hyper-V). Нажимаем Подключиться к серверу. В открытом окне выбираем поле Другой компьютер пишем имя нашего сервера: WHS19. Ставим галочку Подключиться как другой пользователь.
Нажимаем кнопку Выбрать пользователя
Внимательно заполняем логин и пароль для входа на сервер Hyper-V. Обязательно в поле имя пользователя вначале пишем имя компьютера затем имя пользователя. В нашем случае WHS19Administrator. Нажимаем OK. Все готово, теперь можно управлять сервером Hyper-V 2019 из удобной консоли.
Подключение к серверу с помощью Windows Admin Center
Для использования Windows Admin Center необходимо его скачать. Скопируем скачанный файл на сервер Hyper-V. Я скопировал файл WindowsAdminCenter2009.msi по пути C:UsersAdministrator. Переходим в открытую консоль cmd или powershell и запускаем установку.
msiexec /i C:UsersAdministratorWindowsAdminCenter2009.msi /qn /L*v log.txt SME_PORT=9010 SSL_CERTIFICATE_OPTION=generate
Данная команда запустит скрытую установку Windows Admin Center. Журналирование установки идет в файл log.txt, порт для подключения я использую 9010 (можно указать любой свободный). Сертификат создается автоматически. Дожидаемся окончания установки и можем пробовать подключаться.
Из любого браузера открываем сайт https://whs19:9010 вводим учетные данные от сервера и попадаем в консоль управления сервером Windows Admin Center.
В консоли Windows Admin Center можно следить за загрузкой сервера через удобные графики расположенные на одной странице. Можно быстро выключить, перезагрузить, переименовать сервер. Большой набор функций доступен изначально, также есть воможность расширения за счет дополнительных плагинов.
Можно создавать/удалять/управлять виртуальными машинами. Очень удобно прямо из браузера без необходимости запуска других консолей.
Резюмируя хочу сказать что WAC интересный инструмент для быстрой настройки/доступа к серверу. Хотя конечно не без недостатков. Мне лично не нравится то что просмотр логов идет сплошным текстом без выделения по цвету (warning, error и т.д.). В общем смотрите, изучайте, пользуйтесь.
Подключаться к серверу можно и с консоли mmc и с powershell. В общем большой набор инструментов для управления сервером. Установка и настройка Microsoft Hyper-V Server 2019 в целом почти идентична с версией сервера 2016. Можно использовать данную статью как мануал для старой версии.
Хотите отблагодарить автора статьи? Это даст ему дополнительный стимул к написанию новых статей.
В этой статье я постарался собрать в одном месте основные команды cmd и PowerShell, которые полезны при настройке и управлении Windows Server Core. Думаю, этот гайд будет полезен как новичкам, так и опытным системным администраторам, как справочник по базовым командам Server Core.
Содержание:
- Настройка Windows Server Core с помощью SCONFIG
- Основные команды PowerShell для настройки Server Core
- Установка обновлений в Server Core
- Часто используемые команды в Server Core
Напомним, что Server Core это особый режим установки Windows Server без большинства графических инструментов и оболочек. Управление таким сервером выполняется из командной строки или удаленно.
Преимущества Windows Serve Core:
- Меньшие требования к ресурсам;
- Повышенная стабильность, безопасность, требует установки меньшего количества обновлений (за счет меньшего количества кода и используемых компонентов);
- Идеально подходит для использования в качестве сервера для инфраструктурных ролей (контроллер домена Active Directory, DHCP сервер, Hyper-V сервер, файловый сервер и т.д.).
Server Core лицензируется как обычный физический или виртуальный экземпляр Windows Server (в отличии от Hyper-V Server, который полностью бесплатен).
Для установки Windows Server 2016/2019 в режиме Core нужно выбрать обычную установку. Если вы выберите Windows Server (Desktop Experience), будет установлен GUI версия операционной системы (в предыдущих версиях Windows Server она называлась Server with a GUI).
После установки Windows Server Core перед вами появляется командная строка, где нужно задать пароль локального администратора.
При входе на Server Core открывается командная строка (cmd.exe). Чтобы вместо командной строки у вас всегда открывалась консоль PowerShell.exe, нужно внести изменения в реестр. Выполните команды:
Powershell.exe
Set-ItemProperty -Path 'HKLM:SoftwareMicrosoftWindows NTCurrentVersionWinLogon' -Name Shell -Value 'PowerShell.exe'
И перезагрузите сервер:
Restart-Computer -Force
Если вы случайно закрыли окно командной строки, нажмите сочетание клавиш Ctrl+Alt+Delete, запустите Task Manager -> File -> Run -> выполните
cmd.exe
(или
PowerShell.exe
).
Настройка Windows Server Core с помощью SCONFIG
Для базовой настройки Server Core можно использовать встроенный скрипт sconfig. Просто выполните команду sconfig в консоли. Перед вами появиться меню с несколькими пунктами:
С помощью меню Server Configuration можно настроить:
- Добавить компьютер в домен или рабочую группу;
- Изменить имя компьютера (hostname);
- Добавить локального администратора;
- Разрешить/запретить удаленное управления и ответы на icmp;
- Настроить параметры обновления через Windows Update;
- Установить обновления Windows;
- Включить/отключить RDP;
- Настроить параметры сетевых адаптеров (IP адрес, шлюз, DNS сервера);
- Настроить дату и время;
- Изменить параметры телеметрии;
- Выполнить logoff, перезагрузить или выключить сервер.
Все пункт в меню
sconfig
пронумерованы. Чтобы перейти в определенное меню наберите его номер и Enter.
В некоторых пунктах меню настройки sconfig есть вложенные пункты. Там также, чтобы перейти к определенной настройке, нужно сделать выбор цифры пункта меню.
Не будем подробно рассматривать все пункты настройки sconfig, т.к. там все достаточно просто и очевидно. Однако в большинстве случаев администраторы предпочитают использовать для настройки новых хостов с Server Core различные PowerShell скрипты. Это намного проще и быстрее, особенно при массовых развёртываниях.
Основные команды PowerShell для настройки Server Core
Рассмотрим основные команды PowerShell, которые можно использовать для настройки Server Core.
Узнать информацию о версии Windows Server и версии PowerShell:
Get-ComputerInfo | select WindowsProductName, WindowsVersion, OsHardwareAbstractionLayer
$PSVersionTable
Для перезагрузки Server Core нужно выполнить команду PowerShell :
Restart-Computer
Чтобы выполнить выход из консоли Server Core, наберите:
logoff
Настройка параметров сети
Теперь нужно из PowerShell нужно настроить параметры сети (по умолчанию Windows настроена на получение адреса от DHCP). Выведите список сетевых подключений:
Get-NetIPConfiguration
Теперь укажите индекс интерфейса сетевого адаптера (InterfaceIndex), который нужно изменить и задайте новый IP адрес:
New-NetIPaddress -InterfaceIndex 4 -IPAddress 192.168.13.100 -PrefixLength 24 -DefaultGateway 192.168.13.1
Set-DNSClientServerAddress –InterfaceIndex 4 -ServerAddresses 192.168.13.11,192.168.13.
111
Проверьте текущие настройки:
Get-NetIPConfiguration
Если нужно сбросить IP адрес и вернуться к получению адреса от DHCP, выполните:
Set-DnsClientServerAddress –InterfaceIndex 4 –ResetServerAddresses
Set-NetIPInterface –InterfaceIndex 4 -Dhcp Enabled
Включить/отключить сетевой адаптер:
Disable-NetAdapter -Name “Ethernet0”
Enable-NetAdapter -Name “Ethernet 0”
Включить, отключить, проверить статус поддержки IPv6 для сетевого адаптера:
Disable-NetAdapterBinding -Name "Ethernet0" -ComponentID ms_tcpip6
Enable-NetAdapterBinding -Name "Ethernet0" -ComponentID ms_tcpip6
Get-NetAdapterBinding -ComponentID ms_tcpip6
Настроить winhttp прокси сервер для PowerShell и системных подключений:
netsh Winhttp set proxy <servername>:<port number>
Настройка времени/даты
Вы можете настроить дату, время, часовой пояс с помощью графической утилиты
intl.cpl
или с помощью PowerShell:
Set-Date -Date "09/03/2022 09:00"
Set-TimeZone "Russia Time Zone 3
Задать имя компьютера, добавить в домен, активация
Чтобы изменить имя компьютера:
Rename-Computer -NewName win-srv01 -PassThru
Добавить сервер в домен Active Directory:
Add-Computer -DomainName "corp.winitpro.ru " -Restart
Если нужно добавить дополнительных пользователей в администраторы, можно настроить групповую политику или добавить вручную:
Add-LocalGroupMember -Group "Administrators" -Member "corpanovikov"
Для активации Windows Server нужно указать ваш ключ:
slmgr.vbs –ipk <productkey>
slmgr.vbs –ato
Или можно активировать хост на KMS сервере (например, для Windows Server 2019):
slmgr /ipk N69G4-B89J2-4G8F4-WWYCC-J464C
slmgr /skms kms-server.winitpro.ru:1688
slmgr /ato
Разрешить удаленный доступ
Разрешить удаленный доступ к Server Core через RDP:
cscript C:WindowsSystem32Scregedit.wsf /ar 0
Разрешить удаленное управление:
Configure-SMRemoting.exe –Enable
Enable-NetFirewallRule -DisplayGroup “Windows Remote Management”
Текущие настройки:
Configure-SMRemoting.exe -Get
Разрешить Win-Rm PowerShell Remoting:
Enable-PSRemoting –force
Сервером с Windows Server можно управлять удаленно c другого сервера (с помощью ServerManager.exe), через браузер с помощью Windows Admin Center (WAC), с любой рабочей станции с помощью инструментов администрирования RSAT, подключаться к нему по RDP, PowerShell Remoting или SSH (в современных версиях Windows есть встроенный SSH сервер).
Настройка Windows Firewall
Информация о настройке Windows Firewall есть в статье по ссылке. Здесь оставлю несколько базовых команд.
Включить Windows Defender Firewall для всех профилей:
Set-NetFirewallProfile -Profile Domain,Public,Private -Enabled True
Изменить тип сети с Public на Private:
Get-NetConnectionProfile | Set-NetConnectionProfile -NetworkCategory Private
Полностью отключить Windows Firewall (не рекомендуется):
Get-NetFirewallProfile | Set-NetFirewallProfile -enabled false
Разрешить подключение через инструменты удаленного управления:
Enable-NetFireWallRule -DisplayName “Windows Management Instrumentation (DCOM-In)”
Enable-NetFireWallRule -DisplayGroup “Remote Event Log Management”
Enable-NetFireWallRule -DisplayGroup “Remote Service Management”
Enable-NetFireWallRule -DisplayGroup “Remote Volume Management”
Enable-NetFireWallRule -DisplayGroup “Remote Scheduled Tasks Management”
Enable-NetFireWallRule -DisplayGroup “Windows Firewall Remote Management”
Enable-NetFirewallRule -DisplayGroup "Remote Administration"
Установка обновлений в Server Core
Для управления параметрами обновлений предпочтительно использовать групповые политики Windows Update, но можно задать параметры и вручную.
Отключить автоматическое обновление:
Set-ItemProperty -Path HKLM:SoftwarePoliciesMicrosoftWindowsWindowsUpdateAU -Name AUOptions -Value 1
Автоматически скачивать доступные обновления:
Set-ItemProperty -Path HKLM:SoftwarePoliciesMicrosoftWindowsWindowsUpdateAU -Name AUOptions -Value 3
Получить список установленных обновлений:
Get-Hotfix
Или
wmic qfe list
Для ручной установки обновлений Windows можно использовать утилиту wusa:
Wusa update_name.msu /quiet
Также для установки и управления обновлениями из командной строки удобно использовать PowerShell модуль PSWindowsUpdate.
Управление ролями, службами и процессами Windows
Для получения списка всех доступных ролей в Windows Server Core выполните команду PowerShell:
Get-WindowsFeature
Получить список всех установленных ролей и компонентов в Windows Server(можно быстро понять, для чего используется сервер):
Get-WindowsFeature | Where-Object {$_. installstate -eq "installed"} | ft Name,Installstate
Например, для установки службы DNS воспользуйтесь такой командой:
Install-WindowsFeature DNS -IncludeManagementTools
Список всех служб в Windows:
Get-Service
Список остановленных служб:
Get-Service | Where-Object {$_.status -eq “stopped”}
Перезапустить службу:
Restart-Service -Name spooler
Для управление процессами можно использовать стандартный диспетчер задач (taskmgr.exe) или PowerShell модуль Processes:
Get-Process cmd, proc1* | Select-Object ProcessName, StartTime, MainWindowTitle, Path, Company|ft
Часто используемые команды в Server Core
Ну и наконец, приведу список различных полезных мне команд, которые я периодически использую в Server Core.
Информация о статусе и здоровье физических дисков (используется стандартный модуль управления дисками Storage):
Get-PhysicalDisk | Sort Size | FT FriendlyName, Size, MediaType, SpindleSpeed, HealthStatus, OperationalStatus -AutoSize
Информация о свободном месте на диске:
Get-WmiObject -Class Win32_LogicalDisk |
Select-Object -Property DeviceID, VolumeName, @{Label='FreeSpace (Gb)'; expression={($_.FreeSpace/1GB).ToString('F2')}},
@{Label='Total (Gb)'; expression={($_.Size/1GB).ToString('F2')}},
@{label='FreePercent'; expression={[Math]::Round(($_.freespace / $_.size) * 100, 2)}}|ft
Информация о времени последних 10 перезагрузок сервера:
Get-EventLog system | where-object {$_.eventid -eq 6006} | select -last 10
Список установленных программ:
Get-ItemProperty HKLM:SoftwareWow6432NodeMicrosoftWindowsCurrentVersionUninstall* | Select-Object DisplayName, DisplayVersion, Publisher, InstallDate | Format-Table –AutoSize
Скачать и распаковать zip файл с внешнего сайта:
Invoke-WebRequest https://contoso/test.zip -outfile test.zip
Expand-Archive -path '.test.zip' -DestinationPath C:UsersAdministratorDocuments
Чтобы скопировать все файлы из каталога на удаленный компьютер по сети можно использовать Copy-Item:
$session = New-PSSession -ComputerName remotsnode1
Copy-Item -Path "C:Logs*" -ToSession $session -Destination "C:Logs" -Recurse -Force
Для установки драйвера можно использовать стандартную утилиту:
Pnputil –i –a c:distrhpdp.inf
Также Microsoft предлагает специальный пакет Server Core App Compatibility Feature on Demand (FOD), который позволяет установить в Windows Server 2019 некоторые графические инструменты и консоли (MMC, Eventvwr, Hyper-V Manager, PerfMon, Resmon, Explorer.exe, Device Manager, Powershell ISE). Этот FOD доступен для загрузки в виде ISO при наличии активной подписки. Установка выполняется командой:
Add-WindowsCapability -Online -Name ServerCore.AppCompatibility~~~~0.0.1.0
Установка Server Core App Compatibility Feature on Demand будет использовать дополнительно около 200 Мб оперативной памяти в Server Core.
В этой статье я постарался собрать самые нужные команды, которые нужно постоянно держать под рукой при работе с Windows Server Core. Время от времени я буду обновлять статью и добавлять новые команды, которые покажутся мне нужными для повседневной работы.
If you are like me, you are getting more and more excited about Microsoft Windows Server 2016; especially the core deployment with HyperV. No doubt then, you are already aware that after the quick and easy installation and configuration of the operating system, everyday management tasks require a longer process from the core GUI-less using commands and/or Powershell. And If you are running the HyperV server role, you will need remote management enabled to manage the HyperV remotely as the Microsoft Management Console (MMC) is not supported to run locally on the core deployment.
After the deployment and the initial server configuration try to use remote management of the HyperV, or the Core Server, from a remote full GUI windows OS deployment, and you will be greeted with the Computer Management error illustrated below.
Do not stress; in the next few lines, I will help you solve this issue quickly. Log into the core server, open a PowerShell window, and then run the following PowerShell commands:
- Enable-NetFireWallRule -DisplayName “Windows Management Instrumentation (DCOM-In)”
- Enable-NetFireWallRule -DisplayGroup “Remote Event Log Management”
- Enable-NetFireWallRule -DisplayGroup “Remote Service Management”
- Enable-NetFireWallRule -DisplayGroup “Remote Volume Management”
- Enable-NetFireWallRule -DisplayGroup “Remote Scheduled Tasks Management”
- Enable-NetFireWallRule -DisplayGroup “Windows Firewall Remote Management”
If security is not a concern, you can run the one single command shown below to disable the Core server local Firewall. I prefer using this command, as I am running a core server in a lab.
- Get-NetFirewallProfile | Set-NetFirewallProfile -enabled false
That is all that you need to do on the Core server.
Your next stop before getting on with the remote management is running the following command on the Management server; yes, the server you are going to use to manage the core server.
- Enable-NetFirewallRule -DisplayGroup “Remote Volume Management”
Conclusion
Running those commands, we showed you on both the core server and the management server will see you able to easily manage your core server, including the HyperV role, remotely.
I hope this quick post will help you with your day to day remote Windows core server management.
Hyper V Server Free, установка и первоначальная настройка.
В сегодняшней статье я хочу рассказать об установке и настройке бесплатного гипервизора первого уровня(bare-metal) Hyper V Server от Microsoft.
Hyper-V Server является бесплатным продуктом от компании Microsoft и представляет из себя платформу виртуализации, устанавливаемую непосредственно на «железо»(не путать с ролью Hyper-V, которую можно установить на Windows). Скачать его можно на сайте https://www.microsoft.com/en-us/evalcenter/evaluate-hyper-v-server-2019
Не буду распространяться о достоинствах и недостатках, скажу только, что в отличие от бесплатного гипервизора ESXi, имеющего много ограничений в сравнении с платными версиями, Hyper-V Server имеет ограничение, выражающееся в отсутствии графического интерфейса и некоторые сложности в настройке. Хотя, вряд ли это можно считать существенными недостатками, ведь для управления серверами Hyper-V есть достаточно средств, в том числе и бесплатные от самой Microsoft.
Думаю, достаточно прелюдий, давайте приступим к установке.
Установка Hyper-V Server.
Установка Hyper-V Server ничем не отличается от установки Windows с графическим интерфейсом, как и установка Server Core, поэтому описывать ее еще раз я не буду.
Скажу только, что после установки вы не увидите привычный графический интерфейс. Вместо этого, будут доступны интерфейс командной строки, Powershell и утилита настройки сервера sconfig.
Итак, после установки, вам предложат сменить пароль для учетной записи Администратора, и снова, как и при установке Server Core откроется мастер настройки сервера sconfig.
К этому мастеру вы всегда можете вернуться, набрав в командной строке sconfig. Если вы закрыли все окна, открыть консоль Powershell или CMD можно из диспетчера задач, запустив его нажатием Ctrl+Shift+Esc, в меню «Файл» выбрать «Создать новую задачу» и, в открывшемся окне ввести название программы, которую хотите запустить( например powershell, cmd или notepad).
Но, вернемся к настройке. В меню sconfig все понятно, там можно сменить имя компьютера, добавить его в домен или рабочую группу, изменить сетевые настройки и т.д. Просто введите нужный пункт меню и нажмите Enter.
Я изменю имя сервера, создам еще одну учетку с правами администратора, разрешу удаленное управление(в том числе ping), удаленный доступ по RDP и настрою статический IP-адрес. Также, рекомендую скачать и установить доступные обновления. И создайте соответствующую запись на вашем ДНС-сервере или пропишите соответствие имени и IP-адреса сервера в файле hosts на машине, с которой будете управлять гипервизором.
После этого, можно подключиться к серверу по RDP. Но, подключившись к удаленному рабочему столу, мы увидим те же самые CMD и Powershell.
Для более удобного управления сервером у Microsoft есть бесплатный инструмент Windows Admin Center. Узнать о нем подробнее и скачать его можно по ссылке: https://docs.microsoft.com/ru-ru/windows-server/manage/windows-admin-center/understand/windows-admin-center
Также, управлять сервером можно с помощью Диспетчера серверов, входящего в «комплектацию» серверных операционных систем Windows Server, либо в пакет для удаленного администрирования RSAT.
Так вот, сейчас, при попытке добавить наш сервер для управления в Windows Admin Center, мы получим ошибку:
Для ее устранения нужно на клиентском компьютере, с которого производится управление сервером выполнить команду:
Set-Item WSMan:localhostClientTrustedHosts -Value «hvserver1» -Concatenate |
Она добавит сервер с именем «hvserver1» в список доверенных хостов на вашем клиентском компьютере. Ключ -Concatenate означает, что список нужно дополнить, а не перезаписать содержащиеся там записи.
Настройка правил файрволла на сервере:
Настройка файрволла для русскоязычной ОС:
Enable-NetFireWallRule -DisplayName «Инструментарий управления Windows (DCOM — входящий трафик)» Enable-NetFireWallRule -DisplayGroup «Удаленное управление журналом событий» Enable-NetFireWallRule -DisplayGroup «Удаленное управление Windows» Enable-NetFireWallRule -DisplayGroup «Удаленное управление томами» Enable-NetFireWallRule -DisplayGroup «Удаленное управление брандмауэром Windows» Enable-NetFireWallRule -DisplayGroup «Удаленное управление назначенными задачами» |
Настройка файрволла для англоязычной ОС:
Enable-NetFireWallRule -DisplayName «Windows Management Instrumentation (DCOM-In)» Enable-NetFireWallRule -DisplayGroup «Remote Event Log Management» Enable-NetFireWallRule -DisplayGroup «Remote Service Management» Enable-NetFireWallRule -DisplayGroup «Remote Volume Management» Enable-NetFireWallRule -DisplayGroup «Windows Firewall Remote Management» Enable-NetFireWallRule -DisplayGroup «Remote Scheduled Tasks Management» |
Разрешить удаленное управление дисками можно и так:
Enable-NetFirewallRule -name RVM-RPCSS-In-TCP,RVM-VDSLDR-In-TCP,RVM-VDS-In-TCP |
Отключить файрвол полностью можно командой:
Set-NetFirewallProfile -Profile Domain, Public, Private -Enabled False |
Разрешим удаленное управление:
и передачу учетных данных:
Enable-WSManCredSSP -Role server |
Будет создано правило файрвола для прослушивателя WinRM. Внимание, этот пункт завершится с ошибкой если любая из сетевых карточек имеет тип сети «публичная». Если у вас при настройке вышла такая ошибка, измените профиль этой сети командлетом Set-NetConnectionProfile и после этого запустите Enable-PSRemoting снова. Если вам нужна сетевая карточка с профилем «Публичная сеть» запустите Enable-PSRemoting с параметром -SkipNetworkProfileCheck в этом случае будут созданы правила файрвола, разрешающие доступ из общедоступных сетей в той же локальной подсети. Подробнее про PSRemoting можно прочитать здесь: https://docs.microsoft.com/en-us/powershell/module/microsoft.powershell.core/enable-psremoting?view=powershell-6
Проверить прослушивается ли порт WinRM можно командой:
также, может быть полезной команда:
winrm e winrm/config/listener |
Если подключение к Hyper V Server производится с компьютера, находящегося в другой локальной сети, и сервер является членом домена, проверьте разрешено ли политиками удаленное управление из этой сети. В политиках этот параметр находится по пути Конфигурация компьютера->Административные шаблоны->Компоненты Windows->Удаленное управление Windows->Служба удаленного управления Windows. Параметр Разрешить удаленное администрирование сервера средствами WinRM.
На клиентском компьютере можно выполнить команду, добавляющую учетные данные для подключения к серверу(если используются разные учетные данные).
cmdkey /add:HVSERVER1 /user:Администратор /pass:MyPa$$word |
и разрешим передачу учетных данных:
Enable-WSManCredSSP -Role client -DelegateComputer «hvserver1» |
Также, возможно, потребуется сделать следующее:
Через командную строку или команду Выполнить (Win + R) запустите оснастку dcomcnfg, в ней разверните дерево Службы компонентов — Компьютеры — Мой компьютер. После чего по щелчку правой кнопки мыши выберите Свойства и перейдите на закладку Безопасность COM — Права доступа — Изменить ограничения и в открывшемся окне установите для пользователя АНОНИМНЫЙ ВХОД права Удаленный доступ.
После этого можно будет подключиться к серверу с помощью Windows Admin Center и добавить сервер в Диспетчер серверов.
Настройка сети.
Настройку сети можно произвести из Windows Admin Center и в Диспетчере серверов. Правда, доступны не все настройки. Но тут на помощь всегда может прийти Powershell.
Например, настройку объединения сетевых карт можно сделать в Диспетчере серверов или в Powershell:
New-NetLbfoTeam -Name NicTeam -TeamMembers Ethernet0,Ethernet1 -TeamingMode SwitchIndependent -LoadBalancingAlgorithm Dynamic |
Изменить режим работы объединенного интерфейса можно при помощи командлета Set-NetLbfoTeam
Set-NetLbfoTeam -Name «NicTeam» -TeamingMode LACP |
Создать виртуальный коммутатор на основе созданного объединенного интерфейса:
New-VMSwitch -Name VMSwitch1 -NetAdapterName «NicTeam» -AllowManagementOS $true -Confirm:$false |
Настроить на нем IP-адрес:
New-NetIPAddress -InterfaceAlias «vEthernet (VMSwitch1)» -IPAddress 192.168.1.40 -PrefixLength 24 -DefaultGateway 192.168.1.1 |
Настроить днс-серверы:
Set-DnsClientServerAddress -InterfaceAlias «vEthernet (VMSwitch1)» -ServerAddresses 192.168.1.1,192.168.1.2 |
Вот еще несколько команд, которые могут пригодиться при настройке сети:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
Get-NetLbfoTeam Set-NetLbfoTeam -Name «NicTeam» -TeamingMode Lacp Remove-NetLbfoTeamNic -Team «Team-name» -VlanID «VLAN» Get-NetAdapter Rename-NetAdapter -Name «OldName» -NewName «NicTeam» Get-NetIPConfiguration Set-NetIPAddress -InterfaceAlias «vEthernet (VMSwitch1)» -IPAddress 192.168.1.70 -PrefixLength 24 Set-VMNetworkAdapterVlan -ManagementOS -Access -VlanId 100 Get-VM | Get-VMNetworkAdapter | Disconnect-VMNetworkAdapter Get-VMSwitch | Remove-VMSwitch -Force |
Ну и наконец управлять виртуальными машинами можно с помощью стандартной оснастки Hyper-V, которая доступна в составе компонентов Windows, если не ошибаюсь, с 8 версии(естественно, не Home редакции).
Для управления Hyper V Server, запустите оснастку Hyper-V и выберите «Подключиться к серверу».
В открывшемся окне выберите «Другой компьютер» и укажите имя Hyper-V Server. Если вы указали ранее учетные данные для управления сервером командой cmdkey, то просто нажмите ОК. Если нет, то выберите «Подключиться как другой пользователь» и укажите имя пользователя и пароль.
После подключения, вы сможете управлять виртуальными машинами и параметрами Hyper-V.
Хост с Hyper-V Server также может быть добавлен в Virtual Machine Manager.
Продолжая тему виртуализации на основе Hyper-V в данном материале мы рассмотрим установку и настройку бесплатного гипервизора Hyper-V Server 2016. Основным отличием этой версии от Hyper-V как роли Windows Server является его полная бесплатность — вам не требуются лицензии на серверную версию ОС и благодаря минимальному числу служб повышается стабильность, уменьшается возможный периметр атаки и сокращаются затраты на обслуживание. За это приходится платить более сложным процессом установки и настройки о которых мы расскажем в данной статье.
Научиться настраивать MikroTik с нуля или систематизировать уже имеющиеся знания можно на углубленном курсе по администрированию MikroTik. Автор курса, сертифицированный тренер MikroTik Дмитрий Скоромнов, лично проверяет лабораторные работы и контролирует прогресс каждого своего студента. В три раза больше информации, чем в вендорской программе MTCNA, более 20 часов практики и доступ навсегда.
На момент написания данной статьи Hyper-V Server 2016 является предпоследней версией гипервизора, однако в Hyper-V Server 2019 были обнаружены ошибки и релиз был отозван, в настоящий момент он недоступен для скачивания. А с учетом здоровой консервативности, версию 2016 можно смело рассматривать как основной гипервизор для современных внедрений, актуальность которого будет сохраняться еще как минимум в течении года — полутора, пока в новой версии найдут и исправят все ошибки, а также отшлифуют огрехи.
Получить Hyper-V Server 2016 можно на официальном сайте, для скачивания вам потребуется учетная запись Microsoft, либо будет необходимо заполнить небольшую анкету. При этом мы настоятельно не рекомендуем скачивать установочный образ из иных, непроверенных источников.
Установка и первоначальная настройка Hyper-V Server
Мы не будем подробно останавливаться на процессе установки — он ничем не отличается от установки других продуктов Microsoft и не должен вызвать каких-либо сложностей.
При первой загрузке вы попадете в интерфейс командной строки, в которой вам предложат изменить пароль Администратора, будьте внимательны, в русской системе по умолчанию активирована русская раскладка.
После чего нас встретит уже знакомый с версии Hyper-V Server 2012 текстовый интерфейс конфигурации сервера.
Если вы случайно закрыли это окно, то повторно его можно вызвать командой:
sconfig
Если же вы закрыли все окна и оказались перед пустым экраном, то нажмите Ctrl+Shift+Esc, данное сочетание клавиш работает в том числе и в RDP-сессии и вызывает диспетчер задач, с помощью которого вы можете запустить командную строку или утилиту конфигурации.
Далее идем практически по порядку. Но первым шагом следует изменить имя сервера на что-нибудь более информативное и удобное, в нашем случае это будет HV-CORE-2016. Затем, при необходимости, изменяем рабочую группу или присоединяем сервер к домену. Также рекомендуется добавить локального администратора, чтобы не использовать встроенную учетную запись.
Если вы хотите, чтобы ваш сервер отвечал на пинги, то следует явно разрешить такое поведение в пункте 4) Настройка удаленного управления, которое также должно быть включено.
Следующий пункт — Параметры центра обновления Windows имеют по умолчанию настройку Только скачивание, это означает, что установку обновлений вам надо будет запускать вручную. Если ваши виртуальные машины не предполагают режима работы 24/7 есть смысл рассмотреть вариант настройки Автоматически, тем более новая система обновлений предусматривает получение накопительного пакета один раз в месяц.
Затем включаем удаленный рабочий стол (пункт 7) и настраиваем сетевые параметры (пункт . Отдельным пунктом нас ожидает телеметрия (куда же без нее), полностью отключить ее невозможно, поэтому устанавливаем минимальный уровень — Безопасность.
После того, как вы настроили сеть дальнейшую работу с сервером удобнее производить по RDP, как минимум это позволить вам просто скопировать некоторые длинные команды. Но перед тем, как двигаться дальше следует скачать и установить доступные обновления (пункт 6).
В этом выпуске разработчики учли свои ошибки (в версии 2012 требовалось указывать совсем иные буквы, нежели было написано) и все параметры соответствуют указанным на экране, также, во избежание разночтений, используются только буквы латинского алфавита. Обновлений немного, всего три пакета, однако накопительный пакет старый — май 2018. Поэтому после установки обновлений их поиск следует повторить.
Действительно, теперь нам стал доступен последний накопительный пакет. Данный пример очень хорошо иллюстрирует все достоинства новой модели обновления. Чтобы привести в актуальное состояние систему, выпущенную более 2,5 лет назад, нам потребовалось всего четыре пакета обновления и менее часа времени.
Для полноценного удаленного управления данным сервером нужно включить соответствующие правила брандмауэра, для этого выйдем в командную строку и запустим оболочку PowerShell:
powershell
Цвет окна при этом останется черным, но в начале приглашения командной строки появятся буквы PS. Затем последовательно выполним следующие команды:
Enable-NetFireWallRule -DisplayName "Инструментарий управления Windows (DCOM - входящий трафик)"
Enable-NetFireWallRule -DisplayGroup "Удаленное управление журналом событий"
Enable-NetFireWallRule -DisplayGroup "Удаленное управление Windows"
Enable-NetFireWallRule -DisplayGroup "Удаленное управление томами"
Enable-NetFireWallRule -DisplayGroup "Удаленное управление брандмауэром Windows"
Enable-NetFireWallRule -DisplayGroup "Удаленное управление назначенными задачами"
для англоязычного выпуска Hyper-V эти команды будут выглядеть следующим образом:
Enable-NetFireWallRule -DisplayName "Windows Management Instrumentation (DCOM-In)"
Enable-NetFireWallRule -DisplayGroup "Remote Event Log Management"
Enable-NetFireWallRule -DisplayGroup "Remote Service Management"
Enable-NetFireWallRule -DisplayGroup "Remote Volume Management"
Enable-NetFireWallRule -DisplayGroup "Windows Firewall Remote Management"
Enable-NetFireWallRule -DisplayGroup "Remote Scheduled Tasks Management"
На этом настройку сервера можно считать законченной, и мы перейдем к настройке клиентского ПК.
Настройка клиента для работы с Hyper-V Server
Для работы с Hyper-V Server 2016 вам потребуется ПК с операционной системой Windows 10 версий Pro или Enteprise х64, иные редакции или 32-х разрядные версии не подойдут, так как в них нет возможности установить диспетчер Hyper-V.
Прежде всего проверим, что сервер доступен по своему сетевому имени, в доменной сети ему должна соответствовать A-запись на DNS-сервере, в одноранговой сети такую запись потребуется создать вручную на локальном DNS, либо добавить нужную запись в файл hosts клиентской машины, в нашем случае она выглядит следующим образом:
192.168.16.146 HV-CORE-2016
Если учетная запись под которой вы работаете на клиентском ПК отличается от учетных данных администратора Hyper-V, а это практически всегда так, даже если вы работаете в доменной сети (мы надеемся, что вы не используете в повседневной деятельности учетку Администратора домена), то следует явно указать учетные данные для соединений с сервером командой:
cmdkey /add:HV-CORE-2016 /user:Администратор /pass:MyPa$$word
В особых пояснениях данная команда не нуждается, мы указали сетевой узел и учетные данные для подключения к нему. Если вы будете подключаться к нескольким серверам, то необходимо выполнить данное действие для каждого из них.
Теперь запустим консоль PowerShell от имени Администратора и выполним следующую команду:
winrm quickconfig
Утвердительно отвечаем на все вопросы, при этом будет настроен автоматический запуск службы WinRM и созданы разрешающие правила в брандмауэре.
После чего добавим наш сервер в доверенные узлы:
Set-Item WSMan:localhostClientTrustedHosts -Value "HV-CORE-2016"
Если серверов несколько — добавляем в доверенные каждый из них.
Теперь через командную строку или команду Выполнить (Win + R) запустим оснастку dcomcnfg, в ней разверните дерево Службы компонентов — Компьютеры — Мой компьютер. После чего по щелчку правой кнопки мыши выберите Свойства и перейдите на закладку Безопасность COM — Права доступа — Изменить ограничения и в открывшемся окне установите для пользователя АНОНИМНЫЙ ВХОД права Удаленный доступ.
Теперь попробуем подключиться к удаленному серверу. Запустите оснастку Управление компьютером и щелкнув правой кнопкой на верхнем уровне выберите Подключиться к другому компьютеру.
После чего вы сможете управлять удаленным сервером используя привычные инструменты. Можно просмотреть журнал событий:
Управлять заданиями планировщика, дисками, службами:
Единственной недоступной оснасткой останется Диспетчер устройств, при желании его можно включить, но особого смысла в этом нет, так как он будет доступен только на чтение.
Теперь установим Диспетчер Hyper-V, для этого откроем оснастку Программы и компоненты и перейдем во Включение или отключение компонентов Windows. В открывшемся окне найдем пункт Hyper-V и отметим для установки Средства управления Hyper-V.
После чего запустим установленную оснастку и подключимся к серверу Hyper-V. В первую очередь обеспечим связь наших виртуальных машин с внешним миром, для этого перейдем в Диспетчер виртуальных коммутаторов и создадим новый коммутатор с типом Внешний и укажем для него ту сетевую карту, которая смотрит в локальную сеть. Более подробно о настройке сети в Hyper-V вы можете прочитать здесь.
Для того, чтобы установить ОС на виртуальную машину нам потребуется передать на сервер Hyper-V установочный образ, это можно легко сделать через подключение к стандартным общим ресурсам, например, набрав в адресной строке проводника:
\HV-CORE-2016C$
мы попадем на диск C сервера.
Мы не будем подробно рассматривать процесс создания новой виртуальной машины, но обратим внимание на некоторые моменты. Прежде всего Снимки они же Контрольные точки, это удобно для целей настройки и тестирования, но не следует использовать их в продакшене, поэтому использование снимков у рабочих виртуальных машин следует отключить (можно оставить на период настройки, но обязательно выключить перед вводом в эксплуатацию).
Также обязательно настройте поведение виртуальной машины при перезагрузке сервера. Для этого в пунктах Автоматическое действие при запуске и Автоматическое действие при завершении укажите желаемое поведение. Обратите внимание, что при выборе пункта Сохранять состояние виртуальной машины следует проверить поведение прикладного ПО в этом режиме, так как не все приложения корректно ведут себя при выходе виртуальной машины из этого режима.
Для примера мы создали новую виртуалку и без каких-либо проблем установили туда свежую Ubuntu 19.04.
Как видим, работа с Hyper-V Server 2016 не доставляет никаких сложностей, достаточно лишь один раз выполнить ряд действий по настройке сервера и клиента, в чем вам поможет данная статья.
Научиться настраивать MikroTik с нуля или систематизировать уже имеющиеся знания можно на углубленном курсе по администрированию MikroTik. Автор курса, сертифицированный тренер MikroTik Дмитрий Скоромнов, лично проверяет лабораторные работы и контролирует прогресс каждого своего студента. В три раза больше информации, чем в вендорской программе MTCNA, более 20 часов практики и доступ навсегда.