summaryrefslogtreecommitdiffstats
path: root/README
diff options
context:
space:
mode:
Diffstat (limited to 'README')
-rw-r--r--README456
1 files changed, 456 insertions, 0 deletions
diff --git a/README b/README
new file mode 100644
index 0000000..04b159b
--- /dev/null
+++ b/README
@@ -0,0 +1,456 @@
+SETools - Policy analysis tools for SELinux (C) 2001-2010
+Tresys Technology
+setools@tresys.com, http://oss.tresys.com/projects/setools
+
+
+TABLE OF CONTENTS
+-----------------
+
+1. Overview
+2. Installation
+ 2.1. compiling from official distribution
+ 2.2. compiling from SVN checkout
+ 2.3. configure flags
+ 2.4. using development version of SELinux
+ 2.5. Logwatch support
+ 2.6. doxygen support
+3. Features
+ 3.1. graphical tools
+ 3.2. command-line tools
+ 3.3. analysis libraries
+4. Obtaining SETools
+5. Reporting bugs
+6. Copyright license
+
+
+1. Overview
+-----------
+
+This file describes SETools, developed by Tresys Technology. SETools
+is a collection of graphical tools, command-line tools, and libraries
+designed to facilitate SELinux policy analysis. Although SETools is
+primarily targeted for Red Hat-based systems, it should also work for
+Gentoo and Debian distributions. See the file KNOWN-BUGS for testing
+information.
+
+SETools includes the following graphical tools, command-line tools,
+and libraries:
+
+ apol policy analysis tool
+ libapol policy analysis library
+ libpoldiff semantic policy difference library
+ libqpol library that abstracts policy internals
+ libseaudit parse and filter SELinux audit messages in log files
+ libsefs open and search SELinux file contexts
+ seaudit audit log analysis tools: seaudit and seaudit-report
+ sechecker SELinux policy checking tool
+ secmds command line tools: seinfo, sesearch, findcon,
+ replcon, and indexcon
+ sediff semantic policy difference tools: sediff and sediffx
+
+Each of these components is in a subdirectory under the top-level
+source directory, along with supporting pieces in the following
+directories:
+
+ man manual pages for SETools commands
+ packages miscellaneous support for external packages
+
+In addition the top-level source directory contains various pieces of
+documentation. Please consult the file KNOWN-BUGS in this directory
+prior to filing any bug reports.
+
+
+2. Installation
+---------------
+
+SETools uses the GNU build system to configure, compile, and install.
+As such it contains a configure script that will verify its
+dependencies. SETools requires the following development packages for
+compilation:
+ flex
+ bison
+ pkg-config 0.23 or greater
+ libselinux 2.0.87 or greater
+ libsepol 2.0.38 or greater
+ libsepol-static 2.0.38 or greater
+ libxml2
+ sqlite 3.6.20 or greater
+
+These packages are needed to build SETools's graphical tools:
+ swig 1.3.28 or greater
+ bwidget 1.8 or later
+ tcl-devel 8.4.9 or greater
+ tk-devel 8.4.9 or greater
+ glib2-devel
+ gtk2-devel 2.8 or greater
+ libglade2-devel
+
+To build additional SETools SWIG wrappers, these packages are
+required:
+ Java JDK 1.2 or greater
+ python-devel 2.3 or greater
+
+Apol requires BWidget 1.7 or greater to run. The BWidget toolkit is
+part of the tcllib package and is often not present in Linux
+distributions; the toolkit may be freely downloaded at
+http://tcllib.sourceforge.net. The supplied configure script attempts
+to detect the version of BWidget installed. If it is not found then
+SETools will use the prepackaged one found within the 'packages'
+subdirectory. In some situations the toolkit will not be
+automatically found; if you are sure that BWidget is present then
+specify --disable-bwidget-check to the configure script.
+
+
+2.1. compiling from official distribution
+-----------------------------------------
+
+The official, stable source distribution is available from
+http://oss.tresys.com/projects/setools/. Untar and uncompress the
+distribution, and perform the following.
+
+ $ cd setools-3.3.7
+ $ ./configure
+ $ make
+ $ make install
+
+This will put the binaries in /usr/local/bin, data files in
+/usr/local/share/setool-3.3, and libraries in /usr/local/lib.
+Assuming that /usr/local/bin is in your $PATH and /usr/local/lib in
+$LD_LIBRARY_PATH everything should now work.
+
+
+2.2. compiling from SVN checkout
+--------------------------------
+
+If you prefer the bleeding edge of SETools development, you could
+instead obtain the development version of SETools from the Subversion
+repository (see Section 4).
+
+ $ cd setools
+ $ autoreconf -i -s
+ $ ./configure
+ $ make
+ $ make install
+
+You will need a recent version of autoconf to create the configure
+script. SETools was written using autoconf-2.60, although
+autoconf-2.59 also seems to work correctly albeit with a build
+warning.
+
+As SETools uses the GNU build system, other make targets are
+available. `make install-strip' will strip unneeded symbols from
+installed binaries. `make uninstall' removes files written by an
+earlier install.
+
+
+2.3. configure flags
+--------------------
+
+You can customize your SETools build using the flags given to
+`configure'. Notable options include:
+
+ --enable-debug
+ All code will be compiled using static libraries and the gcc
+ flags '-g3 -gdwarf-2 -O0'. This flag is useful for tracking
+ down issues.
+
+ --disable-gui
+ Build only the command-line tools: seinfo, sesearch, findcon,
+ indexcon, replcon, sechecker, and sediff.
+
+ --disable-bwidget-check
+ Assume that BWidget 1.8 is installed on the system. The
+ configure script normally tries to launch a Tcl script that
+ loads BWidget, which requires a running X session. You will
+ need this flag if compiling in a non-X environment.
+
+ --disable-selinux-check
+ Disable the build-time check for SELinux. In rare
+ circumstances the build computer will not have SELinux
+ running, resulting in 'configure' producing a warning and
+ disable parts of SETools. By specifying this flag,
+ 'configure' will not disable parts of SETools.
+
+ --enable-swig-java
+ Build SWIG interfaces for Java. This permits third-party
+ developers who prefer Java to use the SETools libraries for
+ their own projects.
+
+ --enable-swig-python
+ Build SWIG interfaces for Python. This permits third-party
+ developers who prefer Python to use the SETools libraries for
+ their own projects.
+
+ --enable-swig-tcl
+ Build SWIG interfaces for Tcl. This is needed for the apol
+ tool. By default this flag is enabled.
+
+ --enable-sepol-src=PATH
+ Look for libsepol source files in PATH. Use this flag when
+ compiling against a development version of SELinux (see
+ Section 2.4). Note that if --enable-sepol-src and
+ --with-sepol-devel are both specified then this flag takes
+ precedence.
+
+ --with-tcl=PATH
+ Look for Tcl development files in PATH. Debian users will
+ need to specify this flag, as Tcl 8.4 is typically located at
+ /usr/lib/tcl8.4.
+
+ --with-tk=PATH
+ Look for Tk development files in PATH. Debian users will need
+ to specify this flag, as Tk 8.4 is typically located at
+ /usr/lib/tk8.4.
+
+ --with-sepol-devel=PATH
+ Look for libsepol header files in PATH/include and library in
+ PATH/lib64 and PATH/lib. Note that if --enable-sepol-src and
+ --with-sepol-devel are both specified then --enable-sepol-src
+ takes precedence.
+
+ --with-selinux-devel=PATH
+ Look for libselinux header files in PATH/include and library
+ in PATH/lib64 and PATH/lib.
+
+ --with-default-policy=PATH
+ Explicitly use PATH as the default SELinux policy source file,
+ instead of inferring its location based upon the return value
+ of selinux_policy_root().
+
+ --with-test-policies=PATH
+ Use the policies in PATH as input to the SETools tests; these
+ tests are invoked upon `make check'.
+
+Of course, `configure' accepts other usual flags such as --prefix.
+
+
+2.4. Using a development version of SELinux
+-----------------------------------------
+
+As SELinux is a rapidly evolving project, you may wish to use a
+version of libsepol.so that is newer than the one installed to
+/usr/lib. To support different versions of libsepol, SETools can be
+configured to compile against a specific version of libsepol using the
+--enable-sepol-src flag. For example, suppose you have a SELinux SVN
+checkout and compilation like the following:
+
+ $ cd /home/gburdell
+ $ svn co https://svn.sourceforge.net/svnroot/selinux/trunk selinux
+ $ cd selinux/libsepol
+ $ make
+
+You can compile SETools against this particular copy of libsepol:
+
+ $ cd /home/gburdell/setools
+ $ ./configure --enable-sepol-src=/home/gburdell/selinux/libsepol
+
+Note that --enable-sepol-src will override the flag
+--with-sepol-devel.
+
+
+2.5. Logwatch support
+---------------------
+
+Integrating SETools with Logwatch can provide an effective IDS
+solution by automating customized audit reports and having them
+emailed to a specific recipient(s) for further analysis. You can
+integrate SETools into Logwatch using the seaudit-report plugin by
+specifying the `make install-logwatch' target. This target installs
+the configuration necessary for having seaudit-report run as a
+Logwatch service. The configuration files are part of the SETools
+source distribution, located in the seaudit subdirectory, and include:
+
+ seaudit-report-group.conf:
+ logfile group configuration file
+
+ seaudit-report-service.conf:
+ service filter config file
+
+ seaudit-report-service:
+ service filter script
+
+Make sure the Logwatch program is installed before proceeding with
+using this install target.
+
+
+2.6. doxygen support
+--------------------
+
+All externally exported library functions include doxygen-style tags
+in the documentation. To produce your own HTML outputs when writing
+third-party tools, use the doxygen configuration file located in
+packages/Doxyfile; it directs generated output to /tmp/setools. From
+the top-level source directory do:
+
+ $ doxygen packages/Doxyfile
+
+
+3. Features
+-----------
+
+SETools encompasses a number of tools, both graphical and command
+line, and libraries. Many of the programs have help files accessible
+during runtime.
+
+
+3.1. graphical tools
+--------------------
+
+The main emphasis of SETools is the graphical analysis tools.
+
+ apol:
+ A Tcl/Tk graphical analysis tool. Use it to open a SELinux
+ policy, examine the policy's components and rules, and perform
+ various types of analyses.
+
+ seaudit:
+ A GTK+ graphical audit log analysis tool for SELinux. This
+ tool allows users to sort and filter the system's audit log,
+ query the policy based on audit messages, and export audit log
+ messages to a file. The tool can also create reports in HTML
+ or plaintext format using an entire audit log or an seaudit
+ view. Note that this program is installed in $(PREFIX)/sbin
+ because its main function is to analyze /var/log/audit/audit.log.
+
+ sediffx:
+ A GTK+ graphical tool to semantically compare two policies.
+ Use sediffx to open two SELinux policies, find differences
+ between them, and then show those results.
+
+
+3.2. command-line tools
+-----------------------
+
+Some tools in the SETools suite may be run in a non-windowing
+environment. The first six tools listed below are located in the
+secmds subdirectory; the rest are in their own directories.
+
+ seinfo:
+ A tool to quickly get a list of components from a SELinux
+ policy.
+
+ sesearch:
+ A tool to search rules (allow, type_transition, etc.) and constraints
+ within a SELinux policy.
+
+ findcon:
+ A tool to search files with a matching SELinux file context.
+ The tool can search a filesystem directly, a file_contexts file,
+ or a database as created by indexcon.
+
+ replcon:
+ A tool to search the filesystem, replacing a matched file's
+ context with a different one.
+
+ indexcon:
+ A tool to create a database that indexes the security contexts
+ of a SELinux filesystem.
+
+ sechecker:
+ A tool for performing modular checks on an SELinux policy.
+ Sechecker supports configuration profiles to specify multiple
+ modules and generates a report of potential issues within a
+ policy.
+
+ seaudit-report:
+ A tool for generating reports on SELinux audit messages in
+ plaintext or HTML format. Reports generated by this tool can
+ be configured to include standard report sections such as
+ policy load messages, enforcement toggles messages, policy
+ boolean messages, etc. A key feature of the tool is that
+ reports can be further customized through the use of saved
+ seaudit view files. The tool can effectively be used as a
+ plugin to other audit log analysis tools, such as the Logwatch
+ daemon.
+
+ sediff:
+ A tool to load two SELinux policies, find differences between
+ them, and then show those results. The tool provides a
+ command-line interface to libpoldiff.
+
+
+3.3. analysis libraries
+-----------------------
+
+The SETools support libraries (libapol, libpoldiff, libqpol,
+libseaudit, and libsefs) are available for use in third-party
+applications. Although they are not officially supported (and thus
+subject to change between SETools releases), we will do our best to
+maintain compatibility beginning with SETools version 3.0.
+
+ libqpol:
+ Abstract the internals of an SELinux policy behind a
+ consistent interface, such that changes to the policy
+ representation (as governed by libsepol) do not affect
+ analysis tools.
+
+ libapol:
+ Work with libqpol to perform higher-order analyses of a
+ policy. A typical sequence for an analysis tool is:
+ open a policy via apol_policy_open()
+ execute some query via apol/policy-query.h
+ obtain detailed results via qpol/policy_query.h
+ close the policy via apol_policy_destroy()
+
+ libseaudit:
+ Parse and store SELinux audit messages. Its chief users are
+ seaudit and seaudit-report.
+
+ libpoldiff:
+ Accept two SELinux policies and finds differences between
+ them. Its main users are sediff and sediffx.
+
+ libsefs:
+ Create a represention of file contexts, by reading contexts
+ directly from a filesystem, from a file_contexts file, or from a
+ specially formatted database. Queries can then be created and
+ executed against those file contexts
+
+These libraries have SWIG wrappers that are built if
+--enable-swig-java, --enable-swig-python, and/or --enable-swig-tcl are
+given during configuration time. The generated Java wrappers will be
+in placed $PREFIX/lib; symlinks to jar files will be in
+$PREFIX/share/java. Python wrappers will be installed to Python's
+site-packages directory. Tcl wrappers are built as Tcl packages
+(e.g., `package require apol') and placed in $PREFIX/lib/setools.
+
+
+4. Obtaining SETools
+--------------------
+
+Official releases of SETools may be freely downloaded from Tresys's
+Open Source Software website, http://oss.tresys.com/projects/setools.
+
+Tresys builds RPM packages of SETools. They may also be obtained from
+the website listed above.
+
+SETools source code is maintained within a Subversion repository.
+From the command line do:
+
+ $ svn co http://oss.tresys.com/repos/setools/trunk/ setools
+
+You may also browse the SVN repository at
+http://oss.tresys.com/projects/setools/browser.
+
+Other binary releases SETools are available for your favorite Linux
+packaging system from third-party sources. Gentoo users have an
+ebuild script for SETools. Debian maintains the dpkg "setools" in
+section admin, priority optional.
+
+
+5. Reporting bugs
+-----------------
+
+If you found a bug, have a suggestion, or otherwise would like to
+comment upon SETools, please email setools-bugs@tresys.com. We will
+respond to you as soon as possible.
+
+
+6. Copyright license
+--------------------
+
+The intent is to allow free use of this source code. All programs'
+source files are copyright protected and freely distributed under the
+GNU General Public License (see COPYING.GPL). All library source
+files are copyright under the GNU Lesser General Public License (see
+COPYING.LGPL). Absolutely no warranty is provided or implied.