Can
You Trust Trusted Solaris 8?
Peter Baer Galvin
In the old days, Trusted Solaris had a reputation of being difficult
to manage. In fact, the user base consisted of government sites
and other facilities where security was required. Trusted Solaris
8 aims to change all that, with a goal of being very Solaris-like,
but with manageable security enhancements. How well does it succeed?
Very well, as it turns out. I took it for a spin and liked the drive-ability.
The Need
Trusted Solaris 8 (TS8) arrived not long after standard Solaris
8 (S8OE), making it a viable alternative to the standard. Previous
Trusted Solaris releases had a significant lag behind their counterparts.
This helped contribute to the lack of interest in the secure alternative
at sites where it was not required.
Security has become de rigueur as interconnections multiply almost
as fast as security threats. Companies are connecting to the Internet,
and to each other, like never before. Computer attacks are becoming
more sophisticated, to the point where firewalled connections are
the beginning, rather than the end, of a security implementation.
The popularity of Solaris increases the demand for security solutions
on the platform. That is one of the reasons I wrote the Solaris
Security FAQ a few years ago and have since maintained it (with
an update in the offing).
Many sites are adopting TS8 due to the increasing demand for security
in commercial environments. Financial and banking, service providers,
and the healthcare industry are all taking advantage of the enhanced
security found in Trusted Solaris. TS8 is apparently the only operating
system with EAL4 LSPP certification that is 64-bit. It has a firm
lead in B1-equivalent security, leaving little option for those
who want a fast, general-purpose but highly secure OS.
TS8 is a big improvement on TS2.5.1. Recompilation is no longer
required for applications to run within this environment. Privileges
and rights might need to be granted for a given application to run
properly, but it is now much easier to run an application on TS8
than on previous TS releases. Kernel-modifying programs can be a
challenge because the kernel is not the same as on S8, but that
includes a small subset of available applications.
Of course there is a price to pay, and it is in the form of money.
TS8 is not free, unlike S8. The base price is $2495 for one to two
CPUs for either SPARC or Intel systems. TS8 on Intel is a nice solution
for those sites without a Sun presence but wanting more secure servers.
For example, a WinTel site may want a secure LDAP server for user
authentication, and could convert an existing PC to TS8.
Features
For TS8 to become mainstream, it needs to increase the security
of the Solaris 8 Operating Environment (S8OE) while being compatible
with the S8 application base, and being manageable by systems administrators
familiar with S8OE. Much of the success of TS8 will depend on success
in these aspects. With that in mind, I took the plunge and installed
TS8.
TS8 looks a lot like standard S8OE. In fact, it is a superset
of S8OE. The code base is the same, and TS8 adds extensions to the
core S8 to dramatically increase the ability to secure the system.
For example, TS8 4/01 is forthcoming and is based on the Solaris
8 4/01 release. In general, a Trusted Solaris release should occur
within six months of the standard Solaris release. The code is actually
ready rather quickly, but the independent security testing for certification
adds a delay that is outside of Suns release timetable control.
TS8 enhances both external and internal security. Misuse of the
system by authorized users is a main source of security violations.
TS8 helps prevent violations by enabling administrators to implement
a security policy. The policy can control access to and handling
of information.
TS8 provides many features, including:
- Meeting requirements for B1+ systems
- Providing labeled security
- Supporting the concept of least privilege
- Supporting role-based access control (RBAC)
- Limiting access to system data and resources via labels
(see below) set on programs, files, directories, devices, and
remote hosts
- Eliminating the power of superuser (root), and dividing those
functions into multiple roles
- Augmenting security auditing to track all interesting activities
and file accesses
- In process independent EAL4 Common Criteria evaluation (which
should complete shortly)
Privileges (granted to a process) and Authorizations (granted to a
user) are part of Role-Based Access Control. They provide a means
for users and processes to go beyond their label ranges and perform
normally disallowed tasks. Administrators must log in under their
own accounts, and then assume roles that give them access
to privileged commands. (RBAC was previously covered in the Solaris
Corner online at: http://www.samag.com/documents/sam0108p.)
In fact, the S8OE RBAC is based on the TS8 RBAC feature. There are
four default roles: security administrator, systems administrator,
primary administrator (who creates rights profiles and has the most
abilities on the system), and oper (the operator). Note that one user
can have more than one role, when the situation justifies it. About
60% of the UNIX exploits are root exploits, which is why RBAC is so
important.
A security tag, or sensitivity level, range is assigned
to the user. These tags are also assigned to system objects, such
as files and directories. A user can perform an action (execute
a program or access a file or directory) only if the security label
of the object falls within the users label range. Passwords
are used for the more sensitive administration tasks (such as running
SMC), so even damage from password guessing login can be limited.
Changing roles requires passwords, even if the user is allowed into
that role.
Labels are predefined by the security administrator. They can
be hierarchical for fine-grained control of access. There are several
sample label sets provided on the label_encodings files that can
be used as-is or as a basis for a new label scheme.
There are a few fundamental differences between TS8 and S8OE:
1. CDE is the only supported desktop.
2. No remote file system mounting is allowed during installation.
3. There is no upgrade installation option, (although there will
be an upgrade option from TS8 to TS 8 4/01 release).
4. Solaris Web Start installation is not supported.
Most other aspects of Solaris 8 are supported on TS8, including
volume management and all naming services. Strangely, even NIS is
supported, even though it has a reputation for poor security.
Detailed information about TS8 is available at:
http://www.sun.com/software/solaris/trustedsolaris
The entire documentation set is also available at: docs.sun.com.
In addition to the how to type of information, they provide
detailed security information. For instance, they explain how to use
TS8 to conform to security standards, and describe which changes would
invalidate that conformation. They include configuration and installation
checklists and a suite of planning and configuration steps that need
to be taken as part of a full TS8 deployment, which includes planning
user security, workstation hardware configurations, network planning,
auditing, and installation methodology.
TS8 is designed to stop most known attack forms. For instance,
one form of attack against a UNIX user or system involves keystroke
capture, in which a users communication (such as password)
is captured as typed. TS8 provides a trusted path feature,
which makes this impossible. Likewise, a Trojan horse program could
fool a user into disclosing his password. For example, a fake login
screen could ask for userID and password and store them away. To
solve this problem, trusted programs cause the GUI to display a
tamper-proof trusted graphic in a reserved area. Users
know it is safe to interact with a program when the graphic is displayed.
This graphic is not displayed at the login screen, but the TSOL
secure TCP/IP protocol is used so the screen cannot be spoofed.
No other X connections are allowed to this display.
Unfortunately, no operating system can provide 100% security.
For example, a spoofed email could still be sent to users with incorrect
instructions. For this, as with most other security issues, a strong,
enforced, up-to-date security policy is the best recourse. There
is flexibility, as is the case with all forms of UNIX, which can
lead to problems. A trusted host can be configured to allow access
from an untrusted host, potentially compromising security. At least
TS8 provides the tools to prevent this type of problem, however.
The trusted path concept also works across a network,
because trusted hosts talk the TSOL protocol to each other. From
an unsecure host, passwords could still be snooped, unless secure
protocols like VPN are used.
Implementation
Installation is similar to standard Solaris 8, with the exception
of queries about Kerberos configuration, a DNS servers form (up
to three) and a DNS search domains form (up to six).
Once installation is complete, the system is still not quite usable.
No root login is allowed, for example, so a special install
account is available. Logging in as user install with
password install produces a pop-up window stating that
logins are disabled, and asking whether to disable them. To enable
full system availability, I elected to enable logins. Once in, a
dialog box shows last login information, the message of the day,
the last console messages, and the current label setting. The CDE
screen also shows the current security label within the trusted
graphic bar at the bottom margin.
On the whole, users still log in with user name and password.
Password management is improved though: they can be user or computer
generated, can be aged to require a change, and can also have specific
length requirements. However, they can still be dictionary words
(and thus easily cracked). At long last, the number of login failures
can be set to cause a lockout of the account.
I next assumed the root role, which is an option on
the right mouse button on the workspace window boxes. It creates
a new root workspace, which is in the root role. More workspaces
can be created as needed. I then ran the Sun Management Console
to add a user. The first invocation took a few minutes as SMC scanned
the system, but then performance was acceptable, especially in a
system with at least 256 MB of memory. After a bit of trial and
error, I created a standard user account for myself (by selecting
Trusted Solaris Management Console, Trusted Solaris
Configuration, and Users). I was asked to enable
the root role and was challenged for that roles password.
Once the user was created, I clicked on User Properties
and an extensive dialog box appeared. Here I could change normal
account parameters, set extensive password options, assign rights,
roles, trusted Solaris attributes, and auditing options to the user.
(I selected Primary Administrator.)
Logging in as the new user allowed me to select the label under
which to run that session (unclassified or classified). Once logged
in, I had the usual four workspaces and an unclassified
label display in the trusted graphic. Creating new workspaces for
classified and root work was easy (from the workspace right mouse
button menu). Executing a ps command in each window resulted
in a different view of the system. The normal user workspace only
showed processes owned by me, excluding the processes from the classified
workspace. The classified workspace ps showed both my classified
and unclassified processes. The root workspace showed only root
processes. Changing workspace labels within a workspace (from admin_low
to admin_high, for example) caused new processes in
that space to run at the new label level. For example, I could have
an admin_low and an admin_high window open
at the same time in the same workspace, with ps results showing
different views of the system.
Thus, for production environments, a first major step in deployment
is to assign appropriate labels. Labels can be disjoint, hierarchical,
or both. Hierarchical labels create supersets of access, with each
higher label having more access than the one below. Disjoint labels
(e.g., admin, engineering, accounting) provide totally separate
access and do not allow access between labels. There is additional
flexibility with the compartment and class fields, allowing more
subdivisions within labels. In essence, any type of hierarchical
or disjoint access arrangements can be created with a proper label
configuration. Users with multiple label access can change the current
workspace label via the Change Workspace Label option
on workspace right mouse button. For simplicity, most sites use
a few labels.
Consider a Web server, for example. There might be three labels:
public, private, and staging. A Web server daemon running with public
label can only see processes, files, directories, and devices in
the public label space. A nice feature is that each label space
has its own port space (this concept is patented by Sun), so public,
private, and staging could each have a port 80 with a listening
Web daemon. As another example, a user telnetting from an unsecure
system would not even see his own processes (e.g., from a trusted
login) that run at a higher label range. From an operating system
point of view, TS8 implements multiple virtual machines (one per
label), with commands to allow access between VMs. This feature
makes TS8 perfect for ISPs and others who share machines among multiple
users. A single machine could host N Web servers, each limited
to its own process, port, and file system space. Note that it would
take a lot of work to relabel a system if the labeling scheme needed
to be changed, so it is important to determine an appropriate scheme
at the outset.
User training is a key part of using TS8. If the TS8 system is
an autonomous server (such as email or Web) with no users, then
no user training is needed (given that there are no users). With
more general-purpose machines, users need to know how to secure
their objects. For the users allowed to change labels, they need
to know when it is appropriate to do so.
The estimated performance penalty for jobs running under TS8 is
very low. Host applications run about the same performance. Trusted
networking does cause a performance impact because of the use of
TSOL. The more labels in the systems involved in a network communication,
the larger the performance impact. Still, thats a small price
to pay for greatly increased security.
Even with all of the discussion above about managing a TS8 system,
there are still many features Ive left unexplored, including
network security, file and device management, and the available
management tools.
Summary
Overall, the usability of Trusted Solaris 8 seemed quite good.
For most purposes, it looks like standard Solaris. There is more
work for administrators in creating accounts, managing labels and
roles, and helping users with the security features. There is quite
a learning curve to assimilate all the power that TS8 delivers to
its users. The end result, a system with greatly improved security,
is worth all the effort. Any site that has systems with sensitive
content or has users that are disjoint and should remain disjoint
should try TS8. Likewise, sites with a variety of hosts running
with varying security needs should use TS8 to manage the access
between them. TS8 is much more usable than previous secure Solaris
versions, and the price is low compared to the enhancements it can
provide to its users.
Peter Baer Galvin (http://www.petergalvin.org) is the Chief
Technologist for Corporate Technologies (http://www.cptech.com).
Before that, Peter was the systems manager for Brown Universitys
Computer Science Department. He has written articles for Byte and
other magazines, and previously wrote the Petes Wicked World
and Petes Super Systems columns at SunWorld/Unix Insider Magazine.
Peter is coauthor of Operating Systems Concepts and Applied Operating
Systems Concepts textbooks. As a consultant and trainer, Peter teaches
tutorials and gives talks on UNIX security and systems administration.
He can be reached at: pbg@petergalvin.org.
|