mmofacts.com

Serveradministration (Linux)

gepostet vor 18 Jahre, 7 Monate von Mudder
So ich möchte jetzt mal mit diesem Forumthread eine sachliche Erklärung haben wie man gewisse Dinge mit seinem Server machen kann. Ich habe hierzu ein paar Fragen und die Linuxfreaks unter Euch mögen bitte hierzu antworten, und auch dazu schreiben für welcher Linux-Version/Distribution die Anleitung dann gilt.
  • Wie sieht die Orderstruktur des Systems aus?
  • Wie kann ich ein Modul/Programm runterladen?
  • Wie kann ich tar/tar.gz Archive entpacken?
  • Ich habe ein (v)Server gemietet. Was sollte ich nun als erstes tun?
  • Ich möchte z.B. PHP5 updaten. Wie mache ich das?
  • Ich möchte das vorinstallierte PHP4 auf PHP5 updaten. Was muss ich tun?
  • Ich möchte ein PHP-Modul (z.B. pspell) installieren. Wie geht das?
  • Gibt es eine deutsche! Hilfe/Tutorialseite wo ich Hilfe finden kann?

gepostet vor 18 Jahre, 7 Monate von Kallisti
*Wie sieht die Orderstruktur des Systems aus?
Das Stammverzeichnis ist /, also sozusagen die Wurzel (root) deines Verzeichnisbaums. Darunter hast du diverse weitere Verzeichnisse, die eine vordefinierte Funktion haben, sich aber je nach Distribution ein wenig unterscheiden koennen.
Im Normalfall befinden sich in /etc die Konfigurationsdateien, in /bin essentielle Programme wie die Shell oder systemnahe Befehle, in /usr/bin andere Programme, in /usr/lib die Libraries, in /usr/share Dinge wie z.B. Grafiken dazu.. etc.. in /usr/local/ selbstkompilierte Software, in /boot der Kernel und bei Grub die Bootloaderoptionen, in /opt (grad auf Unix Kisten) optionale Software wie z.B. ein selbstgestrickter Apache, Jabber etc... halt spezielle Services, die auf die Maschine angepasst wurden.
*Wie kann ich ein Modul/Programm runterladen?
wget host.tld/file
Wenn es komische Seiten mit Scriptforwards etc sind, links / w3m / lynx verwenden.
*Wie kann ich tar/tar.gz Archive entpacken?
sudo apt-get install unp gzip2 bzip2
unp archivname
(unp ist quasi ein textfrontend fuer alle moeglichen Packprogramme)
Ansonsten der normale weg: tar -xvzf archiv.tgz
Wobei x fuer extract, v fuer verbose, z fuer zip compressed und f fuer den folgenden Filename stehen. Einfache .tar Archive also ohne z.
*Ich habe ein (v)Server gemietet. Was sollte ich nun als erstes tun?
nmap localhost / netstat, unnoetige Dienste deaktivieren
Komplettes Softwareupdate
*Ich möchte z.B. PHP5 updaten. Wie mache ich das?
dotdeb.org
*Ich möchte das vorinstallierte PHP4 auf PHP5 updaten. Was muss ich tun?
s.o.
*Ich möchte ein PHP-Modul (z.B. pspell) installieren. Wie geht das?
[root@eris(pts/1):~]$ apt-cache search pspell
libaspell15 - GNU Aspell spell-checker runtime library
libpspell-dev - Development files for applications with pspell support
php4-pspell - Pspell module for php4
php5-pspell - Pspell module for php5
[root@eris(pts/1):~]$ apt-get install php5-pspell
*Gibt es eine deutsche! Hilfe/Tutorialseite wo ich Hilfe finden kann?
debiananwenderhandbuch.de/
www.debianforum.de
www.syscp.de
www.google.de
Wer kein Debian / keinen Debian Fork benutzt ist selbst schuld.
gepostet vor 18 Jahre, 7 Monate von Fornax
Ich bin noch recht unerfahren, aber ich denke, es hilft dir weiter. Wenn ich Fehler mache, bitte sagen. Daraus lernt man bekanntlich.
> Wie sieht die Orderstruktur des Systems aus?
/
ist das "root-Verzeichnis", also die Wurzel, die unterste Ebene.
/etc
hier befinden sich die Konfigurationsdateien für die Programme
/home
in diesem Verzeichnis hat jeder (normale) Benutzer sein Home-Verzeichnis, also wie die Eigenen Dateien
/root
Das Home-Verzeichnis des root-Benutzers
/var
ein Verzeichnis, in dem "alle möglichen Inhalte gespeichert werden"
/var/log
für Logdateien
/var/mail
für E-Mails
/var/run
hier legen Programme eine Datei mit der PID ab
/var/www
für Web-Dateien (Apache)
> Wie kann ich ein Modul/Programm runterladen?
Kommt drauf an... Die Quellcodes (meistens als tar.gz) werden mit wget downgeloaded, für den aktuellen Apache z.B. so:
wget www.wirtschaftsinformatik.fh-furtwangen.de/mirror/apache/httpd/httpd-2.2.2.tar.gz
Danach entpacken (dazu später) und installieren. Wie man es installiert, steht meistens in der Datei INSTALL, also lesen.
- oder -
Es gibt das praktische Programm APT. Das ist ein Paketverwaltungsprogramm. Damit werden Programme heruntergeladen und installiert, dabei geht meistens alles voll automatisch. Die Pakete sind aber nicht immer aktuel
Beispiel für Apache:
apt-get install Apache2
> Wie kann ich tar/tar.gz Archive entpacken?
Dafür bin ich jetzt zu faul, also hier gucken.
> Ich habe ein (v)Server gemietet. Was sollte ich nun als erstes tun?
Die sources.list anpassen. Sie liegt in /etc/apt und gibt an, von wo APT die Programme downloaden soll. Was für Adressen du da genau eintragen musst, kann ich dir leider nicht sagen, aber googeln sollte da abhelfen. Danach macht man am besten
apt-get update
Damit wird eine Liste der verfügbaren Pakete von den Servern gelesen. Danach
apt-get update
um deine Programme auf den aktuellen Stand zu bringen.
> Ich möchte z.B. PHP5 updaten. Wie mache ich das?
siehe oben
> Ich möchte das vorinstallierte PHP4 auf PHP5 updaten. Was muss ich tun?
Am einfachsten auch mit dem APT-Tool:
apt-get remove php4*
apt-get install php5.1
PS: Ich arbeite mit Debian 9.1, und das APT-Tool gibt (oder gab?) es nur für Debian. Viele sagen, man sollte es nicht benutzen, weil es (wie gesagt) nicht immer aktuelle Pakete gibt, und man somit nur denkt: Ok, ich hab upgedatet, das System ist wieder sicher. Am besten ist es, die Quellcodes runterzuladen und selbst zu kompilieren, jedoch siegt meistens die faulheit
PPS: Kallisti war schneller
gepostet vor 18 Jahre, 7 Monate von Drezil
Original von Fornax
> Ich habe ein (v)Server gemietet. Was sollte ich nun als erstes tun?
Die sources.list anpassen. Sie liegt in /etc/apt und gibt an, von wo APT die Programme downloaden soll. Was für Adressen du da genau eintragen musst, kann ich dir leider nicht sagen, aber googeln sollte da abhelfen. Danach macht man am besten
apt-get update
Damit wird eine Liste der verfügbaren Pakete von den Servern gelesen. Danach
apt-get update
um deine Programme auf den aktuellen Stand zu bringen.

das zweite sollte wohl ein apt-get upgrade sein
Auf einem V-Server würde ich das nciht empfehlen, da ein kernel-update probleme machen kann (hatte noch keinen vServer - aber nen kumpel vom mir.)
gepostet vor 18 Jahre, 7 Monate von Fornax
Hups, hast recht...
Werden Kernel überhaupt mit "apt-get upgrade" upgedatet - sorry, upgegraded? Dafür müsste man denke ich dist-upgrade machen, oder?
gepostet vor 18 Jahre, 7 Monate von Crasher
Original von Kallisti
*Ich habe ein (v)Server gemietet. Was sollte ich nun als erstes tun?
nmap localhost / netstat, unnoetige Dienste deaktivieren
Komplettes Softwareupdate

Unser v-Server läuft ab und an ziemlich lahm hast du nen Tipp was für Dienste das wären. Kenn mich noch nicht so im Linuxleben aus es wird zwar von mal zu mal besser aber nicht das ich irgendwas falsches deaktiviere.
Crasher
gepostet vor 18 Jahre, 7 Monate von Sarge
wenn es ab und zu ist wird das einfach dadran liegen das es ein vServer ist.. und du die Maschine nicht für dich alleine hast. Verbrauch ein anderer Kunde gerade sehr viel Leistung bleibt für dich nurnoch minimale grenze über
gepostet vor 18 Jahre, 7 Monate von Itchy
Ich beschreibe hier, was ich mache, das muß keine Empfehlung sein, es ist halt nur mein Weg.
# Wie sieht die Orderstruktur des Systems aus?
Glaubensfrage. Ich installiere meine selbst kompilierten Sachen in /usr/local - andere schwören auf /opt
Konfigurationsdateien sind in /etc, libraries in /usr/lib(64) und /lib(64), wobei in /lib(64) man keine eigenen libs ablegen sollte, entsprechendes gilt für Executables in /bin bzw. /usr/bin.
In /sbin bzw. /usr/sbin schließlich liegen Executables, die nur der Superuser (root) ausführen darf
# Wie kann ich ein Modul/Programm runterladen?
wget
Wobei Url alles mögliche sein kann, FTP, HTTP und noch paar andere Protokolle
# Wie kann ich tar/tar.gz Archive entpacken?
gzip bzw. bzip2 installieren (für bz2 Archive) und dann
gzip -d
bzw.
bzip2 -d
tar xvf
# Ich habe ein (v)Server gemietet. Was sollte ich nun als erstes tun?
Das Ding sicher machen!
Dem root-user ein gutes (!) Passwort geben
~# passwd
Alle Konfiguraturationstools und ähnlichen Scheiß (Plesk, ezad und wie sie alle heißen) runterschmeißen und als erstes überprüfen, welche Dienste in aktuellen Runlevel (meistens 3) geladen werden und alles, was man nicht braucht runterschmeißen. Das sind für den Anfang alle Server bis auf den sshd. Auch Files sollten per SFTP übertragen werden und nicht per FTP, das ist alter Käse, absolut unsicher. Ein Windows SFTP Client ist z.B. WinSCP, Linuxuser haben sftp auf der Shell.
Einen ssh-user anlegen
~# useradd sshuser
Dem ssh-user ein gutes (!) Passwort geben
~# passwd sshuser
In der /etc/sshd.conf den sshd so konfigurieren, daß nur der sshuser sich auf der Maschine einloggen kann und kein anderer User. Wer auf Nummer sicher gehen möchte, schaut nun, wie ssh über Public/Privatekey Austausch funktioniert und deakiviert die Loginmöglichkeit per Passwortauthentifikation. Aber das ist eher was für später.
Anschließend wird das Ding dicht gemacht mit Hilfe von iptables.
Ein einfaches iptables Script sieht so aus:

#!/bin/bash
iptables -P FORWARD DROP
iptables -P INPUT DROP
iptables -P OUTPUT ACCEPT
iptables -F
iptables -t nat -F
iptables -X
# bestehende Verbindungen in Ruhe lassen
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A INPUT -p tcp \! --syn -j ACCEPT
# lokale Verbindungen akzeptieren
iptables -A INPUT -s localhost -j ACCEPT
# ssh akzeptieren
iptables -A INPUT -p tcp --dport ssh -j ACCEPT
# http akzeptieren
iptables -A INPUT -p tcp --dport http -j ACCEPT
Dann den neuesten Apache Server (ich bevorzuge den 1.3er Branch, aktuell ist hier 1.3.35) installieren, man will ja wahrscheinlich einen Webserver haben.
# Ich möchte z.B. PHP5 updaten. Wie mache ich das?
~# wget
~# gzip -d php5-xyz.tar.gz
~# tar xvf php5-xyz.tar
~# cd php5-xyz
# Konfigurieren: bei mir siehts so aus. mit --with gibt man die zusätzlichen Module an. Dabei sollte man nur die Module reinkompilieren, die man braucht, für den Anfang wird das wahrscheinlich nur das mysql Modul sein
~# './configure' '--prefix=/usr/local/php5' '--with-apxs=/usr/local/apache/bin/apxs' '--with-mysql=/usr/local/mysql/' '--with-gettext' '--with-xml' '--with-mcrypt' '--with-imap=/root/install/imap-2004d' '--with-imap-ssl' '--enable-mbstring' '--with-gd' '--with-zlib' '--with-db4=/usr/local/DB4' '--with-pgsql=/usr/local/pgsql'
~# make
~# make install
~# ln -s /usr/local/php5/bin/php /usr/bin/php
~# vi /usr/local/apache/conf/httpd.conf #hier das neue libphp5.so einbinden
Siehe php.net Dokumentation "Installation UNIX mit Apache"
# Ich möchte das vorinstallierte PHP4 auf PHP5 updaten. Was muss ich tun?
s.o.
# Ich möchte ein PHP-Modul (z.B. pspell) installieren. Wie geht das?
Konfiguration mit --with-pspell[=dir]
# Gibt es eine deutsche! Hilfe/Tutorialseite wo ich Hilfe finden kann?
www.newbie-net.de/
gepostet vor 18 Jahre, 7 Monate von mifritscher
Ich stimme dir bis auf paar Kleinigkeiten zu:
-Apache2 ist mittlerweile ausgereift, 1.3 kurz vor dem unsupported-status
-php5 wenn möglich immer die Version von der jeweiligen Distro nehmen, so erspart man sich es immer wieder manuell aktualisieren zu müssen (u.a. auch Sicherheitslücken!). Zudem haben die meisten Distros auch fertige php-Packete wie phpmyadmin oder squirrelmail, die vom jeweiligen php-Packet abhängen
-iptables würde ich auch keinen absoluten Anfänger in die Hände drücken, weil man sich damit schnell selbst aussperren kann, zumal man ganz ähnliches erreicht wenn man aufpasst, was auf dem Server überhaupt läuft
-confixx/plesk etc. ist viel zu groß und nistet sich überall ein, das stimmt.
ich verwende da gern syscp, weil es transparent ist und man sich aussuchen kann was man braucht, indem man einfach die jeweiligen Konfigurationsdateien nicht anpasst. Also z.B. nur die von postfix, nicht aber die von apache, wenn man es nur zum verwalten von den Mail-Accs verwenden will
gepostet vor 18 Jahre, 7 Monate von Sarge
für apache 1.3 gibts aber leider noch so ein paar mod's die noch nicht auf apache2 portiert wurden :/
confixx ist die pest -.- plesk nicht viel besser.. ich mags gern ohne
gepostet vor 18 Jahre, 7 Monate von mifritscher
Sarge, ich wollte nicht nicht so deutlich werden
gepostet vor 18 Jahre, 7 Monate von Itchy
Original von woodworker
Pfadnamen sind KEINE glaubenssache
es gibt dafür feste Specs
www.pathname.com/fhs/

Haste in die Specs auch reingeschaut?
Da heißt es:

The /usr/local hierarchy is for use by the system administrator when installing software locally.

/opt is reserved for the installation of add-on application software packages.
So, wo ist der genaue Unterschied zwischen "installation of add-on application software packages" und "installing software locally". Ist jetzt ein MySQL Paket eine Add-on Application Software oder nicht?
iptables würde ich auch keinen absoluten Anfänger in die Hände drücken, weil man sich damit schnell selbst aussperren kann, zumal man ganz ähnliches erreicht wenn man aufpasst, was auf dem Server überhaupt läuft

Ist mir am Anfang auch passiert, aus solchen Fehlern lernt man Wenn man die Regeln aber nicht gleich mit dem Systemstart legt, reicht ja ein Reboot aus und die meisten Provider bieten ja die Möglichkeit einen Remote-Softreboot zu fahren. iptables sind natürlich schon ein mächtiges Zeug, aber bei einer einzigen Netzwerkschnittstelle und ohne Routing (FORWARD) Regeln oder gar Pre/Postrouting-Regeln und Masquerading ist es eigentlich einfach zu verstehen. Es geht ja nur erstmal darum, die Ports dichtzumachen, so daß z.B. selbst ein schlecht konfiguriertes MySQL (mit Netzwerk obwohl eh nur lokal zugegriffen wird) trotzdem dicht ist. Das kleine Skript, was ich da gepostet habe, ist für solche Zwecke ausreichend und man kann wirklich schön steuern, welche Dienste man aufmachen möchte - alle anderen bleiben halt dicht.
gepostet vor 18 Jahre, 7 Monate von Fornax
Und falls du nicht genug hast, hier eine kleine Seite für Anfänger: bin-bash.de. Bei dem Punkt "Dateisystem" hast du genau das, was du wolltest
Und wenn du Debian benutzt, muss du nur noch diese Kleinigkeit durchlesen, dann kannst du booten ^^
gepostet vor 18 Jahre, 7 Monate von mifritscher
also, /usr/local sollte denkeich verwendet werden, wenn z.B. / überall gleich sein soll, man auf einem bestimmten Rechner (lokal ) aber ne zusätzliche Software braucht, /opt wird oft für Sachen verwendet, die nicht direkt von der Distro kommen.
gepostet vor 18 Jahre, 7 Monate von zufall_
eine frage, wieso verwendet ihr überhaupt eine FW? je weniger läuft desto besser, vor allem auf einem schwachbrüstigen v-server. ok, um mal bei einem dns schnell ne ip zu sperren, aber sowas sollte man leuten überlassen, die genau wissen, was sie tun.
was brauchen wir minnimal (laufende prozesse):
inetd
syslogd
cron
sshd
MTA
Webserver (Apache)
db (MySQL)
was habe ich noch vergessen?
gepostet vor 18 Jahre, 7 Monate von Itchy
FW ist auch nützlich, wenn z.B. einer der Dienste kompromitiert wird und versucht wird, einen Backdoor Port aufzumachen, dieser Port von außen trotzdem nicht erreichbar ist.
An minimalen Diensten:
MTA ist nur nötig, wenn auch wirklich Mails vom Server behandelt werden sollen.
inetd auch nur für Anwendungen, die ihn benötigen
Ansonsten sollte natürlich auch der init laufen
gepostet vor 18 Jahre, 7 Monate von zufall_
wenn jemand es schafft eine backdor zu installieren, ist er dann nicht auch in der lage was gegen die FW zu tun?
das mit dem inetd war eine verwechslung, ich meinte natürlich init.
der MTA bleibt natürlich jedem selbst überlassen. genauso könnte auch die datenbank auf einem anderen server laufen.
gepostet vor 18 Jahre, 7 Monate von Itchy
Nö, eine Backdoor zu installieren und die Firewall zu kompromitieren sind doch zwei verschiedene Dinge.
Stell Dir folgendes Szenario vor:
angenommen der Apache (oder ein anderer von Außen erreichbarer Dienst) hat eine Sicherheitslücke, die es erlaubt, von Außen fremden Code einzuschleusen. Dadurch wird eine Backdoor geöffnet, die eine Verbindung zum Host home.l33thackerz.org:1337 öffnen möchte. Die Firewall weiß, daß der Server das normalerweise nicht tut, der macht nämlich nichts anderes, als HTTP Requests zu beantworten, schicken tut der überhaupt nichts und blockt deshalb diese Verbindung. Ergo würde dieser Angriff schadlos überstanden.
Natürlich ist eine Firewall nicht mal eben so aus dem Ärmel geschüttelt und natürlich ist eine laufende Firewall evtl. ein zusätzlicher Dienst, der kompromitiert werden kann (es gab schon solche kritischen Sicherheitslücken in iptables), allerdings ist sie nicht total unnütz, selbst wenn man selber nur wenige Dienste laufen hat.

Auf diese Diskussion antworten