It's possible that "localhost" on your system maps to the IPv6 address for localhost, so the source address of your proxy doesn't actually match the value you specified for "internalProxies".

- Mike

On 8/4/2023 6:12 PM, Robert Dinse wrote:

     I still haven't gotten Apache external authentication to work properly.  I did manage to get mod_authnz_external to peacefully co-exist with mod_suphp, the secret was to compile mod_authnz_external and dynamically load it rather than compiling it statically into httpd, which would have been my preference. But, for some reason it will work with a static web page or PHP application, but not a proxy, but that's another issue.

     For now I am just trying to get the Apache to pass the IP of the connecting customer through to Tomcat, have it pass it through to the guacamole process so that when a user connects to a host, the host sees the IP the user is originating from and not the IP of the web server.  I was referred to this webpage for instructions:

https://guacamole.apache.org/doc/gug/reverse-proxy.html#setting-up-the-remote-ip-valve

      And so I've setup the <host> section in Tomcat9 as follows:

     The website shows to add this valve to the <host> section of the server.xml file:

<ValveclassName="org.apache.catalina.valves.RemoteIpValve"
internalProxies="127.0.0.1"
remoteIpHeader="x-forwarded-for"
remoteIpProxiesHeader="x-forwarded-by"
protocolHeader="x-forwarded-proto"/> Here is what the <host> section of my servers.xml looks like: <Host name="localhost" appBase="webapps" unpackWARs="true" autoDeploy="true"> <!-- SingleSignOn valve, share authentication between web applications Documentation at: /docs/config/valve.html --> <!-- <Valve className="org.apache.catalina.authenticator.SingleSignOn" /> --> <!-- Access log processes all example. Documentation at: /docs/config/valve.html Note: The pattern used is equivalent to using pattern="common" --> <Valve className="org.apache.catalina.valves.AccessLogValve" directory=" logs" prefix="localhost_access_log" suffix=".txt" pattern="%h %l %u %t &quot;%r&quot; %s %b" /> <Valve className="org.apache.catalina.valves.RemoteIpValve" internalProxies="127.0.0.1" remoteIpHeader="x-forwarded-for" remoteIpProxiesHeader="x-forwarded-by" protocolHeader="x-forwarded-proto" /> </Host> Note that guacamole is the only application I have running under tomcat9. I have another Java application running (yacy) but it is not containerized. Then it shows for the Apache: <Location/guacamole/> Orderallow,deny Allowfromall ProxyPasshttp://HOSTNAME:8080/guacamole/flushpackets=on ProxyPassReversehttp://HOSTNAME:8080/guacamole/ </Location> I already had this except for HOSTNAME I had "localhost", then it also shows proxying guacamole with websocket, and says it will reduce network latency. Well already it was fast enough to watch videos on a proxy connection, but why not, so I added: <Location/new-path/websocket-tunnel> Orderallow,deny
Allowfromall
ProxyPassws://localhost:8080/guacamole/websocket-tunnel
ProxyPassReversews://localhost:8080/guacamole/websocket-tunnel
</Location>

      Like this, if I go to the URL and login to a host, the IP the hosts sees 
is that of the web server and not the IP I am originating from.
      With respect authentication, if I wrap these proxy statements with access 
statements I get a 404 error with '/#/' as the URL
      If I remove the proxy statements and substitute some simple HTML it works 
as expected, prompts for login and password, and if correct displays the code.

      If I type the wrong username and password, it rejects the attempt.

      This was basically the auth code I was using:

SetExternalAuthMethod pwauth pipe
AddExternalAuth pwauth /usr/sbin/pwauth
     AuthType Basic
     AuthName "Authentication Required"
     AuthExternal pwauth
     Require valid-user
     AuthExternal authnz_external
     AuthBasicProvider external

  If I can get it to pass IP correctly then auth isn't required because 
fail2ban will pick up and ban offending IPs trying to brute-force passwords so 
right now that is my focus.


---------------------------------------------------------------------
To unsubscribe, e-mail: user-unsubscr...@guacamole.apache.org
For additional commands, e-mail: user-h...@guacamole.apache.org

Reply via email to