Quelques aspects de la gestion des serveurs VDS sous Linux

VDS (Virtual Dedicated Server) est un service au sein duquel l'utilisateur reçoit un serveur virtuel dédié avec un maximum de privilèges. Il s'agit d'une émulation d'un vrai serveur physique, il a un accès root, la possibilité d'installer des systèmes d'exploitation arbitraires et n'importe quel logiciel. En même temps, c'est beaucoup moins cher que de louer un serveur physique d'une capacité comparable.



Vous pouvez mettre le système d'exploitation sur le serveur à partir de votre image ou utiliser l'image prête à l'emploi dans le panneau de commande.







Disons que nous avons installé Debian 10 et le serveur Web Nginx, qui vient dans le référentiel standard ( apt install nginx). Voyons quels utilitaires et commandes utiles vous aideront à gérer votre serveur Linux. Considérons Nginx séparément et le serveur VDS lui-même dans son ensemble.



Contenu





Tout d'abord, il est conseillé de comprendre le serveur Web lui-même. Nginx démarre lorsque l'installation est terminée. Nous vérifions ce fait:



systemctl status nginx


Émission:



● 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


Ou entrez simplement l'adresse IP du serveur dans le navigateur:



http://your_server_ip


Si nous n'avons pas encore copié les fichiers de notre site sur le serveur, la page d'en-tête standard Nginx sera affichée.







Commandes de base pour la gestion de Nginx



Remarque. Si l'utilisateur ne dispose pas de privilèges root, pour chaque commande à exécuter, il doit obtenir les privilèges root à l'aide de la commande sudo.



Arrêt du serveur Web:



sudo systemctl stop nginx


Si elle est exécutée en tant que root, la commande est:



systemctl stop nginx


Démarrer après l'arrêt:



systemctl start nginx


Arrêt et redémarrage (redémarrage):



systemctl restart nginx


Si vous venez de faire quelques changements de configuration, Nginx peut redémarrer sans perdre vos connexions actuelles. Cela se fait avec la commande suivante:



systemctl reload nginx


Par défaut, Nginx est configuré pour démarrer automatiquement au démarrage du serveur. Ce comportement peut être modifié avec la commande suivante:



systemctl disable nginx


Réactivez le démarrage automatique de Nginx au démarrage du serveur:



systemctl enable nginx


Par défaut, Nginx a un ensemble de règles de blocage de serveur configuré pour un domaine. Il est supposé que vous n'hébergez qu'un seul site sur votre serveur. Par défaut, il doit être situé dans le répertoire /var/www/html.



Supposons que vous souhaitiez créer plusieurs ensembles de blocs de serveur pour plusieurs sites dans Nginx ou déplacer les fichiers du site actuel vers un répertoire différent /var/www/your_domain.



Ceci est fait avec les commandes suivantes.



Tout d'abord, nous créons le répertoire requis sur le serveur.



mkdir -p /var/www/your_domain/html


Ensuite, nous affectons le propriétaire de ce répertoire à l'aide d'une variable $USERqui doit correspondre à l'utilisateur actuel:



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


Nous plaçons la page principale dans le répertoire spécifié index.html.



Ensuite, vous devez créer un ensemble de règles approprié pour Nginx. Dans n'importe quel éditeur de texte, créez un fichier /etc/nginx/sites-available/your_domainet copiez-y la configuration à partir du fichier par défaut, uniquement avec l'adresse et le domaine modifiés:



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;
}
}


Enfin, nous activons cette configuration en écrivant un lien symbolique vers le nouveau fichier de configuration dans le répertoire sites-enabledque Nginx lit au démarrage:



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


Après le redémarrage, Nginx affichera la page appropriée pour les demandes your_domainet www.your_domain.



Gestion des serveurs



Quelles sont les questions les plus fréquentes des utilisateurs lors de la gestion d'un serveur Linux? Quels outils pouvez-vous recommander même aux administrateurs inexpérimentés?



Installer un superviseur



Supervisor est un système client / serveur à travers lequel l'administrateur contrôle les processus sur le serveur. L'outil crée des processus en tant que sous-processus pour son propre compte.



L'installation de supervisord sur Debian ou Ubuntu est extrêmement simple:



apt-get install supervisor


Après cela, le démon superviseur est déjà en cours d'exécution et démarrera à chaque démarrage du système.



Les nouveaux programmes sont transmis au superviseur via les fichiers de configuration dans le répertoire /etc/supervisor/conf.d. Par exemple, pour un script, le long.shfichier de configuration peut ressembler à ceci:



[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


En conséquence, le script sera automatiquement lancé à chaque démarrage du système et redémarré automatiquement en cas de fermeture. Cette valeur peut être «faux» (ne pas redémarrer) ou «inattendu» (redémarrer uniquement si vous quittez avec un code d'erreur inattendu, par défaut, tout code autre que 0 ou 2).



Les deux dernières lignes sont les adresses des magazines. Il s'agit du modèle de configuration minimum pour un programme superviseur.



Après avoir créé un fichier de configuration pour un programme spécifique, nous exécutons deux commandes afin que le superviseur relise et applique les nouvelles configurations:



supervisorctl reread


supervisorctl update


À ce stade, notre programme ou script devrait déjà être en cours d'exécution, ce qui peut être vérifié par les journaux.



L'utilitaire supervisorctla un mode interactif dans lequel il s'exécute sans arguments:



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


Dans ce mode, supervisorctl affiche d'abord l'état et la durée d'exécution de tous les programmes sous la supervision du superviseur, puis sa ligne de commande. Là, vous pouvez entrer help- et voir une liste des commandes disponibles:



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


Comme vous pouvez le voir, vous pouvez démarrer, arrêter et redémarrer des programmes à partir de la ligne de commande à l'aide des commandes de démarrage, d'arrêt et de redémarrage.



Pour quitter le superviseur, utilisez Ctrl-C ou la commande quit:



supervisor> quit


Analyse de l'espace disque libre



L'utilitaire standard pour afficher les informations sur les partitions montées est df. Il affiche une liste des appareils connectés et des informations sur l'espace occupé.



df  


L'option -h active une sortie lisible par l'homme (c'est-à-dire en mégaoctets ou en gigaoctets):



$ 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


Informations sur un répertoire spécifique (par exemple / home):



df -h /home


Informations sur les partitions avec un système de fichiers donné:



df -h -t ext4


Rechercher des fichiers avec la commande find



Recherche par nom de fichier:



find -name "query"


Recherche par nom insensible à la casse:



find -iname "query"


Recherche "inversée" pour les fichiers qui ne correspondent pas au modèle spécifié:



find -not -name "query_to_avoid"


ou



find \! -name "query_to_avoid"


Recherche par type de fichier



find -type _ 


Certains des descripteurs communs sont:



  • f - fichier régulier

  • d - répertoire

  • l - lien symbolique

  • c - fichiers de périphérique d'E / S de caractères

  • b - bloquer les fichiers de périphérique d'E / S


Par exemple, la commande suivante répertorie tous les périphériques d'E / S de caractères installés sur le système:



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
. . .


Il y a un filtre par taille et temps d'accès / changement. Par exemple, voici une commande pour rechercher tous les fichiers de moins de 50 octets:



find / -size -50c


Recherchez tous les fichiers de plus de 700 mégaoctets:



find / -size +700M


Pour rechercher par heure d'accès, modification ou changement des méta-informations du fichier, les paramètres «-atime», «-mtime» et «-ctime» sont utilisés avec les symboles plus et moins pour indiquer une plage supérieure et inférieure à celle spécifiée, respectivement.



Recherchez les fichiers modifiés il y a moins d'un jour:



find / -mtime -1


Fichiers avec un temps d'accès il y a plus de trois jours:



find / -atime +3


Fichiers modifiés au cours de la dernière minute:



find / -mmin -1


Fichiers plus récents que le fichier spécifié:



find / -newer myfile


La recherche par propriétaire ('-user', '-group') et les fichiers avec des autorisations spécifiques ('-perm') est disponible. Sur tous les fichiers trouvés, vous pouvez effectuer immédiatement une action ('-exec').



Test des connexions TCP et UDP



Linux est livré avec un grand nombre d'utilitaires utiles. Certains administrateurs système peuvent effectuer la plupart des tâches en utilisant uniquement les outils intégrés, sans installer de logiciel supplémentaire. Le véritable couteau suisse des outils Linux embarqués est l'utilitaire réseau netcat. Syntaxe générale:



netcat [options] host port


Cette commande lance une connexion TCP avec l'hôte spécifié sur le port spécifié. Si au lieu de TCP, vous devez tester une connexion UDP, spécifiez l'option -u:



netcat -u host port


Gamme de ports:



netcat host startport-endport


Dans la plupart des systèmes, vous pouvez écrire à la fois netcatet nc.



Balayage des ports



L'une des utilisations typiques de netcat est l'analyse des ports, une option -zsignifie l'analyse au lieu d'établir une connexion. Nous l'utilisons avec la possibilité -vd'afficher des informations plus détaillées lors de la numérisation des ports de 1 à 1000:



netcat -z -v domain.com 1-1000


La sortie ressemblera à ceci:



nc: échec de la connexion au port 1 (tcp) de domain.com: connexion refusée
nc: échec de la connexion au port 2 de domaine.com (tcp): connexion refusée
nc: échec de la connexion au port 3 de domain.com (tcp): connexion refusée
nc: échec de la connexion au port 4 (tcp) de domain.com: connexion refusée
nc: échec de la connexion au port 5 (tcp) de domain.com: connexion refusée
nc: échec de la connexion au port 6 (tcp) de domain.com: connexion refusée
nc: échec de la connexion au port 7 (tcp) de domain.com: connexion refusée
... ... ...
La connexion au port 22 de domain.com [tcp / ssh] a réussi!
... ... ...


Cependant, il existe un programme spécialisé plus avancé pour cette tâche nmap. Installez-le:



apt-get update
apt-get install nmap


Cet utilitaire donne des informations plus détaillées sur les ports. Le registre des ports connus /usr/share/nmap/nmap-servicescontient plus de 20000 lignes, y compris des champs supplémentaires, tels que la fréquence moyenne d'ouverture d'un port particulier sur des serveurs sur Internet (troisième colonne):



... ... ...
tcpmux 1 / tcp 0.001995 # Multiplexeur de service de port TCP [rfc-1078]
tcpmux 1 / udp 0,001236 # Multiplexeur de service de port TCP
utilitaire de gestion compressnet 2 / tcp 0.000013 #
utilitaire de gestion compressnet 2 / udp 0,001845 #
compressnet 3 / tcp 0,001242 # Processus de compression
compressnet 3 / udp 0,001532 # Processus de compression
inconnu 4 / tcp 0,000477
rje 5 / udp 0.000593 # Saisie de travaux à distance
inconnu 6 / tcp 0,000502
écho 7 / tcp 0,004855
écho 7 / udp 0,024679
écho 7 / sctp 0,000000
... ... ...


Il n'est pas recommandé d'exécuter des analyses de port sur un serveur étranger, car l'administrateur système peut prendre de telles actions pour hostiles. Nmap est conçu pour explorer son propre serveur et vous pouvez expérimenter sur un serveur dédié à des fins de test scanme.nmap.org.



Certaines commandes prennent du temps à s'exécuter.



Analyse du système d'exploitation sur l'hôte:



nmap -O 


Analyser la plage d'hôtes de xxx.xxx.xxx.xxx à aaa.aaa.aaa.aaa:



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


Analyse de la plage réseau à la recherche des services disponibles:



nmap -sP _


Analyse d'un port spécifique:



nmap -p _ 


Analyse de tous les ports TCP et UDP ouverts:



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


Étude des versions logicielles exécutées sur l'hôte:



nmap -PN -p _ 


Il existe de nombreuses autres commandes, options et cas d'utilisation de nmap. L'analyse des ports de votre serveur VDS vous permet d'identifier les vecteurs d'attaque potentiels et les vulnérabilités, car un attaquant commencera ses actions par l'analyse.



Transférer des messages et des fichiers



À l'aide de la clé, -lvous pouvez écouter sur un port spécifique du serveur:



netcat -l 5438


Sur une autre machine, nous spécifions de se connecter à la machine sur ce port:



netcat domain.com 5438


Un canal de communication a maintenant été établi entre les deux systèmes. Il peut être utilisé pour envoyer des messages texte.



Vous pouvez même transférer un fichier de cette façon. Pour ce faire, envoyez la commande d'écoute directement dans le fichier:



netcat -l 5438 > _


Sur un autre ordinateur, au lieu d'un message texte, nous soumettons le fichier d'origine à l'entrée:



netcat domain.com 5438 < _


De même, vous pouvez transférer une variété de choses, par exemple, le contenu des répertoires, archivés à la volée dans tarball:



tar -czf - * | netcat domain.com 4444


De la même manière, vous pouvez créer une image disque d'un côté ( dd), l'envoyer au port spécifié via la connexion TCP créée - et la recevoir sur l'autre système.



Ajouter et supprimer des utilisateurs



Pour ajouter, supprimer des utilisateurs et leur accorder des privilèges, sudovous devez d'abord vous connecter au serveur en tant que root:



ssh root@ip__


Après cela, ajoutez l'utilisateur:



adduser newuser


Au départ, il n'a aucun privilège. Mais s'il s'agit de l'utilisateur principal du système, nous pouvons lui attribuer des privilèges administratifs afin qu'il puisse effectuer des tâches de routine de maintenance et de maintenance du serveur.



Pour attribuer des privilèges administratifs, vous devez ajouter l'utilisateur au groupe sudo. Les utilisateurs de ce groupe sont autorisés à exécuter la commande sudoavec leurs privilèges élevés à administratifs.



usermod -aG sudo user1


Au lieu de cela, nous indiquons user1le nom de l'utilisateur qui a été ajouté précédemment. Maintenant, il pourra exécuter toutes les commandes via sudo:



sudo 


Avec ces droits, cet utilisateur peut supprimer d'autres utilisateurs:



sudo deluser --remove-home username


Cette option --remove-homesupprime également le répertoire personnel de l'utilisateur.



Root lui-même a le droit d'exécuter la commande delusersans sudo.



Bien entendu, ce n'est pas une liste complète d'outils utiles pour gérer un serveur VDS. Mais ces questions se posent souvent pour les administrateurs système novices qui ont configuré leur premier serveur, installé un système d'exploitation et commencent à comprendre le monde de l'administration Linux.









All Articles