Toolkit & Habits für Linux Network & System Administration [geschlossen]

20

Ich habe die Aufgabe, ein kleines Büronetzwerk sowie mehrere Workstations zu verwalten, auf denen hauptsächlich Debian und Ubuntu ausgeführt werden. Es gibt zwei Server: einen Datenbank- und Druckserver sowie einen Sicherungs- und Dateiserver.

Da ich relativ neu in diesem Bereich bin und genug weiß, um mir unter Linux einigermaßen zu helfen, möchte ich wissen, welche Softwaretools und Aufgaben / Gewohnheiten ich verwenden / erwerben kann, um dieses Gebiet zu erlernen und dabei effektiv zu sein.

Ich muss nicht wissen, was das Beste ist, sondern nur, was ein Anfänger als Starter-Pack verwenden kann, um zu lernen und als Basis für eine ordnungsgemäße Systemadministration zu dienen.

Was ich brauche, sind die wenigen grundlegenden Tools, mit denen ich anfangen muss, und die Art der Dinge, die ich regelmäßig tun muss, z. B. welche Protokolle zu überprüfen sind, wann und was zu überwachen ist, welche Art von 'richtigem' Startort ich kann Anzeige, wie ich brauche.

Slashmais
quelle
Subjektives Thema im Extremfall. Wie würde eine "richtige" Antwort aussehen?
Bill Weiss

Antworten:

16

1

Überwachung geschäftskritischer Prozesse [z. B. wird eine Datenbank ausgeführt und reagiert auf einfache Abfragen], grundlegende Parameter des Betriebssystems [freier Speicherplatz, Durchschnitt der Auslastung]. Sie können zum Beispiel Nagios oder Zabbix verwenden .

2

Sammeln Sie Statistiken, um einige Baselines zu ermitteln. In Zukunft wird dies für die Kapazitätsplanung nützlich sein. Sie können Munin , Zabbix, Kakteen usw. verwenden.

3

Führen Sie geplante automatische Sicherungen durch, und speichern Sie einige davon offline, außerhalb des Standorts. Überwachen Sie, ob dies erfolgreich war, und überprüfen Sie von Zeit zu Zeit manuell, ob Sie wichtige Daten wiederherstellen können. möchten Sie vielleicht verwenden backup ihnen oder orchestrieren Zmanda , aber es gibt viel mehr nützliche Tools ..

4

dokumentieren. Für dein eigenes Wohl. Denken Sie nicht, dass der Mangel an Dokumentation Ihre Arbeitssicherheit erhöht. der erste, der darunter leiden wird, bist du, du wirst die Dinge wahrscheinlich ziemlich schnell vergessen.

5

von anderen zufälligen Dingen:

lerne eine Skriptsprache - vielleicht kennst du schon eine? Perl / Python / PHP kann zur Automatisierung von Aufgaben verwendet werden und ist in vielen Fällen besser als Bash für kompliziertere Aufgaben geeignet

Lernen Sie Ihre Werkzeuge - es ist eine endlose Liste ... ssh kommt wahrscheinlich zuerst in den Sinn. Schau dir dies und das an .

pQd
quelle
"es ist endlose Liste ..." - in der Tat; Ich habe danach gegoogelt, bevor ich diese Frage gestellt habe, war aber überwältigt. Ich glaube an KISS und möchte von einer einfachen Basis ausgehen und versuchen, die Dinge richtig zu lernen.
Slashmais
1
Ich möchte hinzufügen, dass die Punkte 1 und 4 am wichtigsten sind. Ich würde empfehlen, ein Konfigurationsmanagementsystem wie Puppet zu verwenden. Zumindest sollten Sie die Versionskontrolle (git / svn) verwenden, aber Puppet lässt Sie die Dinge einmal ausführen und ist dann wiederholbar, wenn Sie Dienste hinzufügen oder neu erstellen müssen. Ich glaube auch an Überentwicklung. Wenn Sie Ihre Infrastruktur so aufbauen, dass Sie 100 Maschinen benötigen, ist es einfacher, Ihre 10 Maschinen zu verwalten und bei Bedarf zu skalieren.
neoice
4
Ich denke, es ist Ansichtssache, aber Punkt 3 würde ich als den kritischsten bezeichnen. Ja, es ist scheiße, wenn die Buchhaltungsdatenbank einen halben Tag lang nicht verfügbar ist, aber es ist wirklich scheiße, wenn alle Finanzdaten aufgrund von fehlenden / schlechten Sicherungen weg sind. YMMV.
Joe Internet
@pQd - Ich würde auch Monitoring (Nagios, Opennms, etc.) und ein Ticketing-System hinzufügen. Muss nichts Erstaunliches sein: nur ein Platz, an dem Sie Ihre "todo" -Elemente aufbewahren können. Irgendwann kann es zu Leuten erweitert werden, die benötigte Cäs einreichen oder Warteschlangen für andere Teams entwickeln.
Warren
Lesen Sie Zeitmanagement für Systemadministratoren von Thomas Limoncelli. Sollte für alle, die per E-Mail arbeiten, gelesen werden müssen.
Warren
10

In der Praxis der System- und Netzwerkadministration von Limoncelli et al. Sollten Sie beginnen. Technologien werden kommen und gehen (und können bei Bedarf leicht gegoogelt werden), aber die Informationen in diesem Buch sind zeitlos (und von unschätzbarem Wert).

womble
quelle
2
Auch Essential System Administration von Frisch.
Jason Antman
10

Ein paar grundlegende Tools für den Anfang

Google. Nein im Ernst. Google ist der wahr gewordene Traum eines Systemadministrators. Es gibt keine bessere Möglichkeit, die Unmenge an Informationen im Internet zu nutzen. Und beschränken Sie sich nicht nur auf die Suche nach "Linux für Anfänger". Wenn Sie eine bestimmte Aufgabe ausführen möchten, wenden Sie sich an Google. Sie werden oft viel mehr Informationen finden, als Sie brauchen, und als Anfänger wird vieles wie eine andere Sprache erscheinen, aber das Lernen durch Handeln ist eine gute Möglichkeit, Dinge schnell zu lernen.

Tab-Vervollständigung. Über die Linux-Befehlszeile können alle Befehle, Verzeichnisbäume, Verzeichnisnamen und Dateinamen durch Tabulatoren ergänzt werden.

Manpages. Jeder Befehl und viele Systemkonfigurationsdateien (/ etc / fstab, / etc resolv.conf usw.) enthalten Manpages. Geben Sie einfach "man befehlsname" oder "man dateiname" ein, um zu sehen, ob das, was Sie suchen, eines hat. Oh und "q" beendet eine Manpage.

SSH. Eine der besten Möglichkeiten, auf ein Linux-System zuzugreifen. Wahrscheinlich der beste Weg, wenn Sie keinen physischen Zugriff auf das System haben.

Bildschirm. Screen ist eine fantastische kleine Anwendung, mit der Sie ein Terminal in mehrere verwandeln, Dinge aus dem Weg räumen / in den Hintergrund räumen und Dinge laufen lassen können, damit Sie später darauf zurückgreifen können.

Nano. Sie haben oben erwähnt, dass Sie dies bereits verwenden, aber ich dachte nur, ich würde meine zwei Cent einwerfen und sagen, dass ich damit einverstanden bin. Vi und Vim und all das ist in Ordnung, aber es ist die Einfachheit von Nano, die ich liebe. Es ist wie der Editor der Linux-Welt.

Finden und Grep. Suchen eignet sich hervorragend für die Suche nach Dateien, Grep eignet sich hervorragend für die Suche in Dateien. Beide können auf sehr einfache Weise verwendet werden, und beide können auf sehr komplexe Weise verwendet werden, aber beide sind in beiden Fällen sehr nützlich.

Sudo. Lässt dich wie root handeln, ohne root zu sein. Sehr hilfreich.

Dazu ein paar andere Tools, die ich im Kontext des nächsten Abschnitts erwähnen werde ...

Die Dinge, die Sie regelmäßig tun müssen

Überwachen Sie Ihr System. Überwachen Sie Ihre Festplattennutzung (df ist ein nützlicher Befehl und du auch für bestimmte Verzeichnisse), überwachen Sie Ihre laufenden Prozesse und Aufgaben (über den Befehl ps und die Befehle top), überwachen Sie die in Ihren Systemen angemeldeten Benutzer (die Benutzer und die Befehle who) Sagen Sie dies), und überwachen Sie Ihre Netzwerknutzung (Apps wie Kakteen sind dafür gut geeignet). Wenn Sie Zugriff auf eine X Windows-Umgebung haben, war GKrellM für mich immer ein sehr nützliches All-in-One-Tool zur Systemüberwachung.

Backups. Für die Liebe von Tux, Backups. Backup-Konfigurationsdateien, Backup-Ausgangsverzeichnisse, Backup-Anwendungsdaten. Backups. Auch wenn Sie lediglich die Daten vom Server auf eine CIFS / NFS-Freigabe auf einer anderen Box und einer externen Festplatte kopieren. Und ja, Sie sollten zwei Kopien jeder Sicherung aufbewahren und niemals auf demselben Medium / System. Stellen Sie sich das als Backup Ihrer Backups vor.

Überprüfen Sie Ihre Backups. Überprüfen Sie regelmäßig, ob Sie Daten aus Ihren Sicherungen auf Ihren Systemen wiederherstellen können. Leere / beschädigte / unvollständige Backups sind so nutzlos wie der Tag lang ist.

Verwenden Sie Ihre Protokolldateien. Dmesg, / var / log / messages und so ziemlich alles in / var / log. Wenn etwas nicht richtig funktioniert und Sie nicht wissen, warum, haben die Protokolle möglicherweise keine Antwort, aber sie können Ihnen definitiv dabei helfen, es zu finden. Und die Protokolle und Verzeichnisse in / var / log sind vernünftig benannt, sodass es nicht schwierig sein sollte, das richtige Protokoll zu finden. Sie müssen nicht jede Protokolldatei ständig überwachen, aber wenn Sie sie im Auge behalten, bleibt Ihr System gesund und sicher.

Halten Sie Ihr System auf dem neuesten Stand. Lassen Sie Ihre Software nicht Monate und Monate laufen, ohne aktualisiert zu werden, da dies zu vielen Kopfschmerzen und Problemen führen kann, wenn sich die Syntax oder die Abhängigkeiten der Konfigurationsdatei ändern. Verschiedene Distributionen haben unterschiedliche Update-Programme (apt-get, yum, etc.), aber was auch immer Sie verwenden, lernen Sie es und verwenden Sie es regelmäßig.

Schützen Sie Ihr System. Verwenden Sie Dinge wie iptables, PAM, hosts.allow / hosts.deny und ähnliches, um unerwünschten Zugriff auf Ihr System und dessen Verwendung zu verhindern.

Höre nie auf zu lernen. Um mit etwas fortzufahren, was ich zuvor gesagt habe (Lernen durch Handeln), sollten Sie sich mit virtuellen Maschinen befassen. Laden Sie VirtualBox herunter (oder wenn Sie noch bessere VMWare-Lizenzen haben) und machen Sie sich selbst zu einer virtuellen Linux-Maschine. Sie können jede Distribution auswählen, die Sie wirklich wollen, aber offensichtlich ist es wahrscheinlich am sinnvollsten, eine zu verwenden, die Sie in Ihrer Umgebung verwenden. Spielen Sie in der VM herum. Verwenden Sie sie wie eine Sandbox. Dinge einrichten, Dinge zerbrechen, Nachforschungen anstellen, lernen. Das Schöne an einer Sandbox-VM ist, dass es egal ist, was damit passiert. Wenn Sie es total abspritzen, machen Sie einfach ein neues. Oder bewahren Sie eine Sicherungskopie des Originals auf, nachdem Sie es eingerichtet haben, und verwenden Sie diese, wann immer Sie möchten.

Wie einige der anderen Beiträge in diesem Thread bereits erwähnt und angedeutet haben, könnten diese Listen wirklich nahezu unendlich sein, aber dies bringt Sie hoffentlich zu einem guten Start.

Kingfish
quelle
Die Syntax wurde aus meinen Beispielbefehlen "man" herausgenommen, sodass ich sie leicht anpasste. Sie ersetzen einfach "befehlsname" und "dateiname" durch den entsprechenden Befehl oder die entsprechende Datei.
Kingfish
Manchmal schreibe ich im Editor ESC: wq, das Problem ist, dass dies nicht selten vorkommt. Ich frage mich, warum ...
Mircea Vutcovici
8

Wenn Sie gerade erst anfangen und insbesondere einige Debian-Systeme (Ubuntu ist Debian im Kern) haben, empfehle ich die Debian-Referenz . Es bietet einen umfassenden Überblick über nahezu alle Aspekte der Systemadministration und sollte fast alles abdecken, was Sie zur Wartung einer kleinen Gruppe solcher Systeme benötigen.

Ich bin auch mit allen Punkten einverstanden, die pQd gemacht hat, und im Besonderen halte ich es für eine gute Idee, ein Wiki einzurichten, um alle Ihre Prozesse und Konfigurationen zu dokumentieren. In meiner Organisation verwenden wir Trac, aber jede Wiki-Engine sollte dies tun. Stellen Sie nur sicher, dass es eine gute Möglichkeit zum Anzeigen von Quellcode gibt, da dies für winzige Skripte und Befehlslisten nützlich ist.

Kamil Kisiel
quelle
3

Ehrlich gesagt ist die Linux-Systemadministration kein Bereich, in den man einfach "springen" kann.

Wenn Sie müssen , gibt es ein paar gute Bücher zu diesem Thema. O'Reilly hat zwei Bücher (Linux Network Administration und Linux System Administration), die Ihnen den Einstieg erleichtern sollen.

Wenn ich Sie wäre, würde ich ein paar Tage damit verbringen, mit verschiedenen Distributionen herumzuspielen, Software zu installieren, Dinge vom Typ Nagios / Cacti / Apache2 / SSH / NFS einzurichten und vielleicht eine Art Skriptsprache zu lernen (ich verwende Perl, ich selbst; aber viele meiner Admins bevorzugen Python. Es liegt wirklich an dir, was du lernen willst).

Und auf jeden Fall die Kommandozeile lernen. Greifen Sie nicht auf grafische Werkzeuge als Krücke zurück.

Lerne vi. Auch wenn Sie es nur gut genug lernen, um grundlegende Änderungen vorzunehmen, ist es in Ordnung - aber es ist wichtig, vi zu lernen, weil Sie manchmal auf einem System ohne Vim / Nano / Emacs festsitzen. In dieser Situation sind Sie froh, ein oder zwei Tage lang vi gelernt zu haben.

Wenn Sie Hilfe benötigen, senden Sie mir bitte eine E-Mail (meine E-Mail-Adresse wird aus Sicherheitsgründen entfernt). Gerne helfe ich Ihnen auch außerhalb von ServerFault.

Michael Pobega
quelle
Ich kenne Perl; Ich kenne / some / vi (Einfügen & Speichern & Beenden - Nano bevorzugen). Meine Situation ist glücklicherweise eine 'Niederdruck'-Situation, so dass ich nicht gleich ein Sys-Admin-Guru werden muss, sondern mich hineinwachsen kann (und Serverfehler und Sie (danke für das Vertrauen) fragen kann, wann ich wirklich hängen bleiben (gehört auch zu einer sehr hilfreichen LUG) Was ich brauche, sind die wenigen grundlegenden Tools, mit denen ich anfangen kann, und die Dinge, die ich regelmäßig tun muss, z Art von "richtigen" Ort, um zu starten und zu dem ich nach
Belieben werben
Dann empfehle ich Ihnen, Cacti, Nagios, Snort und Postfix einzurichten. Dies sind wahrscheinlich die vier Tools, mit denen Sie Ihr System am häufigsten überwachen. Durch das Einrichten dieser Einstellungen sparen Sie außerdem viel Zeit beim manuellen Überprüfen von Protokolldateien. Was das manuelle Überprüfen von Protokollen betrifft, ist alles in / var / log / wahrscheinlich eine gute Wette. Es gibt keine spezifischen Dateien, auf die ich verweisen kann, aber wenn etwas mit etwas nicht richtig funktioniert, ist es möglicherweise eine gute Wette, in / var / log
einzuchecken
Es war einmal, ich bevorzugte auch Nano, Slashmais. Sobald Sie anfangen, Dateien zu bearbeiten, möchten Sie vi ausführlicher kennenlernen. Ich kann jetzt nicht genug davon bekommen ...
Kyle Smith
3

Wenn Sie mit der Installation einer Anwendung auf den Servern zufrieden sind , ziehen Sie webmin in Betracht, da hier die meisten Protokollierungs- und Konfigurationsaufgaben aus einer Hand erledigt werden . Richten Sie es so ein, dass es mit SSL über einen hochrangigen Port läuft, und es macht sich bei einfacher Überprüfung bezahlt.

OldTroll
quelle
2

Ich erzähle Ihnen das größte Nicht-Geheimnis der System- und Netzwerkadministration. Bereit? Ok, hier ist es:

Lerne die Grundlagen. Lassen Sie mich näher darauf eingehen.

Jeder (oder fast jeder) kann lernen, was diese oder jene bestimmte Software tut und wie man diese Taste auf diesem Werkzeug drückt, damit x, y oder z funktionieren. Das ist nichts Besonderes.

Wenn Sie ein guter Sys / Net-Administrator sein möchten , lernen Sie die Dinge unter der Haube. Wie sieht der Ablauf bei einer typischen Netzwerkverbindung aus? Was ist der Unterschied zwischen einem Frame und einem Paket? Was bedeutet Load Average auf einem Unix-System? Was ist der typische Startvorgang für eine Maschine (dieser allein liefert, wenn Sie ihn von Anfang bis Ende verfolgen, eine Fülle von Kenntnissen)?

Sobald Sie die Grundlagen verstanden haben und sie wirklich gut verstehen, ist es viel einfacher, Wissen auf eine gute Grundlage zu legen. Aber wenn Sie ganz oben anfangen und versuchen, bestimmte Software-Teile zu erlernen, ohne zu wissen, was darunter vor sich geht, werden Sie ... im Grunde genommen nur ein weiterer High-Tech-Hausmeister.

DictatorBob
quelle
2

Finden Sie zuerst Ihre Protokolle. Die meisten Linux-Distributionen loggen sich in / var / log / messages, obwohl ich ein paar Logs in / var / log / syslog gesehen habe. Wenn etwas nicht stimmt, sind höchstwahrscheinlich einige relevante Informationen in den Protokollen enthalten. Wenn Sie überhaupt mit E-Mails zu tun haben, vergessen Sie / var / log / mail nicht. Überprüfen Sie Ihre Anwendungen noch einmal und finden Sie heraus, ob sie sich außerhalb von syslog an einer lächerlichen Stelle befinden.

Verbessere deine vi Fähigkeiten. Nano ist vielleicht das, was all die coolen Kids heutzutage gebrauchen, aber die Erfahrung hat mich gelehrt, dass vi der einzige Texteditor ist, der garantiert auf dem System ist. Sobald Sie sich an die Tastaturkürzel gewöhnt haben und Ihre eigenen Trigger erstellen, ist vi für Sie wie eine Selbstverständlichkeit.

Lesen Sie die Manpage, führen Sie die folgenden Befehle auf jedem Computer aus und kopieren Sie die Ergebnisse in Ihre Dokumentation:

hostname
cat /etc/*release*
cat /etc/hosts
cat /etc/resolv.conf
cat /etc/nsswitch
df -h
ifconfig -a
free -m
crontab -l
ls /etc/cron.d
echo $SHELL

Dies ist der Anfang Ihrer Dokumentation. Mit diesen Befehlen können Sie Ihre Umgebung kennen und später Probleme eingrenzen.

Blättern Sie in Ihren Protokollen und suchen Sie nach "error" oder "failed". Das gibt Ihnen eine Vorstellung davon, was nicht so funktioniert, wie es sollte. Ihre Benutzer geben Ihnen ihre Meinung zu dem, was falsch ist, und hören genau zu, was sie zu sagen haben. Sie verstehen das System nicht, sehen es aber anders als Sie.

Wenn Sie ein Problem haben, überprüfen Sie die Dinge in dieser Reihenfolge:

  1. Festplattenspeicher (df -h): Linux und einige Apps, die unter Linux ausgeführt werden, führen einige sehr seltsame Aktionen aus, wenn der Festplattenspeicher knapp wird. Dies scheint nichts zu tun zu haben, bis Sie ein zu 100% volles Dateisystem gefunden haben.

  2. Oben: Oben informiert Sie, wenn ein Prozess feststeckt und alle verfügbaren CPU-Zyklen aufgebraucht sind. Nichts sollte für einen längeren Zeitraum 99% der CPU verbrauchen. Wenn es ein legitimer Prozess ist, sollte es wahrscheinlich auf und ab schwanken. Wenn Sie oben sind, überprüfen Sie ...

  3. Systemlast: Auf einem Standardserver oder einer Workstation sollte die Systemlast normalerweise unter 3 liegen. Die Systemlast basiert auf CPU, Arbeitsspeicher und E / A.

  4. Arbeitsspeicher (free -m): Die RAM-Nutzung unter Linux ist etwas anders. Es ist nicht ungewöhnlich, dass ein Server fast seinen gesamten Arbeitsspeicher verbraucht. Keine Panik, wenn Sie das sehen, ist es meistens nur ein Cache, der bei Bedarf gelöscht wird. Beachten Sie jedoch genau, wie viel Swap verwendet wird. Wenn möglich, halten Sie dies so nahe wie möglich an Null. Unzureichender Speicher kann zu Leistungsproblemen aller Art führen.

  5.  Protokolle: Kehren Sie zu Ihren Protokollen zurück, und führen Sie tail -500 / var / log / messages | aus mehr und fang an zu lesen und zu sehen, was los ist. Hoffentlich können die Protokolle Sie in die Richtung lenken, in die Sie als Nächstes gehen müssen.

Ein gut gewarteter Linux-Server kann jahrelang problemlos laufen. Wir haben nur einen Computer heruntergefahren, der seit 748 Tagen aktiv war, und wir haben ihn nur heruntergefahren, weil wir die Anwendung auf neue Hardware migriert hatten. Hoffentlich hilft Ihnen dies dabei, Ihre Füße nass zu machen und einen guten Start hinzulegen.

Erstellen Sie zum Schluss immer eine Kopie der Konfigurationsdatei, die Sie ändern möchten, und kopieren Sie immer die Zeile, die Sie ändern. Kommentieren Sie das Original aus und geben Sie dabei den Grund für die Änderung an. Auf diese Weise haben Sie die Gewohnheit, unterwegs zu dokumentieren, und können Ihre Haut 9 Monate später schonen.

ibuys
quelle
1

gute Frage.

Mein Rat. Lerne deine Shell zu benutzen.

Standard ist bash. Sie können einfach Hilfe eingeben, um in die Dokumentation zu gelangen.

Pfeifen lernen "|" um die Ausgabe eines Befehls an die Eingabe eines zweiten Befehls zu übergeben.

Eine letzte Sache, die mir vor langer Zeit sehr geholfen hat: Linux One Page Manual

Arbeite hart, gib niemals auf.

In 3-4 Jahren wirst du genug Wissen haben und viele Dinge kommen von selbst :)

Evil Dead
quelle