Hi.

First, tell us what precise version of Tomcat you are using (x.y.z format).

Then, one minute I think that I am starting to understand your setup, but the next minute I am lost again.

The way I understand it now (please correct whatever needs to be) :

1) You have serverA running Tomcat, and Tomcat listens on port 8080.
The (network) IP address of serverA is : ........
(apart from the loopback address 127.0.0.1)

This Tomcat has some IP-based access Valve which :
- for requests from 127.0.0.1, allows them through without authentication
- for requests /not/ from 127.0.0.1, requires authentication in the form of a cookie, and if that cookie is not present, returns a login page.

The requester IP address is obtained by the Valve using the getRemoteAddress() 
method.

2) On the same serverA, there is a cron job which runs from time to time.
This cron job runs a PHP script, which
- connects to "127.0.0.1:8080"
- sends a HTTP request over that connection, directed to a specific Tomcat 
application
- receives a response from Tomcat

3) there are also other clients (not on serverA), which access other applications (or the same application) on serverA/Tomcat directly, by addressing their requests to ?
(IP or name).
(it cannot be 127.0.0.1:8080, since these clients are not on serverA)

The IP's of those clients are : ....  (just an idea, to distinguish them from 
the above)

And what you are seeing in the logs, is that from time to time, a request which seems to come from the PHP script (and should thus have a client IP address of 127.0.0.1 and go through without authentication), instead seems to come from another IP (and thus is caught by the Valve and returns a login page). And you also see this in the log of the PHP script : it shows that it receives a login page, instead of the expected response. (*)

Or else, what is the problem precisely ?

One more question : this IP-filter Valve, is that something written in-house ?

(At some point, we may want to see the content of the conf/server.xml of your 
Tomcat also.
Make a copy, remove any sensitive information like exact IP addresses, passwords etc., and paste it directly into a message here. Do not paste it as an attachment, this list often strips them).


(*) If this is what happens, it is indeed bizarre, and it should never happen.
It introduces a strong suspicion that there is something wrong with the Valve..

As a separate comment, not to mix with the above :
In all generality, if your serverA is connected to the Internet, it is not surprising per se, that your server would receive from time to time a request, directed to the same URL as the one used by your PHP script, but coming from an external unknown IP. That happens all the time, as there are plenty of nefarious bots out there looking for server weaknesses all the time.
But these external unknown IP clients should then receive the login page in 
return.
If your PHP script receives this login page however, then it looks as if your IP-filter Valve may be mixing up its requests/responses. What is a bit scary there, is that it may also be sending responses to the external unknown clients, that were supposed to go to the PHP script.

As a second separate comment :
From what I guess of your setup, it looks like you could already improve your server management as follows :

At the moment, it looks like in Tomcat you have one single <Host> tag. This Host is then automatically the "default host", to which all requests go to be processed. So that means that anyone sending a request to the IP address of your Tomcat server (even if they do not know its proper DNS name), will get a response.

If you would define a second <Host name="xxxxxxxx"> (where "xxxxxxx" is the real DNS name of your server), then : - all requests that are properly addressed to that name, would be served by that second Host. That is where you would put your real applications (and still your Valve). - all requests which lack a proper name, will be served by the default Host. This default Host could then just return always a "go get lost" page. Most of the bots will just target the IP address of your server, so most of these requests will land on the default Host, and get that page. (Of course it could also be more restrictive, and /only/ accept requests from 127.0.0.1 e.g.)

This is not really security yet, but it is an easy way to separate 90% of the trash, from the real requests.





Filippo Machi wrote:
Ciao Christopher,
we don't trust 85.18.x.x., it doesn't belong to us, that's why I posted my
question.
We're not able to explain how is possible that a request from localhost to
localhost
appear to be issued from a different ip.
Anyway, I'm going deeper following your hint about the rewrite.
May we assume that a redirect will cause the same symptom?
thanks
Fil


On Thu, May 26, 2011 at 4:04 PM, Christopher Schultz <
ch...@christopherschultz.net> wrote:

-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

Filippo,

On 5/26/2011 8:22 AM, Filippo Machi wrote:
The service I was talking about is a php script we put in the crontab and
it
accesses directly to the tomcat asking the url  (127.0.0.1:8080/...)
Okay: when you use 127.0.0.1, you should always be using the loopback
address. That's good. If you were using a non-localhost hostname (like
myserver.mydomain.it) then your "remote address" would likely appear to
be the external IP address of the server because, well, that's just how
TCP/IP works.

I'm omitting the final part of the ip just for privacy. There are
just a little set of ips that seem to be involved in the scenario I
described and they don't change.
Okay. Since they don't change, what is the relationship between the IP
address you are observing and the network setup you have? Is 85.18.x.x
the external IP address of the server?

I wonder if your server is re-writing URLs in an HTTP response that are
fully-qualified. So, instead of the URL being relative like "/foo/bar"
it's being sent as "http://myserver.mydomain.it/foo/bar"; and so your
client is therefore appearing to come from the server's external IP
address.

Simple question: do you "trust" 85.18.x.x? If so, why not just add it to
the list of trusted IP addresses in your filter?

- -chris
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.10 (MingW32)
Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org/

iEYEARECAAYFAk3eXgQACgkQ9CaO5/Lv0PCB/wCdGsDiCNV8rQz9u2JJixEmKEWd
rwgAn0uXaBOuCwkZ6YiMLTaRk2+FzUm3
=dqU7
-----END PGP SIGNATURE-----

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





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

Reply via email to