如何确保在断断续续的互联网连接上定期运行安全升级?

斯克尔斯特

对于未永久连接到 Internet 的计算机,Ubuntu 似乎有一个持久的安全升级盲点。这些天肯定有很多,主要是笔记本电脑。

理论上的解决方案是unattended-upgrades在 Ubuntu 上,这默认使用每日systemd计时器或 cron 作业运行。使用 cron,anacron默认情况下也作为保护运行,并执行cron因计算机关闭而错过的任何作业。到目前为止如此明智。

但!

  1. 默认unattended-upgrades配置(/etc/apt/apt.conf.d/50unattended-upgrades或类似配置)需要设置以下内容,否则升级可能会在漫游笔记本电脑上被跳过:

    Unattended-Upgrade::OnlyOnACPower "false";
    Unattended-Upgrade::Skip-Updates-On-Metered-Connections "false";
    
  2. 更糟糕的是anacron,例如cron,无论互联网连接是否可用,都会运行作业!这显然是非服务器 Ubuntu 的一个主要设计错误,因为个人计算机并不总是永久连接。

TLDR:使用默认配置,在漫游的笔记本电脑上,unattended-upgrades大部分时间都不会工作。

(也许需要有一个单独的cron作业或systemd计时器类,它等待网络连接直到执行。或者cron.daily可以切换失败的作业cron.hourly直到它们成功执行。也许已经有一个了。)

一种实用的解决方案是在网络上线后作为用户脚本systemd执行单元文件unattended-upgrades但它每次启动只会运行一次。

最优解是什么?有谁知道是否有计划用新包或配置改进来解决这个问题?

斯克尔斯特

如果使用network-managerUbuntu 上的当前默认设置连接到 Internet ,则创建一个调度程序脚本以在连接到网络后启动unattended-upgradeunattended-upgrades是一个符号链接,也可以使用):

sudo touch /etc/NetworkManager/dispatcher.d/20-myconnectionscript
sudo chmod +x /etc/NetworkManager/dispatcher.d/20-myconnectionscript

20-myconnectionscript

#!/bin/sh

if [ "$2" = "up" ];
  # only proceed if unattended-upgrades was last run more than a day ago
  ELAPSEDSINCEUU=$(($(date +%s) - $(date +%s -r /var/lib/apt/periodic/unattended-upgrades-stamp)))
  if [ $ELAPSEDSINCEUU -gt 86400 ]; then
    apt update --yes # replace, see below
    /usr/bin/unattended-upgrade # replace, see below
  fi
fi

编辑。事实证明unattended-upgrades不会触发包列表的更新。因此,如果unattended-upgrades一直失败,那么很有可能apt update也失败了,在这种情况下,升级将继续不会发生!所以添加了手动更新脚本。令人失望的是,确保安全升级必须如此复杂。

编辑 2.如果您想绝对确保您的笔记本电脑是最新的,这就是您在非交互式脚本中所需要的。可以确认它可靠地工作。用它替换上面的 2 行。

DEBIAN_FRONTEND=noninteractive apt-get --yes update
DEBIAN_FRONTEND=noninteractive apt-get --yes --allow-downgrades --allow-remove-essential --allow-change-held-packages -- option Dpkg::Options::=--force-confold --option Dpkg::Options::=--force-confdef dist-upgrade

它是完整的dist-upgrade,而不仅仅是安全升级。如果有人对仅安全版本有建议,版本在非交互式运行时始终有效,并且不会涉及太多 repo 配置,请提出建议。

再一次:unattended-upgrades 不能期望为间歇性连接的计算机工作。Ubuntu 安全团队确实需要解决这种情况。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何修复断断续续的音频?

来自分类Dev

断断续续的陈述

来自分类Dev

如何确保互联网上的连接安全?

来自分类Dev

断断续续的音频蓝牙耳机

来自分类Dev

断断续续的Flash音频

来自分类Dev

音频失真且断断续续

来自分类Dev

断断续续的jQuery平滑滚动

来自分类Dev

iOS中的断断续续的动画

来自分类Dev

pygame音频断断续续

来自分类Dev

断断续续的在线python游戏

来自分类Dev

pygame音频断断续续

来自分类Dev

Chrome上的声音断断续续

来自分类Dev

断断续续的Flash音频

来自分类Dev

音频失真且断断续续

来自分类Dev

断断续续的音频蓝牙耳机

来自分类Dev

如何调查互联网连接上的随机中断?

来自分类Dev

如何通过Chrome Flash插件解决抖动(或断断续续)播放的问题?

来自分类Dev

如何通过Chrome Flash插件解决抖动(或断断续续)播放的问题?

来自分类Dev

使用 KDE 系统设置后如何修复断断续续的字体?

来自分类Dev

如何定期检查Phonegap中的互联网连接?

来自分类Dev

HTML5视频断断续续吗?

来自分类Dev

JS中DeltaTime函数产生的断断续续的结果

来自分类Dev

AJAX加载对象/图像-使jQuery动画断断续续

来自分类Dev

Bootstrap 4可折叠卡片-断断续续的动画

来自分类Dev

HTML5视频断断续续

来自分类Dev

为什么此动画会断断续续?

来自分类Dev

表格视图中的滚动缓慢/断断续续

来自分类Dev

C#WPF进程获取StandardOutput是断断续续的

来自分类Dev

我为什么要进行断断续续?