Eigenes Profil erstellen Beispiel ncat: Unterschied zwischen den Versionen

Aus Xinux Wiki
Zur Navigation springen Zur Suche springen
Zeile 21: Zeile 21:
  
 
==Permanente Änderung des Kontexts==
 
==Permanente Änderung des Kontexts==
*semanage fcontext -a -t systemd_unit_t mydaemon.service
+
*semanage fcontext -a -t systemd_unit_t netzkatze.service
*restorecon -v mydaemon.service
+
*restorecon -v netzkatze.service
  
 
=Systemctl status=
 
=Systemctl status=
*systemctl start mydaemon
+
*systemctl start netzkatze
*systemctl status mydaemon
+
*systemctl status netzkatze
 
=Check that the new daemon is confined by SELinux=
 
=Check that the new daemon is confined by SELinux=
*ps -efZ | grep mydaemon
+
*ps -efZ | grep netzkatze
  system_u:system_r:unconfined_service_t:s0 root 5812    1  0 15:41 ?        00:00:00 /usr/local/bin/mydaemon
+
  system_u:system_r:unconfined_service_t:s0 root 5812    1  0 15:41 ?        00:00:00 /usr/local/bin/netzkatze
  
 
=Generieren Sie eine benutzerdefinierte Richtlinie für den Daemon=
 
=Generieren Sie eine benutzerdefinierte Richtlinie für den Daemon=
*sepolicy generate --init /usr/local/bin/mydaemon
+
*sepolicy generate --init /usr/local/bin/netzkatze
 
  Created the following files:
 
  Created the following files:
  /etc/systemd/system/mydaemon.te # Type Enforcement file
+
  /etc/systemd/system/netzkatze.te # Type Enforcement file
  /etc/systemd/system/mydaemon.if # Interface file
+
  /etc/systemd/system/netzkatze.if # Interface file
  /etc/systemd/system/mydaemon.fc # File Contexts file
+
  /etc/systemd/system/netzkatze.fc # File Contexts file
  /etc/systemd/system/mydaemon_selinux.spec # Spec file
+
  /etc/systemd/system/netzkatze_selinux.spec # Spec file
  /etc/systemd/system/mydaemon.sh # Setup Script
+
  /etc/systemd/system/netzkatze.sh # Setup Script
 
=Erstellen Sie die Systemrichtlinie mit dem neuen Richtlinienmodul mithilfe des mit dem vorherigen Befehl erstellten Setup-Skripts neu=
 
=Erstellen Sie die Systemrichtlinie mit dem neuen Richtlinienmodul mithilfe des mit dem vorherigen Befehl erstellten Setup-Skripts neu=
*./mydaemon.sh  
+
*./netzkatze.sh  
 
<pre>
 
<pre>
 
Building and Loading Policy
 
Building and Loading Policy
+ make -f /usr/share/selinux/devel/Makefile mydaemon.pp
+
+ make -f /usr/share/selinux/devel/Makefile netzkatze.pp
Compiling targeted mydaemon module
+
Compiling targeted netzkatze module
Creating targeted mydaemon.pp policy package
+
Creating targeted netzkatze.pp policy package
rm tmp/mydaemon.mod tmp/mydaemon.mod.fc
+
rm tmp/netzkatze.mod tmp/netzkatze.mod.fc
+ /usr/sbin/semodule -i mydaemon.pp
+
+ /usr/sbin/semodule -i netzkatze.pp
+ sepolicy manpage -p . -d mydaemon_t
+
+ sepolicy manpage -p . -d netzkatze_t
./mydaemon_selinux.8
+
./netzkatze_selinux.8
+ /sbin/restorecon -F -R -v /usr/local/bin/mydaemon
+
+ /sbin/restorecon -F -R -v /usr/local/bin/netzkatze
Relabeled /usr/local/bin/mydaemon from unconfined_u:object_r:bin_t:s0 to system_u:object_r:mydaemon_exec_t:s0
+
Relabeled /usr/local/bin/netzkatze from unconfined_u:object_r:bin_t:s0 to system_u:object_r:netzkatze_exec_t:s0
 
...
 
...
 
</pre>=Eigenes Programm=
 
</pre>=Eigenes Programm=
*cat ~/mydaemon.c
+
*cat ~/netzkatze.c
 
<pre>
 
<pre>
 
#include <unistd.h>
 
#include <unistd.h>
Zeile 71: Zeile 71:
 
</pre>
 
</pre>
 
=Kompilieren=
 
=Kompilieren=
*gcc -o mydaemon mydaemon.c
+
*gcc -o netzkatze netzkatze.c
 
=Kopieren=
 
=Kopieren=
*cp mydaemon /usr/local/sbin
+
*cp netzkatze /usr/local/sbin
  
 
=System Dienst=
 
=System Dienst=
*cat /etc/systemd/system/mydaemon.service
+
*cat /etc/systemd/system/netzkatze.service
 
<pre>
 
<pre>
 
[Unit]
 
[Unit]
Zeile 83: Zeile 83:
 
[Service]
 
[Service]
 
Type=simple
 
Type=simple
ExecStart=/usr/local/bin/mydaemon
+
ExecStart=/usr/local/bin/netzkatze
  
 
[Install]
 
[Install]
Zeile 91: Zeile 91:
  
 
==Temporäre Änderung des Kontexts==
 
==Temporäre Änderung des Kontexts==
  chcon -u system_u -t systemd_unit_t mydaemon.service
+
  chcon -u system_u -t systemd_unit_t netzkatze.service
  
 
==Permanente Änderung des Kontexts==
 
==Permanente Änderung des Kontexts==
*semanage fcontext -a -t systemd_unit_t mydaemon.service
+
*semanage fcontext -a -t systemd_unit_t netzkatze.service
*restorecon -v mydaemon.service
+
*restorecon -v netzkatze.service
  
 
=Systemctl status=
 
=Systemctl status=
*systemctl start mydaemon
+
*systemctl start netzkatze
*systemctl status mydaemon
+
*systemctl status netzkatze
 
=Check that the new daemon is confined by SELinux=
 
=Check that the new daemon is confined by SELinux=
*ps -efZ | grep mydaemon
+
*ps -efZ | grep netzkatze
  system_u:system_r:unconfined_service_t:s0 root 5812    1  0 15:41 ?        00:00:00 /usr/local/bin/mydaemon
+
  system_u:system_r:unconfined_service_t:s0 root 5812    1  0 15:41 ?        00:00:00 /usr/local/bin/netzkatze
  
 
=Generieren Sie eine benutzerdefinierte Richtlinie für den Daemon=
 
=Generieren Sie eine benutzerdefinierte Richtlinie für den Daemon=
*sepolicy generate --init /usr/local/bin/mydaemon
+
*sepolicy generate --init /usr/local/bin/netzkatze
 
  Created the following files:
 
  Created the following files:
  /etc/systemd/system/mydaemon.te # Type Enforcement file
+
  /etc/systemd/system/netzkatze.te # Type Enforcement file
  /etc/systemd/system/mydaemon.if # Interface file
+
  /etc/systemd/system/netzkatze.if # Interface file
  /etc/systemd/system/mydaemon.fc # File Contexts file
+
  /etc/systemd/system/netzkatze.fc # File Contexts file
  /etc/systemd/system/mydaemon_selinux.spec # Spec file
+
  /etc/systemd/system/netzkatze_selinux.spec # Spec file
  /etc/systemd/system/mydaemon.sh # Setup Script
+
  /etc/systemd/system/netzkatze.sh # Setup Script
 
=Erstellen Sie die Systemrichtlinie mit dem neuen Richtlinienmodul mithilfe des mit dem vorherigen Befehl erstellten Setup-Skripts neu=
 
=Erstellen Sie die Systemrichtlinie mit dem neuen Richtlinienmodul mithilfe des mit dem vorherigen Befehl erstellten Setup-Skripts neu=
*./mydaemon.sh  
+
*./netzkatze.sh  
 
<pre>
 
<pre>
 
Building and Loading Policy
 
Building and Loading Policy
+ make -f /usr/share/selinux/devel/Makefile mydaemon.pp
+
+ make -f /usr/share/selinux/devel/Makefile netzkatze.pp
Compiling targeted mydaemon module
+
Compiling targeted netzkatze module
Creating targeted mydaemon.pp policy package
+
Creating targeted netzkatze.pp policy package
rm tmp/mydaemon.mod tmp/mydaemon.mod.fc
+
rm tmp/netzkatze.mod tmp/netzkatze.mod.fc
+ /usr/sbin/semodule -i mydaemon.pp
+
+ /usr/sbin/semodule -i netzkatze.pp
+ sepolicy manpage -p . -d mydaemon_t
+
+ sepolicy manpage -p . -d netzkatze_t
./mydaemon_selinux.8
+
./netzkatze_selinux.8
+ /sbin/restorecon -F -R -v /usr/local/bin/mydaemon
+
+ /sbin/restorecon -F -R -v /usr/local/bin/netzkatze
Relabeled /usr/local/bin/mydaemon from unconfined_u:object_r:bin_t:s0 to system_u:object_r:mydaemon_exec_t:s0
+
Relabeled /usr/local/bin/netzkatze from unconfined_u:object_r:bin_t:s0 to system_u:object_r:netzkatze_exec_t:s0
 
...
 
...
 
</pre>
 
</pre>
  
 
=Starten Sie den Daemon neu und überprüfen Sie, ob er jetzt von SELinux eingeschränkt ausgeführt wird=
 
=Starten Sie den Daemon neu und überprüfen Sie, ob er jetzt von SELinux eingeschränkt ausgeführt wird=
*systemctl restart mydaemon
+
*systemctl restart netzkatze
*ps -efZ | grep mydaemon
+
*ps -efZ | grep netzkatze
 
=Da der Daemon jetzt von SELinux eingeschränkt wird, verhindert SELinux auch den Zugriff auf /var/log/messages. Zeigen Sie die entsprechende Ablehnungsnachricht an=
 
=Da der Daemon jetzt von SELinux eingeschränkt wird, verhindert SELinux auch den Zugriff auf /var/log/messages. Zeigen Sie die entsprechende Ablehnungsnachricht an=
 
*ausearch -m AVC -ts recent
 
*ausearch -m AVC -ts recent
Zeile 146: Zeile 146:
  
 
=Starten Sie den Daemon neu und überprüfen Sie, ob er jetzt von SELinux eingeschränkt ausgeführt wird=
 
=Starten Sie den Daemon neu und überprüfen Sie, ob er jetzt von SELinux eingeschränkt ausgeführt wird=
*systemctl restart mydaemon
+
*systemctl restart netzkatze
*ps -efZ | grep mydaemon
+
*ps -efZ | grep netzkatze
 
=Da der Daemon jetzt von SELinux eingeschränkt wird, verhindert SELinux auch den Zugriff auf /var/log/messages. Zeigen Sie die entsprechende Ablehnungsnachricht an=
 
=Da der Daemon jetzt von SELinux eingeschränkt wird, verhindert SELinux auch den Zugriff auf /var/log/messages. Zeigen Sie die entsprechende Ablehnungsnachricht an=
 
*ausearch -m AVC -ts recent
 
*ausearch -m AVC -ts recent

Version vom 23. November 2022, 09:38 Uhr

Kopieren der Netzkatze

  • cp /usr/bin/ncat /usr/local/bin/netzkatze

System Dienst

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

[Service]
Type=simple
ExecStart=/usr/local/bin/netzkatze -lp 8888
StandardOutput=/tmp/netzkatze

[Install]
WantedBy=multi-user.target

Temporäre Änderung des Kontexts

chcon -u system_u -t systemd_unit_t netzkatze.service

Permanente Änderung des Kontexts

  • semanage fcontext -a -t systemd_unit_t netzkatze.service
  • restorecon -v netzkatze.service

Systemctl status

  • systemctl start netzkatze
  • systemctl status netzkatze

Check that the new daemon is confined by SELinux

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

Generieren Sie eine benutzerdefinierte Richtlinie für den Daemon

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

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

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

=Eigenes Programm=

  • cat ~/netzkatze.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 netzkatze netzkatze.c

Kopieren

  • cp netzkatze /usr/local/sbin

System Dienst

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

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

[Install]
WantedBy=multi-user.target

Temporäre Änderung des Kontexts

chcon -u system_u -t systemd_unit_t netzkatze.service

Permanente Änderung des Kontexts

  • semanage fcontext -a -t systemd_unit_t netzkatze.service
  • restorecon -v netzkatze.service

Systemctl status

  • systemctl start netzkatze
  • systemctl status netzkatze

Check that the new daemon is confined by SELinux

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

Generieren Sie eine benutzerdefinierte Richtlinie für den Daemon

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

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

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

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

  • systemctl restart netzkatze
  • ps -efZ | grep netzkatze

Da der Daemon jetzt von SELinux eingeschränkt wird, verhindert SELinux auch den Zugriff auf /var/log/messages. Zeigen Sie die entsprechende Ablehnungsnachricht an

  • ausearch -m AVC -ts recent

Weiter Informationen

  • sealert -l "*"

Vorgeschlagene Änderungen

  • ausearch -m AVC -ts recent | audit2allow -R

Da die von audit2allow vorgeschlagenen Regeln in bestimmten Fällen falsch sein können, verwenden Sie nur einen Teil der Ausgabe, um die entsprechende Richtlinienschnittstelle zu finden

  • grep -r "logging_write_generic_logs" /usr/share/selinux/devel/include/ | grep .if

/usr/share/selinux/devel/include/system/logging.if:interface(`logging_write_generic_logs',

Links


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

  • systemctl restart netzkatze
  • ps -efZ | grep netzkatze

Da der Daemon jetzt von SELinux eingeschränkt wird, verhindert SELinux auch den Zugriff auf /var/log/messages. Zeigen Sie die entsprechende Ablehnungsnachricht an

  • ausearch -m AVC -ts recent

Weiter Informationen

  • sealert -l "*"

Vorgeschlagene Änderungen

  • ausearch -m AVC -ts recent | audit2allow -R

Da die von audit2allow vorgeschlagenen Regeln in bestimmten Fällen falsch sein können, verwenden Sie nur einen Teil der Ausgabe, um die entsprechende Richtlinienschnittstelle zu finden

  • grep -r "logging_write_generic_logs" /usr/share/selinux/devel/include/ | grep .if

/usr/share/selinux/devel/include/system/logging.if:interface(`logging_write_generic_logs',

Links