Мне нравится FreeBSD.
Причин можно перечислить множество. Это и стабильность, и быстродействие, и защищенность. В этом посте я хочу рассказать о не менее важном преимуществе – возможность поддерживать установленные программы в «безопасном» состоянии. (Не знаю, каким термином более правильно это состояние назвать.)
Дело в том, что спустя некоторое время после выхода любой версии любой программы в ней обнаруживаются какие-то ошибки, глюки, уязвимости и прочие неприятные вещи. Разработчики этих программ, если они с ответственностью относятся к своему «детищу», вносят изменения, устраняющие проблемные места, в исходный код и выпускают новую версию. Но через некоторое время ситуация снова повторяется, и так по кругу: свежая версия – обнаружение уязвимостей – исправления… Время от выхода свежей версии пакета до обнаружения в нем проблем я и назвал «безопасным».
Можно ежедневно проверять сайты разработчиков программ на предмет появления информации об обнаруженных уязвимостях, можно просто отслеживать и устанавливать самые последние версии программ. Но чаще всего – это неоправданная трата человеческих ресурсов. В конце-концов, это отнимает время, которое можно потратить на распитие пива с коллегами.
Наиболее простой и удобный способ поддержания системы «на высоте» заключается в использовании двух пакетов – portaudit и portupgrade. Эти пакеты входят в стандартную поставку FreeBSD, поэтому я рекомендую установить их вместе с системой, но это можно сделать и в любое другое время. Вы можете установить готовый пакет, или собрать его из портов – по вкусу. (Установка выходит за пределы этого поста, поэтому здесь рассмотрена на будет – авт.)
Portaudit
Portaudit – это средство, которое позволяет проверять вашу систему на наличие установленных портов и пакетов, в которых были обнаружены какие-либо проблемы. Все данные о уязвимостях программ собираются в одну базу. Portaudit сверяет список установленных пакетов с локальной копией такой базы, и информирует вас о тех пакетах, которые могут содержать угрозу. Естесственно, что локальная копия базы должна быть свежей, поэтому время от времени ее необходимо получать из сети.
Чтобы проверить систему на наличие проблем, просто выполните:
1 | s1# portaudit |
Вот список некоторых полезных опций portaudit:
-
-a Выводит сообщения об уязвимостях для всех установленных пакетов.
- -d Выводит дату создания базы данных.
-
-F Скачивает свежую базу данных с сервера FreeBSD.
-
-X дней
Предписывает скачать свежую базу данных, если текущая база устарела на более чем указанное количество дней. -
-f файл
Проверьте на предмет наличия уязвимостей пакеты, перечисленные в указанном файле. -
pkg-name …
Проверяет наличие в базе данных известных уязвимостей для указанного пакета.
При установке portaudit устанавливает скрипт в /usr/local/etc/periodic/security/, который выполняется при ежедневных самопроверках безопасности системы. (Безусловно, если вы не отключали этот функционал. Но вы же его не отключали, правда?)
Этот скрипт проверяет «свежесть» локальной копии базы уязвимостей, при необходимости скачивает новую базу из сети, и сверяется со списком установленных портов и пакетов. Результате этой проверки отправляется на почту пользователю root (по-умолчанию это так, но вы можете изменить настройки на свое усмотрение.)
Вам теперь необходимо лишь заглядывать в свой ящик и просматривать отчеты системы о безопасности. Хорошо, если в этих отчетах будут таки строки:
Checking for a current audit database:
Database created: Mon Jan 21 02:40:02 EET 2008
Checking for packages with security vulnerabilities:
0 problem(s) in your installed packages found.
- это означает, что пакеты с уязвимостями в вашей системе не установлены. В случае наличия каких-либо проблем, вы получите примерно такое сообщение:
Affected package: pcre-7.4
Type of problem: pcre — buffer overflow vulnerability.
Reference: <http://www.FreeBSD.org/ports/portaudit/f9e96930-e6df-11dc-8c6a-00304881ac9a.html>1 problem(s) in your installed packages found.
You are advised to update or deinstall the affected package(s) immediately.
Значит, пакет prce – слабое звено. И его необходимо по возможности обновить до новой «безопасной версии». Вот тут нам и послужит другой пакет.
Portupgrade
Этот пакет берет на себя большую часть головной боли по обновлению портов. Он проверяет наличие свежайшей версии порта в коллекции портов, затем запускает сборку с теми же параметрами, с которыми была собрана предыдущая версия порта. Если компиляция завершится успешно, portupgrade сделает бекап предыдущей версии, и попытается установить новую. Если по каким-либо причинам установка закончится неудачей, то файлы предыдущей версии пакета будут возвращены из бекапа на прежнее место.
Как видите, portupgrade действительно способен сэкономить немало времени администратора. Давайте обновим порт, об ошибках переполнения буфера в котором нас известил portaudit. Чтобы сделать это, нужно выполнить всего одну команду:
1 | s1# portupgrade pcre-7.4 |
У меня сборка и установка прошла без проблем. Надеюсь, у вас также.
Замечание:
Portupgrade – мощная утилита, имеющая множество параметров и настроек. Обратитесь к страницам руководства перед тем, как использовать ее.

ноября 25, 2008 в 2:18
к portupgrade, порой можно добавлять ключи ‘-vr’, чтобы обновилось всё с зависимостями.