Po ostatniej luce w zabezpieczeniach OpenSSL związanej z sercem , chciałbym regularnie aktualizować moje maszyny EC2. Naiwnym podejściem byłoby ustalanie godzinnego zadania CRON dla aktualizacji zabezpieczeń ( sudo apt-get update && sudo unattended-upgrade
).
Czy istnieje jakieś ryzyko? Czy istnieje zalecany mechanizm aktualizacji dla maszyn EC2?
źródło
Używamy
unattended-upgrades
od 2015 do 2020 roku bez żadnych problemów. Mamy małą konfigurację (na DigitalOcean) z:nginx
mysql-server
php5-fpm
php5-curl
php5-mysql
W oparciu o dobrą wydajność w przeszłości, przeprowadzanie aktualizacji w ten sposób jest bezpieczniejsze niż nie robienie tego. Ale to niekoniecznie gwarancja na przyszłość!
To może nie być tak dobry pomysł
apache
, na podstawie raportów innych użytkowników i moich wcześniejszych doświadczeń zapache
aktualizacjami. [Patrz wyżej i tutaj ]Dzięki
unattended-upgrades
ręczna interwencja będzie nadal wymagana, gdy wersja zbliży się do EOL .(Poza pytaniem: z mojego doświadczenia z TWiki, WordPress i Jenkinsem, aktualizowanie tych aplikacji jest w rzeczywistości większym problemem niż sam system operacyjny, chociaż oczywiście powinniśmy naprawdę zrobić jedno i drugie. Dla spokoju ducha, można piaskownicować aplikacje internetowe jako procesy inne niż root działające w kontenerze Docker).
Ale ponieważ pytałeś o najlepsze praktyki , podstawowe podejście zalecane w dokumentacji AWS to:
Można tego dokonać w ramach niebiesko-zielonej strategii wdrażania . Zaletą jest to, że możesz uruchomić testy na nowym serwerze przed przełączeniem ruchu. Jeśli Twoje testy są dokładne, teoretycznie Twoje aktualizacje mogą być w pełni zautomatyzowane, zweryfikowane przed uruchomieniem i bez przestojów.
Inne zalety:
Testy mogą dać ci zaawansowane ostrzeżenie, jeśli wymagana jest ludzka uwaga (w przeciwieństwie do sytuacji
unattended-upgrades
, gdy ostrzeżenia przychodzą od użytkowników dopiero po wystąpieniu problemu!)Jeśli Twój system zostanie narażony na szwank lub zdecydujesz się zmienić dostawcę, takie podejście powinno ułatwić wdrożenie nowego wdrożenia. Twoja strategia wdrażania jest oparta na skryptach, a nie na starożytnej pamięci.
Ale oczywiście to podejście wymaga więcej konfiguracji niż zwykła instalacja
unattended-upgrades
i jest bardziej złożone, więc wciąż jest miejsce na błędy.AWS wspomina również o wykonaniu polecenia „Aktualizacja stosu zależności zależności”, co wydaje się być ich oficjalnym sposobem wykonywania czegoś podobnego
unattended-upgrades
. Wygląda na to, że można je uruchomić z interfejsu instancji, ale nie jestem pewien, czy można to zautomatyzować.źródło