Tutorials - Ein sicheres Linux System aufsetzen Teil 1.0 - Security Enhanced Linux: Installation

Sprachenübersicht/Betriebssysteme/Linux/Security

Ein sicheres Linux System aufsetzen Teil 1.0 - Security Enhanced Linux: Installation

Diese Seite wurde 8865 mal aufgerufen.

Dieser Artikel wurde in einem Wikiweb System geschrieben, das heißt, Sie können die Artikel jederzeit editieren, wenn Sie einen Fehler gefunden haben, oder etwas hinzufügen wollen.

Editieren Versionen Linkpartnerschaft Bottom Printversion

Keywords: SELinux, SE Linux, Installieren, sicher, Linux

Inhaltsverzeichnis



Vorwort Top



Diese Tutorialserie beschäftigt sich damit, ein sicheres Linux-System aufzusetzen. Dazu werden wir den NSA Linux Sub-Kernel, SELinux verwenden, der im Kernel 2.6 enthalten ist.

In diesem Teil geht es nur darum SELinux zu installieren; wie man es konfiguriert wird im zweiten Teil beschrieben.

Tutorials in dieser Artikelserie Top






  • Teil 1.2 - Security Enhanced Linux: Die Policy







Einführung in SELinux Top



Security Enhanced Linux, das auch als SELinux bezeichnet wird ist eine Sammlung von Programmen, Programmpatches, und einer Kernelerweiterung, die ein Linux-System sicherer machen soll. Die Haupterweiterung ist ein erweitertes Privilegien-System, ein Mandatory Access Controll (MAC) Systen, das eine stärkere Einschränkung von Benutzern erlaubt. Dadurch können Programme so eingeschränkt werden, das sie nur noch auf Dinge zugreifen können die sie auch wirklich benötigen. Diese Programme können dann nur noch Daten oder Programme lesen, schreiben oder verändern die sie brauchen. Sie können nicht mehr mit anderen Prozessen kommunizieren, auf Netzwerkdevices zugreifen, ...

Durch dieses System kann können Dienste, die kompromittiert wurden so eingeschränkt werden, dass sie keinen Schaden am System anrichten, was ein nützliches Mittel gegen 0-days ist.

Wir werden in diesem Teil die Installation von SELinux besprechen. Als erstes kompilieren wir uns einen Kernel, der SELinux unterstützt. Anschließend werden wir die Tools für SELinux installieren und dann die benötigten Patches für weitere Programme einspielen.

Die Installation, die ich hier beschreibe ist für Debian stable: sarge, ohne X Server, und mit der Kernelversion 2.6. Bei anderen Betriebssystemen sieht die Installation total anders aus, einige Betriebssysteme haben keine Unterstützung für SELinux. Auf google.com finden Sie mehr dazu.

Der Inhalt von SELinux Top



Damit wir SELinux benutzen wollen, müssen wir die folgenden Pakete installieren:

  • libsepol

    libsepol stellt die Schnittstelle zum Zugriff auf die binäre policy dar.



  • libselinux

    libselinux ist die Schnittstelle zu sicherheitsbewussten Applikationen.



  • libsemanage

    libsemanage ist die libary, die die Schnittstelle zum SELinux Management darstellt.



  • checkpolicy

    checkpolicy beinhaltet den checkpolicy policy compiler, der die policy in ein binäres Format kompiliert, das vom Kernel benutzt wird.



  • policycoreutils

    policycoreutils beinhaltet die core-Elemente der policy, unter anderem load_policy, newrole, setfiles, und run_init.



  • policy

    policy beinhaltet eine Beispiel policy, die Flask files, und Konfigurations-Dateien.



  • Kernel

    Der Kernel wird verändert, damit SELinux benutzt werden kann. Seit der Version 2.6 ist SELinux standardmäßig im Kernel integriert.



  • Ausserdem werden noch folgende Programme modifiziert:

    cp, mv, install, ls und andere Standardprogramme

    wird modifiziert damit die file labels benutzt werden können.

    id

    wird modifiziert, damit die Benutzer Rechte angezeigt werden können.

    ps

    kann nach der Modifikation die neuen Rechte der Prozesse anzeigen.

    Weitere Programme die modifiziert werden:

    cron, ssh, login, logrotate, pam, andere Programme die /etc/passwd, oder /etc/shadow benutzen



Slat, und setools werden in diesem Tutorial nicht benutzt, können aber hilfreich sein:

  • slat

    Eine Sammlung von policy Tools, von Tresys Technology.


  • setools

    Eine Sammlung von Tools, die für die Analyse der policy, und das Management der Benutzer zuständig ist.

    Dazu zählen:

    - SeAudit

    Ein GUI Tool, für die Analyse von log Einträgen.

    - Apol

    Ein Tool zur analyse der policy.conf.

    - SeCmds

    Eine Sammlung von nicht-GUI Tools für die Analyse der policy.conf.

    -SePCuT

    Ein GUI Tool, das das komfortable Browsen und Editieren von SELinux policy file ermöglicht.

    - SeUser

    Eine GUI und ein nicht-GUI Tool, das bei der Verwaltung von SELinux, und Linux-Benutzerkonten hilft.



Kernel builden Top



Als erstes kompilieren wir uns den Kernel so, das er selinux unterstützt. Wir ziehen uns den neuesten Kernel, der von Selinux untersützt wird, auf der NSA Selinux Seite finden wir den neusten Download: www.nsa.gov/selinux/code/download5.cfm.

In meinem Fall ist es 2.6.14. Wir laden den Kernel von www.kernel.org, und den Kernelpatch von der NSA Seite herunter.

Damit wir make menuconfig machen können, müssen wir libncurses5-dev installieren:

Code:

selinux:/opt# apt-get install libncurses5-dev patch bzip2



Als nächstes entpacken wir den Kernel, patchen, und konfigurieren ihn:

Code:


selinux:/opt# cd /usr/src
selinux:/usr/src# tar jvxf linux-2.6.14.tar.bz2
selinux:/usr/src# gunzip -d 2.6.14-selinux1.patch.gz
selinux:/usr/src/linux-2.6.14# cd linux-2.6.14.tar.bz2
selinux:/usr/src/linux-2.6.14# mv ../2.6.14-selinux1.patch ./
selinux:/usr/src/linux-2.6.14# patch -s -p 1 < 2.6.14-selinux1.patch
selinux:/usr/src/linux-2.6.14# make menuconfig



Jetzt schmeissen wir alles raus, was wir nicht brauchen, beachten aber dass, das wir folgende einkompilieren:

Unter Code Maturity muss folgendes aktiviert sein:

Prompt for development and/or incomplete code/drivers

Unter Devices Drivers -> Character Devices:

Unix98 PTY aktivieren
Legacy (BSD) PTY support nicht aktivieren

Unter File systems:

Second extended fs support
Ext2 extended attributes
Ext2 security labels
Ext3 journaling file system support
Ext3 extended attributes
Ext3 security labels


Aktivieren Sie nicht POSIX access controll lists für ext2 oder ext3.

Unter Pseudo filesystems:

/dev/pts Extended Attributes
/dev/pts Secrutiy labels


Wählen Sie nicht /dev/file system support aus.

Zum Schluss wählen wir noch folgendes unter Security Options aus:


Enable different security models
Socket and networking security hocks
Default Linux capabilities
NSA SELinux
NSA SELinux boot parameter
NSA SELinux Development support


Ich muss bei mir noch unter Device Drivers->Parallel port support Parallel port support einkompilieren, und dann unter Device Drivers->Block devices: Parallel port IDE device support und unter Device Drivers->ATA/ATAPI/MFM/RLL support:


ATA/ATAPI/MFM/RLL support
Enhanced IDE/MFM/RLL disk/cdrom/tape/floppy support
Include IDE/ATA-2 DISK support
generic/default IDE chipset support


einkompilieren einstellen.

Meine .config Datei kann hier heruntergeladen werden.

Jetzt können wir den Kernel kompilieren, und Grub konfigurieren:

Code:


selinux:/usr/src/linux-2.6.14# make bzImage
selinux:/usr/src/linux-2.6.14# make modules 
selinux:/usr/src/linux-2.6.14# make install && make modules_install
selinux:/usr/src/linux-2.6.14# cp arch/i386/boot/bzImage /boot
selinux:/usr/src/linux-2.6.14# apt-get remove kernel-image-2.6.8-2-386
Yes
selinux:/usr/src/linux-2.6.14# nano /boot/grub/menu.lst



Unter Grub fügen wir jetzt die folgenden Zeilen hinzu, und löschen die alten:

Code:


title      Debian GNU/Linux, Kernel 2.6.14-selinux1 Permissive
root     (hd0,0)
kernel     /boot/vmlinuz root=/dev/hda1 ro
savedefault
boot

title      Debian GNU/Linux, Kernel 2.6.14-selinux1 Enforcing
root     (hd0,0)
kernel     /boot/vmlinuz root=/dev/hda1 enforcing=1 ro
savedefault
boot



nach einem reboot sollte der Kernel laufen.

Jetzt haben wir die Wahl zwischen vom Backport installieren (nächstes Kapitel), und von den sources installieren (übernächstes Kapitel).

SELinux per Backport installieren Top



Jetzt installieren wir SELinux, wir verwenden dazu einen inoffiziellen Backport, selinux.alioth.debian.org/.

Mit nano /etc/apt/sources.list öffnen wir die Datei für die backports, und fügen die folgende Zeile hinzu:

deb http://selinux.alioth.debian.org/sesarge ./

Jetzt müssen wir noch apt updaten:

Code:


selinux:/opt# apt-get update
selinux:/opt# apt-get autoclean



Als nächstes müssen wir die Installation der SELinux Pakete vorbereiten, wir müssen dafür sorgen das glibc nicht upgedatet wird.

Dazu holen wir uns zuerst die Pakete:

Code:

Anzeigen




selinux:/opt# dpkg --get-selections > test
selinux:/opt# nano test



Jetzt editieren wir libc6, und libc6-dev von install auf hold.

Als nächstes fügen wir die Liste wieder zu dpkg hinzu:

Code:


selinux:/opt# dpkg --set-selections < test



Jetzt wird libc6 und libc6-dev immer zurück gehalten wenn es erneuert werden sollte.

Als nächstes installieren wir die folgenden Pakete:

Code:


selinux:/opt#  apt-get install checkpolicy \
coreutils \
cron \
dpkg \
fileutils \
initscripts \
libpam0g \
libpam0g-dev \
libpam-cracklib \
libpam-doc \
libpam-modules \
libpam-runtime \
libselinux1 \
logrotate \
policycoreutils \
procps \
selinux-doc \
selinux-policy-default \
selinux-utils \
shellutils \
strace \
sysvinit \
sysv-rc \
textutils



Jetzt sollte SELinux installiert sein, als letztes müssen wir noch ein paar Schritte durchführen:

Code:


selinux:/opt# mkdir /selinux
selinux:/opt# nano /etc/fstab



Wir fügen den folgende Zeile in /etc/fstab ein:

Code:


none    /selinux    selinuxfs    0    0



Ich habe ausserdem noch die root Partition /dev/hda1 per 0 0 so eingestellt, das sie nicht mehr überprüft wird.

Zuletzt fügen wir noch folgende Zeile in /etc/pam.d/login, und /etc/pam.d/ssh ein:

Code:


session required pam_selinux.so



und kompilieren noch die policy:

Code:


selinux:/opt# cd /etc/selinux
selinux:/etc/selinux# make policy
selinux:/etc/selinux# make relabel



Jetzt nochmal neustarten, und das Dateisystem nochmal relabeln:

Code:


selinux:/opt# cd /etc/selinux
selinux:/etc/selinux# make relabel



Damit ist die Installation abgeschlossen.

Alternative Installation mit den NSA Sources Top



Ich beschreibe hier noch einen alternativen Weg, den ich gerne benutze. Ich kompiliere die SELinux-Sources direkt von der NSA, und benutzte die veränderten Programme vom Backport. Wenn Sie lieber alles per Source installieren, finden Sie hier einen Hint für Linux From Scratch, der auch für Debian funktionieren sollte: www.blankersfamily.com/lfs/selinux/.

Als erstes laden wir uns die Tarballs von der NSA-Seite herunter: www.nsa.gov/selinux/code/download5.cfm.

Jetzt bereiten wir uns vor. Sie sollten ein installiertes python2.4, python2.4-dev, gcc-3.4 und g++-3.4 haben, beachten Sie das bei der Installation vom gcc nur /usr/bin/gcc-3.4 angelegt wird, allerdings gcc noch einen softlink auf gcc-3.3 hat, mit rm gcc && ln -s gcc-3.4 gcc können Sie einen link erzeugen. Das gleiche gilt für g++ und python.

Kopieren Sie die Dateien nach /opt/selinux, nachdem Sie sie heruntergeladen haben. slat, und setools lassen wir vorläufig weg, die brauchen wir im moment nicht.

Jetzt entpacken wir libsepol-1.10.tgz, und kompilieren es:

Code:


selinux:/opt/selinux# tar zvxf libsepol-1.10.tgz
selinux:/opt/selinux# rm libsepol-1.10.tgz 
selinux:/opt/selinuxt# cd llibsepol-1.10
selinux:/opt/selinuxt/libsepol-1.10# make all && make install 



Jetzt entpacken wir libselinux-1.28.tgz, und kompilieren es:

Code:


selinux:/opt/selinux# tar zvxf libselinux-1.28.tgz
selinux:/opt/selinux# rm libselinux-1.28.tgz 
selinux:/opt/selinux# cd libselinux-1.28
selinux:/opt/selinux/libselinux-1.28# make all && make install



Als nächstes entpacken wir den Tarball libsemanage-1.4.tgz, und kompilieren es:

Code:


selinux:/opt/selinux# tar zvxf libsemanage-1.4.tgz
selinux:/opt/selinux# rm libsemanage-1.4.tgz 
selinux:/opt/selinux# cd libsemanage-1.4
selinux:/opt/selinux/libsemanage-1.4# make all && make install



Und checkpolicy-1.28.tgz:

Code:


selinux:/opt/selinux# tar zvxf checkpolicy-1.28.tgz
selinux:/opt/selinux# rm checkpolicy-1.28.tgz
selinux:/opt/selinux# cd checkpolicy-1.28
selinux:/opt/selinux/checkpolicy-1.28# make all && make install



Als nächstes installieren wir policycoreutils-1.28.tgz, dazu müssen wir aber zuerst libpam0g-dev und gettext installieren.

Da wir jetzt die modifizierte Version von libpam0g-dev brauchen, kommen jetzt die Sources ins Spiel, wir installieren sie mit apt-get.

Mit nano /etc/apt/sources.list öffnen wir die Datei für die Backports und fügen die folgende Zeile hinzu:

deb http://selinux.alioth.debian.org/sesarge ./


Jetzt müssen wir noch apt updaten:

Code:


selinux:/opt# apt-get update
selinux:/opt# apt-get autoclean



Dazu holen wir uns zuerst die Pakete:

Code:


selinux:/opt# dpkg --get-selections > test
selinux:/opt# nano test



Jetzt editieren wir libc6, und libc6-dev von install auf hold.

Als nächstes fügen wir die Liste wieder zu dpkg hinzu:

Code:


selinux:/opt# dpkg --set-selections < test



Jetzt wird libc6 und libc6-dev immer zurück gehalten, wenn es erneuert werden sollte, wir können die Pakete installieren:

Code:


apt-get install fileutils initscripts libpam-doc libpam-modules libpam-cracklib logrotate procps shellutils strace sysvinit sysv-rc textutils coreutils gettext libpam0g libpam0g-dev libpam-runtime



Dabei wird auch libsepol1, und libselinux1 installiert, da wir die neusten haben, gehen wir nochmal in die beiden Verzeichnisse zurück und fahren mit make install nochmal drüber. Zur Sicherheit auch noch über libsemanage[/]

Jetzt gehen wir zurück in das policy-coreutils Verzeichniss, entpacken, und installieren es:

Code:


selinux:# cd /opt/selinux
selinux:/opt/selinux# tar zvxf policy-coreutils-1.28.tgz
selinux:/opt/selinux# rm policy-coreutils-1.28.tgz
selinux:/opt/selinux# cd policy-coreutils-1.28
selinux:/opt/selinux/policy-coreutils-1.28# make all && make install



Jetzt haben wir alles, bis auf die policy installiert.

Die installieren wir jetzt:

Code:


selinux:/opt/selinux# tar zvxf policy-1.28.tgz
selinux:/opt/selinux# rm policy-1.28.tgz
selinux:/opt/selinux# cd policy-1.28



Jetzt fügen wir die folgende Zeile zu /etc/fstab hinzu:

Code:


none    /selinux        selinuxfs defaults 0 0



und ändern die root partition auf 0 0, damit sie nicht überprüft wird.

Zuletzt fügen wir noch folgende Zeile in [i]/etc/pam.d/login und /etc/pam.d/ssh ein:

Code:


session required pam_selinux.so



Jetzt mounten wir das /selinux pseudofilesystem, installieren die policy, und relabeln das Dateisystem:

Code:


selinux:/opt/selinux/policy-1.28# mkdir /selinux
selinux:/opt/selinux/policy-1.28# mount /selinux



Als nächstes müssen wir noch in der makefile von /opt/selinux/policy-1.28 Type von strict auf targeted umstellen.

Jetzt können wir die policy installieren:

Code:


selinux:/opt/selinux/policy-1.28# make all && make install-src && make install
selinux:/opt/selinux/policy-1.28# cd /etc/selinux/strict/src/policy
selinux:/etc/selinux/targeted/src/policy# make install
selinux:/etc/selinux/targeted/src/policy# make relabel



Jetzt können wir neustarten, und danach die neuen Dateien auch relabeln:

Code:


selinux:/etc/selinux/targeted/src/policy# reboot
selinux:/# cd /etc/selinux/strict/src/policy
selinux:/etc/selinux/targeted/src/policy# make relabel



setools Top



Wir haben setools nicht installiert, da das Tutorial bis jetzt nur die Installation ohne X beschreibt.

Hier ist noch eine kurzte Beschreibung, falls Sie die policy tools für X benutzen wollen.

Als erstes brauchen wir ein paar Programme, welche wir mit den folgenden Befehlen installieren:

Code:


selinux:/# apt-get install python2.4-libxml2
selinux:/# apt-get install libxml2 libxml2-dev
selinux:/# apt-get install apt-get install libgtk2.0-0
selinux:/# apt-get install tcl8.4 tcl8.4-dev tk8.4-dev tk8.4
selinux:/# apt-get install pkg-config



Jetzt haben wir noch ein Problem. Die Header von tcl8.4 und tk8.4 liegen in /usr/include/tcl8.4, SELinux vermutet die Dateien aber, wie in anderen Distributionen üblich in /usr/include.

Deshalb müssen Sie entweder die Quellcode Dateien von setools ändern, oder die Header Dateien als Softlink in /usr/include erzeugen.

Dies geschieht mit ln -s tcl8.4/datei datei.

Wenn das erledigt ist, können Sie setools installieren.

Code:


selinux:# make all && make install



Weblinks Top










Schlusswort Top



In diesem Kapitel haben Sie, was SELinux ist, und wie man es installiert. Das nächste Kapitel wird beschrieben wie man SELinux konfiguriert.

Gibt es noch irgendwelche Fragen, oder wollen Sie über den Artikel diskutieren?





Editieren Versionen Linkpartnerschaft Top Printversion

Haben Sie einen Fehler gefunden? Dann klicken Sie doch auf Editieren, und beheben den Fehler, keine Angst, Sie können nichts zerstören, das Tutorial kann wiederhergestellt werden

Sprachenübersicht/Betriebssysteme/Linux/Security/Ein sicheres Linux System aufsetzen Teil 1.0 - Security Enhanced Linux: Installation