hi, sorry, there was two open connection on port 80 from 194.135.88.32 that is somwhere on epix.net.pl an association of internet traffick exchange (some pirate hub)
best, artur 2016-11-30 17:52 GMT+01:00 Jaaz Portal <jaazpor...@gmail.com>: > hi, > i looked at the logs but there are no strange things, > traffic as usual, no errors despite this one: > [Wed Nov 30 17:10:13.375912 2016] [mpm_event:error] [pid 12870:tid > 139906329666752] AH00484: server reached MaxRequestWorkers setting, > consider raising the MaxRequestWorkers setting > > any idea what to do next? > > best, > artur > > 2016-11-30 17:36 GMT+01:00 Jaaz Portal <jaazpor...@gmail.com>: > >> hi, >> they has tried again with success despite setting connection_timeout and >> limiting number of clients by mod_bw >> the tomcat has frozen again. >> >> netstat does not showed any connections on port 80 but plenty of >> connections from apache to localhost:8009 >> so it was not an attack that you has described (no slowlaris) >> >> im looking into debug files of mod_jk and forensic for some hints. If you >> want i can share them (they have 4mb compressed) >> >> best wishes >> artur >> >> 2016-11-29 11:01 GMT+01:00 André Warnier (tomcat) <a...@ice-sa.com>: >> >>> On 28.11.2016 22:04, Jaaz Portal wrote: >>> >>>> hi Andre, >>>> you are wrong. This vulnerability is not only causing memory leaks, it >>>> makes also apache workers to hang >>>> >>> >>> Maybe for the last time here : >>> >>> - what do you call "apache workers" ? >>> >>> , making it easy to exhaust the pool. >>> >>> - what do you call "the pool" ? >>> >>> what i have in my log files. But it is true also that such exhaustion can >>>> be made by other forms of dos attacks described in this thread. >>>> >>>> regarding you suggestion on our application, it does not dos bind server >>>> nether does not scan for various vulnerabilities in apache, what i have >>>> also in the logs >>>> >>> >>> For your information : I run about 25 Internet-facing Apache webservers >>> (some with a back-end tomcat, some not). >>> On every single one of those webservers, there are *hundreds* of such >>> "scans" every day, as shown by the Apache access logs. That is just a fact >>> of life on the Internet. >>> They are annoying, but most of them are harmless (from an "attack" point >>> of view), because they are scanning for things that we do not run >>> (phpmyadmin, xmlrpc, vti_bin, etc., etc., the list is almost endless), and >>> thus are responded to by Apache as "404 Not found". >>> What is annoying with those scans, is >>> a) that they fill the logfile, and thus make it more difficult to find >>> really significant things >>> b) that each of those requires some bandwidth and system resource, if >>> only to return a "404 Not found" (or a "401 Unauthorised"), and that we pay >>> for that bandwidth and resources. >>> >>> If I could find a way to charge 0.1 cent per access to my servers, from >>> the people who wrote or run the programs who are doing this, I could retire >>> in luxury. >>> >>> But they are not a real problem, because they are caught as "invalid" by >>> Apache, and rejected quickly, so they cannot do anything really nasty >>> (except if they were sending several thousand such requests per second to >>> one of my servers for a long time). >>> >>> The ones that are worrying, are the ones >>> - a) which do /not/ end up as a "404 Not found", because they have found >>> an application which responds, and they are not coming from our legitimate >>> customers >>> - b) /the ones which we do not see/, because they either do not send a >>> valid HTTP request, or they have found a way to trigger one of our >>> applications, in such a way that the application misbehaves and, perhaps, >>> even if they do not crash our servers, they may provide the attacker with >>> some entry point to do other things which we do not know and do not control >>> >>> What I am trying to say here, is /do not jump to premature conclusions/. >>> Such "scans" as you mention, happen to everyone, all the time, from >>> ever-changing IP addresses located all over the world. Some of those >>> "scans" may come from the infected PC of your grandmother, and she does not >>> even know about it. >>> >>> There is no guarantee, and no indication or proof so far, that /these/ >>> scans are even related to "the other thing" which happens on your >>> webserver, which looked much more focused. >>> >>> So do not just bundle them together as being the same thing, until you >>> have some real data that shows for example that these different things all >>> come from the same IP addresses. >>> >>> And one more thing, also finally until you come back with some real data >>> : I am not saying that your application "scans your server". What I am >>> saying is that, maybe, by chance or by design, the attackers have found a >>> URL which goes to your application, and which causes your application to >>> keep tomcat and/or Apache busy for a long time. >>> And that maybe /that/ is the problem you should be looking for, and not >>> some hypothetical bug in Apache httpd or tomcat. >>> >>> >>> >>>> kindly regards, >>>> artur >>>> >>>> 2016-11-28 21:33 GMT+01:00 André Warnier (tomcat) <a...@ice-sa.com>: >>>> >>>> On 28.11.2016 20:34, Jaaz Portal wrote: >>>>> >>>>> hi mark, >>>>>> yes, i understand now what slowloris attack is. >>>>>> maybe it was this maybe *this one based on * * mod_proxy denial of >>>>>> service * >>>>>> CVE-2014-0117 <http://cve.mitre.org/cgi-bin/ >>>>>> cvename.cgi?name=CVE-2014-0117> >>>>>> >>>>>> >>>>> You keep on saying this, but the description of that vulnerability of >>>>> *Apache httpd*, and the symptoms which you described, *do not match*. >>>>> You described the problem as ocurring in Apache tomcat, which in your >>>>> case >>>>> is sitting as a back-end, *behind* Apache httpd. And restarting tomcat >>>>> cured the problem. >>>>> >>>>> The CVE above applies to Apache httpd, and describes how an attacker >>>>> could >>>>> attack Apache httpd and cause *its children* processes to crash (the >>>>> children processes of Apache httpd), by leading them to consume a lot >>>>> of >>>>> memory and crash with an out-of-memory error. >>>>> Granted, the problem occurred in the mod_proxy module of Apache httpd; >>>>> but >>>>> it was httpd which crashed, not tomcat. >>>>> And tomcat processes are not "Apache httpd children processes" in any >>>>> understanding of the term. >>>>> >>>>> As far as I remember, you never mentioned Apache httpd crashing. You >>>>> mentioned "the pool" getting full or satured or something like that, >>>>> without ever describing properly what you meant by "the pool". >>>>> >>>>> As far as I am concerned, according to all the relatively unspecific >>>>> information which you have previously provided : >>>>> 1) the attack - if that is what it is/was - is definitely NOT related >>>>> to >>>>> the CVE which you have repeatedly mentioned >>>>> 2) it is apparently not a "classical" DoS or "slowloris DoS" directed >>>>> at >>>>> your front-end Apache. Instead, it seems that the requests are properly >>>>> received by Apache, properly decoded by Apache, and then whatever >>>>> Apache >>>>> proxy module you are using (mod_proxy_http, mod_proxy_ajp or mod_jk) is >>>>> properly forwarding these requests to a back-end tomcat; and it is at >>>>> the >>>>> level of that back-end tomcat that the requests never seem to end, and >>>>> in >>>>> the end paralyse your tomcat server (and later on maybe your Apache >>>>> httpd >>>>> server too, because it is also waiting for tomcat to respond). >>>>> >>>>> So your very way of describing the problem, in terms of "first we used >>>>> this proxy module, and then they exploited the vulnerability so and so; >>>>> then we changed the proxy module, and they exploited that too; etc.." >>>>> seems to not have anything to do with the problem per se, and (I >>>>> believe) >>>>> confuses everyone, including yourself. >>>>> >>>>> It is not that "they" exploited different vulnerabilities of various >>>>> httpd >>>>> proxy modules, one after the other. Each of these proxy modules was >>>>> doing >>>>> its job properly, and forwarding valid HTTP requests properly to >>>>> tomcat. >>>>> When you changed from one proxy module to another, you did not really >>>>> change anything in that respect, because any proxy module would do the >>>>> same. >>>>> >>>>> But in all cases, what did not change, was the tomcat behind the >>>>> front-end, and the application running on that tomcat. So the presumed >>>>> attackers did not have to change anything, they just kept on sending >>>>> the >>>>> same requests, because they were really targeting your back-end tomcat >>>>> or >>>>> the tomcat application in it, no matter /how/ you were forwarding >>>>> requests >>>>> from Apache httpd to tomcat. >>>>> >>>>> So either it is tomcat itself, which has a problem with some request >>>>> URLs >>>>> which do not bother Apache httpd (possible, but statistically >>>>> unlikely), or >>>>> it is the application which runs in tomcat that has such a problem >>>>> (statistically, much more likely). >>>>> >>>>> we do not know yet >>>>> >>>>>> >>>>>> we have setup more logging and are waiting for them to attack once >>>>>> again >>>>>> >>>>>> >>>>> Yes, that is the right thing to do. Before deciding what the problem >>>>> may >>>>> be, and what you can do about it, the first thing you need is *data*. >>>>> You >>>>> need to know >>>>> - which request URL(s?) cause that problem >>>>> - which IPs these requests come from (always the same ? multiple IPs >>>>> that >>>>> change all the time ? how many ? can these IPs be valid/expected >>>>> clients or >>>>> not ? do these IPs look like some "coordinated group" ?) >>>>> - how many such requests there may be during some period of time (10, >>>>> 100, >>>>> 1000, more ?) >>>>> - if these URLs result in passing the request to tomcat >>>>> - what tomcat application (if any) they are directed to >>>>> - if so, when that application receives such a request, what is it >>>>> supposed to do ? does it do it properly ? how long does it need, to >>>>> respond >>>>> to such a request ? >>>>> >>>>> You also need to ask yourself a question : is the application which you >>>>> run inside tomcat something that you designed yourself (and which >>>>> hackers >>>>> are unlikely to know well-enough to find such a URL which paralyses >>>>> your >>>>> server) ? or is it some well-known third-party java application which >>>>> you >>>>> are running (and for which would-be attackers would be much more >>>>> likely to >>>>> know exactly such a bug) ? >>>>> >>>>> >>>>> anyway, thank you for all informations, it was very useful and >>>>>> educational >>>>>> reading for all of us >>>>>> >>>>>> best wishes, >>>>>> artur >>>>>> >>>>>> 2016-11-28 19:46 GMT+01:00 Mark Eggers <its_toas...@yahoo.com.invalid >>>>>> >: >>>>>> >>>>>> Jaaz, >>>>>> >>>>>>> >>>>>>> On 11/27/2016 2:46 PM, André Warnier (tomcat) wrote: >>>>>>> >>>>>>> On 27.11.2016 19:03, Jaaz Portal wrote: >>>>>>>> >>>>>>>> 2016-11-27 18:30 GMT+01:00 André Warnier (tomcat) <a...@ice-sa.com>: >>>>>>>>> >>>>>>>>> On 27.11.2016 14:26, Jaaz Portal wrote: >>>>>>>>> >>>>>>>>>> >>>>>>>>>> hi, >>>>>>>>>> >>>>>>>>>>> everything i know so far is just this single log line that >>>>>>>>>>> appeared >>>>>>>>>>> in >>>>>>>>>>> apache error.log >>>>>>>>>>> >>>>>>>>>>> [Fri Nov 25 13:08:00.647835 2016] [mpm_event:error] [pid >>>>>>>>>>> 13385:tid >>>>>>>>>>> 1397934896385 >>>>>>>>>>> 92] AH00484: server reached MaxRequestWorkers setting, consider >>>>>>>>>>> >>>>>>>>>>> raising >>>>>>>>>> >>>>>>>>> >>>>>>> the >>>>>>>> >>>>>>>>> MaxR >>>>>>>>>>> equestWorkers setting >>>>>>>>>>> >>>>>>>>>>> there was nothing else, just this strange line >>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>>> This is not a "strange" line. It is telling you something. >>>>>>>>>> One problem is that you seem convinced in advance, without serious >>>>>>>>>> proof, >>>>>>>>>> that there is a "bug" or a vulnerability in httpd or tomcat. >>>>>>>>>> Read the explanation of the httpd parameter, here : >>>>>>>>>> http://httpd.apache.org/docs/2.4/mod/mpm_common.html#maxrequ >>>>>>>>>> estworkers >>>>>>>>>> and try to understand it. >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> I understand it very well. We are serving no more that 500 >>>>>>>>> clients per >>>>>>>>> day >>>>>>>>> so there was no other option that some kind of attack. >>>>>>>>> >>>>>>>>> >>>>>>>>> About the "bug" or "vulnerability" : a webserver is supposed to >>>>>>>>> serve >>>>>>>>> HTTP >>>>>>>>> >>>>>>>>> requests from clients. That is what you expect of it. It has no >>>>>>>>>> choice but >>>>>>>>>> to accept any client connection and request, up to the maximum it >>>>>>>>>> can >>>>>>>>>> handle considering its configuration and the capacity of the >>>>>>>>>> system on >>>>>>>>>> which it runs. That is not a bug, it is a feature. >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> We have some weeks ago come under attack from some Polish group. >>>>>>>>>> It >>>>>>>>>> >>>>>>>>> was >>>>>>>>> first bind that was DoS'ed, we was running on stable Debian so i >>>>>>>>> updated >>>>>>>>> bind to latest version. It did not helped. They has dos'ed it so we >>>>>>>>> switched to other dns provider. That has helped. >>>>>>>>> >>>>>>>>> Then they exploited some well know vulnerability in mod_proxy. We >>>>>>>>> have >>>>>>>>> updated apache to the latest but again they has exploited it, so we >>>>>>>>> have >>>>>>>>> switched to mod_jk. And then guess what. They exploited it too so i >>>>>>>>> decided >>>>>>>>> to write to this list looking for help before trying jetty. >>>>>>>>> >>>>>>>>> >>>>>>>>> >>>>>>>>> The normal Apache httpd access log, will log a request only when >>>>>>>>>> it is >>>>>>>>>> finished. If the request never finishes, it will not get logged. >>>>>>>>>> That may be why you do not see these requests in the log. >>>>>>>>>> But have a look at this Apache httpd module : >>>>>>>>>> http://httpd.apache.org/docs/2.4/mod/mod_log_forensic.html >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> ok, thanks, will take care >>>>>>>>> >>>>>>>>> Note : that is also why I was telling you to enable the mod_jk log, >>>>>>>>> and to >>>>>>>>> >>>>>>>>> examine it. >>>>>>>>>> Because mod_jk will also log information before the request >>>>>>>>>> produces a >>>>>>>>>> response. >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> and server hanged. >>>>>>>>>> >>>>>>>>>> Again, /what/ is "hanged" ? Apache httpd, or tomcat ? >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> Apache was accepting connection but not processed it. After >>>>>>>>> restart of >>>>>>>>> tomcat server it worked again. >>>>>>>>> >>>>>>>>> >>>>>>>>> Also in >>>>>>>>> >>>>>>>>>> >>>>>>>>>> access logs there are no clues that it was under any heavy load. >>>>>>>>>> >>>>>>>>>>> >>>>>>>>>>> after around hour after discovering that our server hanged-out we >>>>>>>>>>> have >>>>>>>>>>> restarted tomcat server >>>>>>>>>>> and it worked again >>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>>> Yes, because that will close all connections between Apache >>>>>>>>>> httpd and >>>>>>>>>> tomcat, and abort all requests that are in the process of being >>>>>>>>>> processed >>>>>>>>>> by tomcat. So mod_jk will get an error from tomcat, and will >>>>>>>>>> report an >>>>>>>>>> error to httpd, and httpd will communicate that error to the >>>>>>>>>> clients, >>>>>>>>>> and >>>>>>>>>> close their connection. >>>>>>>>>> It still does not tell you what the problem was. >>>>>>>>>> The only thing that it suggests, is that the "bad" requests >>>>>>>>>> actually >>>>>>>>>> make >>>>>>>>>> it all the way to tomcat. >>>>>>>>>> >>>>>>>>>> >>>>>>>>>> correct >>>>>>>>> >>>>>>>>> i will enable logs that you has pointed out and we will look what i >>>>>>>>> will >>>>>>>>> catch >>>>>>>>> however i think we have only one chance, as if the solution we has >>>>>>>>> found >>>>>>>>> out (connection_timeout + mod_bn) >>>>>>>>> will work they will stop exploiting it >>>>>>>>> >>>>>>>>> thank you very much for all the help and explanations >>>>>>>>> i will report to the list new facts once they will attack us again >>>>>>>>> >>>>>>>>> best regards, >>>>>>>>> artur >>>>>>>>> >>>>>>>>> >>>>>>>>> Ok, but also read this e.g. : >>>>>>>> https://www.corero.com/blog/695-going-after-the-people- >>>>>>>> >>>>>>>> behind-ddos-attacks.html >>>>>>> >>>>>>> >>>>>>>> Attempts to bring down a site by DoS attacks is a crime, in most >>>>>>>> places.. >>>>>>>> >>>>>>>> You can report it, while at the same time trying to defend yourself >>>>>>>> against it. >>>>>>>> >>>>>>>> It is also relatively easy, and quite inexpensive in terms of system >>>>>>>> resources, to run a small shell script which takes a list every few >>>>>>>> seconds of the connections to the port of your webserver, and which >>>>>>>> IPs >>>>>>>> they are coming *from*. >>>>>>>> E.g. >>>>>>>> First try the netstat command, to see what it lists, like : >>>>>>>> # netstat -n --tcp | more >>>>>>>> >>>>>>>> Then you will want to filter this a bit, to only consider >>>>>>>> established >>>>>>>> connections to your webserver, for example : >>>>>>>> # netstat -n --tcp | grep ":80" | grep "ESTABLISHED" >>>>>>>> >>>>>>>> Then you will want to send this to a logfile, regularly, like this : >>>>>>>> >>>>>>>> # date >> some_file.log >>>>>>>> # netstat -n --tcp | grep ":80" | grep "ESTABLISHED" >> >>>>>>>> some_file.log >>>>>>>> (repeat every 3 seconds) >>>>>>>> >>>>>>>> This will not generate GB of logfiles, and it will tell you, when >>>>>>>> the >>>>>>>> problem happens, how many connections there are exactly to your >>>>>>>> webserver, and where they are coming from. >>>>>>>> Then later you can further analyse this information.. >>>>>>>> >>>>>>>> >>>>>>>> >>>>>>>>> i think that setting connection-timeout and limiting the number of >>>>>>>>> >>>>>>>>>> clients >>>>>>>>>>> by mod_bd i will >>>>>>>>>>> have effect that next time somebody will try this exploit it will >>>>>>>>>>> >>>>>>>>>>> block >>>>>>>>>> >>>>>>>>> >>>>>>> his >>>>>>>> >>>>>>>>> access to the site >>>>>>>>>>> for minute or two, pretty good holistic solution i would say >>>>>>>>>>> >>>>>>>>>>> still, it seems that there is serious vulnerability somewhere in >>>>>>>>>>> apache, >>>>>>>>>>> mod_jk or tomcat >>>>>>>>>>> i would like to help find it out but need some hints which debug >>>>>>>>>>> options >>>>>>>>>>> enable to catch the bad guys >>>>>>>>>>> when they will try next time >>>>>>>>>>> >>>>>>>>>>> best regards, >>>>>>>>>>> artur >>>>>>>>>>> >>>>>>>>>>> 2016-11-27 13:58 GMT+01:00 André Warnier (tomcat) <a...@ice-sa.com >>>>>>>>>>> >: >>>>>>>>>>> >>>>>>>>>>> On 27.11.2016 13:23, Jaaz Portal wrote: >>>>>>>>>>> >>>>>>>>>>> >>>>>>>>>>>> hi Andre, >>>>>>>>>>>> >>>>>>>>>>>> thank you very much this was very educative but in my case it is >>>>>>>>>>>>> little >>>>>>>>>>>>> bit >>>>>>>>>>>>> different. >>>>>>>>>>>>> The server is no flooded, there is maybe dozen of very >>>>>>>>>>>>> sophisticated >>>>>>>>>>>>> connections that somehow hangs apache workers threads >>>>>>>>>>>>> >>>>>>>>>>>>> >>>>>>>>>>>>> Can you be a bit more specific ? >>>>>>>>>>>>> >>>>>>>>>>>> When you say "apache workers threads", do you mean threads in >>>>>>>>>>>> Apache >>>>>>>>>>>> httpd, or threads in Apache Tomcat ? (both are Apache >>>>>>>>>>>> webservers, >>>>>>>>>>>> so it >>>>>>>>>>>> is >>>>>>>>>>>> difficult to tell what you are talking about, unless you are >>>>>>>>>>>> very >>>>>>>>>>>> precise). >>>>>>>>>>>> >>>>>>>>>>>> Let me give you some additional explanations, and maybe you can >>>>>>>>>>>> >>>>>>>>>>>> figure >>>>>>>>>>> >>>>>>>>>> >>>>>>> out >>>>>>>> >>>>>>>>> exactly where it "hangs". >>>>>>>>>>>> >>>>>>>>>>>> From the Apache httpd front-end point of view, mod_jk (the >>>>>>>>>>>> connector to >>>>>>>>>>>> Apache Tomcat) is basically one among other "response >>>>>>>>>>>> generators". >>>>>>>>>>>> Apache >>>>>>>>>>>> httpd does not "know" that behind mod_jk, there is one or more >>>>>>>>>>>> Tomcat >>>>>>>>>>>> servers. Apache httpd receives the original client request, and >>>>>>>>>>>> depending >>>>>>>>>>>> on the URL of the request, it will pass it to mod_jk or to >>>>>>>>>>>> another >>>>>>>>>>>> response >>>>>>>>>>>> generator, to generate the response to the request. >>>>>>>>>>>> That mod_jk in the background is using a Tomcat server to >>>>>>>>>>>> actually >>>>>>>>>>>> generate the response, is none of the business of Apache httpd, >>>>>>>>>>>> and >>>>>>>>>>>> >>>>>>>>>>>> it >>>>>>>>>>> >>>>>>>>>> >>>>>>> does >>>>>>>> >>>>>>>>> not care. All it cares about, is to actually receive the response >>>>>>>>>>>> >>>>>>>>>>>> from >>>>>>>>>>> >>>>>>>>>> >>>>>>> mod_jk, and pass it back to the client. >>>>>>>> >>>>>>>>> >>>>>>>>>>>> If httpd passes a request to mod_jk, it is because you have >>>>>>>>>>>> specified in >>>>>>>>>>>> the Apache configuration, the type of URL that it should pass to >>>>>>>>>>>> mod_jk.. >>>>>>>>>>>> That happens via your "JkMount (URL pattern)" directives in >>>>>>>>>>>> Apache >>>>>>>>>>>> httpd. >>>>>>>>>>>> >>>>>>>>>>>> Of course Apache httpd will not pass a request to mod_jk, >>>>>>>>>>>> before it >>>>>>>>>>>> has >>>>>>>>>>>> received at least the URL of the request, and analysed it to >>>>>>>>>>>> >>>>>>>>>>>> determine >>>>>>>>>>> >>>>>>>>>> >>>>>>> *if* >>>>>>>> >>>>>>>>> it should pass it to mod_jk (*). >>>>>>>>>>>> >>>>>>>>>>>> If the mod_jk logging is enabled, you can see in it, exactly >>>>>>>>>>>> *which* >>>>>>>>>>>> requests are passed to mod_jk and to Tomcat. >>>>>>>>>>>> Do you know *which* requests, from which clients, cause this >>>>>>>>>>>> "thread >>>>>>>>>>>> hanging" symptom ? >>>>>>>>>>>> Once you would know this, maybe you can design a strategy to >>>>>>>>>>>> block >>>>>>>>>>>> specifically these requests. >>>>>>>>>>>> >>>>>>>>>>>> and the effect is permanent. Quickly the pool is exhausted >>>>>>>>>>>> >>>>>>>>>>>> >>>>>>>>>>>> >>>>>>>>>>>>> which pool exactly ? >>>>>>>>>>>>> >>>>>>>>>>>> >>>>>>>>>>>> and the only >>>>>>>>>>>> >>>>>>>>>>>> solution that works is to restart tomcat. >>>>>>>>>>>> >>>>>>>>>>>> >>>>>>>>>>>>> I think it is a bug similar to this one from mod_proxy: >>>>>>>>>>>>> https://tools.cisco.com/security/center/viewAlert.x?alertId= >>>>>>>>>>>>> 34971 >>>>>>>>>>>>> >>>>>>>>>>>>> >>>>>>>>>>>>> Maybe, maybe not. As long as we do not know what the requests >>>>>>>>>>>>> are, >>>>>>>>>>>>> that >>>>>>>>>>>>> >>>>>>>>>>>>> block things, we do not know this. >>>>>>>>>>>> >>>>>>>>>>>> >>>>>>>>>>>> I think also that your solution with setting connectionTimeout >>>>>>>>>>>> will >>>>>>>>>>>> solve >>>>>>>>>>>> >>>>>>>>>>>> the problem, at least partially. THANK YOU. >>>>>>>>>>>> >>>>>>>>>>>>> >>>>>>>>>>>>> >>>>>>>>>>>>> Same thing, we do not know this yet. It was only giving this >>>>>>>>>>>>> >>>>>>>>>>>> explanation, >>>>>>>>>>>> to help you think about where the problem may be. >>>>>>>>>>>> >>>>>>>>>>>> >>>>>>>>>>>> I would like to help you further investigate this issue, as our >>>>>>>>>>>> >>>>>>>>>>>> server >>>>>>>>>>> >>>>>>>>>> >>>>>>> comes under such attack once or twice in a week. >>>>>>>> >>>>>>>>> >>>>>>>>>>>>> >>>>>>>>>>>>> Other than giving you hints, there is not much I or anyone else >>>>>>>>>>>>> can do >>>>>>>>>>>>> >>>>>>>>>>>>> to >>>>>>>>>>>> help. You are the one with control of your servers and >>>>>>>>>>>> logfiles, so >>>>>>>>>>>> you >>>>>>>>>>>> have to investigate and provide more precise information. >>>>>>>>>>>> >>>>>>>>>>>> >>>>>>>>>>>> (*) actually, to be precise, Apache httpd passes *all* requests >>>>>>>>>>>> to >>>>>>>>>>>> mod_jk, >>>>>>>>>>>> to ask it "if it wants that request". mod_jk then accepts or >>>>>>>>>>>> >>>>>>>>>>>> declines, >>>>>>>>>>> >>>>>>>>>> >>>>>>> depending on the JkMount instructions. If mod_jk declines, then >>>>>>>> >>>>>>>>> >>>>>>>>>>>> Apache >>>>>>>>>>> >>>>>>>>>> >>>>>>> httpd will ask the next response generator if it wants this request, >>>>>>>> >>>>>>>>> etc... >>>>>>>>>>>> >>>>>>>>>>>> >>>>>>>>>>>> >>>>>>>>>>>> >>>>>>>>>>>> >>>>>>>>>>>> >>>>>>>>>>>> best regards, >>>>>>>>>>>> >>>>>>>>>>>> artur >>>>>>>>>>>> >>>>>>>>>>>>> >>>>>>>>>>>>> 2016-11-27 12:46 GMT+01:00 André Warnier (tomcat) < >>>>>>>>>>>>> a...@ice-sa.com>: >>>>>>>>>>>>> >>>>>>>>>>>>> Hi. >>>>>>>>>>>>> >>>>>>>>>>>>> >>>>>>>>>>>>> Have a look that the indicated parameters in the two pages >>>>>>>>>>>>>> below.. >>>>>>>>>>>>>> >>>>>>>>>>>>>> You may be the target of such a variant of DDoS attack : many >>>>>>>>>>>>>> clients >>>>>>>>>>>>>> open >>>>>>>>>>>>>> a TCP connection to your server (front-end), but then never >>>>>>>>>>>>>> sends >>>>>>>>>>>>>> a >>>>>>>>>>>>>> HTTP >>>>>>>>>>>>>> request on that connection. In the meantime, the server >>>>>>>>>>>>>> accepts >>>>>>>>>>>>>> >>>>>>>>>>>>>> the >>>>>>>>>>>>> >>>>>>>>>>>> >>>>>>> TCP >>>>>>>> >>>>>>>>> connection, and passes it on to a "child" process or thread for >>>>>>>>>>>>>> processing. The child then waits for the HTTP request line to >>>>>>>>>>>>>> arrive >>>>>>>>>>>>>> on >>>>>>>>>>>>>> the connection (during a certain time), but it never arrives. >>>>>>>>>>>>>> After a >>>>>>>>>>>>>> while, this triggers a timeout (see below), but the standard >>>>>>>>>>>>>> value of >>>>>>>>>>>>>> that >>>>>>>>>>>>>> timeout may be such that in the meantime, a lot of other >>>>>>>>>>>>>> >>>>>>>>>>>>>> connections >>>>>>>>>>>>> >>>>>>>>>>>> >>>>>>> have >>>>>>>> >>>>>>>>> been established by other such nefarious clients, so a lot of >>>>>>>>>>>>>> resources >>>>>>>>>>>>>> of >>>>>>>>>>>>>> the webserver are tied up, waiting for something that will >>>>>>>>>>>>>> never >>>>>>>>>>>>>> come.. >>>>>>>>>>>>>> Since there is never any real request sent on the connection, >>>>>>>>>>>>>> you >>>>>>>>>>>>>> would >>>>>>>>>>>>>> (probably) not see this in the logs either. >>>>>>>>>>>>>> >>>>>>>>>>>>>> The above is the basic mechanism of such an attack. There >>>>>>>>>>>>>> may be >>>>>>>>>>>>>> variations, such as the client not "not sending" a request >>>>>>>>>>>>>> line, >>>>>>>>>>>>>> >>>>>>>>>>>>>> but >>>>>>>>>>>>> >>>>>>>>>>>> >>>>>>> sending it extremely slowly, thus achieving perhaps similar kinds >>>>>>>> >>>>>>>>> >>>>>>>>>>>>>> of >>>>>>>>>>>>> >>>>>>>>>>>> >>>>>>> effects. >>>>>>>> >>>>>>>>> >>>>>>>>>>>>>> As someone pointed out, it is quite difficult to do something >>>>>>>>>>>>>> about >>>>>>>>>>>>>> this >>>>>>>>>>>>>> at the level of the webserver itself, because by the time you >>>>>>>>>>>>>> would do >>>>>>>>>>>>>> something about it, the resources have already been consumed >>>>>>>>>>>>>> and >>>>>>>>>>>>>> your >>>>>>>>>>>>>> server is probably already overloaded. >>>>>>>>>>>>>> There are specialised front-end devices and software >>>>>>>>>>>>>> available, to >>>>>>>>>>>>>> detect >>>>>>>>>>>>>> and protect against this kind of attack. >>>>>>>>>>>>>> >>>>>>>>>>>>>> You may want to have a look at the following parameters, but >>>>>>>>>>>>>> make >>>>>>>>>>>>>> sure >>>>>>>>>>>>>> to >>>>>>>>>>>>>> read the caveats (side-effects, interlocking timeouts etc.), >>>>>>>>>>>>>> otherwise >>>>>>>>>>>>>> you >>>>>>>>>>>>>> may do more harm than good. >>>>>>>>>>>>>> >>>>>>>>>>>>>> Another thing : the settings below are for Apache Tomcat, >>>>>>>>>>>>>> which >>>>>>>>>>>>>> in your >>>>>>>>>>>>>> case is the back-end. It would of course be much better to >>>>>>>>>>>>>> detect >>>>>>>>>>>>>> and >>>>>>>>>>>>>> eliminate this at the front-end, or even before. I had a >>>>>>>>>>>>>> look at >>>>>>>>>>>>>> the >>>>>>>>>>>>>> Apache httpd documentation, and could not find a corresponding >>>>>>>>>>>>>> parameter. >>>>>>>>>>>>>> But I am sure that it must exist. You may want to post this >>>>>>>>>>>>>> same >>>>>>>>>>>>>> question >>>>>>>>>>>>>> on the Apache httpd user's list for a better response. >>>>>>>>>>>>>> >>>>>>>>>>>>>> Tomcat configuration settings : >>>>>>>>>>>>>> >>>>>>>>>>>>>> AJP Connector : (http://tomcat.apache.org/tomc >>>>>>>>>>>>>> at-8.5-doc/config/ajp.html# >>>>>>>>>>>>>> Standard_Implementations) >>>>>>>>>>>>>> >>>>>>>>>>>>>> connectionTimeout >>>>>>>>>>>>>> >>>>>>>>>>>>>> The number of milliseconds this Connector will wait, after >>>>>>>>>>>>>> accepting a >>>>>>>>>>>>>> connection, for the request URI line to be presented. The >>>>>>>>>>>>>> default >>>>>>>>>>>>>> value >>>>>>>>>>>>>> for >>>>>>>>>>>>>> AJP protocol connectors is -1 (i.e. infinite). >>>>>>>>>>>>>> >>>>>>>>>>>>>> (You could for example try to set this to 3000 (milliseconds) >>>>>>>>>>>>>> or >>>>>>>>>>>>>> even >>>>>>>>>>>>>> lower. That should be more than enough for any legitimate >>>>>>>>>>>>>> client >>>>>>>>>>>>>> so >>>>>>>>>>>>>> send >>>>>>>>>>>>>> the HTTP request line. Note however that by doing this at the >>>>>>>>>>>>>> Tomcat >>>>>>>>>>>>>> level, you will probably move the problem to the Apache >>>>>>>>>>>>>> >>>>>>>>>>>>>> httpd/mod_jk >>>>>>>>>>>>> >>>>>>>>>>>> >>>>>>> level. But at least it might confirm that this is the problem >>>>>>>> >>>>>>>>> that you >>>>>>>>>>>>>> are >>>>>>>>>>>>>> seeing. The mod_jk logfile at the httpd level may give you >>>>>>>>>>>>>> some >>>>>>>>>>>>>> hints >>>>>>>>>>>>>> there.) >>>>>>>>>>>>>> >>>>>>>>>>>>>> >>>>>>>>>>>>>> HTTP Connector : (http://tomcat.apache.org/tomc >>>>>>>>>>>>>> at-8.5-doc/config/http.html#Standard_Implementation) >>>>>>>>>>>>>> >>>>>>>>>>>>>> connectionTimeout >>>>>>>>>>>>>> >>>>>>>>>>>>>> The number of milliseconds this Connector will wait, after >>>>>>>>>>>>>> accepting a >>>>>>>>>>>>>> connection, for the request URI line to be presented. Use a >>>>>>>>>>>>>> value >>>>>>>>>>>>>> of -1 >>>>>>>>>>>>>> to >>>>>>>>>>>>>> indicate no (i.e. infinite) timeout. The default value is >>>>>>>>>>>>>> 60000 >>>>>>>>>>>>>> (i.e. >>>>>>>>>>>>>> 60 >>>>>>>>>>>>>> seconds) but note that the standard server.xml that ships with >>>>>>>>>>>>>> Tomcat >>>>>>>>>>>>>> sets >>>>>>>>>>>>>> this to 20000 (i.e. 20 seconds). Unless disableUploadTimeout >>>>>>>>>>>>>> is >>>>>>>>>>>>>> set to >>>>>>>>>>>>>> false, this timeout will also be used when reading the request >>>>>>>>>>>>>> body (if >>>>>>>>>>>>>> any). >>>>>>>>>>>>>> >>>>>>>>>>>>>> >>>>>>>>>>>>>> >>>>>>>>>>>>>> On 26.11.2016 09:57, Jaaz Portal wrote: >>>>>>>>>>>>>> >>>>>>>>>>>>>> hi, >>>>>>>>>>>>>> >>>>>>>>>>>>>> sorry, its mod_jk no jk2, my typo. All at latest versions. We >>>>>>>>>>>>>> >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> tried >>>>>>>>>>>>>> >>>>>>>>>>>>> >>>>>>> with >>>>>>>> >>>>>>>>> mod proxy too. >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> There is no flood of the server. Nobody is flooding us, they >>>>>>>>>>>>>>> use >>>>>>>>>>>>>>> some >>>>>>>>>>>>>>> specific connections after which pool of apache workers is >>>>>>>>>>>>>>> exhausted >>>>>>>>>>>>>>> and >>>>>>>>>>>>>>> blocked >>>>>>>>>>>>>>> and we need to restart tomcat server. >>>>>>>>>>>>>>> It is some kind of exploit but do not know how to log it to >>>>>>>>>>>>>>> obtain >>>>>>>>>>>>>>> details. >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> i had put a limit on connections per client with hope that >>>>>>>>>>>>>>> this >>>>>>>>>>>>>>> will >>>>>>>>>>>>>>> help >>>>>>>>>>>>>>> but once again, it is not a flood. >>>>>>>>>>>>>>> They open several connections that are not dropped by apache >>>>>>>>>>>>>>> when they >>>>>>>>>>>>>>> disconnect. This way whole pool is quickly exhausted and the >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> server >>>>>>>>>>>>>> >>>>>>>>>>>>> >>>>>>> broken. >>>>>>>> >>>>>>>>> >>>>>>>>>>>>>>> i would like to help you to figure details of this attack but >>>>>>>>>>>>>>> this is >>>>>>>>>>>>>>> production server so it is impossible to much debugging >>>>>>>>>>>>>>> options >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> best, >>>>>>>>>>>>>>> artur >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> 2016-11-25 23:44 GMT+01:00 Niranjan Babu Bommu < >>>>>>>>>>>>>>> niranjan.bo...@gmail.com >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> : >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> >>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>> you can find who is flooding site in apache access.log and >>>>>>>>>>>>>>>> block >>>>>>>>>>>>>>>> >>>>>>>>>>>>>>> them >>>>>>>>>>>>>>> in >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> firewall. >>>>>>>>>>>>>>> >>>>>>>>>>>>>>> >>>>>>>>>>>>>>>> ex to find the IP: >>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>> cat /var/log/apache2/access.log |cut -d' ' -f1 |sort |uniq >>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>> -c|sort >>>>>>>>>>>>>>> >>>>>>>>>>>>>> >>>>>>> -gr >>>>>>>> >>>>>>>>> >>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>> On Fri, Nov 25, 2016 at 8:42 AM, Jaaz Portal >>>>>>>>>>>>>>>> <jaazpor...@gmail.com> >>>>>>>>>>>>>>>> wrote: >>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>> hi, >>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>> we are from some weeks struggling with some Polish hackers >>>>>>>>>>>>>>>> that >>>>>>>>>>>>>>>> are >>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>> bringing our server down. After updating apache to latest >>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>> version >>>>>>>>>>>>>>>> >>>>>>>>>>>>>>> >>>>>>> >>>>>>>> (2.4.23) >>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>> and tomcat (8.0.38) available for debian systems we still >>>>>>>>>>>>>>>> cannot >>>>>>>>>>>>>>>> secure >>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>> our >>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>> server. >>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>> Today it has stopped to respond again and we needed to >>>>>>>>>>>>>>>>> restart >>>>>>>>>>>>>>>>> tomcat >>>>>>>>>>>>>>>>> process to get it back alive. >>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>> There is no too much clues in the logs. The apache >>>>>>>>>>>>>>>>> error.log >>>>>>>>>>>>>>>>> gives >>>>>>>>>>>>>>>>> just >>>>>>>>>>>>>>>>> this line: >>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>> [Fri Nov 25 13:08:00.647835 2016] [mpm_event:error] [pid >>>>>>>>>>>>>>>>> 13385:tid >>>>>>>>>>>>>>>>> 1397934896385 >>>>>>>>>>>>>>>>> 92] AH00484: server reached MaxRequestWorkers setting, >>>>>>>>>>>>>>>>> consider >>>>>>>>>>>>>>>>> raising >>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>> the >>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>> MaxR >>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>> equestWorkers setting >>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>> seems that somehow tomcat, mod-jk2 or even apache is >>>>>>>>>>>>>>>>> vulnerable to >>>>>>>>>>>>>>>>> some >>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>> new >>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>> exploit, as we certainly does not have such traffic that >>>>>>>>>>>>>>>> would >>>>>>>>>>>>>>>> block >>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>> our >>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>> server otherwise >>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>> for now we have increased MaxRequestWorkers and we have >>>>>>>>>>>>>>>>> limited >>>>>>>>>>>>>>>>> number >>>>>>>>>>>>>>>>> of >>>>>>>>>>>>>>>>> connections from one client to 5 by mod_bw and limited >>>>>>>>>>>>>>>>> number >>>>>>>>>>>>>>>>> of >>>>>>>>>>>>>>>>> simultaneous connections from one ip by iptables but does >>>>>>>>>>>>>>>>> not >>>>>>>>>>>>>>>>> know >>>>>>>>>>>>>>>>> if >>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>> this >>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>> will help >>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>> best regards, >>>>>>>>>>>>>>>>> artur >>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>> -- >>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>> *Thanks* >>>>>>>>>>>>>>>> *Niranjan* >>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>> This sounds like a variant of the slowloris attack. >>>>>>> >>>>>>> This type of attack doesn't take a large number of clients or >>>>>>> consume a >>>>>>> large amount of bandwidth. >>>>>>> >>>>>>> Basically, the maximum number of connections are made to the server, >>>>>>> and >>>>>>> just enough data is sent to each connection in order to not trigger >>>>>>> the >>>>>>> timeout. André has explained this in more detail earlier in the >>>>>>> thread. >>>>>>> Search for "slowloris attack" for more information. >>>>>>> >>>>>>> There are several ways of mitigating this type of attack. >>>>>>> >>>>>>> As André has mentioned, placing a dedicated device in front of your >>>>>>> systems is often the best way. Lots of benefits (platform neutral, no >>>>>>> stress on your current servers), and some issues (cost, placement / >>>>>>> access may be an issue with hosted solutions). >>>>>>> >>>>>>> However, there are Apache HTTPD modules that can help mitigate these >>>>>>> types of attacks. Some of them are: >>>>>>> >>>>>>> mod_reqtimeout (should be included by default in your Apache HTRPD >>>>>>> 2.4) >>>>>>> mod_qos (quality of service module) >>>>>>> mod_security (application firewall with lots of security rules) >>>>>>> >>>>>>> Do a quick search on "slowloris attack apache httpd 2.4" to get some >>>>>>> ideas. >>>>>>> >>>>>>> All of them will probably place additional load on your Apache HTTPD >>>>>>> server, so make sure that the platform is robust enough to manage the >>>>>>> additional load. >>>>>>> >>>>>>> There is also a beta version of the mod_security module written as a >>>>>>> servlet filter. It should be possible to build this and configure the >>>>>>> filter in Tomcat's default web.xml ($CATALINA_BASE/conf/web.xml). >>>>>>> I've >>>>>>> not tried this. Also, the code base hasn't seen any activity for 3 >>>>>>> years. >>>>>>> >>>>>>> Do a quick search on "modsecurity servlet filter" to find out more >>>>>>> about >>>>>>> the servlet filter version of mod_security. >>>>>>> >>>>>>> In short, there appear to be some ways to mitigate the attack. >>>>>>> >>>>>>> . . . just my two cents >>>>>>> /mde/ >>>>>>> >>>>>>> >>>>>>> >>>>>>> >>>>>> >>>>> --------------------------------------------------------------------- >>>>> 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 >>> >>> >> >