Einige Aspekte der VDS-Serververwaltung unter Linux

VDS (Virtual Dedicated Server) ist ein Dienst, bei dem der Benutzer einen virtuellen dedizierten Server mit maximalen Berechtigungen erhält . Dies ist eine Emulation eines realen physischen Servers. Er verfügt über Root-Zugriff, die Möglichkeit, beliebige Betriebssysteme und beliebige Software zu installieren. Gleichzeitig ist es viel billiger als die Anmietung eines physischen Servers mit vergleichbarer Kapazität.



Sie können das Betriebssystem von Ihrem Image aus auf den Server stellen oder das vorgefertigte Image in der Systemsteuerung verwenden.







Angenommen, wir haben Debian 10 und den Nginx-Webserver installiert, der im Standard-Repository ( apt install nginx) enthalten ist. Mal sehen, mit welchen nützlichen Dienstprogrammen und Befehlen Sie Ihren Linux-Server verwalten können. Betrachten wir Nginx separat und den VDS-Server selbst als Ganzes.



Inhalt





Zunächst ist es ratsam, den Webserver selbst zu verstehen. Nginx startet nach Abschluss der Installation. Wir überprüfen diese Tatsache:



systemctl status nginx


Ausgabe:



● nginx.service - A high performance web server and a reverse proxy server
Loaded: loaded (/lib/systemd/system/nginx.service; enabled; vendor preset: enabled)
Active: active (running) since Mon 2020-08-17 08:52:54 UTC; 4min 23s ago
Docs: man:nginx(8)
Main PID: 3942 (nginx)
Tasks: 3 (limit: 4719)
Memory: 6.1M
CGroup: /system.slice/nginx.service
├─3942 nginx: master process /usr/sbin/nginx -g daemon on; master_process on;
├─3943 nginx: worker process
└─3944 nginx: worker process


Oder geben Sie einfach die IP-Adresse des Servers in den Browser ein:



http://your_server_ip


Wenn wir unsere Site-Dateien noch nicht auf den Server kopiert haben, wird die Standard-Nginx-Headerseite angezeigt.







Grundlegende Befehle zum Verwalten von Nginx



Hinweis. Wenn der Benutzer keine Root-Rechte hat, muss er für jeden ausgeführten Befehl mit dem Befehl Root-Rechte erhalten sudo.



Stoppen des Webservers:



sudo systemctl stop nginx


Wenn als root ausgeführt, lautet der Befehl:



systemctl stop nginx


Start nach Stopp:



systemctl start nginx


Anhalten und neu starten (neu starten):



systemctl restart nginx


Wenn Sie gerade einige Konfigurationsänderungen vorgenommen haben, kann Nginx neu gestartet werden, ohne die aktuellen Verbindungen zu verlieren. Dies erfolgt mit folgendem Befehl:



systemctl reload nginx


Standardmäßig ist Nginx so konfiguriert, dass es beim Booten des Servers automatisch gestartet wird. Dieses Verhalten kann mit dem folgenden Befehl geändert werden:



systemctl disable nginx


Aktivieren Sie den Nginx-Autostart beim Serverstart erneut:



systemctl enable nginx


Standardmäßig verfügt Nginx über einen Satz von Serverblockregeln, die für eine Domäne konfiguriert sind . Es wird davon ausgegangen, dass Sie nur eine Site auf Ihrem Server hosten. Standardmäßig sollte es sich im Verzeichnis befinden /var/www/html.



Angenommen, Sie möchten mehrere Sätze von Serverblöcken für mehrere Sites in Nginx erstellen oder die Dateien der aktuellen Site in ein anderes Verzeichnis verschieben /var/www/your_domain.



Dies erfolgt mit den folgenden Befehlen.



Zuerst erstellen wir das erforderliche Verzeichnis auf dem Server.



mkdir -p /var/www/your_domain/html


Anschließend weisen wir den Eigentümer dieses Verzeichnisses mithilfe einer Variablen zu $USER, die dem aktuellen Benutzer entsprechen soll:



chown -R $USER:$USER /var/www/your_domain/html


Wir platzieren die Hauptseite im angegebenen Verzeichnis index.html.



Dann müssen Sie ein geeignetes Regelwerk für Nginx erstellen. Erstellen Sie in einem beliebigen Texteditor eine Datei /etc/nginx/sites-available/your_domainund kopieren Sie die Konfiguration aus der dortigen Standarddatei nur mit der geänderten Adresse und Domäne:



server {
listen 80;
listen [::]:80;

root /var/www/your_domain/html;
index index.html index.htm index.nginx-debian.html;

server_name your_domain www.your_domain;

location / {
try_files $uri $uri/ =404;
}
}


Schließlich aktivieren wir diese Konfiguration, indem wir einen Symlink zur neuen Konfigurationsdatei in das Verzeichnis schreiben, das sites-enabledNginx beim Booten liest:



ln -s /etc/nginx/sites-available/your_domain /etc/nginx/sites-enabled/


Nach dem Neustart zeigt Nginx die entsprechende Seite für Anforderungen your_domainund an www.your_domain.



Serververwaltung



Welche Fragen haben Benutzer am häufigsten bei der Verwaltung eines Linux-Servers? Welche Tools können Sie auch unerfahrenen Administratoren empfehlen?



Supervisor installieren



Supervisor ist ein Client / Server-System, über das der Administrator die Prozesse auf dem Server steuert. Das Tool erstellt Prozesse als Unterprozesse in eigenem Namen.



Die Installation von Supervisord unter Debian oder Ubuntu ist äußerst einfach:



apt-get install supervisor


Danach wird der Supervisor-Daemon bereits ausgeführt und startet bei jedem Systemstart.



Neue Programme werden über Konfigurationsdateien im Verzeichnis an den Supervisor übergeben /etc/supervisor/conf.d. Für ein Skript long.shkönnte die Konfigurationsdatei beispielsweise folgendermaßen aussehen:



[program:long_script]
command=/usr/local/bin/long.sh
autostart=true
autorestart=true
stderr_logfile=/var/log/long.err.log
stdout_logfile=/var/log/long.out.log


Dementsprechend wird das Skript bei jedem Systemstart automatisch gestartet und beim Beenden automatisch neu gestartet. Dieser Wert kann "false" (nicht neu gestartet) oder "unerwartet" (nur neu gestartet, wenn er mit einem unerwarteten Fehlercode beendet wird, standardmäßig mit einem anderen Code als 0 oder 2) sein.



Die letzten beiden Zeilen sind die Adressen der Magazine. Dies ist die Mindestkonfigurationsvorlage für ein Supervisor-Programm.



Nach dem Erstellen einer Konfigurationsdatei für ein bestimmtes Programm führen wir zwei Befehle aus, damit der Supervisor die neuen Konfigurationen erneut liest und anwendet:



supervisorctl reread


supervisorctl update


Zu diesem Zeitpunkt sollte unser Programm oder Skript bereits ausgeführt werden, was durch Protokolle überprüft werden kann.



Das Dienstprogramm supervisorctlverfügt über einen interaktiven Modus, in dem es ohne Argumente ausgeführt wird:



$ supervisorctl
long_script RUNNING pid 12614, uptime 1:49:37
supervisor>


In diesem Modus zeigt Supervisorctl zunächst den Status und die Laufzeit aller Programme unter der Aufsicht des Supervisors und anschließend dessen Befehlszeile an. Dort können Sie eingeben help- und eine Liste der verfügbaren Befehle anzeigen:



supervisor> help

default commands (type help ):
=====================================
add clear fg open quit remove restart start stop update
avail exit maintail pid reload reread shutdown status tail version


Wie Sie sehen, können Sie Programme über die Befehlszeile mit den Befehlen start, stop und restart starten, stoppen und neu starten.



Verwenden Sie zum Beenden des Supervisors Strg-C oder den Befehl quit:



supervisor> quit


Analyse des freien Speicherplatzes



Das Standarddienstprogramm zum Anzeigen von Informationen zu bereitgestellten Partitionen ist df. Es zeigt eine Liste der angeschlossenen Geräte und Informationen zum belegten Speicherplatz an.



df  


Die Option -h aktiviert eine vom Menschen lesbare Ausgabe (dh in Megabyte oder Gigabyte):



$ df -h
     % C 
devtmpfs 925M 0 925M 0% /dev
tmpfs 936M 56K 936M 1% /dev/shm
tmpfs 936M 1,9M 934M 1% /run
tmpfs 936M 0 936M 0% /sys/fs/cgroup
/dev/sda3 15G 11G 4,2G 71% /
tmpfs 936M 192K 936M 1% /tmp
/dev/sdb4 133G 126G 974M 100% /home
tmpfs 188M 20K 188M 1% /run/user/42
tmpfs 188M 7,1M 181M 4% /run/user/1000


Informationen zu einem bestimmten Verzeichnis (z. B. / home):



df -h /home


Informationen zu Partitionen mit einem bestimmten Dateisystem:



df -h -t ext4


Suchen Sie mit dem Befehl nach Dateien find



Suche nach Dateinamen:



find -name "query"


Suche nach Namen ohne Berücksichtigung der Groß- und Kleinschreibung:



find -iname "query"


Suche "Reverse" nach Dateien, die nicht dem angegebenen Muster entsprechen:



find -not -name "query_to_avoid"


oder



find \! -name "query_to_avoid"


Suche nach Dateityp



find -type _ 


Einige der gebräuchlichen Deskriptoren sind:



  • f - reguläre Datei

  • d - Verzeichnis

  • l - symbolische Verbindung

  • c - Zeichen-E / A-Gerätedateien

  • b - Blockieren Sie E / A-Gerätedateien


Mit dem folgenden Befehl werden beispielsweise alle auf dem System installierten Zeichen-E / A-Geräte aufgelistet:



find / -type c
/dev/parport0
/dev/snd/seq
/dev/snd/timer
/dev/autofs
/dev/cpu/microcode
/dev/vcsa7
/dev/vcs7
/dev/vcsa6
/dev/vcs6
/dev/vcsa5
/dev/vcs5
/dev/vcsa4
. . .


Es gibt einen Filter nach Größe und Zugriffs- / Änderungszeit. Hier ist beispielsweise ein Befehl zum Suchen aller Dateien mit weniger als 50 Byte:



find / -size -50c


Suchen Sie nach allen Dateien über 700 Megabyte:



find / -size +700M


Um nach Zugriffszeit, Änderung oder Änderung von Datei-Metainformationen zu suchen, werden die Parameter '-atime', '-mtime' und '-ctime' mit Plus- und Minus-Symbolen verwendet, um einen Bereich anzuzeigen, der größer bzw. kleiner als der angegebene ist.



Suchen Sie nach Dateien, die vor weniger als einem Tag geändert wurden:



find / -mtime -1


Dateien mit Zugriffszeit vor mehr als drei Tagen:



find / -atime +3


Dateien, die sich in letzter Minute geändert haben:



find / -mmin -1


Dateien, die neuer als die angegebene Datei sind:



find / -newer myfile


Die Suche nach Eigentümer ('-user', '-group') und Dateien mit bestimmten Berechtigungen ('-perm') ist verfügbar. Bei allen gefundenen Dateien können Sie sofort eine Aktion ausführen ('-exec').



Testen von TCP- und UDP-Verbindungen



Linux wird mit einer Vielzahl nützlicher Dienstprogramme geliefert. Einige Systemadministratoren können die meisten Aufgaben nur mit den integrierten Tools ausführen, ohne zusätzliche Software zu installieren. Das wahre Schweizer Messer eingebetteter Linux-Tools ist das Netzwerkdienstprogramm netcat. Allgemeine Syntax:



netcat [options] host port


Dieser Befehl initiiert eine TCP-Verbindung zum angegebenen Host am angegebenen Port. Wenn Sie anstelle von TCP eine UDP-Verbindung testen müssen, geben Sie die folgende Option an -u:



netcat -u host port


Portbereich:



netcat host startport-endport


In den meisten Systemen können Sie beide schreiben netcatund nc.



Port-Scan



Eine der typischen Anwendungen von Netcat ist das Port-Scannen. Eine Option -zbedeutet das Scannen, anstatt eine Verbindung herzustellen. Wir verwenden es zusammen mit der Option -v, detailliertere Informationen beim Scannen von Ports von 1 bis 1000 anzuzeigen:



netcat -z -v domain.com 1-1000


Die Ausgabe sieht ungefähr so ​​aus:



nc: Verbindung zu domain.com Port 1 (TCP) fehlgeschlagen: Verbindung abgelehnt
nc: Verbindung zu domain.com Port 2 (TCP) fehlgeschlagen: Verbindung abgelehnt
nc: Verbindung zu domain.com Port 3 (TCP) fehlgeschlagen: Verbindung abgelehnt
nc: Verbindung zu domain.com Port 4 (tcp) fehlgeschlagen: Verbindung abgelehnt
nc: Verbindung zu domain.com Port 5 (TCP) fehlgeschlagen: Verbindung abgelehnt
nc: Verbindung zu domain.com Port 6 (TCP) fehlgeschlagen: Verbindung abgelehnt
nc: Verbindung zu domain.com Port 7 (TCP) fehlgeschlagen: Verbindung abgelehnt
... ... ...
Verbindung zu domain.com 22 Port [tcp / ssh] erfolgreich!
... ... ...


Für diese Aufgabe gibt es jedoch ein fortgeschritteneres, spezialisiertes Programm nmap. Es installieren:



apt-get update
apt-get install nmap


Dieses Dienstprogramm enthält detailliertere Informationen zu Ports. Das Register bekannter Ports /usr/share/nmap/nmap-servicesenthält mehr als 20.000 Zeilen, einschließlich zusätzlicher Felder, z. B. die durchschnittliche Häufigkeit des Öffnens eines bestimmten Ports auf Servern im Internet (dritte Spalte):



... ... ...
tcpmux 1 / tcp 0,001995 # TCP-Portdienst-Multiplexer [rfc-1078]
tcpmux 1 / udp 0,001236 # TCP Port Service Multiplexer
compressnet 2 / tcp 0.000013 # Verwaltungsdienstprogramm
compressnet 2 / udp 0.001845 # Verwaltungsdienstprogramm
compressnet 3 / tcp 0.001242 # Komprimierungsprozess
compressnet 3 / udp 0.001532 # Komprimierungsprozess
unbekannt 4 / tcp 0,000477
rje 5 / udp 0,000593 # Remote Job Entry
unbekannt 6 / tcp 0,000502
Echo 7 / tcp 0,004855
echo 7 / udp 0.024679
Echo 7 / sctp 0,000000
... ... ...


Es wird nicht empfohlen, Port-Scans auf einem fremden Server auszuführen, da der Systemadministrator Aktionen wie feindlich verwechseln kann. Nmap wurde entwickelt, um seinen eigenen Server zu erkunden, und Sie können zu Testzwecken auf einem dedizierten Server experimentieren scanme.nmap.org.



Die Ausführung einiger Befehle dauert lange.



Scannen des Betriebssystems auf dem Host:



nmap -O 


Scan-Host-Bereich von xxx.xxx.xxx.xxx bis yyy.yyy.yyy.yyy:



nmap -PN xxx.xxx.xxx.xxx-yyy.yyy.yyy.yyy


Durchsuchen des Netzwerkbereichs nach verfügbaren Diensten:



nmap -sP _


Scannen eines bestimmten Ports:



nmap -p _ 


Scannen aller offenen TCP- und UDP-Ports:



nmap -n -PN -sT -sU -p- 


Studieren von Softwareversionen, die auf dem Host ausgeführt werden:



nmap -PN -p _ 


Es gibt viele andere Befehle, Optionen und Anwendungsfälle für nmap. Durch das Scannen der Ports Ihres VDS-Servers können Sie potenzielle Angriffsmethoden und Schwachstellen identifizieren, da ein Angreifer seine Aktionen mit dem Scannen beginnt.



Nachrichten und Dateien weiterleiten



Mit dem Schlüssel können -lSie einen bestimmten Port auf dem Server abhören:



netcat -l 5438


Auf einem anderen Computer geben wir an, über diesen Port eine Verbindung zum Computer herzustellen:



netcat domain.com 5438


Zwischen den beiden Systemen wurde nun ein Kommunikationskanal eingerichtet. Es kann zum Senden von Textnachrichten verwendet werden.



Auf diese Weise können Sie sogar eine Datei übertragen. Senden Sie dazu den Listening-Befehl direkt an die Datei:



netcat -l 5438 > _


Auf einem anderen Computer senden wir anstelle einer Textnachricht die Originaldatei an die Eingabe:



netcat domain.com 5438 < _


In ähnlicher Weise können Sie alle möglichen Dinge übertragen, z. B. den Inhalt von Verzeichnissen, die im laufenden Betrieb komprimiert wurden, an tarball:



tar -czf - * | netcat domain.com 4444


Auf die gleiche Weise können Sie auf einer Seite ein Disk-Image erstellen ( dd), es über die erstellte TCP-Verbindung an den angegebenen Port senden und auf dem anderen System empfangen.



Hinzufügen und Entfernen von Benutzern



Um Benutzer hinzuzufügen, zu entfernen und ihnen Berechtigungen zu erteilen, sudomüssen Sie zunächst eine Verbindung zum Server als root herstellen:



ssh root@ip__


Fügen Sie danach den Benutzer hinzu:



adduser newuser


Anfangs hat er keine Privilegien. Wenn dies jedoch der Hauptbenutzer des Systems ist, können wir ihm Administratorrechte zuweisen, damit er Routineaufgaben zur Wartung und Instandhaltung des Servers ausführen kann.



Um Administratorrechte zuzuweisen, müssen Sie den Benutzer zur Sudo-Gruppe hinzufügen. Benutzer in dieser Gruppe dürfen den Befehl sudomit erhöhten Administratorrechten ausführen .



usermod -aG sudo user1


Stattdessen geben wir user1den Namen des Benutzers an, der zuvor hinzugefügt wurde. Jetzt kann er alle Befehle ausführen über sudo:



sudo 


Mit diesen Rechten kann dieser Benutzer andere Benutzer löschen:



sudo deluser --remove-home username


Diese Option --remove-homeentfernt auch das Home-Verzeichnis des Benutzers.



Root selbst hat das Recht, den Befehl deluserohne auszuführen sudo.



Dies ist natürlich keine vollständige Liste nützlicher Tools zum Verwalten eines VDS-Servers. Diese Fragen stellen sich jedoch häufig für unerfahrene Systemadministratoren, die ihren ersten Server einrichten, ein Betriebssystem installieren und beginnen, die Welt der Linux-Administration zu verstehen.









All Articles