# Linux # Bond en debian Como crear un bond en Debian Referencias: [https://wiki.debian.org/Bonding](https://wiki.debian.org/Bonding) [https://www.kernel.org/doc/Documentation/networking/bonding.txt](https://www.kernel.org/doc/Documentation/networking/bonding.txt) ``` apt-get install ifenslave # This file describes the network interfaces available on your system # and how to activate them. For more information, see interfaces(5). # The loopback network interface auto lo iface lo inet loopback # The primary network interface # allow-hotplug eth0 # iface eth0 inet dhcp auto bond0 iface bond0 inet static bond-mode 4 bond-miimon 100 bond_xmit_hash_policy layer2+3 bond_lacp_rate fast slaves eth0 eth1 auto bond0.42 iface bond0.42 inet dhcp vlan_raw_device bond0 ```
# Borrar archivos de más de X días Por ejemplo para borrar archivos de más de 30 días de antigüedad ```shell find /ruta/de/los/archivos* -mtime +30 -type f -exec rm {} \; ``` # Comandos Linux Comandos Linux # Comando screen Screen es un programa muy útil que nos permite en una sola terminal de texto (consola, sesión telnet, etc.) tener hasta 10 ventanas (el equivalente a 10 terminales) haciendo diferentes tareas (shell en una, lector de correo o news en otra, etc.) y pudiendo cambiar entre ellas de una manera rápida y sencilla. Screen suele venir en todas las distribuciones Linux. Una vez instalada la ejecutamos (screen) y ya podremos empezar a utilizarla. Para usar SCREEN se usa el atajo de teclado ^A (Control-A). Cuando estemos en consola y queramos enviar una orden a screen (cambiar de "ventana", crear nuevas ventanas, etc.) se pulsa CTRL+A y a continuación la tecla del comando a enviar (soltando CTRL-A antes de pulsar la tecla de comando):Tecla | Comando |
---|---|
CTRL+a seguido de ? | Se obtiene una pequeña lista de comandos. |
CTRL+a seguido de c | Se crea una nueva ventana (la inicial es la 0, luego 1, 2…). |
CTRL+a seguido de un número 0-9 | Cambiamos la vista a la ventana especificada por el número. |
CTRL+a seguido de n | Ir a la siguiente (next) ventana. |
CTRL+a seguido de p | Ir a la siguiente (previous) ventana. |
CTRL+a seguido de w | Obtenemos una lista de ventanas disponibles. |
Tecla | Comando |
---|---|
CTRL+a seguido de k | Borrar la pantalla de la ventana actual |
CTRL+a seguido de Ctrl+x | Bloquear la pantalla (pedirá la password del usuario). |
CTRL+a seguido de :detach | Desvincular la pantalla de la sesión de screen. Podemos recuperarla luego con screen -r |
Opción | Descripción | |
---|---|---|
Corta | Larga | |
***-a*** | ***--archive*** | Modo archive, es igual a indicar las opciones r,l,p,t,g,o y D |
***-r*** | ***--recursive*** | Recursivo, copia recursivamente los directorios. |
***-l*** | ***--links*** | Cuando encuentra symlinks (enlaces simbólicos), estos son recreados en el destino. |
***-p*** | ***--perms*** | Opción que causa en el destino establecer los permisos igual que en el origen. |
***-t*** | ***--times*** | Transfiere los tiempos de los archivos (atime, ctime, mtime) al destino |
***-g*** | ***--group*** | Establece en el destino que el grupo del archivo copiado sea igual que el origen. |
***-o*** | ***--owner*** | Establece en el destino que el propietario del archivo copiado sea igual que el origen. |
***-D*** | Esto es igual que indicar las opciones *--devices* y *--specials* | |
***--exclude PATTERN*** | Excluye archivos que igualan el patrón o pattern indicado. | |
***--include PATTERN*** | Incluye archivos que igualan el patrón o pattern indicado. | |
***--devices*** | Transfiere archivos de dispositivos de bloque y caracter al destino donde son recreados. Esto solo puede suceder si en el destino se tienen permisos de root. | |
***--specials*** | Transfiere archivos especiales como fifos y named sockets. | |
***--version*** | Indica el número de versión de `rsync` | |
***-v*** | ***--verbose*** | Incrementa la cantidad de información que se informa durante la transferencia o copia de archivos. Es la opción contraria a *--quiet* |
***-q*** | ***--quiet*** | Decremente la cantidad de información que se informa durante la transferecnia o copia de archivos. Generalmente se utiliza cuando `rsync` se utiliza en una tarea cron. Es la opción contraria a *--verbose* |
***-I*** | ***--ignore-times*** | Una de las grandes virtudes de `rsync` es que al momento de copiar o transferir archivos, si estos son iguales en el destino en términos de tiempos y tamaño ya no lo copia, no hay cambios. Esta opción permite que esto sea ignorado y todos los archivos serán copiados/actualizados en el destino. (ver *--size-only* también) |
***--size-only*** | Normalmente solo se transfieren archivos con los tiempos cambiados o el tamaño cambiado. Con esta opción se ignoran los tiempos de los archivos y se transfiere cualquiera con un tamaño distinto en el destino. | |
***-n*** | ***--dry-run*** | Crea una prueba de test de lo que realmente ocurrirá sin esta opción, sin realizar ningún cambio. Es decir, la salida mostrada será muy similar a lo que realmente pasará si no se incluye *--dry-run*. Generalmente se usa junto con la opción *--verbose* y la opción *--itemize-changes* |
***-i*** | ***--itemize-changes*** | Reporta una lista de los cambios realizados en cada archivo, incluidos cambios en sus atributos. Esto es equivalente a utilizar *-vv* en versiones obsolteas de `rsync`. |
***--remove-source-files*** | Remueve los archivos en el origen (no directorios) si en el destino estos fueron exitosamente duplicados o copiados. | |
***--timeout=TIEMPO*** | Especifica un timeout en segundos, si no datos son transferidos en tiempo indicado `rsync` terminará. El default es 0 segundos que quiere decir sin timeout. | |
***--log-file=ARCHIVO*** | Bitacoriza lo que se ha realizado en el ARCHIVO indicado. | |
***--stats*** | Imprime un conjunto informativo de datos estadísticos sobre la transferencia realizada. | |
***--progress*** | Muestra el avance o progreso de los archivos que están siendo transferidos. | |
***--bwlimit=KBPS*** | Permite establecer un límite de transferencia en kilobytes por segundo. Esta opción su default es 0, lo que indica no límite en el uso del ancho de banda en la transferencia. | |
***--max-size=TAMAÑO*** | No transfiere cualquier archivo más grande que el TAMAÑO indicado. | |
***--min-size=TAMAÑO*** | No transfiere cualquier archivo más pequeño que el TAMAÑO indicado. | |
***-z*** | ***--compress*** | Comprimir datos durante la transferencia. |
cp | –preserve=mode,ownership,timestamps,xattr |
mv | Los preserva por defecto a excepción de que el destino no permita atributos extendidos |
tar | –xattrs (para creación y extracción) |
bsdtar | -p (para extracción) |
rsync | –xattrs |
NEW | El estado NUEVO nos dice que el paquete es el primer paquete que vemos. Esto significa que se emparejará el primer paquete que vea el módulo conntrack, dentro de una conexión específica. Por ejemplo, si vemos un paquete SYN y es el primer paquete que vemos en una conexión, coincidirá. Sin embargo, el paquete también puede no ser un paquete SYN y aun así considerarse NEW. Esto puede generar ciertos problemas en algunos casos, pero también puede ser extremadamente útil cuando necesitamos recuperar conexiones perdidas de otros firewalls, o cuando una conexión está en timeout pero en realidad no está cerrada. |
ESTABLISHED | El estado ESTABLISHED ha visto tráfico en ambas direcciones y luego coincidirá continuamente con esos paquetes. Las conexiones ESTABLISHED son bastante fáciles de entender. El único requisito para entrar en un estado ESTABLECIDO es que un host envíe un paquete y que luego reciba una respuesta del otro host. El estado NUEVO al recibir el paquete de respuesta a través del cortafuegos cambiará al estado ESTABLECIDO. Los mensajes de respuesta ICMP también pueden considerarse ESTABLECIDOS, si creamos un paquete que a su vez generó el mensaje ICMP de respuesta. |
RELATED | El estado RELACIONADO es uno de los estados más complicados. Una conexión se considera RELACIONADA cuando está relacionada con otra conexión ya ESTABLECIDA. Lo que esto significa, es que para que una conexión se considere RELACIONADA, primero debemos tener una conexión que se considere ESTABLECIDA. La conexión ESTABLECIDA generará una conexión fuera de la conexión principal. La conexión recién generada se considerará RELACIONADA, si el módulo conntrack puede entender que está RELACIONADA. Algunos buenos ejemplos de conexiones que pueden considerarse RELACIONADAS son las conexiones de datos FTP que se consideran RELACIONADAS con el puerto de control FTP. Esto se usa para permitir que los mensajes de error ICMP, las transferencias FTP y los DCC funcionen correctamente a través del firewall. Ten en cuenta que la mayoría de los protocolos TCP y algunos protocolos UDP que se basan en este mecanismo son bastante complejos y envían información de conexión dentro de la carga útil de los segmentos de datos TCP o UDP y, por lo tanto, requieren módulos auxiliares especiales para entenderse correctamente. |
INVALID | El estado NO VÁLIDO significa que el paquete no se puede identificar o que no tiene ningún estado. Esto puede deberse a varios motivos, como que el sistema se esté quedando sin memoria o que los mensajes de error de ICMP no respondan a ninguna conexión conocida. Generalmente, es una buena idea hacer DROP de todo en este estado. |
Nota importante, el disco no debe estar montado para ejecutarlo
En primer lugar instalaremos hdparm ```shell apt install hdparm ``` ##### Ajustar el tiempo de espera de HDD con hdparm Lo único que necesitas saber antes de comenzar es la ruta al archivo del dispositivo de la unidad para el que deseas configurar los ajustes Para desactivar el modo de espera, se puede usar el siguiente comando hdparm. ```shell hdparm -s 0 /dev/sda ``` Para ajustar la cantidad de tiempo de inactividad que transcurre antes de que un disco duro entre en modo de espera, usaremos la opción -S Los valores posibles están entre 1-255. Multiplica el valor por 5 y obtendrás la cantidad de segundos a los que el disco duro entra en modo de espera. ```shell hdparm -S 200 /dev/sda /dev/sda: setting standby to 200 (16 minutes + 40 seconds) ``` # Parsear logs Muchas veces los logs son inmensos y no hay forma de ver nada en ellos, por lo que usando determinadas herramientas podemos localizar lo que buscamos en los mismos ### grep GREP te permite ejecutar patrones de búsqueda en archivos. La sintaxis es muy sencilla ```shell grep 'Ten en cuenta que las comillas simples o dobles son imperativas alrededor del texto si es más de una palabra.
Puedes usar el **comodín (\*)** para seleccionar todos los archivos en un directorio. Ejemplo: ```shell grep 'etaboada' maillog Aug 13 07:30:53 vserver01016 XXXXXXX to=Redis es un servicio de caché no autenticado por defecto, por lo que es **MUY IMPORTANTE**, que o se mantenga siempre escuchando por la IP 127.0.0.1 y no tenga salida al exterior (ni entrada) y que además procuremos usar una autenticación en el Redis
Ten en cuenta que cualquier script PHP que tenga acceso al Redis, al no ir autenticado, **PUEDE ACCEDER A TODO**
#### Instalar Redis Instalar Redis en un servidor es una operación muy simple simplemente hay que ejecutar un apt get install ```bash apt install redis-server ``` Una vez instalado al igual que con otros paquetes Debian, será necesario configurar que se inicie el servicio al reiniciar el equipo ```bash systemctl enable redis-server ``` Nos saldrá el siguiente mensaje como que se ha activado el servicio de Redis al inicio ```bash Synchronizing state of redis-server.service with SysV service script with /lib/systemd/systemd-sysv-install. Executing: /lib/systemd/systemd-sysv-install enable redis-server ``` Ahora procederemos a arrancarlo manualmente (puesto que no vamos a reiniciar el equipo) ```bash systemctl start redis-server ``` Para comprobar que está funcionando, sólo tenemos que comprobarlo a través del redis-cli ```bash root@tecnocratica:~# redis-cli 127.0.0.1:6379> ``` #### Configurar Redis con Wordpress En este [artículo puedes ver un ejemplo de como configurar Wordpress ](https://tecnocratica.net/wikicratica/books/wordpress/page/plugin-de-redis-en-wordpress)para usar Redis #### Autenticación en Redis Para habilitar la autenticación en Redis, usaremos la opción ***requirepass*** Para ello en nuestro fichero redis.conf que se encuentra en la carpeta etc, buscaremos esta opción ``` # requirepass foobar ``` Como vemos está comentada, la descomentaremos y pondremos la clave que deseemos, por ejemplo: ``` requirepass HRk2h8NsUq41y5kc ``` También podemos realizar esto desde el cliente de Redis ``` root@tecnocratica:~# redis-cli 127.0.0.1:6379>config set requirepass HRk2h8NsUq41y5kc ``` Ahora para conectarnos al Redis ejecutaremos: ``` root@tecnocratica:~# redis-cli 127.0.0.1:6379>AUTH HRk2h8NsUq41y5kc ``` Y ya podremos usar los comandos del cliente Redis # Instalar Chrony en Debian Existen dos sistemas para mantener nuestros sistemas Debian correctamente sincronizados, por un lado [tenemos ntp](https://tecnocratica.net/wikicratica/books/linux/page/configurar-ntp) y como mejora al ntp también está chrony. Al igual que ntp, chrony permite sincronizar fuentes de referencias externas para mantener la hora de los servidores, pero ambos tienen algunas diferencias. Chrony permite sincronizar con servidores horarios externos y a la vez servir de fuente de hora para otros servidores de nuestra red. En el caso de ntp es sólo cliente y hay que instalar ntpd para que haga de servidor de hora. Además chrony responde de forma más rápida y la sincronización tarda mucho menos, por lo que es ideal sobre todo para máquinas virtuales, que se pueden encender y apagar más a menudo. ### Instalar chrony Para instalar chrony ejecutaremos como siempre un simple comando, este instalará por si solo los dos sistemas (Chronyc y Chronyd) es decir el cliente y el demonio. ``` apt install chrony ``` Una vez instalado, lo habilitaremos y lo ejecutaremos. ``` systemctl enable chrony systemctl start chrony ```**Nota:** antes de activar chrony, hay que deshabilitar y parar el servicio ntp y el ntpd en caso de que estuvieran instalados y habilitados
Para comprobar ejecutaremos ``` chronyc tracking ``` Nos dará una salida parecida a esta ``` # chronyc tracking Reference ID : A29FC801 (time.cloudflare.com) Stratum : 4 Ref time (UTC) : Sun Oct 08 09:50:10 2023 System time : 0.000003285 seconds slow of NTP time Last offset : -0.000056454 seconds RMS offset : 0.000053328 seconds Frequency : 32.070 ppm slow Residual freq : -0.001 ppm Skew : 0.021 ppm Root delay : 0.030552367 seconds Root dispersion : 0.001204389 seconds Update interval : 1025.7 seconds Leap status : Normal ``` En esto podemos ver lo siguientes valores destacados: Reference ID: Indica el ID de referencia y el nombre con el cual se sincroniza actualmente el equipo. Stratum: número de saltos hacia un equipo usando el RefrenceID anterior. Ref time (UTC): hora UTC en el cual se realizó la última medición de la fuente de referencia. System Time: retraso del reloj del sistema desde el servidor sincronizado. Last Offset: desplazamiento de la última actualización del reloj NTP. RMS Offset: promedio a largo plazo del valor de compensación de tiempo. Frequency: velocidad a la cual el reloj del sistema (el RTC) sería erróneo en caso de que chronyd no lo ajuste. las unidades van reflejadas en ppm (partes por millón). Update interval: intervalos de sincronización en segundos. ### Mostar fuentes de chrony Usando el comando chronyc sources, podemos ver los servidores contra los que se sincroniza ``` chronyc sources ``` Ejemplo ``` root@eduardo:~# chronyc sources MS Name/IP address Stratum Poll Reach LastRx Last sample =============================================================================== ^* time.cloudflare.com 3 10 377 455 -308us[ -364us] +/- 22ms ^- i2t15.i2t.ehu.eus 1 10 377 144 -1000us[-1000us] +/- 506ms ^+ cf393dbc-c70f-489d-a6e6-> 2 10 377 969 +164us[ +110us] +/- 45ms ^- 185.90.148.209 2 10 357 487 +5402us[+5346us] +/- 64ms ``` ### Fichero de configuración de chrony El fichero de configuración de chrony está en la carpeta /etc/chrony/chrony.conf como podemos ver en la siguiente imagen [](https://tecnocratica.net/wikicratica/uploads/images/gallery/2023-10/kVxvrQ866AaggmDZ-chrony-01.png) En este fichero podemos configurar parámetros como por ejemplo el servidor o servidores (pool) que vamos a usar como referencia, los intervalos de sincronización, etc. En este ejemplo, vemos que se usa el pool de debian. Si tenemos nuestros servidores en la red de Neodigit o de Tecnocrática, podemos usar ntp.neodigit.net como referencia. Editamos el fichero, agregamos la línea server ntp.neodigit.net y reiniciamos chrony ``` # Include configuration files found in /etc/chrony/conf.d. confdir /etc/chrony/conf.d server ntp.neodigit.net # Use Debian vendor zone. pool 2.debian.pool.ntp.org iburst ``` Ahora comprobamos ``` root@eduardo:~# systemctl restart chrony root@eduardo:~# chronyc sources MS Name/IP address Stratum Poll Reach LastRx Last sample =============================================================================== ^? res2.mad1.tecnocratica.n> 2 6 1 3 -509us[ -509us] +/- 34ms ^? ntp01.pingless.com 2 6 3 1 -614us[ -614us] +/- 18ms ^? cf393dbc-c70f-489d-a6e6-> 2 6 3 2 +211us[ +211us] +/- 43ms ^? i2t15.i2t.ehu.eus 1 6 3 2 -1023us[-1023us] +/- 506ms root@eduardo:~# chronyc tracking Reference ID : B2D7E418 (ntp01.pingless.com) Stratum : 3 Ref time (UTC) : Sun Oct 08 10:08:08 2023 System time : 0.000000205 seconds fast of NTP time Last offset : -0.000328478 seconds RMS offset : 0.000328478 seconds Frequency : 32.077 ppm slow Residual freq : -22.917 ppm Skew : 0.024 ppm Root delay : 0.034075394 seconds Root dispersion : 0.000739151 seconds Update interval : 1.5 seconds Leap status : Normal ``` # Encontrar el número de serie de un disco en Linux Muchas veces necesitamos localizar el número de serie de un determinado disco en Linux, sobre todo en los casos de esos servidores que alojan 24 o más discos. Para localizar el número de serie, hay varias formas de hacerlo. #### lsblk El comando lsblk, nos permite obtener una lista de dispositivos de bloques en nuestro sistema ``` root@storageserver:~# lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTS sda 8:0 0 465.8G 0 disk ├─sda1 8:1 0 1007K 0 part ├─sda2 8:2 0 512M 0 part └─sda3 8:3 0 464.5G 0 part sdb 8:16 0 7.3T 0 disk ├─sdb1 8:17 0 7.3T 0 part └─sdb9 8:25 0 8M 0 part sdc 8:32 0 7.3T 0 disk ├─sdc1 8:33 0 7.3T 0 part └─sdc9 8:41 0 8M 0 part sdd 8:48 0 7.3T 0 disk ├─sdd1 8:49 0 7.3T 0 part └─sdd9 8:57 0 8M 0 part sde 8:64 0 7.3T 0 disk ├─sde1 8:65 0 7.3T 0 part └─sde9 8:73 0 8M 0 part sdf 8:80 0 7.3T 0 disk ├─sdf1 8:81 0 7.3T 0 part └─sdf9 8:89 0 8M 0 part sdg 8:96 0 7.3T 0 disk ├─sdg1 8:97 0 7.3T 0 part └─sdg9 8:105 0 8M 0 part sdh 8:112 0 7.3T 0 disk ├─sdh1 8:113 0 7.3T 0 part └─sdh9 8:121 0 8M 0 part sdi 8:128 0 7.3T 0 disk ├─sdi1 8:129 0 7.3T 0 part └─sdi9 8:137 0 8M 0 part sdj 8:144 0 465.8G 0 disk ├─sdj1 8:145 0 1007K 0 part ├─sdj2 8:146 0 512M 0 part └─sdj3 8:147 0 464.5G 0 part sdk 8:160 0 7.3T 0 disk ├─sdk1 8:161 0 7.3T 0 part └─sdk9 8:169 0 8M 0 part sdl 8:176 0 7.3T 0 disk ├─sdl1 8:177 0 7.3T 0 part └─sdl9 8:185 0 8M 0 part sdm 8:192 0 7.3T 0 disk ├─sdm1 8:193 0 7.3T 0 part └─sdm9 8:201 0 8M 0 part sdn 8:208 0 7.3T 0 disk ├─sdn1 8:209 0 7.3T 0 part └─sdn9 8:217 0 8M 0 part ``` Si queremos obtener los números de serie, ejecutaremos ``` lsblk -o NAME,SERIAL ``` Nos dará una salida parecida a esta, en la que vemos el nombre (sda,sdb,sdc,etc) y el número de serie a la derecha ``` root@storageserver:~# lsblk -o NAME,SERIAL NAME SERIAL sda S4CNNEXXXXXX55H ├─sda1 ├─sda2 └─sda3 sdb XXXXX40PQ4R ├─sdb1 └─sdb9 sdc XXXXX40QHM1 ├─sdc1 └─sdc9 sdd XXXXX40RCTD ├─sdd1 └─sdd9 sde XXXXX40REG1 ├─sde1 └─sde9 sdf XXXXX40RR2L ├─sdf1 └─sdf9 sdg WD-XXXXX282LWK ├─sdg1 └─sdg9 sdh XXXXX0RDDP ├─sdh1 └─sdh9 sdi XXXXX8B49Y ├─sdi1 └─sdi9 sdj S4CNXXXXX50K ├─sdj1 ├─sdj2 └─sdj3 sdk XXXXX0RQJW ├─sdk1 └─sdk9 sdl XXXXXGTWSBY ├─sdl1 └─sdl9 sdm XXXXX0QQPP ├─sdm1 └─sdm9 sdn XXXXX0RR26 ├─sdn1 └─sdn9 ``` #### smartctl La utilidad smartctl, nos permite además de mostrar el número de serie, realizar test y obtener información sobre el ciclo de vida de los discos. Si no está instalada, pordemos instalarla con: ``` apt install smartmontools ``` E invocarla con smrtctl y el nombre del disco ``` smartctl -i /dev/sdb ``` Nos dará una salida como la que se muestra a continuación ``` root@storageserver:~# smartctl -i /dev/sdb smartctl 7.3 2022-02-28 r5338 [x86_64-linux-6.2.16-14-pve] (local build) Copyright (C) 2002-22, Bruce Allen, Christian Franke, www.smartmontools.org === START OF INFORMATION SECTION === Device Model: WDC WD80EFZZ-68BTXN0 Serial Number: WD-123456789 LU WWN Device Id: 5 0014ee 2157d3021 Firmware Version: 81.00A81 User Capacity: 8,001,563,222,016 bytes [8.00 TB] Sector Sizes: 512 bytes logical, 4096 bytes physical Rotation Rate: 5640 rpm Form Factor: 3.5 inches Device is: Not in smartctl database 7.3/5319 ATA Version is: ACS-3 T13/2161-D revision 5 SATA Version is: SATA 3.1, 6.0 Gb/s (current: 6.0 Gb/s) Local Time is: Thu Jan 4 14:39:20 2024 CET SMART support is: Available - device has SMART capability. SMART support is: Enabled ``` # Obtener el Número de Serie y el Modelo de un servidor en Linux - DMIDECODE La utilidad DMIDECODE, nos permite obtener información sobre la plataforma que está ejecutando nuestro sistema operativo. Podemos ejecutarlo desde por ejemplo un USB de arranque si el equipo no dispone de un sistema operativo Linux de arranque. Si ejecutamos dmidecode a secas, nos mostrará todos los parámetros de hardware del sistema, como procesador, número de serie, memoria RAM, etc. ### Opciones de dmidecode #### Obtener el número de serie ``` dmidecode -s system-serial-number ``` Ejemplo ``` root@server:~# dmidecode -s system-serial-number 89AZXR42 ``` #### Obtener información sobre la RAM Para esto ejecutaremos el comando ``` dmidecode --type 17 ``` O bien el comando ``` dmidecode -t memory ``` La salida de este comando es como se muestra ``` root@a19:~# dmidecode --type 17 # dmidecode 3.4 Getting SMBIOS data from sysfs. SMBIOS 2.7 present. Handle 0x1100, DMI type 17, 34 bytes Memory Device Array Handle: 0x1000 Error Information Handle: Not Provided Total Width: 72 bits Data Width: 64 bits Size: 8 GB Form Factor: DIMM Set: 1 Locator: DIMM_A1 Bank Locator: Not Specified Type: DDR3 Type Detail: Synchronous Registered (Buffered) Speed: 1333 MT/s Manufacturer: 00XXXXXXXX Serial Number: XXXXXXX Asset Tag: 011XXXXX Part Number: HMT3XXXXXXXR4A-H9 Rank: 2 Configured Memory Speed: 1333 MT/s ``` Para mostrar sólo algunos parámetros podemos filtrar en el comando ##### Mostrar sólo velocidad ``` dmidecode -t memory | grep -i "speed" ``` Ejemplo de salida ``` root@server:~# dmidecode -t memory | grep -i "speed" Speed: 1333 MT/s Configured Memory Speed: 1333 MT/s Speed: 1333 MT/s Configured Memory Speed: 1333 MT/s Speed: 1333 MT/s Configured Memory Speed: 1333 MT/s Speed: 1333 MT/s Configured Memory Speed: 1333 MT/s Speed: 1333 MT/s Configured Memory Speed: 1333 MT/s Speed: 1333 MT/s Configured Memory Speed: 1333 MT/s ``` # Update desde debian 11 a debian12 ### Comprobar versión Para hacer un update de la versión debian 11 a debian 12, lo primero es comprobar la versión de debian que se está ejecutando. Para ello, ejecutaremos el comando ``` lsb_release -d ``` La salida nos dará la versión actualmente en ejecución ``` root@server:~# lsb_release -d Description: Debian GNU/Linux 11 (bullseye) ``` También puedes comprobar con el comando ``` cat /etc/debian_version ``` El resultado será algo parecido a esto ``` root@h01019:~# cat /etc/debian_version 11.8 ``` ### Actualizar Actualizar loss paquetes de Debian 11 Antes de actualizar de Debian bullseye a bookworm, es esencial asegurarse de que todos los paquetes existentes estén actualizados y actualizados a sus últimas versiones disponibles. Ejecutamos ``` apt update ``` ``` apt upgrade ``` ``` apt dist-upgrade ``` Una vez que se completen las actualizaciones, limpia los paquetes residuales y los archivos de configuración usando los siguientes comandos: ``` apt --purge autoremove ``` ``` apt autoclean ``` ``` find /etc -name '.dpkg-' -o -name '.ucf-' -o -name '*.merge-error' ```Con la introducción de numerosos paquetes nuevos, la versión Bookworm de Debian suspende y excluye varios paquetes antiguos que estaban presentes en Bullseye. Estos paquetes obsoletos no tienen una ruta de actualización designada. Por lo tanto, se recomienda reemplazar estos paquetes obsoletos con alternativas disponibles, si existieran.
Para identificar y eliminar "Paquetes obsoletos y creados localmente" ejecutaremos ``` apt list '~o' ``` ``` apt purge '~o' ``` Después de esto deberemos reiniciar el sistema ### Usando sed para actualizar Ahora deberemos modificar los repositorios de bullseye y cambiarlos a bookworm, para ello usaremos sed Es conveniente si no estás seguro hacer copia de seguridad de los archivos de apt list Este comando utiliza la utilidad sed para reemplazar todas las apariciones de "bullseye" con "bookworm" en el archivo /etc/apt/sources.list. ``` sed -i 's/bullseye/bookworm/g' /etc/apt/sources.list ``` Actualiza las listas de fuentes de software adicionales en el directorio "sources.list.d" ejecutando el siguiente comando: ``` sed -i 's/bullseye/bookworm/g' /etc/apt/sources.list.d/* ``` Además, debes agregar el repositorio de "firmware no gratuito" para compatibilidad con controladores de hardware. ``` sed -i 's/non-free/non-free non-free-firmware/g' /etc/apt/sources.list ``` ``` sed -i 's/non-free/non-free non-free-firmware/g' /etc/apt/sources.list.d/* ``` Verifica si el archivo de lista de fuentes se ha actualizado con los nuevos enlaces del repositorio ejecutando el siguiente comando: ``` cat /etc/apt/sources.list ``` La salida del comando debe ser parecida a esta ``` deb http://deb.debian.org/debian/ bookworm main contrib non-free non-free-firmware deb http://deb.debian.org/debian/ bookworm-updates non-free non-free-firmware contrib main deb http://security.debian.org/debian-security bookworm-security main contrib non-free non-free-firmware ``` ### Ejecutamos la actualización Para actualizar, ejecutaremos un update de las fuentes ``` apt update ``` #### Precaución (Opcional) En ciertos escenarios, realizar una actualización completa del sistema como se explica en el siguiente paso puede eliminar una cantidad significativa de paquetes que deseas conservar. Por lo tanto, puedes realizar la actualización de dos partes que consta de una actualización mínima seguida de una actualización completa. La actualización mínima garantiza la actualización de todos los paquetes existentes sin instalar ni eliminar ningún paquete adicional. Para iniciar la actualización mínima, usa el siguiente comando: ``` apt upgrade --without-new-pkgs ``` Ahora que las fuentes de paquetes se han actualizado, puedes actualizar el sistema. Ejecuta el siguiente comando para realizar una actualización completa del sistema a Debian 12: ``` apt full-upgrade ``` # Fichero de configuración para SSH Os vamos a contar cómo crear y configurar un archivo de configuración OpenSSH para crear accesos directos a servidores a los que accedas con frecuencia en sistemas operativos Linux o Unix. Puedes configurar tu cliente ssh OpenSSH utilizando varios archivos de la siguiente manera para ahorrar tiempo y escribir las opciones de línea de comandos del cliente ssh utilizadas con frecuencia, como puerto, usuario, nombre de host, archivo de identidad y mucho más para que sea más fácil acceder desde Linux/macOS o Unix. Para ello crearemos un archivo en la carpeta .ssh llamado config ``` vi ~/.ssh/config ``` Si queremos que sea accesible para todos los usuarios del sistema lo editaremos en la carpeta /etc/ssh/ssh\_config (no confundir con el sshd\_config) Tienes que introducir un parámetro por línea y pueden estar separados por espacios o signos = Para introducir comentarios puedes usar la # esas líneas se ignoran ### Ejemplos ``` Host tecno01 HostName hosta26b29-02.tecnocratica.net User eduardo Port 22 ``` Ahora podrás acceder tecleando simplemente ssh tecno01 En este caso vamos a usar un archivo .key diferente. ``` Host proxmox01 HostName 192.168.1.100 User root IdentityFile ~/.ssh/proxmox.key ``` #### Parámetros posibles **Host:** Define para qué host o hosts se aplica la sección de configuración. La sección termina con una nueva sección de Host o al final del archivo. **HostName**: especifica el nombre de host real para iniciar sesión. También se permiten direcciones IP numéricas. **User:** Define el nombre de usuario para la conexión SSH. **IdentityFile:** especifica un archivo desde el cual se lee la identidad de autenticación DSA, ECDSA o DSA del usuario. El valor predeterminado es ~/.ssh/identity para la versión 1 del protocolo y ~/.ssh/id\_dsa, ~/.ssh/id\_ecdsa y ~/.ssh/id\_rsa para la versión 2 del protocolo. La opción IdentityFile en la configuración SSH o en la CLI se refiere al archivo de clave privada, que debe mantenerse confidencial. **Protocol:** especifica las versiones de protocolo que ssh debe admitir en orden de preferencia. Los valores posibles son 1 y 2. **Puerto:** especifica el número de puerto para conectarse en el host remoto. **Cipher:** Cipher es un parámetro de la versión 1 del protocolo para indicar el tipo de cifrado para cifrar sesiones. Los tipos admitidos son Blowfish, des y 3des (predeterminado). **Ciphers:** El parámetro Ciphers indica el tipo de cifrado para cifrar sesiones en la versión 2 del protocolo. Los cifrados disponibles y los valores predeterminados son: ``` aes128-ctr, aes192-ctr, aes256-ctr, arcfour256, arcfour128, aes128-cbc, 3des-cbc, blowfish-cbc, cast128-cbc, aes192-cbc, aes256-cbc, arcfour ``` **HostKeyAlgorithms:** El parámetro HostKeyAlgorithms establece el orden de preferencia para los algoritmos de clave de host en la versión 2 del protocolo. El orden predeterminado es ssh-rsa,ssh-dss. ### Conectarse a equipos con SSH antiguos Una de las principales ventajas de este archivo de configuración es la posibilidad de conectarse de forma fácil a equipos con versiones de RSA o protocolos SSH obsoletos #### Ejemplos ``` Host switch-viejo Hostname 192.168.3.14 user admin HostKeyAlgorithms ssh-rsa KexAlgorithms diffie-hellman-group1-sha1 port 22 ``` ``` Host otro-sw-viejo Hostname 192.168.37.254 user admin HostKeyAlgorithms ssh-dss KexAlgorithms diffie-hellman-group1-sha1 Ciphers +aes256-cbc port 22 ``` ``` Host otro-sw-viejo-mas Hostname 192.168.37.254 user admin KexAlgorithms +diffie-hellman-group1-sha1 Ciphers aes128-ctr,aes192-ctr,aes256-ctr,aes128-cbc PubKeyAcceptedKeyTypes +ssh-rsa port 8122 ```