As a follow up, I have a design question

http://docs.couchdb.org/en/2.0.0/intro/security.html#authentication-database says:

 * There is a special design document|_auth|that cannot be modified

However it looks like the admin user can delete the authentication database (thereby deleting _auth document as well).

Is there a convenience benefit of allowing this (eg: admin party is useful when you start off locally and dont care about security) ?

Thanks
Vivek


On 01/23/2017 05:27 AM, Vivek Pathak wrote:
Sorry for delayed response (I had to restore the backups and harden the server a bit in order to deal with the ongoing attempts to grab my data). And thank you all to those who helped.

Looks like this was a plain password sniffing of admin password. No evidence of guessing or repeated attempts - and it was not a simple password to guess or crack.

I believe the admin password could only be sniffed because it was on open port 5984. I was careless because the site was in development.

So now I have couchdb listening on 127.0.0.1, and the admin password is now randomly generated 18 characters (dont know good if the centos 7 rng has trapdoor though). The need for replication and UI access via _utils can be satisfied by setting up a ssh tunnel via a random port, eg:

    ssh -N -L 57237:localhost:5984  [email protected]

Next is to move to https - and that should complete the securing aspect. Also ended up creating offline backup on a stopped ec2 instance - this should come handy if the attack become really serious.

Thank you


On 01/20/2017 09:09 AM, Thomas Guillet wrote:
@Paul: I agree, it is pretty straightforward to have some basic settings on.

Could we rely on the cluster_setup endpoint to secure the instance?
If that is considered to be the first 'mandatory step' of a live
instance, it would be nice as an almost out-of-the-box secure set up.
(Plus, you can always "curl" the endpoint instead of "perl" the local.ini)

SSL-only is tricky as the http server can't be deactivated in
local.ini but in default.ini (from memory).

@All: What do you consider a same/secure set up? What are the known
unsecured features/weaknesses of CouchDB.

@Vivek: You issue worries me quite a lot. Do you have a better idea of
what happened?
I saw you are using HTTP instead of HTTPS, were you using in encrypted
connection to exchange your credentials and session?
Is your instance behind a proxy? (nginx or alike) They may have other
logs to help us investigate.






2017-01-20 12:49 GMT+01:00 Paul Hammant <[email protected]>:
tee-hee, that was my wishful thinking, less actual planning :)

As usual, there is no estimate for now.

Don't worry - my open source commitments slip by five years at a time, but
I thought I'd ask just in case.

It might be better to focus on a series of post-install scripts for 2.x
that lock down a couch.

I was *very* excited by my first (and more or less only) exposure to
CouchDB for - http://paulhammant.com/2015/12/21/angular-and-svg-and-couchdb. As part of that I wanted to make it easy for the reader to turn on CORS:

perl -p -i -e 's/;enable_cors/enable_cors/'
/usr/local/etc/couchdb/default.ini
perl -p -i -e 's/enable_cors = false/enable_cors = true/'
/usr/local/etc/couchdb/default.ini
perl -p -i -e 's/;origins/origins/' /usr/local/etc/couchdb/default.ini
perl -p -i -e 's/origins = /origins = */' /usr/local/etc/couchdb/default.ini
perl -p -i -e 's/origins = \*\*/origins = */'
/usr/local/etc/couchdb/default.ini


That's to turn on CORS (CouchDB v1.6.x), for the blog entry.

I'll bet that it's only another eight "one-liners" (Perl or not) to go
SSL-only, cancel the AdminParty, and generate a unique admin password.

- Paul


Reply via email to