Subject: What goes into the security doc?

From: Dan Langille <[email-masked]>
Date: Mon, 20 Jan 2003 00:01:12 -0500 (EST)

With reference to my post to the "PostgreSQL Password Cracker" on
2003-01-02, I've promised to write a security document for the project.
Here it is, Sunday night, and I can't sleep.  What better way to get there
than start this task...

My plan is to write this in very simple HTML.  I will post the draft
document on my website and post the URL here from time to time for
feedback. Please make suggestions for content.  So far, I will cover these
items:

- .pgpass (see
http://developer.postgresql.org/docs/postgres/libpq-files.html)
- local connections
- remote connections (recommending SSL)
- pg_hba (only in passing, most of that is at
http://www.postgresql.org/idocs/index.php?client-authentication.html)
- running the postmaster as a specific user

That doesn't sound like much.  Surely you can think of something else to
add.  Should I post this to another list for their views?

OK, that's done it.  I'm ready for sleep now.

---

From: Robert Treat <[email-masked]>
Date: 21 Jan 2003 10:16:31 -0500

I'm not sure how adequately these topics are covered elsewhere, but you
should probably provide at least a pointer if not improved information:

* Should have a mention of the pgcrypto code in contrib.

* Brain hiccup, but isn't there some type of "password" datatype

* Explanation of problems/solutions of using md5 passwords inside
postgresql. this has tripped up a lot of people upgrading to 7.3 

* possibly go into server resource issues and the pitfalls in giving
free form sql access to just anyone. (Think unconstrained join on all
tables in a database)

hth,

Robert Treat

---

From: "Christopher Kings-Lynne" <[email-masked]>
Date: Wed, 22 Jan 2003 13:29:33 +0800

Recommend always running "initdb -W" and setting all pg_hba entries to md5.

Chris

> -----Original Message-----
> From: [email-masked]
> [mailto:[email-masked]]On Behalf Of Robert Treat
> Sent: Tuesday, 21 January 2003 11:17 PM
> To: Dan Langille
> Cc: [email-masked]
> Subject: Re: [HACKERS] What goes into the security doc?
>
>
> ---------------------------(end of broadcast)---------------------------
> TIP 5: Have you checked our extensive FAQ?
>
> http://www.postgresql.org/users-lounge/docs/faq.html
>

---

From: "Dan Langille" <[email-masked]>
Date: Fri, 24 Jan 2003 10:00:52 -0500

> Recommend always running "initdb -W" and setting all pg_hba entries to md5.

Thanks.  I also encountered this item on IRC:

[09:26] <fede2> Guys, is there a problem with using /bin/true of 
/bin/false as the shell of the postgres user? The docs only says 
"adduser postgres" , witch will give postgres a nice shell.
[09:27] <fede2> I'm asking because the guys from Gentoo (thats a 
distro FWIW), want to use either /bin/false of /bin/true as postgres' 
shell.
[09:27] <dvl> fede2: it means you won't be able to become the 
postgres user to run commands.
[09:27] <mmc_> ... to run SHELL commands.
[09:29] <fede2> dvl: Aldo it's not the same, one could use "su -c foo 
postgres" to workarround it.
[09:30] <fede2> dvl: I was wondering if it had an even heavier 
reason, besides that.
[09:34] <mmc_> fede2: tha manpage of su says, that -c args is treated 
by the login shell !
[09:35] <fede2> mmc_: Hmm.. true. That makes it a heavy enough 
reason. Thanks.
[09:35] * fede2 departs
-- 
Dan Langille : http://www.langille.org/

---

From: "Andrew Dunstan" <[email-masked]>
Date: Fri, 24 Jan 2003 10:36:43 -0500

man su says (on Linux):

       -s, --shell=SHELL
              run SHELL if /etc/shells allows it

Illustration:

[adunsta:adunsta]$ su -s /bin/tcsh - -c 'ps -f $$'
Password:
UID        PID  PPID  C STIME TTY      STAT   TIME CMD
root     10682 10681  0 10:34 pts/0    S      0:00 -tcsh -c ps -f $$
[adunsta:adunsta]$

So setting /bin/true as the login shell prevents real logins but doesn't
prevent running commands as the user via su, even from a login shell.

andrew

----- Original Message -----
From: "Dan Langille" <[email-masked]>
To: "Christopher Kings-Lynne" <[email-masked]>
Cc: <[email-masked]>
Sent: Friday, January 24, 2003 10:00 AM
Subject: Re: [HACKERS] What goes into the security doc?

> TIP 6: Have you searched our list archives?
>
> http://archives.postgresql.org

---

From: Bruce Momjian <[email-masked]>
Date: Sat, 25 Jan 2003 21:15:53 -0500 (EST)

> * Brain hiccup, but isn't there some type of "password" datatype

It is in /contrib as chkpass:
	
	Chkpass is a password type that is automatically checked and converted upon
	entry.  It is stored encrypted.  To compare, simply compare agains a clear
	text password and the comparison function will encrypt it before comparing.
	It also returns an error if the code determines that the password is easily
	crackable.  This is currently a stub that does nothing.
	
	I haven't worried about making this type indexable.  I doubt that anyone
	would ever need to sort a file in order of encrypted password.
	
	If you precede the string with a colon, the encryption and checking are
	skipped so that you can enter existing passwords into the field.
	
	On output, a colon is prepended.  This makes it possible to dump and reload
	passwords without re-encrypting them.  If you want the password (encrypted)
	without the colon then use the raw() function.  This allows you to use the
	type with things like Apache's Auth_PostgreSQL module.
	
	D'Arcy J.M. Cain
	[email-masked]
	
The document is a good idea, and the initdb -W item is good too!

-- 
  Bruce Momjian                        |  http://candle.pha.pa.us
  [email-masked]               |  (610) 359-1001
  +  If your life is a hard drive,     |  13 Roberts Road
  +  Christ can be your backup.        |  Newtown Square, Pennsylvania 19073

---

From: Bruce Momjian <[email-masked]>
Date: Sat, 16 Aug 2003 12:41:57 -0400 (EDT)

Now that we are in beta, does someone want to tackle a "security"
section in the docs?

---------------------------------------------------------------------------

---

From: "Dan Langille" <[email-masked]>
Date: Sat, 16 Aug 2003 22:09:40 -0400

Given I'm the smartass that volunteered in the first place, perhaps I 
should complete what I started.

I work well with a deadline.  When do you want this done?

---

From: Bruce Momjian <[email-masked]>
Date: Sat, 16 Aug 2003 22:13:26 -0400 (EDT)

I would say any time before 7.4 final, which should be in 4-6 weeks.

---

From: Peter Eisentraut <[email-masked]>
Date: Tue, 19 Aug 2003 10:18:19 +0200 (CEST)

> Now that we are in beta, does someone want to tackle a "security"

IMO, security shouldn't be a section, it should be a recurring theme
throughout all documentation material.

-- 
Peter Eisentraut   [email-masked]

---

From: "Dan Langille" <[email-masked]>
Date: Tue, 19 Aug 2003 06:08:38 -0400

> throughout all documentation material.

Do you think the existing docs are inadequete in this regard?  If so, 
in what areas are they insufficient?  What changes do you recommend?

FWIW, having a theme is a great idea.  Please let us know of any 
changes you see necessary.  But I, and others much wiser than I am,  
think a section where the admin can read up on the important stuff is 
essential.

If you were new to PostgreSQL, would you rather string together 
information from all over the documentation or would you rather have 
a concise overview of Things You Need To Know(tm)?

As always, patches are requested.
-- 
Dan Langille : http://www.langille.org/

---

From: "Dan Langille" <[email-masked]>
Date: Sat, 30 Aug 2003 08:49:07 -0400

I've started.  I'm wondering how much we need to cover here and how 
much can be delegated to other sections of the documentation.  Before 
I get very far into this, I want to get some ideas as to what we 
need.

This is what I have so far:
  http://www.freebsddiary.org/tmp/PostgreSQL-security.txt

cheers

---

From: Peter Eisentraut <[email-masked]>
Date: Sat, 30 Aug 2003 16:15:39 +0200 (CEST)

> I get very far into this, I want to get some ideas as to what we

If you intend this to go into the main documentation, then I think we
don't need anything, because everything is already documented in its
proper place.  What you wrote is basically just a summary of various
system aspects that might have to do with that vague word "security",
together with pointers to the places where they are documented (which
reinforces my point).  Perhaps a "howto" format that you can post on
techdocs might be more appropriate for you.

---

From: "Dan Langille" <[email-masked]>
Date: Sat, 30 Aug 2003 10:23:29 -0400

On 30 Aug 2003 at 16:15, Peter Eisentraut wrote:

> proper place.

It has already been decided that we need something.  Hence the 
request for someone to write it and my start on the task.

> What you wrote is basically just a summary of various
> reinforces my point).

Your point being that we don't need anything more than we already 
have?  That conflicts with what has already been decided.

> Perhaps a "howto" format that you can post on

I'm not sure what you mean by "for you".

---

From: Peter Eisentraut <[email-masked]>
Date: Sat, 30 Aug 2003 17:37:01 +0200 (CEST)

Dan Langille writes:

> It has already been decided that we need something.

Please point me to where this has been decided.

---

From: "Dan Langille" <[email-masked]>
Date: Sat, 30 Aug 2003 12:00:46 -0400

> Please point me to where this has been decided.

I'm sure you can google as well I can can.  The original message in 
this thread referred to "PostgreSQL Password Cracker" posted on 2003-
01-02.  You could also search for the subject of this message.  When 
you find those you'll see that such a section was suggested.  I took 
up the task, suggested some content.  Then it lingered and was 
brought up again recently.  Your objections are the first.

I can't see why you, or anyone for that matter, can possibly object 
to a section titled security which points to the relevent components 
and parts within the documentation. As previously stated, what I have 
posted is a starting point.

You aren't being asked to do the work.  Why do you care if someone 
else does it?  You may not need such documentation, but it will be 
useful to many.
-- 
Dan Langille : http://www.langille.org/

---

From: Bruce Momjian <[email-masked]>
Date: Sat, 30 Aug 2003 13:47:19 -0400 (EDT)

> else does it?  You may not need such documentation, but it will be 

I don't think we "decided" to add it, but no one has objected to the
idea, except Peter recently.  Does it make sense to have a security
overview section in the documentation?

---

From: Tom Lane <[email-masked]>
Date: Sat, 30 Aug 2003 17:50:59 -0400

> overview section in the documentation?

I think it does.

As I think Peter is trying to point out, you could almost get the same
result just by having a fat index entry under "security", but I think
people are more likely to notice a chapter or section in the Admin Guide
with such a title.  Also, once we have such a chapter, we might find it
reads more naturally to move some of the existing discussions into it,
leaving only a cross-reference where the material is now.

			regards, tom lane

---

From: Peter Eisentraut <[email-masked]>
Date: Sun, 31 Aug 2003 11:55:14 +0200 (CEST)

> leaving only a cross-reference where the material is now.

These are the topics that Dan has identified so far:

file security
database users and privileges
client authentication
libpq password files
external libraries

It makes no sense to put all these topics into one chapter, because they
have nothing in common (except "security"): they apply in different stages
of PostgreSQL use, they are managed by different programs and
environments, and they affect different people.

---

From: "Dan Langille" <[email-masked]>
Date: Wed, 03 Sep 2003 13:54:01 -0400

> leaving only a cross-reference where the material is now.

So do we want this work or not?
-- 
Dan Langille : http://www.langille.org/