On 6/5/08, André Warnier <[EMAIL PROTECTED]> wrote:
>
>
>
> Mohit Anchlia wrote:
>
>> On 6/5/08, André Warnier <[EMAIL PROTECTED]> wrote:
>>
>>>
>>>
>>> Mohit Anchlia wrote:
>>>
>>> On 6/4/08, Dragon <[EMAIL PROTECTED]> wrote:
>>>>
>>>> André Warnier wrote:
>>>>>
>>>>> Mohit Anchlia wrote:
>>>>>
>>>>> 2. Another question I had was sometimes we don't get real physical IP
>>>>>> of
>>>>>>
>>>>>> the
>>>>>>> machine but the IP of something that's in between like "router", is
>>>>>>> there
>>>>>>> a
>>>>>>> way to get the real IP so that we don't end up blocking people coming
>>>>>>> from
>>>>>>> that "router" or "proxy"
>>>>>>>
>>>>>>> In my opinion, you cannot.  The whole point of such routers and
>>>>>>> proxies
>>>>>>>
>>>>>> is
>>>>>> to make the requests look like they are coming from the router/proxy,
>>>>>> so
>>>>>> that is the sender IP address you are seeing at your server level, and
>>>>>> that's it.  Your server never receives the original requester IP
>>>>>> address.
>>>>>>
>>>>>> ---------------- End original message. ---------------------
>>>>>>
>>>>> There are legitimate reasons for this to be done as well,
>>>>> indiscriminately
>>>>> blocking such access is a bad idea as it will affect legitimate users.
>>>>> NAT
>>>>> and IP address sharing are among the reasons. This allows an
>>>>> organization
>>>>> to
>>>>> have a router with one public IP address to serve a larger internal
>>>>> network
>>>>> with private IP addresses. Without this, we would have run out of IPv4
>>>>> addresses a long time ago.
>>>>>
>>>>>
>>>>> Dragon
>>>>>
>>>>>
>>>> If there is no way to get the real IP address then how would router know
>>>> which machine to direct the response to. It got to have some information
>>>> in
>>>> the packet. For eg: If A send to router B and router sends to C then
>>>> when
>>>> C
>>>> responds how would B know that the response is for A.
>>>>
>>>> You are perfectly right : the router knows the real IP address.  But it
>>>>
>>> will not tell you, haha.
>>>
>>> Seriously, this is how it works :
>>> the original system sends out an "open session" packet, through the
>>> router,
>>> to the final destination.
>>> The router sees this packet, and analyses it.  It extracts the IP address
>>> and port of the original sender, and keeps it in a table.
>>> Then it replaces the IP address by it's own, adds some port number, and
>>> also memorises this new port number in the same table entry.
>>> Then it sends the modified packet to the external server (yours).
>>> It knows that the server on the other side is going to respond to this
>>> same
>>> IP address and port (the ones of the router).
>>> When the return packet from the server comes back, the router looks at
>>> the
>>> port in it, finds the corresponding entry in it's table, and now it knows
>>> to
>>> whom it should send the packet internally.
>>> And so on.
>>> So :
>>> - the router knows everything
>>> - the internal system thinks it is talking directly to the external
>>> server
>>> - the external server (yours) only sees the router IP and port, so it
>>> thinks that is where the packet comes from.
>>>
>>> That's NAT for you, in a nutshell.
>>>
>>> Yes ?
>>>
>>> ---
>>>
>>>
>> Thanks for the great explanation. But, I wonder how do people design app
>> agains Denial of Service attack. Say Computer A uses Cox/Times warner
>> (cable) Internet connection and starts attacking B, then how would a
>> system be configured in a way that not all the users using Times
>> Warner/Cox
>> are affected. Should it be granular enough to give IP and source Port in
>> IP
>> blocking rules ?
>>
>>
> I think that is quite a different case.  Not all users of an ISP (like the
> one you mention I suppose) are "behind" a NAT router that hides their IP
> address.  Instead, these ISP's have a large pool of public IP addresses
> which they "own", and they attribute them dynamically to users when they
> connect (and put the address back in the pool when the user disconnects).
>
> If a DOS attack came from a router with a fixed IP address, and everyone
> would know that this IP address belongs to company xyz, I'm sure that it
> would not be long before company xyz would be facing a big lawsuit.
>
> But in the case of an ISP, with tens of thousands of customers, each one of
> which gets a different IP address each time he turns on his computer (and
> anyway once per 24 hours in general), finding out who exactly was "
> a234d-45hjk-dialin-atlanta.cox-t-warner.net" between 17:45 and 17:53
> yesterday is a bit more time-consuming.
>
> But in that case anyway, you do have a real individual sender IP address
> when the packet reaches your server, so you can decide to block it.
> And keep blocking all packets from this address for the next 24 hours.
> And that's exactly what many servers do.
> And that is also why sometimes you may turn on your PC at home (getting a
> brand-new IP address) and find out that you cannot connect to some server
> because it is rejecting your IP address.  Chances are that you are unlucky
> enough to have received today the IP address that was used yesterday by
> someone else who used it to send out 1M emails.
>
> But isn't this getting a bit off-topic ?
> If you want to know more about this, I suggest you Google a bit on
> "blacklists", "greylists" and "whitelists" for example.
> or start here : http://en.wikipedia.org/wiki/DNSBL




 Thanks ..it did go off-track a little bit and but it helps me understand
what I should expect when doing such a blocking. Thanks for your
explanation.

Now coming back on track, out of below 2 approaches which one is better:

1. Use "deny from IP" in <LocationMatch>
2. Use RewriteCond and call a perl script dynamically. This helps me
configure IP dynamically without having to stop and start servers everytime
I change httpd.conf

Is there any performance impact of using 2 over 1 or any other issues.

Reply via email to