Algunos aspectos de la gestión del servidor VDS en Linux

VDS (Virtual Dedicated Server) es un servicio dentro del cual el usuario recibe un servidor virtual dedicado con los máximos privilegios. Se trata de una emulación de un servidor físico real, tiene acceso root, la capacidad de instalar sistemas operativos arbitrarios y cualquier software. Al mismo tiempo, es mucho más económico que alquilar un servidor físico comparable en capacidad.



Puede poner el sistema operativo en el servidor desde su imagen o utilizar la imagen ya preparada en el panel de control.







Digamos que instalamos Debian 10 y el servidor web Nginx, que viene en el repositorio estándar ( apt install nginx). Veamos qué utilidades y comandos útiles te ayudarán a administrar tu servidor Linux. Consideremos Nginx por separado y el servidor VDS en sí como un todo.



Contenido





Primero, es aconsejable comprender el servidor web en sí. Nginx comienza cuando se completa la instalación. Comprobamos este hecho:



systemctl status nginx


Emisión:



● 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


O simplemente ingrese la dirección IP del servidor en el navegador:



http://your_server_ip


Si aún no hemos copiado los archivos de nuestro sitio en el servidor, se mostrará la página de encabezado estándar de Nginx.







Comandos básicos para administrar Nginx



Nota. Si el usuario no tiene privilegios de root, entonces, para que se ejecute cada comando, debe obtener privilegios de root usando el comando sudo.



Deteniendo el servidor web:



sudo systemctl stop nginx


Si se ejecuta como root, el comando es:



systemctl stop nginx


Empezar tras parar:



systemctl start nginx


Detener y reiniciar (reiniciar):



systemctl restart nginx


Si acaba de realizar algunos cambios de configuración, Nginx puede reiniciarse sin perder sus conexiones actuales. Esto se hace con el siguiente comando:



systemctl reload nginx


De forma predeterminada, Nginx está configurado para iniciarse automáticamente cuando se inicia el servidor. Este comportamiento se puede cambiar con el siguiente comando:



systemctl disable nginx


Vuelva a habilitar el inicio automático de Nginx en el inicio del servidor:



systemctl enable nginx


De forma predeterminada, Nginx tiene un conjunto de reglas de bloques de servidor configuradas para un dominio. Se asume que solo aloja un sitio en su servidor. Por defecto, debería estar ubicado en el directorio /var/www/html.



Suponga que desea crear varios conjuntos de bloques de servidor para varios sitios en Nginx o mover los archivos del sitio actual a un directorio diferente /var/www/your_domain.



Esto se hace con los siguientes comandos.



Primero, creamos el directorio requerido en el servidor.



mkdir -p /var/www/your_domain/html


Luego asignamos el propietario de este directorio usando una variable $USERque debería corresponder al usuario actual:



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


Colocamos la página principal en el directorio especificado index.html.



Luego, debe crear un conjunto apropiado de reglas para Nginx. En cualquier editor de texto, cree un archivo /etc/nginx/sites-available/your_domainy copie la configuración del archivo predeterminado allí, solo con la dirección y el dominio cambiados:



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


Finalmente, activamos esta configuración escribiendo un enlace simbólico al nuevo archivo de configuración en el directorio sites-enabledque Nginx lee en el arranque:



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


Después de reiniciar, Nginx mostrará la página correspondiente para las solicitudes your_domainy www.your_domain.



Gestión del servidor



¿Qué preguntas tienen los usuarios con más frecuencia al administrar un servidor Linux? ¿Qué herramientas puede recomendar incluso a administradores sin experiencia?



Instalación de un supervisor



Supervisor es un sistema cliente / servidor a través del cual el administrador controla los procesos en el servidor. La herramienta crea procesos como subprocesos en su propio nombre.



Instalar supervisord en Debian o Ubuntu es extremadamente simple:



apt-get install supervisor


Después de eso, el demonio supervisor ya se está ejecutando y se iniciará en cada inicio del sistema.



Los programas nuevos se pasan al supervisor a través de archivos de configuración en el directorio /etc/supervisor/conf.d. Por ejemplo, para un script, el long.sharchivo de configuración podría verse así:



[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 consecuencia, el script se ejecutará automáticamente en cada inicio del sistema y se reiniciará automáticamente si se sale. Este valor puede ser 'falso' (no reiniciado) o 'inesperado' (reiniciado solo si sale con un código de error inesperado, por defecto, cualquier código distinto de 0 o 2).



Las dos últimas líneas son las direcciones de las revistas. Esta es la plantilla de configuración mínima para un programa supervisor.



Luego de crear un archivo de configuración para un programa específico, ejecutamos dos comandos para que el supervisor vuelva a leer y aplique las nuevas configuraciones:



supervisorctl reread


supervisorctl update


En esta etapa, nuestro programa o script ya debería estar ejecutándose, lo cual se puede verificar mediante registros.



La utilidad supervisorctltiene un modo interactivo en el que se ejecuta sin argumentos:



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


En este modo, supervisorctl muestra inicialmente el estado y el tiempo de ejecución de todos los programas bajo la supervisión del supervisor, y luego su línea de comando. Allí puede ingresar helpy ver una lista de comandos 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


Como puede ver, puede iniciar, detener y reiniciar programas desde la línea de comandos utilizando los comandos de inicio, detención y reinicio.



Para salir del supervisor, use Ctrl-C o el comando quit:



supervisor> quit


Análisis de espacio libre en disco



La utilidad estándar para ver información sobre particiones montadas es df. Muestra una lista de dispositivos conectados e información sobre el espacio ocupado.



df  


La opción -h habilita la salida legible por humanos (es decir, en megabytes o gigabytes):



$ 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


Información sobre un directorio específico (por ejemplo, / home):



df -h /home


Información sobre particiones con un sistema de archivos determinado:



df -h -t ext4


Busque archivos con el comando find



Buscar por nombre de archivo:



find -name "query"


Buscar por nombre sin distinción entre mayúsculas y minúsculas:



find -iname "query"


Búsqueda "inversa" de archivos que no coinciden con el patrón especificado:



find -not -name "query_to_avoid"


o



find \! -name "query_to_avoid"


Buscar por tipo de archivo



find -type _ 


Algunos de los descriptores comunes son:



  • f - archivo regular

  • d - directorio

  • l - enlace simbólico

  • c - archivos de dispositivo de E / S de caracteres

  • b - bloquear archivos de dispositivo de E / S


Por ejemplo, el siguiente comando enumerará todos los dispositivos de E / S de caracteres instalados en el sistema:



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


Hay un filtro por tamaño y tiempo de acceso / cambio. Por ejemplo, aquí hay un comando para buscar todos los archivos de menos de 50 bytes:



find / -size -50c


Busque todos los archivos de más de 700 megabytes:



find / -size +700M


Para buscar por tiempo de acceso, modificación o cambio de metainformación del archivo, los parámetros '-atime', '-mtime' y '-ctime' se utilizan con símbolos más y menos para indicar un rango mayor y menor que el especificado, respectivamente.



Busque archivos que se modificaron hace menos de un día:



find / -mtime -1


Archivos con tiempo de acceso hace más de tres días:



find / -atime +3


Archivos que han cambiado en el último minuto:



find / -mmin -1


Archivos que son más nuevos que el archivo especificado:



find / -newer myfile


Está disponible la búsqueda por propietario ('-usuario', '-grupo') y archivos con permisos específicos ('-perm'). En todos los archivos encontrados, puede realizar inmediatamente alguna acción ('-exec').



Prueba de conexiones TCP y UDP



Linux viene con una gran cantidad de utilidades útiles. Algunos administradores de sistemas pueden realizar la mayoría de las tareas utilizando solo las herramientas integradas, sin instalar software adicional. El verdadero cuchillo suizo de las herramientas de Linux integradas es la utilidad de red netcat. Sintaxis general:



netcat [options] host port


Este comando inicia una conexión TCP al host especificado en el puerto especificado. Si en lugar de TCP necesita probar una conexión UDP, especifique la opción -u:



netcat -u host port


Rango de puertos:



netcat host startport-endport


En la mayoría de los sistemas, puede escribir tanto netcaty nc.



Escaneo de puertos



Uno de los usos típicos de netcat es el escaneo de puertos, una opción -zsignifica escanear en lugar de establecer una conexión. Lo usamos junto con la opción -vde mostrar información más detallada al escanear puertos del 1 al 1000:



netcat -z -v domain.com 1-1000


La salida se verá así:



nc: no se pudo conectar al puerto 1 (tcp) de domain.com: conexión rechazada
nc: no se pudo conectar al puerto 2 (tcp) de domain.com: conexión rechazada
nc: no se pudo conectar al puerto 3 (tcp) de domain.com: conexión rechazada
nc: no se pudo conectar al puerto 4 (tcp) de domain.com: conexión rechazada
nc: no se pudo conectar al puerto 5 (tcp) de domain.com: conexión rechazada
nc: no se pudo conectar al puerto 6 de domain.com (tcp): conexión rechazada
nc: no se pudo conectar al puerto 7 (tcp) de dominio.com: conexión rechazada
... ... ...
La conexión con el puerto domain.com 22 [tcp / ssh] se realizó correctamente.
... ... ...


Sin embargo, existe un programa especializado más avanzado para esta tarea nmap. Instalarlo:



apt-get update
apt-get install nmap


Esta utilidad brinda información más detallada sobre los puertos. El registro de puertos conocidos /usr/share/nmap/nmap-servicescontiene más de 20 mil líneas, incluyendo campos adicionales, como la frecuencia promedio de apertura de un puerto en particular en servidores en Internet (tercera columna):



... ... ...
tcpmux 1 / tcp 0.001995 # Multiplexor de servicio de puerto TCP [rfc-1078]
tcpmux 1 / udp 0.001236 # Multiplexor de servicio de puerto TCP
compressnet 2 / tcp 0.000013 # Utilidad de administración
compressnet 2 / udp 0.001845 # Utilidad de administración
compressnet 3 / tcp 0.001242 # Proceso de compresión
compressnet 3 / udp 0.001532 # Proceso de compresión
desconocido 4 / tcp 0.000477
rje 5 / udp 0.000593 # Entrada de trabajo remota
desconocido 6 / tcp 0.000502
echo 7 / tcp 0,004855
echo 7 / udp 0.024679
echo 7 / sctp 0,000000
... ... ...


No se recomienda ejecutar escaneos de puertos en un servidor externo, ya que el administrador del sistema puede confundir tales acciones como hostiles. Nmap está diseñado para explorar su propio servidor, y puede experimentar en un servidor dedicado con fines de prueba scanme.nmap.org.



Algunos comandos tardan mucho en ejecutarse.



Escaneando el sistema operativo en el host:



nmap -O 


Escanee el rango de host de xxx.xxx.xxx.xxx a yyy.yyy.yyy.yyy:



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


Escaneando el rango de la red buscando servicios disponibles:



nmap -sP _


Escaneando un puerto específico:



nmap -p _ 


Escaneando todos los puertos TCP y UDP abiertos:



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


Estudiar las versiones de software que se ejecutan en el host:



nmap -PN -p _ 


Hay muchos otros comandos, opciones y casos de uso para nmap. Escanear los puertos de tu servidor VDS te permite identificar posibles vectores de ataque y vulnerabilidades, ya que un atacante comenzará sus acciones con el escaneo.



Reenvío de mensajes y archivos



Usando la clave, -lpuede escuchar en un puerto específico en el servidor:



netcat -l 5438


En otra máquina, especificamos conectarnos a la máquina en este puerto:



netcat domain.com 5438


Ahora se establece un canal de comunicación entre los dos sistemas. Se puede utilizar para enviar mensajes de texto.



Incluso puede transferir un archivo de esta manera. Para hacer esto, envíe el comando de escucha directamente al archivo:



netcat -l 5438 > _


En otra computadora, en lugar de un mensaje de texto, enviamos el archivo original a la entrada:



netcat domain.com 5438 < _


Del mismo modo, puede transferir todo tipo de cosas, por ejemplo, el contenido de directorios, comprimido sobre la marcha a tarball:



tar -czf - * | netcat domain.com 4444


De la misma manera, puede crear una imagen de disco en un lado ( dd), enviarla al puerto especificado a través de la conexión TCP creada y recibirla en el otro sistema.



Agregar y eliminar usuarios



Para agregar, eliminar usuarios y otorgarles privilegios, sudoprimero debe conectarse al servidor como root:



ssh root@ip__


Después de eso, agregue el usuario:



adduser newuser


Inicialmente, no tiene privilegios. Pero si este es el usuario principal del sistema, entonces podemos asignarle privilegios administrativos para que pueda realizar tareas rutinarias de mantenimiento y mantenimiento del servidor.



Para asignar privilegios administrativos, debe agregar el usuario al grupo sudo. Los usuarios de este grupo pueden ejecutar el comando sudocon sus privilegios elevados a administrativos.



usermod -aG sudo user1


En cambio, user1indicamos el nombre del usuario que se agregó anteriormente. Ahora podrá ejecutar cualquier comando a través de sudo:



sudo 


Con estos derechos, este usuario puede eliminar a otros usuarios:



sudo deluser --remove-home username


Esta opción --remove-hometambién elimina el directorio de inicio del usuario.



El propio Root tiene derecho a ejecutar el comando delusersin sudo.



Por supuesto, esta no es una lista completa de herramientas útiles para administrar un servidor VDS. Pero estas preguntas surgen a menudo para los administradores de sistemas novatos que configuran su primer servidor, instalan un sistema operativo y comienzan a comprender el mundo de la administración de Linux.









All Articles