Current each label runs its own sshd(1M) and that sshd is not aware of 
Zones or TX labels at all.  If we ssh to a labelled zone this means we 
are doing authentication outside of the Trusted Path (regardless of 
which ssh userauth type we use), I don't like this.

In the particular case of password/keyboard-interactive authentication 
there is a problem in the local files case.  The local files repository 
supports lock_after_retries (see user_attr(4)).  When all TX label zones 
are running the same nameservice (generally this is the case) and that 
repository is files then we usually have a single global zone (Trusted 
Path) ncsd and also have /etc/passwd and /etc/shadow lofs mounted into 
the label zone.

If a user fails the authentication passwdutil.so needs to update the 
/etc/shadow field but it can't do that because /etc/shadow is read-only. 
   If instead we don't lofs mount the /etc/passwd and /etc/shadow but 
provide some other means to keep them in sync with the global zone then 
the counter (and subsequent locking) only happens at a single label.

This problem was first described to me by Bart Blanquart.

I've been trying to find solutions to this problem, and looked at the 
issue at three different levels in the stack.

        1. passwdutil.so  - this is who needs to do the actual writes
        to /etc/shadow

        This doesn't fix the auth outside of the Trusted Path issue,
        and it is a very narrow fix.  One of the thoughts I had here
        is that we could do this with something like rpc.nispasswdd
        but for files.

        2. PAM - what if we could run PAM in the global zone

        This could work and might have other uses.  The idea would be
        to have libpam use doors to talk to a global zone process.
        The advantage here is it "fixes" more than just sshd in a
        labeled zone.  It also means the authentication happens in
        the Trusted Path.

        3. sshd - make it label aware.

        It would be wise to make this configurable (ie we could still
        deploy as we do today).  However I think this is potentially
        quite complex and there are possible issues with the fact that
        ssh can have multiple channels open at different times in the
        lifecycle of the connection.

Discuss....

-- 
Darren J Moffat

Reply via email to