Automatyczne aktualizacje w Ubuntu Server.

Czy ten wpis jest nadal aktualny?

Niniejszy poradnik został opracowany dla wersji Ubuntu 8.04 LTS. W Ubuntu 10.04 LTS automatyczną aktualizację systemu możemy wybrać już podczas instalacji. Tym niemniej konfiguruje się ją tak samo, w związku z czym poradnik nadal może być przydatny, gdy zechcemy coś zmienić w ustawieniach systemowych.

Szybki rzut oka na pliki konfiguracyjne Ubuntu 12.04 LTS pozwala wnioskować, iż w tym systemie sposób konfiguracji automatycznych aktualizacji także nie uległ istotnym zmianom.

Kategorie aktualizacji

Wiele razy spotykałem się z narzekaniem ze strony użytkowników, iż poprawki potrafią „zepsuć” system. Jest w tym trochę prawdy. Aby jednakże takich wrażliwych systemów nie zostawić zupełnie bez opieki, w Ubuntu poprawki są podzielone na dwie kategorie:

  • aktualizacje związane z bezpieczeństwem (security upgrades)
  • aktualizacje związane z nowymi możliwościami (recommended upgrades)

Osobiście automatycznie instaluję tylko security upgrades. Kategorię recommended wolę najpierw przejrzeć i zainstalować ręcznie. Oto, jak to zrobić…

Krok1: Nullmailer, czyli poczta e-mail.

Krok ten może wydawać się opcjonalny, ale powinien być wykonany. Dobrze jest bowiem, gdy system ma możliwość informowania administratora e-mailem o zaistniałych zdarzeniach. W przypadku aktualizacji Ubuntu potrafi wysłać list ze spisem zmienionych pakietów oraz informacją, czy aktualizacja się powiodła, czy też nie. Nie trzeba przy tym instalować całego systemu pocztowego! Jeżeli w sieci firmy jest już jeden serwer poczty, to wystarczy zainstalować prosty pakiet nullmailer, który wszystkie wychodzące listy będzie kierować poprzez już posiadany system pocztowy, czyli tzw. smarthost. Oczywiście wymaga to odpowiedniej konfiguracji systemu pocztowego, aby pozwalał innym serwerom wysyłać przez niego pocztę. Nie będę się tutaj rozpisywać, gdyż celem tego artykułu nie jest opis konfiguracji serwera pocztowego. W skrócie: w Postfixie wystarczy dodać hosta do mynetworks.

Instalacja nullmailera:

sudo aptitude install nullmailer mailx

Konfiguracja:

sudo dpkg-reconfigure nullmailer

Warto ręcznie przekonfigurować pakiet, gdyż w domyślnym procesie instalacji nie pada pytanie o to, na jaki adres przekierować listy kierowane do lokalnego administratora.

Krok 2:  Instalacja pakietów

Do poprawnego działania automatycznych aktualizacji potrzebne są 2 pakiety instalowane w następujący sposób:

sudo aptitude install unattended-upgrades update-notifier-common wget

Krok 3: Wybór kategorii instalowanych pakietów

Uwaga: przykład dotyczy Ubuntu 8.04 Hardy Heron! Inne systemy są opisane poniżej…

W pliku /etc/apt/apt.conf.d/50unattended-upgrades musimy określić jakie kategorie aktualizacji chcemy automatycznie instalować. Plik ten trzeba otworzyć z uprawnieniem roota, czyli np.:

sudo vi /etc/apt/apt.conf.d/50unattended-upgrades

Następnie piszemy w nim:

Unattended-Upgrade::Allowed-Origins {
    "Ubuntu hardy-security";
    // "Ubuntu hardy-updates";
};
Unattended-Upgrade::Mail "adres@email.com"

Tak powinna wyglądać cała zawartość pliku. Nic więcej. Pierwsza linijka uaktywnia instalowanie poprawek związanych z bezpieczeństwem systemu. Druga, wykomentowania przeze mnie, może włączyć wszystkie pozostałe aktualizacje. Jak widać – ja wolę tego nie robić.

Bardzo przydatna jest też linijka

Unattended-Upgrade::Mail "adres@email.com"

wymuszająca wysyłanie e-maila z powiadomieniem. Oczywiście wymaga ona przejścia przez Krok 1.

 

Ważne: jak już wspomniałem ten przykład dotyczy dystrybucji 8.04 Hardy Heron. Opisuję go, gdyż jest to dystrybucja typu „Long Term Support”, czyli dystrybucja z przedłużonym okresem wsparcia. Oczywiście analogicznie można aktualizować nowsze dystrybucje zastępując „Ubuntu hardy-security” poleceniem „Ubuntu jaunty-security” dla Ubuntu 9.04.

Krok 4: Uruchomienie autoaktualizacji

Ostatni krok to powiadomienie systemu, aby przeprowadzał automatyczne aktualizacje. W tym celu otwieramy, z uprawnieniami roota, plik /etc/apt/apt.conf.d/10periodic i zapisujemy do niego:

APT::Periodic::Update-Package-Lists "1";
APT::Periodic::Download-Upgradeable-Packages "1";
APT::Periodic::AutocleanInterval "1";
APT::Periodic::Unattended-Upgrade "1";

Poszczególne linijki w skrócie oznaczają:

  1. Aktualizuj spis pakietów co n dni. W naszym przypadku n = 1, czyli codziennie będzie wykonywanie polecenieapt-get update
  2. Ściągnij najnowsze wersje pakietów, czyli wykonaj polecenie apt-get upgrade –download-only
  3. Wykonaj polecenie: apt-get autoclean
  4. Najważniejsze: przeprowadź automatyczne aktualizacje za pomocą zainstalowanego w Kroku 2 pakietu unattended-upgrades.

Więcej informacji dostępnych jest w pliku: /etc/cron.daily/apt.

Krok 5: Sit back and relax 🙂

Jeśli wszystko zostało poprawnie wykonane, to możemy się teraz odprężyć i czekać na e-maile z informacją o tym, że krytyczna luka w systemie została załatana zanim zdążyliśmy dotrzeć do pracy 🙂

UWAGA!

W powyższej instrukcji brakuje sprawdzenia, czy system posiada zainstalowany crontab. Ten program jest niezbędny do poprawnej pracy, a czasami może go brakować.

Źródło

Artykuł ten bazuje na informacjach ze strony http://www.vanutsteen.nl/2008/06/09/unattended-upgrades-on-a-ubuntu-hardy-server/ dzięki której nie mam już problemów z aktualizacją Ubuntu 🙂