• Hallo liebe Userinnen und User,

    nach bereits längeren Planungen und Vorbereitungen sind wir nun von vBulletin auf Xenforo umgestiegen. Die Umstellung musste leider aufgrund der Serverprobleme der letzten Tage notgedrungen vorverlegt werden. Das neue Forum ist soweit voll funktionsfähig, allerdings sind noch nicht alle der gewohnten Funktionen vorhanden. Nach Möglichkeit werden wir sie in den nächsten Wochen nachrüsten. Dafür sollte es nun einige der Probleme lösen, die wir in den letzten Tagen, Wochen und Monaten hatten. Auch der Server ist nun potenter als bei unserem alten Hoster, wodurch wir nun langfristig den Tank mit Bytes vollgetankt haben.

    Anfangs mag die neue Boardsoftware etwas ungewohnt sein, aber man findet sich recht schnell ein. Wir wissen, dass ihr alle Gewohnheitstiere seid, aber gebt dem neuen Board eine Chance.
    Sollte etwas der neuen oder auch gewohnten Funktionen unklar sein, könnt ihr den "Wo issn da der Button zu"-Thread im Feedback nutzen. Bugs meldet ihr bitte im Bugtracker, es wird sicher welche geben die uns noch nicht aufgefallen sind. Ich werde das dann versuchen, halbwegs im Startbeitrag übersichtlich zu halten, was an Arbeit noch aussteht.

    Neu ist, dass die Boardsoftware deutlich besser für Mobiltelefone und diverse Endgeräte geeignet ist und nun auch im mobilen Style alle Funktionen verfügbar sind. Am Desktop findet ihr oben rechts sowohl den Umschalter zwischen hellem und dunklem Style. Am Handy ist der Hell-/Dunkelschalter am Ende der Seite. Damit sollte zukünftig jeder sein Board so konfigurieren können, wie es ihm am liebsten ist.


    Die restlichen Funktionen sollten eigentlich soweit wie gewohnt funktionieren. Einfach mal ein wenig damit spielen oder bei Unklarheiten im Thread nachfragen. Viel Spaß im ngb 2.0.

Whitelist restricted shell

alter_Bekannter

N.A.C.J.A.C.

Registriert
14 Juli 2013
Beiträge
4.823
Ort
Midgard
Gibts dafür keine offitzielle Lösung?

Gefunden habe ich nur:
https://raymii.org/s/software/bdsh.html


System ist ein Debian 8.
Der Nutzer soll außerhalb seiner /home überhaupt nichts dürfen. Ausführen dürfen soll er nur was in der Whitelist steht. Um das System quasi komplett selber ohne die hilfe von apt konfigurieren zu müssen, müssen aber letzlich doch einige Sachen publöic lesbar sein. Also muss ich den User möglichst effektiv in sein /home einsperren.
Sachen von anderen die er lesen darf mounte ich ihm einfach read only da rein.
 

sia

gesperrt

Registriert
26 März 2015
Beiträge
5.931
Ort
FFM (NSFW)
Genau, chroots funktionieren.

Wenn dir das nicht ausreicht, schau dir mal LXC an.
 

alter_Bekannter

N.A.C.J.A.C.

Registriert
14 Juli 2013
Beiträge
4.823
Ort
Midgard
  • Thread Starter Thread Starter
  • #4
Gibt es für den Prozess keine Möglichkeit da raus zu navigieren? Oder es zu beenden?

https://de.wikipedia.org/wiki/Chroot#Sicherheitsfeature_oder_nicht.3F

Ist das so zu verstehen das nur root da einfach wieder raus kann aber kein anderer Nutzer? In dem Fall würde es wohl reichen.


Ich begreif nicht wie chroot überhaupt ins Thema passt. Ich werde den Prozess in Frage ganz sicher nicht als root starten. Entweder sind die Informationen zu chroot widersprüchlich oder es passt nicht ins Thema. Je mehr ich darüber lese desto weniger denke ich das es hierfür geeignet ist.
 
Zuletzt bearbeitet:

drfuture

Zeitreisender
Teammitglied

Registriert
14 Juli 2013
Beiträge
8.748
Ort
in der Zukunft
den Source gibt es schon noch:

[src=c]/*
* chrlogin.c -- chroot login
* acts as login shell in /etc/passwd for a user who has to completely
* live in a chroot environment
*
* Harald Weidner <hweidner@gmx.net>
* First release: 1999-06-30
* Last update: 2002-09-01
*
* Installation:
* compile: gcc -Wall -O2 -s chrlogin.c -o chrlogin
* install: cp to /usr/local/sbin, chown root, chmod 4755
* create chroot directory (here: /home/chroot)
* create base file system under /home/chroot
* DISABLE all setuid root binaries under /home/chroot !!!
*
* Install a user:
* create a user using 'adduser'; set password with 'passwd'
* set /usr/local/sbin/chrlogin als login shell for that user in /etc/passwd
* create a user in the chroot-Environment
* (e.g. by filling out /home/chroot/etc/passwd and creating
* /home/chroot/home/<username> by hand; that user should have the same
* uid and gid as in /etc/passwd; login shell must be /bin/bash)
*
* This code is released under the terms of the GNU General Public
* License (GPL). THERE IS NO WARRANTY! USE AT YOUR OWN RISK!
* See http://www.fsf.org/licenses/gpl.html for the full text of the GPL.
*/


/* ----- Configuration parameters ---------------------------------------- */

/* shell for chroot'ed users */

#define SHELL "/bin/bash"

/* chroot directory level
* This parameter defines, how many subdirs, beginning from the
* root directory /, are treated as the root of the chroot environment.
* Example:
* with CHROOT_LEVEL of 2, /home/chroot/home/joe means:
* 0 1 2 3
* /home/chroot is the chroot base directory,
* /home/joe is the home directory within the chroot environment
*/
#define CHROOT_LEVEL 2

/* ----- End of configuration parameters --------------------------------- */



#include <stdio.h>
#include <unistd.h>
#include <stdlib.h>
#include <errno.h>
#include <string.h>
#include <pwd.h>
#include <sys/types.h>
#include <sys/stat.h>

#define MAX_STRING 1024


int main(int argc, char *argv[], char *envp[])
{
int real_user = getuid();
struct passwd *pw_ent = NULL;
struct stat stat_buf;
char *p;
int cnt;
char home_dir[MAX_STRING], shell[MAX_STRING], chroot_dir[MAX_STRING];


/* sanity checks */

if(geteuid() != 0) {
fprintf(stderr, "%s: This program needs to be setuid root.\n",
argv[0]);
exit(-1);
}

if(real_user == 0) {
fprintf(stderr, "%s: The target user must not be root.\n",
argv[0]);
exit(-1);
}


/* look up user in system's /etc/passwd */

if((pw_ent = getpwuid(real_user)) == NULL) {
fprintf(stderr, "%s: User #%d does not exit in /etc/passwd.\n",
argv[0], real_user);
exit(-1);
}


/* check home directory */

strncpy(chroot_dir, pw_ent->pw_dir, MAX_STRING - 1);
chroot_dir[MAX_STRING] = 0;

if(chroot_dir[0] != '/') {
fprintf(stderr, "%s: Home directory %s does not begin with '/'.\n",
argv[0], chroot_dir);
}

if(stat(chroot_dir, &stat_buf) != 0) {
fprintf(stderr, "%s: Home directory %s does not exist:\n%s\n",
argv[0], chroot_dir, strerror(errno));
}


/* extract chroot directory */

for(p = chroot_dir, cnt = -1 ; *p; p++) {
if(*p == '/')
cnt++;
if(cnt == CHROOT_LEVEL) {
*p = 0;
break;
}
}

if(cnt < CHROOT_LEVEL) {
fprintf(stderr, "%s: Home directory %s is too short to reach "
"chroot shell level %d.\n",
argv[0], chroot_dir, CHROOT_LEVEL);
exit(-1);
}


/* check existance of SHELL */

strncpy(shell, chroot_dir, MAX_STRING);
strncat(shell, SHELL, MAX_STRING - strlen(shell));

if(stat(shell, &stat_buf) != 0) {
fprintf(stderr, "%s: Could not access login shell %s:\n%s\n",
argv[0], shell, strerror(errno));
exit(-1);
}
if(!S_ISREG(stat_buf.st_mode)) {
fprintf(stderr, "%s: Login shell %s must be a regular file.\n",
argv[0], shell);
exit(-1);
}


/* enter chroot environment */

if(chdir(chroot_dir) != 0) {
fprintf(stderr,
"%s: Could not chdir() to new root directory %s:\n%s\n",
argv[0], chroot_dir, strerror(errno));
exit(-1);
}
if(chroot(chroot_dir) != 0) {
fprintf(stderr,
"%s: Could not chroot() to new root directory %s:\n%s\n",
argv[0], chroot_dir, strerror(errno));
exit(-1);
}
setuid(real_user);


/* look up user in chroot's /etc/passwd */

if((pw_ent = getpwuid(real_user)) == NULL) {
fprintf(stderr, "%s: Could not find user #%d in chroot's /etc/passwd.\n",
argv[0], real_user);
exit(-1);
}


/* change to users home directory */

if(chdir(pw_ent->pw_dir) != 0) {
fprintf(stderr,
"%s: Could not chdir to new home directory %s for user #%d:\n%s\n",
argv[0], pw_ent->pw_dir, real_user, strerror(errno));
exit(-1);
}


/* adapt command name */
argv[0] = pw_ent->pw_shell;


/* adapt HOME environment variable */
strcpy(home_dir, "HOME=");
strncat(home_dir, pw_ent->pw_dir, MAX_STRING - strlen(home_dir));
putenv(home_dir);

/* execute shell */
execve(SHELL, argv, envp);

return 0;
}[/src]

Oder das Toolkit hier:
https://olivier.sessink.nl/jailkit/index.html#intro

kommt vor allem auch darauf an wie dein User eigentlich zugreifen soll.
per ssh oder interaktiv am pc?
 

alter_Bekannter

N.A.C.J.A.C.

Registriert
14 Juli 2013
Beiträge
4.823
Ort
Midgard
  • Thread Starter Thread Starter
  • #8
Der user kann sich eigentlich garnicht einloggen, es geht mehr um dern fall das die Anwendung eine Lücke hat die irgendwem erlaubt was rein zu schmeissen.

Ich wiull das im Fall der Fälle ein Angreifer vor nichts als Lesezugriff auf ein Verzeichnis steht solange es keine Lücke zum erlangen von root rechten gibt.
 

sia

gesperrt

Registriert
26 März 2015
Beiträge
5.931
Ort
FFM (NSFW)
Der user kann sich eigentlich garnicht einloggen, es geht mehr um dern fall das die Anwendung eine Lücke hat die irgendwem erlaubt was rein zu schmeissen.

Also LXC oder Docker?

Oder Linux namespaces? Letzteres ließe sich via firejail umsetzen.

EDIT: Achja, da es sich um einen Server handelt, ist SELinux eigentlich auch angebracht. Lass dir bitte nicht alles aus der Nase ziehen.
 
Zuletzt bearbeitet:

alter_Bekannter

N.A.C.J.A.C.

Registriert
14 Juli 2013
Beiträge
4.823
Ort
Midgard
  • Thread Starter Thread Starter
  • #10
Das ganze soll am Ende noch bezahlbar sein.

Die Vorschläge sind gut gemeint, soviel wird der Abnehmer aber nicht zahlen. Also bitte keine Vorschläge die zur Erstkonfiguration mehr als 2 Tage brauchen wenn mans vorher noch nicht kannte.

In anderen Worten:
Nicht in den Paketquellen = 90% abgelehnt
 

sia

gesperrt

Registriert
26 März 2015
Beiträge
5.931
Ort
FFM (NSFW)
Firejail ist in vielen Paketquellen enthalten und auch sonst schnell zu kompilieren.

LXC und Docker sind in den meisten Paketquellen enthalten.

Was für ein obskures, veraltetes Linux setzt du denn ein? Ubuntu 7.04?
 

alter_Bekannter

N.A.C.J.A.C.

Registriert
14 Juli 2013
Beiträge
4.823
Ort
Midgard
  • Thread Starter Thread Starter
  • #12
Das System ist nicht das Problem Debian 8 siehe Startpost.

Okay, mein Fehler, bin wohl heute etwas zu entnervt, ich guck mir das morgen nochmal an.
 

sia

gesperrt

Registriert
26 März 2015
Beiträge
5.931
Ort
FFM (NSFW)
Und Debian 9 "Stretch" hat sowohl firejail als auch LXC, Docker und selbstverständlich auch nen 4.x-er Kernel, der die ganzen tollen neuen Features unterstützt.

Ich würde es mir wie gesagt mit Firejail einfach machen.
 
Oben