Как обезопасить Ваш Dеbian


  
 
 
  К оглавлению
 

1. Введение

 
Сегодня мир программного обеспечения с открытым кодом, ассциирующийся с Linux, стал настолько разнообразен и активно использоваться, что это неизбежно приводит к обнаружению ошибок, особенно критических с точки зрения безопасности доступа. В такой ситуации, любой здравомыслящий человек задается вопросом как своевременно обновлять систему при публикации их и оперативно устранять уязвимость системы.
Поэтому команда дистрибутива Debian не только устраняет связанные с уязвимостью ошибки в стабильной версии, но постоянно улучшает и развивает его в тестовой и нестабильной версиях. При этом любая версия дистрибутива Debian может быть запущена и обновлена, чтобы соответствовать духу времени и быть более безопасной благодаря во время исправленным и обнаруженным ошибкам (Bug fixes) в программном обеспечении.
В базовой комплектации дистрибутива Debian пользователю нужно периодически запускать отдельно утилиты для обнаружения сделанных изменений в состав установленного программного обеспечения (обновлений) и затем, выполнять процедуру обновления, как показано ниже.
 
# apt-get update
# apt-get upgrade
 
Такие повторяемые операции являются весьма утомительными, особенно когда речь идет о множестве копий, установленных на многочисленном парке вычислительных машин. Следовательно, их необходимо было автоматизировать с использованием набора утилит, разработанных для этой цели.

2. Утилиты полуавтоматического обновления

2.1. Набор скриптов apticron

Набор автоматического обновления apticron представляет собой скрипты, вызываемые демоном (сервисом) cron один раз в день и позволяющие отправлять на электронную почту системному администратору извещение, как только будут доступны обновления. Подобно тому, что представлено ниже:
 
apticron report [Fri, 19 Jan 2007 18:42:01 -0800]
========================================================================

apticron has detected that some packages need upgrading on: 

	faustus.example.com
	[ 1.2.3.4 ]

The following packages are currently pending an upgrade:

	xfree86-common 4.3.0.dfsg.1-14sarge3
	libice6 4.3.0.dfsg.1-14sarge3
	libsm6 4.3.0.dfsg.1-14sarge3
	xlibs-data 4.3.0.dfsg.1-14sarge3
	libx11-6 4.3.0.dfsg.1-14sarge3
	libxext6 4.3.0.dfsg.1-14sarge3
	libxpm4 4.3.0.dfsg.1-14sarge3

========================================================================

Package Details:

Reading changelogs...
--- Changes for xfree86 (xfree86-common libice6 libsm6 xlibs-data libx11-6 libxext6 libxpm4) ---
xfree86 (4.3.0.dfsg.1-14sarge3) stable-security; urgency=high

  * Non-maintainer update by the Security Team:
    Fixes several vulnerabilities reported by iDefense
    (CVE-2006-6101, CVE-2006-6102, CVE-2006-6103)
 
 -- Moritz Muehlenhoff   Sun,  7 Jan 2007 13:31:35 +0000

========================================================================

You can perform the upgrade by issuing the command:

	apt-get dist-upgrade

as root on faustus.example.com

It is recommended that you simulate the upgrade first to confirm that
the actions that would be taken are reasonable. The upgrade may be 
simulated by issuing the command:

	apt-get -s dist-upgrade

-- apticron 
При этом, как видно из текста письма, apticron осуществит автоматическую загрузку доступных обновлений (пакетов Debian) в кэш APT, но установку производить не будет до тех пор, пока системный администратор не сделает это самостоятельно.

2.2 Интерактивная утилита gpk-update-viewer

Данная утилита очень прекрасно работает на серверах, но больше её предпочитают пользователи, работающие на вычислительных машинах и представляющие собой рабочии станции (интерактивные системы) с установленным графическим окружением рабочего стола Gnome.
Интерактивная утилита gpk-update-viewer вызывается в системном лотке рабочего стола через иконку, отображаемую в нем, когда обновления доступны. Сам интерфейс достаточно прост и наутивен для пользователя для того, чтобы устанавливать обновления. Так же пользователь может получить перечень обновлений, читать краткие аннотации обновляемых пакетов и соответствующие изменения в них, и самостоятельно выбирать всякий раз производить обновление или нет.

3. Ненавязчивое (автоматическое) обновление из базового набора APT

Apt (Advanced Package Tool) является базовым, основным набором утилит Debian и обеспечивает:
  • установку пакетов Debian;
  • их удаления пакетов;
  • приведение их к дате;
  • и многое другое...
По-мимо этого в APT есть функция ненавязчивого обновления, которая позволит системным администраторам отвечающим за несколько серверов обновлять автоматически Debian c использованием скрипта /etc/cron.daily/apt и дополнительными настройками конфигурационных переменных APT, которое мы рассмотрим ниже.
Если вы планируете воспользоваться этим методом, Вам необходимо установить пакет apt-listchanges для мониторинга вашей системы и настроить его для отправки вам электронных сообщений (emails) о том, что было сделано и как в процессе процедуры обновления. Впрочем, всегда существуют файлы в директории /var/log/unattended-upgrades/ или журнал системных сообщений /var/log/dpkg.log.
Смысл в ненавязчивом обновлении имеет место, если только автоматическое обновление применяется к программному обеспечению не требующую перегрузки системы или непосредственно затрагивающее работу пользователей (базы данных, WEB-серевер с массовым доступом). В таком случае системному администратору остается использовать приведенных в п.п. 2.1 и 2.2 утилиты полуавтоматического обновления, требующего подтверждения с его стороны.
В тоже время, любой системный администратор всегда стоит перед выбором либо быть уверенным в том, что система не уязвима, либо она будет скомпроментирована из-за того, что в случае серьезной обнаруженной уязвимостью в установленном программном обеспечении на него не была во время поставлена "заплатка". Поэтому использование функции ненавязчивого обновления имеет смысл только в том случае, если ограничено количество пакетов к которым применяется автоматическое обновление. Как создавать такого рода исключения будет показано ниже на примере пакетов системной библиотеки libc6 и vim.
Для того, чтобы сделать обновления автоматическими, нам необходимо установить пакет unattended-upgrades. Так же неплохо было иметь в системе команду /usr/bin/mail, если вдруг захочется настроить пакет unattended-upgrades для отправки квитирующих уведомлений с использованием электронной почты. Следовательно, нам нужно так же установить пакет bsd-mailx:
# apt-get install unattended-upgrades bsd-mailx
Обычно, настройки по-умолчанию должны работать без каких-либо проблем, но лучше сделать несколько изменений, которые позволят избежать проблем в будущем. Особенно, когда речь идет о смене возможной стабильной версии (статья была написана в период перехода от "Wheeze" к "Jessie"), как показывает практика не все проходит так гладко, как нам этого не хотелось. Поэтому меняем по умолчанию прописанные ветки stable на wheeze, чтобы при переходе от ветки "Wheeze" к ветке "Jessie" не произошло обновление до последней. При этом не забываем проверить список репозитариев, указанных в списке источников в файле /etc/apt/sources.list.
deb http://ftp.ru.debian.org/debian/ wheezy main
deb-src http://ftp.ru.debian.org/debian/ wheezy main

deb http://security.debian.org/ wheezy/updates main
deb-src http://security.debian.org/ wheezy/updates main
Затем, нужно указать черный список пакетов, которые не должны быть обновлены по соображениям, приводимым ранее. Кроме того, по электронной почте получать квитирующие сообщения о сделанных изменениях и возникших проблемах, удалять не используемые зависимости после завершения процедуры обновления и перегружать систему если это требуется.
Для этого, обратим свой взгляд на файл /etc/apt/apt.conf.d/50unattended-upgrades с настройками по умолчанию, которые прекрасно себя зарекомендовали на большинстве инсталляций. Назначение для переменных APT приводится в комментариях, экранируемых двойными косыми чертами.
 
Unattended-Upgrade::Origins-Pattern {
// Архив или цепочки имеющие сочетания:
// Так как при миграции тестовой версии к "стабильной" релизы
// будут существенно отличаться, поэтому вместо "стабильной"
// указываем текущий стабильный дистрибутив (при написании статью стабильным был Wheezy).
//      "o=Debian,a=stable";
//      "o=Debian,a=stable-updates";
//      "o=Debian,a=proposed-updates";
        "origin=Debian,archive=wheezy,label=Debian-Security";
};

// Черный список пакетов не подлежащих обновлению
Unattended-Upgrade::Package-Blacklist {
      "vim";
      "libc6";
      "libc6-dev";
      "libc6-i686";
};

// Это опция позволит вам контролировать "замусоренность" утилиты dpkg при выходе,
// а ненавязчивое обновление будет автоматически выполнять
//   dpkg --force-confold --configure -a
// По умолчанию установлено значение "true" для обеспечения сохранности 
// полученных обновлений, поэтому раскомментирован не требует.       
//Unattended-Upgrade::AutoFixInterruptedDpkg "false";

// Разделения процедуры обновления на допустимые небольшие порции с тем, чтобы 
// они могли интерпретироваться с сигналом SIGUSR1. При этом скорость процедуры 
// обновления частично понижается, но это дает преимущество в том, что при завершении
// системы с небольшой задержкой (по возможности), выполняется процедура обновления.
// Для активации данной функции требуется убрать комментарий.      
//Unattended-Upgrade::MinimalSteps "true";

// Устанавливает все "ненавязчивые обновления", когда машина выключается
// вместо выполнения в фоновом режиме во время её работы. Очевидно и вероятно, 
// использование данной функции затормозит процедуру останова системы (выключения 
// машины) 
// Unattended-Upgrade::InstallOnShutdown "true";

// Отправка сообщения по электронной почте на указанный адрес при обнаружении каких
// каких-либо проблем или пакетов доступных к обновлению. В случае, если адрес 
// не введен или указаны пустые кавычки письмо отправлено не будет. При этом 
// необходимо удостовериться, что в системе установлена работающая и настроенная 
// программа чтения почты. Пакет 'mailx', обеспечивающий данную возможность,
// должен  быть  установлен.  Электронный  адрес  указывается  в  кавычках ( 
// например как "user@example.com" ), а если просто расскомментировать ( как  это  
// уже  сделано)  сообщения  по электронной почте  будет принимать пользователь root.      
   Unattended-Upgrade::Mail "root";

// При установки этой переменной в значение "true" сообщения по электронной
// почте будут приходить только в случае возникновении ошибок. Действительна только
// тогда, когда установлена переменная Unattended-Upgrade::Mail     
//Unattended-Upgrade::MailOnlyOnError "true";

// Делает удаления "новых" неиспользуемых зависимостей, после того 
// как было выполнено обновление (эквивалентно get autoremove).  
   Unattended-Upgrade::Remove-Unused-Dependencies "true";

// Выполнение автоматической перезагрузки БЕЗ ПОДТВЕРЖДЕНИЯ по завершению 
// процедуры обновления, если был найден файл /var/run/reboot-required, который 
// формируется при установки обновленных пакетов, требующие делать перезагрузку 
// системы.
   Unattended-Upgrade::Automatic-Reboot "true";

// Использование в APT ограничения скорости загрузки пакетов с удаленного сервера,
// где находится зеркало дистрибутива Debian для которого APT производит обновления.  
// В качестве примера указана скорость 70kb/сек.
//Acquire::http::Dl-Limit "70";
После, нужно произвести изменение в файле /etc/apt/apt.conf.d/10periodic
// Выполнять скрипт не ненавязчивого обновления 
// каждые n-дней (0=запрещено) с записью в файл журнала /var/log/unattended-upgrades
APT::Periodic::Unattended-Upgrade "1";

// Выполнять каждые n-дней (0=запрещено) "apt-get upgrade --download-only" 
APT::Periodic::Download-Upgradeable-Packages "1";
При этом в этом же файле можно добавить некоторые полезные переменные
// Каждые n-дней вызывать автоматически "apt-get update" (0=запрещено)
APT::Periodic::Update-Package-Lists "1";

// Каждые n-дней вызывать автоматически "apt-get autoclean" (0=запрещено)
APT::Periodic::AutocleanInterval "7";

Библиография

  
 К оглавлению


Сайт создан в системе uCoz