Hallo, ich möchte den apache auf meiner Leap 15.2 mit AppArmor sichern, was muss ich machen? Die Doku ist entweder total nichtssagend oder zu detailiert... Hat jemand eine 'normale' Anleitung für mich? Cheers MH -- Mathias Homann Mathias.Homann@openSUSE.org Jabber (XMPP): lemmy@tuxonline.tech IRC: [Lemmy] on freenode and ircnet (bouncer active) telegram: https://telegram.me/lemmy98 keybase: https://keybase.io/lemmy gpg key fingerprint: 8029 2240 F4DD 7776 E7D2 C042 6B8E 029E 13F2 C102 -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um den Listen Administrator zu erreichen, schicken Sie eine Mail an: opensuse-de+owner@opensuse.org
Hallo Mathias, hallo zusammen, Am Sonntag, 2. August 2020, 14:50:03 CEST schrieb Mathias Homann:
ich möchte den apache auf meiner Leap 15.2 mit AppArmor sichern, was muss ich machen?
Kurzfassung: Mit aa-genprof /usr/sbin/httpd2-prefork ein Profil erstellen und ggf. mit aa-logprof nacharbeiten. Bei Apache kommt dann noch mod_apparmor dazu, damit Du jedem vHost einen eigenen Hat (Unterprofil) zuweisen kannst.
Die Doku ist entweder total nichtssagend oder zu detailiert...
Hat jemand eine 'normale' Anleitung für mich?
<Eigenwerbung> Ich verweise Dich erstmal auf meinen AppArmor Crashkurs - Folien und einen Link zum Vortragsvideo gibt es auf https://blog.cboltz.de/archives/79-FrOSCon-2019-openSUSE-booth-AppArmor-Cras... </Eigenwerbung> Falls Dir ein Handbuch lieber ist: Der Security Guide auf doc.opensuse.org hat ein Kapitel zu AppArmor: https://doc.opensuse.org/documentation/leap/security/html/book-security/part... Wenn Du mit einem vorhandenen Profil anfangen willst, kannst Du z. B. https://paste.opensuse.org/54846729 verwenden (als /etc/apparmor.d/httpd2-prefork speichern, dann rcapparmor reload ). Das Profil ist im complain-Mode (Lernmodus) - es wird also alles erlaubt, und Verstöße werden in /var/log/audit/audit.log mitgeschrieben. Für den Produktiveinsatz bitte per aa-enforce /etc/apparmor.d/httpd2-prefork scharfschalten. Das erstmal als generelle Antwort. Falls noch Fragen auftauchen, frag ;-) Gruß Christian Boltz -- Ich komm' mir fast vor wie in nem Kochrezept... "lassen sie Ihr Hirn nun bei mindestens 40°C fuer > 12h im eigenen Saft koecheln..." [David Haller in suse-linux-faq] -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um den Listen Administrator zu erreichen, schicken Sie eine Mail an: opensuse-de+owner@opensuse.org
Ich kapier's nicht... Ich hab das jetzt erst mal so versucht wie es im header von /etc/apparmor.d/usr.lib.apache2.mpm-prefork.apache2 beschrieben ist.. aa-status sagt alle apache-relevanten profile stehen auf enforcing, und dennoch sagt mir ein ausearch -m avc -i -ts recent: "type=AVC msg=audit(03.08.2020 09:24:07.541:17166) : apparmor=DENIED operation=change_hat info=unconfined can not change_hat error=-1 profile=unconfined pid=9006 comm=httpd-prefork" Und das heisst nach meinem verständnis dass der httpd als unconfined läuft... In diesem Zusammenhang: auf Leap 15.2 wird selinux ohne policies paketiert - das hilft auch nicht wirklich weiter. grmbl. @christian: ich hab mir deine Links angesehn... Versteh ich das richtig: für AppArmor muss ich im Prinzip für "jeden Mist" erst mal Profile schreiben, es ist nix brauchbares vordefiniert? Cheers MH Am 2020-08-02 21:09, schrieb Christian Boltz:
Hallo Mathias, hallo zusammen,
Am Sonntag, 2. August 2020, 14:50:03 CEST schrieb Mathias Homann:
ich möchte den apache auf meiner Leap 15.2 mit AppArmor sichern, was muss ich machen?
Kurzfassung: Mit aa-genprof /usr/sbin/httpd2-prefork ein Profil erstellen und ggf. mit aa-logprof nacharbeiten.
Bei Apache kommt dann noch mod_apparmor dazu, damit Du jedem vHost einen eigenen Hat (Unterprofil) zuweisen kannst.
Die Doku ist entweder total nichtssagend oder zu detailiert...
Hat jemand eine 'normale' Anleitung für mich?
<Eigenwerbung> Ich verweise Dich erstmal auf meinen AppArmor Crashkurs - Folien und einen Link zum Vortragsvideo gibt es auf https://blog.cboltz.de/archives/79-FrOSCon-2019-openSUSE-booth-AppArmor-Cras... </Eigenwerbung>
Falls Dir ein Handbuch lieber ist: Der Security Guide auf doc.opensuse.org hat ein Kapitel zu AppArmor: https://doc.opensuse.org/documentation/leap/security/html/book-security/part...
Wenn Du mit einem vorhandenen Profil anfangen willst, kannst Du z. B. https://paste.opensuse.org/54846729 verwenden (als /etc/apparmor.d/httpd2-prefork speichern, dann rcapparmor reload ). Das Profil ist im complain-Mode (Lernmodus) - es wird also alles erlaubt, und Verstöße werden in /var/log/audit/audit.log mitgeschrieben. Für den Produktiveinsatz bitte per aa-enforce /etc/apparmor.d/httpd2-prefork scharfschalten.
Das erstmal als generelle Antwort. Falls noch Fragen auftauchen, frag ;-)
Gruß
Christian Boltz -- Ich komm' mir fast vor wie in nem Kochrezept... "lassen sie Ihr Hirn nun bei mindestens 40°C fuer > 12h im eigenen Saft koecheln..." [David Haller in suse-linux-faq]
-- Mathias Homann Mathias.Homann@openSUSE.org telegram: https://telegram.me/lemmy98 irc: [lemmy] on freenode and ircnet obs: lemmy04 gpg key fingerprint: 8029 2240 F4DD 7776 E7D2 C042 6B8E 029E 13F2 C102
Hallo Mathias, hallo zusammen, Am Montag, 3. August 2020, 09:28:57 CEST schrieb Mathias Homann:
Ich kapier's nicht...
Ich hab das jetzt erst mal so versucht wie es im header von /etc/apparmor.d/usr.lib.apache2.mpm-prefork.apache2 beschrieben ist..
Ich fürchte, da bist Du einem falschen Profil aufgesessen - der Pfad in diesem Profil passt nicht zum openSUSE-Apache, daher wird es auch nicht verwendet :-( Bugreport existiert, ich werde es wohl ab dem nächsten AppArmor Major- Release nicht mehr standardmäßig mitinstallieren, um diese Verwirrung zu vermeiden. Nimm lieber das Profil, das ich auf paste.opensuse.org gepackt habe. Das verwende ich in ähnlicher Form unter openSUSE im Produktiveinsatz, ich habe es nur etwas anonymisiert. Nach Anlegen der Datei in /etc/apparmor.d/ bitte "rcapparmor reload" nicht vergessen ;-) und danach Apache (einmalig) neu starten.
aa-status sagt alle apache-relevanten profile stehen auf enforcing,
Ich vermute mal, dass Du da nur das "falsche" (siehe oben) Profil siehst, aber nicht das richtige (httpd2-prefork).
und dennoch sagt mir ein ausearch -m avc -i -ts recent:
"type=AVC msg=audit(03.08.2020 09:24:07.541:17166) : apparmor=DENIED operation=change_hat info=unconfined can not change_hat error=-1 profile=unconfined pid=9006 comm=httpd-prefork"
Und das heisst nach meinem verständnis dass der httpd als unconfined läuft...
Richtig.
In diesem Zusammenhang: auf Leap 15.2 wird selinux ohne policies paketiert - das hilft auch nicht wirklich weiter.
Das ist leider nicht mein Fachgebiet ;-) Ich weiß, dass jemand im SUSE Security Team auch etwas an selinux arbeitet, aber wohl nicht besonders intensiv, weil der Fokus eher auf AppArmor liegt.
grmbl.
@christian: ich hab mir deine Links angesehn... Versteh ich das richtig: für AppArmor muss ich im Prinzip für "jeden Mist" erst mal Profile schreiben, es ist nix brauchbares vordefiniert?
In vielen Fällen: ja. Es gibt aber auch für diverse Programme inaktive Profile in /usr/share/apparmor/extra-profiles/, die aus verschiedenen Gründen nicht standardmäßig aktiv sind. Mögliche Gründe sind: - es gibt kein sinnvolles Standardprofil für ein Programm, das nicht zu viel kaputtmacht (gilt vor allem für Programme mit einem Menüpunkt "speichern unter...", aber auch sowas wie vsftpd, weil jeder seine FTP-Verzeichnisse woanders hat und ein Standardprofil entweder alles erlauben müsste oder so streng wäre, dass es vsftpd erstmal quasi unbenutzbar machen würde) - manche Profile sind deutlich veraltet (aber immer noch besser als komplett neu anzufangen) - manche Profile sind aktuell, aber nicht auf ausreichend vielen Setups getestet (gilt z. B. für die Postfix-Profile - die verwende ich produktiv, aber eben nur mit meinem Setup) aa-genprof wird Dir diese Profile übrigens automatisch vorschlagen ;-) Ich weiß, dass das für Dich (mit selinux-Vorkenntnissen) erstmal ungewohnt ist. Bei selinux ist (AFAIK - wie gesagt nicht mein Fachgebiet) alles irgendwie gelabelt, und standardmäßig auch alles eingeschränkt. Das ist prinzipiell sicherer, weil _nichts_ unconfined ist, kann aber auch mehr Arbeit machen. AppArmor verwendet dagegen Profile für bestimmte Anwendungen - meine Faustregel ist: alles, das am Netzwerk hängt, hat ein AppArmor-Profil verdient ;-) Das macht die Sache deutlich einfacher (man kann sich auf die "wichtigen" Programme konzentrieren), aber man sollte natürlich darauf achten, kein mögliches Einfallstor zu vergessen ;-) Theoretisch kann man mit AppArmor auch Full System Confinement machen. Ich habe es nie selbst ausprobiert, aber ich stelle es mir ähnlich schmerzhaft vor wie das, was ich gerüchteweise über selinux gehört habe ;-) Gruß Christian Boltz -- [Loadbalancer vor Mailservern] Ausbauen, bei Ebay verhökern und die frei gewordene Zeit zusammen mit dem Ebay-Erlös in eine große Betriebsparty mit Cocktails anlegen. [Peer Heinlein in postfixbuch-users] -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um den Listen Administrator zu erreichen, schicken Sie eine Mail an: opensuse-de+owner@opensuse.org
Am 2020-08-03 20:36, schrieb Christian Boltz:
Hallo Mathias, hallo zusammen,
Am Montag, 3. August 2020, 09:28:57 CEST schrieb Mathias Homann:
Ich kapier's nicht...
Ich hab das jetzt erst mal so versucht wie es im header von /etc/apparmor.d/usr.lib.apache2.mpm-prefork.apache2 beschrieben ist..
Ich fürchte, da bist Du einem falschen Profil aufgesessen - der Pfad in diesem Profil passt nicht zum openSUSE-Apache, daher wird es auch nicht verwendet :-(
Bugreport existiert, ich werde es wohl ab dem nächsten AppArmor Major- Release nicht mehr standardmäßig mitinstallieren, um diese Verwirrung zu vermeiden.
Da gibt's übrigens noch ein zweites apache profil, das ist auch standardmässig installiert, passt auch nicht zum apache2 wie wir ihn haben...
Nimm lieber das Profil, das ich auf paste.opensuse.org gepackt habe. Das verwende ich in ähnlicher Form unter openSUSE im Produktiveinsatz, ich habe es nur etwas anonymisiert. Nach Anlegen der Datei in /etc/apparmor.d/ bitte "rcapparmor reload" nicht vergessen ;-) und danach Apache (einmalig) neu starten.
ich werd's mal ausprobieren... kann ich mit AppArmor überhaupt verhindern dass über einen Bug in Wordpress dateien hochgeladen werden die zwar nicht das system infizieren aber dann per link aufgerufen weden um den Rechner der auf wordpress zugreift zu infizieren? Nach meinem Verständnis würde das nicht gehen, weil dann generell Uploads in WP nicht mehr gehen würden, oder? Sollte ich für so was lieber amavis/clamd in WP einbinden, wenn das irgendwie geht? Situation ist folgende: Wordpress Blog, immer aktuelle version Immer wieder finden sich unterhalb wp-upload dateien die da nicht hingehören, so z.b. dateien mit der ending .ico die aber inhatlich aus "obfuscated" php bestehen. Password leak kann's "eigentlich" nicht gewesen sein, weil 1. nur ich accounts auf dem Blog hab, 2. ich email bekomm wenn sich einer anmeldet, und 3. ich auf allen logins 2FA aktiv habe... Wenn ich jetzt dem Apache per AppArmor oder konfig das schreiben verbieten würde, würden ja Uploads ins Wordpress nicht mehr gehn - und meine Nextcloud die auch noch da in einem VHost läuft wäre auch tot... Vorschläge bitte...
aa-status sagt alle apache-relevanten profile stehen auf enforcing,
Ich vermute mal, dass Du da nur das "falsche" (siehe oben) Profil siehst, aber nicht das richtige (httpd2-prefork).
und dennoch sagt mir ein ausearch -m avc -i -ts recent:
"type=AVC msg=audit(03.08.2020 09:24:07.541:17166) : apparmor=DENIED operation=change_hat info=unconfined can not change_hat error=-1 profile=unconfined pid=9006 comm=httpd-prefork"
Und das heisst nach meinem verständnis dass der httpd als unconfined läuft...
Richtig.
In diesem Zusammenhang: auf Leap 15.2 wird selinux ohne policies paketiert - das hilft auch nicht wirklich weiter.
Das ist leider nicht mein Fachgebiet ;-) Ich weiß, dass jemand im SUSE Security Team auch etwas an selinux arbeitet, aber wohl nicht besonders intensiv, weil der Fokus eher auf AppArmor liegt.
Ich weiss ja nicht - bisher kommen bei mir im Zusammenhang mit AppArmor deutliche "Linux from scratch"-Gefühle auf, "alles muss ich selber machen". Zumindest für die Dienste die "man" immer so braucht sollten doch eigentlich brauchbare profile schon dabei sein und auch aktiv sein. [...]
Theoretisch kann man mit AppArmor auch Full System Confinement machen. Ich habe es nie selbst ausprobiert, aber ich stelle es mir ähnlich schmerzhaft vor wie das, was ich gerüchteweise über selinux gehört habe ;-)
Die Gerüchte hab ich auch mal gehört - und 5 Jahre lang mein Brot damit verdient diese Gerüchte auszumerzen. Das war früher mal so (Red Hat vor Version 6.x). Lang ist's her. Wenn man sich selinux auf RHEL heute ansieht fragt man sich eher "warum machen wir was anderes"... Andererseits: das selinux so wie es auf obs in security:SELinux liegt ist auch nicht besser als das was in Leap 15.2 daherkommt... Wieso bitte läuft der apache unter der SELinux version als prozesstyp kernel_t ????? ein apache läuft normalerweise als system_u:system_r:httpd_t, dementsprechend ist das dateisystem gelabelt, und dann "geht es einfach" und ist trotzdem hübsch eingesperrt...
Gruß
Christian Boltz
Ditto. -- Mathias Homann Mathias.Homann@openSUSE.org telegram: https://telegram.me/lemmy98 irc: [lemmy] on freenode and ircnet obs: lemmy04 gpg key fingerprint: 8029 2240 F4DD 7776 E7D2 C042 6B8E 029E 13F2 C102
Am 03.08.20 um 20:36 schrieb Christian Boltz:
(......)
Nach Anlegen der Datei in /etc/apparmor.d/ bitte "rcapparmor reload" nicht vergessen ;-) und danach Apache (einmalig) neu starten.
Mal ne Frage, reicht es nicht auch, einfach aa-enforce PROFILENAME zu machen? Ich hatte jedenfalls mal an einem Profil gebastelt (weiß nicht mehr, war Firefox glaub ich), da musste ich tatsächlich rebooten, damit die Änderungen wirksam wurden.... ich hab da tatsächlich aa-enforce PROFILE gemacht und die Änderungen wurden nicht aktiv, erst nach Reboot.
aa-status sagt alle apache-relevanten profile stehen auf enforcing,
btw, aa-notify ist ein tolles Tool, damit wird man in seinem Desktop immer visuell informiert, wenn ein Zugriff ggf. ungewollt geblockt wurde und erlaubt werden muss. aa-notify erleichtert mir jedenfalls das Leben erheblich.
(...)
AppArmor verwendet dagegen Profile für bestimmte Anwendungen - meine Faustregel ist: alles, das am Netzwerk hängt, hat ein AppArmor-Profil verdient ;-)
Also alles... KDE /Plasma komplett wäre toll, wenn jemand 30 Jahre Zeit hätte....
Theoretisch kann man mit AppArmor auch Full System Confinement machen. Ich habe es nie selbst ausprobiert, aber ich stelle es mir ähnlich schmerzhaft vor wie das, was ich gerüchteweise über selinux gehört habe
Da gibt es ne Menge Vorlagen, mit denen man weiterbasteln kann: https://github.com/morfikov/files/tree/master/configs/etc/apparmor.d/ -- Um die Liste abzubestellen, schicken Sie eine Mail an: opensuse-de+unsubscribe@opensuse.org Um den Listen Administrator zu erreichen, schicken Sie eine Mail an: opensuse-de+owner@opensuse.org
participants (4)
-
Christian Boltz
-
mailinglisten@posteo.de
-
Mathias Homann
-
Mathias Homann