Ubuntu 24.04 czy unattended-upgrades działa?
W Ubuntu 24.04 pakiet unattended-upgrades jest obecny, lecz wymaga aktywacji. Sprawdź, jak skonfigurować automatyczne aktualizacje i ustawić Automatic-Reboot.
Dlaczego warto skonfigurować automatyczne aktualizacje bezpieczeństwa
Serwer bez aktualizacji jest najłatwiejszym celem w internecie. Większość naruszeń małych serwerów nie wynika z zaawansowanych ataków, lecz z obecności znanych błędów w starych pakietach, których właściciel nie zaktualizował. Ubuntu dostarcza narzędzie rozwiązujące ten problem: unattended-upgrades instaluje aktualizacje bezpieczeństwa automatycznie, zgodnie z harmonogramem, bez konieczności logowania się użytkownika. Jest to najtańszy sposób na zwiększenie bezpieczeństwa VPS, a konfiguracja w systemie Ubuntu zajmuje kilka minut.
Narzędzie to jest celowo zachowawcze. Domyślnie stosuje ono tylko aktualizacje bezpieczeństwa, a nie wszystkie aktualizacje pakietów. Łatki bezpieczeństwa są niskiego ryzyka i można je stosować bez przeglądu, natomiast aktualizacje funkcji mogą zmienić zachowanie systemu, na którym się polega. To domyślne ustawienie jest właściwe dla większości serwerów; niniejszy przewodnik zachowuje je, wskazując jedynie kilka opcji wartych zmiany.
Krok 1: Instalacja i włączenie
W systemie Ubuntu 24.04 pakiet jest często obecny, ale nie zawsze jest włączony. Należy go zainstalować i aktywować:
sudo apt update
sudo apt install -y unattended-upgrades
sudo dpkg-reconfigure -plow unattended-upgradesPrompt dpkg-reconfigure zadaje jedno pytanie typu tak/nie, dotyczące automatycznego pobierania i instalowania stabilnych aktualizacji. Należy odpowiedzieć tak. Spowoduje to utworzenie pliku aktywującego codzienne zadanie:
cat /etc/apt/apt.conf.d/20auto-upgradesAPT::Periodic::Update-Package-Lists "1";
APT::Periodic::Unattended-Upgrade "1";Pierwsza linia odświeża listę pakietów codziennie; druga uruchamia proces unattended-upgrade codziennie. Ustawienie obu na 1 oznacza, że maszyna codziennie sprawdza i stosuje aktualizacje bezpieczeństwa za pomocą timera systemd, bez dalszych działań ze strony użytkownika.
Krok 2: Decyzja o zakresie automatycznych aktualizacji
Zasady określone są w /etc/apt/apt.conf.d/50unattended-upgrades. Należy otworzyć ten plik i sprawdzić blok Allowed-Origins 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";
};Kluczowe są linie -security, które są domyślnie włączone. Jest to polityka zachowawcza: aktualizacje bezpieczeństwa są instalowane, natomiast zwykłe aktualizacje funkcji pozostają do ręcznego wdrożenia w wybranym terminie. Można dodać linię origin "${distro_id}:${distro_codename}-updates", aby automatycznie stosować wszystkie aktualizacje, jednak dla serwera hostującego ważne usługi, automatyczne stosowanie wyłącznie łat bezpieczeństwa jest bezpieczniejszym domyślnym ustawieniem. Należy pozostawić konfigurację fabryczną, chyba że istnieje konkretny powód, aby ją zmienić.
K3: Obsługa restartów
Niektóre aktualizacje, takie jak jądro systemu (kernel) lub kluczowe biblioteki, wymagają restartu, aby w pełni zadziałać. unattended-upgrades nie zrestartuje serwera bez wyraźnej instrukcji, co oznacza, że załatany kernel może pozostawać nieaktywny do czasu ręcznego restartu. Należy zdecydować o sposobie obsługi tego procesu i jawnie ustawić to w 50unattended-upgrades:
Unattended-Upgrade::Automatic-Reboot "true";
Unattended-Upgrade::Automatic-Reboot-Time "04:00";Powyższa konfiguracja powoduje restart serwera o godzinie 04:00 rano, gdy i tylko gdy aktualizacja tego wymaga. W przypadku pojedynczego VPS bez klastra wysokiej dostępności, krótki restart nad ranem jest zazwyczaj korzystną ceną za posiadanie aktualnego jądra. Jeśli serwer obsługuje usługi, które nie mogą ulegać nieoczekiwanym restartom, należy wyłączyć automatyczny restart i samodzielnie restartować system po sprawdzeniu /var/run/reboot-required.
Krok 4: Weryfikacja działania
Nie należy czekać do następnego dnia, aby sprawdzić, czy zadanie działa. Należy uruchomić symulację (dry run), która pokaże dokładnie, co zostałoby zainstalowane, bez wprowadzania zmian:
sudo unattended-upgrade --dry-run --debugWyjście wymienia pakiety, które zostaną rozpatrzone, oraz ich źródła, co pozwala zobaczyć działającą politykę. Po wykonaniu rzeczywistego zadania przynajmniej raz, zapis zostanie utworzony tutaj:
cat /var/log/unattended-upgrades/unattended-upgrades.logTen log stanowi odpowiedź na pytanie, czy serwer faktycznie aktualizuje się samodzielnie. Jeśli widnieją w nim pakiety bezpieczeństwa instalowane zgodnie z harmonogramem, zadanie działa poprawnie.
Miejsce w architekturze bezpieczeństwa
Automatyczne aktualizacje są jedną z warstw utwardzania serwera, a nie całym systemem zabezpieczeń. Zapobiegają one pozostawaniu znanych błędów w systemie, ale nie kontrolują uprawnień do logowania ani wystawionych usług. Należy je połączyć z utwardzaniem SSH (tylko klucze), aby zapobiec atakom brute-force, z domyślnie blokującym firewallem UFW, aby dostępny był tylko wybrany ruch, oraz z użytkownikami usług o ograniczonych uprawnieniach, aby przejęcie aplikacji nie skutkowało przejęciem całego systemu. Łatanie zamyka znane luki; pozostałe warstwy ograniczają skutki tych, których nie znamy.
FAQ
Czy unattended-upgrades stosuje każdą aktualizację, czy tylko aktualizacje bezpieczeństwa?
Domyślnie tylko aktualizacje bezpieczeństwa. Blok Allowed-Origins w /etc/apt/apt.conf.d/50unattended-upgrades aktywuje źródła -security, pozostawiając zwykłe aktualizacje funkcji do ręcznego wdrożenia. Jest to celowe działanie: łatki bezpieczeństwa są niskiego ryzyka i warto stosować je automatycznie, podczas gdy aktualizacje funkcji mogą zmienić zachowanie systemu, dlatego większość serwerów powinna zachować domyślną, zachowawczą konfigurację.
Czy automatyczne aktualizacje zrestartują mój serwer?
Tylko jeśli zostanie to skonfigurowane. Ustawienie Unattended-Upgrade::Automatic-Reboot "true" oraz Automatic-Reboot-Time w konfiguracji spowoduje restart serwera w wyznaczonym czasie, gdy aktualizacja (np. łata jądra) będzie tego wymagać. Jeśli funkcja jest wyłączona, załatany kernel czeka na ręczny restart; należy sprawdzić /var/run/reboot-required, aby dowiedzieć się, czy oczekuje aktualizacja wymagająca restartu.
Jak sprawdzić, czy automatyczne aktualizacje faktycznie działają?
Uruchom sudo unattended-upgrade --dry-run --debug, aby zobaczyć, co zostałoby zainstalowane w tej chwili (bez wprowadzania zmian), oraz przeczytaj /var/log/unattended-upgrades/unattended-upgrades.log, aby zobaczyć historię poprzednich uruchomień; każda automatyczna instalacja trafia również do /var/log/apt/history.log. Jeśli log wykazuje instalację pakietów bezpieczeństwa zgodnie z dziennym harmonogramem, timer działa poprawnie. Jeśli symulacja (dry run) wypisuje No packages found that can be upgraded unattended, oznacza to, że system jest już w pełni zaktualizowany lub dozwolone źródła są zbyt wąskie, aby objąć repozytorium bezpieczeństwa.
Czy unattended-upgrades wystarczy, aby zapewnić bezpieczeństwo serwera?
Nie, jest to jednak niezbędna warstwa. Zapobiega ona pozostawaniu znanych podatności bez łatek, co powstrzymuje najczęstszy rodzaj ataków, ale nie kontroluje dostępu ani ekspozycji usług. Należy połączyć ją z utwardzaniem SSH, firewallem typu default-deny oraz użytkownikami usług o minimalnych uprawnieniach, aby uzyskać serwer faktycznie trudny do przełamania.