Cómo obtener una lista de actualizaciones de seguridad en la línea de comandos en Debian / Ubuntu

26

En la herramienta GUI puede obtener una lista de paquetes con actualizaciones de seguridad. ¿Se puede hacer esto en la línea de comando en Debian o Ubuntu?

Normalmente podría usar "apt-get upgrade" que me mostraría lo que se está actualizando, pero me gustaría saber cuáles son las actualizaciones de seguridad.

Stephen Paulger
fuente
solo para Ubuntu 14.04, 16.04 y 18.04 LTS: askubuntu.com/a/1128270/92504
Angel

Respuestas:

5

Use la aplicación de actualización desatendida.

sudo unattended-upgrade

Esto le permite instalar solo actualizaciones de seguridad automáticamente, pero puede llamarlo manualmente si es necesario.

Andy H
fuente
Me gusta esta respuesta, ya que realmente has pensado en lo que podría estar tratando de hacer y la actualización desatendida es algo que instalé hoy para probar.
Stephen Paulger
13
Sin embargo, en realidad no responde la pregunta.
reinierpost
44
Si esta es la respuesta, entonces la pregunta estaba equivocada. Al menos, evolucionó y debería editarse en consecuencia y / o marcarse como un duplicado de askubuntu.com/questions/194/…
mc0e
39
apt-get upgrade -s | grep -i security

... es lo que utiliza el complemento check-apt de Nagios para contar las actualizaciones de seguridad pendientes que es similar a lo que está buscando.

smin
fuente
¿Pero no puede encontrar la actualización de seguridad de bash para shellshock?
linjunhalida
3
Esto da falsos positivos en paquetes con "seguridad" en el nombre, como "xml-security-c-utils", "debian-security-support", "modsecurity-crs", "node-security", etc.
Shnatsel
2
@Shnatsel para una verificación de línea de comando, es muy fácil ... puedes ver fácilmente si es un falso positivo o no. Además, si conoce el nombre actual de su sistema operativo, podría escribir grep -i xenial-securityy debería reducir el falso positivo a casi cero.
Alexis Wilke
1
@Shnatsel, grep Debian-Security¿sería una mejor solución?
Pablo A
Esto es útil para obtener la cantidad de regular;securityactualizaciones disponibles. La -popción de la lista de los nombres de los paquetes disponibles para la actualización no distingue entre las actualizaciones regulares de seguridad y sin embargo (al menos en 16.04) ... así que esto no es un camino viable para obtener una lista de actualizaciones de seguridad disponibles en la medida de lo que puedo decir.
Mattpr
10

En ubuntu deberías poder usar apt-check, es el que llena tu motd con la cantidad de actualizaciones de seguridad disponibles.

mandamás
fuente
2
No puedo ver eso en Debian o Ubuntu.
Stephen Paulger
55
apt-check está en / usr / lib / update-notifier /. Pruebe / usr / lib / update-notifier / apt-check --human-legible para obtener un mensaje directo.
u2702
2
No estoy convencido de que eso muestre algo útil. Para obtener la lista, debe agregar --package-names( -p), pero no parece diferenciar entre actualizaciones regulares y actualizaciones de seguridad.
Auspex
5

Puede obtener una lista con este comando:

sudo unattended-upgrade --dry-run -d 2> /dev/null | grep 'Checking' | awk '{ print $2 }'
Fabrizio Regini
fuente
2
¡ /dev/nullEnviaste TODAS las salidas para que no estés ganando nada!
Auspex
Esto parece no funciona con los de confianza. muestra todos los paquetes que necesitan actualización en su lugar.
Temido punto y coma
Supongo que le mostraría lo que la actualización desatendida iba a hacer, y si lo hubiera configurado para hacer solo actualizaciones de seguridad, tal vez esta receta funcionaría. Sin embargo, la respuesta es, en el mejor de los casos, lamentablemente incompleta.
mc0e
Hoy resolví esta necesidad de modificar un poco apt-check. Comprueba esta esencia: gist.github.com/thesp0nge/94f9d336a081a3fefba6ca61d787a28b
Paolo Perego el
3

Tengo una versión modificada update-notifierque requiere un cambio adicional: --security-package-namesque solo muestra los nombres de paquetes relacionados con la seguridad. Lo tengo como una esencia (hasta que cree una solicitud de fusión en el proyecto relevante en el launchpad). Hasta entonces, se puede ejecutar de la siguiente manera:

correr

curl -s https://gist.githubusercontent.com/ahmadnazir/c2444d6b09fd7bb4963a13bc577d92a3/raw/0231b94a4e46abe0a5959de5f84feda76ad2eb9d/apt-check.py \
  | python /dev/stdin --security-package-names \
  | column -t -s , \
  | sort

Salida

Esto proporciona una salida del formato: nombre del paquete , versión instalada y versión candidata :

...
thunderbird                          1:38.6.0+build1-0ubuntu0.14.04.1     1:38.8.0+build1-0ubuntu0.14.04.1
thunderbird-gnome-support            1:38.6.0+build1-0ubuntu0.14.04.1     1:38.8.0+build1-0ubuntu0.14.04.1
thunderbird-locale-en                1:38.6.0+build1-0ubuntu0.14.04.1     1:38.8.0+build1-0ubuntu0.14.04.1
thunderbird-locale-en-us             1:38.6.0+build1-0ubuntu0.14.04.1     1:38.8.0+build1-0ubuntu0.14.04.1
...
mandark
fuente
3

Basado en la respuesta de Fabrizio Regini anterior.

Para 12.04 / Preciso:

sudo unattended-upgrade --dry-run -d 2>&1 /dev/null | grep 'Checking' | grep security | awk '{ print $2 }'

Para 14.04 / Trusty:

sudo unattended-upgrade --dry-run -d | grep 'Checking' | grep security | awk '{ print $2 }'
blazerw
fuente
1

Y una variante se unió después de leer las otras respuestas: creo que esto responde al problema de los falsos positivos y es razonablemente ligero.

sudo unattended-upgrade --dry-run -d 2>/dev/null  | awk '/Checking/ && /archive:..*-security. / {print $2}'
tink
fuente
0

Creo que responder a la pregunta que hace el OP es cómo ver la Lista de paquetes y no cómo instalar solo paquetes de seguridad. Basándose en la respuesta de @topdog Debería usar: /usr/lib/update-notifier/apt-check -p Donde la -pbandera representa paquetes

alonisser
fuente
1
esto enumera todos los paquetes y no solo las actualizaciones de seguridad
confiq
apt-check parece no estar disponible en Debian Jessie. Permanece en los sistemas Wheezy actualizados, pero las instalaciones nuevas ya no tienen el notificador de actualización común. ¿Conoces una alternativa?
enero
@jan todavía está allí, como parte de update-notifier-common
Auspex
@Auspex Ese paquete ya no existe en Jessie. Solo hay update-notifierun paquete de transición obsoleto para gnome-packagekit. Ver aquí .
ene
1
@jan Lo siento, tomé la palabra de Debian para eso. Busqué el archivo, packages.debian.org/… y me lo dijo You have searched for files named apt-check in suite jessie, all sections, and all architectures. Found 1 results., pero cuando haces clic en el enlace para obtener ese resultado, te dicePackage not available in this suite.
Auspex
0

Estos dos comandos escupirán la lista. Canalice a wc -l para ver cuántos hay detrás. ;-)

grep security /etc/apt/sources.list > /tmp/security.list
sudo apt-get upgrade -oDir::Etc::Sourcelist=/tmp/security.list -s

Sigue siendo válido para distribuciones anteriores o si tiene repositorios de actualización desactivados, pero la seguridad está activada:

sudo apt-get upgrade -s| grep ^Inst |grep Security 
flickerfly
fuente
Ten cuidado. Si genera /tmp/security.list de esta manera mientras se ejecuta como root, entonces es vulnerable a un ataque basado en enlaces simbólicos.
mc0e
No puedo obtener este enfoque (el primer bloque de código) en Ubuntu 14.04. La -oDir::Etc::Sourcelistopción no parece deshabilitar el conjunto estándar de repositorios.
mc0e
0

Creo que la respuesta de @smin es básicamente un buen enfoque, pero un poco flojo con la expresión regular, como señaló @Shnatsel.

Qué tal esto:

apt-get upgrade -q --dry-run \
| perl -ne 'm/^Inst (\S+) \S+ \(([^\)]+) Debian-Security:8/ && print "$1-$2\n"'

Esto enumera los nombres de los paquetes junto con las versiones que desea instalar. Puede sacar -$2la declaración de impresión si no desea las versiones allí.

[Esto probablemente podría hacerse un poco más ligero usando awk en lugar de perl]

mc0e
fuente