Skip site navigation (1) Skip section navigation (2)

Информационная безопасность FreeBSD

Введение

Эта веб-страница создана для того, чтобы помочь как начинающим, так и опытным пользователям в области информационной безопасности FreeBSD. Во FreeBSD вопросы безопасности воспринимаются весьма серьёзно и постоянно работают над тем, чтобы сделать ОС защищённой настолько, насколько это вообще возможно.

Здесь вы найдёте информацию или ссылки на информацию о том, как защитить вашу систему от различных типов атак, с кем связаться, если вы нашли недочёт в системе безопасности и так далее. Сюда также включён раздел, в котором описаны различные способы, прибегнув к которым, системный программист может с большей вероятностью избегнуть дыр в защите.

Содержание

Офицер информационной безопасности FreeBSD и служба информационной безопасности FreeBSD

Для того, чтобы лучше координировать обмен информацией с сообществом, занимающимся вопросами безопасности, во FreeBSD имеется точка для соответствующих коммуникаций: Офицер информационной безопасности FreeBSD.

Если вы хотите обратиться в Проект FreeBSD по поводу возможной проблемы в информационной безопасности, то вы должны написать письмо Офицеру информационной безопасности с описанием того, что вы нашли и характером нарушения безопасности, с которым вы столкнулись.

Для того, чтобы Проект FreeBSD мог оперативно реагировать на сообщения об уязвимостях, почтовый алиас Офицера информационной безопасности соответствует четырём персонам: Офицер информационной безопасности, заместитель Офицера информационной безопасности и два члена Основной группы разработчиков. Таким образом, сообщения, посланные в адрес почтового алиаса <security-officer@FreeBSD.org>, доставляются следующим лицам:

Jacques Vidrine <nectar@FreeBSD.org> Офицер информационной безопасности
Chris Faulhaber <jedgar@FreeBSD.org> Заместитель Офицера информационной безопасности
Robert Watson <rwatson@FreeBSD.org> Член Основной группы разработчиков FreeBSD, представитель группы по выпуску релизов,
представитель Проекта TrustedBSD, эксперт по архитектуре системной безопасности
Warner Losh <imp@FreeBSD.org> Представитель Основной группы разработчиков FreeBSD, Офицер безопасности в отставке

Офицер информационной безопасности поддерживается Службой безопасности FreeBSD <security-team@FreeBSD.org>, группой коммиттеров, которую он выбирает сам.

Пожалуйста, используйте PGP-ключ Офицера информационной безопасности для шифрования своих сообщений, направляемых ему, когда это требуется.

Политика отработки информации

Как общее правило, Офицер безопасности FreeBSD предпочитает полное раскрытие информации об уязвимости после достаточного перерыва на выполнение тщательного анализа и устранения уязвимости, а также соответствующего тестирования исправления и взаимодействия с другими затронутыми командами.

Офицер безопасности будет уведомлять одного или большее количество администраторов кластера FreeBSD об уязвимостях, которые подвергают ресурсы Проекта FreeBSD непосредственной опасности.

Офицер безопасности может привлечь дополнительных разработчиков FreeBSD или внешних разработчиков к обсуждению предоставленной информации об уязвимости, если требуется их экспертиза для полного понимания или исправления проблемы. Будет выполнено необходимое разграничение для минимизации ненужного распространения информации о представленной уязвимости, и все привлечённые эксперты будут действовать в соответствии с указаниями Офицера безопасности. В прошлом привлекались эксперты с большим опытом работы с высокосложными компонентами операционной системы, включая FFS, подсистема VM и стек сетевых протоколов.

Если уже выполняется процесс выпуска релиза FreeBSD, то инженер, ответственный за выпуск релиза, может также быть оповещён об имеющейся уязвимости и её серьёзности, чтобы было принято решение об информировании относительно цикла выпуска релиза и наличии каких-либо серьёзных ошибок в программном обеспечении, связанном с готовящимся релизом. Если это будет необходимо, то Офицер безопасности не будет сообщать подробную информацию о природе уязвимости Инженеру по выпуску релиза, ограничиваясь информацией о её существовании и серьёзности.

Офицер безопасности FreeBSD поддерживает тесные рабочие отношения со многими другими организациями, включая сторонних разработчиков, имеющих с FreeBSD общий код (проекты OpenBSD и NetBSD, Apple и другие разработчики, программное обеспечение которых основано на FreeBSD, а также разработчики Linux), и организации, которые отслеживают уязвимости и случаи нарушения информационной безопасности, такие, как CERT. Зачастую уязвимости выходят за рамки реализации FreeBSD, и (наверное, реже) могут иметь широкий резонанс для всего сетевого сообщества. В таких условиях Офицер безопасности может раскрыть информацию об уязвимости этим сторонним организациям: если вы не хотите, чтобы Офицер безопасности это делал, пожалуйста, явно укажите это в своих сообщениях.

Сообщающие должны тщательно и явно указать любые свои требования относительно отработки сообщённой информации.

Если сообщающий об уязвимости заинтересован в координации процесса раскрытия с ним и/или другими разработчиками, это должно быть явно указано в сообщениях. При отсутствии явных требований Офицер безопасности FreeBSD выберет план раскрытия информации, который учитывает как требования оперативности, так и тестирования любых решений. Сообщающие должны иметь в виду, что если уязвимость активно обсуждается в открытых форумах (таких, как bugtraq) и используется, то Офицер Безопасности может решить не следовать предлагаемому плану по её раскрытию, для того, чтобы дать пользовательскому сообществу максимально эффективную защиту.

Сообщающие должны иметь в виду, что Проект FreeBSD является проектом с открытым кодом, и информация о любом изменении в дереве исходного кода FreeBSD доступна всем. Если предложен план по раскрытию уязвимости, то он должен принимать во внимание как официальный выпуск бюллетеня по безопасности, патча и информации об обновлении, а также изначальное включение исправлений в дерево исходного кода FreeBSD. Обязателен временной промежуток между включением исправлений в дерево и созданием и выпуском официальных объявлений, патчей, двоичных обновлений, так как для их создания используется система управления исходным кодом.

Сообщения могут быть защищены с помощью PGP. Если это нужно, то ответы также будут защищены посредством PGP.

Бюллетени безопасности FreeBSD

Служба информационной безопасности FreeBSD выпускает бюллетени безопасности для нескольких разрабатываемых веток FreeBSD. Это Ветки -STABLE и Ветки Security. (Бюллетени не выпускаются для Ветки -CURRENT.)

  • Обычно здесь присутствует только одна ветка -STABLE, хотя в процессе перехода от одной основной линии разработки к другой (например, с FreeBSD 4.x на 5.x) имеется временной интервал, в котором существуют две ветки -STABLE. Тэги ветки -STABLE носят имена типа RELENG_4. Соответствующие версии носят названия типа FreeBSD 4.6-STABLE.

  • Каждому релизу FreeBSD поставлена в соответствие ветка безопасности (Security Branch). Метки веток безопасности именуются как RELENG_4_6. Соответствующие построенные версии носят названия типа FreeBSD 4.6-RELEASE-p7.

Каждая ветка поддерживается службой безопасности ограниченное время, обычно до 12 месяцев после релиза. Ожидаемые времена жизни для поддерживаемых в настоящее время веток даны ниже. В колонке Ожидаемое время жизни указана ближайшая дата, по истечение которой ветка будет брошена. Пожалуйста, учтите, что эти сроки в будущем могут быть увеличены, но только исключительные обстоятельства могут привести к отказу от поддержки ветки раньше указанной даты.

Ветка Релиз Ожидаемое время жизни
RELENG_4 n/a 31 октября 2004
RELENG_4_8 4.8-RELEASE 31 марта 2004
RELENG_4_9 4.9-RELEASE 31 октября 2004
RELENG_5_2 5.2-RELEASE 31 июля 2004

Более старые релизы не поддерживаются, а их пользователям настоятельно рекомендуется произвести обновление до одной из поддерживаемых версий, указанных выше.

Как и все направления разработки, исправления в защите системы сначала испытываются в ветке FreeBSD-current. После нескольких дней некоторого тестирования исправления переносятся в поддерживаемые ветки FreeBSD-stable и выпускается очередной бюллетень.

Немного статистики по бюллетеням, выпущенным в течение 2002 года:

  • 44 бюллетеня с проблемами различной степени опасности касались базовой системы.
  • 12 бюллетеней описывали уязвимости, касающиеся только FreeBSD. Остальные 32 бюллетеня являлись проблемами, общими как минимум с одной из других ОС (часто по причине использования одного и того же кода).
  • Было выпущено 6 замечаний по безопасности, которые касались 95 проблем в дополнительных приложениях сторонних разработчиков, входящих в Коллекцию Портов.

Бюллетени рассылаются в следующие списки рассылки FreeBSD:

  • FreeBSD-security-notifications@FreeBSD.org
  • FreeBSD-security@FreeBSD.org
  • FreeBSD-announce@FreeBSD.org

Бюллетени всегда подписываются с помощью PGP-ключа Офицера Безопасности и помещаются, вместе с соответствующими исправлениями, в наш архив. На момент написания этого текста вышли следующие бюллетени (заметьте, что этот список может быть устаревшим на несколько дней - самые последние бюллетени находятся на FTP-сервере):

Date Advisory name
2008-02-14 FreeBSD-SA-08:04.ipsec
2008-02-14 FreeBSD-SA-08:03.sendfile
2008-01-14 FreeBSD-SA-08:02.libc
2008-01-14 FreeBSD-SA-08:01.pty
2007-11-29 FreeBSD-SA-07:10.gtar
2007-11-29 FreeBSD-SA-07:09.random
2007-10-03 FreeBSD-SA-07:08.openssl
2007-08-01 FreeBSD-SA-07:07.bind
2007-08-01 FreeBSD-SA-07:06.tcpdump
2007-07-12 FreeBSD-SA-07:05.libarchive
2007-05-23 FreeBSD-SA-07:04.file
2007-04-26 FreeBSD-SA-07:03.ipv6
2007-02-09 FreeBSD-SA-07:02.bind
2007-01-11 FreeBSD-SA-07:01.jail
2006-12-06 FreeBSD-SA-06:26.gtar
2006-12-06 FreeBSD-SA-06:25.kmem
2006-11-08 FreeBSD-SA-06:24.libarchive
2006-09-30 FreeBSD-SA-06:22.openssh
2006-09-28 FreeBSD-SA-06:23.openssl
2006-09-19 FreeBSD-SA-06:21.gzip
2006-09-06 FreeBSD-SA-06:20.bind
2006-09-06 FreeBSD-SA-06:19.openssl
2006-08-23 FreeBSD-SA-06:18.ppp
2006-06-14 FreeBSD-SA-06:17.sendmail
2006-05-31 FreeBSD-SA-06:16.smbfs
2006-05-31 FreeBSD-SA-06:15.ypserv
2006-04-19 FreeBSD-SA-06:14.fpu
2006-03-22 FreeBSD-SA-06:13.sendmail
2006-03-22 FreeBSD-SA-06:12.opie
2006-03-22 FreeBSD-SA-06:11.ipsec
2006-03-01 FreeBSD-SA-06:10.nfs
2006-03-01 FreeBSD-SA-06:09.openssh
2006-02-01 FreeBSD-SA-06:08.sack
2006-01-25 FreeBSD-SA-06:07.pf
2006-01-25 FreeBSD-SA-06:06.kmem
2006-01-18 FreeBSD-SA-06:05.80211
2006-01-11 FreeBSD-SA-06:04.ipfw
2006-01-11 FreeBSD-SA-06:03.cpio
2006-01-11 FreeBSD-SA-06:02.ee
2006-01-11 FreeBSD-SA-06:01.texindex
2005-10-11 FreeBSD-SA-05:21.openssl
2005-09-07 FreeBSD-SA-05:20.cvsbug
2005-07-27 FreeBSD-SA-05:19.ipsec
2005-07-27 FreeBSD-SA-05:18.zlib
2005-07-20 FreeBSD-SA-05:17.devfs
2005-07-06 FreeBSD-SA-05:16.zlib
2005-06-29 FreeBSD-SA-05:15.tcp
2005-06-29 FreeBSD-SA-05:14.bzip2
2005-06-29 FreeBSD-SA-05:13.ipfw
2005-06-09 FreeBSD-SA-05:12.bind9
2005-06-09 FreeBSD-SA-05:11.gzip
2005-06-09 FreeBSD-SA-05:10.tcpdump
2005-05-13 FreeBSD-SA-05:09.htt
2005-05-06 FreeBSD-SA-05:08.kmem
2005-05-06 FreeBSD-SA-05:07.ldt
2005-05-06 FreeBSD-SA-05:06.iir
2005-04-22 FreeBSD-SA-05:05.cvs
2005-04-15 FreeBSD-SA-05:04.ifconf
2005-04-06 FreeBSD-SA-05:03.amd64
2005-04-04 FreeBSD-SA-05:02.sendfile
2005-03-28 FreeBSD-SA-05:01.telnet
2004-12-01 FreeBSD-SA-04:17.procfs
2004-11-18 FreeBSD-SA-04:16.fetch
2004-10-04 FreeBSD-SA-04:15.syscons
2004-09-19 FreeBSD-SA-04:14.cvs
2004-06-30 FreeBSD-SA-04:13.linux
2004-06-07 FreeBSD-SA-04:12.jailroute
2004-05-19 FreeBSD-SA-04:11.msync
2004-05-19 FreeBSD-SA-04:10.cvs
2004-05-05 FreeBSD-SA-04:09.kadmind
2004-05-05 FreeBSD-SA-04:08.heimdal
2004-04-15 FreeBSD-SA-04:07.cvs
2004-03-29 FreeBSD-SA-04:06.ipv6
2004-03-17 FreeBSD-SA-04:05.openssl
2004-03-02 FreeBSD-SA-04:04.tcp
2004-02-25 FreeBSD-SA-04:03.jail
2004-02-05 FreeBSD-SA-04:02.shmat
2004-01-30 FreeBSD-SA-04:01.mksnap_ffs
2003-11-28 FreeBSD-SA-03:19.bind
2003-10-05 FreeBSD-SA-03:15.openssh
2003-10-03 FreeBSD-SA-03:18.openssl
2003-10-03 FreeBSD-SA-03:17.procfs
2003-10-02 FreeBSD-SA-03:16.filedesc
2003-09-23 FreeBSD-SA-03:14.arp
2003-09-17 FreeBSD-SA-03:13.sendmail
2003-09-16 FreeBSD-SA-03:12.openssh
2003-08-26 FreeBSD-SA-03:11.sendmail
2003-08-10 FreeBSD-SA-03:10.ibcs2
2003-08-10 FreeBSD-SA-03:09.signal
2003-08-03 FreeBSD-SA-03:08.realpath
2003-04-08 FreeBSD-SN-03:02
2003-04-07 FreeBSD-SN-03:01
2003-03-30 FreeBSD-SA-03:07.sendmail
2003-03-21 FreeBSD-SA-03:06.openssl
2003-03-20 FreeBSD-SA-03:05.xdr
2003-03-03 FreeBSD-SA-03:04.sendmail
2003-02-24 FreeBSD-SA-03:03.syncookies
2003-02-24 FreeBSD-SA-03:02.openssl
2003-02-04 FreeBSD-SA-03:01.cvs
2003-01-07 FreeBSD-SA-02:44.filedesc
2002-11-15 FreeBSD-SA-02:43.bind
2002-11-15 FreeBSD-SA-02:41.smrsh
2002-11-12 FreeBSD-SA-02:42.resolv
2002-11-12 FreeBSD-SA-02:40.kadmind
2002-10-10 FreeBSD-SN-02:06
2002-09-16 FreeBSD-SA-02:39.libkvm
2002-08-28 FreeBSD-SN-02:05
2002-08-19 FreeBSD-SA-02:38.signed-error
2002-08-05 FreeBSD-SA-02:37.kqueue
2002-08-05 FreeBSD-SA-02:36.nfs
2002-08-05 FreeBSD-SA-02:35.ffs
2002-08-05 FreeBSD-SA-02:33.openssl
2002-08-01 FreeBSD-SA-02:34.rpc
2002-07-31 FreeBSD-SA-02:32.pppd
2002-07-15 FreeBSD-SA-02:31.openssh
2002-07-12 FreeBSD-SA-02:30.ktrace
2002-07-12 FreeBSD-SA-02:29.tcpdump
2002-06-26 FreeBSD-SA-02:28.resolv
2002-06-19 FreeBSD-SN-02:04
2002-05-29 FreeBSD-SA-02:27.rc
2002-05-29 FreeBSD-SA-02:26.accept
2002-05-28 FreeBSD-SN-02:03
2002-05-20 FreeBSD-SA-02:25.bzip2
2002-05-20 FreeBSD-SA-02:24.k5su
2002-05-13 FreeBSD-SN-02:02
2002-04-22 FreeBSD-SA-02:23.stdio
2002-04-18 FreeBSD-SA-02:22.mmap
2002-04-17 FreeBSD-SA-02:21.tcpip
2002-04-16 FreeBSD-SA-02:20.syncache
2002-03-30 FreeBSD-SN-02:01
2002-03-26 FreeBSD-SA-02:19.squid
2002-03-18 FreeBSD-SA-02:18.zlib
2002-03-12 FreeBSD-SA-02:17.mod_frontpage
2002-03-12 FreeBSD-SA-02:16.netscape
2002-03-12 FreeBSD-SA-02:15.cyrus-sasl
2002-03-12 FreeBSD-SA-02:14.pam-pgsql
2002-03-07 FreeBSD-SA-02:13.openssh
2002-02-21 FreeBSD-SA-02:12.squid
2002-02-12 FreeBSD-SA-02:11.snmp
2002-02-06 FreeBSD-SA-02:10.rsync
2002-02-06 FreeBSD-SA-02:09.fstatfs
2002-01-24 FreeBSD-SA-02:08.exec
2002-01-18 FreeBSD-SA-02:07.k5su
2002-01-16 FreeBSD-SA-02:06.sudo
2002-01-04 FreeBSD-SA-02:05.pine
2002-01-04 FreeBSD-SA-02:04.mutt
2002-01-04 FreeBSD-SA-02:03.mod_auth_pgsql
2002-01-04 FreeBSD-SA-02:02.pw
2002-01-04 FreeBSD-SA-02:01.pkg_add
2001-12-04 FreeBSD-SA-01:64.wu-ftpd
2001-12-02 FreeBSD-SA-01:63.openssh
2001-10-08 FreeBSD-SA-01:62.uucp
2001-10-08 FreeBSD-SA-01:61.squid
2001-09-24 FreeBSD-SA-01:60.procmail
2001-09-04 FreeBSD-SA-01:59.rmuser
2001-08-30 FreeBSD-SA-01:58.lpd
2001-08-27 FreeBSD-SA-01:57.sendmail
2001-08-23 FreeBSD-SA-01:56.tcp_wrappers
2001-08-21 FreeBSD-SA-01:55.procfs
2001-08-20 FreeBSD-SA-01:54.ports-telnetd
2001-08-17 FreeBSD-SA-01:53.ipfw
2001-08-06 FreeBSD-SA-01:52.fragment
2001-07-30 FreeBSD-SA-01:51.openssl
2001-07-27 FreeBSD-SA-01:50.windowmaker
2001-07-23 FreeBSD-SA-01:49.telnetd
2001-07-17 FreeBSD-SA-01:48.tcpdump
2001-07-10 FreeBSD-SA-01:47.xinetd
2001-07-10 FreeBSD-SA-01:46.w3m
2001-07-10 FreeBSD-SA-01:45.samba
2001-07-10 FreeBSD-SA-01:44.gnupg
2001-07-10 FreeBSD-SA-01:43.fetchmail
2001-07-10 FreeBSD-SA-01:42.signal
2001-07-09 FreeBSD-SA-01:41.hanterm
2001-06-04 FreeBSD-SA-01:40.fts
2001-05-02 FreeBSD-SA-01:39.tcp-isn
2001-04-23 FreeBSD-SA-01:38.sudo
2001-04-23 FreeBSD-SA-01:37.slrn
2001-04-23 FreeBSD-SA-01:36.samba
2001-04-23 FreeBSD-SA-01:35.licq
2001-04-23 FreeBSD-SA-01:34.hylafax
2001-04-17 FreeBSD-SA-01:33.ftpd-glob
2001-04-16 FreeBSD-SA-01:32.ipfilter
2001-04-06 FreeBSD-SA-01:31.ntpd
2001-03-22 FreeBSD-SA-01:30.ufs-ext2fs
2001-03-12 FreeBSD-SA-01:29.rwhod
2001-03-12 FreeBSD-SA-01:28.timed
2001-03-12 FreeBSD-SA-01:27.cfengine
2001-03-12 FreeBSD-SA-01:26.interbase
2001-03-12 FreeBSD-SA-01:23.icecast
2001-02-14 FreeBSD-SA-01:25.kerberosIV
2001-02-12 FreeBSD-SA-01:24.ssh
2001-02-07 FreeBSD-SA-01:22.dc20ctrl
2001-02-07 FreeBSD-SA-01:21.ja-elvis
2001-02-07 FreeBSD-SA-01:20.mars_nwe
2001-02-07 FreeBSD-SA-01:19.ja-klock
2001-01-31 FreeBSD-SA-01:18.bind
2001-01-29 FreeBSD-SA-01:17.exmh
2001-01-29 FreeBSD-SA-01:16.mysql
2001-01-29 FreeBSD-SA-01:15.tinyproxy
2001-01-29 FreeBSD-SA-01:14.micq
2001-01-29 FreeBSD-SA-01:13.sort
2001-01-29 FreeBSD-SA-01:12.periodic
2001-01-29 FreeBSD-SA-01:11.inetd
2001-01-23 FreeBSD-SA-01:10.bind
2001-01-23 FreeBSD-SA-01:09.crontab
2001-01-23 FreeBSD-SA-01:08.ipfw
2001-01-23 FreeBSD-SA-01:07.xfree86
2001-01-15 FreeBSD-SA-01:06.zope
2001-01-15 FreeBSD-SA-01:05.stunnel
2001-01-15 FreeBSD-SA-01:04.joe
2001-01-15 FreeBSD-SA-01:03.bash1
2001-01-15 FreeBSD-SA-01:02.syslog-ng
2001-01-15 FreeBSD-SA-01:01.openssh
2000-12-20 FreeBSD-SA-00:81.ethereal
2000-12-20 FreeBSD-SA-00:80.halflifeserver
2000-12-20 FreeBSD-SA-00:79.oops
2000-12-20 FreeBSD-SA-00:78.bitchx
2000-12-18 FreeBSD-SA-00:77.procfs
2000-11-20 FreeBSD-SA-00:76.tcsh-csh
2000-11-20 FreeBSD-SA-00:75.php
2000-11-20 FreeBSD-SA-00:74.gaim
2000-11-20 FreeBSD-SA-00:73.thttpd
2000-11-20 FreeBSD-SA-00:72.curl
2000-11-20 FreeBSD-SA-00:71.mgetty
2000-11-14 FreeBSD-SA-00:70.ppp-nat
2000-11-14 FreeBSD-SA-00:69.telnetd
2000-11-13 FreeBSD-SA-00:68.ncurses
2000-11-10 FreeBSD-SA-00:67.gnupg
2000-11-06 FreeBSD-SA-00:66.netscape
2000-11-06 FreeBSD-SA-00:65.xfce
2000-11-06 FreeBSD-SA-00:64.global
2000-11-01 FreeBSD-SA-00:63.getnameinfo
2000-11-01 FreeBSD-SA-00:62.top
2000-10-31 FreeBSD-SA-00:61.tcpdump
2000-10-30 FreeBSD-SA-00:60.boa
2000-10-30 FreeBSD-SA-00:59.pine
2000-10-30 FreeBSD-SA-00:58.chpass
2000-10-13 FreeBSD-SA-00:57.muh
2000-10-13 FreeBSD-SA-00:56.lprng
2000-10-13 FreeBSD-SA-00:55.xpdf
2000-10-13 FreeBSD-SA-00:54.fingerd
2000-10-06 FreeBSD-SA-00:52.tcp-iss
2000-09-27 FreeBSD-SA-00:53.catopen
2000-09-13 FreeBSD-SA-00:51.mailman
2000-09-13 FreeBSD-SA-00:50.listmanager
2000-09-13 FreeBSD-SA-00:49.eject
2000-09-13 FreeBSD-SA-00:48.xchat
2000-09-13 FreeBSD-SA-00:47.pine
2000-09-13 FreeBSD-SA-00:46.screen
2000-08-31 FreeBSD-SA-00:45.esound
2000-08-28 FreeBSD-SA-00:44.xlock
2000-08-28 FreeBSD-SA-00:43.brouted
2000-08-28 FreeBSD-SA-00:42.linux
2000-08-28 FreeBSD-SA-00:41.elf
2000-08-28 FreeBSD-SA-00:40.mopd
2000-08-28 FreeBSD-SA-00:39.netscape
2000-08-14 FreeBSD-SA-00:38.zope
2000-08-14 FreeBSD-SA-00:37.cvsweb
2000-08-14 FreeBSD-SA-00:36.ntop
2000-08-14 FreeBSD-SA-00:35.proftpd
2000-08-14 FreeBSD-SA-00:34.dhclient
2000-07-12 FreeBSD-SA-00:33.kerberosIV
2000-07-05 FreeBSD-SA-00:32.bitchx
2000-07-05 FreeBSD-SA-00:31.canna
2000-07-05 FreeBSD-SA-00:30.openssh
2000-07-05 FreeBSD-SA-00:29.wu-ftpd
2000-07-05 FreeBSD-SA-00:28.majordomo
2000-07-05 FreeBSD-SA-00:27.XFree86-4
2000-07-05 FreeBSD-SA-00:26.popper
2000-07-05 FreeBSD-SA-00:24.libedit
2000-06-19 FreeBSD-SA-00:23.ip-options
2000-06-12 FreeBSD-SA-00:25.alpha-random
2000-06-07 FreeBSD-SA-00:22.apsfilter
2000-06-07 FreeBSD-SA-00:21.ssh
2000-05-26 FreeBSD-SA-00:20.krb5
2000-05-23 FreeBSD-SA-00:19.semconfig
2000-05-09 FreeBSD-SA-00:18.gnapster.knapster
2000-05-09 FreeBSD-SA-00:17.libmytinfo
2000-05-09 FreeBSD-SA-00:16.golddig
2000-04-24 FreeBSD-SA-00:15.imap-uw
2000-04-24 FreeBSD-SA-00:14.imap-uw
2000-04-19 FreeBSD-SA-00:13.generic-nqs
2000-04-10 FreeBSD-SA-00:12.healthd
2000-04-10 FreeBSD-SA-00:11.ircii
2000-03-15 FreeBSD-SA-00:10.orville-write
2000-03-15 FreeBSD-SA-00:09.mtr
2000-03-15 FreeBSD-SA-00:08.lynx
2000-03-15 FreeBSD-SA-00:07.mh
2000-03-01 FreeBSD-SA-00:06.htdig
2000-02-28 FreeBSD-SA-00:05.mysql
2000-02-19 FreeBSD-SA-00:04.delegate
2000-02-19 FreeBSD-SA-00:03.asmon
2000-01-24 FreeBSD-SA-00:02.procfs
2000-01-19 FreeBSD-SA-00:01.make
1999-09-16 FreeBSD-SA-99:06.amd.asc
1999-09-15 FreeBSD-SA-99:05.fts.asc
1999-09-15 FreeBSD-SA-99:04.core.asc
1999-09-05 FreeBSD-SA-99:03.ftpd.asc
1999-09-04 FreeBSD-SA-99:02.profil.asc
1999-09-04 FreeBSD-SA-99:01.chflags.asc
1998-11-04 FreeBSD-SA-98:08.fragment.asc
1998-10-13 FreeBSD-SA-98:07.rst.asc
1998-06-10 FreeBSD-SA-98:06.icmp.asc
1998-06-04 FreeBSD-SA-98:05.nfs.asc
1998-06-02 FreeBSD-SA-98:04.mmap.asc
1998-05-14 FreeBSD-SA-98:03.ttcp.asc
1998-03-12 FreeBSD-SA-98:02.mmap.asc
1997-12-09 FreeBSD-SA-97:06.f00f.asc
1997-12-01 FreeBSD-SA-98:01.land.asc
1997-10-29 FreeBSD-SA-97:05.open.asc
1997-08-19 FreeBSD-SA-97:04.procfs.asc
1997-04-07 FreeBSD-SA-97:03.sysinstall.asc
1997-03-26 FreeBSD-SA-97:02.lpd.asc
1997-02-05 FreeBSD-SA-97:01.setlocale.asc
1997-01-18 FreeBSD-SA-96:21.talkd.asc
1996-12-16 FreeBSD-SA-96:20.stack-overflow.asc
1996-12-10 FreeBSD-SA-96:19.modstat.asc
1996-11-25 FreeBSD-SA-96:18.lpr.asc
1996-07-16 FreeBSD-SA-96:17.rzsz.asc
1996-07-12 FreeBSD-SA-96:16.rdist.asc
1996-07-04 FreeBSD-SA-96:15.ppp.asc
1996-06-28 FreeBSD-SA-96:12.perl.asc
1996-06-24 FreeBSD-SA-96:14.ipfw.asc
1996-06-05 FreeBSD-SA-96:13.comsat.asc
1996-05-21 FreeBSD-SA-96:11.man.asc
1996-05-17 FreeBSD-SA-96:10.mount_union.asc
1996-05-17 FreeBSD-SA-96:09.vfsload.asc
1996-04-22 FreeBSD-SA-96:02.apache.asc
1996-04-21 FreeBSD-SA-96:08.syslog.asc
1996-04-21 FreeBSD-SA-96:01.sliplogin.asc
1996-04-20 FreeBSD-SA-96:03.sendmail-suggestion.asc

Информация о списках рассылки, посвящённых безопасности FreeBSD

Если вы администрируете или эксплуатируете некоторое количество систем FreeBSD, вам полезно быть подписанным на один или несколько из следующих списков рассылки:

freebsd-security Обсуждение общих вопросов безопасности
freebsd-security-notifications Уведомления, касающиеся безопасности (модерируемый список рассылки)

Рекомендации по безопасному программированию

  • Никогда не доверяйте никаким входным данным, будь то аргументы командной строки, переменные окружения, конфигурационные файлы, входящие пакеты TCP/UDP/ICMP, имена хостов, аргументы функций и так далее. Если размер полученных данных является фактором, контролируемым извне, то программа или функция должна эти данные проверять при копировании. Особо стоит обратить внимание на следующие моменты:
    • strcpy() и sprintf(), применяемые к данным, размер которых неизвестен. Используйте strncpy и snprintf(), когда размер известен (или выполняйте какие-то другие формы проверки границ данных, когда их длина неизвестна). В частности, никогда не используйте функции gets() или sprintf(), точка. Если вы все же будете это делать, мы вас проклянем.
    • Если вы осуществляете проверку ввода пользователя на то, чтобы он не содержал неверные символы, НЕ проверяйте наличие неправильных символов. Вместо этого просто проверяйте, что во входном потоке содержатся ТОЛЬКО разрешенные символы. Общий принцип: запрет всего, что явно не разрешено.
    • Прочтите страницы Справочника по функциям strncpy() и strncat(). Удостоверьтесь, что вы правильно понимаете их работу!!! Функция strncpy() может не добавлять терминирующий \0, когда как strncat() это делает.
    • Отслеживайте использование функций strvis() и getenv(). При использовании strvis() легко получить неправильную целевую строку, а getenv() может вернуть результатом строчки, намного превышающие то, что ожидает ваша программа. Использование этих функций является одним из основных методов выполнения атак на систему, при которой установка необычных значений переменных окружения приводит к изменению значения стека и переменных внутри программы. Если ваша программа использует переменные окружения, будьте осторожны. Будьте сверхосторожны!
    • Каждый раз при использовании вызовов open() или stat() спросите себя: "Что, если это - символическая ссылка?"
    • Всегда используйте mkstemp() вместо mktemp(), tempnam(), и тд. Также в общем будьте осторожны при работе в /tmp, имея в виду, что в /tmp очень мало атомарных операций:
      • Создание каталога. Оно может быть удачным или с ошибкой.
      • Открытие файла O_CREAT | O_EXCL
      Если вы используете mkstemp(), то вышеуказанные случаи обрабатываются корректно. Поэтому все временные файлы должны быть созданы с использованием mkstemp() для гарантии того, что нет совпадения имен и все права доступа выставляются верно.
    • Если атакующий может посылать пакеты от имени другой произвольной системы, то он получает полный контроль над данными, которые мы получаем и НИКАКИМ из них мы не должны доверять.
    • Никогда не полагайтесь на то, что конфигурационный файл имеет правильный формат или что он сгенерирован соответствующей утилитой. Не доверяйте пользовательскому вводу, который касается имен терминалов и не думайте, что в вводимых строках не будет подстрок '/' или '../../../', если есть хоть какой-то шанс, что они будут использованы в качестве маршрута к файлу. Не доверяйте НИКАКИМ путям, которые ввел пользователь, когда вы работаете с правами суперпользователя.
    • Ищите бреши и недочеты в способе хранения данных. Все временные файлы должны иметь права 600 для того, чтобы быть защищенными от любопытных глаз.
    • Не просто ищите обычные подозрительные места в программах, которые выполняются с повышенными привилегиями. Просмотрите код строчку за строчкой в поиске возможных в этих случаях переполнений, так как имеется гораздо больше способов вызвать переполнение буфера, чем просто используя strcpy() со товарищи.
    • Если вы где-то понизили привилегии, это вовсе не значит, что в программа не подвержена атакам. Атакующий может поместить соответствующий код в стек, чтобы вернуть привилегированный режим перед выполнением /bin/sh.
  • Управляйте значением uid. Меняйте привилегии как можно быстрее, и меняйте их на самом деле. Переключение между euid и uid НЕ достаточно. Используйте setuid() везде, где это возможно.
  • Никогда не выводите содержимого конфигурационного файла при возникновении ошибок. Достаточно номера строки и может быть, позиции в строке. Это нужно делать для всех библиотек и любой программы с установленными битами suid/sgid.
  • Советы для тех, кто проверяет имеющийся код на наличие проблем с безопасностью:
    • Если вы не уверены в правильности ваших исправлений, пошлите их обозревателю, с которым у вас уже есть договоренность на просмотр вашего кода. Не выполняйте коммит кода, в котором вы не уверены, так как нарушение работы чего-либо из-за исправлений во имя безопасности приводит в некоторое замешательство.
    • Те, у кого нет привилегий на CVS для выполнения операции commit, должны понимать, что обозреватель с такими привилегиями должен просмотреть изменения. Этот человек должен просмотреть и включить окончательную версию в дерево CVS.
    • При посылке изменений для просмотра, всегда используйте diff в форматах context или unidiff - в этих случаях изменения могут быть легко переданы программе patch(1). Не посылайте просто файлы полностью. Файлы diff гораздо легче читать и вносить изменения из них в исходные тексты (особенно когда может иметь место много изменений в разных местах). Все изменения должны делаться в ветке -current.
    • Всегда тестируйте ваши изменения непосредственно (например, компилируя и запуская затрагиваемые программы) перед тем, как послать их обозревателю. Никому не нравится получать нерабочий код для обозрения, что обычно означает, что посылающий туда даже не заглядывал (что ещё более усиливает недоверие к человеку). Если вам нужен вход на машину с конкретной версией, которой у вас нет - просто спросите. У нас имеются ресурсы именно с таким назначением.
    • Замечание для коммиттеров: не забудьте перенести патчи из ветки -current в соответствующие места ветки -stable.
    • Не нужно без необходимости переписывать код в соответствии с вашим стилем/вкусом - это только затруднит работу обозревателя. Делайте это, если только на то имеются веские причины.
  • Обратите внимание на программы, которые выполняют сложные манипуляции с обработчиками сигналов. Многие подпрограммы в различных библиотеках недостаточно реентерабельны, чтобы делать это корректно.
  • Особое внимание уделите использованию realloc() - эта функция чаще всего используется неправильно.
  • При использовании буферов фиксированного размера используйте sizeof() во избежание несоответствия, когда размер буфера меняется, а код, который его использует, нет. Например:
     char buf[1024];
        struct foo { ... };
        ...
    ПЛОХО:
        xxx(buf, 1024)
        xxx(yyy, sizeof(struct foo))
    ХОРОШО:
        xxx(buf, sizeof(buf))
        xxx(yyy, sizeof(yyy))
     
    
    Будьте внимательны при использовании sizeof() с указателями, когда вы на самом деле хотите выяснить размер данных, к которым относится указатель!
  • Каждый раз, когда вы видите "char foo[###]", проверьте каждое использование массива foo, чтобы удостовериться, что он не может быть переполнен. Если вы не можете избежать переполнения (а такие случаи могут иметь место), то, по крайней мере, выделяйте память под буфер операцией malloc, чтобы никто не смог получить доступ к стеку.
  • Всегда закрывайте файловые дескрипторы, как только это можно сделать - это делает более вероятным сброс содержимого буфера стандартного ввода/вывода. В библиотечных процедурах всегда устанавливайте параметр close-on-exec для любых открываемых файловых дескрипторов.

Полезным инструментом аудита является порт its4, находящийся в каталоге /usr/ports/security/its4/. Это автоматизированный аудитор кода на языке C, который выявляет потенциальные проблемы в коде. Это полезная однопроходная утилита, но на неё не стоит полагаться, а полный аудит должен включать проверка всего кода человеком.

За дополнительной информацией о технике безопасного программирования и посвящённым этому вопросу ресурсах обратитесь к странице How to Write Secure Code.

Советы и рекомендации по безопасности FreeBSD

Вот некоторые действия, которые вы должны предпринять, чтобы защитить FreeBSD или фактически любую UNIX®-систему:

  • Отключение потенциально опасного программного обеспечения
    Имеется большое количество программного обеспечения, которое для использования специфических ресурсов запускается с правами особого привилегированного пользователя, для чего на выполнимые файлы устанавливается бит set-uid. Примерами таких программ являются UUCP и PPP, которые используют последовательный порт, или sendmail, который работает с почтовой очередью и привязывается к привилегированному сетевому порту. Если вы не используете UUCP, вовсе не обязательно иметь ее в системе, и его можно просто убрать. Конечно, это требует хорошего знания того, что может быть выброшено, а что нет, и хорошее представление о том, захотите ли вы иметь эту функциональность в будущем.
    Вы можете обнаружить, что некоторые утилиты недостаточно полезны для того, чтобы иметь их в системе с риском для безопасности, например, swapinfo. Если вы уберете бит set-uid с выполнимого файла (с помощью команды 'chmod ug-s filename'), вы сможете воспользоваться swapinfo, работая как пользователь root. Однако это является не такой уж хорошей идеей, если, убрав все биты set-uid, вам придется все время работать как root.
    Удалите не только программы, которыми вы не пользуетесь, но и сервисы, которые вы не хотите или которые вам не нужно предоставлять. Это может быть сделано путем редактирования файлов /etc/inetd.conf и /etc/rc.conf с отключением в нем всех неиспользуемых сервисов.
  • Исправление программного обеспечения, в котором имеются проблемы с безопасностью (или как быть на один шаг впереди кракеров)
    Подпишитесь на различные списки рассылки по безопасности FreeBSD, чтобы получать известия об ошибках в безопасности и исправления. Вносите исправления немедленно.
  • Создание архивных копий для восстановления системы в случае нарушения безопасности
    Всегда имейте архивную копию и чистую версию операционной системы (например, на CD-Rom). Проверьте, что архивные копии не содержат данных, поврежденных или измененных в результате атаки.
  • Установка программного обеспечения для отслеживания состояния системы
    Программы типа tcp wrappers и tripwire (оба находятся среди пакаджей/портов) могут помочь проводить мониторинг работы системы. Это облегчает обнаружение попыток взлома. Также читайте результаты работы скриптов из /etc/security, которые запускаются ежедневно и посылают свои сообщения по электронной почте пользователю root.
  • Обучение людей, работающих в системе
    Пользователи должны знать, что они делают. Им должно быть сказано, чтобы они никому не передавали свои пароли и делали их трудными для отгадывания. Дайте им понять, что безопасность системы/сети отчасти находится в их руках.

Имеется также документ FreeBSD Security How-To, в котором даются некоторые подробные советы по усилению безопасности вашей системы. Вы можете найти его по адресу http://www.FreeBSD.org/~jkb/howto.html.

Обеспечение безопасности - это динамичный процесс. Следуйте последним разработкам в этой области.

Что делать, если вы обнаружили нарушение безопасности

  • Определите серьезность нарушения безопасности
    Какие привилегии получил атакующий? Получил ли он доступ с привилегиями системного администратора? Или атакующий получил только доступ на уровне обычного пользователя?
  • Определите, было ли изменено состояние системы (ядро или пользовательская часть)
    Какое программное обеспечение было изменено? Было ли установлено новое ядро? Были ли модифицированы какие-либо системные программы (такие, как telnetd, login, и тд.)? Если вы полагаете, что атакующий мог сделать какие угодно изменения в ОС, вы можете переустановить операционную систему с безопасного носителя.
  • Определите, как был осуществлен взлом
    Был ли взлом осуществлен через хорошо известную ошибку в безопасности? Если это так, установите соответствующие патчи. Был ли взлом осуществлен из-за неправильной конфигурации? Или это была новая ошибка? Если вы думаете, что это было неизвестная ошибка, вы должны предупредить Офицера Безопасности FreeBSD.
  • Устранение дыры в безопасности
    Для устранения проблемы установите новое программное обеспечение или патчи к старому. Отключите всех пользователей, бюджеты которых были взломаны.
  • Другие ресурсы
    CERT также предоставляет подробную информацию о том, что нужно предпринять в случае нарушения безопасности системы.

Другие источники информации, касающиеся безопасности