I originally sent this e-mail to nwam-discuss, but I was advised that I should
also solicit input from the security community.

I've now included the original messages below,

Thanks,

Darren.

-------- Original Message --------
Subject: NWAM UI  and Security
Date: Fri, 07 Sep 2007 16:28:26 +0100
From: Darren Kenny <darren.ke...@sun.com>
To: nwam-discuss <nwam-discuss at opensolaris.org>

Hi,

In working with a UI that is meant to configure NWAM, there is a need to
be able to allow/restrict who may perform this configuration. The main purpose
of this e-mail to to try gather some information from people that have a
vested interest in NWAM, that would help use to make this work as good as
possible...

The NWAM UI as a whole, has 3 main elements to it:

1) Modified GNOME Netstatus Applet with WiFi support

   Right now, on Solaris, the GNOME Netstatus Applet doesn't have the ability
   to display any status information w.r.t. a wireless network.

   This is mainly due to wireless only being a recent addition to Solaris, but
   also there is the inability to get status information about the wireless
   connection, using an API, without the PRIV_NET_RAWACCESS privilege.

   Naturally, this is certainly not a privilege that we want to give to just
   anyone (since it would allow snooping to occur).

   So the question is how to achieve this on Solaris.

   The main one that I see is to introduce a suitably privileged helper daemon
   that provides this information via events.

   It just so happens nwamd is already monitoring the wifi network status, the
   addition of a new event type is probably the best solution to this problem,
   and GNOME Netstatus Applet could just listen for these.

   This should allow for suitable read-only monitoring of the state of a WiFi
   network, providing it supplies enough information to present it to the
   user, e.g:

   - Device and/or Vanity Name
   - Status (connected or not)
   - ESSID
   - Signal Strength
   - Security Type
   - Optionally (may be useful to display):
       - BSSID
       - Speed

   Does this sound feasible?


2)  The GNOME Panel Presence (which is in the notification area)

    This is implemented as an always-running, user daemon which is run at the
    start of the session - hence is started with the user's default privileges
    at login time.

    Functionality that this daemon contains are as follows:

    - Handle NWAM daemon events, e.g.

        - Show current status information
        - Status changes (e.g. network up/down)
        - Prompting for a WiFi network selection

        Most of the events should be safe enough from the point of view that
        it's very limited what can be done and it's all initiated by nwamd,
        which is a privileged process and so it is able to act upon any
        responses.

    - Manual override of NWAM

        - Allow the user to override, via a manual selection, the WiFi AP to 
use.

        - Allow the user to override, via a manual selection, the Network
          Environment to use.

        - Activate an External Network Modifier (ENM) - e.g. punchin/VPN.

        Each of these actions are specifically difficult since they require
        the ability to modify the NWAM configuration in SMF and then request a
        reload of the settings by NWAM (i.e. a SMF refresh) .

        NWAM does have specific authorisations that is supports for it's
        configuration:

        -   solaris.smf.manage.nwam
        -   solaris.smf.modify.nwam auth

        As I understand it, but I could be mistaken about the purpose of each,
        a user wanting to have full control from the panel, would be required
        to have both of these authorisations to be able to do these actions.

        I cannot see us providing all users on the system these authorisations
        out-of-the-box, so how to handle the case where the user doesn't have
        them is probably the main issue:

        -   Maybe we could extend these privileges to allow for a more
            fine-grained control os
        -   We could have the UI handle this by now allowing the user to make
            such changes if they don't have sufficient privileges - this could
            be reflected in the UI with desensitised entries.

        -   We could provide some mechanism for the user to gain these extra
            authorisations, through the use of a Role or Profile - but the
            main issue here is that his would need to be done in-process for
            it to work without a "helper" application.

        -   Provide a helper application with the UI that can be used to gain
            additional privileges, should the user not have them, by using
            libgksu to request a password for a role or root.

        -   We could look at having NWAM daemon do the work, with libnwam
            communicating to it via doors - NWAM can then decided whether to
            allow the user to make the change or not. This also provides for
            quite a fine-grained level of functionality - e.g. the user could
            be permitted to select WiFi networks, but not change the current
            Network Environment.

        I would really like some advice on how best to achieve what we need.
        My main concern is that we maintain the usability that other operating
        systems like MacOS/X have achieved in this area since that is what
        users tend to demand now.

3)  NWAM Properties Application

    This is the main configuration application, but since this is a separate
    process it is possible to launch it in a way that can be used to gain
    extra privileges, should the user not have them - e.g. gksu or similar.

    The main issue here is to ensure that we cover all the needed privileges
    to be able to both gather status information and also set it.

    All settings will be done via libnwam, but the getting of current status
    is more likely to be done through direct use of libraries like libdladm,
    which in itself requires PRIV_NET_RAWACCESS and PRIV_SYS_NET_CONFIG to
    operate (at least according to the dladm sources).

    These are pretty serious privileges, and as such it's unlikely to hand
    them out to users by default, which I do think is acceptable in this case
    since there is an acceptable means to be able to run it if you really want
    to.



My main concerns as you will have gathered are with the always running
elements like the GNOME Netstatus Applet and NWAM Panel presence.

I would really appreciate peoples comments on this.

Thanks,

Darren.




Reply via email to