Eigenes Profil erstellen SELinux

Aus Xinux Wiki
Zur Navigation springen Zur Suche springen

Eigenes Programm

  • cat ~/mydaemon.c
#include <unistd.h>
#include <stdio.h>

FILE *f;

int main(void)
{
while(1) {
f = fopen("/var/log/messages","w");
        sleep(5);
        fclose(f);
    }
}

Kompilieren

  • gcc -o mydaemon mydaemon.c

Kopieren

  • cp mydaemon /usr/local/sbin

System Dienst

  • cat /etc/systemd/system/mydaemon.service
[Unit]
Description=Simple testing daemon

[Service]
Type=simple
ExecStart=/usr/local/bin/mydaemon

[Install]
WantedBy=multi-user.target

Systemctl status

  • systemctl start mydaemon
  • systemctl status mydaemon

Check that the new daemon is not confined by SELinux

  • ps -efZ | grep mydaemon
system_u:system_r:unconfined_service_t:s0 root 5812    1  0 15:41 ?        00:00:00 /usr/local/bin/mydaemon

Generieren Sie eine benutzerdefinierte Richtlinie für den Daemon

  • sepolicy generate --init /usr/local/bin/mydaemon
Created the following files:
/etc/systemd/system/mydaemon.te # Type Enforcement file
/etc/systemd/system/mydaemon.if # Interface file
/etc/systemd/system/mydaemon.fc # File Contexts file
/etc/systemd/system/mydaemon_selinux.spec # Spec file
/etc/systemd/system/mydaemon.sh # Setup Script

Erstellen Sie die Systemrichtlinie mit dem neuen Richtlinienmodul mithilfe des mit dem vorherigen Befehl erstellten Setup-Skripts neu

  • ./mydaemon.sh
Building and Loading Policy
+ make -f /usr/share/selinux/devel/Makefile mydaemon.pp
Compiling targeted mydaemon module
Creating targeted mydaemon.pp policy package
rm tmp/mydaemon.mod tmp/mydaemon.mod.fc
+ /usr/sbin/semodule -i mydaemon.pp
+ sepolicy manpage -p . -d mydaemon_t
./mydaemon_selinux.8
+ /sbin/restorecon -F -R -v /usr/local/bin/mydaemon
Relabeled /usr/local/bin/mydaemon from unconfined_u:object_r:bin_t:s0 to system_u:object_r:mydaemon_exec_t:s0
...

Starten Sie den Daemon neu und überprüfen Sie, ob er jetzt von SELinux eingeschränkt ausgeführt wird

  • systemctl restart mydaemon
  • ps -efZ | grep mydaemon

Links