Gestionando paquetes en linux
Debian / ubuntu
La gestión de paquetes a bajo nivel en Debian se realiza mediante la herramienta dpkg. A diferencia de gestores de paquetes de alto nivel como apt o apt-get, dpkg no gestiona automáticamente dependencias ni resuelve conflictos, por lo que es una herramienta más directa y flexible, pero también requiere mayor control manual.
Ferdora/Centos/RedHat
La gestion de paquetes a bajo nivel en estas distros se maneja con rpm mientras que en alto nivel usa dnf o yum.
Instalando paquetes - Debian/ubuntu
Casi siempre al momento de instalar algo en nuestro sistema tenemos que usar
sudo
. Por ejemplo:
sudo apt update
este comando descarga la información más reciente de los paquetes desde los repositorios configurados en tu sistema. No instala ni actualiza ningún paquete, simplemente sincroniza la base de datos local de los paquetes con las versiones más recientes disponibles en los repositorios.
Repositorio de paquetes
Donde se encuentran?. en etc/apt/soruces.list

Aca podemos agregar lineas extras y con apt update
vamos a actualizar esta lista
para que la proxima vez tenga en cuenta ese repositorio.
Como buscar un paquete en concreto y saber si lo tenemos en alguno de nuestro repositorios?
apt-cache search vscode
apt-cache search openssh-server
Inatalar
sudo apt install openssh-server
Se instalara tanto el paquete como sus dependencias, las cuales podremos en el paso de confirmacion antes de la instalacion.
Que pasa si intentamos descargar un paquete que ya teniamso?
Vera si hay una nueva version, si es asi, la reemplazara por la vieja que tengamos instalada y veremos 1 upgrade.
Como instalar de manera manual sin apt.
- En caso de estar en debian/ubuntu, vamos a la web del software que nos interesa.
- Descargamos el archivo
.deb
- Usamos
dpkg -i
:sudo dpkg -i el-soft-que-baje.deb
Como eliminar paquetes?
No importa si instalaste con apt o dpkg usamos:
sudo apt remove el-paqeuete-a-eliminar
apt upgrade
Este comando actulizara tanto paquetes como dependencias a la ultima version.
Con dpkg -i
podemos actualizar los paquetes que no esten incluidos en las listas
de repositorios.
Listando todo el software que tenemos en nuestra maquina :
dpkg -l
Esto traera tanto lo que hayamos instalado con apt como por que fueron instalados fuera del repositorio.
dpkg -l | grep nessus
Info extra sobre paquetes
dpkg -s vim
Esto nos muestra los metadatos del paquete. -s
es --status
El equivalente en alto nivel con apt
es apt show vim
Como saber que fichero pertenece a que paquete?
Si te encontras en la situacion de que encontras una carpeta o fichero
y no sabes de donde salio ni a quien pertenece podes hacer dpkg -S
dpkg -S /opt/nessus/sbin/nessus-service
nessus: /opt/nessus/sbin/nessus-service
Arriba vemos que dice: nessus corresponde a este fichero /opt/nessus/sbin/nessus-service
Aquí tienes el contenido que mencionaste formateado en Markdown:
Actualización del Kernel en Linux (Ubuntu)
Un sistema Linux está formado por diferentes componentes de software. Uno de los más importantes es el kernel de Linux. A medida que la tecnología avanza, los desarrolladores aplican parches y actualizaciones para mejorar la seguridad, añadir funcionalidades o incluso mejorar el rendimiento del sistema operativo.
Si utilizas un sistema operativo Linux como Ubuntu, es recomendable comprobar y actualizar el kernel regularmente. A continuación, te mostramos cómo hacerlo.
Pasos para Actualizar el Kernel
1. Comprobar la versión actual del kernel
Para ver la versión actual del kernel que está ejecutando tu sistema, usa el siguiente comando:
uname -sr
2. Actualizar los repositorios de paquetes
Antes de actualizar el kernel, es necesario actualizar la lista de paquetes disponibles en los repositorios:
sudo apt update
3. Actualizar el kernel
El siguiente paso es actualizar el kernel junto con otros paquetes del sistema. El comando dist-upgrade
realiza todas las funciones de apt upgrade
, pero también maneja cambios en dependencias y actualiza el kernel:
sudo apt dist-upgrade
4. Reiniciar el sistema
Una vez que el kernel se haya actualizado, debes reiniciar la máquina para que los cambios surtan efecto:
sudo reboot
5. Comprobar la nueva versión del kernel
Después de reiniciar, puedes comprobar si el sistema está ejecutando el nuevo kernel:
uname -sr
—
Nota: El comando sudo apt dist-upgrade
no solo actualiza los paquetes instalados, sino que también maneja cambios en dependencias, eliminando o instalando paquetes adicionales si es necesario.
Aniadiendo nuevos repositorios de paquetes.
Esta no es una practica recomendada, la remendada es la que vimos antes, yendo al web
e instalando el paquete de manera manual con dpkg
.
Tenemos varias maneras de hacerlo.
- Vamos a /etc/apt/sources.list y agregamos la ruta del nuevo repositorio.
Esto no hay que hacerlo, no tenemos que tocar sources.list.
-
Otra manera es ir a /etc/apt/sources.list.d creamos un fichero
.list
y luego agregamos ahi los repositorios extras. -
Tambien nos podemos apoyar de
sudo add-apt-repository "REPO-URL"
Lo que hizo el comando anterio fue crear un archivo.list en /etc/apt/sources.list.d.
adicionalmente hace por detras un sudo apt update
.
Si intentemos hacer sudo apt update
puede que vemos un error de GPG, algunos
repositorio firman sus paquetes con una llave privada y expoenen una llave
publica para que los usuarios que quieran usar sus repositorios sepan que
realmente la fuente es de confianza. Para eso tenemos que conseguir
la llave publica y agregarla en nuestra lista de llaves.
Para obtener la key tenemos que googlear, por ejemplo si quiero la de kalilinux seria “kali linux public key” y la descargamos.
- Para saber si la llave es publica hacemos
file archive-key.asc
y nos dira si es o no una public key. 2.sudo apt-key add archive-key.asc
apt-key sera deprecado dentro de poco ,pero te puede sacar de paso.
Resumen del Problema con apt-key add
Anteriormente, se utilizaba el comando apt-key add
para añadir la clave de firma (GPG) de un repositorio de terceros al almacén de claves global en /etc/apt/trusted.gpg
o en archivos en /etc/apt/trusted.gpg.d/
. Esto implicaba que cualquier clave añadida tenía plena confianza, permitiendo que APT aceptara paquetes firmados por esa clave, independientemente de su origen.
Riesgo de Seguridad
El riesgo principal es que si una clave se corrompe o un repositorio malicioso obtiene acceso, podría firmar paquetes que APT aceptaría sin cuestionar, incluso si los paquetes provienen de repositorios no confiables. Esto debilita la seguridad del mecanismo de firmas.
Solución Propuesta
En lugar de usar apt-key add
, la solución es asociar claves de firma solo con el repositorio específico para el cual se utilizarán. Esto limita la confianza de APT a paquetes firmados por la clave correspondiente al repositorio específico.
Proceso Detallado
-
Descargar la clave del repositorio:
wget https://host.domain.tld/path/to/<keyfile>.<ext>
-
Convertir la clave a un formato compatible si es necesario:
gpg --no-default-keyring --keyring ./temp-keyring.gpg --import <keyfile>.<ext> gpg --no-default-keyring --keyring ./temp-keyring.gpg --export --output <your-keyfile-name>.gpg
-
Guardar la clave en un lugar seguro:
sudo mkdir -p /etc/apt/keyrings sudo mv <your-keyfile-name>.gpg /etc/apt/keyrings/
-
Editar el archivo del repositorio en
sources.list.d/
:Abre el archivo
.list
correspondiente y especifica que la firma debe verificarse con la clave guardada:deb [signed-by=/etc/apt/keyrings/<your-keyfile-name>.gpg] http://example.com/repo distro component
-
Verificación Adicional con
apt-cache policy
:APT tiene reglas de “pinning” que priorizan los repositorios oficiales sobre los de terceros. Puedes verificar las prioridades con:
apt-cache policy
Para ajustar las prioridades, consulta:
man apt_preferences
Puntos Clave
- Evita agregar claves al almacén global de APT (
trusted.gpg
): Esto debilita la seguridad al permitir que cualquier clave firme paquetes de cualquier repositorio. - Asocia claves solo con el repositorio correspondiente: Usa la opción
[signed-by=]
en los archivos.list
para limitar la confianza a paquetes de un repositorio específico. - Claves en
/etc/apt/keyrings/
: Este es el lugar recomendado para almacenar claves, en lugar de los almacenes de claves globales.