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
$USER
que 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_domain
y 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-enabled
que 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_domain
y 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.sh
archivo 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
supervisorctl
tiene 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
help
y 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
netcat
y nc
.
Escaneo de puertos
Uno de los usos típicos de netcat es el escaneo de puertos, una opción
-z
significa escanear en lugar de establecer una conexión. Lo usamos junto con la opción -v
de 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-services
contiene 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,
-l
puede 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,
sudo
primero 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
sudo
con sus privilegios elevados a administrativos.
usermod -aG sudo user1
En cambio,
user1
indicamos 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-home
también elimina el directorio de inicio del usuario.
El propio Root tiene derecho a ejecutar el comando
deluser
sin 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.