<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0">
  <channel>
    <title>topic Re: Dictionary Attack On VPN in GlobalProtect Discussions</title>
    <link>https://live.paloaltonetworks.com/t5/globalprotect-discussions/dictionary-attack-on-vpn/m-p/581911#M5193</link>
    <description>&lt;P&gt;They are attacking our portal and we use SAML.&amp;nbsp; I would still like to configure some type of protection without impacting our users.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;I set up a policy with the Palo Alto Networks GlobalProtect Authentication Brute Force Attempt and it blocked some attempts until they figured out that increasing the interval between attempts would not trigger the rule.&lt;BR /&gt;&lt;BR /&gt;We are implementing client certs, but I just want to drop the constant attempts from specific IPs without having to add them manually to a block list.&lt;BR /&gt;&lt;BR /&gt;I'm guessing there are other ways to do this too.&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;/P&gt;</description>
    <pubDate>Wed, 27 Mar 2024 16:43:09 GMT</pubDate>
    <dc:creator>PC-TomS</dc:creator>
    <dc:date>2024-03-27T16:43:09Z</dc:date>
    <item>
      <title>Dictionary Attack On VPN</title>
      <link>https://live.paloaltonetworks.com/t5/globalprotect-discussions/dictionary-attack-on-vpn/m-p/581705#M5187</link>
      <description>&lt;P&gt;We have been having unknown person(s) been attacking our firewall for the past few weeks with a Dictionary Attack. They even went the length of finding one of out IT staff on Linkedin and try to get his Globalprotect Login.&amp;nbsp;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Luckily they have not been able to gain access, but I want to create a rule that will autoblocks any attempts that do not use the correct login format by IP address or User name.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;So far when manually input the IP's in a block rule we have after they have tried.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Any thoughts or suggestions are appreciated&lt;/P&gt;</description>
      <pubDate>Tue, 26 Mar 2024 13:43:53 GMT</pubDate>
      <guid>https://live.paloaltonetworks.com/t5/globalprotect-discussions/dictionary-attack-on-vpn/m-p/581705#M5187</guid>
      <dc:creator>MikeMarks</dc:creator>
      <dc:date>2024-03-26T13:43:53Z</dc:date>
    </item>
    <item>
      <title>Re: Dictionary Attack On VPN</title>
      <link>https://live.paloaltonetworks.com/t5/globalprotect-discussions/dictionary-attack-on-vpn/m-p/581710#M5190</link>
      <description>&lt;P&gt;how about switching to SAML authentication?&amp;nbsp;&lt;/P&gt;
&lt;P&gt;that by itself should be a good deterrent as the attacker will know they'll need to tackle MFA as well and can no longer just dictionary their way through your login&lt;/P&gt;
&lt;P&gt;you could also add client certificate authentication as an extra security measure and deterrent&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;are they attacking the portal or globalprotect agent?&lt;/P&gt;</description>
      <pubDate>Tue, 26 Mar 2024 14:15:12 GMT</pubDate>
      <guid>https://live.paloaltonetworks.com/t5/globalprotect-discussions/dictionary-attack-on-vpn/m-p/581710#M5190</guid>
      <dc:creator>reaper</dc:creator>
      <dc:date>2024-03-26T14:15:12Z</dc:date>
    </item>
    <item>
      <title>Re: Dictionary Attack On VPN</title>
      <link>https://live.paloaltonetworks.com/t5/globalprotect-discussions/dictionary-attack-on-vpn/m-p/581911#M5193</link>
      <description>&lt;P&gt;They are attacking our portal and we use SAML.&amp;nbsp; I would still like to configure some type of protection without impacting our users.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;I set up a policy with the Palo Alto Networks GlobalProtect Authentication Brute Force Attempt and it blocked some attempts until they figured out that increasing the interval between attempts would not trigger the rule.&lt;BR /&gt;&lt;BR /&gt;We are implementing client certs, but I just want to drop the constant attempts from specific IPs without having to add them manually to a block list.&lt;BR /&gt;&lt;BR /&gt;I'm guessing there are other ways to do this too.&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;/P&gt;</description>
      <pubDate>Wed, 27 Mar 2024 16:43:09 GMT</pubDate>
      <guid>https://live.paloaltonetworks.com/t5/globalprotect-discussions/dictionary-attack-on-vpn/m-p/581911#M5193</guid>
      <dc:creator>PC-TomS</dc:creator>
      <dc:date>2024-03-27T16:43:09Z</dc:date>
    </item>
    <item>
      <title>Re: Dictionary Attack On VPN</title>
      <link>https://live.paloaltonetworks.com/t5/globalprotect-discussions/dictionary-attack-on-vpn/m-p/581917#M5195</link>
      <description>&lt;P&gt;&lt;a href="https://live.paloaltonetworks.com/t5/user/viewprofilepage/user-id/133333"&gt;@PC-TomS&lt;/a&gt;,&lt;/P&gt;
&lt;P&gt;If you have the ability to feed the IPs in as an EDL this is easy enough with a custom report and the API. Something like this for the custom report:&lt;/P&gt;
&lt;LI-CODE lang="markup"&gt;      &amp;lt;entry name="Failed_GP_Login"&amp;gt;
        &amp;lt;type&amp;gt;
          &amp;lt;globalprotect&amp;gt;
            &amp;lt;sortby&amp;gt;repeatcnt&amp;lt;/sortby&amp;gt;
            &amp;lt;aggregate-by&amp;gt;
              &amp;lt;member&amp;gt;public_ip&amp;lt;/member&amp;gt;
              &amp;lt;member&amp;gt;srcuser&amp;lt;/member&amp;gt;
            &amp;lt;/aggregate-by&amp;gt;
            &amp;lt;values&amp;gt;
              &amp;lt;member&amp;gt;repeatcnt&amp;lt;/member&amp;gt;
            &amp;lt;/values&amp;gt;
          &amp;lt;/globalprotect&amp;gt;
        &amp;lt;/type&amp;gt;
        &amp;lt;period&amp;gt;last-15-minutes&amp;lt;/period&amp;gt;
        &amp;lt;topn&amp;gt;5000&amp;lt;/topn&amp;gt;
        &amp;lt;topm&amp;gt;50&amp;lt;/topm&amp;gt;
        &amp;lt;caption&amp;gt;Failed_GP_Login&amp;lt;/caption&amp;gt;
        &amp;lt;query&amp;gt;( error eq 'Authentication failed: Invalid username or password' )&amp;lt;/query&amp;gt;
      &amp;lt;/entry&amp;gt;&lt;/LI-CODE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Then you can run the job via the API:&lt;/P&gt;
&lt;LI-CODE lang="markup"&gt;api?type=report&amp;amp;async=yes&amp;amp;reporttype=custom&amp;amp;reportname=Failed_GP_Login
# Runs the report and returns the job ID. If you convert the reponse to a dictionary the job would be at ['response']['result']['job']. Allow enough time for the job to run (60 seconds should be sufficient, varies by environment and platform).#


api?type=op&amp;amp;cmd=&amp;lt;show&amp;gt;&amp;lt;report&amp;gt;&amp;lt;id&amp;gt;' + str(job_id) + '&amp;lt;/id&amp;gt;&amp;lt;/report&amp;gt;&amp;lt;/show&amp;gt;'
# Collect the report so that you can actually analyze it. Again you'll want to convert the response to a dictionary. I've included a better Python example here #

report_dict = xmltodict.parse(request_report.content) # Convert the response #
OrdDict = report_dict['response']['result']['report']['entry'] 
root = OrdDict
for element in root:
    recorded_session = [(element['public_ip']),(element['srcuser']),(element['repeatcnt'])]
    public_ip = recorded_session[0]
    src_user = recorded_session[1]
    repeat_count = recorded_session[2]

&lt;/LI-CODE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;This is just a starting point, but what I've chosen to care about in particular is the three fields listed. I utilize a REDIS database to increment the failed login count for both the IP and the user. What this allows is to set a threshold for the number of failed logins we determine is acceptable before we block them; you could alternatively simply utilize a similar account to block &lt;EM&gt;any source &lt;/EM&gt;which failed to login to GlobalProtect if you don't want to provide any sort of leeway.&lt;/P&gt;
&lt;P&gt;Then you can just have the script update your EDL to block any of the sources that you don't care to have accessing resources and send any alerting that you would care to send to indicate that the address/user has been blocked.&lt;/P&gt;</description>
      <pubDate>Wed, 27 Mar 2024 17:21:22 GMT</pubDate>
      <guid>https://live.paloaltonetworks.com/t5/globalprotect-discussions/dictionary-attack-on-vpn/m-p/581917#M5195</guid>
      <dc:creator>BPry</dc:creator>
      <dc:date>2024-03-27T17:21:22Z</dc:date>
    </item>
  </channel>
</rss>

