วิธีรับรายการการปรับปรุงความปลอดภัยในบรรทัดคำสั่งใน Debian / Ubuntu


26

ในเครื่องมือ GUI คุณสามารถรับแพ็คเกจรายการที่มีการปรับปรุงความปลอดภัย สามารถทำได้ในบรรทัดคำสั่งใน Debian หรือ Ubuntu หรือไม่

โดยปกติฉันอาจใช้ "apt-get upgrade" ซึ่งจะแสดงให้ฉันเห็นว่ากำลังอัปเกรดอะไรอยู่ แต่ฉันอยากจะรู้ว่าอันไหนคือการปรับปรุงความปลอดภัย


สำหรับ Ubuntu 14.04, 16.04 และ 18.04 LTS: askubuntu.com/a/1128270/92504
Angel

คำตอบ:


5

ใช้แอปพลิเคชันอัพเกรดแบบอัตโนมัติ

sudo unattended-upgrade

สิ่งนี้ช่วยให้คุณติดตั้งเฉพาะการอัพเดทความปลอดภัยโดยอัตโนมัติ แต่คุณสามารถเรียกมันได้ด้วยตนเองหากจำเป็น


ฉันชอบคำตอบนี้ตามที่คุณเคยคิดเกี่ยวกับสิ่งที่ฉันอาจจะพยายามทำและการอัพเกรดแบบอัตโนมัติเป็นสิ่งที่ฉันได้ติดตั้งในวันนี้เพื่อลอง
Stephen Paulger

13
มันไม่ได้ตอบคำถามจริงๆ
reinierpost

4
หากนี่คือคำตอบแสดงว่าคำถามนั้นผิด อย่างน้อยก็มีการพัฒนาและควรแก้ไขตามและ / หรือทำเครื่องหมายว่าซ้ำกับaskubuntu.com/questions/194/…
mc0e

39
apt-get upgrade -s | grep -i security

... เป็นสิ่งที่ปลั๊กอินตรวจสอบของ Nagios ใช้ในการนับการอัปเดตความปลอดภัยที่รอดำเนินการซึ่งคล้ายกับสิ่งที่คุณกำลังมองหา


แต่ไม่พบการอัพเดทความปลอดภัยของ bash สำหรับ shellshock?
linjunhalida

3
สิ่งนี้ให้ผลบวกปลอมในแพ็คเกจที่มี "ความปลอดภัย" ในชื่อเช่น "xml-security-c-utils", "debian-security-support", "modsecurity-crs", "node-security" ฯลฯ
Shnatsel

2
@Shnatsel สำหรับการตรวจสอบบรรทัดคำสั่งมันง่ายมาก ... คุณสามารถเห็นได้อย่างง่ายดายว่ามันเป็นค่าบวกหรือไม่ นอกจากนี้หากคุณรู้ชื่อปัจจุบันของระบบปฏิบัติการคุณสามารถเขียนgrep -i xenial-securityและควรลดค่า false positive ให้เป็นศูนย์
Alexis Wilke

1
@Shnatsel ดังนั้นgrep Debian-Securityจะเป็นทางออกที่ดีกว่า
Pablo

สิ่งนี้มีประโยชน์ในการรับจำนวนการregular;securityอัพเดทที่มี -pตัวเลือกในรายการชื่อแพคเกจที่มีอยู่สำหรับการปรับปรุงไม่แยกแยะระหว่างการปรับปรุงปกติและการรักษาความปลอดภัยอย่างไร (อย่างน้อยใน 16.04) ... ดังนั้นนี้ไม่ได้เป็นวิธีที่ปฏิบัติได้ที่จะได้รับรายชื่อของการปรับปรุงการรักษาความปลอดภัยที่มีอยู่เท่าที่ผมสามารถบอกได้
mattpr

10

ในอูบุนตูคุณควรใช้ apt-check มันเป็นโปรแกรมที่เติม motd ของคุณด้วยจำนวนการอัพเดทความปลอดภัยที่มีให้


2
ฉันไม่เห็นบนเดเบียนหรืออูบุนตู
Stephen Paulger

5
apt-check อยู่ใน / usr / lib / update-notifier / ลอง / usr / lib / update-notifier / apt-check - มนุษย์สามารถอ่านได้สำหรับข้อความที่ตรงไปตรงมา
u2702

2
ฉันไม่เชื่อว่าจะแสดงอะไรที่มีประโยชน์ ในการรับรายการคุณต้องเพิ่ม--package-names( -p) แต่ดูเหมือนจะไม่แตกต่างระหว่างการอัพเดทปกติและการอัปเดตความปลอดภัย
Auspex

5

คุณสามารถรับรายการด้วยคำสั่งนี้:

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

2
คุณส่งเอาต์พุตทั้งหมดไปที่/dev/nullดังนั้นคุณจะไม่โลภอะไร!
Auspex

ดูเหมือนว่าจะไม่ทำงานกับความไว้วางใจ มันแสดงให้เห็นถึงแพคเกจทั้งหมดที่จำเป็นต้องมีการปรับปรุงแทน
อัฒภาคหวั่น

ฉันเดาว่ามันจะแสดงให้คุณเห็นว่าการอัพเกรดแบบอัตโนมัติจะทำอย่างไรและหากคุณกำหนดค่าให้อัปเดตความปลอดภัยเท่านั้นบางทีสูตรนี้อาจใช้งานได้ แม้ว่าคำตอบนั้นจะไม่สมบูรณ์เท่าที่ควร
mc0e

วันนี้ฉันแก้ไขสิ่งนี้จำเป็นต้องแก้ไขการตรวจสอบ apt เล็กน้อย ตรวจสอบส่วนสำคัญนี้: gist.github.com/thesp0nge/94f9d336a081a3fefba6ca61d787a28b
เปาโลเปเรโก

3

ฉันมีเวอร์ชันที่แก้ไขแล้วupdate-notifierซึ่งใช้สวิตช์เพิ่มเติม: --security-package-namesซึ่งจะแสดงผลเฉพาะชื่อแพคเกจความปลอดภัยที่เกี่ยวข้อง ฉันมีมันเป็นส่วนสำคัญ (จนกว่าฉันจะสร้างคำขอผสานในโครงการที่เกี่ยวข้องใน Launchpad) จนกว่าจะถึงตอนนั้นก็สามารถรันได้ดังนี้:

วิ่ง

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

เอาท์พุต

นี้จะช่วยให้การส่งออกของรูปแบบการแสดง: ชื่อแพคเกจ , รุ่นที่ติดตั้งและรุ่นผู้สมัคร :

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

3

ตามคำตอบของ Fabrizio Regini ด้านบน

สำหรับ 12.04 / แม่นยำ:

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

สำหรับ 14.04 / Trusty:

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

1

และตัวแปรตัวหนึ่งถูกบดบังด้วยกันหลังจากอ่านคำตอบอื่น ๆ - ฉันเชื่อว่านี่จะตอบสนองต่อปัญหาเชิงบวกที่ผิดพลาดและมีน้ำหนักเบาพอสมควร

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

0

ฉันเชื่อว่าการตอบคำถามที่ OP ถามคือจะดูรายการแพ็คเกจได้อย่างไรและไม่ใช่วิธีการติดตั้งเฉพาะแพ็คเกจความปลอดภัย อาคารในคำตอบของ @topdog คุณควรใช้: /usr/lib/update-notifier/apt-check -p ในกรณีที่-pธงยืนสำหรับแพคเกจ


1
รายการนี้จะแสดงรายการแพ็คเกจทั้งหมดและไม่เพียง แต่อัพเดทด้านความปลอดภัย
confiq

ดูเหมือนว่า apt-check ไม่พร้อมใช้งานใน Debian Jessie มันยังคงอยู่ในระบบ Wheezy ที่อัปเดต แต่การติดตั้งใหม่ไม่ได้มีตัวแจ้งเตือนการอัปเดตอีกต่อไป คุณรู้ทางเลือกอื่นหรือไม่?
มกราคม

@jan ยังคงอยู่ที่นั่นซึ่งเป็นส่วนหนึ่งของ update-notifier-common
Auspex

@Auspex แพ็คเกจนั้นไม่มีอยู่ใน Jessie มีเพียงซึ่งเป็นแพคเกจที่ล้าสมัยสำหรับการเปลี่ยนผ่านupdate-notifier gnome-packagekitดูที่นี่
ม.ค.

1
@jan ขออภัยฉันใช้คำของเดเบียนแทน ฉันค้นหาไฟล์packages.debian.org/และมันบอกกับฉันYou have searched for files named apt-check in suite jessie, all sections, and all architectures. Found 1 results.แต่เมื่อคุณคลิกที่ลิงค์สำหรับผลลัพธ์นั้นมันจะบอกคุณPackage not available in this suite.
Auspex

0

คำสั่งทั้งสองนี้จะคายรายการ ไปที่ห้องสุขาเพื่อดูว่ามีกี่หลัง ;-)

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

ยังคงใช้งานได้สำหรับ distros รุ่นเก่าหรือหากคุณมีการปรับปรุง repos ปิด แต่ความปลอดภัยใน:

sudo apt-get upgrade -s| grep ^Inst |grep Security 

ระวัง. หากคุณสร้าง /tmp/security.list วิธีนี้ในขณะที่ทำงานในฐานะรูทแสดงว่าคุณมีความเสี่ยงที่จะถูกโจมตีจาก symlink
mc0e

ฉันไม่สามารถใช้วิธีนี้ (บล็อครหัสแรก) ใน Ubuntu 14.04 -oDir::Etc::Sourcelistตัวเลือกที่ไม่ได้ดูเหมือนจะปิดการใช้งานชุดมาตรฐานของที่เก็บ
mc0e

0

ฉันคิดว่าคำตอบของ @smin นั้นเป็นวิธีการที่ดี แต่ค่อนข้างหลวมกับ regex ดังที่ @Shnatsel ตั้งข้อสังเกตไว้

เกี่ยวกับสิ่งนี้:

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

รายการนี้แสดงชื่อแพ็คเกจพร้อมกับเวอร์ชันที่คุณต้องการติดตั้ง คุณสามารถ-$2ยกเลิกคำสั่งการพิมพ์หากคุณไม่ต้องการรุ่นที่นั่น

[สิ่งนี้อาจทำให้น้ำหนักเบาลงเพียงเล็กน้อยโดยใช้ awk แทน perl]


0

ฉันแก้ไขการปรับแต่งสคริปต์ apt-check บนระบบ Ubuntu ของฉัน ใช้ความระมัดระวังเกี่ยวกับการอัปเดตความปลอดภัยเท่านั้นและจะแสดงชื่อแพ็กเกจหากมีการระบุแฟล็ก -p

คุณสามารถค้นหาส่วนสำคัญได้ที่นี่: https://gist.github.com/thesp0nge/94f9d336a081a3fefba6ca61d787a28b

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.