PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : selinux, grsecurity oder apparmor?



$emperf!
23.01.09, 23:02
Hi Leute

Ich will gar nicht erst anfangen mit Fragen zu nerven wie man Benutzer in Ihr Home einsperrt und sie gleichzeitig Programme die ausserhalb irgendeines chroot oder was auch immer Bereiches liegen benutzen lässt :ugly:


Hier kurz das Szenario was ich realisieren möchte

Benutzer können folgendes:
-Benutzer können sich per ssh anhand von key authentifizierung auf den Server einloggen (nicht jedoch per username und Passwort!)
-Benutzer können Dateien auf den Server kopieren und Dateien vom Server runter holen mit scp.
-Sie sollen (man höre und staune :p ) auch mit rsync (via ssh), dateien auf den server kopieren dürfen
-Ebenso können sie Verzeichnisse anlegen und Verzeichnis Inhalte auflisten.

Folgendes können Benutzer nicht:
-Daten von anderen Benutzern anschauen
-Verbindungen zu anderen Rechnern aufbauen via ssh ping etc.
-Irgendwelche Prozesse beenden oder starten
-Systemeinstellungen ändern
-Die User sollen eigentlich nichts können ausser das oben erwähnte.

Sollte jemand Dinge versuchen die er nicht darf wird das geloggt und je nach dem sogar vom System aktiv darauf reagiert (ala fail2ban, IDP etc.).



Bis vor kurzem habe ich sowas ähnliches mit http://chrootssh.sourceforge.net/ gemacht. War allerdings immer ein wenig über die Sicherheit besorgt und nicht wirklich überzeugt davon. Nun ist das Projekt wohl gestorben oder offline bei sourceforge.


Möchte mein Vorhaben diesmal etwas professioneller umsetzen. Mir ist klar, dass ich dazu eines, oder sogar einen Mix der folgenden drei verwenden muss:
grsecurity
selinux
apparmor

Kann mir jemand aufgrund meiner angaben sagen, was sich am besten für mein Vorhaben eignet?

Wenn es sonst noch hilfreiche Programme Patches oder Anleitungen gibt wäre ich auch für diese Infos dankbar.


Ich arbeite am liebsten mit Debian!


Gruss
$emperf!

PS: Habe mich mal ein wenig in die Materie eingelesen und hatte das Gefühl, dass selinux wohl am geeignetsten ist. Bin mal gespannt was andere sagen!

gropiuskalle
24.01.09, 00:48
AppArmor regelt keine user-Rechte, sondern zwingt Anwendungen zu einem gutartigen Verhalten. Als zusätzliche Sicherheitsschicht ist das bestimmt sehr gut, aber hinsichtlich Deines eigentlichen Vorhabens, restriktive user-Profile anzulegen, wohl eher ungeeignet, oder?

derRichard
24.01.09, 01:04
hi!

das verwenden von rsync via ssh steht im widerspruch mit dem verbot "Irgendwelche Prozesse beenden oder starten". :rolleyes:

bau dir ein sauberes chroot auf, der aktuelle sshd kann das auch ohne patch.
selinux, grsecurity und co. werden dir dabei wenig helfen.

ich würde den auditd von selinux jedoch verwenden um die user zu kontrollieren.
zb: mitloggen von fehlgeschlagenen syscalls...

wie der selinux-support bei debian ist kann ich nicht sagen.
ich setze selinux nur bei centos/rhel ein.

hth,
//richard

Rain_maker
24.01.09, 01:17
Und zu grsecurity wäre dann noch das hier anzumerken (vor allem auch für Querleser, die per Forensuche über diesen Thread stolpern).

http://www.grsecurity.net/news.php#grsec2112

Roger Wilco
24.01.09, 09:25
Ich sehe das so wie derRichard. Für dein Vorhaben benötigst du weder SELinux, grsecurity noch AppArmor (oder RSBAC oder Smack oder Tomoyo oder ... ;)).

Aktuelle Versionen von OpenSSH bringen bereits eine Möglichkeit mit, einen Benutzer in seinem Verzeichnis einzusperren, ohne eine vollständige chroot-Umgebung bauen zu müssen - allerdings nur für SFTP. Das würde (abgesehen von deinem Vorhaben mit rsync) schon ausreichen. Für Einzelheiten siehe sshd_config(5) und suche darin nach "ChrootDirectory", "Subsystem" und "ForceCommand".

Im Prinzip benötigen deine Benutzer ja keine vollständige interaktive Shell. rsync ließe sich auch zusammen mit rssh oder scponly als Shell verwenden. Bei diesen musst du allerdings wieder "von Hand" deine chroot-Umgebung für die Benutzer erstellen. Der Vorgang ist jedoch sehr gut skriptbar und somit eigentlich kein Problem bzw. Hindernis.


das verwenden von rsync via ssh steht im widerspruch mit dem verbot "Irgendwelche Prozesse beenden oder starten". :rolleyes:
Ja, allerdings kann man mit OpenSSH einschränken, welche Kommandos ein Benutzer ausführen kann bzw. dass er zwangsweise nur ein bestimmtes Kommando ausführen darf (siehe sshd(8) Abschnitt "AUTHORIZED_KEYS FILE FORMAT").

$emperf!
26.01.09, 10:53
Danke für eure Tipps!


Im Prinzip benötigen deine Benutzer ja keine vollständige interaktive Shell. rsync ließe sich auch zusammen mit rssh oder scponly als Shell verwenden. Bei diesen musst du allerdings wieder "von Hand" deine chroot-Umgebung für die Benutzer erstellen. Der Vorgang ist jedoch sehr gut skriptbar und somit eigentlich kein Problem bzw. Hindernis.

Wird dann auch directory listing funktionieren, wenn ich das mit rssh und scponly mache?
Sorry für die Frage. Wollte eigentlich bei pizzashack.org selber nachschauen aber dort kommt nur die Apache standardseite welche sagt, dass die erolgreich einen Apache installiert haben :p Als Distro haben sie offensichtlich auch Centos verwendet.. :cool:

Kennt jemand ein empfehlenswertes aktuelles Tutorial zu dem was ich machen will? Kann auch auf Centos sein!

SELinux werde ich wohl auch drauf tun für die Überwachung. Interessiert mich nebenbei auch sehr und schon daher muss ich mir das mal anschauen.

$emperf!

Roger Wilco
26.01.09, 20:01
Wird dann auch directory listing funktionieren, wenn ich das mit rssh und scponly mache?
Ja.

Wollte eigentlich bei pizzashack.org selber nachschauen aber dort kommt nur die Apache standardseite
http://www.pizzashack.org/rssh/ funktioniert bei mir.

$emperf!
26.01.09, 20:23
http://www.pizzashack.org/rssh/ funktioniert bei mir.

Ach so, ja tatsächlich...

Aber schau mal hier www.pizzashack.org :p

Naja, Rom wurde ja auch nicht an einem Tag erbaut, appropos Pizza.. :o


Danke
$emperf!