{"id":751,"date":"2022-11-04T09:29:20","date_gmt":"2022-11-04T13:29:20","guid":{"rendered":"https:\/\/anthonyfontanez.com\/?p=751"},"modified":"2022-11-04T09:29:23","modified_gmt":"2022-11-04T13:29:23","slug":"remotely-managing-windows-endpoints-part-i-domain-hybrid-joined-hosts","status":"publish","type":"post","link":"https:\/\/anthonyfontanez.com\/index.php\/2022\/11\/04\/remotely-managing-windows-endpoints-part-i-domain-hybrid-joined-hosts\/","title":{"rendered":"Remotely Managing Windows Endpoints Part I: Domain\/Hybrid Joined Hosts"},"content":{"rendered":"\n<p><\/p>\n\n\n\n<p>After a number of conversations with <a rel=\"noreferrer noopener\" href=\"https:\/\/twitter.com\/AdamGrossTX\" data-type=\"URL\" data-id=\"https:\/\/twitter.com\/AdamGrossTX\" target=\"_blank\">Adam Gross<\/a> in Discord voice on <a rel=\"noreferrer noopener\" href=\"https:\/\/winadmins.io\/\" data-type=\"URL\" data-id=\"https:\/\/winadmins.io\/\" target=\"_blank\">WinAdmins <\/a>about this topic, which initially started on <a rel=\"noreferrer noopener\" href=\"https:\/\/twitter.com\/AdamGrossTX\/status\/1554243725924220928\" data-type=\"URL\" data-id=\"https:\/\/twitter.com\/AdamGrossTX\/status\/1554243725924220928\" target=\"_blank\">Twitter<\/a> a while back, I finally decided to lab up some WinRM scenarios involving domain\/hybrid\/AAD joined devices and wanted to put together something documenting the configurations. I realized that there a few settings that I have taken for granted that others may not realize how they work, and I also wanted to explain how I have secured remote management of Windows endpoints from an identity-based access perspective in the past. Finally, I learned some things when I got to AAD-joined devices (more on that in part II).<\/p>\n\n\n\n<p>I only plan on covering configuring and securing Windows Remote Management (WinRM) traffic in these posts, but the same concepts can be applied to other common remote management protocols such as RDP, SMB, WMI\/RPC, etc.<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><a href=\"#configuring\" data-type=\"internal\" data-id=\"#configuring\">Configuring WinRM<\/a><\/li>\n\n\n\n<li><a href=\"#testing\" data-type=\"internal\" data-id=\"#testing\">Testing WinRM<\/a><\/li>\n\n\n\n<li><a href=\"#securing\" data-type=\"internal\" data-id=\"#securing\">Securing WinRM Further<\/a><\/li>\n\n\n\n<li><a href=\"#testing-new-config\" data-type=\"internal\" data-id=\"#testing-new-config\">Testing the New Configuration<\/a><\/li>\n\n\n\n<li><a href=\"#conclusion\" data-type=\"internal\" data-id=\"#conclusion\">Conclusion<\/a><\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"configuring\">Configuring WinRM<\/h2>\n\n\n\n<p><\/p>\n\n\n\n<p>First things first: Using the <code>winrm quickconfig<\/code> command should be reserved for one-off testing\/configuration. We want to manage devices at scale and running a command like that doesn&#8217;t scale easily when there are better tools at our disposal. Let&#8217;s configure a basic GPO to enable and secure WinRM.<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"771\" src=\"https:\/\/anthonyfontanez.com\/wp-content\/uploads\/2022\/10\/image-1-1024x771.png\" alt=\"\" class=\"wp-image-753\" srcset=\"https:\/\/anthonyfontanez.com\/wp-content\/uploads\/2022\/10\/image-1-1024x771.png 1024w, https:\/\/anthonyfontanez.com\/wp-content\/uploads\/2022\/10\/image-1-300x226.png 300w, https:\/\/anthonyfontanez.com\/wp-content\/uploads\/2022\/10\/image-1-768x578.png 768w, https:\/\/anthonyfontanez.com\/wp-content\/uploads\/2022\/10\/image-1.png 1039w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><figcaption class=\"wp-element-caption\">WinRM Service GPO Configuration<\/figcaption><\/figure>\n<\/div>\n\n\n<p>The above image shows a basic WinRM service configuration applied to the endpoints in my lab. I am strictly allowing only the necessary authentication methods (Kerberos and Negotiate), blocking unencrypted traffic, and configuring the IPv4\/IPv6 filters to &#8220;*&#8221;. This particular setting is one I&#8217;ve seen people trip up on. This is NOT controlling what IP addresses are allowed to connect, but rather what IP addresses the WinRM service will listen and accept connections on. By using &#8220;*&#8221;, the WinRM service will accept connections on any interface.<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"735\" height=\"262\" src=\"https:\/\/anthonyfontanez.com\/wp-content\/uploads\/2022\/10\/image-2.png\" alt=\"\" class=\"wp-image-755\" srcset=\"https:\/\/anthonyfontanez.com\/wp-content\/uploads\/2022\/10\/image-2.png 735w, https:\/\/anthonyfontanez.com\/wp-content\/uploads\/2022\/10\/image-2-300x107.png 300w\" sizes=\"auto, (max-width: 735px) 100vw, 735px\" \/><figcaption class=\"wp-element-caption\">WinRM Client GPO Configuration<\/figcaption><\/figure>\n<\/div>\n\n\n<p>Next, we want to configure the WinRM client settings. In the above image, I&#8217;ve configured the authentication methods to match what I use service-side (Kerberos and Negotiate only), as well as blocking unencrypted traffic.<\/p>\n\n\n\n<p>Trusted Hosts is set to disabled here, because we want to ensure mutual authentication of all WinRM connections. Since all of the endpoints in question at this point are AD or Hybrid AAD joined, they can perform mutual Kerberos authentication before allowing a connection to succeed. We&#8217;ll be revisiting this in part II.<\/p>\n\n\n\n<p>One additional note about the authentication methods. We need to enable both Negotiate and Kerberos, even though our end goal is Kerberos, as the connection will fail if Negotiate cannot be performed. Negotiate is also known as Windows Integrated Authentication (WIA) and allows for both Kerberos and NTLM authentication. We can choose to further restrict NTLM usage via NTLM restrictions and exceptions policies, but this is beyond the scope of what we&#8217;re looking to achieve here.<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"460\" src=\"https:\/\/anthonyfontanez.com\/wp-content\/uploads\/2022\/10\/image-3-1024x460.png\" alt=\"\" class=\"wp-image-756\" srcset=\"https:\/\/anthonyfontanez.com\/wp-content\/uploads\/2022\/10\/image-3-1024x460.png 1024w, https:\/\/anthonyfontanez.com\/wp-content\/uploads\/2022\/10\/image-3-300x135.png 300w, https:\/\/anthonyfontanez.com\/wp-content\/uploads\/2022\/10\/image-3-768x345.png 768w, https:\/\/anthonyfontanez.com\/wp-content\/uploads\/2022\/10\/image-3.png 1400w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><figcaption class=\"wp-element-caption\">WinRM Firewall Rule<\/figcaption><\/figure>\n<\/div>\n\n\n<p>Finally, we need to configure a firewall rule to allow WinRM traffic. In the above image, I have added the built-in rule for WinRM HTTP-In traffic via Domain\/Private profiles and accepted the default configuration. There is a second rule you can add that is for the Public profile; the difference is that the Public profile rule will have the Remote Scope set to Local Subnet by default. In most environments, I wouldn&#8217;t add this. We only want WinRM to be accessible when connected to the domain network.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"testing\">Testing WinRM<\/h2>\n\n\n\n<p><\/p>\n\n\n\n<p>Now that we&#8217;ve configured the WInRM client and service components on all domain endpoints, let&#8217;s test it. You can verify the WinRM configuration by running <code>winrm get winrm\/config<\/code> via an administrative command prompt, and the output should look similar to the following:<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">Config\n    MaxEnvelopeSizekb = 500\n    MaxTimeoutms = 60000\n    MaxBatchItems = 32000\n    MaxProviderRequests = 4294967295\n    Client\n        NetworkDelayms = 5000\n        URLPrefix = wsman\n        AllowUnencrypted = false [Source=\"GPO\"]\n        Auth\n            Basic = false [Source=\"GPO\"]\n            Digest = false [Source=\"GPO\"]\n            Kerberos = true [Source=\"GPO\"]\n            Negotiate = true [Source=\"GPO\"]\n            Certificate = true\n            CredSSP = false [Source=\"GPO\"]\n        DefaultPorts\n            HTTP = 5985\n            HTTPS = 5986\n        TrustedHosts = *\n    Service\n        RootSDDL = O:NSG:BAD:P(A;;GA;;;BA)(A;;GR;;;IU)S:P(AU;FA;GA;;;WD)(AU;SA;GXGW;;;WD)\n        MaxConcurrentOperations = 4294967295\n        MaxConcurrentOperationsPerUser = 1500\n        EnumerationTimeoutms = 240000\n        MaxConnections = 300\n        MaxPacketRetrievalTimeSeconds = 120\n        AllowUnencrypted = false [Source=\"GPO\"]\n        Auth\n            Basic = false [Source=\"GPO\"]\n            Kerberos = true [Source=\"GPO\"]\n            Negotiate = true [Source=\"GPO\"]\n            Certificate = false\n            CredSSP = false [Source=\"GPO\"]\n            CbtHardeningLevel = Strict [Source=\"GPO\"]\n        DefaultPorts\n            HTTP = 5985\n            HTTPS = 5986\n        IPv4Filter = * [Source=\"GPO\"]\n        IPv6Filter = * [Source=\"GPO\"]\n        EnableCompatibilityHttpListener = false [Source=\"GPO\"]\n        EnableCompatibilityHttpsListener = false [Source=\"GPO\"]\n        CertificateThumbprint\n        AllowRemoteAccess = true [Source=\"GPO\"]\n    Winrs\n        AllowRemoteShellAccess = true\n        IdleTimeout = 7200000\n        MaxConcurrentUsers = 2147483647\n        MaxShellRunTime = 2147483647\n        MaxProcessesPerShell = 2147483647\n        MaxMemoryPerShellMB = 2147483647\n        MaxShellsPerUser = 2147483647<\/pre>\n\n\n\n<p>As shown above, the settings we configured via GPO are listed as &#8220;[Source=&#8221;GPO&#8221;]&#8221;. Next, we can test access between endpoints by running <code>Enter-PSSession -ComputerName HOSTNAME<\/code> (or <code>etsn HOSTNAME<\/code> for short) in a PowerShell window.<\/p>\n\n\n\n<pre class=\"wp-block-preformatted\">PS C:\\ hostname\nCMCAS01\nPS C:\\ Enter-PSSession -ComputerName CMCASSQL01\n[CMCASSQL01]: PS C:\\ hostname\nCMCASSQL01\n[CMCASSQL01]: PS C:\\<\/pre>\n\n\n\n<p>If the connection was successful, you should see the prompt change to include the remote hostname at the beginning, as shown above. Investigating the Security log on the remote host should yield a 4624 event showing a successful network logon, and in the Windows Remote Management Operational log, a 91 event showing the shell creation.<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"459\" height=\"459\" src=\"https:\/\/anthonyfontanez.com\/wp-content\/uploads\/2022\/10\/image-4.png\" alt=\"\" class=\"wp-image-758\" srcset=\"https:\/\/anthonyfontanez.com\/wp-content\/uploads\/2022\/10\/image-4.png 459w, https:\/\/anthonyfontanez.com\/wp-content\/uploads\/2022\/10\/image-4-300x300.png 300w, https:\/\/anthonyfontanez.com\/wp-content\/uploads\/2022\/10\/image-4-150x150.png 150w\" sizes=\"auto, (max-width: 459px) 100vw, 459px\" \/><figcaption class=\"wp-element-caption\">Successful Account Logon Event<\/figcaption><\/figure>\n<\/div>\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"831\" height=\"99\" src=\"https:\/\/anthonyfontanez.com\/wp-content\/uploads\/2022\/10\/image-5.png\" alt=\"\" class=\"wp-image-759\" srcset=\"https:\/\/anthonyfontanez.com\/wp-content\/uploads\/2022\/10\/image-5.png 831w, https:\/\/anthonyfontanez.com\/wp-content\/uploads\/2022\/10\/image-5-300x36.png 300w, https:\/\/anthonyfontanez.com\/wp-content\/uploads\/2022\/10\/image-5-768x91.png 768w\" sizes=\"auto, (max-width: 831px) 100vw, 831px\" \/><figcaption class=\"wp-element-caption\">WinRM Shell Creation Event<\/figcaption><\/figure>\n<\/div>\n\n\n<h2 class=\"wp-block-heading\" id=\"securing\">Securing WinRM Further<\/h2>\n\n\n\n<p><\/p>\n\n\n\n<p>Up to this point, I&#8217;ve configured WinRM and allowed access from any:any. Going with the principals of least privilege and minimal access, I&#8217;d rather tighten this down. The easiest way to accomplish this is to simply configure the firewall rule to only allow connections from specified IP addresses, but I prefer something more dynamic.<\/p>\n\n\n\n<p>Utilizing Connection Security Rules, we can configure the firewall rule to require authentication (and optionally encryption) and specify a group of authorized users to be able to establish a connection via IPSec. This secures the communication at the network layer, preventing communication to the application protocol itself unless authentication and optional encryption negotiation is successful.<\/p>\n\n\n\n<p>I go over this configuration in much more detail in my Windows Firewall series (check out parts 3 and 4 here: <a rel=\"noreferrer noopener\" href=\"https:\/\/ajf.one\/fw\" data-type=\"URL\" data-id=\"https:\/\/ajf.one\/fw\" target=\"_blank\">Windows Firewall: The Series<\/a>). For now, I&#8217;ll cover the configuration at a high level.<\/p>\n\n\n\n<p>First thing to do is to configure the server-side rules, and an AD group to contain the authorized users that will be used in the firewall rule.<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"438\" src=\"https:\/\/anthonyfontanez.com\/wp-content\/uploads\/2022\/10\/image-6-1024x438.png\" alt=\"\" class=\"wp-image-763\" srcset=\"https:\/\/anthonyfontanez.com\/wp-content\/uploads\/2022\/10\/image-6-1024x438.png 1024w, https:\/\/anthonyfontanez.com\/wp-content\/uploads\/2022\/10\/image-6-300x128.png 300w, https:\/\/anthonyfontanez.com\/wp-content\/uploads\/2022\/10\/image-6-768x328.png 768w, https:\/\/anthonyfontanez.com\/wp-content\/uploads\/2022\/10\/image-6.png 1078w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><figcaption class=\"wp-element-caption\">Updated Firewall Rule Configuration<\/figcaption><\/figure>\n<\/div>\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"929\" height=\"429\" src=\"https:\/\/anthonyfontanez.com\/wp-content\/uploads\/2022\/10\/image-7.png\" alt=\"\" class=\"wp-image-764\" srcset=\"https:\/\/anthonyfontanez.com\/wp-content\/uploads\/2022\/10\/image-7.png 929w, https:\/\/anthonyfontanez.com\/wp-content\/uploads\/2022\/10\/image-7-300x139.png 300w, https:\/\/anthonyfontanez.com\/wp-content\/uploads\/2022\/10\/image-7-768x355.png 768w\" sizes=\"auto, (max-width: 929px) 100vw, 929px\" \/><figcaption class=\"wp-element-caption\">Connection Security Rule Configuration<\/figcaption><\/figure>\n<\/div>\n\n\n<p>Above is my updated firewall rule, and a new connection security rule. The firewall rule has been scoped to my internal IP ranges, configured to require authentication and encryption, and an AD group configured under authorized users (if you view it in edit mode, the group will be <code>CORP\\WinRM_Servers<\/code>. The connection security rule is configured to require mutual authentication for inbound traffic over TCP 5985 from my internal IP ranges. First and second authentication methods are set to default, as they are configured in my global IPSec configuration policy for Computer Certificate or Computer Kerberos first, and User Kerberos second.<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"774\" height=\"250\" src=\"https:\/\/anthonyfontanez.com\/wp-content\/uploads\/2022\/10\/image-8.png\" alt=\"\" class=\"wp-image-765\" srcset=\"https:\/\/anthonyfontanez.com\/wp-content\/uploads\/2022\/10\/image-8.png 774w, https:\/\/anthonyfontanez.com\/wp-content\/uploads\/2022\/10\/image-8-300x97.png 300w, https:\/\/anthonyfontanez.com\/wp-content\/uploads\/2022\/10\/image-8-768x248.png 768w\" sizes=\"auto, (max-width: 774px) 100vw, 774px\" \/><figcaption class=\"wp-element-caption\">Advanced Audit Policy Configuration<\/figcaption><\/figure>\n<\/div>\n\n\n<p>Lastly, I&#8217;ve configured advanced auditing settings to audit IPSec related events for troubleshooting purposes, as shown above.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"testing-new-config\">Testing the New Configuration<\/h2>\n\n\n\n<p><\/p>\n\n\n\n<p>To test the config, I attempted to connect to one of my servers from two different PowerShell windows on a client, one running as a normal user (<code>CORP\\lol<\/code>) and the other running as my SA account (<code>CORP\\ajf-sa<\/code>). Here&#8217;s the results:<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"576\" src=\"https:\/\/anthonyfontanez.com\/wp-content\/uploads\/2022\/11\/image-1-1024x576.png\" alt=\"\" class=\"wp-image-768\" srcset=\"https:\/\/anthonyfontanez.com\/wp-content\/uploads\/2022\/11\/image-1-1024x576.png 1024w, https:\/\/anthonyfontanez.com\/wp-content\/uploads\/2022\/11\/image-1-300x169.png 300w, https:\/\/anthonyfontanez.com\/wp-content\/uploads\/2022\/11\/image-1-768x432.png 768w, https:\/\/anthonyfontanez.com\/wp-content\/uploads\/2022\/11\/image-1.png 1200w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><figcaption class=\"wp-element-caption\">WinRM Connection Tests<\/figcaption><\/figure>\n<\/div>\n\n\n<p>On the left side, the connection failed. On the right, the connection succeeded, because the user account used is a member of the group specified in the firewall rule. If I look at the current IPSec main mode session on the server, I&#8217;ll find the successfully established session:<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"121\" src=\"https:\/\/anthonyfontanez.com\/wp-content\/uploads\/2022\/11\/image-2-1024x121.png\" alt=\"\" class=\"wp-image-769\" srcset=\"https:\/\/anthonyfontanez.com\/wp-content\/uploads\/2022\/11\/image-2-1024x121.png 1024w, https:\/\/anthonyfontanez.com\/wp-content\/uploads\/2022\/11\/image-2-300x36.png 300w, https:\/\/anthonyfontanez.com\/wp-content\/uploads\/2022\/11\/image-2-768x91.png 768w, https:\/\/anthonyfontanez.com\/wp-content\/uploads\/2022\/11\/image-2.png 1284w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><figcaption class=\"wp-element-caption\">IPSec Main Mode Security Associations<\/figcaption><\/figure>\n<\/div>\n\n\n<p>Huuzah! WinRM secured via identity-based access control!<\/p>\n\n\n\n<p>Now, to answer two questions you might be asking yourself at this point.<\/p>\n\n\n\n<p>Q: Didn&#8217;t we disable unencrypted WinRM connections? Is this double-encrypted?<\/p>\n\n\n\n<p>A: Yes, and Yes. In this case, we could configure the firewall rule security to use &#8220;null encapsulation&#8221;, which would still allow the authentication to occur, but the transport itself would not be encrypted via IPSec. This can be good for performance at scale for protocols that support their own encryption. But you can also use this methodology to secure a connection that is otherwise unencrypted. Got an app only accessible by Telnet or HTTP? Wrap it in IPSec to secure communication over the wire!<\/p>\n\n\n\n<p>Q: Aren&#8217;t WinRM and other similar protocols already doing identity-based access control inheritently?<\/p>\n\n\n\n<p>A: Yes. However, that on its own leaves the WinRM application layer protocol open for anything to connect. Securing it in this fashion prevents the application layer connection from ever succeeding if the required IPSec AuthN\/AuthZ isn&#8217;t met first. This effectively secures the application protocol itself from attack, allowing you to expose it to untrusted networks such as the internet. See part 5 of my firewall series here: <a rel=\"noreferrer noopener\" href=\"https:\/\/ajf.one\/fw\" data-type=\"URL\" data-id=\"https:\/\/ajf.one\/fw\" target=\"_blank\">Windows Firewall: The Series<\/a> for more fun with that, where I cover putting Domain Controllers on the internet!<\/p>\n\n\n\n<h2 class=\"wp-block-heading\" id=\"conclusion\">Conclusion<\/h2>\n\n\n\n<p><\/p>\n\n\n\n<p>I hope this was a good introduction to configuring and securing WinRM from a domain perspective. Part II will get into something that complicates things: connecting to Azure AD joined clients. Is it doable? Yes, with some additional configurations and caveats. Read on here: <a href=\"https:\/\/ajf.one\/winrm2\" data-type=\"URL\" data-id=\"https:\/\/ajf.one\/winrm2\">Part II<\/a>.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>After a number of conversations with Adam Gross in Discord voice on WinAdmins about this topic, which initially started on Twitter a while back, I<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"jetpack_post_was_ever_published":false,"_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_memberships_contains_paid_content":false,"footnotes":""},"categories":[6,7],"tags":[2,3],"class_list":["post-751","post","type-post","status-publish","format-standard","hentry","category-active-directory","category-security","tag-active-directory","tag-security"],"jetpack_featured_media_url":"","jetpack_likes_enabled":true,"jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/anthonyfontanez.com\/index.php\/wp-json\/wp\/v2\/posts\/751","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/anthonyfontanez.com\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/anthonyfontanez.com\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/anthonyfontanez.com\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/anthonyfontanez.com\/index.php\/wp-json\/wp\/v2\/comments?post=751"}],"version-history":[{"count":19,"href":"https:\/\/anthonyfontanez.com\/index.php\/wp-json\/wp\/v2\/posts\/751\/revisions"}],"predecessor-version":[{"id":825,"href":"https:\/\/anthonyfontanez.com\/index.php\/wp-json\/wp\/v2\/posts\/751\/revisions\/825"}],"wp:attachment":[{"href":"https:\/\/anthonyfontanez.com\/index.php\/wp-json\/wp\/v2\/media?parent=751"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/anthonyfontanez.com\/index.php\/wp-json\/wp\/v2\/categories?post=751"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/anthonyfontanez.com\/index.php\/wp-json\/wp\/v2\/tags?post=751"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}