SSD Nodes Learn Hosting plans →
Przewodniki Matt ConnorAutor: Matt Connor

Ubuntu 24.04: czy unattended-upgrades jest włączone?

Sprawdź, czy Ubuntu 24.04 automatycznie aktualizuje pakiety. Dowiedz się, jak działa plik 20auto-upgrades, dlaczego Automatic-Reboot jest wyłączone i jak wykonać testowy dry-run.

Dlaczego warto skonfigurować automatyczne aktualizacje bezpieczeństwa

Niezałatany serwer to najłatwiejszy cel w internecie. Większość włamań na małe serwery nie jest wyrafinowana; wynikają one ze znanych luk w starym oprogramowaniu, którego właściciel nigdy nie zaktualizował. Ubuntu dostarcza narzędzie, które samodzielnie eliminuje ten problem: unattended-upgrades instaluje aktualizacje bezpieczeństwa automatycznie, zgodnie z harmonogramem, bez konieczności logowania się. To najtańszy sposób na poprawę bezpieczeństwa na VPS, a w systemie Ubuntu konfiguracja zajmuje zaledwie kilka minut.

Narzędzie to jest celowo konserwatywne. Domyślnie stosuje tylko aktualizacje bezpieczeństwa, a nie wszystkie aktualizacje pakietów, ponieważ poprawka bezpieczeństwa wiąże się z niskim ryzykiem i warto ją wdrożyć bez sprawdzania, podczas gdy aktualizacja funkcji może zmienić zachowanie, na którym polegasz. To ustawienie domyślne jest właściwe dla większości serwerów i niniejszy przewodnik je zachowuje, wskazując jednocześnie kilka ustawień, które warto zmienić.

Krok 1: Instalacja i aktywacja

W systemie Ubuntu Server 24.04 pakiet jest instalowany i aktywowany domyślnie. Dokumentacja serwerowa Ubuntu podaje, że unattended-upgrades jest zainstalowany fabrycznie, a automatyczna instalacja aktualizacji bezpieczeństwa jest włączona zaraz po instalacji. Pytanie o aktywację, które pojawia się podczas instalacji, ma domyślną odpowiedź twierdzącą, więc o ile nie wybrano inaczej, zadanie codzienne jest już aktywne. Niestandardowy lub okrojony obraz dostawcy może się różnić, dlatego należy to potwierdzić, zamiast zakładać. Poniższe polecenia są bezpieczne w obu przypadkach: instalują pakiet, jeśli go brakuje, i ponownie wyświetlają pytanie, które go aktywuje:

sudo apt update
sudo apt install -y unattended-upgrades
sudo dpkg-reconfigure -plow unattended-upgrades

Monit dpkg-reconfigure zadaje jedno pytanie typu tak/nie: czy pobierać i instalować stabilne aktualizacje automatycznie. Należy odpowiedzieć twierdząco. Powoduje to zapisanie pliku, który włącza zadanie codzienne:

cat /etc/apt/apt.conf.d/20auto-upgrades
APT::Periodic::Update-Package-Lists "1";
APT::Periodic::Unattended-Upgrade "1";

Pierwsza linia odświeża listę pakietów codziennie; druga uruchamia unattended-upgrades codziennie. Ustawienie obu na 1 oznacza, że maszyna sprawdza i stosuje aktualizacje bezpieczeństwa każdego dnia, korzystając z timera systemd, bez konieczności podejmowania dalszych działań.

Krok 2: Określenie zakresu automatycznych aktualizacji

Polityka znajduje się w /etc/apt/apt.conf.d/50unattended-upgrades. Należy otworzyć ten plik i sprawdzić blok Allowed-Origins znajdujący się w górnej części:

Unattended-Upgrade::Allowed-Origins {
    "${distro_id}:${distro_codename}";
    "${distro_id}:${distro_codename}-security";
    "${distro_id}ESMApps:${distro_codename}-apps-security";
    "${distro_id}ESM:${distro_codename}-infra-security";
};

Istotne są linie -security, które są domyślnie włączone. Jest to konserwatywna polityka: aktualizacje bezpieczeństwa są pobierane, natomiast zwykłe aktualizacje funkcji pozostają do ręcznego zastosowania w wybranym momencie. Można odkomentować linię "${distro_id}:${distro_codename}-updates" w tym samym bloku, aby automatycznie pobierać również regularne stabilne aktualizacje Ubuntu. Rozszerza to politykę wyłącznie do archiwum -updates systemu Ubuntu, a nie do każdego repozytorium czy PPA w systemie. Nadal obowiązują standardowe zabezpieczenia: narzędzie wstrzymuje każdy pakiet, który wywołałby monit o konfigurację pliku, i nie zainstaluje niczego, jeśli zależności nie pochodzą z dozwolonego źródła. W przypadku serwera obsługującego ważne usługi, automatyczne pobieranie wyłącznie poprawek bezpieczeństwa jest bezpieczniejszym ustawieniem domyślnym. Należy pozostawić konfigurację w stanie fabrycznym, chyba że istnieje konkretny powód, aby ją zmienić.

Krok 3: Obsługa restartów

Niektóre aktualizacje, takie jak jądro systemu lub biblioteki podstawowe, wchodzą w życie dopiero po restarcie. unattended-upgrades nie zrestartuje serwera, dopóki nie wydasz takiego polecenia, co oznacza, że załatane jądro może pozostać nieużywane do momentu, aż sam zrestartujesz maszynę. Zdecyduj, jak chcesz tym zarządzać i ustaw to jawnie w 50unattended-upgrades:

Unattended-Upgrade::Automatic-Reboot "true";
Unattended-Upgrade::Automatic-Reboot-Time "04:00";

To polecenie zrestartuje serwer o czwartej nad ranem, wtedy i tylko wtedy, gdy aktualizacja tego wymaga. Na pojedynczym serwerze VPS bez klastra z przełączaniem awaryjnym, krótki restart wczesnym rankiem jest zazwyczaj właściwym kompromisem, aby zachować aktualność poprawek jądra. Jeśli serwer obsługuje usługi, które nigdy nie mogą zostać nieoczekiwanie zrestartowane, wyłącz restarty i wyrób w sobie nawyk samodzielnego restartowania po sprawdzeniu /var/run/reboot-required.

Krok 4: Weryfikacja działania

Nie czekaj dzień, aby sprawdzić, czy zadanie działa. Uruchom symulację, która pokaże dokładnie, co zostałoby zastosowane, bez wprowadzania żadnych zmian:

sudo unattended-upgrade --dry-run --debug

Dane wyjściowe zawierają listę pakietów, które są brane pod uwagę, oraz ich źródła, dzięki czemu możesz zobaczyć politykę w działaniu. Po co najmniej jednym uruchomieniu właściwego zadania, jego historia znajduje się tutaj:

cat /var/log/unattended-upgrades/unattended-upgrades.log

Ten dziennik jest odpowiedzią na pytanie "czy mój serwer faktycznie się aktualizuje". Jeśli pokazuje instalację pakietów bezpieczeństwa zgodnie z harmonogramem, zadanie działa poprawnie.

Miejsce tego rozwiązania w architekturze

Automatyczne aktualizacje to jedna z warstw zabezpieczeń serwera, a nie całość. Zapobiegają one utrzymywaniu się znanych błędów, ale nie rozwiązują kwestii tego, kto może się zalogować ani co jest wystawione na zewnątrz. Połącz je z utwardzaniem SSH przy użyciu wyłącznie kluczy, aby uniemożliwić ataki brute-force na wejście, zaporą UFW z domyślną polityką odmowy, aby dostępny był tylko wybrany ruch, oraz nieuprzywilejowanymi użytkownikami usług, aby w razie włamania do aplikacji nie przejęto całego systemu. Hostowane aplikacje wymagają dodatkowej ochrony, więc jeśli na serwerze działa własny magazyn haseł, utwardzanie Vaultwarden zabezpieczy token administratora i plik kopii zapasowej, których żadna aktualizacja apt nie ochroni. Łatanie zamyka znane luki; pozostałe warstwy ograniczają szkody wynikające z tych, o których jeszcze nie wiesz.

FAQ

Czy unattended-upgrades stosuje każdą aktualizację, czy tylko te dotyczące bezpieczeństwa?

Domyślnie tylko aktualizacje bezpieczeństwa. Blok Allowed-Origins w /etc/apt/apt.conf.d/50unattended-upgrades włącza źródła -security i pozostawia zwykłe aktualizacje funkcji do ręcznego zastosowania. Jest to działanie celowe: poprawki bezpieczeństwa wiążą się z niskim ryzykiem i warto je stosować automatycznie, podczas gdy aktualizacje funkcji mogą zmienić zachowanie systemu, dlatego większość serwerów powinna zachować konserwatywne ustawienia domyślne.

Czy automatyczne aktualizacje zrestartują mój serwer?

Tylko jeśli je do tego skonfigurujesz. Ustaw Unattended-Upgrade::Automatic-Reboot "true" oraz Automatic-Reboot-Time w pliku konfiguracyjnym, a serwer zrestartuje się o tej godzinie, jeśli aktualizacja będzie tego wymagać, na przykład po poprawce jądra. Jeśli opcja jest wyłączona, załatane jądro czeka na Twój ręczny restart; sprawdzaj /var/run/reboot-required, aby wiedzieć, kiedy jest on wymagany.

Jak sprawdzić, czy automatyczne aktualizacje faktycznie działają?

Uruchom sudo unattended-upgrade --dry-run --debug, aby zobaczyć, co zostałoby zastosowane w tej chwili bez wprowadzania zmian, oraz przeczytaj /var/log/unattended-upgrades/unattended-upgrades.log, aby przejrzeć historię poprzednich uruchomień; każda automatyczna instalacja jest również zapisywana w /var/log/apt/history.log. Jeśli dziennik pokazuje pakiety bezpieczeństwa instalowane zgodnie z codziennym harmonogramem, timer działa. Jeśli symulacja wyświetla No packages found that can be upgraded unattended, oznacza to, że albo wszystko jest już aktualne, albo dozwolone źródła są zbyt wąskie, aby dopasować się do repozytorium bezpieczeństwa.

Czy unattended-upgrades wystarczy, aby zabezpieczyć mój serwer?

Nie, ale jest to niezbędna warstwa. Zapobiega utrzymywaniu się znanych luk, co powstrzymuje najczęstszy rodzaj włamań, ale nie kontroluje dostępu ani ekspozycji usług. Połącz to z utwardzaniem SSH, zaporą z domyślną odmową ruchu oraz użytkownikami usług o minimalnych uprawnieniach, aby uzyskać serwer, do którego włamanie jest rzeczywiście trudne.