Toolkit & Habits for Linux Network & System Administration [chiuso]


20

Mi è stato affidato il compito di amministrare una piccola rete di ufficio e diverse workstation che eseguono principalmente Debian e Ubuntu. Esistono due server: un database e un server di stampa e un server di backup e file.

Essendo relativamente nuovo su questo lato delle cose, sapendo abbastanza per aiutarmi in una certa misura su Linux, mi piacerebbe sapere quali strumenti software e quali compiti / abitudini posso usare / acquisire per imparare questo campo ed essere efficace mentre lo faccio.

Non ho bisogno di sapere qual è il migliore, solo ciò che un amministratore di sistema principiante può usare come pacchetto iniziale per imparare e usare come base per crescere nella corretta amministrazione del sistema.

Ciò di cui ho bisogno sono quei pochi strumenti di base con cui iniziare e il tipo di cose che devo fare regolarmente, ad esempio: quali registri controllare, quando e cosa monitorare, il tipo di posto "giusto" da cui iniziare e da cui posso annuncio di cui ho bisogno.


Argomento soggettivo, all'estremo. Come sarebbe una risposta "giusta"?
Bill Weiss,

Risposte:


16

1

monitorare i processi aziendali critici [ad esempio: il database è in esecuzione e risponde a query semplici], i parametri di base del sistema operativo [spazio libero su disco, carico medio]. è possibile utilizzare Nagios o zabbix per esempio.

2

raccogliere statistiche per stabilire alcune basi. in futuro ciò sarà utile per la pianificazione della capacità. puoi usare munin , zabbix, cactus ecc.

3

eseguire backup automatici pianificati, archiviarne alcuni offline, offsite. monitorare se ci sono riusciti, di volta in volta controllare manualmente se è possibile recuperare i dati critici. potresti voler usare backupninja per orchestrarli o Zmanda , ma ci sono strumenti molto più utili.

4

documento. per il tuo bene. non pensare che la mancanza di documentazione aumenti la sicurezza del tuo lavoro. il primo che soffrirai per mancanza di te, probabilmente dimenticherai le cose abbastanza rapidamente.

5

da altre cose casuali:

imparare un linguaggio di scripting - forse ne conosci già uno? perl / python / php può essere utilizzato per automatizzare le attività e in molti casi sono più adatti di bash per attività più complicate

impara i tuoi strumenti - è una lista infinita ... ssh viene in mente probabilmente per primo. dai un'occhiata a questo e quello .


"è una lista infinita ..." - anzi; Ho cercato su Google prima di porre questa domanda, ma sono stato sopraffatto. Credo in KISS e voglio iniziare da una base semplice e facile e cercare di imparare le cose nel modo giusto.
Slashmais,

1
Vorrei aggiungere che i punti 1 e 4 sono i più importanti. Consiglierei di utilizzare un sistema di gestione della configurazione come Puppet. per lo meno, dovresti usare il controllo versione (git / svn), ma Puppet ti permetterà di fare le cose una volta e poi sarà ripetibile se dovessi aggiungere o ricostruire servizi. Credo anche nell'ingegneria eccessiva. se costruisci la tua infrastruttura come se avessi bisogno di 100 macchine, sarà più facile gestire le tue 10 macchine e ingrandirle se necessario.
neoice

4
Immagino sia una questione di opinione, ma metterei il punto 3 come il più critico. Sì, fa schifo quando il database di contabilità è inattivo da mezza giornata, ma fa davvero schifo quando tutti i dati finanziari sono andati a causa di backup assenti / scarsi. YMMV.
Joe Internet,

@pQd - Aggiungerei anche il monitoraggio (nagios, opennms, ecc.) e un sistema di ticketing. Non deve essere niente di straordinario: solo un posto dove tenere i tuoi oggetti "todo". Alla fine può essere espanso in persone che inviano caes di cui hanno bisogno o che sviluppano code per altri team.
Warren,

leggi Gestione del tempo per gli amministratori di sistema di Thomas Limoncelli. Dovrebbe essere richiesta la lettura per tutti coloro che lavorano via e-mail.
Warren,

10

La pratica dell'amministrazione di sistema e di rete , di Limoncelli e altri, è il punto di partenza. Le tecnologie andranno e verranno (e potranno essere facilmente cercate su Google come richiesto), ma le informazioni in quel libro sono senza tempo (e inestimabili).


2
Anche Essential System Administration di Frisch.
Jason Antman,

10

Alcuni strumenti di base per iniziare

Google. No sul serio. Google è il sogno di un amministratore di sistema che diventa realtà. Non esiste un modo migliore per sfruttare la grande quantità di informazioni su Internet. E non limitarti a cercare "linux per principianti"; se hai un compito specifico che stai cercando di svolgere, Google per quella cosa specifica. Troverai spesso molte più informazioni di quelle di cui hai bisogno e come principiante molte sembreranno un'altra lingua, ma imparare facendo è un buon modo per raccogliere rapidamente le cose.

Tab-completamento. La riga di comando di Linux consente il completamento con tabulazione di tutti i comandi, gli alberi delle directory, i nomi delle directory e i nomi dei file.

Pagine man. Ogni comando e molti file di configurazione del sistema (/ etc / fstab, / etc resolv.conf, ecc.) Hanno pagine Man. Digita "man nome_comando" o "man nome_file" per vedere se quello che stai cercando ne ha uno. Oh e "q" esce da una pagina man.

SSH. Uno dei modi migliori per accedere a un sistema Linux. Probabilmente il modo migliore se non si ha accesso fisico al sistema.

Schermo. Lo schermo è una fantastica piccola applicazione che ti consente di trasformare un terminale in molti, ti consente di spostare le cose a modo tuo / in background e ti consente di lasciare le cose in esecuzione in modo da poterle tornare in seguito.

Nano. Hai detto sopra che lo usi già, ma ho pensato di buttare i miei due centesimi e dire che sono d'accordo. Vi e Vim e tutti quelli vanno bene e tutti, ma è la semplicità di Nano che adoro. È come il Blocco note del mondo Linux.

Trova e Grep. Trova è ottimo per la ricerca di file, Grep è ottimo per la ricerca di file. Entrambi possono essere usati in modi molto semplici, ed entrambi possono essere usati in modi molto complessi, ma entrambi sono abbastanza utili in entrambi i modi.

Sudo. Ti consente di agire come root, senza essere root. Molto utile.

Inoltre alcuni altri strumenti che menzionerò nel contesto della prossima sezione ...

I tipi di cose che devi fare regolarmente

Monitora il tuo sistema. Monitorare l'utilizzo del disco (df è un comando utile e du anche per directory specifiche), monitorare i processi e le attività in esecuzione (tramite il comando ps e i comandi principali), monitorare gli utenti che hanno effettuato l'accesso ai propri sistemi (gli utenti e chi saranno i comandi ditelo) e monitorate l'utilizzo della rete (app come i cactus vanno bene per quello). Se ti capita di avere accesso a un ambiente X Windows, ho sempre trovato GKrellM uno strumento di monitoraggio del sistema tutto in uno molto utile.

I backup. Per amore di Tux, backup. File di configurazione del backup, directory home di backup, dati dell'applicazione di backup. I backup. Anche se tutto ciò che stai facendo è copiare semplicemente i dati dal server in una condivisione CIFS / NFS su un'altra scatola e un disco rigido esterno. E sì, è necessario conservare due copie di ciascun backup e mai sullo stesso supporto / sistema. Pensalo come backup dei tuoi backup.

Controlla i tuoi backup. Controllare regolarmente per assicurarsi di poter ripristinare i dati dai backup sui sistemi. I backup vuoti / corrotti / incompleti sono inutili quanto la giornata è lunga.

Usa i tuoi file di registro. Dmesg, / var / log / messages e praticamente qualsiasi cosa nel periodo / var / log. Se qualcosa non funziona correttamente e non sai perché, i registri potrebbero non avere la risposta, ma possono sicuramente aiutarti a trovarla. E i registri e le directory in / var / log hanno un nome ragionevole, quindi trovare il registro giusto non dovrebbe essere difficile. Non dovrai monitorare costantemente ogni file di registro, ma tenerli d'occhio ti aiuterà a mantenere il tuo sistema sano e sicuro.

Mantieni il tuo sistema aggiornato. Non lasciare andare il tuo software per mesi e mesi senza essere aggiornato, perché può causare molti mal di testa e rompere le cose quando cambiano la sintassi dei file o le dipendenze. Diverse distribuzioni hanno programmi di aggiornamento diversi (apt-get, yum, ecc.) Ma qualunque sia quello che usi, impara e usalo regolarmente.

Mantieni il tuo sistema sicuro. Usa cose come iptables, PAM, hosts.allow / hosts.deny e simili per impedire l'accesso e l'uso indesiderati del tuo sistema.

Mai smettere di imparare. Per continuare con qualcosa che ho detto prima (apprendendo facendo), qualcosa che dovresti esaminare sono le macchine virtuali. Scarica VirtualBox (o se hai le licenze VMWare ancora meglio) e renditi una macchina virtuale Linux. Puoi scegliere qualsiasi distribuzione tu voglia davvero, ma ovviamente ha probabilmente più senso andare con quella che stai usando nel tuo ambiente. Gioca nella VM .. usalo come un sandbox. Prepara cose, rompi cose, investiga, impara. Il bello di una sandbox VM è che non importa cosa le succede. Se lo mantieni completamente, creane uno nuovo. Oppure conserva una copia di backup dell'originale dopo averlo configurato e riutilizzalo ogni volta che è necessario.

Come alcuni degli altri post di questo thread hanno menzionato e accennato, questi elenchi potrebbero essere quasi infiniti, ma speriamo che questo ti faccia iniziare bene.


Ha rimosso la sintassi dai miei comandi "man" di esempio, quindi li ho leggermente adattati. Sostituiresti semplicemente "nome_comando" e "nome_file" con il comando o il file appropriato.
Kingfish,

A volte in Blocco note e mi ritrovo a digitare ESC,: il problema è che non è un caso raro. Mi chiedo perché ...
Mircea Vutcovici

8

Se hai appena iniziato, e soprattutto dato che hai dei sistemi Debian (Ubuntu è Debian al suo centro), consiglio vivamente il Debian Reference . È un'ottima panoramica di quasi tutti gli aspetti dell'amministrazione del sistema e dovrebbe coprire quasi tutto ciò che è necessario sapere per mantenere un piccolo set di sistemi come questi.

Concordo anche con tutti i punti espressi da pQd, e più specificamente penso che sarebbe una buona idea per te creare un wiki per documentare tutti i tuoi processi e configurazioni. Nella mia organizzazione utilizziamo Trac, ma qualsiasi motore wiki dovrebbe fare, assicurati solo che abbia un bel modo di visualizzare il codice sorgente poiché è utile per piccoli script e elenchi di comandi.


3

Onestamente, l'amministrazione del sistema Linux non è un campo in cui puoi semplicemente "saltare".

Se si deve , però, ci sono un paio di buoni libri sull'argomento. O'Reilly ha due libri (Linux Network Administration e Linux System Administration) che dovrebbero iniziare.

Personalmente, se fossi in te passerei qualche giorno a scherzare con diverse distribuzioni, installando software, configurando cose di tipo Nagios / Cacti / Apache2 / SSH / NFS e forse imparando una sorta di linguaggio di scripting (io uso Perl, me stesso, ma molti dei miei colleghi amministratori preferiscono usare Python. Dipende da te quello che vuoi imparare, però).

E sicuramente impara la riga di comando. Non ripiegare sugli strumenti grafici come stampella.

Impara vi. Anche se lo impari abbastanza bene per apportare modifiche di base, va bene, ma è importante imparare vi perché a volte sei bloccato su un sistema senza Vim / Nano / Emacs. In quella situazione, sarai felice di aver trascorso un giorno o due a imparare vi.

Se hai bisogno di aiuto, non esitare a inviarmi un'e-mail (la mia e-mail è [rimossa per motivi di sicurezza]) - Sarei felice di aiutarti al di fuori di ServerFault.


Conosco Perl; Conosco / alcuni / vi (come inserire, salvare e uscire - preferire nano). La mia situazione è fortunatamente a "bassa pressione", quindi non ho bisogno di diventare un guru amministratore di sistema, posso crescere in esso (e avere un errore del server e tu (grazie per la fiducia) chiedere quando restano davvero bloccati (appartengono anche a un LUG molto utile). Ciò di cui ho bisogno sono quei pochi strumenti di base con cui iniziare, e il tipo di cose che devo fare regolarmente, ad esempio: quali registri per controllare, quando e cosa monitorare, il tipo di posto "giusto" per iniziare e al quale posso fare annunci di cui ho bisogno
slashmais,

Quindi ti consiglio di cercare Cacti, Nagios, Snort e Postfix. Questi saranno probabilmente i quattro strumenti che utilizzi di più per monitorare il tuo sistema. L'impostazione di questi consente inoltre di risparmiare molto tempo controllando manualmente i file di registro. Per quanto riguarda il controllo manuale dei registri, qualsiasi cosa in / var / log / è probabilmente una buona scommessa. Non ci sono file specifici che posso
indicarti

Una volta preferivo anche nano, slashmais. Una volta che inizi a modificare i file continuamente, ti consigliamo di imparare vi in ​​modo più dettagliato. Non ne ho mai abbastanza adesso ...
Kyle Smith,

3

Se hai dimestichezza con l'installazione di un'applicazione sui server, prendi in considerazione webmin in quanto fornisce un negozio unico per la maggior parte della registrazione e della configurazione. Impostalo per funzionare su una porta di alto ordine usando SSL e si ripaga da solo in modo semplice.


2

Ti dirò il massimo non segreto dell'amministrazione del sistema e della rete. Sei pronto? Ok, eccolo qui:

Impara i fondamenti. Lasciami elaborare.

Chiunque (o quasi) può imparare cosa fa questo o quel particolare software e come premere questo pulsante su quello strumento per far funzionare x, yo z. Non è niente di speciale.

Se vuoi essere un buon amministratore di sistema / net, impara le cose nascoste. Qual è la sequenza di eventi in una tipica connessione di rete? Qual è la differenza tra un frame e un pacchetto? Cosa significa veramente media di carico su un sistema Unix? Qual è il tipico processo di avvio per un computer (quello da solo, se lo segui dall'inizio alla fine, fornirà una vasta conoscenza).

Una volta compresi i fondamenti e capiti molto bene, mettere le conoscenze su una buona base è molto più semplice. Ma se inizi dall'alto e provi ad apprendere specifici pezzi di software senza sapere cosa succede sotto, questo ti renderà ... solo un altro bidello high-tech, in pratica.


2

Prima di tutto, trova i tuoi registri. La maggior parte delle distro Linux accede a / var / log / messages, anche se ho visto un paio di log su / var / log / syslog. Se qualcosa non va, molto probabilmente ci saranno alcune informazioni rilevanti nei registri. Inoltre, se hai a che fare con la posta elettronica, non dimenticare / var / log / mail. Ricontrolla le tue applicazioni, scopri se qualcuno di loro accede da qualche parte ridicolo, fuori da syslog.

Migliora le tue abilità vi. Nano potrebbe essere quello che stanno usando tutti i ragazzi fantastici in questi giorni, ma l'esperienza mi ha insegnato che vi è l'unico editor di testo che è garantito sul sistema. Una volta che ti sarai abituato alle scorciatoie da tastiera e inizi a creare i tuoi trigger, vi sarà come una seconda natura per te.

Leggere la pagina man, quindi eseguire i seguenti comandi su ogni macchina e copiare i risultati nella documentazione:

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

Ciò servirà come inizio della tua documentazione. Questi comandi ti consentono di conoscere il tuo ambiente e possono aiutarti a restringere i problemi in seguito.

Scorri i log e cerca "errore" o "non riuscito". Questo ti darà un'idea di ciò che non funziona come dovrebbe. I tuoi utenti ti daranno la loro opinione su ciò che è sbagliato, ascoltando attentamente ciò che hanno da dire. Non capiscono il sistema, ma lo vedono in un modo diverso da te.

Quando hai un problema, controlla le cose in questo ordine:

  1. Spazio su disco (df -h): Linux e alcune app che girano su Linux fanno cose molto strane quando lo spazio su disco si esaurisce. Può sembrare non correlato, fino a quando non controlli e trovi un filesystem pieno al 100%.

  2. Top: Top ti farà sapere se hai qualche processo bloccato là fuori che consuma tutti i tuoi cicli CPU disponibili. Niente dovrebbe consumare il 99% di CPU per un periodo di tempo prolungato. Se è un processo legittimo, dovrebbe probabilmente fluttuare su e giù. Mentre sei in cima, controlla ...

  3. Carico di sistema: il carico di sistema dovrebbe normalmente essere inferiore a 3 su un server o una workstation standard. Il carico del sistema si basa su CPU, memoria e I / O.

  4. Memoria (free -m): l'utilizzo della RAM in Linux è leggermente diverso. Non è raro vedere un server con quasi tutta la sua RAM esaurita. Non fatevi prendere dal panico, se vedete questo, è principalmente solo cache e verrà cancellato secondo necessità. Tuttavia, prestare molta attenzione alla quantità di swap in uso. Se possibile, mantienilo il più vicino possibile a zero. Una memoria insufficiente può portare a tutti i tipi di problemi di prestazioni.

  5.  Registri: torna ai tuoi registri, esegui tail -500 / var / log / messages | di più e inizia a leggere e vedere cosa sta succedendo. Si spera che i registri siano in grado di indicarti la direzione in cui devi procedere.

Un server Linux ben mantenuto può funzionare per anni senza problemi. Ne abbiamo appena chiuso uno che era in esecuzione da 748 giorni e lo abbiamo spento solo perché avevamo migrato l'applicazione sul nuovo hardware. Spero che questo ti aiuti a bagnare i piedi e a iniziare bene.

Un'ultima cosa, crea sempre una copia di un file di configurazione che intendi modificare e copia sempre la riga che stai modificando e commenta l'originale, aggiungendo il motivo della modifica. Questo ti farà prendere l'abitudine di documentarti mentre procedi e potrebbe salvare la tua pelle 9 mesi lungo la strada.


1

buona domanda.

Il mio consiglio. Impara a usare la tua shell.

Lo standard è bash. Puoi semplicemente digitare help, per accedere al documentaion.

impara le pipe "|" per ottenere l'output da un comando all'input di un secondo comando.

Un'ultima cosa, mi ha aiutato molto tempo fa: Linux One Page Manual

lavorare sodo, non mollare mai.

In 3-4 anni avrai abbastanza conoscenze e molte cose provengono da se stesso :)

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.