Conditionally disabling auth policy

Aki Tuomi aki.tuomi at dovecot.fi
Thu Sep 28 19:34:05 EEST 2017


> On September 28, 2017 at 7:20 PM Mark Moseley <moseleymark at gmail.com> wrote:
> 
> 
> On Wed, Sep 27, 2017 at 10:06 PM, Aki Tuomi <aki.tuomi at dovecot.fi> wrote:
> 
> >
> >
> > On 27.09.2017 20:14, Mark Moseley wrote:
> > > On Wed, Sep 27, 2017 at 10:03 AM, Marcus Rueckert <darix at opensu.se>
> > wrote:
> > >
> > >> On 2017-09-27 16:57:44 +0000, Mark Moseley wrote:
> > >>> I've been digging into the auth policy stuff with weakforced lately.
> > >> There
> > >>> are cases (IP ranges, so could be wrapped up in remote {} blocks) where
> > >>> it'd be nice to skip the auth policy (internal hosts that I can trust,
> > >> but
> > >>> that are hitting the same servers as the outside world).
> > >>>
> > >>> Is there any way to disable auth policy, possibly inside a remote{}?
> > >>>
> > >>> auth_policy_server_url complains that it can't be used inside a remote
> > >>> block, so no dice there. Anything I'm missing?
> > >> From my config:
> > >> ```
> > >>   allowed_subnets=newNetmaskGroup()
> > >>   allowed_subnets:addMask('fe80::/64')
> > >>   allowed_subnets:addMask('127.0.0.0/8')
> > >> [snip]
> > >>   if (not(allowed_subnets.match(lt.remote)))
> > >>   -- do GeoIP check
> > >>   end
> > >> ```
> > >>
> > >> of course could just skip all checks in that case if really wanted. but
> > >> you probably want to be careful not to skip too many checks otherwise
> > >> the attack moves from your imap port e.g. to your webmailer.
> > >>
> > >>
> > >>
> > > Hi. Yup, I've got my own whitelisting going on, on the wforce side of
> > > things. I'm just looking to forgo the 3 HTTP reqs completely to wforce,
> > > from the dovecot side, if possible. I've got some internal services that
> > > can generate a significant amount of dovecot logins, but it's kind of
> > silly
> > > to keep doing auth policy lookups for those internal servers.
> > >
> > > To continue the Lua thread, I was thinking I could also drop a local
> > > openresty to do some conditional lookups. I.e. if remote IP is known
> > good,
> > > a localhost nginx just sends back the response; if not a known good IP,
> > > then proxy the req over to the wforce cluster. That might be a bit
> > overkill
> > > though :)
> > Hi!
> >
> > Currently it's not possible to disable auth_policy conditionally,
> > although it does sound like a good idea.
> >
> > You should probably see also if your webmail supports passing the
> > original IP to dovecot using
> >
> > a01 ID ("X-Original-IP" "1.2.3.4")
> >
> > before login, which would let you use weakforced in more meaningful way.
> > There are few other fields too that can be used
> >
> > Aki
> >
> 
> Yup, I've got that set up. I've got no problems with short-circuiting the
> request on the weakforce side quickly, in case of known good ips. Just
> hoping to avoid some unnecessary auth policy lookups.
> 
> Out of curiosity (and I've googled this before), what other fields can be
> used there?

* x-originating-ip - client IP
* x-originating-port - client port
* x-connected-ip - server IP (like, on proxy)
* x-connected-port - server port
* x-proxy-ttl - non-negative integer, decremented on each hop, used for loop detection.
* x-session-id - session ID, if you want to provide one
* x-session-ext-id - session prefix
* x-forward-<any_field_name> - field to import into passdb during authentication, comes prefixed with forward_. e.g if you set x-forward-username, it comes as forward_username, and can be used like

username=%{forward_username}

Aki


More information about the dovecot mailing list