Initial import, synchronized with English 1.21
This commit is contained in:
parent
7e98103f25
commit
ca7c310621
Notes:
svn2git
2020-12-08 03:00:23 +00:00
svn path=/www/; revision=6586
1 changed files with 497 additions and 0 deletions
497
ru/security/security.sgml
Normal file
497
ru/security/security.sgml
Normal file
|
@ -0,0 +1,497 @@
|
|||
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//EN" [
|
||||
<!ENTITY base CDATA "..">
|
||||
<!ENTITY date "$FreeBSD: www/en/security/security.sgml,v 1.19 1999/12/12 16:24:47 jhb Exp $">
|
||||
<!ENTITY title "Информация о безопасности FreeBSD">
|
||||
<!ENTITY % includes SYSTEM "../includes.sgml"> %includes;
|
||||
]>
|
||||
<!-- $FreeBSD: www/en/security/security.sgml,v 1.19 1999/12/12 16:24:47 jhb Exp $ -->
|
||||
|
||||
<html>
|
||||
&header;
|
||||
|
||||
<H2>Введение</H2>
|
||||
|
||||
<P>Эта веб-страница создана для того, чтобы помочь как начинающим, так и
|
||||
опытным пользователям, в области безопасности операционной системы FreeBSD.
|
||||
Команда разработчиков FreeBSD воспринимает вопросы безопасности очень
|
||||
серьезно и постоянно работает над тем, чтобы сделать ОС защищенной
|
||||
настолько, насколько это вообще возможно.</P>
|
||||
|
||||
<P>Здесь вы найдете информацию или ссылки на информацию о том, как защитить
|
||||
вашу систему от различных типов внешних атак, с кем связаться, если вы
|
||||
нашли недочет в системе безопасности, итд. Сюда также включен раздел,
|
||||
в котором описаны различные способы, прибегнув к которым, системный
|
||||
программист может с большей вероятностью избегнуть дыр в защите.</P>
|
||||
|
||||
<H2>Содержание</H2>
|
||||
<UL>
|
||||
<LI><A HREF="#sec">Информация об офицере безопасности FreeBSD</A></LI>
|
||||
<LI><A HREF="#adv">Бюллетени безопасности FreeBSD</A></LI>
|
||||
<LI><A HREF="#ml">Информация о списках рассылки, посвященных безопасности FreeBSD</A></LI>
|
||||
<LI><A HREF="#tat">Советы и рекомендации по безопасности FreeBSD</A></LI>
|
||||
<LI><A HREF="#spg">Рекомендации по безопасному программированию</A></LI>
|
||||
<LI><A HREF="#misc">Прочая информация, касающаяся безопасности</A></LI>
|
||||
</UL>
|
||||
|
||||
<A NAME=sec></A>
|
||||
<H2>Офицер Безопасности FreeBSD</H2>
|
||||
|
||||
<P>Для того, чтобы лучше координировать обмен информацией с сообществом,
|
||||
занимающимся вопросами безопасности, во FreeBSD имеется точка для
|
||||
соответствующих коммуникаций: <a
|
||||
href="mailto:security-officer@FreeBSD.org">офицер безопасности</a>.
|
||||
Эту должность занимает группа выделенных для этого офицеров
|
||||
безопасности, их главной задачей является рассылка бюллетеней при
|
||||
обнаружении дыр в системе безопасности и реагирование на сообщения о
|
||||
возможных проблемах с безопасностью во FreeBSD.</P>
|
||||
|
||||
<P>Если вы хотите связаться с кем-нибудь из команды FreeBSD по поводу
|
||||
возможной ошибки в защите, то, пожалуйста, <A
|
||||
HREF="mailto:security-officer@FreeBSD.org">напишите письмо Офицеру
|
||||
Безопасности</A> с описанием того, что вы нашли и характером нарушения
|
||||
безопасности, с которым вы столкнулись. Офицеры Безопасности также
|
||||
общаются с различными командами из <A HREF="http://www.cert.org">CERT</A>
|
||||
и <A HREF="http://www.first.org/">FIRST</A> по всему миру, распространяя
|
||||
информацию о возможных нарушениях безопасности во FreeBSD и утилитах,
|
||||
часто используемых во FreeBSD. Офицеры Безопасности также являются
|
||||
активными членами этих организаций.</P>
|
||||
|
||||
<P>Если вы хотите обратиться к Офицеру Безопасности по поводу некоторой
|
||||
особо щепетильной проблемы, воспользуйтесь <A
|
||||
HREF="ftp://ftp.FreeBSD.org/pub/FreeBSD/CERT/public_key.asc">ключами
|
||||
PGP</A> для шифрования вашего сообщения перед его отправкой.</P>
|
||||
|
||||
<A NAME=adv></A>
|
||||
<H2>Бюллетени безопасности FreeBSD</H2>
|
||||
|
||||
<P>Офицеры Безопасности FreeBSD выпускают бюллетени безопасности для
|
||||
следующих релизов FreeBSD:</P>
|
||||
|
||||
<UL>
|
||||
<LI> Самый последний официальный релиз FreeBSD.
|
||||
<LI> FreeBSD-current.
|
||||
<LI> FreeBSD-stable, после того, как из этой ветки было выпущено по
|
||||
крайней мере 2 релиза.
|
||||
<LI> Предыдущая ветка FreeBSD-stable, пока из новой ветви -stable еще
|
||||
не выпущено 2 релиза.
|
||||
</UL>
|
||||
|
||||
В настоящее время бюллетени безопасности имеются для:
|
||||
<UL>
|
||||
<LI> FreeBSD 3.3
|
||||
<LI> FreeBSD 3.4
|
||||
<LI> FreeBSD-current
|
||||
<LI> FreeBSD-stable
|
||||
</UL>
|
||||
|
||||
<P>Более старые релизы не поддерживаются и пользователям строго рекомендуется
|
||||
произвести обновление до одной из поддерживаемых версий, указанных
|
||||
выше.</P>
|
||||
|
||||
<P>Как и все направления разработки, исправления в защите системы сначала
|
||||
испытываются в ветке <A
|
||||
HREF="../handbook/cutting-edge.html#CURRENT">FreeBSD-current</A>. После
|
||||
нескольких дней некоторого тестирования исправления переносятся в
|
||||
поддерживаемые ветки FreeBSD-stable и выпускается очередной бюллетень.</P>
|
||||
|
||||
<P>Бюллетени рассылаются в следующие списки рассылки FreeBSD:
|
||||
<UL>
|
||||
<LI>FreeBSD-security-notifications@FreeBSD.org
|
||||
<LI>FreeBSD-security@FreeBSD.org
|
||||
<LI>FreeBSD-announce@FreeBSD.org
|
||||
</UL>
|
||||
|
||||
|
||||
<P>Бюллетени всегда подписываются с помощью <A
|
||||
HREF="ftp://ftp.FreeBSD.org/pub/FreeBSD/CERT/public_key.asc">PGP-ключа</A>
|
||||
Офицера Безопасности и помещаются, вместе с соответствующими исправлениями,
|
||||
в наш <A
|
||||
HREF="ftp://ftp.FreeBSD.org/pub/FreeBSD/CERT/index.html">архив</A>. На
|
||||
момент написания этого текста вышли следующие бюллетени:</P>
|
||||
|
||||
<UL>
|
||||
<LI><A HREF="ftp://ftp.FreeBSD.org/pub/FreeBSD/CERT/advisories/FreeBSD-SA-96:01.sliplogin.asc">FreeBSD-SA-96:01.sliplogin.asc</A></LI>
|
||||
<LI><A HREF="ftp://ftp.FreeBSD.org/pub/FreeBSD/CERT/advisories/FreeBSD-SA-96:02.apache.asc">FreeBSD-SA-96:02.apache.asc</A></LI>
|
||||
<LI><A HREF="ftp://ftp.FreeBSD.org/pub/FreeBSD/CERT/advisories/FreeBSD-SA-96:03.sendmail-suggestion.asc">FreeBSD-SA-96:03.sendmail-suggestion.asc</A></LI>
|
||||
<LI><A HREF="ftp://ftp.FreeBSD.org/pub/FreeBSD/CERT/advisories/FreeBSD-SA-96:08.syslog.asc">FreeBSD-SA-96:08.syslog.asc</A></LI>
|
||||
<LI><A HREF="ftp://ftp.FreeBSD.org/pub/FreeBSD/CERT/advisories/FreeBSD-SA-96:09.vfsload.asc">FreeBSD-SA-96:09.vfsload.asc</A></LI>
|
||||
<LI><A HREF="ftp://ftp.FreeBSD.org/pub/FreeBSD/CERT/advisories/FreeBSD-SA-96:10.mount_union.asc">FreeBSD-SA-96:10.mount_union.asc</A></LI>
|
||||
<LI><A HREF="ftp://ftp.FreeBSD.org/pub/FreeBSD/CERT/advisories/FreeBSD-SA-96:11.man.asc">FreeBSD-SA-96:11.man.asc</A></LI>
|
||||
<LI><A HREF="ftp://ftp.FreeBSD.org/pub/FreeBSD/CERT/advisories/FreeBSD-SA-96:12.perl.asc">FreeBSD-SA-96:12.perl.asc</A></LI>
|
||||
<LI><A HREF="ftp://ftp.FreeBSD.org/pub/FreeBSD/CERT/advisories/FreeBSD-SA-96:13.comsat.asc">FreeBSD-SA-96:13.comsat.asc</A></LI>
|
||||
<LI><A HREF="ftp://ftp.FreeBSD.org/pub/FreeBSD/CERT/advisories/FreeBSD-SA-96:14.ipfw.asc">FreeBSD-SA-96:14.ipfw.asc</A></LI>
|
||||
<LI><A HREF="ftp://ftp.FreeBSD.org/pub/FreeBSD/CERT/advisories/FreeBSD-SA-96:15.ppp.asc">FreeBSD-SA-96:15.ppp.asc</A></LI>
|
||||
<LI><A HREF="ftp://ftp.FreeBSD.org/pub/FreeBSD/CERT/advisories/FreeBSD-SA-96:16.rdist.asc">FreeBSD-SA-96:16.rdist.asc</A></LI>
|
||||
<LI><A HREF="ftp://ftp.FreeBSD.org/pub/FreeBSD/CERT/advisories/FreeBSD-SA-96:17.rzsz.asc">FreeBSD-SA-96:17.rzsz.asc</A></LI>
|
||||
<LI><A HREF="ftp://ftp.FreeBSD.org/pub/FreeBSD/CERT/advisories/FreeBSD-SA-96:18.lpr.asc">FreeBSD-SA-96:18.lpr.asc</A></LI>
|
||||
<LI><A HREF="ftp://ftp.FreeBSD.org/pub/FreeBSD/CERT/advisories/FreeBSD-SA-96:19.modstat.asc">FreeBSD-SA-96:19.modstat.asc</A></LI>
|
||||
<LI><A HREF="ftp://ftp.FreeBSD.org/pub/FreeBSD/CERT/advisories/FreeBSD-SA-96:20.stack-overflow.asc">FreeBSD-SA-96:20.stack-overflow.asc</A></LI>
|
||||
<LI><A HREF="ftp://ftp.FreeBSD.org/pub/FreeBSD/CERT/advisories/FreeBSD-SA-96:21.talkd.asc">FreeBSD-SA-96:21.talkd.asc</A></LI>
|
||||
<LI><A HREF="ftp://ftp.FreeBSD.org/pub/FreeBSD/CERT/advisories/FreeBSD-SA-97:01.setlocale">FreeBSD-SA-97:01.setlocale</A></LI>
|
||||
<LI><A HREF="ftp://ftp.FreeBSD.org/pub/FreeBSD/CERT/advisories/FreeBSD-SA-97:02.lpd.asc">FreeBSD-SA-97:02.lpd.asc</A></LI>
|
||||
<LI><A HREF="ftp://ftp.FreeBSD.org/pub/FreeBSD/CERT/advisories/FreeBSD-SA-97:03.sysinstall.asc">FreeBSD-SA-97:03.sysinstall.asc</A></LI>
|
||||
<LI><A HREF="ftp://ftp.FreeBSD.org/pub/FreeBSD/CERT/advisories/FreeBSD-SA-97:04.procfs.asc">FreeBSD-SA-97:04.procfs.asc</A></LI>
|
||||
<LI><A HREF="ftp://ftp.FreeBSD.org/pub/FreeBSD/CERT/advisories/FreeBSD-SA-97:05.open.asc">FreeBSD-SA-97:05.open.asc</A></LI>
|
||||
<LI><A HREF="ftp://ftp.FreeBSD.org/pub/FreeBSD/CERT/advisories/FreeBSD-SA-97:06.f00f.asc">FreeBSD-SA-97:06.f00f.asc</A></LI>
|
||||
<LI><A HREF="ftp://ftp.FreeBSD.org/pub/FreeBSD/CERT/advisories/FreeBSD-SA-98:01.land.asc">FreeBSD-SA-98:01.land.asc</A></LI>
|
||||
<LI><A HREF="ftp://ftp.FreeBSD.org/pub/FreeBSD/CERT/advisories/FreeBSD-SA-98:02.mmap.asc">FreeBSD-SA-98:02.mmap.asc</A></LI>
|
||||
<LI><A HREF="ftp://ftp.FreeBSD.org/pub/FreeBSD/CERT/advisories/FreeBSD-SA-98:03.ttcp.asc">FreeBSD-SA-98:03.ttcp.asc</A></LI>
|
||||
<LI><A HREF="ftp://ftp.FreeBSD.org/pub/FreeBSD/CERT/advisories/FreeBSD-SA-98:04.mmap.asc">FreeBSD-SA-98:04.mmap.asc</A></LI>
|
||||
<LI><A HREF="ftp://ftp.FreeBSD.org/pub/FreeBSD/CERT/advisories/FreeBSD-SA-98:05.nfs.asc">FreeBSD-SA-98:05.nfs.asc</A></LI>
|
||||
<LI><A HREF="ftp://ftp.FreeBSD.org/pub/FreeBSD/CERT/advisories/FreeBSD-SA-98:06.icmp.asc">FreeBSD-SA-98:06.icmp.asc</A></LI>
|
||||
<LI><A HREF="ftp://ftp.FreeBSD.org/pub/FreeBSD/CERT/advisories/FreeBSD-SA-98:07.rst.asc">FreeBSD-SA-98:07.rst.asc</A></LI>
|
||||
<LI><A HREF="ftp://ftp.FreeBSD.org/pub/FreeBSD/CERT/advisories/FreeBSD-SA-98:08.fragment.asc">FreeBSD-SA-98:08.fragment.asc</A></LI>
|
||||
<LI><A HREF="ftp://ftp.FreeBSD.org/pub/FreeBSD/CERT/advisories/FreeBSD-SA-99:01.chflags.asc">FreeBSD-SA-99:01.chflags.asc</A></LI>
|
||||
<LI><A HREF="ftp://ftp.FreeBSD.org/pub/FreeBSD/CERT/advisories/FreeBSD-SA-99:02.profil.asc">FreeBSD-SA-99:02.profil.asc</A></LI>
|
||||
<LI><A HREF="ftp://ftp.FreeBSD.org/pub/FreeBSD/CERT/advisories/FreeBSD-SA-99:03.ftpd.asc">FreeBSD-SA-99:03.ftpd.asc</A></LI>
|
||||
<LI><A HREF="ftp://ftp.FreeBSD.org/pub/FreeBSD/CERT/advisories/FreeBSD-SA-99:04.core.asc">FreeBSD-SA-99:04.core.asc</A></LI>
|
||||
<LI><A HREF="ftp://ftp.FreeBSD.org/pub/FreeBSD/CERT/advisories/FreeBSD-SA-99:05.fts.asc">FreeBSD-SA-99:05.fts.asc</A></LI>
|
||||
<LI><A HREF="ftp://ftp.FreeBSD.org/pub/FreeBSD/CERT/advisories/FreeBSD-SA-99:06.amd.asc">FreeBSD-SA-99:06.amd.asc</A></LI>
|
||||
<LI><A HREF="ftp://ftp.FreeBSD.org/pub/FreeBSD/CERT/advisories/FreeBSD-SA-00:01.make.asc">FreeBSD-SA-00:01.make.asc</A></LI>
|
||||
<LI><A HREF="ftp://ftp.FreeBSD.org/pub/FreeBSD/CERT/advisories/FreeBSD-SA-00:02.procfs.asc">FreeBSD-SA-00:02.procfs.asc</A></LI>
|
||||
</UL>
|
||||
|
||||
<A NAME=ml></A>
|
||||
<H2>Информация о списках рассылки, посвященных безопасности FreeBSD</H2>
|
||||
|
||||
<P>Если вы администрируете или эксплуатируете некоторое количество систем
|
||||
FreeBSD, вам полезно быть подписанным на один или несколько из следующих
|
||||
списков рассылки:</P>
|
||||
|
||||
<PRE>
|
||||
freebsd-security Обсуждение общих вопросов безопасности
|
||||
freebsd-security-notifications Уведомления, касающиеся безопасности (модерируемый список рассылки)
|
||||
</PRE>
|
||||
|
||||
Пошлите письмо на адрес <A HREF="mailto:majordomo@FreeBSD.org">
|
||||
majordomo@FreeBSD.ORG</A> со строчкой
|
||||
<PRE>
|
||||
subscribe <listname> [<optional address>]
|
||||
</PRE>
|
||||
в тексте письма для того, чтобы подписаться. Например, так:
|
||||
<PRE>
|
||||
% echo "subscribe freebsd-security" | mail majordomo@FreeBSD.org
|
||||
</PRE>
|
||||
и если вы хотите отписаться от списка рыссылки:
|
||||
<PRE>
|
||||
% echo "unsubscribe freebsd-security" | mail majordomo@FreeBSD.org
|
||||
</PRE>
|
||||
|
||||
<A NAME=spg></A>
|
||||
<H2>Рекомендации по безопасному программированию</H2>
|
||||
<P><P><UL>
|
||||
|
||||
<LI>Никогда не доверяйте никаким входным данным, будь то аргументы командной
|
||||
строки, переменные окружения, конфигурационные файлы, входящие пакеты
|
||||
TCP/UDP/ICMP, имена хостов, аргументы функций итд. Если размер
|
||||
полученных данных является фактором, контролируемым извне, то программа
|
||||
или функция должна эти данные проверять при копировании. Особо стоит
|
||||
обратить внимание на следующие моменты:
|
||||
<P></P><UL>
|
||||
|
||||
<LI>strcpy() и sprintf(), применяемые к данным, размер которых неизвестен.
|
||||
Используйте strncpy и snprintf(), когда размер известен (или выполняйте
|
||||
какие-то другие формы проверки границ данных, когда их длина неизвестна).
|
||||
В частности, никогда не используйте функции gets() или sprintf(), точка.
|
||||
Если вы все же будете это делать, мы вас проклянем.
|
||||
<P></P></LI>
|
||||
|
||||
<LI>Если вы осуществляете проверку ввода пользователя на то, чтобы он не
|
||||
содержал неверные символы, НЕ проверяйте наличие неправильных символов.
|
||||
Вместо этого просто проверяйте, что во входном потоке содержатся ТОЛЬКО
|
||||
разрешенные символы. Общий принцип: запрет всего, что явно не разрешено.
|
||||
<P></P></LI>
|
||||
|
||||
<LI>Прочтите страницы Справочника по функциям strncpy() и strncat().
|
||||
Удостоверьтесь, что вы правильно понимаете их работу!!! Функция strncpy()
|
||||
может не добавлять терминирующий \0, когда как strncat() это делает.
|
||||
<P></P></LI>
|
||||
|
||||
<LI>Отслеживайте использование функций strvis() и getenv(). При использовании
|
||||
strvis() легко получить неправильную целевую строку, а getenv()
|
||||
может вернуть результатом строчки, намного превышающие то, что ожидает ваша
|
||||
программа. Использование этих функций является одним из основных методов
|
||||
выполнения атак на систему, при которой установка необычных значений
|
||||
переменных окружения приводит к изменению значения стека и переменных
|
||||
внутри программы. Если ваша программа использует переменные окружения,
|
||||
будьте осторожны. Будьте сверхосторожны!
|
||||
<P></P></LI>
|
||||
|
||||
<LI>Каждый раз при использовании вызовов open() или stat() спросите себя:
|
||||
"Что, если это - символическая ссылка?"
|
||||
<P></P></LI>
|
||||
|
||||
<LI>Всегда используйте mkstemp() вместо mktemp(), tempnam(), итд. Также
|
||||
в общем будьте осторожны при работе в /tmp, имея в виду, что в /tmp
|
||||
очень мало атомарных операций:
|
||||
<UL>
|
||||
<LI>Создание каталога. Оно может быть удачным или с ошибкой.</LI>
|
||||
<LI>Открытие файла O_CREAT | O_EXECL</LI>
|
||||
</UL>
|
||||
Если вы используете mkstemp(), то вышеуказанные случаи обрабатываются
|
||||
корректно. Поэтому все временные файлы должны быть созданы с
|
||||
использованием mkstemp() для гарантии того, что нет совпадения имен и
|
||||
все права доступа выставляются верно.
|
||||
<P></P></LI>
|
||||
|
||||
<LI>Если атакующий может посылать пакеты от имени другой произвольной
|
||||
системы, то он получает полный контроль над данными, которые мы получаем
|
||||
и <B>НИКАКИМ</B> из них мы не должны доверять.
|
||||
<P></P></LI>
|
||||
|
||||
<LI>Никогда не полагайтесь на то, что конфигурационный файл имеет
|
||||
правильный формат или что он сгенерирован соответствующей утилитой. Не
|
||||
доверяйте пользовательскому вводу, который касается имен терминалов и
|
||||
не думайте, что в вводимых строках не будет подстрок '/' или '../../../',
|
||||
если есть хоть какой-то шанс, что они будут использованы в качестве
|
||||
маршрута к файлу. Не доверяйте <B>НИКАКИМ</B> путям, которые ввел
|
||||
пользователь, когда вы работаете с правами суперпользователя.
|
||||
<P></P></LI>
|
||||
|
||||
<LI>Ищите бреши и недочеты в способе хранения данных. Все временные
|
||||
файлы должны иметь права 600 для того, чтобы быть защищенными от
|
||||
любопытных глаз.
|
||||
<P></P></LI>
|
||||
|
||||
<LI>Не просто ищите обычные подозрительные места в программах, которые
|
||||
выполняются с повышенными привилегиями. Просмотрите код строчку за
|
||||
строчкой в поиске возможных в этих случаях переполнений, так как имеется
|
||||
гораздо больше способов вызвать переполнение буфера, чем просто используя
|
||||
strcpy() со товарищи.
|
||||
<P></P></LI>
|
||||
|
||||
<LI>Если вы где-то понизили привилегии, это вовсе не значит, что в программа
|
||||
не подвержена атакам. Атакующий может поместить соответствующий код в
|
||||
стек, чтобы вернуть привилегированный режим перед выполнением
|
||||
/bin/sh.</LI></UL>
|
||||
<P></P></LI>
|
||||
|
||||
<LI>Управляйте значением uid. Меняйте привилегии как можно быстрее, и
|
||||
меняйте их на самом деле. Переключение между euid и uid НЕ достаточно.
|
||||
Используйте setuid() везде, где это возможно.
|
||||
<P></P></LI>
|
||||
|
||||
<LI>Никогда не выводите содержимого конфигурационного файла при возникновении
|
||||
ошибок. Достаточно номера строки и может быть, позиции в строке. Это
|
||||
нужно делать для всех библиотек и любой программы с установленными битами
|
||||
suid/sgid.
|
||||
<P></P></LI>
|
||||
|
||||
<LI>Советы для тех, кто проверяет имеющийся код на наличие проблем
|
||||
с безопасностью:<P></P>
|
||||
<UL>
|
||||
|
||||
<LI>Если вы не уверены в правильности ваших исправлений, пошлите их
|
||||
обозревателю, с которым у вас уже есть договоренность на просмотр вашего
|
||||
кода. Не выполняйте коммит кода, в котором вы не уверены, так как
|
||||
нарушение работы чего-либо из-за исправлений во имя безопасности приводит
|
||||
в некоторое замешательство.
|
||||
<P></P></LI>
|
||||
|
||||
<LI>Те, у кого нет привилегий на CVS для выполнения операции commit, должны
|
||||
понимать, что обозреватель с такими привилегиями должен просмотреть
|
||||
изменения. Этот человек должен просмотреть и включить окончательную версию
|
||||
в дерево CVS.
|
||||
<P></P></LI>
|
||||
|
||||
<LI>При посылке изменений для просмотра, всегда используйте diff в форматах
|
||||
context или unidiff - в этих случаях изменения могут быть легко переданы
|
||||
программе patch(1). Не посылайте просто файлы полностью. Файлы diff
|
||||
гораздо легче читать и вносить изменения из них в исходные тексты (особенно
|
||||
когда может иметь место много изменений в разных местах). Все изменения
|
||||
должны делаться в ветке -current.
|
||||
<P></P></LI>
|
||||
|
||||
<LI>Всегда тестируйте ваши изменения непосредственно (например, компилируя
|
||||
и запуская затрагиваемые программы) перед тем, как послать их обозревателю.
|
||||
Никому не нравится получать нерабочий код для обозрения, что обычно
|
||||
означает, что посылающий туда даже не заглядывал (что ещё более усиливает
|
||||
недоверие к человеку). Если вам нужен вход на машину с конкретной версией,
|
||||
которой у вас нет - просто спросите. У нас имеются ресурсы именно с
|
||||
таким назначением.
|
||||
<P></P></LI>
|
||||
|
||||
<LI>Замечание для коммиттеров: не забудьте перенести патчи из ветки -current
|
||||
в соответствующие места ветки -stable.
|
||||
<P></P></LI>
|
||||
|
||||
<LI>Не нужно без необходимости переписывать код в соответствии с вашим
|
||||
стилем/вкусом - это только затруднит работу обозревателя. Делайте это,
|
||||
если только на то имеются веские причины.</LI></UL>
|
||||
<P></P></LI>
|
||||
|
||||
<LI>Обратите внимание на программы, которые выполняют сложные манипуляции
|
||||
с обработчиками сигналов. Многие подпрограммы в различных библиотеках
|
||||
недостаточно реентерабельны, чтобы делать это корректно.
|
||||
<P></P></LI>
|
||||
|
||||
<LI>Особое внимание уделите использованию realloc() - эта функция чаще всего
|
||||
используется неправильно.
|
||||
<P></P></LI>
|
||||
|
||||
<LI>При использовании буферов фиксированного размера используйте sizeof()
|
||||
во избежание несоответствия, когда размер буфера меняется, а код, который
|
||||
его использует, нет. Например:
|
||||
<LISTING>
|
||||
char buf[1024];
|
||||
struct foo { ... };
|
||||
...
|
||||
ПЛОХО:
|
||||
xxx(buf, 1024)
|
||||
xxx(yyy, sizeof(struct foo))
|
||||
ХОРОШО:
|
||||
xxx(buf, sizeof(buf))
|
||||
xxx(yyy, sizeof(yyy))
|
||||
</LISTING>
|
||||
Будьте внимательны при использовании sizeof() с указателями, когда вы
|
||||
на самом деле хотите выяснить размер данных, к которым относится указатель!
|
||||
<P></P></LI>
|
||||
|
||||
<LI>Каждый раз, когда вы видите "char foo[###]", проверьте каждое
|
||||
использование массива foo, чтобы удостовериться, что он не может быть
|
||||
переполнен. Если вы не можете избежать переполнения (а такие случаи могут
|
||||
иметь место), то, по крайней мере, выделяйте память под буфер операцией
|
||||
malloc, чтобы никто не смог получить доступ к стеку.
|
||||
<P></P></LI>
|
||||
|
||||
<LI>Всегда закрывайте файловые дескрипторы, как только это можно сделать -
|
||||
это делает более вероятным сброс содержимого буфера стандартного
|
||||
ввода/вывода. В библиотечных процедурах всегда устанавливайте параметр
|
||||
close-on-exec для любых открываемых файловых дескрипторов.
|
||||
<P><P></LI>
|
||||
</UL>
|
||||
|
||||
<A NAME=tat></A>
|
||||
<H2>Советы и рекомендации по безопасности FreeBSD</H2>
|
||||
<P>Вот некоторые действия, которые вы должны предпринять, чтобы защитить
|
||||
FreeBSD или фактически любую Unix-систему:
|
||||
<UL>
|
||||
|
||||
<LI>Отключение потенциально опасного программного обеспечения<BR><P></P>
|
||||
|
||||
Имеется большое количество программного обеспечения, которое для
|
||||
использования специфических ресурсов запускается с правами особого
|
||||
привилегированного пользователя, для чего на выполнимые файлы устанавливается
|
||||
бит set-uid. Примерами таких программ являются UUCP и PPP, которые
|
||||
используют последовательный порт, или sendmail, который работает с почтовой
|
||||
очередью и привязывается к привилегированному сетевому порту. Если вы не
|
||||
используете UUCP, вовсе не обязательно иметь ее в системе, и его можно
|
||||
просто убрать. Конечно, это требует хорошего знания того, что может быть
|
||||
выброшено, а что нет, и хорошее представление о том, захотите ли вы иметь
|
||||
эту функциональность в будущем.<BR><P></P>
|
||||
|
||||
Вы можете обнаружить, что некоторые утилиты недостаточно полезны для того,
|
||||
чтобы иметь их в системе с риском для безопасности, например, swapinfo.
|
||||
Если вы уберете бит set-uid с выполнимого файла (с помощью команды
|
||||
'chmod ug-s filename'), вы сможете воспольоваться swapinfo, работая как
|
||||
пользователь root. Однако это является не такой уж хорошей идеей, если,
|
||||
убрав все биты set-uid, вам придется все время работать как
|
||||
root.<BR><P></P>
|
||||
|
||||
Удалите не только программы, которыми вы не пользуетесь, но и сервисы,
|
||||
которые вы не хотите или которые вам не нужно предоставлять. Это может быть
|
||||
сделано путем редактирования файлов <TT>/etc/inetd.conf</TT> и
|
||||
<TT>/etc/rc.conf</TT> с отключением в нем всех неиспользуемых
|
||||
сервисов.<P></P>
|
||||
|
||||
<LI>Исправление программного обеспечения, в котором имеются проблемы с
|
||||
безопасностью (или как быть на один шаг впереди крэкеров)<BR><P></P>
|
||||
|
||||
Подпишитесь на различные <A HREF="#ml">списки рассылки по безопасности
|
||||
FreeBSD</A>, чтобы получать известия об ошибках в безопасности и
|
||||
исправления. Вносите исправления немедленно.<P></P>
|
||||
|
||||
<LI>Создание архивных копий для восстановления системы в случае нарушения
|
||||
безопасности<BR><P></P>
|
||||
|
||||
Всегда имейте архивную копию и чистую версию операционной системы
|
||||
(например, на CD-Rom). Проверьте, что архивные копии не содержат данных,
|
||||
поврежденных или измененных в результате атаки.<P></P>
|
||||
|
||||
<LI>Установка программного обеспечения для отслеживания состояния
|
||||
системы<BR><P></P>
|
||||
|
||||
Программы типа tcp wrappers и tripwire (оба находятся среди
|
||||
пакаджей/портов) могут помочь проводить мониторинг работы системы. Это
|
||||
облегчает обнаружение попыток взлома. Также читайте результаты работы
|
||||
скриптов из /etc/security, которые запускаются ежедневно и посылают свои
|
||||
сообщения по электронной почте пользователю root.<P></P>
|
||||
|
||||
<LI>Обучение людей, работающих в системе<BR><P></P>
|
||||
|
||||
Пользователи должны знать, что они делают. Им должно быть сказано, чтобы
|
||||
они никому не передавали свои пароли и делали их трудными для отгадывания.
|
||||
Дайте им понять, что безопасность системы/сети отчасти находится в
|
||||
их руках.<P></P>
|
||||
</UL>
|
||||
|
||||
<P>Имеется также документ FreeBSD Security How-To, в котором даются
|
||||
некоторые подробные советы по усилению безопасности вашей системы. Вы
|
||||
можете найти его по адресу <A HREF="http://www.FreeBSD.org/~jkb/howto.html">
|
||||
http://www.FreeBSD.org/~jkb/howto.html</A>.</P>
|
||||
|
||||
<P>Обеспечение безопасности - это динамичный процесс. Следуйте последним
|
||||
разработкам в этой области.</P>
|
||||
|
||||
<A NAME=misc></A>
|
||||
<H2>Что делать, если вы обнарущили нарушение безопасности</H2>
|
||||
|
||||
<UL>
|
||||
<LI><B>Определите серьезность нарушения безопасности</B><BR>
|
||||
Какие привилегии получил атакующий? Получил ли он доступ с привилегиями
|
||||
системного администратора? Или атакующий получил только доступ на уровне
|
||||
обычного пользователя?</LI>
|
||||
|
||||
<LI><B>Определите, было ли изменено состояние системы (ядро или
|
||||
пользовательская часть)</B><BR>
|
||||
|
||||
Какое программное обеспечение было изменено? Было ли установлено новое
|
||||
ядро? Были ли модифицированы какие-либо системные программы (такие, как
|
||||
telnetd, login, итд.)? Если вы полагаете, что атакующий мог сделать какие
|
||||
угодно изменения в ОС, вы можете переустановить операционную систему с
|
||||
безопасного носителя.</LI>
|
||||
|
||||
<LI><B>Определите, как был осуществлен взлом</B><BR>
|
||||
|
||||
Был ли взлом осуществел через хорошо известную ошибку в безопасности? Если
|
||||
это так, установите соответствующие патчи. Был ли взлом осуществлен из-за
|
||||
неправильной конфигурации? Или это была новая ошибка? Если вы думаете,
|
||||
что это было неизвестная ошибка, вы должны прдупредить <A
|
||||
HREF="mailto:security-officer@FreeBSD.org">Офицера Безопасности
|
||||
FreeBSD</A>.</LI>
|
||||
|
||||
<LI><B>Устранение дыры в безопасности</B><BR>
|
||||
Для устраниения проблемы установите новое программное обеспечение или патчи
|
||||
к старому. Отключите всех пользователей, бюджеты которых были
|
||||
взломаны.</LI>
|
||||
|
||||
<LI><B>Другие ресурсы</B><BR>
|
||||
<A HREF="http://www.cert.org">CERT</A> также предоставляет
|
||||
<A HREF="http://www.cert.org/nav/recovering.html">подробную информацию</A>
|
||||
о том, что нужно предпринять в случае нарушения безопасности системы.</LI>
|
||||
</UL>
|
||||
|
||||
<H2>Другие источники информации, касающиеся безопасности</H2>
|
||||
<UL>
|
||||
<LI><A href="http://www.cs.purdue.edu/coast/archive/index.html">The COAST
|
||||
archive</A> содержит гигантскую коллекцию материалов, посвященных
|
||||
безопасности.</LI>
|
||||
|
||||
<LI><A href="http://www.cs.purdue.edu/coast/hotlist/">The COAST Security
|
||||
Hotlist</A> является местом, ч которого следует начинать поиск материалов
|
||||
по безопасности. Здесь находятся сотни полезных ссылок. Все, что вы
|
||||
хотели знать о безопасности... и больше.</LI>
|
||||
|
||||
<LI>Различные группы CERT, такие как <A href="http://www.cert.org">
|
||||
http://www.cert.org</A> и <A href="http://www.auscert.org.au">
|
||||
http://www.auscert.org.au</A>.</LI>
|
||||
|
||||
<LI>Списки рассылки, такие как <A
|
||||
HREF="http://www.securityfocus.com/forums/bugtraq/intro.html">Bugtraq</A>
|
||||
и <A HREF="http://www.nfr.net/forum/firewall-wizards.html">Firewall
|
||||
Wizards</A>.</LI>
|
||||
</UL>
|
||||
|
||||
&footer
|
||||
</body>
|
||||
</html>
|
Loading…
Reference in a new issue