Slashdot is powered by your submissions, so send in your scoop


Forgot your password?
Slashdot Deals: Deal of the Day - Pay What You Want for the Learn to Code Bundle, includes AngularJS, Python, HTML5, Ruby, and more. ×
Book Reviews Books Media

SELinux by Example 77

Ravi writes "SELinux is a project started and actively maintained by the U.S Department of Defense to provide a Mandatory Access Controls mechanism in Linux. It had been a long standing grouse of Linux power users and system administrators over its lack of fine grained access control over various running processes as well as files in Linux. While Solaris touts its famous RBAC and Microsoft Windows has its own way of providing finer rights to its resources, Linux had to put up with the simple but crude user rights known in tech speak as discretionary access control to control user access of files. With SELinux project making great strides and now being bundled with many major Linux distributions, it is possible to effectively lock down a Linux system through judicious use of SELinux policies. SELinux implements a more flexible form of MAC called type enforcement and an optional form of multilevel security." Read the rest of Ravi's review.
SELinux by Example
author Frank Mayer, David Caplan, Karl MacMillan
pages 425
publisher Prentice Hall
rating 8
reviewer Ravi Kumar
ISBN 0131963694
summary This book imparts a deep understanding of the features, structure, syntax and working of SELinux

The book SELinux by Example is authored by three people — Frank Mayer, Karl Macmillan and David Caplan and is published by Prentice Hall. There are a total of 14 chapters and 4 appendices spread just over 400 pages. The 14 chapters are in turn broadly divided into three parts with the first part containing chapters which provide an overview of SELinux, its background and the concepts behind it. The second part contains 7 chapters which are most useful for SELinux policy writers and contain detailed explanation of the syntax used in writing the policy files. It is the third part, "Creating and Writing SELinux Security Policies" which could be most put to use by system administrators.

In the second chapter, the authors introduce the concept of type enforcement access control, the understanding of which is imperative to ones knowledge of SELinux. They further discuss the concept of roles and multi level security. True to the title of the book, all these concepts are explained by analyzing the security controls of the ubiquitous passwd program.

In the succeeding chapter the authors explain the underlying architecture of SELinux. More specifically, how SELinux integrates with the Linux kernel via the Linux security module (LSM), the organization of the policy source file and how to build and install policies.

SELinux policies to a large extent are based on object classes. For example, you can create an object class and associate a set of permissions to that class. All objects associated with that class will share the same set of permissions. In the fourth chapter, one get to know about different types of object classes and the permissions that can be assigned to these classes. A total of 40 classes and 48 permissions are discussed in this chapter.

The next chapter titled "Types Enforcement" goes into a detailed analysis of all the types and attributes as well as the rules that could be used. The majority of SELinux policy is a set of statements and rules that collectively define the type enforcement policy. Going through the chapter, I was able to get a fair idea of the syntax used in writing TE policies.

Keeping in mind the complexity of the subject, it helps a great deal that at the end of each chapter there is a summary section where the authors have listed the important points covered. More over, one gets to answer a couple of questions and check one's knowledge about the topic being discussed.

In the 6th chapter, the authors explain in detail the concept of roles and their relationship in SELinux. What I really like about this book is the fact that each concept of SELinux has been dedicated a chapter of its own. For instance, constraints, multilevel security, type enforcement, conditional policies,... all are explained in chapters of their own.

One thing worth noting is that Fedora Core 4 and RHEL 4 and above ship with the targeted policy by default. Where as to completely lock down a Linux machine, you need to embrace the strict SELinux policy. This has the side effect of causing breakages with some of the existing Linux applications which expect looser security controls. In targeted policy, the more confining rules are focused on a subset of likely to be attacked network applications. In most cases, one can manage by using targeted policy. This book mostly deals with the strict policy of SELinux and in chapter 11, the authors dissect the strict example policy maintained and updated via the NSA and Fedora Core mailing lists.

There is another policy called the Reference Policy which is an attempt to water down the strict policy maintained by NSA. In the process making it easier to use, understand, maintain, and more modular. This is covered in the succeeding chapter titled "Reference Policy".

The next chapter titled "Managing an SELinux system" is one which the system administrators will relate to, where the authors throw light on the hierarchy of SELinux configuration files. The purpose of each file is explained in simple terms. Considering that SELinux comes bundled with a rich set of tools meant to be used by system administrators, one gets to know the usage of some of them and also learn about the common problems that are faced by administrators while administering an SELinux system.

In the last chapter of the book, one is introduced to the task of writing policy modules. Here the authors hand hold in the creation of a policy module for the IRC daemon for Fedora Core 4, from the planning stage to writing and applying the policy module, to the final testing.

The book also includes 4 appendices which contain a wealth of knowledge on SELinux. I especially liked appendix C which lists all the object classes and permissions as well as appendix D which has a list of SELinux system tools and third party utilities with explanations.

I found that I was better able to assimilate what the authors explained when I read the 13th chapter of this book first and then went back to read the 4th chapter onwards. Having said that, I find this book to be an excellent resource for people interested in developing SELinux policies and to a slightly lesser extent a resource for system administrators. At the very least, this book imparts a deep understanding of the features, structure, syntax and working of SELinux.

Ravi Kumar maintains a blog at where he shares his thoughts and experiences on all things related to Linux.

You can purchase SELinux by Example from Slashdot welcomes readers' book reviews -- to see your own review here, read the book review guidelines, then visit the submission page.
This discussion has been archived. No new comments can be posted.

SELinux by Example

Comments Filter:
  • Interesting (Score:2, Interesting)

    by 26199 (577806) * on Wednesday March 14, 2007 @03:29PM (#18353595) Homepage

    But is it useful? For military and some business use, I can see it... but does anyone actually run SELinux on a home system?

    If so -- why?

  • by Anonymous Coward on Wednesday March 14, 2007 @03:47PM (#18353857)

    Yes, I selinux it with FC6. For several reasons. Firstly because I can; It just completely doesn't get in the way. I've come across a two policy things I had to change; in both cases the built in tool warned me about them, so I knew it was an SeLinux problem and didn't spend ages serching. Secondly, in both cases it gave me reasonable (but not complete) information about what to to to fixi it and finlally, if you learn how to use audit2allow all my problems were really easy to fix (and if you report them with audit message RedHat does a fix which gets rid of them in future almost immediately anyway).

    Secondly I have a few servers on my system, it's nice to know that there is a reasonable chance they won't break my desktop if they get hacked into.

    Finally, I have several proprietary applications I use (e.g. Skype) given past experience, I don't trust these not to do bad things like sending of my private data. Making an SeLinux policy lets me control which data these applications have access to.

    Generally, running SeLinux just gives more of a feel of having control over what your programs are doing on your computer. Without it, you can limit programs from one UserID to the next, but there's no easy way to limit access within a UserID (well; chroot, but that's not really easy).

  • Re:huh? (Score:4, Interesting)

    by LWATCDR (28044) on Wednesday March 14, 2007 @03:57PM (#18353983) Homepage Journal
    They are selling nothing.
    The NSA wanted to do research into making a more secure Operating System. This is part of their mission. So instead of starting from scratch or trying to get access to the source of a proprietary OS they looked around and found an Open Source operating system called Linux. They had the source and an access active development community. When their research was done they released it back to the community just as the GPL says one should.
    So now everyone that uses Linux can benefit from their research.
    Just like NASA, NOAA, or any number of government agencies.
  • Re:AppArmor? (Score:2, Interesting)

    by Anonymous Coward on Wednesday March 14, 2007 @04:13PM (#18354197)
    AppArmor and SELinux took two totally different approaches. AppArmor started addressing usability first, and security second. SELinux took the reverse approach. I would argue that when it comes to a security mechanism, the one with the soundest implementation would always win. But unfortunately this is not the case. But SELinux has been taking leaps and bounds to address the usability issue. Just check out SLIDE, reference policy, and FC6/RHEL5.
  • Sounds like an ad (Score:3, Interesting)

    by Animats (122034) on Wednesday March 14, 2007 @04:49PM (#18354731) Homepage

    Hell, it is an ad. Read the last line of the article.

    SELinux is a great idea, but almost nobody gets it. NSA wrote it so that commercial and open source application developers could get accustomed to writing programs that would work on a system that enforced mandatory security. The hope was that, for example, Firefox and Apache would be modified to work well under very restrictive security models, so that if some app misbehaved, its damage would be limited. This was the first step in getting out of the mess we're in now with patch-based insecurity.

    Not too much of that has happened.

  • SELinux - Useable? (Score:2, Interesting)

    by softcoder (252233) on Wednesday March 14, 2007 @06:59PM (#18356265)
    I am running a Centos 4 system, with SELinux active. Since it is a web server box, I want it secured. Centos 4, is about Fedora 3 vintage when it comes to SELinux, and my config is about 2 years old. I hope that the current state of SELinux has improved a lot since then but it is hard to tell.
    One thing you DO NOT need if you are trying to run SELINUX is 400 pages of abstract security theory and discussions on the 'flask' model etc. etc. There is way too much info of that sort out there and not nearly enough about the simple stuff that everyone wants to do such as enable user home directories in Apache.
    I have managed, with some paid help, to get Apache to work, because it just uses files, and there are utilities to change the security context on files etc.
    I have not managed to get SPAM ASSASSIN to work with Postfix, because SELINUX refuses to allow the two programs to setup a link over a port, and in my vintage, there are no utilities that allow me to change the security context of a port easily.
    As for 'Downloading the Kernel Headers' and 'Writing a new Policy' then 'Compiling it' FUGGETADABOUTDIT! not going to happen with the level of technical expertise I have or the time I have.
    Bottom line: SELINUX is useable, but only for systems that implement standard, simple services, and for distros that are bundled with it such as Fedora. Ubuntu? I would not want to try to integrate it into Ubuntu myself.

    As for this book it sounds like it might be out of date already, and spend too much time on explaining what SELINUX is and not enough time on how to make it work.
  • by Kadin2048 (468275) <{ten.yxox} {ta} {nidak.todhsals}> on Wednesday March 14, 2007 @08:05PM (#18356859) Homepage Journal
    Sounds suspiciously like they were hired by the NSA, and effectively sold the code to NSA as part of their contract.

    From SELinux FAQ #11 []:

    Researchers in the Information Assurance Research Group of NSA worked with Secure Computing Corporation (SCC) to develop a strong, flexible mandatory access control architecture based on Type Enforcement, a mechanism first developed for the LOCK system. NSA and SCC developed two Mach-based prototypes of the architecture: DTMach and DTOS ( NSA and SCC then worked with the University of Utah's Flux research group to transfer the architecture to the Fluke research operating system. During this transfer, the architecture was enhanced to provide better support for dynamic security policies. This enhanced architecture was named Flask ( NSA has now integrated the Flask architecture into the Linux operating system to transfer the technology to a larger developer and user community.
    Not sure I have a lot of sympathy for the SCC people; they got paid for what they delivered, and then the client decided to open it up.

    It's not really clear what happened afterwards; it sounds like SCC might have threatened users of SELinux with their patents, or prepared to [], but later on decided this was a Bad Move [] --- it's not clear whether the NSA had a hand in convincing them of this, or it was a result of negative publicity from the Linux community, or what, but they eventually put out a statement [] (PDF) to the effect that they wouldn't use their patents against users of the GPLed code.

    Hard to unravel what the real story was at this point, or how much credit should go to SCC versus the NSA for cracking heads and getting the patent threat removed, but the ultimate outcome was certainly a positive one. But at any rate, since the NSA folks were the ones who ported it to Linux from the research OS, and turned it from an academic curiosity into something with practical applications, I'd say they deserve the lion's share.

Neckties strangle clear thinking. -- Lin Yutang