diff options
| author | Holger Dengler <dengler@linutronix.de> | 2013-04-05 00:38:19 +0200 |
|---|---|---|
| committer | Holger Dengler <dengler@linutronix.de> | 2015-02-20 16:32:50 +0100 |
| commit | 6f5c4cecf57957921c9722d3ca31d780f346634f (patch) | |
| tree | 67c8a2b53b014526948929d7f0f0605c546d8e9c /security | |
| parent | 50596428e39e39cbaa90d786ea9e888971a861ee (diff) | |
Add presentation for advanced Security Mechanisms
Signed-off-by: Holger Dengler <dengler@linutronix.de>
Diffstat (limited to 'security')
| -rw-r--r-- | security/advanced/Makefile | 9 | ||||
| -rw-r--r-- | security/advanced/pres_advanced_sec.tex | 247 |
2 files changed, 256 insertions, 0 deletions
diff --git a/security/advanced/Makefile b/security/advanced/Makefile new file mode 100644 index 0000000..257d70d --- /dev/null +++ b/security/advanced/Makefile @@ -0,0 +1,9 @@ +all: + for pdf in `ls -1 handout_*.tex pres_*.tex 2> /dev/null` ; do \ + TEXINPUTS=`pwd`/../..:.:..:$(TEXINPUTS) pdflatex $$pdf; \ + TEXINPUTS=`pwd`/../..:.:..:$(TEXINPUTS) pdflatex $$pdf; \ + done + +clean: + rm -f *.aux *.log *.pdf *.log *.snm *.toc *.vrb *.nav *.out + diff --git a/security/advanced/pres_advanced_sec.tex b/security/advanced/pres_advanced_sec.tex new file mode 100644 index 0000000..863980b --- /dev/null +++ b/security/advanced/pres_advanced_sec.tex @@ -0,0 +1,247 @@ +\def\lximg{/usr/share/lx/icons/fueller.png} + +\input{configpres} + +\subsection{Extended Security Features} + +\title{Extended Security Features} +\maketitle + +\def\lximg{none} + +\begin{frame} +\frametitle{Contents} +\tableofcontents +\end{frame} + +% ---------------------------- +\subsubsection{File Access} + +\begin{frame}[fragile] +\frametitle{Basic File Permissions} +\begin{itemize} +\item For each File or Directory +\item Access Mode: \\ + Read, Write, Execute (Entry) +\item Access Role: \\ + User, Group, Other +\item Special: \\ + Set UID, Set GID, Sticky +\end{itemize} +\end{frame} + +% ---------------------------- +\begin{frame}[fragile] +\frametitle{Access Control List (ACL)} +\begin{itemize} +\item More Users and Groups +\item Round up Groups +\item Tools: \\ + setfacl, getfacl +\item Requires: \\ + mount \dots -o acl +\item Pitfalls: \\ + Not all tools like tar support ACLs +\end{itemize} +\end{frame} + +% ---------------------------- +\begin{frame}[fragile] +\frametitle{ACL: Example} +\begin{itemize} +\item Sue, Bob and Henry working together on ProjectX. Sue and Henry are +members of group \emph{dept\_a}, and Bob is member of group \emph{dept\_b}. +\item Q: Do we really need another group \emph{project\_x} with members Sue, Bob +and Henry? +\item A: Not mandatorily. +\end{itemize} +\begin{beamerboxesrounded}[shadow=true]{Alternative Solution:} +\begin{tiny} +\begin{verbatim} +$ mkdir /data/shared/project_x +$ chown pm_admin:pm_admin /data/shared/project_x +$ setfacl -m user:sue:rwx /data/shared/project_x +$ setfacl -m user:bob:rwx /data/shared/project_x +$ setfacl -m user:henry:rwx /data/shared/project_x +\end{verbatim} +\end{tiny} +\end{beamerboxesrounded} +\end{frame} + +% ---------------------------- +\begin{frame}[fragile] +\frametitle{ACL: Example (2)} +\begin{beamerboxesrounded}[shadow=true]{Result:} +\begin{tiny} +\begin{verbatim} +$ getfacl /data/shared/project_x +# file: data/shared/project_x/ +# owner: pm_admin +# group: pm_admin +user::rwx +user:sue:rwx +user:bob:rwx +user:henry:rwx +group::r-x +mask::rwx +other::r-x +\end{verbatim} +\end{tiny} +\end{beamerboxesrounded} +\end{frame} + +% ---------------------------- +\begin{frame}[fragile] +\frametitle{Extended File Attributes} +\begin{itemize} +\item More File Attributes +\item a - append only +\item i - immutable +\item s - Override with zeros on delete +\item Tools: \\ + lsattr, chattr +\item Requires: \\ + root or mount \dots -o user\_xattr +\item Pitfalls: \\ + Not all tools like tar support xattr +\end{itemize} +\end{frame} + +% ---------------------------- +\begin{frame}[fragile] +\frametitle{xattr: Example} +\begin{itemize} +\item Q: You want to check what user Franz is typing on commandline? +\item A: Look at /home/franz/.bash\_history +\item But Franz is clever and deletes /home/franz/.bash\_history +\item Q: How can I prevent that? +\end{itemize} +\begin{beamerboxesrounded}[shadow=true]{Solution:} +\begin{tiny} +\begin{verbatim} +$ sudo chattr +a /home/franz/.bash_history +$ lsattr /home/franz/.bash_history +-----a-------e-- /home/franz/.bash_history +$ rm /home/franz/.bash_history +rm: cannot remove `/home/franz/.bash_history': Operation not permitted +\end{verbatim} +\end{tiny} +\end{beamerboxesrounded} +\end{frame} + +% ---------------------------- +\subsubsection{Process} + +\begin{frame}[fragile] +\frametitle{Process Isolation} +\begin{itemize} +\item Separate Address Space +\item Isolated Filesystem (chroot) +\item Address Space Layout Randomization +\item Namespaces (Mount, UTS, IPC, PID, Network, and User) +\end{itemize} +\end{frame} + +% ---------------------------- +\subsubsection{Advanced Resource Access Control} + +\begin{frame}[fragile] +\frametitle{Linux Security Modules} +\begin{itemize} +\item Implement Mandatory Access Control +\item SELinux, AppArmor, Tomoyo \dots +\item Context sensitive Resource Access +\end{itemize} +\end{frame} + +% ---------------------------- +\begin{frame}[fragile] +\frametitle{Domain} +\begin{itemize} +\item Domain transition for each starting Process +\item Default: Inherit previous Domain +\item Note: Domains are unique +\end{itemize} +\begin{beamerboxesrounded}[shadow=true]{Example:} +\begin{small} +\begin{verbatim} +<kernel> /sbin/init /etc/rc.d/rc +<kernel> /sbin/init /etc/rc.d/rc.sysinit /etc/rc.d/rc +\end{verbatim} +\end{small} +\end{beamerboxesrounded} +\end{frame} + +% ---------------------------- +\begin{frame}[fragile] +\frametitle{Domain Transition Management} +\begin{itemize} +\item Control Domain Transition Behavior +\item Syntax: <directive> <domain> from <domain> +\item Directives: +\begin{itemize} +\item initialize\_domain / no\_initialize\_domain +\item keep\_domain / no\_keep\_domain +\end{itemize} +\end{itemize} +\end{frame} + +% ---------------------------- +\begin{frame}[fragile] +\frametitle{Profile} +\begin{itemize} +\item Profiles define Domain restriction behavior +\item Profile Relation to Domain: n..m +\item Up to 255 Profiles +\item Profile Modes: +\begin{itemize} +\item disabled, learning, permissive, enforcing +\end{itemize} +\item Logging +\end{itemize} +\end{frame} + +% ---------------------------- +\begin{frame}[fragile] +\frametitle{Policy} +\begin{itemize} +\item Policies describe Domain restrictions +\item Policy for each Domain +\item Directives: +\begin{itemize} +\item file (read, write, execute, append, chown, chgrp, create, mkfifo, \dots) +\item misc env +\item network inet (stream, dgram, raw) +\item network unix (stream, dgram, seqpacket) +\end{itemize} +\end{itemize} +\end{frame} + +% ---------------------------- +\begin{frame}[fragile] +\frametitle{Tools} +\begin{itemize} +\item tomoyo-editpolicy +\item tomoyo-selectpolicy +\item tomoyo-patternize +\item tomoyo-diffpolicy +\item tomoyo-sortpolicy +\item tomoyo-loadpolicy +\end{itemize} +\end{frame} + +% ---------------------------- +\subsubsection{Others} + +\begin{frame}[fragile] +\frametitle{Others} +\begin{itemize} +\item Linux Integrity Subsystem (IMA/EVM) +\item Signed Kernel Modules +\item Singed Repositories (apt, yum, \dots) +\end{itemize} +\end{frame} + +% ---------------------------- +\subsection{} +\input{tailpres} |
