"Christmas - the time to fix the computers of your loved ones" « Lord Wyrm

Private Server - Setup Tipps und Input

jives 25.04.2008 - 19:00 2111 14 Thread rating
Posts

jives

And the science gets done
Avatar
Registered: Sep 2001
Location: Baden
Posts: 3548
Hallo allerseits :)

Nachdem ich vor kurzem endlich die Hardware für meinen Server komplett habe, bin ich seit ein paar Tagen fleißig am Konfigurieren. Distri meiner Wahl ist Arch, nachdem ich mir die compile-Orgien unter Gentoo nicht antun wollte (obwohls mir och ein bisschen abgeht ;)).

Was ich möchte: Einen Server zur privaten Nutzung mit RAID-1 (mdadm) und verschlüsselten (dmcrypt/LUKS) Storage-Platten, der SSH-Zugriff (openSSH), interne SMB-Shares (samba), HTTP (lighttpd) und SFTP (openSSH) bereitstellt. RAID-1 und Verschlüsselung, sowie samba und SSH/SFTP laufen schon :)

Was ich bräuchte: Allerdings wäre ich an diesem Punkt über etwas Input und Tipps dankbar, vor allem was die optimale Konfiguration von SSH/SFTP und den SMB-Shares im Hinblick auf maximale Sicherheit betrifft.

Ich hätte für SSH/SFTP gerne sowohl "piviligierte" Nutzer, die Zugriff auf das gesamte System haben sollten, als auch Benutzer, die nur ihr /home sehen sollen, also möchte ich mit openssh-chroot arbeiten. Gibts beim chrooten etwas Bestimmtes zu beachten (grsecurity-Patches werde ich eventuell einspielen, wenn das Werkel mal läuft), best practices und ähnliches, oder kann ich da einfach straightforward arbeiten?
Dazu kommt noch, dass die "normalen" User außer ihrem /home auch zwei weitere Verzeichnisse sehen sollen, auf die sie nur lesenden Zugriff haben sollen. Außerdem möchte ich auch noch Disk-quotas für diese Gruppe von Nutzern vergeben. Wie kann ich das im Hinblick auf chroot anstellen?

Zusätzlich hätte ich noch eine Frage zu SSH: Reicht es für meinen Fall eine Standard-Konfiguration mit deaktiviertem Root-Zugang zu verwenden, oder sollte ich
Code:
PasswordAuthentication no
verwenden? Wie läuft dann das Auth ab? Rein über die SSH-Keys, die ich dann auf jedem Client generieren und im Server eintragen müsste?

Dann noch zu samba: Reicht es sicherheitstechnisch, Hosts nur aus meinem Netzwerk zuzulassen, entsprechende Berechtigungen für Files und Verzeichnisse zu vergeben und den Zugriff mit "valid users" zu beschränken?

Wäre für eure Meinungen und Tipps dankbar :)
Bearbeitet von jives am 25.04.2008, 19:03

COLOSSUS

Administrator
GNUltra
Avatar
Registered: Dec 2000
Location: ~
Posts: 12067
Arch halte ich fuer den Serverbetrieb mit Verlaub fuer wirklich ungeeignet - das Build-System ist meiner Erfahrung nach ein Krampf, und es ist mir schon 2mal passiert, dass ein neuer Arch-Stock-Kernel mein funktionierendes System unbootbar gemacht hat (mit lilo besonders unangenehm). Es ist viel weniger flexibel als Gentoo, und nicht Versionsstabil. Ich wuerde Ubuntu 8.04 Server nehmen, wenn dich Gentoo nicht freut. Sonst Gentoo.

lighty ist egentlich fuer den Hugo - ich hab den Server fast eine Woche lang gewissenhaft evaluiert, was Performance und Features anbelangt (Version 1.4.13 vs. Apache 2.2.0 damals), und unter'm Strich kann man schlicht sagen: er bringt's nicht. Apache ist einfach unendlich flexibler, und ab 2.2 performancetechnisch meist on-par mit der ach-so-leichten Alternative.
Wenn du eh nur statischen Content servieren willst, schau dir slimhttpd ( https://launchpad.net/slimhttpd/ ) an.

Zu SSH: Wegen Auth - kommt drauf an - wenn du "UsePAM yes" in der Config hast, bestimmt das PAM-Modul fuer SSH, wie die Authentifikation genau ablaeuft (und fragt ggf. noch nach einem Passwort, auch wenn du PWAuth in der sshd_config ausknockst). Generell wuerde ich von PasswordAuthentification abraten; schaff dir ein Keypair an und verwende keyboard-interactive als Auth-Methode. chrooten in das ~ der Nutzer kann (wenn du nicht ein statisch gelinktes scponly als "shell" verwendest PITA sein; wuerde ich eigentlich lassen. POSIX permissions sollten doch reichen.
FS-quotas funktionieren auch ueber chroots und bind-mounts hinweg, da musst du dir keine Gedanken machen.

Zu SAMBA: Imho ja, authz ueber IP reicht; in einem kleinen lokalen Netz vertraue ich eigentlich immer darauf, dass die Hosts darin vertrauenswuerdig sind. Solltest du NFS(v4) nutzen, ist all_squash aber trotzdem anzuraten. :)


Hth.

jives

And the science gets done
Avatar
Registered: Sep 2001
Location: Baden
Posts: 3548
Auf eine Antwort von dir hab ich insgeheim gehofft ;) Aber nicht damit, dass du mit Arch schlechte Erfahrungen hattest. ich dachte eigentlich, damit eine gute Wahl zu treffen. Ich werds aber totzdem oben lassen, bis ich damit auf die Nase falle und dann eben zu Gentoo wechseln ;)

Gut zu hören, dass lighttpd doch nicht so light ist, mit Apache kenn ich mich besser aus und bleib dann gleich dabei.

http://wiki.archlinux.org/index.php/Openssh-chroot sah mir nicht allzu schlimm aus, aber nachdem ich mich hier auf Neuland bewege und glaube zu wissen, dass chrooten alles andere als leicht sein kann, wollte ich lieber nachfragen ;) Dann werd ich mal bei normalen ACLs bleiben.
Auch wenn die Frage wahrscheinlich ein bisserl blöd ist: Wenn ich bei SSH PWAuth abstelle, muss ich dann meinen Key überall dort hin mitnehmen, von wo aus in einloggen will?

Danke jedenfalls für den Input, hat mir schon sehr geholfen.

COLOSSUS

Administrator
GNUltra
Avatar
Registered: Dec 2000
Location: ~
Posts: 12067
Zitat von jives
Wenn ich bei SSH PWAuth abstelle, muss ich dann meinen Key überall dort hin mitnehmen, von wo aus in einloggen will?

Jo, musst du. :)

jives

And the science gets done
Avatar
Registered: Sep 2001
Location: Baden
Posts: 3548
Na wenigstens hab ich das halbwegs durchschaut ;)

Dafür hänge ich bei einem anderen kleinen Problem:
Ich möchte - wie oben schon erwähnt - (fast) allen Usern die Rechte zum Lesen von / abstellen - bis auf ihr ~ natürlich.
Ich bin überzeugt, dass das ganz einfach gehen muss, komm aber einfach nicht drauf. Ich denke an eine Lösung über eine Gruppe, aber wie genau ich das machen soll, außer mit dem hinzufügen der privilegierten Nutzer zur root-Gruppe oder dem ändern der Gruppe von / (beides sicher keine guten Lösungen), weiß ich leider nicht.

Wenn mir jemand da einen kleinen Denkanstoß oder Tipp geben könnte, wäre mir da schon sehr geholfen - tia jedenfalls :)

COLOSSUS

Administrator
GNUltra
Avatar
Registered: Dec 2000
Location: ~
Posts: 12067
Das Aendern des /-Group-Owners waere die "eleganteste" Variante. Wobei du auch dann nur read-Rechte nehmen kannst, die das Listen der Verzeichnisses verbieten - wenn du execute wegnimmst, klappt auch chdir() in hierarchisch darunterliegende Verzeichnisse nicht mehr.

(Insofern waere das funktionalte Aequivalent dau einfach ein `chmod 771 /`.)

Aber lass mich dich fragen: warum willst du das?

jives

And the science gets done
Avatar
Registered: Sep 2001
Location: Baden
Posts: 3548
Nachdem ich in der Zwischenzeit noch ein bisserl drüber nachgedacht habe, glaube ich auch, dass das nichts bringt :D

Danke trotzdem.

jives

And the science gets done
Avatar
Registered: Sep 2001
Location: Baden
Posts: 3548
Der Server läuft ganz brav in der Zwischenzeit und ich bin mehr oder weniger beim Feinschliff angelangt.
Allerdings hab ich zwei Probleme, bei denen ich nicht wirklich weiter weiß:
1. Ich habe usrquotas für das ~ aktiviert. Wenn man per SSH ein File verschieben will, das zu groß ist für den verbliebenen Platz, gibt es brav eine Fehlermeldung. Macht man das ganze jedoch über SFTP (bisher nur mit Filezilla getestet), lädt Filezilla das File einfach hoch, bis kein Platz mehr da ist, hört dann aber nicht auf. Und meldet am Ende auch noch "File transfer successful" - das File ist aber natürlich nur so groß, wie es maximal sein darf. Das gleiche passiert, wenn der Platz voll ist, und man neue Files hochlädt. Er lädt brav hoch, die Files sind jedoch alle nur 0 Bytes groß.
Liegt das an meiner Konfiguration bzw. kann ich irgend etwas machen, damit Filezilla auch eine Fehlermeldung ausspuckt?

2. Ich möchte meinen Usern ein public_html-Verzeichnis verpassen. Habs einfach mit den entsprechenden Permissions (711) in/etc/skel hinzugefügt - nur leider muss, damit der Zugriff auch wirklich funktioniert, das ~ de jeweiligen Users auch (mindestens) 711 sein, was es standardmäßig ja nicht ist. Ist das nicht der Fall, spuckt Apache eine "Permission denied"-Fehlermeldung aus (MultiViews ist off). Meine Frage ist nun, ob ich das ändern sollte? Wenn ja wie (so dass ich nicht bei jedem neuen User händisch eingreifen und das ~ chmodden muss)? Wenn nein (weil dann ja theoretisch von Anderen auf den Inhalt von ~ zugegriffen werden könnte, und die User ihre Files sicher nicht 700 chmodden ;)), was kann ich sonst tun?

COLOSSUS

Administrator
GNUltra
Avatar
Registered: Dec 2000
Location: ~
Posts: 12067
1.) Seltsam - wenn dein quota exceeded, retournieren die Library-Funktionen (bzw. schon die darunterliegenden Syscalls) einen entsprechenden Fehler, und den kriegt garantiert auch Filezilla mit. Was ich mir als darunterliegende Ursache dieses Fehlers vorstellen koennte (und das waere nicht gut, bzw. sicher schon mal jemanden aufgefallen...) ist, dass der sftp-server (das ist ein eigens Programm, das sshd bei einem entsprechenden Request exec()d) mit root-Privilegien laeuft, und dann Quotas natuerlich keine Wirkung haben. Am besten du wirfst mal einen genauen Blick auf die Prozesstabelle, waehrend ein Transfer laeuft.
Sollte filezilla nur bis zum Erschoepfen des Quotas hochladen, dann ist privilegientechnisch alles in Ordnung - und du testest am besten mal mit sftp, lftp, gftp, winscp oder sonstwas, ob die das selbe Verhalten zeigen.

2.) mod_userdir ist immer ein Graus. Ich wuerde dir einen per-user-VHost empfehlen, und dazu mpm-itk fuer Apache. Dann laeuft eine Art Dispatcher-Prozess von apache unter EUID 0, der nach einem Request auf einen VHost zu dem User Privilegien dropt, der fuer den VHost "zustaendig" ist (gibt's dann mit mpm-itk eine per-VHost-Configoption) - mit dem Resultat, dass alle Dateien, die fuer den VHost von Relevanz sein koennten, auch nur von genau diesem User einsehbar sein muessen - die anderen (VHost-)User muessen da keinen Zugriff drauf haben.
Der einzige Nachteil dieser Loesung ist (neben dem bei hoher Requestanzahl auf unterschiedliche VHosts ggf. hoeheren Ressourcenverbrauch), dass der Daemon eine Weile lang als root laufen muss, was insb. in Verbindung mit SSL/TLS (es gab da durchaus einige Bugs in OpenSSL in vergangenen Tagen...) - weil da auch der Handshake als root durchgefuehrt wird - ein Sicherheitsnachteil sein kann. Das halte ich aber trotzdem fuer akzeptabel; und wer sich vor OpenSSL fuerchtet, kann stattdessen immer noch GNUTLS einkompilieren.

deftenski

mit barockfelgen
Avatar
Registered: May 2002
Location: back home
Posts: 1241
add 1) plain scp zeigt bei mir das selbe Verhalten, mit gftp wird die Datei fertig übertragen und dann als ganzes verworfen ..

hab die Quotas aber dann aus mangelndem Interesse wieder ganz verworfen, also leider auch keine Lösung parat

jives

And the science gets done
Avatar
Registered: Sep 2001
Location: Baden
Posts: 3548
Vorneweg: Danke für die Hilfe COLO. Mit dir haben wir hier wirklich einen Guru im Forum :)


Ad 1) Die Rechte des sftp-Prozesses der von sshd gespawnt wird, hab ich schon vorher überprüft (leider vergessen dazuzuschreiben): Der Prozess gehört dem eingeloggten User.
Ich habe in der Zwischenzeit mit psftp, WinSCP (unter Windows) und sftp getestet:

psftp (v0.60 wie auch der aktuelle snapshot) verhält sich genau so wie Filezilla (v3.0.9.2) (keine Fehlermeldungen, kein gar nichts - nur ist das File eben nur so groß, wie es der verbliebene Platz zulässt). Edit: Nicht überraschend wie ich gerade draufgekommen bin - der Filezilla SFTP-Support basiert auf PuTTY.
WinSCP (v4.1.0.375) bleibt fast hängen, fängt sich aber wieder und spuckt die Meldung aus, dass der Server nicht mehr reagieren würde. Die quotas werden auch hier eingehalten.
sftp (aus openSSH v4.7) bricht brav mit "Couldn't write remote file ...: Failure" und gleich einem Logout ab.

Ich glaub, es wird Zeit sich mit den PuTTY und WinSCP-Entwicklern in Verbindung zu setzen ;)


Ad 2) Das hab ich mir eigentlich einfacher vorgestellt :( ;) Dann werd ich mich mal in die entsprechenden Dokus einlesen. Ich fürchte ich werde Apache rekompilieren müssen...


Ad 3) Nicht wundern - Punkt 3 gabs noch gar nicht ;) Nachdem ich erstens faul und zweitens daran interessiert bin, wie so etwas bei "ordentlichen" (= großen) Servern gehandhabt wird, noch eine Frage.
Ich möchte zwei Dateisysteme mit mount --bind in die jeweiligen ~ der User legen. Die entsprechenden mount points hätte ich wieder in /etc/skel angelegt, aber wie bekomm ich automatisch für jeden (auch jeden neu hinzugefügten) User ein mount hin, ohne das händisch in /etc/fstab eintragen und mounten zu müssen? Eigenes Script schreiben, oder geht das auch anders?
Bearbeitet von jives am 29.04.2008, 11:27

COLOSSUS

Administrator
GNUltra
Avatar
Registered: Dec 2000
Location: ~
Posts: 12067
Vorweg: Danke fuer die Blumen :-* ;)

1.) ... das ist durchaus seltsam; versuche ich hier lokal mein Disk-Quota zu exceeden, returned write() EDQUOT (-1), und das sollte wirklich jede standardkonforme und sauber implementierte Software kapieren. Wie das mit sftp-server als schreibendem Prozess aussieht, muss ich nochmal pruefen, aber ich bin mir ziemlich sicher, dass das Problem am Client liegt ;)

2.) Welcome to Archlinux-Hell :D (`echo APACHE_MPMS="itk" >> /etc/make.conf" && emerge -uDN apache` || `apt-get install apache2-mpm-itk`)

3.) Also ich habe auf dem groeszten Host, den ich fuer mehrere Kunden adminstriere, einen eigenen Wrapper um `useradd` geschrieben, der die User-Environments (und tw. auch systemweite Konfig, wie eben Apache-VHosts) entsprechend der vereinbarten Konfiguration anpasst. Ich sage jetzt nicht, dass das ideal ist - aber mir ist damals nichts Besseres eingefallen. :)

jives

And the science gets done
Avatar
Registered: Sep 2001
Location: Baden
Posts: 3548
Zitat von COLOSSUS
2.) Welcome to Archlinux-Hell :D (`echo APACHE_MPMS="itk" >> /etc/make.conf" && emerge -uDN apache` || `apt-get install apache2-mpm-itk`)
yaourt -Sy apache-mpm-itk :p

Aber ich weiß es eh, wenns so weitergeht, steig ich eh noch auf Gentoo um. Ich muss mir aber etwas für den portage tree überlegen, weil ich hier am Server ein Experiment mit einer 4GB FlashDisk versuche, von der 1GB für suspend to disk und 1GB als unbenutzter Speicher reserviert ist - und 2GB dürften da knapp werden (?). Wie groß ist denn eine komplette Gentoo Server-Installation? Ich hab bisher nur Desktop-Erfahrungswerte, wo der portage tree schon mal in den GB-Bereich geht. Andere Distris pack ich nicht, weil ich eben Gentoo gewohnt bin. Da passiert zu viel von ganz allein :D
Spielereien mit SquashFS und ähnlichem für den portage tree wollte ich mir auch nicht antun. Im Zweifelsfall kommt er halt auf die Storage-Disks.
Arch braucht dafür gerade nur 483MB auf der Disk (mit leerem pacman cache).

Zitat von COLOSSUS
[...]aber mir ist damals nichts Besseres eingefallen.
Und wie würdest du es heute machen? ;)
Bearbeitet von jives am 29.04.2008, 12:30

MONVMENTVM

...wie monvmental
Avatar
Registered: Apr 2005
Location: nowhere
Posts: 1572
Zitat von COLOSSUS
2.) Welcome to Archlinux-Hell :D (`echo APACHE_MPMS="itk" >> /etc/make.conf" && emerge -uDN apache` || `apt-get install apache2-mpm-itk`)

Versuch mal apache mit ABS zu erstellen (also nicht das fertige bin installieren) und trag ins PKBUILD einfach mal APACHE_MPMS="itk" ein.

Kann zwar nicht sicher sagen ob es geht, ein Versuch waere es aber wert.

Vl. kann ich mir das morgen mal genauer anschauen, heute hab ich leider keine Zeit dazu.

Edit... ja lol stimmt. => oder man installiert sich gleich apache-mpm-itk aus dem AUR ^^.

COLOSSUS

Administrator
GNUltra
Avatar
Registered: Dec 2000
Location: ~
Posts: 12067
Zitat von jives
yaourt -Sy apache-mpm-itk :p

Masl! :p :D ;)

Zitat von jives
Aber ich weiß es eh, wenns so weitergeht, steig ich eh noch auf Gentoo um. Ich muss mir aber etwas für den portage tree überlegen, weil ich hier am Server ein Experiment mit einer 4GB FlashDisk versuche, von der 1GB für suspend to disk und 1GB als unbenutzter Speicher reserviert ist - und 2GB dürften da knapp werden (?). Wie groß ist denn eine komplette Gentoo Server-Installation? Ich hab bisher nur Desktop-Erfahrungswerte, wo der portage tree schon mal in den GB-Bereich geht. Andere Distris pack ich nicht, weil ich eben Gentoo gewohnt bin. Da passiert zu viel von ganz allein :D
Spielereien mit SquashFS und ähnlichem für den portage tree wollte ich mir auch nicht antun. Im Zweifelsfall kommt er halt auf die Storage-Disks.
Arch braucht dafür gerade nur 483MB auf der Disk (mit leerem pacman cache).

Hmm, also ich nutze reiser3 fuer das Gentoo Repository (="Portage Tree"), und nach Ausleeren der Distfiles brauche ich dafuer 587MB. Wenn dein Server genug RAM und Bandbreite zum Mirror hat, wuerde ich ueber /usr/portage/distfiles einfach beinhart ein tmpfs mounten - Problem geloest. Sonst ist meine Install schon deutlich dicker als deine, aber ich glaube auch fest daran, dass der Server mehr Zustaendigkeiten hat als deiner (ejabberd + erlang + mnesia, mysql, dns, httpd, ...), noch dazu /var/lib/ und /log/ nicht auf ausgelagerten FS...
Code:
nexus / # du -xsh * 2>/dev/null
5.2M    bin
7.7M    boot
192K    dev
3.8M    etc
11G     home
5.3M    lib
16K     lost+found
12K     mnt
56K     opt
0       proc
47M     root
5.5M    sbin
0       sys
63M     test
348K    tmp
2.8G    usr
320M    var
Code:
nexus / # df -Ph
Filesystem            Size  Used Avail Use% Mounted on
/dev/md0              9.4G  3.2G  5.8G  36% /
udev                   10M  192K  9.9M   2% /dev
/dev/mapper/vgRAID0-lvPORTAGE  3.8G  587M  3.2G  16% /usr/portage
/dev/mapper/vgRAID0-lvTMP  4.0G  348K  3.9G   1% /tmp
/dev/mapper/vgRAID0-lvVARTMP  1.6G  276K  1.5G   1% /var/tmp
/dev/mapper/vgRAID1-lvHOME  263G   11G  253G   4% /home
shm                  1014M     0 1014M   0% /dev/shm

Ich sehe aber grade, dass da jemand schon seit 2.6.22 keine Kernel-Sourcen mehr geloescht hat :rolleyes: :D Also ich denke schon, dass du ein Gentoo da reinquetschen kannst, mit entsprechenden FEATURES, CFLAGS und USE-Flags.
Edith meint: ok, nach dem Aufraeumen in /usr/src ist / noch mit 1.6GB belegt. Koennte man noch weiter trimmen (noinfo und noman bspw.), aber das hab ich auf dem Rechner eh nicht noetig :))

Zitat von jives
Und wie würdest du es heute machen? ;)

Mangels zuendender Ideen wohl genauso ;)
Kontakt | Unser Forum | Über overclockers.at | Impressum | Datenschutz