Ich muss ein Horrorszenario umsetzen...
-
- Posts: 9
- Joined: 2006-03-08 09:02
Ich muss ein Horrorszenario umsetzen...
Hallo,
also wie im Titel schon steht, habe ich die Aufgabe in etwa 3-4 Monaten ein echtes Horrorszenario umzusetzen. Es ist zwar noch ne weile hin, aber Gedanken sollte ich mir schon jetzt machen.
Geht um folgendes:
Auf einem Server (der vermutlich in der ersten Phase gleichzeitig als Webserver dient) sollen ssh-zugänge für kunden eingelegt werden.
geschätzte 1000 Stück für jeweils 24 Stunden, also immer fliegender Wechsel.
Die Kunden sollen also nach dem Login Ihre eigene Umgebung betreten und in dieser Umgebung benötigen die Kunden root-rechte (nein, das ist kein witz).
So jetzt frage ich mich, wie gehe ich hier am besten vor.
chroot ist gut, aber nicht gut genug.
eventuell wollte ich auch in den agb's verankern, das die chroot in einem Screen erfolgt und wir uns als betreiber vorbehalten stichprobenartig in so eine session reinzuschalten.
Desweiteren muss ich mich auch vor einem problem schützen:
Den Usern stehen aus technischen gründen Tools wie nmap und konsorten zur verfügung, sprich wir müssen uns gegen Mißbrauch schützen.
Hier habe ich eventuell daran gedacht, den Inetverkehr zu unterbinden, da die Kunden aber auch daten aus dem Netz dort raufbugsieren sollen bin ich mir da nicht ganz sicher.
Tja, ihr seht das ist ziemlich Komplex.
Vielleicht habt Ihr Ideen oder Anregungen für mich, würde mich freuen!
MfG,
ady1980
also wie im Titel schon steht, habe ich die Aufgabe in etwa 3-4 Monaten ein echtes Horrorszenario umzusetzen. Es ist zwar noch ne weile hin, aber Gedanken sollte ich mir schon jetzt machen.
Geht um folgendes:
Auf einem Server (der vermutlich in der ersten Phase gleichzeitig als Webserver dient) sollen ssh-zugänge für kunden eingelegt werden.
geschätzte 1000 Stück für jeweils 24 Stunden, also immer fliegender Wechsel.
Die Kunden sollen also nach dem Login Ihre eigene Umgebung betreten und in dieser Umgebung benötigen die Kunden root-rechte (nein, das ist kein witz).
So jetzt frage ich mich, wie gehe ich hier am besten vor.
chroot ist gut, aber nicht gut genug.
eventuell wollte ich auch in den agb's verankern, das die chroot in einem Screen erfolgt und wir uns als betreiber vorbehalten stichprobenartig in so eine session reinzuschalten.
Desweiteren muss ich mich auch vor einem problem schützen:
Den Usern stehen aus technischen gründen Tools wie nmap und konsorten zur verfügung, sprich wir müssen uns gegen Mißbrauch schützen.
Hier habe ich eventuell daran gedacht, den Inetverkehr zu unterbinden, da die Kunden aber auch daten aus dem Netz dort raufbugsieren sollen bin ich mir da nicht ganz sicher.
Tja, ihr seht das ist ziemlich Komplex.
Vielleicht habt Ihr Ideen oder Anregungen für mich, würde mich freuen!
MfG,
ady1980
-
- Posts: 415
- Joined: 2005-03-04 14:45
- Location: Paris
Re: Ich muss ein Horrorszenario umsetzen...
Kannst du die Hintergründe etwas näher erläutern, denn so wirkt das eigenartig und wir können dir dann auch besser helfen.
-
- Posts: 9
- Joined: 2006-03-08 09:02
Re: Ich muss ein Horrorszenario umsetzen...
Das ganze sieht etwa so aus:
- Es wird ein user angelegt (user1)
- Im /home von user1 wird chroot-verzeichnis angelegt
- Dieses wird mit einem kompletten Linuxsystem befüllt
- Der User kann dann an diesem System herumkonfigurieren, Programme installieren, etc...
- Das Ergebnis wird dann von uns weiterverarbeitet.
Mehr zum Thema wozu machen wir das, darf ich leider nicht verraten :-(
- Es wird ein user angelegt (user1)
- Im /home von user1 wird chroot-verzeichnis angelegt
- Dieses wird mit einem kompletten Linuxsystem befüllt
- Der User kann dann an diesem System herumkonfigurieren, Programme installieren, etc...
- Das Ergebnis wird dann von uns weiterverarbeitet.
Mehr zum Thema wozu machen wir das, darf ich leider nicht verraten :-(
-
- Posts: 923
- Joined: 2003-08-20 11:30
- Location: Pittsburgh, PA, USA
Re: Ich muss ein Horrorszenario umsetzen...
Wofür brauchen die da root Rechte? Ich sehe den Hintergrund nicht ganz. Außer du willst virtuelle Rechner laufen lassen aber dann haben sie die root Rechte ja auf den virtuellen Maschinen. In ihrem chroot brauchen sie doch keine root Rechte. Einfach alle Dateien die in einem Standard System root gehören einem dedizierten Benutzer geben und diesen Benutzer in alles Gruppen des virtuellen Systems stecken und gut ist. Wenn du das System danach wieder weiterverarbeitest, musst du nur das Ownership wieder entsprechend ändern. Das hat auch gleich den Vorteil, dass sie z.B. keine Dienste an priviligierte Ports binden können, etc.
Wenn das nicht geht, dann musst du halt nochmal genauer erklären, wieso das nicht geht.
[EDIT]
Achja aber 1000 chroot mit einem kompletten Linux System wird schon rein vom Speicherplatz ger eng auf einer Maschine IMHO.
Wenn das nicht geht, dann musst du halt nochmal genauer erklären, wieso das nicht geht.
[EDIT]
Achja aber 1000 chroot mit einem kompletten Linux System wird schon rein vom Speicherplatz ger eng auf einer Maschine IMHO.
-
- Posts: 9
- Joined: 2006-03-08 09:02
Re: Ich muss ein Horrorszenario umsetzen...
hi,
nun die user haben die möglichkeit in diesem system Programme nachzuinstallieren, diese werden dann logischerweise vermutlich mit der uid 0 angelegt.
ansonsten ist die idee, die ownership zu ändern schonmal nen guter ansatz!
nun die user haben die möglichkeit in diesem system Programme nachzuinstallieren, diese werden dann logischerweise vermutlich mit der uid 0 angelegt.
ansonsten ist die idee, die ownership zu ändern schonmal nen guter ansatz!
-
- Project Manager
- Posts: 11183
- Joined: 2003-02-27 01:00
- Location: Hamburg
Re: Ich muss ein Horrorszenario umsetzen...
Ich würde dafür UML oder QEMU und aus Platzgründen ein Embeddedsystem als "Gastsystem" verwenden.
PayPal.Me/JoeUser ● FreeBSD Remote Installation
Wings for Life ● Wings for Life World Run
„If there’s more than one possible outcome of a job or task, and one
of those outcomes will result in disaster or an undesirable consequence,
then somebody will do it that way.“ -- Edward Aloysius Murphy Jr.
Wings for Life ● Wings for Life World Run
„If there’s more than one possible outcome of a job or task, and one
of those outcomes will result in disaster or an undesirable consequence,
then somebody will do it that way.“ -- Edward Aloysius Murphy Jr.
-
- Posts: 923
- Joined: 2003-08-20 11:30
- Location: Pittsburgh, PA, USA
Re: Ich muss ein Horrorszenario umsetzen...
Ne das wird dann nicht funktionieren, wenn die Nutzer dafür auf die Platform Tools wie apt, YaST oder auch nur dpkg oder rpm zurückgreifen sollen.
Aber ich denke es wäre durchaus sinnvoll, noch ein paar weitere Infos rauszurücken. So wie ich das sehe soll das irgendetwas in der Richtung sein, dass ein Kunde einen Server/Rechner konfigurieren kann, den ihr danach auf eine reelle Maschine packt, oder? Da wäre es vielleicht einfacher, ein High-Level Tool zu schreiben, dass nur die Konfiguration und die Auswahl der Packete/Dienste machen lässt und welche ihr danach entsprechend in ein reelles System übersetzt. Aber vielleicht irre ich ja auch komplett was den Verwendungszweck angeht.
Aber ich denke es wäre durchaus sinnvoll, noch ein paar weitere Infos rauszurücken. So wie ich das sehe soll das irgendetwas in der Richtung sein, dass ein Kunde einen Server/Rechner konfigurieren kann, den ihr danach auf eine reelle Maschine packt, oder? Da wäre es vielleicht einfacher, ein High-Level Tool zu schreiben, dass nur die Konfiguration und die Auswahl der Packete/Dienste machen lässt und welche ihr danach entsprechend in ein reelles System übersetzt. Aber vielleicht irre ich ja auch komplett was den Verwendungszweck angeht.
-
- Posts: 923
- Joined: 2003-08-20 11:30
- Location: Pittsburgh, PA, USA
Re: Ich muss ein Horrorszenario umsetzen...
1000 UML Instanzen auf einer Maschine? Das halte ich für absolut nicht machbar. Ich glaube nicht, dass man UML so skalieren kann.Joe User wrote:Ich würde dafür UML oder QEMU und aus Platzgründen ein Embeddedsystem als "Gastsystem" verwenden.
-
- Posts: 9
- Joined: 2006-03-08 09:02
Re: Ich muss ein Horrorszenario umsetzen...
Nun, ein HighLevel Tool wird es auch geben in gewisserweise.
Dieser Zugang soll für Kunden sein, die wirklich kontrolle haben wollen über Ihre Umgebung.
Im prinzip sollen, die User sich bewegen können, wie als wenn Sie z.B. Gentoo in einer chroot bauen.
Das System mit UML bin ich mir nicht sicher, denn wir haben ja nur eine IP-Adresse.
Dann müssten wir ja auch entsprechend 1000 ssh-daemons an unterschielichen Ports am laufen haben bzw. auf jeder Maschine einen, aber das routen in iptables ist unpraktikabel.
Oder hab ich hier falschen Denkansatz?
Dieser Zugang soll für Kunden sein, die wirklich kontrolle haben wollen über Ihre Umgebung.
Im prinzip sollen, die User sich bewegen können, wie als wenn Sie z.B. Gentoo in einer chroot bauen.
Das System mit UML bin ich mir nicht sicher, denn wir haben ja nur eine IP-Adresse.
Dann müssten wir ja auch entsprechend 1000 ssh-daemons an unterschielichen Ports am laufen haben bzw. auf jeder Maschine einen, aber das routen in iptables ist unpraktikabel.
Oder hab ich hier falschen Denkansatz?
-
- Posts: 1117
- Joined: 2002-09-27 00:54
- Location: Hannover
Re: Ich muss ein Horrorszenario umsetzen...
Für jeden Benutzer einen normalen Account anlegen. Keine Root Rechte vergeben! Eine Chrootumgebung für den Benutzer erstellen und alle Dateien auf diesen Benuter setzen.
Beispiel
Einige Dinge werden evtl. nicht funktionieren (z.B. das Mounten von Loop Devices ins Dateisystem) aber das muss ja auch nicht unbedingt.
Beispiel
Code: Select all
useradd test001 && mkdir /home/test001
create_chroot /home/test001
chown test001.users /home/test001
mount /proc /home/test001/proc
einloggen lassen
umount /home/test001/proc
rm -r /home/test001
userdel test001
-
- Posts: 9
- Joined: 2006-03-08 09:02
Re: Ich muss ein Horrorszenario umsetzen...
Ja, das als solches klingt ganz gut, nur werden die User eigene Programme mithilfe des jeweiligen Paketsystems der Distri installieren, dieser werden dann inho auch mit root-rechten versehen, so es für configs, etc... denn nötig ist.Alexander Newald wrote:Für jeden Benutzer einen normalen Account anlegen. Keine Root Rechte vergeben! Eine Chrootumgebung für den Benutzer erstellen und alle Dateien auf diesen Benuter setzen.
Beispiel
Einige Dinge werden evtl. nicht funktionieren (z.B. das Mounten von Loop Devices ins Dateisystem) aber das muss ja auch nicht unbedingt.Code: Select all
useradd test001 && mkdir /home/test001 create_chroot /home/test001 chown test001.users /home/test001 mount /proc /home/test001/proc einloggen lassen umount /home/test001/proc rm -r /home/test001 userdel test001
Deshlab ist diese Vorschlag eher ungeeignet für dieses Szenario.
-
- Project Manager
- Posts: 11183
- Joined: 2003-02-27 01:00
- Location: Hamburg
Re: Ich muss ein Horrorszenario umsetzen...
Wenn die User root-Rechte bekommen sollen, musst Du für jeden User ein virtuelles System bereitstellen. Jedes dieser virtuellen Systeme benötigt eine Mindestmenge an Festplattenplatz und RAM. Wenn wir mal 100MB HDD und 8MB RAM pro virtuellem (Embedded-)System veranschlagen, macht das bei 1000 Usern: 100GB HDD und 8GB RAM. Das ist noch problemlos machbar, spätestens beim doppelten RAM-Bedarf der User ist mit "normaler PC-Hardware" Feierabend. Wenn Dir keine entsprechende Hardware zur Verfügung steht, ist das Projekt gestorben...
Zum Thema IP-Adressen: Da Du lediglich SSH anbieten willst, kannst Du das Host-System als SSH-Consolen-Server nutzen und leitest die Verbindungen an die virtuellen Systeme (10.0.0.0/8) weiter.
Zum Thema IP-Adressen: Da Du lediglich SSH anbieten willst, kannst Du das Host-System als SSH-Consolen-Server nutzen und leitest die Verbindungen an die virtuellen Systeme (10.0.0.0/8) weiter.
PayPal.Me/JoeUser ● FreeBSD Remote Installation
Wings for Life ● Wings for Life World Run
„If there’s more than one possible outcome of a job or task, and one
of those outcomes will result in disaster or an undesirable consequence,
then somebody will do it that way.“ -- Edward Aloysius Murphy Jr.
Wings for Life ● Wings for Life World Run
„If there’s more than one possible outcome of a job or task, and one
of those outcomes will result in disaster or an undesirable consequence,
then somebody will do it that way.“ -- Edward Aloysius Murphy Jr.
-
- Posts: 9
- Joined: 2006-03-08 09:02
Re: Ich muss ein Horrorszenario umsetzen...
Joa das wir fette Hardware hinstellen müssen haben wir schon Zähneknirschend festgestellt.
Wenn man das ganze noch auf RAID und auf eine redundanz der Maschine selbst ummünzt...
Achja, wir brauchen nicht 100MB pro User, wir brauchen geschätzt 1,4 GB pro Kopf *g*
Wenn man das ganze noch auf RAID und auf eine redundanz der Maschine selbst ummünzt...
Achja, wir brauchen nicht 100MB pro User, wir brauchen geschätzt 1,4 GB pro Kopf *g*
-
- Posts: 16
- Joined: 2006-03-01 20:24
- Location: /home/ec
Re: Ich muss ein Horrorszenario umsetzen...
was soll das denn bitte alles sein, wenn du 1,4 gb pro user brauchst?
ansonsten ist das doch simpel:
1000 * 1,4gb = 1400gb = 1,4tb
musst dir halt nen paar platten mehr kaufen 8)
ansonsten ist das doch simpel:
1000 * 1,4gb = 1400gb = 1,4tb
musst dir halt nen paar platten mehr kaufen 8)
-
- Posts: 1117
- Joined: 2002-09-27 00:54
- Location: Hannover
Re: Ich muss ein Horrorszenario umsetzen...
Nein, da ja alle Dateien die Rechte des eingeloggten Benutzers haben, sind keine Root Rechte nötig (Und sollten es auch nicht sein, denn hat man ein Programm mit root Rechten und kann das als root ausführen, kommt man auch aus der chroot Umgebung raus...)ady1980 wrote:Ja, das als solches klingt ganz gut, nur werden die User eigene Programme mithilfe des jeweiligen Paketsystems der Distri installieren, dieser werden dann inho auch mit root-rechten versehen, so es für configs, etc... denn nötig ist.
Deshlab ist diese Vorschlag eher ungeeignet für dieses Szenario.
Probiers doch einfach mal aus:
Kleines SuSE (von mir aus) System installieren, mkdir /chroot/user0001
cp -a /usr /sbin ... /chroot/user0001 (Für ... alles ausser /proc und /chroot angeben)
mkdir /chroot/user0001/proc
chown user0001.users /chroot/user0001 -R
mount /proc -t proc /chroot/user0001/proc
su - chroot0001
chroot /chroot/user0001
Irgendwie so in der Richtung...
-
- Posts: 1117
- Joined: 2002-09-27 00:54
- Location: Hannover
Re: Ich muss ein Horrorszenario umsetzen...
Ach ja, man sollte noch /etc/passwd, /etc/shadow und /etc/fstab anpassen und dort zumindest den user root und die Partitionen komplett rausnehmen.
-
- Posts: 9
- Joined: 2006-03-08 09:02
Re: Ich muss ein Horrorszenario umsetzen...
Alexander Newald wrote: Probiers doch einfach mal aus:
Kleines SuSE (von mir aus) System installieren, mkdir /chroot/user0001
cp -a /usr /sbin ... /chroot/user0001 (Für ... alles ausser /proc und /chroot angeben)
mkdir /chroot/user0001/proc
chown user0001.users /chroot/user0001 -R
mount /proc -t proc /chroot/user0001/proc
su - chroot0001
chroot /chroot/user0001
Irgendwie so in der Richtung...
Hmmmm, ja aber wenn ich das nun so mache und bin dann in meiner "entrooteten" umgebung und mache meinetwegen apt-get install apache2
dann wird es programme geben, wo apt dann root-rechte über die daten bügelt, was dann bedeuten müsste, das der kune diese nicht mehr modifizieren kann.
oder irre ich mich da?
-
- Posts: 1117
- Joined: 2002-09-27 00:54
- Location: Hannover
Re: Ich muss ein Horrorszenario umsetzen...
ich würde jetzt sagen nein, da der normale Benutzer ja keine root Rechte vergeben kann. Das musste aber wohl einmal ausprobieren.
-
- Posts: 923
- Joined: 2003-08-20 11:30
- Location: Pittsburgh, PA, USA
Re: Ich muss ein Horrorszenario umsetzen...
Ich wäre etwas skeptisch, dass apt/dpkg so einfach und sauber als nicht-root läuft. apt-get versucht ja z.T. auch Dienste neu zu starten und das wird auf jeden Fall fehlschlagen, wenn der Nutzer keine root-Rechte hat. Also ich bin etwas sehr skeptisch was dieses Szenario angeht, aber man kann es ja mal testen.
-
- Posts: 1117
- Joined: 2002-09-27 00:54
- Location: Hannover
Re: Ich muss ein Horrorszenario umsetzen...
Dienste neu starten bringt sowieso nichts, denn wenn einer z.B. apache startet, können es alle anderen nicht mehr, ausser jeder Benutzer bekommt eine eigene IP. Und dann wären wir wieder bei vserver (uml, xen, ...) Wobei da auch noch das Problem bleibt, wie man die begrenzte Anzahl von öffentlichen IPs auf die privaten IPs umsetzt
-
- Posts: 923
- Joined: 2003-08-20 11:30
- Location: Pittsburgh, PA, USA
Re: Ich muss ein Horrorszenario umsetzen...
Stimmt. Naja mir erschließt sich die Notwenigkeit dieser exterm vielen eigenen Installationen ja sowieso immer noch nicht.
-
- Posts: 1117
- Joined: 2002-09-27 00:54
- Location: Hannover
Re: Ich muss ein Horrorszenario umsetzen...
Wenn ich mich richtig errinnere kann uml übrigens mit einer Datei ein FS System verwenden und dann für alle Instancen (ich sage jetzt mal vServer) nur die Änderungen speichern. Das würde zumindest schon mal helfen Festplattenspeicher zu sparen.
Aber 1000 shell User gleichzeitig auf einem System - Ob das dann immer noch performant läuft?
Bei der chroot Umgebung wäre auch noch zu klähren, ob das System mit der reinen Anzahl von Prozessen überhaupt klar kommt. Sagen wir mal 70 pro vServer mach bei 1000 Usern 70.000 Prozesse. Bei mir ist auf eine Testserver bei ca 2450 laufenden Prozessen Schluss
Aber 1000 shell User gleichzeitig auf einem System - Ob das dann immer noch performant läuft?
Bei der chroot Umgebung wäre auch noch zu klähren, ob das System mit der reinen Anzahl von Prozessen überhaupt klar kommt. Sagen wir mal 70 pro vServer mach bei 1000 Usern 70.000 Prozesse. Bei mir ist auf eine Testserver bei ca 2450 laufenden Prozessen Schluss
-
- Project Manager
- Posts: 11183
- Joined: 2003-02-27 01:00
- Location: Hamburg
Re: Ich muss ein Horrorszenario umsetzen...
Ich bezweifle mal, dass Du ein System mit >= Quad-CPU/16GB RAM zur Verfügung hast ;)Alexander Newald wrote:Bei mir ist auf eine Testserver bei ca 2450 laufenden Prozessen Schluss
PayPal.Me/JoeUser ● FreeBSD Remote Installation
Wings for Life ● Wings for Life World Run
„If there’s more than one possible outcome of a job or task, and one
of those outcomes will result in disaster or an undesirable consequence,
then somebody will do it that way.“ -- Edward Aloysius Murphy Jr.
Wings for Life ● Wings for Life World Run
„If there’s more than one possible outcome of a job or task, and one
of those outcomes will result in disaster or an undesirable consequence,
then somebody will do it that way.“ -- Edward Aloysius Murphy Jr.
-
- Posts: 1117
- Joined: 2002-09-27 00:54
- Location: Hannover
Re: Ich muss ein Horrorszenario umsetzen...
Nicht so direkt (und indirekt auch nicht) :lol:
Aber es kommt dabei auch nicht so sehr auf den Speicherplatz, sondern auf die Anzahl an sich an. Einträge in der Prozesstabelle, Offene Dateien etc..
Aber es kommt dabei auch nicht so sehr auf den Speicherplatz, sondern auf die Anzahl an sich an. Einträge in der Prozesstabelle, Offene Dateien etc..
-
- Posts: 9
- Joined: 2006-03-08 09:02
Re: Ich muss ein Horrorszenario umsetzen...
Hallo,
Danke erstmal schonmal für die vielen Antworten!
Nun, bei den 1000 Usern, denen 24 Stunden zugang gewährt werden soll, muss ich noch erwähnen, das wir einkalkulieren können, müssen das im günstigsten Fall nicht alle aufeinmal auf der Maschine sein werden und der durchschnittskunde sich dann vielleicht 2 Stunden auf dieser Maschine aufhält.
Es geht halt was die performance angeht darum, das jdem dieser 1000, seine "Maschine" zur verfügung stehen muss, wenn er dann seine 24 Stunden nutzen möchte.
Ich vermute, das sich die 1000 über die 24 Stunden verteilen werden, so das vielleicht immer um die 300-400 wirklich zur gleichen Zeit auf der Maschine sind.
Wenn man dann sagt, ok, wir fahren eine UML erst hoch, wenn der User sich Anmeldet, dann müsste ich mir gedanken machen, wie man das lösen kann.
Im Idealfall können wir den Traffic auf mehrere Maschinen verteilen, da aber momentan das Geld fehlt, wird es wohl zunächst eine Maschine werden.
Danke erstmal schonmal für die vielen Antworten!
Nun, bei den 1000 Usern, denen 24 Stunden zugang gewährt werden soll, muss ich noch erwähnen, das wir einkalkulieren können, müssen das im günstigsten Fall nicht alle aufeinmal auf der Maschine sein werden und der durchschnittskunde sich dann vielleicht 2 Stunden auf dieser Maschine aufhält.
Es geht halt was die performance angeht darum, das jdem dieser 1000, seine "Maschine" zur verfügung stehen muss, wenn er dann seine 24 Stunden nutzen möchte.
Ich vermute, das sich die 1000 über die 24 Stunden verteilen werden, so das vielleicht immer um die 300-400 wirklich zur gleichen Zeit auf der Maschine sind.
Wenn man dann sagt, ok, wir fahren eine UML erst hoch, wenn der User sich Anmeldet, dann müsste ich mir gedanken machen, wie man das lösen kann.
Im Idealfall können wir den Traffic auf mehrere Maschinen verteilen, da aber momentan das Geld fehlt, wird es wohl zunächst eine Maschine werden.