From: | Magnus Hagander <magnus(at)hagander(dot)net> |
---|---|
To: | Heiko Wundram <modelnine(at)modelnine(dot)org> |
Cc: | Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>, pgsql-general(at)postgresql(dot)org |
Subject: | Re: Limiting number of connections to PostgreSQL per IP (not per DB/user)? |
Date: | 2011-11-30 08:26:50 |
Message-ID: | CABUevEw4_rJxvD-K6a5YKmxQbS9V6Qii2tfrafjuQdQQ+LuqOw@mail.gmail.com |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-general |
On Wed, Nov 30, 2011 at 09:23, Heiko Wundram <modelnine(at)modelnine(dot)org> wrote:
> Am 29.11.2011 23:49, schrieb Tom Lane:
>>
>> Another way that we've sometimes recommended people handle custom login
>> restrictions is
>> (1) use PAM for authentication
>> (2) find or write a PAM plugin that makes the kind of check you want
>
> Very interesting - I'll first try the connlimit approach hinted at by Filip,
> but if PostgreSQL does normal session setup/teardown using PAM (I've never
> used PAM authentication for PostgreSQL before), this should be a workable
> solution in case using iptables doesn't turn out to properly handle
> disconnected sessions quickly enough.
I don't believe we do teardown using PAM, just session start. So you'd
have to have your PAM module check the current state of postgresql
every time - not keep some internal state.
FWIW, another option for writing your authentication module is to
write a simple RADIUS server running on the same box. It's pretty
trivial to do, especially in a high level language. The end result is
the same as if you use PAM - you get custom authentication that can
apply specific checks.
--
Magnus Hagander
Me: http://www.hagander.net/
Work: http://www.redpill-linpro.com/
From | Date | Subject | |
---|---|---|---|
Next Message | Heiko Wundram | 2011-11-30 08:36:50 | Re: Limiting number of connections to PostgreSQL per IP (not per DB/user)? |
Previous Message | Heiko Wundram | 2011-11-30 08:23:25 | Re: Limiting number of connections to PostgreSQL per IP (not per DB/user)? |