|_|0|_|
|_|_|0|
|0|0|0|

Be-Paranoid.net

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

Orginal Version | Artikel editieren | Versionen anzeigen | Bottom
Letzte Änderung: 12.03.2007, 16:23

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.

Hilfe Top



Fragen zum Tutorial können im SELinux Forum gerne gestellt werden. Wenn Sie sonst irgendwelche Anmerkungen, Kommentare, oder Verbesserungsvorschläge haben, scheuen Sie sich bitte nicht sie im Forum vorzubringen.

Wir haben ausserdem einen IRC Channel in dem Sie Fragen zu SELinux stellen können. Server: at.irc.open4free.org, Port: 6668, Channel: #selinux

Tutorials in dieser Artikelserie Top










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, ... Mehr dazu im nächsten Kapitel.

Durch dieses System 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 anders aus, einige Betriebssysteme haben keine Unterstützung für SELinux. Auf google.com finden Sie mehr dazu.

Unterstützung für lfs finden sie hier: www.blankersfamily.com/lfs/selinux.

Der Inhalt von SELinux Top



Damit wir SELinux benutzen können, müssen wir die folgenden Pakete installieren:

















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





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 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).

Debian Sarge Top







Debian Etch Top



Als erstes installieren wir die SELinux Pakete:

Code:

 
selinux:/# apt-get install gcc \ 
g++ \ 
m4 \ 
gawk \ 
python2.4-dev \ 
python2.4 \ 
libncurses5-dev \ 
selinux-basics \ 
selinux-doc \ 
selinux-utils \ 
python2.4-semanage \ 
python2.4-selinux \ 
libsepol1 \ 
libsemanage1 \ 
libsemanage1-dev \ 
libselinux1 \ 
libselinux1-dev \ 
checkpolicy 
policycoreutils 



Als nächstes fügen wir mit dem folgenden Befehl eine Zeile zu /etc/fstab hinzu:

Code:

 
cat >> /etc/fstab << EOF 
 
none    /selinux        selinuXFS defaults 0 0 
EOF 



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

[note]Achten Sie darauf das das einfügen der Zeilen in /etc/pam.d nicht schon von einem Debian mirror gemacht wurde.[/note]

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

Code:

 
selinux:/# cat >> /etc/pam.d/ssh << EOF 
 
session required pam_selinux.so 
EOF 
 
selinux:/# cat >> /etc/pam.d/login << EOF 
 
session required pam_selinux.so 
EOF 



Da ich mit der Policy vom aktuellen Etch-testing release noch keine gute Erfahrung gemacht habe, kompilieren wir uns unsere eigene policy.

Die installieren wir jetzt:

Code:

 
selinux:/opt/selinux# tar jvxf refpolicy-20060307.tar.bz2 
selinux:/opt/selinux# rm refpolicy-20060307.tar.bz2 
selinux:/opt/selinux# cd refpolicy 



Als nächstes müssen wir noch in der build.conf den Type von strict auf targeted umstellen, und die Distribution einstellen, ausserdem müssen wir den policy name auf targeted(policy wird mit make install-src in /etc/selinux/targeted kopiert) setzen.

Code:

 
#eventuell make install-src und make policy 2 mal laufen lassen, da Verzeichnisse noch nicht erstellt wurden 
selinux:/opt/selinux/refpolicy# make policy && mkdir /etc/selinux/targeted && make install-src 
selinux:/opt/selinux/refpolicy# cd /etc/selinux/targeted/src/policy 
selinux:/etc/selinux/targeted/src/policy# make clean && make conf && make policy && make install 
selinux:/etc/selinux/targeted/src/policy# make relabel 



Als nächstes editieren wir die Datei /etc/selinux/config:

Code:

 
# This file controls the state of SELinux on the system. 
# SELINUX= can take one of these three values: 
#       enforcing - SELinux security policy is enforced. 
#       permissive - SELinux prints warnings instead of enforcing. 
#       disabled - No SELinux policy is loaded. 
# SELINUXTYPE= can take one of these two values: 
#       targeted - Only targeted network daemons are protected. 
#       strict - Full SELinux protection. 
SELINUXTYPE=targeted 



SELINUXTYPE={TYPE} stellt ein, das SELinux die policy von /etc/selinux/{TYPE} ladet.

Jetzt können wir neustarten, es sollte automatisch nochmal gerelabelt werden.

Weblinks Top













setools per etch installieren Top



Wenn Sie setools installieren wollen, können Sie das tun, etch bietet es standardmässig an. Das gute daran ist, das es ziemlich wenig dependencies benötigt, es kommt auch auf einem System ohne SELinux aus:

Code:


debian:/home/simon# apt-get install setools
Reading package lists... Done
Building dependency tree... Done
The following extra packages will be installed:
  bwidget
The following NEW packages will be installed
  bwidget setools
0 upgraded, 2 newly installed, 0 to remove and 0 not upgraded.
Need to get 3769kB of archives.
After unpacking 11.3MB of additional disk space will be used.
Do you want to continue [Y/n]? 
Get: 1 http://debian.inode.at etch/main bwidget 1.7.0-1 [204kB]
Get: 2 http://debian.inode.at etch/main setools 2.4-1 [3566kB]
Fetched 3769kB in 15s (243kB/s)                                                
Selecting previously deselected package bwidget.
(Reading database ... 60269 files and directories currently installed.)
Unpacking bwidget (from .../bwidget_1.7.0-1_all.deb) ...
Selecting previously deselected package setools.
Unpacking setools (from .../setools_2.4-1_i386.deb) ...
Setting up bwidget (1.7.0-1) ...
Setting up setools (2.4-1) ...

debian:/home/simon#



setools wurde installiert, und Sie können die Programme benutzen, die wir oben in dem Kapitel "Inhalt" besprochen habe.

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.

Orginal Version | Artikel editieren | Versionen anzeigen | Top
Letzte Änderung: 12.03.2007, 16:23