globalprotect.xml 5.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126
  1. <PAGE>
  2. <INCLUDE file="inc/header.tmpl" />
  3. <VAR match="VAR_SEL_PROTOCOLS" replace="selected" />
  4. <VAR match="VAR_SEL_GLOBALPROTECT" replace="selected" />
  5. <PARSE file="menu1.xml" />
  6. <PARSE file="menu2-protocols.xml" />
  7. <INCLUDE file="inc/content.tmpl" />
  8. <h1>PAN GlobalProtect</h1>
  9. <h2>How the VPN works</h2>
  10. <p>This VPN is based on HTTPS and <a
  11. href="https://tools.ietf.org/html/rfc3948">ESP</a>, with routing and
  12. configuration information distributed in XML format.</p>
  13. <p>GlobalProtect mode is requested by adding <tt>--protocol=gp</tt>
  14. to the command line:
  15. <pre>
  16. openconnect --protocol=gp vpn.example.com
  17. </pre></p>
  18. <h3>GlobalProtect portals and gateways</h3>
  19. <p>GlobalProtect VPNs actually contain two different server
  20. interfaces: portals and gateways. Most VPNs have one portal server and
  21. one or more gateway servers; the server hosting the portal interface
  22. often hosts a gateway interface as well, but not always. The portal
  23. interface mostly sends centrally-imposed security/lockdown settings
  24. for the official client software to follow. The only information sent
  25. by the portal that's clearly useful to a VPN client like OpenConnect
  26. (which tries to give full control to the end user) is the list of
  27. gateways.</p>
  28. <p>Some GlobalProtect VPNs are configured in such a way that the
  29. client <i>must</i> authenticate to the portal before it can access the
  30. gateway, while with other VPNs no interaction with the portal is
  31. necessary. In order to replicate the behavior of the official
  32. clients, OpenConnect first attempts to connect to the portal interface
  33. of the specified server.</p>
  34. <ul>
  35. <li>If <tt>--usergroup=gateway</tt> is specified (or, equivalently,
  36. <tt>/gateway</tt> is appended to the server URL, e.g.
  37. <tt>https://vpn.company.com/gateway</tt>), then OpenConnect will
  38. attempt to skip the portal interface and connect immediately to the
  39. gateway interface. This is useful if the GlobalProtect VPN portal is
  40. misconfigured, such as by not offering the desired gateway server in
  41. the list it provides.</li>
  42. <li>If connecting to the portal interface yields a choice of
  43. multiple gateways, <tt>--authgroup=GatewayName</tt> tells OpenConnect
  44. which one to choose.</li>
  45. </ul>
  46. <h3>Authentication</h3>
  47. <p>To authenticate, you connect to the secure web server (<tt>POST
  48. /ssl-vpn/login.esp</tt>), provide a username, password, and (optionally) a
  49. certificate, and receive an authcookie. The username, authcookie, and a
  50. couple other bits of information obtained at login are combined into the
  51. OpenConnect cookie.</p>
  52. <p>Some servers are configured to authenticate through SAML for
  53. multi-factor authentication. Support for this is provided in
  54. combination with network-manager-openconnect.</p>
  55. <h3>Tunnel configuration</h3>
  56. <p>To connect to the secure tunnel, the cookie is used to read routing and
  57. tunnel configuration information (<tt>POST /ssl-vpn/getconfig.esp</tt>).</p>
  58. <p>Next, a <a href="hip.html">HIP report</a> (security scanner report) is
  59. generated by the client and submitted to the server, if required.</p>
  60. <p>Finally, either an HTTPS-based or ESP-based tunnel is setup:</p>
  61. <ol>
  62. <li>The cookie is used in a non-standard HTTP request (<tt>GET
  63. /ssl-tunnel-connect.sslvpn</tt>, which acts more like a
  64. <tt>CONNECT</tt>). Arbitrary IP packets can be passed over the
  65. resulting tunnel.</li>
  66. <li>The ESP keys provided by the configuration request are used to set up
  67. a <a href="https://tools.ietf.org/html/rfc3948">UDP-encapsulated
  68. ESP</a> tunnel.</li>
  69. </ol>
  70. <p>Since <a href="http://sites.inka.de/~W1011/devel/tcp-tcp.html">TCP over
  71. TCP is very suboptimal</a>, OpenConnect tries to always use ESP-over-UDP,
  72. and will only fall over to the HTTPS tunnel if that fails, or if disabled
  73. via the <tt>--no-dtls</tt> argument.</p>
  74. <h2>Quirks and issues</h2>
  75. <p>There appears to be no reasonable mechanism to negotiate the <a
  76. href="https://en.wikipedia.org/wiki/Maximum_transmission_unit">MTU</a> for
  77. the link, or discover the MTU of the accessed network. The configuration
  78. always shows <tt><![CDATA[&lt;mtu&gt;0&lt;/mtu&gt;]]></tt>. OpenConnect attempts to
  79. calculate the MTU by starting from the base MTU with the overhead of
  80. encapsulating each packets within ESP, UDP, and IP.</p>
  81. <p>IPv6 support was added in <a
  82. href="https://live.paloaltonetworks.com/t5/Colossal-Event-Blog/New-GlobalProtect-4-0-announced-with-IPv6-support/ba-p/141593">GlobalProtect
  83. 4.0 in 2017</a>. OpenConnect has experimental support for GlobalProtect IPv6 as of
  84. 9.0. If you have access to a GlobalProtect VPN that supports IPv6, please send
  85. feedback to <a href="mail.html">the mailing list</a>.</p>
  86. <p>The ESP and HTTPS tunnels cannot be connected simultaneously. The ESP
  87. tunnel becomes unresponsive as soon as the HTTPS tunnel is started, and
  88. remains so unless/until the tunnel is closed and the configuration is
  89. re-fetched.</p>
  90. <p>Compared to the AnyConnect or Juniper protocols, the GlobalProtect
  91. protocol appears to have very little in the way of <a
  92. href="https://en.wikipedia.org/wiki/In-band_signaling">in-band
  93. signaling</a>. The HTTPS tunnel can only send or receive IP packets and a
  94. simple DPD/keepalive packet (always sent by the client and echoed by the
  95. server). The ESP tunnel does not have any special DPD/keepalive packet, but
  96. uses an <a
  97. href="https://en.wikipedia.org/wiki/Internet_Control_Message_Protocol">ICMP</a>
  98. ("ping") request to the server with a magic payload for this purpose</p>
  99. <INCLUDE file="inc/footer.tmpl" />
  100. </PAGE>