Brauche Hilfe in Sachen Usermanagement/Sicherheit

Alles rund um Linux und MAC -Probleme sowie - Fragen hier rein.
Antworten
bayowar
Mitglied
Mitglied
Beiträge: 30
Registriert: Sa 22. Mai 2004, 19:30
Kontaktdaten:

Brauche Hilfe in Sachen Usermanagement/Sicherheit

Beitrag von bayowar »

Tach, ich bins mal wieder.

Diesmal mit einem ziemlich großen und dringenden Problem - hoffentlich
kann mir trotzdem jemand helfen.

Ich bin Mitarbeiter in einem Team aus Website-Erstellern, sprich Codern
und Designern, welches in der Vergangenheit einige gut besuchte Websites
erschaffen hat.

Im Zuge dieser Erfolge haben wir uns nun einen Rootserver besorgt,
nach reichlich Absprache und Vorbereitung.
Mit den kleineren Problemchen, die mir mit den darauf laufenden
Gameservern untergekommen sind, hab ich ja schon einige hier
konfrontiert.

Das Problem ist nun, dass unser Linux-Beauftragter verschwunden ist - das
letzte Lebenszeichen war die anfällige Geldüberweisung.
Schätzungsweise hat er Probleme mit seinem Internetzugang - Austausch
von Telefonnummern haben wir unglücklicherweise verschlafen.

Wir suchen nun wirklich dringend jemanden, der uns beim Usermanagement
und in Sachen Sicherheit unter die Arme greifen kann - wir kriegen das mit
unsreren eher schmalen Linux-Kenntinssen einfach nicht zustande.
Es handelt sich wie gesagt um einen Debian-Rootserver, welcher die
rudimentärsten Sachen bereits vorinstalliert hat.

Der geschätzte Aufwand beläuft sich bei Könnern wohl auf weniger als 1
Stunde - etwas mehr, wenn ihr noch einem aus unserem Team die
rudimentärsten Benutzungsregeln in Sachen Usererstellung und -verwaltung
erklärt.

Gegenleistungen können wir selbstverständlich bringen, wie die aussehen
hängt von euren Vorstellungen ab.


Das Ganze ist deswegen so dringend, weil wir viele Website-Projekte
haben, die unter wirklich hohem Zeitdruck stehen und nich starten
können, weil das nötige Know-How beim Server-Setup fehlt.

Ich habe hier bewusst keine Namen und Links gesetzt, damit dieser Thread
nicht als Werbung oder Wichtigtuerei missverstanden wird - auf
Wunsch rück ich natürlich damit raus.

Einige werden sich vllt noch fragen, warum ich ausgerechnet in dieses
Forum schreibe - mir wurde hier schon häufig von durchaus kompetenten
Leuten geholfen die auch immer nett blieben. Das unterscheidet dieses
Forum von diversen Linuxboards.


In diesem Sinne.
Benutzeravatar
WoodSTokk
Helpdesk
Helpdesk
Beiträge: 2634
Registriert: Fr 6. Dez 2002, 03:09
Wohnort: Wien/Österreich/Europa/Erde
Alter: 53

Beitrag von WoodSTokk »

Hi bayowar
... mir wurde hier schon häufig von durchaus kompetenten
Leuten geholfen die auch immer nett blieben. Das unterscheidet dieses
Forum von diversen Linuxboards.
Danke für das Kompliment. Ich suche selbst auch manchmal Rat in Foren und sah schon öfters solche netten(!) Postings die du ansprichst.

Back To Topic

Ich administriere auch einige Root-Server (Debian 3.0 Woody) unter anderem mit Apache, PHP und MySQL.

Für den Shellzugriff von Windows aus kann ich dir PuTTY sehr empfehlen.

In der Shell (unter Debian) kannst du fehlende Pakete ganz einfach mit 'apt-get <paketname>' nachinstallieren.

Den Midnight Commander ('mc') kann ich dir zur Datenverwaltung auch empfehlen. Er ist stark an den legendären Norton Commander angelehnt.
Sollte er noch nicht installiert sein (Shell --> mc) kannst du ihn mit 'apt-get mc' installieren.

Der Apache (HTTP-Server) ist vermutlich schon installiert. Die Config-Datei des Indianers findest du unter '/etc/apache/httpd.conf'.
Die meisten (wenn nicht sogar alle) Einstellungen sind gut in der Config-Datei selbst Dokumentiert.
Sollte Apache noch nicht installiert sein hilft ein 'apt-get apache'
Wenn auch Perl unterstützt werden soll kommt noch 'apt-get apache-perl' und für SSL-Unterstützung 'apt-get apache-ssl' hinzu.

Um MySQL zu installieren reicht ein 'apt-get mysql-server'.

PHP4 besteht aus mehreren Paketen die nicht alle installiert sein müssen. Das Grundpaket installierst du mit 'apt-get php4'. Für die CGI-Uterstützung 'apt-get php4-cgi' und für die Zusammenarbeit mit MySQL 'apt-get php4-mysql'. Die Config-Datei von PHP4 findest du unter '/etc/php4/apache/php.ini'.

Up-To-Date halte ich meinen Server mit 'apt-get update' und anschliesend mit 'apt-get upgrade'. Das mach ich 1 bis 2 mal im Monat und kann auch automatisiert werden.

Grundsätzlich wird bei der Instalation vom Apache eine Gruppe 'www-data' angelegt. Auf meinem Server verwaltet der Apache 2 Sites für die ich jeweils einen eigenen Benutzer angelegt habe.
Neue User kannst du mit 'useradd <newuser>' anlegen.
Als Root kannst du Dateien auch anderen Usern mit 'chown <owner>:<group> <file>' übertragen.
Mit der Option '-R' kannst du das auch rekursive (dieses Verzeichnis und alle Verzeichnisse und Dateien darunter) durchführen --> 'chown -R <owner>:<group> <dir>'.

Achtung: Das 'R' muss gross geschrieben werden. Linux unterscheidet zwischen Gross- und Kleinschreibung.

Zu allen Befehlen erhältst du Hilfe mit 'man <command>' ('man' = Manual).

Solltest du weitere Hilfe benötigen (keine HTML/PHP/MySQL, da bin ich DAU :shock: ), kannst du mir eine PM schicken oder wir treffen uns im IRC (Netz: QuakeNET , Channel: #wolfenstein-city).
Wäre ja gelacht wenn wir das nicht zum laufen bringen ;)

Auf der Debian-Site findest du mit der Paketsuche sämtliche Pakete mit Beschreibung.

Damit 'apt-get' immer die neuesten Pakete direkt von Debian installiert, musst du die Datei '/etc/apt/sources.list' anpassen.
Bei mir steht folgendes drin:

--- schnipp ---
deb ftp://ftp.us.debian.org/debian/ stable main non-free contrib
deb-src ftp://ftp.us.debian.org/debian/ stable main non-free contrib
deb http://non-us.debian.org/debian-non-US stable/non-US main contrib non-free
deb-src http://non-us.debian.org/debian-non-US stable/non-US main contrib non-free

deb http://security.debian.org/ stable/updates main contrib non-free
--- schnapp ---

Danach brauchst du die Debian-CD's nicht mehr zum Paket installieren. 8)

mfG WoodSTokk
Du scheisst es nicht zu wetzen
Testserver: @peStable (95.129.206.243:27960)
bayowar
Mitglied
Mitglied
Beiträge: 30
Registriert: Sa 22. Mai 2004, 19:30
Kontaktdaten:

Beitrag von bayowar »

OK, ich sehe ich muss genauer werden:

Wir haben bereits MySQL, PHP5 und selbstverständlich Apache installiert,
ich bin mittlerweile auch gut mit den Grundsätzen Von Shell und seinen
Befehlen vertraut.

Das Problem ist im wesentlichen, dass wir durch verschiedene
Benutzergruppen und eine möglichst intelligente Benutzerverwaltung
Gameserver, FTP, Webserver und weitere Dinge voneinander abgrenzen
wollen.

Leider haben wir keinerlei Überblick mehr, was wir wo verändern müssen
um Beispielsweise einem Benutzer XY alle Rechte im FTP zu geben, ohne
dass auf den restlichen Server zugreifen oder Programme ausführen kann.

Ich habe schon mit jailen experimentiert aber keinen Erfolg gehabt.

Wie gesagt, Webserver steht und läuft einwandfrei, Gameserver auch,
aber die Benutzerverwaltung is katastrophal, was uns z.B. beim FTP-Zugriff
die Hände bindet.
Benutzeravatar
Master Mayhem
Helpdesk
Helpdesk
Beiträge: 1395
Registriert: Sa 28. Jun 2003, 13:36
Wohnort: Castle Wolfenstein
Alter: 90
Kontaktdaten:

Beitrag von Master Mayhem »

ich kann selber nur linux grundlagen, treffe aber häufiger mal auf programmierer, systemadmins und sicherheitsexperten und vor allem der sicherheitsexperte sagt, dass er linux systeme einerseits hasst, weil er tage braucht um ein system zu durchschauen, weil man soviel individuell einstellen kann und lang nicht für alles eine standartlösung existiert andererseits gibts mehr geld umsolänger er arbeitet....

Was ich damit sagen will ist: Wenn derjenige, der bisher das system administriert hat keinerlei dokumentation angelegt hast, ist das viiieeel arbeit zu verstehen ,was der da so gemacht hat selbst wenn du alle pws hast - bei nem verschwundenen admin ist die kacke am dampfen so zu sagen

Sorry wenn ich dir wenig mut mache......jeder, egal wie gut er sich mit linux auskennt wird tage gebrauchen da durchzusteigen, weil er eben nicht den admin kennt, der alles auf seine art gelöst hat.....daher sucht euch ne firma die proffessionell im linux support arbeitet, aber das wird teuer, weil die für eine stunde mindestens 90€ nehmen.....

mfg tyler
Bild

Bild

Wer Rechtschreipfähler findet, darf diese NICHT behalten, die gehören mir!

He was killed serving Project Mayhem, sir!
ciTy][Tyler

Ich bin /ruth, ich darf das!
bayowar
Mitglied
Mitglied
Beiträge: 30
Registriert: Sa 22. Mai 2004, 19:30
Kontaktdaten:

Beitrag von bayowar »

Nun, bei uns muss nichts erhalten bleiben - man kann theoretisch alle
User einstampfen und von vorne beginnen, was dann nicht sonderlich
aufwendig werden sollte, da der Server noch ziemlich jungfräulich ist.
Benutzeravatar
WoodSTokk
Helpdesk
Helpdesk
Beiträge: 2634
Registriert: Fr 6. Dez 2002, 03:09
Wohnort: Wien/Österreich/Europa/Erde
Alter: 53

Beitrag von WoodSTokk »

Die User die das System kennt stehen in der Datei '/etc/passwd' .
Jede Zeile in der 'passwd' beschreibt einen User und hat 7 Teile die durch Doppelpunkte getrennt sind.

1. Teil = Username
2. Teil = Passwort
Das war früher hier verschlüsselt gespeichert. Heute wird es in die Datei '/etc/shadow' verschlüsselt ausgelagert die nur 'root' einsehen kann.
Das 'x' dient hier nur noch als Platzhalter.
3. Teil = User-ID (Diese ID ist einmalig auf dem gesamten Host)
4. Teil = Primary Group-ID (Der User ist grundsätzlich Mitglied dieser Gruppe)
5. Teil = Info (da kann alles mögliche drin stehen wie TelNr, Adresse, Voller Name, etc.... , für Linux selbst unwichtig)
6. Teil = Home-Verzeichnis
7. Teil = die Shell in die sich der User einlogen kann

Beispiel --> WoodSTokk:x:2003:200::/ftp/woodstokk:/bin/bash

Für die Gruppen gibt es ebenfalls eine eigene Datei '/etc/group' die so ähnlich aufgebaut ist. Nur das diesmal die Gruppen beim Namen genannt werden.

1. Teil = Groupname
2. Teil = Grouppassword (ebenfalls ausgelagert nach '/etc/gshadow')
3. Teil = Group-ID
4. Teil = Userliste (mit Komma separiert) von Usern die ebenfalls Mitglied dieser Gruppe sind aber eine andere Primär-Gruppe haben

Beispiel --> ftpusers:x:200:

Die 2 Beispiele zeigen dir daß der User 'WoodSTokk' der primären Gruppe mit der ID 200 angehört und diese Gruppe 'ftpusers' heisst. Das Home-Verzeichnis ist '/ftp/woodstokk'.
Wenn es sich um einen FTP-Zugang handeln soll um seine Site zu bearbeiten, muss nur das Home-Verzeichnis ins Verzeichnis der Site gelegt werden.

Apache --> /var/www/site1/HTML-Dateien
passwd --> WoodSTokk:x:2003:200::/var/www/site1:/bin/false

In diesem Beispiel hab ich die Shell auf '/bin/false' gelegt damit der User keinen Shell-Zugriff hat sondern nur FTP.

Ich verwende als FTP-Server den WU-FTP bei dem ich in der Config angegeben habe, daß anonyme User sich nicht einlogen dürfen und bekannte User der Gruppe mit der ID 200 angehören müssen.
Allerdings hat bei mir jeder User seinen eigenen FTP-Bereich aber auch wenn es einen Bereich für mehrere User gibt, lassen sich die Rechte dann über die FTP-Config einstellen.

Das mit den Game-Server versteh ich nicht ganz. Das sind doch deine/eure Game-Server oder vermiedest du die mit Shell-Zugang?
Würde ich nicht machen. Wenn dann sollen Kunden den gemieteden Game-Server über Web-Interface einrichten. PHP-Scripte gibt es bereits für jeden Game-Server um eine solche Seite zu bauen.

mfG WoodSTokk
Du scheisst es nicht zu wetzen
Testserver: @peStable (95.129.206.243:27960)
bayowar
Mitglied
Mitglied
Beiträge: 30
Registriert: Sa 22. Mai 2004, 19:30
Kontaktdaten:

Beitrag von bayowar »

Zuerst:

Danke für die ausführliche Hilfe das nützt alles schon sehr.

Zu den Gameservern:
War nur ein Beispiel - is auch egal. Ich vermiete nichts, niemand sonst
hat Shell-Zugriff.

Folgende Probleme habe ich nun noch:

Wie sperre ich Benutzer in ein Verzeichnis, sodass er nur sein 'home' sieht,
aber nichts von der restlichen Server-Struktur mitbekommt ?
Brauche ich vorallem für die FTP-User.

Wie würde man so ein Usermanagement am klügsten lösen ?

Ich habe beispielsweise Apache auf einem bestimmten Benutzer laufen
und möchte mit einem anderen Benutzer via FTP trotzdem von Apache
generierte Dateien im htdocs Verzeichnis editieren können .. wie ?
Bei den Dateien handelt es sich beispielsweise um, von PHP generierte,
Dateien und Ordner.

Desweiteren möchte ich einen FTP-Benutzer, der von root unabhängig ist
und trotzdem alle Dateien auf dem Server bearbeiten kann.
Natürlich bis auf besagte /etc/-Sachen
Benutzeravatar
WoodSTokk
Helpdesk
Helpdesk
Beiträge: 2634
Registriert: Fr 6. Dez 2002, 03:09
Wohnort: Wien/Österreich/Europa/Erde
Alter: 53

Beitrag von WoodSTokk »

Also mein WU-FTP sperrt die User automatisch in ihrem Home ein.
Ich ziehe nochmal das Beispiel von oben heran:

passwd --> WoodSTokk:x:2003:200::/var/www/site1:/bin/bash
Apache --> /var/www/site1/HTML-Dateien

Wenn ich mich jetzt mit dem Namen 'WoodSTokk' anmelde, bin ich in meinem Home-Verzeichnis. In meinem FTP-Client (FlashFXP) wird mir aber oben '/' als Verzeichnis angezeigt. Auch wenn ich ins übergeordnete Verzeichnis springen will bleib ich im Home gefangen.
In der Zeile von 'passwd' habe ich als Shell wieder '/bin/bash' eingetragen da WU-FTP die Shell zum arbeiten braucht. Damit sich die User nicht über SSH einloggen können müsste man wo anders eine Sperre setzen.

Frage: welchen FTP-Server verwendest du?

Dateien von Apache:
Wenn Apache Dateien erstellt (eigendlich die Scripte) dann gehören die auch einem User und einer Gruppe. Wenn die FTP-User in der selben Gruppe sind, sollten die Datei für sie lesenbar/schreibbar/löschbar sein.
Das Verzeichnis 'htdocs' wird doch mit Apache mitgeliefert und liegt in keinem Site-Verzeichnis? :roll:
Du könntest 'htdocs' natürlich als Alias in jedes Site-Verzeichnis einbinden, aber verändern sollten die User darin nichts da dieses Verzeichnis für alle Web-Projekte das gleiche ist.
Sollte ich mich irren bitte ich um Aufklärung, sry :oops:

Meine PHP-Scripte legen die selbsterstellten und upgeloadeten Dateien im Site-Verzeichnis und darunter ab aber nicht in einem Verzeichnis ausserhalb des Web-Projekts.

Für einen FTP-User der das ganze System sieht, musst du nur einen FTP-User anlegen und den als Home-Verzeichnis '/' zuweisen. Sollte er auch überall Daten uploaden dürfen müsste er in der Gruppe 'root' sein. Allerdings rate ich von sowas ab. Wenn es jemanden gelingt den FTP-Server zu knacken, kann er alles machen was er will. Ich schieb die Daten immer ins Home-Verzeichnis und verschieb sie dann in der Shell dorthin wo ich sie haben will.

mfG WoodSTokk
Du scheisst es nicht zu wetzen
Testserver: @peStable (95.129.206.243:27960)
bayowar
Mitglied
Mitglied
Beiträge: 30
Registriert: Sa 22. Mai 2004, 19:30
Kontaktdaten:

Beitrag von bayowar »

Tach nommal,

ich benutze proFTPd als FTP Daemon.
Der sperrt User aber leider nicht automatisch ein.

Werde dann am Wochenende alles ausprobieren und gegebenenfalls wieder
hier reinposten.

Herzlichen Dank nommal.
Benutzeravatar
WoodSTokk
Helpdesk
Helpdesk
Beiträge: 2634
Registriert: Fr 6. Dez 2002, 03:09
Wohnort: Wien/Österreich/Europa/Erde
Alter: 53

Beitrag von WoodSTokk »

Wo die Config zum ProFTPd liegt weis ich nicht aber die wirst du schon finden ;)
In der Config gibt es eine Menge zum einstellen.
Unter anderem diese Settings:

--- schnipp ---
# Umask 022 is a good standard umask to prevent new dirs and files
# from being group and world writable.
Umask 002

# Set the user and group under which the server will run.
User nobody
Group nogroup

# To cause every FTP user to be "jailed" (chrooted) into their home
# directory, uncomment this line.
DefaultRoot ~
--- schnapp ---

Die 'umask' habe ich auf '002' gesetzt damit auch Gruppenmitglieder vollen Zugriff auf die Dateien haben.
Auch ProFTPd verwendet standardmässig die '/etc/passwd', um User zu authentifizieren. Dies kann man aber umstellen so daß ProFTPd eine eigene passwd-Datei und group-Datei verwendet. Damit kann man virtuelle User anlegen die nur über FTP zugriff haben aber keinen Shellzugriff.

Auf dieser Seite sind einige HowTo's zu ProFTPd

mfG WoodSTokk
Du scheisst es nicht zu wetzen
Testserver: @peStable (95.129.206.243:27960)
bayowar
Mitglied
Mitglied
Beiträge: 30
Registriert: Sa 22. Mai 2004, 19:30
Kontaktdaten:

Beitrag von bayowar »

So, ich muss jetzt hier einfach mal meine pure, totale, allumfassende
Freude reinposten: ES GEHT !

Bild

Viiielen dank nomma an dich, Woodstokk.
Hoffentlich kannich mich mal revanchieren
Benutzeravatar
WoodSTokk
Helpdesk
Helpdesk
Beiträge: 2634
Registriert: Fr 6. Dez 2002, 03:09
Wohnort: Wien/Österreich/Europa/Erde
Alter: 53

Beitrag von WoodSTokk »

np ;) you're welcome :D
Du scheisst es nicht zu wetzen
Testserver: @peStable (95.129.206.243:27960)
Benutzeravatar
tspoon
Moderator
Moderator
Beiträge: 1130
Registriert: Fr 27. Dez 2002, 03:33
Wohnort: Dresden, im schönen sachsen wo die schönsten mädchen wachsen
Alter: 44
Kontaktdaten:

Beitrag von tspoon »

einfach mal webmin installieren ;)

bei user gleich nen chroot verzeichnis angeben damit sie nur dort drin arbeiten können

/home/users/./user

durch den . wird er auf den ordner users festgenagelt und kann kein verzeichnis höher gehen.

mit webmin kann man alle wichtigen einstellungen wie shellzugriff etc einstellen mit nur 2 klicks. damit haben die user überhaupt keine möglichkeit ssh zu nutzen. desweiteren kann der apache server dns etc eingestellt werden. aber nicht vergessen webmin nach gebraucht zu beenden über ssh da es eine angriffs möglichkeit für hacker bietet. aber zum verwalten echt top. aber wenn du lieber tippen willst st ssh direkt immer noch das beste :)

Bild
Bild
AMD GAME! Ultra System

______________________________________
Antworten

Zurück zu „Linux und MAC - Forum“