Eigenes Profil erstellen Beispiel ncat: Unterschied zwischen den Versionen
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 | + | *semanage fcontext -a -t systemd_unit_t netzkatze.service |
| − | *restorecon -v | + | *restorecon -v netzkatze.service |
=Systemctl status= | =Systemctl status= | ||
| − | *systemctl start | + | *systemctl start netzkatze |
| − | *systemctl status | + | *systemctl status netzkatze |
=Check that the new daemon is confined by SELinux= | =Check that the new daemon is confined by SELinux= | ||
| − | *ps -efZ | grep | + | *ps -efZ | grep netzkatze |
| − | system_u:system_r:unconfined_service_t:s0 root 5812 1 0 15:41 ? 00:00:00 /usr/local/bin/ | + | 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/ | + | *sepolicy generate --init /usr/local/bin/netzkatze |
Created the following files: | Created the following files: | ||
| − | /etc/systemd/system/ | + | /etc/systemd/system/netzkatze.te # Type Enforcement file |
| − | /etc/systemd/system/ | + | /etc/systemd/system/netzkatze.if # Interface file |
| − | /etc/systemd/system/ | + | /etc/systemd/system/netzkatze.fc # File Contexts file |
| − | /etc/systemd/system/ | + | /etc/systemd/system/netzkatze_selinux.spec # Spec file |
| − | /etc/systemd/system/ | + | /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= | ||
| − | *./ | + | *./netzkatze.sh |
<pre> | <pre> | ||
Building and Loading Policy | Building and Loading Policy | ||
| − | + make -f /usr/share/selinux/devel/Makefile | + | + make -f /usr/share/selinux/devel/Makefile netzkatze.pp |
| − | Compiling targeted | + | Compiling targeted netzkatze module |
| − | Creating targeted | + | Creating targeted netzkatze.pp policy package |
| − | rm tmp/ | + | rm tmp/netzkatze.mod tmp/netzkatze.mod.fc |
| − | + /usr/sbin/semodule -i | + | + /usr/sbin/semodule -i netzkatze.pp |
| − | + sepolicy manpage -p . -d | + | + sepolicy manpage -p . -d netzkatze_t |
| − | ./ | + | ./netzkatze_selinux.8 |
| − | + /sbin/restorecon -F -R -v /usr/local/bin/ | + | + /sbin/restorecon -F -R -v /usr/local/bin/netzkatze |
| − | Relabeled /usr/local/bin/ | + | 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 ~/ | + | *cat ~/netzkatze.c |
<pre> | <pre> | ||
#include <unistd.h> | #include <unistd.h> | ||
| Zeile 71: | Zeile 71: | ||
</pre> | </pre> | ||
=Kompilieren= | =Kompilieren= | ||
| − | *gcc -o | + | *gcc -o netzkatze netzkatze.c |
=Kopieren= | =Kopieren= | ||
| − | *cp | + | *cp netzkatze /usr/local/sbin |
=System Dienst= | =System Dienst= | ||
| − | *cat /etc/systemd/system/ | + | *cat /etc/systemd/system/netzkatze.service |
<pre> | <pre> | ||
[Unit] | [Unit] | ||
| Zeile 83: | Zeile 83: | ||
[Service] | [Service] | ||
Type=simple | Type=simple | ||
| − | ExecStart=/usr/local/bin/ | + | 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 | + | 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 | + | *semanage fcontext -a -t systemd_unit_t netzkatze.service |
| − | *restorecon -v | + | *restorecon -v netzkatze.service |
=Systemctl status= | =Systemctl status= | ||
| − | *systemctl start | + | *systemctl start netzkatze |
| − | *systemctl status | + | *systemctl status netzkatze |
=Check that the new daemon is confined by SELinux= | =Check that the new daemon is confined by SELinux= | ||
| − | *ps -efZ | grep | + | *ps -efZ | grep netzkatze |
| − | system_u:system_r:unconfined_service_t:s0 root 5812 1 0 15:41 ? 00:00:00 /usr/local/bin/ | + | 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/ | + | *sepolicy generate --init /usr/local/bin/netzkatze |
Created the following files: | Created the following files: | ||
| − | /etc/systemd/system/ | + | /etc/systemd/system/netzkatze.te # Type Enforcement file |
| − | /etc/systemd/system/ | + | /etc/systemd/system/netzkatze.if # Interface file |
| − | /etc/systemd/system/ | + | /etc/systemd/system/netzkatze.fc # File Contexts file |
| − | /etc/systemd/system/ | + | /etc/systemd/system/netzkatze_selinux.spec # Spec file |
| − | /etc/systemd/system/ | + | /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= | ||
| − | *./ | + | *./netzkatze.sh |
<pre> | <pre> | ||
Building and Loading Policy | Building and Loading Policy | ||
| − | + make -f /usr/share/selinux/devel/Makefile | + | + make -f /usr/share/selinux/devel/Makefile netzkatze.pp |
| − | Compiling targeted | + | Compiling targeted netzkatze module |
| − | Creating targeted | + | Creating targeted netzkatze.pp policy package |
| − | rm tmp/ | + | rm tmp/netzkatze.mod tmp/netzkatze.mod.fc |
| − | + /usr/sbin/semodule -i | + | + /usr/sbin/semodule -i netzkatze.pp |
| − | + sepolicy manpage -p . -d | + | + sepolicy manpage -p . -d netzkatze_t |
| − | ./ | + | ./netzkatze_selinux.8 |
| − | + /sbin/restorecon -F -R -v /usr/local/bin/ | + | + /sbin/restorecon -F -R -v /usr/local/bin/netzkatze |
| − | Relabeled /usr/local/bin/ | + | 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 | + | *systemctl restart netzkatze |
| − | *ps -efZ | grep | + | *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 | + | *systemctl restart netzkatze |
| − | *ps -efZ | grep | + | *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',