What are you using for a client?

I generally use a REST client written in PHP or Perl and then prevent cross
scripting so only the client can do the work.

My Solr cluster is running behind OpenVPN on 172.16.0.0/24

I use a jquery in the following to get an infinite scroll

http://www.frogshopping.com

cross scripting work not in place yet.

On 26 December 2015 at 09:59, Doug Turnbull <
dturnb...@opensourceconnections.com> wrote:

> True though you could also query an API in front of Solr to a stand still
> pretty easily.  DoSing is a pretty easy thing to do to anything that needs
> to be open to the public.
>
> The biggest issue with the proxy approach is an attacker with Solr
> knowledge that doesn't need to DoS, just send a handful of really slow
> queries to Solr. This is something that can be mitigated, but the more
> skilled the attacker the more interesting the slow queries get.
>
> I should note this is a problem to mitigate with any system that handles
> user queries by passing then directly to edismax. Solr sort of encourages
> you to talk straight to edismax, and most systems don't prepare or escape
> the query. Instead they want to support the full range of query operations.
> An attacker can still put nasty function queries in the query box enough
> times to make a Solr server crawl.
>
> Doug
>
> On Saturday, December 26, 2015, GW <thegeofo...@gmail.com> wrote:
>
> > Yes, your proxy seems to work.
> >
> > The only thing that bothers me is anyone can query your Solr
> installation.
> >
> > The world is not a nice place and I can't tell you how many DOS attacks
> > I've fended off in the last 30 years.
> >
> > If I thought you were an a-hole I could set up a few machines and query
> > your server to a standstill.
> >
> > About ten years ago I was working on a contract. The competitor that lost
> > the bid did a email DOS attack on me after they took out a whole bunch
> car
> > adds (hot deals) in the local paper.  My email was f###'d and my phone
> was
> > ringing off the hook.
> >
> > Cheers,
> >
> > GW
> >
> >
> > On 25 December 2015 at 21:55, Doug Turnbull <
> > dturnb...@opensourceconnections.com <javascript:;>> wrote:
> >
> > > Yeah I prefer a whitelist of locked down query request handlers via a
> > > proxy that are reasonably well protected. I would never expose update
> to
> > > the web or allow any updating over a public interface.
> > >
> > > If you want an example, you can checkout
> > >
> > >
> > >
> >
> http://solr.quepid.com/solr/statedecoded/select?q=*:*&qt=update&stream.body=
> > > <delete><query>*:*</query></delete>&commit=true
> > >
> > > http://solr.quepid.com/solr/statedecoded/update?stream.body=
> > > <delete><query>*:*</query></delete>&commit=true
> > >
> > > But still get search results back:
> > > http://solr.quepid.com/solr/statedecoded/select?q=*:*
> > >
> > > Click all those all day long. And do let me know if you find holes...
> I'm
> > > sure there's room for improvement
> > >
> > > Cheers,
> > > -Doug
> > >
> > > On Friday, December 25, 2015, GW <thegeofo...@gmail.com
> <javascript:;>>
> > wrote:
> > >
> > > > If you are using Linux a simple one liner in IP tables
> > > >
> > > > iptables -I INPUT \! --src www.yourwebserver.com -m tcp -p tcp
> --dport
> > > > 8983 -j DROP
> > > >
> > > >
> > > > If windows, you can do something similar
> > > >
> > > > otherwise it is very easy for anyone to delete all your documents
> with
> > > >
> > > > http://yoursolrserver.com:8983/solr/your-core/update?stream.body=
> > > > <delete><query>*:*</query></delete>&commit=true
> > > >
> > > >
> > > >
> > > >
> > > > On 25 December 2015 at 20:42, Doug Turnbull <
> > > > dturnb...@opensourceconnections.com <javascript:;> <javascript:;>>
> > wrote:
> > > >
> > > > > Hi Shawn
> > > > >
> > > > > Maybe I should have qualified the parameters of scenarios this make
> > me
> > > > > comfortable just proxying Solr directly w/o an API
> > > > >
> > > > > These situations include:
> > > > >
> > > > > 1. I've got no qualms about giving the whole world access to every
> > > > document
> > > > > in the index. There's nothing protected about anything.
> > > > > 2. The content can be easily rebuilt , it's not very large. (I can
> > > easily
> > > > > push a button and make a new one)
> > > > >
> > > > > Sure you can denial of service Solr, and I might lose my search
> > index.
> > > > But
> > > > > you can denial of service anything. This includes just about
> anything
> > > you
> > > > > put in front of Solr. Moreover, the added complexity of a
> > > > > Drupal/Wordpress/your API might only add to the security problems
> > with
> > > > > their own security issues. I'd rather keep it simple and have fewer
> > > > moving
> > > > > parts.
> > > > >
> > > > > Cases where I would want an API in front of Solr (these are just
> the
> > > > > security ones):
> > > > > - I want to protect the content (ie based on some notion of a
> "user"
> > or
> > > > > other permissions)
> > > > > - Rebuilding the content would be very hard and time consuming
> > > > >
> > > > > I would also say to expose Solr directly to everyone you probably
> > > should
> > > > > know about Solr's bugaboos:
> > > > > - the lovely qt parameter and the request dispatcher (the nginx
> proxy
> > > > below
> > > > > disallows qt)
> > > > > - deep paging (prevented by the nginx proxy)
> > > > > - how to lock down a request handler fairly robustly, how to use
> > > > invariants
> > > > > - mitigating intentionally malicious queries (such as the lovely
> > > "sleep"
> > > > > function query).
> > > > >
> > > > > I'm also curious to hear what the websolr people do, or anyone else
> > > that
> > > > > hosts Solr for the JavaScript app development crowd.
> > > > >
> > > > > Cheers
> > > > > -Doug
> > > > >
> > > > >
> > > > > On Friday, December 25, 2015, Shawn Heisey <apa...@elyograg.org
> > <javascript:;>
> > > > <javascript:;>> wrote:
> > > > >
> > > > > > On 12/25/2015 12:17 PM, Eric Dain wrote:
> > > > > > > Does allowing javascript direct access to SolrCloud raise
> > security
> > > > > > concern?
> > > > > > > should I build a REST service in between?
> > > > > > >
> > > > > > > I need to provide async search capability to web pages. the
> pages
> > > > will
> > > > > be
> > > > > > > public with no authentication.
> > > > > >
> > > > > > End users should never have access to Solr.  Access to Solr from
> > the
> > > > > > end-user machine is required if you want to accept Solr responses
> > > > > directly.
> > > > > >
> > > > > > In one of the other replies that you received, Doug has given you
> > an
> > > > > > nginx config for proxying access to Solr -- indirect access.
> This
> > > can
> > > > > > protect against *changes* to the index, and it has protection
> > against
> > > > > > high start/rows values, but there are many other ways that an
> > > attacker
> > > > > > can construct denial of service queries, which this proxy config
> > will
> > > > > > not prevent.
> > > > > >
> > > > > > I think that indirect access (through a proxy) should not be
> > allowed
> > > > > > either, unless you can trust all the people that will have
> access.
> > > > > >
> > > > > > If Solr is open to a sufficiently wide audience (especially the
> > > > > > Internet), someone will find a way to abuse the service even
> with a
> > > > > > proxy, either to cause harm or to learn things they shouldn't
> know.
> > > > > >
> > > > > > The most secure option is to only allow the webservers and
> trusted
> > > > > > administrators to access Solr.  All end user (Internet) access to
> > > Solr
> > > > > > should be handled through a custom web application.  This might
> be
> > > > > > something that you find and install (such as wordpress, drupal,
> > etc),
> > > > or
> > > > > > one that you write yourself.
> > > > > >
> > > > > > You can still do AJAX while maintaining security.  You'll need to
> > > write
> > > > > > something in a server-side web programming language like PHP,
> Java,
> > > > etc.
> > > > > >  This code will need to accept the AJAX requests from your
> > > client-side
> > > > > > javascript code, validate the request parameters to make sure
> > they're
> > > > > > sane, get a response from Solr, and return relevant data.  If the
> > > > > > parameters don't validate, return an error, and handle that error
> > > > > > appropriately in the javascript code.
> > > > > >
> > > > > > Thanks,
> > > > > > Shawn
> > > > > >
> > > > > >
> > > > >
> > > > > --
> > > > > *Doug Turnbull **| *Search Relevance Consultant | OpenSource
> > > Connections
> > > > > <http://opensourceconnections.com>, LLC | 240.476.9983
> > > > > Author: Relevant Search <http://manning.com/turnbull>
> > > > > This e-mail and all contents, including attachments, is considered
> to
> > > be
> > > > > Company Confidential unless explicitly stated otherwise, regardless
> > > > > of whether attachments are marked as such.
> > > > >
> > > >
> > >
> > >
> > > --
> > > *Doug Turnbull **| *Search Relevance Consultant | OpenSource
> Connections
> > > <http://opensourceconnections.com>, LLC | 240.476.9983
> > > Author: Relevant Search <http://manning.com/turnbull>
> > > This e-mail and all contents, including attachments, is considered to
> be
> > > Company Confidential unless explicitly stated otherwise, regardless
> > > of whether attachments are marked as such.
> > >
> >
>
>
> --
> *Doug Turnbull **| *Search Relevance Consultant | OpenSource Connections
> <http://opensourceconnections.com>, LLC | 240.476.9983
> Author: Relevant Search <http://manning.com/turnbull>
> This e-mail and all contents, including attachments, is considered to be
> Company Confidential unless explicitly stated otherwise, regardless
> of whether attachments are marked as such.
>

Reply via email to