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