[Koha] F5 Attacks
Jason Sherman
jsn.sherman at gmail.com
Fri Oct 28 04:09:15 NZDT 2016
Just FYI, we run Koha behind the open source version of nginx, and it
has lots of flexibility for rate-limiting by client ip and doing
pretty sophisticated cache handling.
On Thu, Oct 27, 2016 at 7:50 AM, Pedro Amorim <pjamorim91 at gmail.com> wrote:
> Hello all,
>
> As I said before, the Koha I'm currently working on is behind a proxy
> server, namely HAProxy (http://www.haproxy.org/).
> My solution for this was adding the following lines in the frontend of my
> haproxy.cfg:
>
> # Table definition
> stick-table type ip size 100k expire 30s store conn_cur
>
> # Shut the new connection as long as the client has already 10 opened
> tcp-request connection reject if { src_conn_cur ge 10 }
> tcp-request connection track-sc1 src
>
> I won't get into too many technical details, but what this does is check if
> the current connections is higher than the normal behaviour. More on this
> can be read at
> http://www.loadbalancer.org/uk/blog/simple-denial-of-service-dos-attack-mitigation-using-haproxy-2
>
> For me, this is working great.
>
> After some testing with several requests and stressing the server at the
> same time as keeping F5 pressed in the opac-search, only a couple processes
> reach the Koha apache server before HAproxy blocks any subsequent requests.
> And this rejection of requests is up for as long as F5 is pressed. As soon
> as F5 is released, and normal navigation behaviour ensues, the application
> works as normal and the server is healthy.
>
> I know this is solved at the HAProxy and not in Koha, so the problem
> persists in Koha (and other applications as well).
>
> Me, personally, I agree that this is a Koha problem *and* I also agree that
> this is a sys admin responsability. With that said, the Koha community and
> the application itself should be aware of this, and by aware I mean at
> least some piece of documentation in the Koha performance tuning or server
> configuration pages should mention this, even if a prevention
> implementation never comes or isn't in the scope of the application.
>
> Let me know your thoughts on the solution I implemented and if you have any
> ideas of how this particular solution could be improved, or any other
> alternative solution you might have found more adaptable for your
> environment.
>
> Cheers,
>
> Pedro Amorim
>
>
> 2016-10-26 20:32 GMT+00:00 clint.deckard <clint.deckard at frontiers.co.nz>:
>
>> Thank you to everyone who replied, I appreciate you taking the time.
>>
>> I understand that this is not a Koha specific problem, I understand the
>> solution is a sys admin responsibility and I understand that there is
>> probably not a 'one size fits all' solution given the many different system
>> configurations. I also accept my limitations when it comes to system
>> administration, though I am always learning, and I have engaged
>> professional help to assist with this issue.
>>
>> I just thought that since this would be a relatively common issue faced by
>> the Koha community and I suspect many Koha instances are run by folk
>> without in-depth sysadmin knowledge it might be helpful to have some advice
>> on possible ways to deal with the issue.
>>
>> I appreciate that the Koha community give their time and knowledge
>> generously and I really value that. I don't want to take advantage of the
>> 'free advice' and I am most appreciative of it when it is offered.
>>
>> I will be happy to share my experience when I do get a solution.
>>
>> Again, thank you for your time and assistance,
>> Clint.
>>
>>
>> Harry at DHD wrote:
>>
>>>
>>> Even though "sharing" is not obligatory, I had the impression that this
>>> is a somewhat "sharing community".
>>> If someone is willing he/she could share his solution-experience-howto or
>>> what ever.
>>>
>>> Probably this is the wrong place to ask for this kind of help ...
>>>
>>> Look into places like SHOREWALL firewall ... etc. But don't get me wrong
>>> Firewalls are not easy to master!
>>>
>>> Regards!
>>>
>>>
>>> On 26/10/2016 08:07 μμ, Huck wrote:
>>>
>>>> Koha isn't offered 'out of the box'... there is extensive setup required
>>>> and the most basic portion(a webserver) is a requirement, and that would be
>>>> the responsibility of the server's administrator, not a function of a Koha
>>>> developer.
>>>>
>>>>
>>>> On 10/26/2016 5:52 AM, Philippe Blouin wrote:
>>>>
>>>>> I disagree. If Koha is offered out of the box, and we take time to fix
>>>>> security issues, then it's normal for users to expect "basic" attacks to be
>>>>> taken care of.
>>>>>
>>>>> More so, blocking IP is not a possibility if genuine users are involved
>>>>> using a station from within the library.
>>>>>
>>>>> I'm not saying you're wrong that it's mostly sysadmin work and not
>>>>> Koha, but it doesn't mean nothing can be done. From the apache's threads,
>>>>> I found nothing useful (mostly derisive comments). But we could at least
>>>>> talk about it.
>>>>>
>>>>> What about having a javascript preventing refresh on the page withing 5
>>>>> sec of each other? Needs to be done in a way that the refresh doesn't
>>>>> restart the timer.
>>>>>
>>>>> What about having the OPAC search be code where the refresh will
>>>>> basically send nothing ? The checkbox are filled, the request is sent to
>>>>> the backend, but the frontend keeps nothing... I'm just smoking here, but
>>>>> I'm trying to induce some brainstorming in this interesting topic.
>>>>>
>>>>> Philippe Blouin,
>>>>> Responsable du développement informatique
>>>>>
>>>>> Tél. : (888) 604-2627
>>>>> philippe.blouin at inLibro.com <mailto:philippe.blouin at inLibro.com>
>>>>>
>>>>> inLibro | pour esprit libre | www.inLibro.com <http://www.inLibro.com>
>>>>> On 10/26/2016 07:13 AM, Jonathan Druart wrote:
>>>>>
>>>>>> Hi,
>>>>>> I don't think this can/must be fixed on Koha side.
>>>>>> It's a sysadmin duty to take care of that.
>>>>>> I would take a look at fail2ban to parse the web server access logs.
>>>>>> But
>>>>>> make sure not to block your X librarians using the same ip ;)
>>>>>>
>>>>>> On Wed, 26 Oct 2016 at 12:28 Pedro Amorim <pjamorim91 at gmail.com>
>>>>>> wrote:
>>>>>>
>>>>>> I have tested this and the stress caused on the server is very severe.
>>>>>>> It
>>>>>>> seems that for every request, a new zebra process is created and the
>>>>>>> server
>>>>>>> will only respond when the last one is finished. This ofc will result
>>>>>>> in
>>>>>>> time outs and eventually a crash in the server.
>>>>>>>
>>>>>>> This is a major critical issue IMO, anyone who knows about this has
>>>>>>> the
>>>>>>> power to deny the service of any Koha online without using any
>>>>>>> additional
>>>>>>> hacking/attacking software.
>>>>>>>
>>>>>>> The Koha I'm working on right now - still in development - is accessed
>>>>>>> behind a proxy server, and I will attempt to solve the problem through
>>>>>>> that, by limiting the requests from the same origin with very little
>>>>>>> time
>>>>>>> between them. Still, even if I'm successful with this, the problem
>>>>>>> will
>>>>>>> still lie in Koha.
>>>>>>>
>>>>>>> Anyone with some sort of insight is very welcome.
>>>>>>>
>>>>>>> Pedro Amorim
>>>>>>>
>>>>>>> 2016-10-26 8:24 GMT+00:00 clint.deckard <
>>>>>>> clint.deckard at frontiers.co.nz>:
>>>>>>>
>>>>>>> I have had this issue appear today. I have attempted to set up
>>>>>>>>
>>>>>>> mod_evasive
>>>>>>>
>>>>>>>> for apache but it doesn't seem to have solved the problem.
>>>>>>>> I would really appreciate some advice.
>>>>>>>> Clint.
>>>>>>>>
>>>>>>>>
>>>>>>>> rfblanchard wrote:
>>>>>>>>
>>>>>>>> Assume a basic opac search:
>>>>>>>>> http://..../cgi-bin/koha/opac-search.pl?q=dog&branch_group_l
>>>>>>>>> imit=branch%3A349
>>>>>>>>>
>>>>>>>>> This would take about 10 seconds to return the first time.
>>>>>>>>>
>>>>>>>>> Assume the user refreshes the results using f5 and keep there finger
>>>>>>>>> there a
>>>>>>>>> moment to long (3s):
>>>>>>>>> This would kill my server for about 1 minute.
>>>>>>>>>
>>>>>>>>> Any attacker could easily make the server unresponsive indefinitely
>>>>>>>>> by
>>>>>>>>> simply holding f5 on an opac search.
>>>>>>>>>
>>>>>>>>> Any recommendations on how to deal with this problem?
>>>>>>>>>
>>>>>>>>> here is a sample from top:
>>>>>>>>>
>>>>>>>>> Tasks: 313 total, 3 running, 309 sleeping, 0 stopped, 1 zombie
>>>>>>>>> %Cpu(s): 93.7 us, 5.2 sy, 0.0 ni, 1.0 id, 0.2 wa, 0.0 hi, 0.0
>>>>>>>>> si,
>>>>>>>>> 0.0
>>>>>>>>> st
>>>>>>>>> KiB Mem: 16465036 total, 1532492 used, 14932544 free, 63180
>>>>>>>>> buffers
>>>>>>>>> KiB Swap: 8526844 total, 0 used, 8526844 free. 505124
>>>>>>>>> cached
>>>>>>>>> Mem
>>>>>>>>>
>>>>>>>>> PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+
>>>>>>>>> COMMAND
>>>>>>>>> 7027 peischo+ 20 0 416164 162924 12756 S 58.8 1.0 0:26.43
>>>>>>>>> /usr/share/koha
>>>>>>>>> 7009 peischo+ 20 0 416800 163524 12756 S 56.5 1.0 0:33.77
>>>>>>>>> /usr/share/koha
>>>>>>>>> 7444 peischo+ 20 0 129832 15216 5900 R 37.2 0.1 0:01.12
>>>>>>>>> zebrasrv
>>>>>>>>> 7445 peischo+ 20 0 129832 15216 5900 R 35.6 0.1 0:01.07
>>>>>>>>> zebrasrv
>>>>>>>>> 1151 mysql 20 0 886564 181096 10808 S 8.6 1.1 1:27.57
>>>>>>>>>
>>>>>>>> mysqld
>>>>>>>
>>>>>>>> 7435 koha 20 0 25892 3272 2528 R 0.3 0.0 0:00.03
>>>>>>>>> top
>>>>>>>>> 1 root 20 0 176144 5044 3096 S 0.0 0.0 0:01.43
>>>>>>>>> systemd
>>>>>>>>> 2 root 20 0 0 0 0 S 0.0 0.0 0:00.00
>>>>>>>>> kthreadd
>>>>>>>>>
>>>>>>>>>
>>>>>>>>>
>>>>>>>>> --
>>>>>>>>> View this message in context: http://koha.1045719.n5.nabble.
>>>>>>>>> com/F5-Attacks-tp5906098.html
>>>>>>>>> Sent from the Koha-general mailing list archive at Nabble.com.
>>>>>>>>> _______________________________________________
>>>>>>>>> Koha mailing list http://koha-community.org
>>>>>>>>> Koha at lists.katipo.co.nz
>>>>>>>>> https://lists.katipo.co.nz/mailman/listinfo/koha
>>>>>>>>>
>>>>>>>>> _______________________________________________
>>>>>>>> Koha mailing list http://koha-community.org
>>>>>>>> Koha at lists.katipo.co.nz
>>>>>>>> https://lists.katipo.co.nz/mailman/listinfo/koha
>>>>>>>>
>>>>>>>> _______________________________________________
>>>>>>> Koha mailing list http://koha-community.org
>>>>>>> Koha at lists.katipo.co.nz
>>>>>>> https://lists.katipo.co.nz/mailman/listinfo/koha
>>>>>>>
>>>>>>> _______________________________________________
>>>>>> Koha mailing list http://koha-community.org
>>>>>> Koha at lists.katipo.co.nz
>>>>>> https://lists.katipo.co.nz/mailman/listinfo/koha
>>>>>>
>>>>>
>>>>> _______________________________________________
>>>>> Koha mailing list http://koha-community.org
>>>>> Koha at lists.katipo.co.nz
>>>>> https://lists.katipo.co.nz/mailman/listinfo/koha
>>>>>
>>>>
>>>> _______________________________________________
>>>> Koha mailing list http://koha-community.org
>>>> Koha at lists.katipo.co.nz
>>>> https://lists.katipo.co.nz/mailman/listinfo/koha
>>>>
>>>
>>> _______________________________________________
>>> Koha mailing list http://koha-community.org
>>> Koha at lists.katipo.co.nz
>>> https://lists.katipo.co.nz/mailman/listinfo/koha
>>>
>> _______________________________________________
>> Koha mailing list http://koha-community.org
>> Koha at lists.katipo.co.nz
>> https://lists.katipo.co.nz/mailman/listinfo/koha
>>
> _______________________________________________
> Koha mailing list http://koha-community.org
> Koha at lists.katipo.co.nz
> https://lists.katipo.co.nz/mailman/listinfo/koha
--
Jason
More information about the Koha
mailing list