<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	>

<channel>
	<title>LINUX- СЕРВЕР:</title>
	<atom:link href="http://www.compyuteri.ru/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.compyuteri.ru</link>
	<description>ПОШАГОВЫЕ ИНСТРУКЦИИ ИНСТАЛЛЯЦИИ И НАСТРОЙКИ</description>
	<pubDate>Mon, 15 Sep 2008 15:35:39 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.6</generator>
	<language>en</language>
			<item>
		<title>Глава 1. Введение</title>
		<link>http://www.compyuteri.ru/glava-1-vvedenie-ili/</link>
		<comments>http://www.compyuteri.ru/glava-1-vvedenie-ili/#comments</comments>
		<pubDate>Sat, 13 Sep 2008 18:56:13 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[Введение]]></category>

		<category><![CDATA[Linux-серверы]]></category>

		<category><![CDATA[благодарности]]></category>

		<category><![CDATA[книга]]></category>

		<category><![CDATA[корпоративные сети]]></category>

		<category><![CDATA[ПО]]></category>

		<category><![CDATA[помощь]]></category>

		<category><![CDATA[серверы]]></category>

		<category><![CDATA[сети]]></category>

		<category><![CDATA[техподдержка]]></category>

		<category><![CDATA[эта книга]]></category>

		<guid isPermaLink="false">http://www.compyuteri.ru/?p=85</guid>
		<description><![CDATA[В этой главе:
1. Пример использования Linux-серверов для организации корпоративной сети
2. Какое программное обеспечение должно быть установлено на сервере
3. Куда обращаться за помощью и технической поддержкой
В этой главе содержится перечень программного обеспечения необходимого для инсталляции серверов различного назначения и инструкции по использованию этой книги.
Пример использования Linux-серверов для организации корпоративной сети
У читателя может возникнуть вполне естественный вопрос [...]]]></description>
			<content:encoded><![CDATA[<p>В этой главе:<br />
1. Пример использования Linux-серверов для организации корпоративной сети<br />
2. Какое программное обеспечение должно быть установлено на сервере<br />
3. Куда обращаться за помощью и технической поддержкой</p>
<p>В этой главе содержится перечень программного обеспечения необходимого для инсталляции серверов различного назначения и инструкции по использованию этой книги.</p>
<p><strong>Пример использования Linux-серверов для организации корпоративной сети</strong></p>
<p>У читателя может возникнуть вполне естественный вопрос о том, где конкретно могут использовать-<br />
ся сервера с операционной системой Linux, и как они должны быть интегрированы с локальной сетью пред-<br />
приятия и Интернет.<br />
В рассматриваемом примере корпоративная сеть содержит:<br />
• шлюз, предназначенный для организации доступа пользователей локальной сети к различным ре-<br />
сурсам в Интернет и защиты локальной сети от несанкционированного доступа из вне;<br />
• первичный и вторичный, имеющий независимое подключение к Интернет, DNS-сервера;<br />
• два VPN-сервера, предназначенные для объединения в единую сеть локальных сетей удаленных<br />
офисов с использованием сетей общего пользования (Интернет);<br />
• сервер, предназначенный для организации службы электронной почты;<br />
• сервер баз данных;<br />
• FTP-сервер;<br />
• Web-сервер;<br />
• расположенный внутри локальной сети Samba-сервер, предназначенный для организации доступа к<br />
общим сетевым ресурсам файлам и принтерам.<br />
Внутри локальной сети также могут находиться дополнительные сервера, используемые для органи-<br />
зации служб, функционирующих в пределах локальной сети.<br />
Многие могут заметить, что использование десяти серверов для организации корпоративной сети яв-<br />
ляется очень расточительным и практически не реализуемым по экономическим соображениям для боль-<br />
шинства организаций. Скорее всего, это действительно так. Для небольшой компании, имеющей всего лишь<br />
один офис, отпадает необходимость в использовании двух VPN-серверов, двух DNS-серверов (поддержка<br />
DNS может быть предоставлена поставщиком услуги доступа в Интернет), четырех серверов, предназначен-<br />
ных для организации службы электронной почты, сервера баз данных, FTP и Web-сервера. Для организации<br />
интернет-представительства компании в этом случае могут использоваться услуги хостинговых компаний.<br />
При этом затраты на оплату услуг хостинга, в зависимости от объема и качества предоставляемых услуг, со-<br />
ставят от нескольких сотен до нескольких тысяч рублей в месяц, а в корпоративной сети будет только два<br />
сервера – шлюз и Samba-сервер. Дальнейшее сокращение числа используемых серверов – за счет установки<br />
программного обеспечения для шлюза и Samba на одном сервере – вряд ли целесообразно, т. к., в случае по-<br />
лучения злоумышленником доступа к единственному серверу с соответствующими полномочиями, он полу-<br />
чит доступ к информации, находящейся в домашних каталогах пользователей локальной сети и обслужи-<br />
ваемых сервером Samba.<br />
Совместная установка других служб на одном сервере также возможна и позволит существенно со-<br />
кратить затраты на организацию корпоративной сети. Решение о совместной установке служб на одном сер-<br />
вере должно приниматься путем установления разумного компромисса между требованиями по обеспече-<br />
нию безопасности и затратами на приобретение и обслуживание оборудования, необходимого для организа-<br />
ции корпоративной сети.<br />
Хотелось бы отметить, что рассматриваемый пример носит иллюстративный характер, необходимый<br />
для понимания дальнейшего материала. Более подробно с вопросами, касающимися организации корпора-<br />
тивной сети, вы можете ознакомиться на соответствующих Web-ресурсах и в специальной литературе.</p>
<p><strong>Какое программное обеспечение должно быть установлено на сервере</strong></p>
<p>Любой из рассматриваемых в приведенном примере серверов может быть реализован с использова-<br />
нием операционной системы Linux и соответствующего программного обеспечения. Примерный перечень<br />
программного обеспечения, для каждого из рассматриваемых типов серверов, представлен в таблице 1.1. В<br />
таблице обозначено:<br />
Да – установка программного обеспечения обязательна.<br />
Опц.- установка программного обеспечения возможна для реализации дополнительных возможно-<br />
стей.<br />
Да1 – на всех серверах, кроме серверов, предназначенных для организации службы DNS и шлюза, ре-<br />
комендуется установка «облегченного варианта» демона named–lwresd, также входящего в комплект по-<br />
ставки ISC BIND.<br />
Да2 – установка почтового транспортного агента необходима на всех серверах. На серверах, не пред-<br />
назначенных для приема входящих сообщений, возможно использование Sendmail, настроенного только для<br />
отправки почтовых сообщений на центральный почтовый концентратор.<br />
Да3 – необходимо установить только один из рассматриваемых в книге FTP-серверов.<br />
Да4 – установка FTP-сервера необходима только, если протокол FTP используется при администриро-<br />
вании сервера.</p>
<p><strong>Куда обращаться за помощью и технической поддержкой</strong></p>
<p>Вполне возможно, что при установке программного обеспечения вы не сможете в точности реализо-<br />
вать инструкции, описанные в этой книге из-за ошибок, которые могут возникнуть на любой стадии инстал-<br />
ляции и настройки программного обеспечения. Это может быть обусловлено тем, что приведенные инст-<br />
рукции протестированы только для рассматриваемой в книге версии дистрибутива ядра, соответствующего<br />
ему патча Grsecurity и программного обеспечения. В случае возникновения подобной ситуации авторы на-<br />
стоятельно рекомендуют изучить документацию на компоненты инсталлируемого программного обеспече-<br />
ния, отличные от рассматриваемых в книге, особенности используемого дистрибутива (версию ядра, компи-<br />
лятора библиотек, структуры каталогов и т. п.) и разработать собственные инструкции по инсталляции, на-<br />
стройке и тестированию программного обеспечения. Большую помощь для не владеющих английским<br />
языком читателей в этом случае могут оказать русскоязычные ресурсы, например,<br />
http://www.opennet.ru, http://www.linuxdoc.ru, http://www.linux.org.ru,<br />
http://www.linux.ru, http://www.linuxportal.ru и другие ресурсы, которые могут быть най-<br />
дены с помощью поисковых систем.<br />
В случае неудачного применения на практике самостоятельно разработанной инструкции после под-<br />
робного изучения документации можно обратиться за получением помощи разработчиков устанавливаемого<br />
программного обеспечения через соответствующие списки рассылки. Обращению к разработчикам должно<br />
предшествовать подробное изучение правил, установленных для списков рассылки.<br />
В некоторых случаях очень полезные советы можно получить на различных форумах, посвященных<br />
обсуждению Linux и соответствующего программного обеспечения. Перед составлением сообщения нужно<br />
ознакомится с правилами, регламентирующими общение пользователей данного форума, и общими реко-<br />
мендациями по получению консультаций по технической поддержке, содержащихся в документе, разрабо-<br />
танном Эриком Раймондом (Eric Raymond) и Риком Мойном (Rick Moen) «Как правильно задавать вопросы»<br />
(http://ln.com.ua/~openxs/articles/smart-questions-ru.html).</p>
]]></content:encoded>
			<wfw:commentRss>http://www.compyuteri.ru/glava-1-vvedenie-ili/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Глава 2. Установка ASPLinux</title>
		<link>http://www.compyuteri.ru/glava-2-ustanovka-asplinux/</link>
		<comments>http://www.compyuteri.ru/glava-2-ustanovka-asplinux/#comments</comments>
		<pubDate>Sat, 13 Sep 2008 18:26:26 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[Часть 01. Инсталляция операционной системы Linux на сер]]></category>

		<category><![CDATA[ASPLinux]]></category>

		<category><![CDATA[rpm]]></category>

		<category><![CDATA[каталоги]]></category>

		<category><![CDATA[ОС]]></category>

		<category><![CDATA[пакеты]]></category>

		<category><![CDATA[программы]]></category>

		<category><![CDATA[серверы]]></category>

		<category><![CDATA[службы]]></category>

		<category><![CDATA[установка]]></category>

		<category><![CDATA[файлы]]></category>

		<guid isPermaLink="false">http://www.compyuteri.ru/?p=83</guid>
		<description><![CDATA[В этой главе:
1. Что нужно знать об аппаратных средствах вашего сервера
2. Взаимодействие с другими операционными системами
3. Первичная установка ASPLinux
4. Как использовать команды rpm
5. Запуск и установка служб
6. Программы, файлы и каталоги, которые должны быть удалены после первичной установки
7. Дополнительно устанавливаемые пакеты
В этой главе рассматривается первоначальная инсталляция операционной системы ASPLinux-7.3 на
серверной системе, т. е. создание «сервера-заготовки&#8221;, [...]]]></description>
			<content:encoded><![CDATA[<p>В этой главе:<br />
1. Что нужно знать об аппаратных средствах вашего сервера<br />
2. Взаимодействие с другими операционными системами<br />
3. Первичная установка ASPLinux<br />
4. Как использовать команды rpm<br />
5. Запуск и установка служб<br />
6. Программы, файлы и каталоги, которые должны быть удалены после первичной установки<br />
7. Дополнительно устанавливаемые пакеты</p>
<p>В этой главе рассматривается первоначальная инсталляция операционной системы ASPLinux-7.3 на<br />
серверной системе, т. е. создание «сервера-заготовки&#8221;, который путем установки и настройки соответст-<br />
вующих параметров и служб может быть трансформирован в безопасный и оптимизированный сервер про-<br />
извольного назначения.</p>
<p><strong>Что нужно знать об аппаратных средствах вашего сервера</strong></p>
<p>Залогом успешной установки операционной системы ASPLinux является хорошее знание аппаратных<br />
средств компьютера, на котором осуществляется установка. В процессе установки потребуется следующая<br />
информация:<br />
• тип процессора;<br />
• количество жестких дисков;<br />
• объем жестких дисков;<br />
• тип жестких дисков (например, IDE ATA/133 или SCSI);<br />
• объем оперативной памяти (например, 256 МБ);<br />
• имеется ли SCSI адаптер? Если да, то - производитель и модель;<br />
• имеется ли RAID массив? Если да, то - производитель и модель;<br />
• тип мыши (например, PS/2 Microsoft, Logitech), количество кнопок;<br />
• параметры настройки сети (IP-адрес, маска сети, IP-адрес шлюза, IP-адреса серверов DNS, имя до-<br />
мена, имя компьютера);<br />
• типы сетевых карт (производитель, модель и название чипсета).</p>
<p><strong>Взаимодействие с другими операционными системами</strong></p>
<p>ASPLinux может мирно сосуществовать на одном компьютере (и даже на одном физическом диске) с<br />
другими ОС — Windows 9х/МЕ, Windows NT/2000/ХР, Linux других дистрибутивов, FreeBSD, OpenBSD,<br />
QNX - и использоваться совместно с ними. Это достигается с помощью мультисистемных загрузчиков<br />
(LILO, GRUB, ASPLoader, Acronis OS Selector), обеспечивающих загрузку требуемой ОС. Подробное описа-<br />
ние их можно встретить в документации на эти программные продукты и ASPLinux. Вариант установки не-<br />
скольких операционных систем на одном компьютере является очень удобным и привлекательным для ра-<br />
бочей станции разработчика-исследователя, но не для серверных систем, к которым предъявляются жесткие<br />
требования по уровню безопасности. Если на компьютере совместно с ASPLinux установлена популярная<br />
операционная система MS Windows-98/МЕ, доступ к которой с помощью кнопки <Отмена> на форме ввода<br />
логина и пароля может получить кто угодно, общедоступными становятся и критические, с точки зрения<br />
обеспечения безопасности системы, файлы ASPLinux, например, с помощью программы ext2viewer. По-<br />
этому в дальнейшем будем предполагать, что ОС ASPLinux-7.3 является единственной ОС, установленной<br />
на сервере.</p>
<p><strong>Первичная установка ASPLinux</strong></p>
<p>Наиболее простым способом установки ASPLinux является установка с дистрибутивных компакт-<br />
дисков. При этом первоначальная загрузка операционной системы осуществляется с первого из них.<br />
Шаг 1<br />
Итак, вставьте первый инсталляционный диск в привод CD-ROM, перегрузите компьютер, установите<br />
в BIOS загрузку с CD-ROM и дождитесь появления формы, предлагающей выбрать язык установки. Выбе-<br />
рите язык &#8220;Russian&#8221;, форма отобразится на русском языке, после чего нажмите кнопку <Далее>. Если форма<br />
не появилась, перегрузите систему и во время запуска программы инсталляции нажмите клавишу <ESC>. На<br />
экране появится форма выбора видеорежима установки, с помощью которой выберите видеорежим, под-<br />
держиваемый вашей графической подсистемой.<br />
Шаг 2<br />
После нажатия кнопки <Далее>на экране отобразится форма выбора мыши. Выберете тип мыши и<br />
нажмите кнопку <Далее>. На экране появится форма выбора типа установки.<br />
Шаг 3<br />
Выберите выборочную установку и нажмите кнопку <Далее>. На экране отобразится форма выбора<br />
типа носителя, с которого будет осуществляться установка. Вы можете выбрать установку с &#8220;CDROM/<br />
образ CD-ROM на жестком диске&#8221; или &#8220;Установку сетевого ресурса (для опытных пользователей)&#8221;.<br />
Проигнорировав устрашающее предупреждение – &#8220;только для опытных пользователей&#8221; можно выбрать ус-<br />
тановку с сетевого ресурса. Это имеет смысл при инсталляции ASPLinux на большом числе компьютеров. В<br />
этом случае следует разместить rpm-пакеты, входящие в состав дистрибутива, в некотором каталоге на Web-<br />
или FTP-сервере локальной сети и указать его программе инсталляции. Вариант установки с сетевого ресур-<br />
са может быть использован для установки на компьютерах без привода CD-ROM. В этом случае первона-<br />
чальная загрузка осуществляется с загрузочной дискеты, процесс создания которой описан в документации<br />
по ASPLinux. Выбрав тип носителя, нажмите кнопку <Далее>. На экране отобразится форма выбора метода<br />
назначения дискового пространства.<br />
Шаг 4<br />
Выберите &#8220;Дополнительно». После этого на экране отобразится форма интерфейса<br />
&#8220;ASPDiskmanager&#8221;, с помощью которого можно осуществить разбиение жесткого диска. Данная процедура<br />
позволяет создавать на жестком диске изолированные логические разделы, которые ведут себя как отдель-<br />
ные диски. Создание дисковых разделов, пожалуй, наиболее критичный момент инсталляции любой Linux-<br />
системы.<br />
Создание нескольких логических разделов дает следующие преимущества:<br />
• защита против атак отказа в обслуживании (DОS);<br />
• защита против программ SUID;<br />
• ускоренная загрузка;<br />
• простота в процессе резервирования и обновлений;<br />
• возможность установки индивидуальных опций монтирования каждой файловой системы;<br />
• возможность избежать неограниченного роста каждой из файловых систем;<br />
• увеличение производительности некоторых программ.<br />
В качестве примера рассмотрим разбиение жесткого диска объемом 20 ГБайт на компьютере с памя-<br />
тью 256 MБайт.<br />
/boot 10 MБайт Здесь хранятся образы ядер и другие файлы, необходимые для загрузки систе-<br />
мы.<br />
<Swap> 512 MБайт Раздел виртуальной памяти для увеличения скорости обмена между виртуаль-<br />
ной и оперативной памятью. Рекомендуется размещать непосредственно за раз-<br />
делом /boot в начальной области диска.<br />
/ 512 МБайт Корневой раздел.<br />
/usr 1024 МБайт В этом разделе устанавливаются пользовательские программы.<br />
/home 12800 МБайт В этом разделе находятся пользовательские каталоги.<br />
/var 512 МБайт В этом разделе находятся файлы регистрации (системных журналов).<br />
/tmp 329 МБайт В этом разделе находятся временные файлы.<br />
/chroot 512 МБайт В этом разделе устанавливаются программы, работающие в окружении chroot-jail.<br />
(Web-сервер, DNS-сервер и т. п.)<br />
/var/lib 2000 МБайт В этом разделе размещаются базы данных.<br />
Предложенный вариант разбиения жесткого диска не является обязательным и единственно возмож-<br />
ным, а служит только примером. Вам самостоятельно следует определить размеры каждого из разделов дис-<br />
ка, исходя из прогнозируемого объема соответствующих файлов. При этом следует учесть, что:<br />
• в разделе /var/lib находятся файлы баз данных. Если вы предполагаете использовать этот раздел<br />
для базы данных прокси-сервера Squid, то предлагаемый размер раздела 2000 Мбайт является достаточным.<br />
Если на сервере предполагается установка других баз данных, то размер раздела может быть, соответствен-<br />
но, увеличен или уменьшен;<br />
• раздел /chroot может использоваться для инсталляции DNS-сервера, Web-сервера Apache и других<br />
программ, выполнение которых желательно в защищенной среде chroot;<br />
• размещение /tmp и /home на отдельных разделах может быть полезно, если пользователи имеют<br />
доступ к командному интерпретатору (защита против программ SUID). Это разбиение также препятствует<br />
пользователям переполнять другие файловые системы;<br />
• раздел <Swap> отводится под виртуальную память системы, используемую для размещения команд<br />
и данных, если запущенные приложения, например, в период пиковых нагрузок требуют больше оператив-<br />
ной памяти, чем доступно на компьютере. Для несильно загруженных серверов с небольшим объемом опе-<br />
ративной памяти рекомендуется устанавливать размер раздела <Swap> в два раза больше объема оператив-<br />
ной памяти.<br />
Взгляните на пример разбиения диска файл-сервера на «старом добром 486-м компьютере» с диском<br />
640 МБайт и оперативной памятью 32 МБайт:<br />
/boot – 10 MБайт<br />
<Swap> – 64 MБайт<br />
/ – 40 МБайт<br />
/usr – 200 МБайт<br />
/home – 266 МБайт<br />
/var – 35 МБайт<br />
/tmp – 35 МБайт<br />
Компиляция программ при таком объеме жесткого диска невозможна, поэтому следует устанавливать<br />
rpm-пакеты или компилировать программы на другой системе.<br />
RAID-массивы, то есть средства объединения нескольких физических или логических дисков, служат,<br />
с одной стороны, для ускорения дисковых операций, с другой – для повышения сохранности данных. В Linux<br />
поддерживаются программные RAID-массивы трех уровней:<br />
• 0 – объединение двух (и более) разделов в один, что дает повышение производительности при дис-<br />
ковых операциях за счет распараллеливания чтения/записи;<br />
• 1 – дублирование содержания одного раздела другим (т.н. зеркалирование – mirroring), обеспечи-<br />
вающее повышение надежности хранения данных за счет 100-процентной избыточности;<br />
• 5 – независимое использование нескольких разделов, по которым распределяются данные и их кон-<br />
трольные суммы. При этом в случае отказа какого-либо из разделов его содержание можно восстановить.<br />
Одновременно, за счет распараллеливания операций чтения/записи на разные разделы, достигается некото-<br />
рый выигрыш в производительности.<br />
Обычно это осуществляется с помощью аппаратных RAID-контроллеров. Однако Linux, и ASPLinux-7.3 в<br />
частности, поддерживают программные средства создания RAID-массивов, а &#8220;ASPDiskmanager&#8221; предостав-<br />
ляет простой способ их организации.<br />
Разделы для организации программных RAID-массивов имеют собственный тип файловой системы<br />
(autodetect raid). Очевидно, что для массивов уровней 0 и 1 их число должно быть четным (не менее двух), и<br />
объем массива в первом случае будет равен их сумме, во втором – объему меньшего из них. Для массива<br />
уровня 5 требуется не менее трех разделов, его объем равен произведению минимального раздела на их чис-<br />
ло минус объем минимального раздела.<br />
Теоретически разделы для RAID-массива могут создаваться как на разных физических дисках, так и<br />
на одном. Однако ясно, что в последнем случае надежность хранения резко снижается (по сравнению с пер-<br />
вым случаем), а производительность уменьшается, вне зависимости от уровня массива.<br />
Установка на RAID-массив в ASPLinux возможна только при выборочном способе установки и мето-<br />
де назначения дискового пространства &#8220;Дополнительно&#8221;. В этом случае загружается панель ASPDiskManager,<br />
имеющая, как уже говорилось, кнопку <RAID>. Кнопка эта не активизирована: Для ее активации сле-<br />
дует создать минимум два раздела с файловой системой raid autodetect.<br />
Следует отметить, что понятие файловой системы raid autodetect имеет несколько другой смысл, чем<br />
понятие обычных файловых систем. Последние могут быть созданы в дальнейшем внутри нее. Не рекомен-<br />
дуется размещать на RAID-массиве корневую файловую систему и раздел /boot. И потому перед создани-<br />
ем разделов для RAID следует предварительно создать минимум два раздела необходимого объема с файло-<br />
вой системой с точкой монтирования / и /boot.<br />
Конфигурирование RAID-массива осуществляется нажатием кнопки <RAID>, активизируемой после<br />
создания второго из RAID-разделов. Нажатие ее приводит к появлению формы &#8220;RAID&#8221;. В верхнем правом<br />
ее углу расположены небольшие кнопки для создания RAID-устройства (слева) и его удаления (справа). На-<br />
жатие первой позволяет выбрать имя RAID-устройства (имеющего вид md0, md1 и т. д.) из появившегося<br />
списка. После создания устройства в списке разделов ниже следует пометить те из них, которые будут<br />
включены в его состав (например, hda5 и hda6). Далее в выпадающих списках назначаются:<br />
• уровень RAID (0, 1 или 5);<br />
• тип раздела (Ext2, Reiser или Swap);<br />
• точка его монтирования (/usr, /home и т. д.).<br />
Если в состав устройства включено менее двух разделов (вида hda#), попытка продолжения приведет<br />
к выдаче сообщения об ошибке и возврату в панель &#8220;RAID&#8221;. То же произойдет и при включении двух разде-<br />
лов, и выборе RAID уровня 5.<br />
Можно создать (при достаточном количестве разделов) несколько устройств RAID разных уровней, с<br />
разными файловыми системами и точками монтирования. Например, при наличии двух физических дисков<br />
целесообразно создать устройство md0 уровня 0 для подкачки (Swap), что повысит эффективность свопинга,<br />
и устройство md1 уровня 1 с файловой системой Ext2fs и точкой монтирования /home для повышения со-<br />
хранности пользовательских данных. Кроме того, можно дополнительно создавать RAID-устройства для от-<br />
дельных разделов /usr или /usr/local.<br />
По завершении конфигурирования RAID-массива установка ASPLinux продолжается обычным обра-<br />
зом. И после ее окончания пользователь видит единый раздел, соответствующий каждому из созданных<br />
RAID-устройств, которые присутствуют в каталоге /dev в виде /dev/md0, /dev/md1 и т. д.<br />
После окончания разбиения диска нажмите кнопку <Далее> на форме ASPDiskManager. На экране<br />
отобразится форма для выбора устанавливаемых пакетов.<br />
Шаг 5<br />
Выбору пакетов, то есть базовых компонентов, утилит и приложений, следует уделить особое внима-<br />
ние. Linux – мощная операционная система, которая устанавливает много служб по умолчанию. Многие из<br />
них не нужны и содержат потенциальный риск для безопасности. Минимально необходимый набор пакетов<br />
авторы предлагают выбрать следующим образом.<br />
Выберите установку &#8220;Сервер&#8221;, включите флажок &#8220;Выборочно&#8221;, нажмите кнопку <Далее> и дождитесь<br />
появления формы выбора отдельных пакетов. Удалите все наборы пакетов, кроме базового, и нажмите<br />
кнопку <Далее>. Альтернативным вариантом выбора пакетов может быть нажатие кнопки <Загрузить спи-<br />
сок> на форме выбора пакетов для установки, при этом список пакетов должен находиться на дискете,<br />
вставленной в дисковод. В результате выполнения этих операций будут выбраны следующие пакеты:<br />
anacron-2.3-17 MAKEDEV-3.3-4.1asp<br />
apmd-3.0.2-10 man-1.5j-6.asp<br />
aspldr-2.0-4 man-pages-1.50-1.asp<br />
asplinux-logos-1.1.3-4asp man-pages-ru-asp-1.2-2asp<br />
asplinux-release-7.3-1.asp mingetty-1.00-1<br />
at-3.1.8-23 mkbootdisk-1.4.3-1.asp<br />
authconfig-4.2.8-4.asp mkinitrd-3.3.10-5.asp<br />
basesystem-7.0-2.asp mktemp-1.5-14<br />
bash-2.05a-13.asp modutils-2.4.16-1.asp<br />
bclsecurity-0.4-1.asp mount-2.11n-12.7.3asp<br />
bdflush-1.5-17 mouseconfig-4.25-1<br />
bzip2-1.0.2-2 mt-st-0.7-3<br />
bzip2-libs-1.0.2-2 ncurses-5.2-26<br />
chkconfig-1.3.5-3 netconfig-0.8.11-7.0.asp<br />
console-tools-19990829-40.2asp net-tools-1.60-4<br />
cpio-2.4.2-26, newt-0.50.35-1<br />
cracklib-2.7-15 ntsysv-1.3.5-3<br />
cracklib-dicts-2.7-15 openldap-2.0.23-4<br />
crontabs-1.10-1 openssl-0.9.6b-24asp<br />
cyrus-sasl-1.5.24-25 pam_passwdqc-0.5-1.asp<br />
cyrus-sasl-md5-1.5.24-25 pam-0.75-32.2asp<br />
cyrus-sasl-plain-1.5.24-25 passwd-0.67-1<br />
db1-1.85-8 pchains-1.3.10-13<br />
db2-2.4.14-10 pciutils-2.1.9-2<br />
db3-3.3.11-6 pcre-3.9-2<br />
dev-3.3-4.1asp popt-1.6.4-7x.18.2asp<br />
dhcpcd-1.3.22pl1-7 procmail-3.22-5<br />
diffutils-2.7.2-5 procps-2.0.7-12<br />
dosfstools-2.8-1 psmisc-20.2-3.73<br />
e2fsprogs-1.27-3 pump-0.8.11-7.0.asp<br />
eject-2.0.12-4 pwdb-0.61.2-2<br />
ed-0.2-25 pyiconv-0.1.2-1.asp<br />
file-3.37-5 python-1.5.2-38.3asp<br />
filesystem-2.1.6-2 quota-3.03-1<br />
fileutils-4.1-10.asp raidtools-1.00.2-1.3<br />
findutils-4.1.7-4.asp readline-4.2a-4<br />
gawk-3.1.0-4.1.asp reiserfs-utils-3.x.0j-3<br />
gdbm-1.8.0-14 rootfiles-7.2-1<br />
glib-1.2.10-5 rpm-4.0.4-7x.18.2asp<br />
glib2-2.0.1-2 rpm-python-4.0.4-7x.18.2asp<br />
glibc-2.2.5-37asp sed-3.02-11.asp<br />
glibc-common-2.2.5-37asp sendmail-8.11.6-15.asp<br />
gmp-4.0.1-3 setserial-2.17-5<br />
gpm-1.19.6-2.asp setup-2.5.12-1<br />
grep-2.5.1-1 setuptool-1.8-2<br />
groff-1.17.2-12 sh-0.3.7-2<br />
grub-0.91-4.1.asp shadow-utils-20000902-7.asp<br />
gzip-1.3.3-1.asp sh-utils-2.0.11-14.asp<br />
hdparm-5.1-1.asp slang-1.4.5-2<br />
hesiod-3.0.2-18 slocate-2.6-1<br />
hotplug-2002_04_01-3 specspo-7.3-1asp<br />
hwdata-0.14-1.asp sxid-4.0.1-1.asp<br />
indexhtml-7.2-1.asp sysklogd-1.4.1-8<br />
info-4.1-1 syslinux-1.52-2<br />
initscripts-6.67-3asp SysVinit-2.84-2<br />
iproute-2.4.7-3.asp tar-1.13.25-4<br />
iptables-1.2.6a-1.asp tcsh-6.10-6<br />
iputils-20020529-1.asp termcap-11.0.1-10<br />
kbdconfig-1.9.15-2 textutils-2.0.21-1<br />
kernel-2.4.18-5asp time-1.7-16<br />
krb5-libs-1.2.4-1.asp timeconfig-3.2.7-1.asp<br />
ksymoops-2.4.4-1 tmpwatch-2.8.3-1<br />
kudzu-0.99.52-1.4asp usbutils-0.9-5<br />
less-358-24 usermode-1.53-2.asp<br />
libacl-2.0.9-1.asp utempter-0.5.2-6<br />
libattr-2.0.7-1.asp util-linux-2.11n-12.7.3asp<br />
libstdc++-2.96-112asp vconfig-1.5-2.asp<br />
libtermcap-2.0.8-28 vim-common-6.1-2.asp<br />
libuser-0.50.2-1 vim-minimal-6.1-2.asp<br />
lilo-21.7.3-2.asp, vixie-cron-3.0.1-64<br />
logcheck-1.1.1-7.asp which-2.13-3<br />
logrotate-3.6.4-1 words-2-18<br />
lokkit-0.50-8 xfsprogs-2.0.3-1.asp<br />
losetup-2.11n-12.7.3asp yum-0.9.1a-1.7.3asp<br />
mailcap-2.1.9-2 yum-headers-7.3-1asp<br />
mailx-8.1.1-22 zlib-1.1.3-25.7<br />
После выбора (тем или иным способом) перечня устанавливаемых пакетов нажмите кнопку <Далее>.<br />
Если установка пакетов осуществлялся путем выбора базового набора и удаления всех остальных пакетов –<br />
на экране отобразится форма, предлагающая установить ряд пакетов для удовлетворения зависимостей. Раз-<br />
решите установить все пакеты.<br />
Шаг 6<br />
На экране появится форма, где указаны: количество выбранных для установки пакетов, их суммарный<br />
объем, группа приложений, опции разбиения диска, источник установки пакетов, метод установки, тип мы-<br />
ши - то есть все параметры, определенные на предшествующих этапах. Если выбранные параметры соответ-<br />
ствуют приведенным выше рекомендациям, нажмите кнопку <Установить>. В противном случае вы можете<br />
вернуться назад (кнопка <Назад>) и изменить параметры установки. По окончании установки появится<br />
форма с сообщением, что все пакеты нормально установлены. Если появятся сообщения, что некоторые па-<br />
кеты установлены с ошибками, следует выяснить причину неправильной установки (плохой инсталляцион-<br />
ный компакт диск, привод CD-ROM, неразрешенные зависимости и т. п.) и провести установку заново.<br />
ЗАМЕЧАНИЕ В программе установки ASPLinux доступна вторая – текстовая – виртуальная консоль.<br />
Переключиться в нее можно нажатием комбинации Alt+Ctrl+F2. В ней загружена командная оболочка bash<br />
(правда, с несколько ограниченными возможностями). Наличие этой консоли может оказаться полезным при<br />
восстановлении системы, когда загрузочная дискета отсутствует, и единственной возможностью загрузить<br />
систему является загрузка с первого инсталляционного диска. Можно выполнять разнообразные действия в<br />
командной строке (например, для восстановления системы при сбоях). Обратное переключение в графиче-<br />
скую консоль программы установки осуществляется комбинацией клавиш Alt+F7.<br />
Шаг 7<br />
По завершении копирования пакетов наступает следующий этап - выбор начального загрузчика, то<br />
есть программы, управляющей запуском операционных систем. Инсталляционная программа предлагает че-<br />
тыре варианта:<br />
• ASPLoader (по умолчанию);<br />
• LILO;<br />
• GRUB;<br />
• не устанавливать загрузчик.<br />
Вам следует выбрать установку загрузчика GRUB или LILO в MBR (главную загрузочную запись) и<br />
нажать кнопку <Далее>.<br />
Шаг 8<br />
Настройка сети осуществляется в два этапа. На первом выбираются сетевые карты. Широко распро-<br />
страненные модели сетевых карт будут, с большой степенью вероятности, определены автоматически. Если<br />
имеющиеся у вас карты не определены программой установки, выберите драйвер сетевой карты из раскры-<br />
вающегося списка, и укажите необходимые параметры (IO порт и IRQ) и нажмите кнопку <Добавить>. Эти<br />
операции должны быть выполнены для всех сетевых карт. По окончании выбора сетевых карт нажмите<br />
кнопку <Далее>.<br />
На втором этапе осуществляется, собственно, настройка сети. Для каждой из сетевых карт, выбран-<br />
ных на предыдущем этапе, включите опцию «Активизировать при загрузке» и заполните следующие поля:<br />
&#8220;IP-адрес&#8221;, &#8220;Маска сети&#8221;, &#8220;Адрес подсети&#8221;, &#8220;ШВ адрес&#8221;, &#8220;Имя хоста&#8221;, &#8220;Шлюз&#8221;, &#8220;Первичный DNS&#8221;, &#8220;Вторич-<br />
ный DNS&#8221;. Эти сведения можно получить у администратора вашей локальной сети (если вы таковым не яв-<br />
ляетесь). По окончании установки параметров нажмите кнопку <Далее>.<br />
Шаг 9<br />
Локализация системы осуществляется путем:<br />
• выбора модели клавиатуры (например, PC 105-key для стандартных ныне клавиатур с Windows-<br />
клавишами);<br />
• определения языка, страны и набора символов (K0I8-R);<br />
• указания необходимых раскладок клавиатуры (English и Russian, например);<br />
• назначения переключателя с латиницы на кириллицу (<Ctrl>+<ShifI>).<br />
• По окончании выбора параметров локализации нажмите кнопку <Далее>.<br />
Шаг 10<br />
Установите (проверьте) дату и время. Эти параметры, как правило, определяются автоматически на<br />
основании показаний системных часов. Если последние установлены на время по Гринвичу (GMT), выклю-<br />
чите опцию &#8220;Часы CMOS установлены в местное время&#8221;. По окончании установки нажмите кнопку <Да-<br />
лее>.<br />
Шаг 11<br />
Установите пароль суперпользователя root и нажмите кнопку <Далее>. После этого должно появиться со-<br />
общение об успешном завершении установки системы ASPLinux и предложение перезагрузить компьютер.<br />
Если в процессе инсталляции создавалась загрузочная дискета, ее следует удалить из дисковода. Инсталля-<br />
ционный компакт диск извлекается из привода автоматически. На этом первичную установку ASPLinux<br />
можно считать законченной.</p>
<p><strong>Как использовать команды rpm</strong></p>
<p>Этот раздел содержит краткий обзор использования команды rpm для установки, удаления, обновле-<br />
ния и получения информации о rpm-пакетах, установленных в вашей системе. Вы должны ознакомиться с<br />
основными приемами использования команды rpm, потому что в дальнейшем она будет часто использо-<br />
ваться. Например, в этой главе – при удалении лишних и инсталляции дополнительных пакетов.<br />
ЗАМЕЧАНИЕ Информация об особенностях использования любой команды в Linux может быть полу-<br />
чена с помощью соответствующей страницы руководства (man-страницы). Например, для команды rpm -<br />
man rpm. В ASPLinux многие man-страницы переведены на русский язык.<br />
Установка пакета rpm:<br />
Для установки rpm-пакета, используйте команду:<br />
[root@drwalbr tmp]# rpm -ihv mc-4.5.55-5.1asp.i386.rpm<br />
Подготовка&#8230; #######################################<br />
[100%]<br />
1:mc #######################################<br />
[100%]<br />
Обратите внимание, что в команде используется имя файла, в котором находится пакет с именем mc-<br />
4.5.55-5.1asp.i386.rpm. Опция i предписывает установить пакет, опция h- отображать в текстовом<br />
режиме с помощью последовательности символов. &#8220;#&#8221; - степень завершения установки пакета.<br />
Для удаления rpm-пакета, используйте команду:<br />
[root@drwalbr tmp]# rpm -e mc<br />
Обратите внимание, что в команде используется только название пакета mc. Опция e предписывает<br />
удалить пакет.<br />
Для обновления rpm-пакета (удаления старой версии и установки новой), используйте команду:<br />
[root@drwalbr tmp]# rpm -Uhv mc-4.5.55-5.1asp.i386.rpm<br />
Подготовка&#8230; #######################################<br />
[100%]<br />
1:mc #######################################<br />
[100%]<br />
При установке rpm-пакета с помощью команды rpm пред началом установки проверяется, не будет ли<br />
устанавливаемый пакет конфликтовать с другими пакетами и настройками системы. Использование опции<br />
force позволяет обойти это ограничение.<br />
[root@drwalbr tmp]# rpm -Uhv –force mc-4.5.55-5.1asp.i386.rpm<br />
Подготовка&#8230; #######################################<br />
[100%]<br />
1:mc #######################################<br />
[100%]<br />
По умолчанию, команда rpm проверяет, установлены ли rpm-пакеты, необходимые для установки<br />
данного пакета. Если некоторые из них отсутствуют, rpm сообщит об этом. Это сделано специально, чтобы<br />
избежать проблем и убедиться, что устанавливаемое программное обеспечение будет правильно работать. В<br />
некоторых случаях бывает необходимо преодолеть это ограничение, что достигается применением опции<br />
nodeps. Можно не заботиться о зависимости и использовать опцию для пропуска ее проверки при установ-<br />
ке программ:<br />
[root@drwalbr tmp]# rpm -Uhv –nodeps mc-4.5.55-5.1asp.i386.rpm<br />
Подготовка&#8230; #######################################<br />
[100%]<br />
1:mc #######################################<br />
[100%]<br />
Для определения версии пакета используйте опцию q:<br />
[root@drwalbr tmp]# rpm -q mc<br />
mc-4.5.55-5.1asp<br />
Для отображения подробной информации об установленном rpm-пакете (названия, версии и краткого<br />
описания установленной программы) используйте опции i и q:<br />
[root@drwalbr tmp]# rpm -qi mc<br />
Name : mc Relocations: (not relocateable)<br />
Version : 4.5.55 Vendor: ASPLinux<br />
Release : 5.1asp Build Date: Срд 17 Июл 2002<br />
19:37:19<br />
Install date: Чтв 26 Дек 2002 16:19:10 Build Host: arena.asplinux.ru<br />
Group : Системное окружение/Оболочки Source RPM: mc-4.5.55-<br />
5.1asp.src.rpm<br />
Size : 3822241 License: GPL<br />
Packager : ASPLinux Team
<packages@asp-linux.com>
URL : http://www.gnome.org/mc/<br />
Summary : Файловый менеджер и визуальная оболочка с дружественным ин-<br />
терфейсом.<br />
Description :<br />
Midnight Commander - это визуальная оболочка и файловый менеджер<br />
со многими дополнительными возможностями. Это приложение<br />
для текстового режима с поддержкой мыши (при запущенном GPM).<br />
Основные возможности Midnight Commander - это поддержка FTP,<br />
просмотр файлов формата TAR, архивов файлов, файлов RPM<br />
Для получения списка файлов, входящих в rpm-пакет, наберите:<br />
[root@drwalbr tmp]# rpm -ql mc<br />
/etc/profile.d/mc.csh<br />
/etc/profile.d/mc.sh<br />
/usr/bin/mc<br />
&#8230;<br />
/usr/share/man/man1/mc.1.gz<br />
/usr/share/man/man1/mcedit.1.gz<br />
Для определения принадлежности некоторого файла к пакету используйте опции q и f:<br />
[root@drwalbr tmp]# rpm -qf /usr/bin/mc<br />
mc-4.5.55-5.1asp<br />
Для проверки подлинности и целостности пакета перед его установкой используйте команды:<br />
[root@drwalbr tmp]# rpm &#8211;checksig mc-4.5.55-5.1asp.i386.rpm<br />
и<br />
[root@drwalbr /]# rpm &#8211;checksig –nogpg mc-4.5.55-5.1asp.i386.rpm</p>
<p><strong>Запуск и установка служб</strong></p>
<p>Вам придется неоднократно запускать и останавливать различные службы в процессе настройки и ус-<br />
тановки сервера. Программа init отвечает за запуск служб, которые должны работать после загрузки сис-<br />
темы. Каждая из служб имеет собственный файл сценария, находящийся в каталоге /etc/init.d, автома-<br />
тически запускающий, останавливающий, перезапускающий службу при передаче ему таких параметров,<br />
как start, stop и restart. Следующие команды иллюстрируют процесс управления службой на при-<br />
мере Web-сервера.<br />
Для остановки службы httpd наберите:<br />
[root@drwalbr /]# /etc/init.d/httpd stop<br />
Останавливается httpd: [OK]<br />
Для запуска службы httpd:<br />
[root@drwalbr /]# /etc/init.d/httpd start<br />
Запускается httpd: [OK]<br />
Для перезапуска службы httpd:<br />
[root@drwalbr /]# /etc/init.d/httpd restart<br />
Останавливается httpd: [OK]<br />
Запускается httpd: [OK]</p>
<p><strong>Программы, файлы и каталоги, которые должны быть удалены после первичной установки</strong></p>
<p>Некоторые программы после окончания первичной установки, в целях улучшения безопасности,<br />
должны быть удалены вручную. Ниже описан процесс удаления и приведены краткие пояснения необходи-<br />
мости выполнения этих шагов.<br />
Пакет anacron<br />
Пакет anacron является аналогом планировщика команд cron, который адаптирован для работы на<br />
непрерывно функционирующих системах. В серверной системе, которая должна работать 24 часа в сутки,<br />
нет необходимости в его присутствии. Для удаления пакета выполните:<br />
[root@drwalbr /]# /etc/init.d/anacron stop<br />
[root@drwalbr /]# rpm -e anacron<br />
[root@drwalbr /]# rm -rf /var/spool/anacron/<br />
Пакет apmd<br />
Пакет apmd, содержащий утилиты Advanced Power Management Daemon, используется на портатив-<br />
ных компьютерах для отслеживания состояния батарей. Для удаления пакета выполните:<br />
[root@drwalbr /]# /etc/init.d/apmd stop<br />
[root@drwalbr /]# rpm -e apmd<br />
Пакет at<br />
Пакет at содержит утилиты, позволяющие исключать службы из автозапуска. Работает не очень на-<br />
дежно. Для удаления пакета выполните:<br />
[root@drwalbr /]# /etc/init.d/atd stop<br />
[root@drwalbr /]# rpm -e at<br />
Пакет dhcpcd<br />
Пакет dhcpcd содержит протокол, который позволяет системе получать информацию о собственной<br />
сетевой конфигурации от DHCP-сервера. Если вы собираетесь использовать DHCP в вашей сети, рекомен-<br />
дуем установить DHCP-клиента, включенного в пакет pump. Для удаления пакета выполните:<br />
[root@drwalbr /]# rpm -e dhcpcd<br />
Пакет eject<br />
Пакет eject содержит программу, которая позволяет пользователю извлекать сменные носители<br />
(такие, как CD-ROM, гибкие диски, lomega Jaz или Zip-диски). Как правило, эта программа нужна только<br />
при осуществлении копирования файлов на ленту. Для удаления пакета наберите:<br />
[root@drwalbr /]# rpm -e eject<br />
Пакет hotplug<br />
Пакет hotplug содержит приложение для загрузки модулей USB-устройств. Такие устройства на<br />
сервере не используются. Для удаления пакета выполните:<br />
[root@drwalbr /]# rpm -e hotplug<br />
Пакет lokkit<br />
Пакет lokkit содержит приложение для конфигурации системы сетевой защиты, ориентированной<br />
на рабочую станцию для среднего пользователя (удаленный доступа к сети и модемное соединение), и не<br />
предназначен для конфигурирования системы сетевой защиты сервера. Для настройки сетевой защиты авто-<br />
ры рекомендуют использовать GIPTables. Для удаления пакета выполните:<br />
[root@drwalbr /]# rpm -e lokkit<br />
Пакет ipchains<br />
Пакет ipchains содержит утилиту, используемую с ядром Linux версии 2.2 для управления воз-<br />
можностями фильтрации пакетов. Существует новый и более мощный инструмент, известный как IPTables.<br />
Именно его мы будем использовать позже для установки системы сетевой защиты на сервере. Для<br />
удаления пакета выполните:<br />
[root@drwalbr /]# rpm -e ipchains<br />
Пакет ksymoops<br />
Пакет ksymoops содержит приложения, сообщающие об ошибках ядра. Этот пакет полезен для раз-<br />
работчиков, которые занимаются отладкой ядра, или для пользователей, которые хотят использовать сооб-<br />
щения об ошибках ядра. Тот же самый результат может быть достигнут с помощью команды dmesg. Для<br />
удаления пакета выполните:<br />
[root@drwalbr /]# rpm -e ksymoops<br />
Пакет kudzu<br />
Пакет kudzu содержит средства автоматической диагностики и конфигурирования устройств при за-<br />
грузке системы. На сервере, где конфигурация устройств практически постоянна, в наличии данного пакета<br />
нет никакой необходимости. Удалите его:<br />
[root@drwalbr /]# rpm -e kudzu<br />
Пакет mailcap<br />
Пакет mailcap используется программой Metamail для определения того, как должны быть вос-<br />
произведены мультимедийные файлы. Для удаления пакета выполните:<br />
[root@drwalbr /]# rpm -e mailcap<br />
Пакет pciutils<br />
Пакет pciutils содержит различные утилиты для того, чтобы сканировать и устанавливать PCI-<br />
устройства. Удалите пакет:<br />
[root@drwalbr /]# rpm -e pciutils<br />
Пакет raidtools<br />
Пакет raidtools включает средства, которые необходимы для установки и поддержки программ-<br />
ного обеспечения RAID-устройств. Этот пакет следует оставить только в случае, если предполагается ис-<br />
пользовать RAID. Для удаления пакета выполните:<br />
[root@drwalbr /]# rpm -e raidtools<br />
Пакет asplinux-logos<br />
Пакет asplinux-logos содержит графические файлы (иконки, рисунки, эмблемы) ASPLinux. Для<br />
удаления пакета выполните:<br />
[root@drwalbr /]# rpm -e asplinux-logos<br />
Пакет asplinux-release<br />
Пакет asplinux-release содержит файлы c версией дистрибутива ASPLinux. При удалении паке-<br />
та необходимо создать файлы /etc/asplinux-release и /etc/redhat-release, куда следует запи-<br />
сать произвольную строку, которая будет впоследствии отображаться при загрузке системы:<br />
[root@drwalbr /]# rpm -e &#8211;nodeps asplinux-release<br />
[root@drwalbr /]# echo You string > /etc/asplinux-release<br />
[root@drwalbr /]# cp /etc/asplinux-release /etc/redhat-release<br />
Пакет setserial<br />
Пакет setserial содержит системные утилиты для отображения и управления последовательным<br />
портом. Для удаления пакета выполните:<br />
[root@drwalbr /]# rpm -e setserial<br />
Пакет hdparm<br />
Пакет hdparm содержит утилиту для оптимизации настроек жестких дисков c IDE-контроллерами.<br />
Если у вас SCSI жесткие диски, этот пакет следует удалить. Выполните:<br />
[root@drwalbr /]# rpm -e hdparm<br />
Пакет mkinitrd<br />
Пакет mkinitrd необходим на системах с жесткими дисками SCSI или RAID. Если у вас установле-<br />
ны жесткие диски с IDE-контроллером, этот пакет следует удалить. Для удаления пакета выполните:<br />
[root@drwalbr /]# rpm -e &#8211;nodeps mkinitrd<br />
Пакеты kbdconfig, mouseconfig, timeconfig, netconfig, authconfig, ntsysv и<br />
setuptool<br />
Данные пакеты предназначены для установки языка и типа клавиатуры, типа мыши, заданного по<br />
умолчанию часового пояса, устройств Ethernet, NIS и паролей, многочисленные символьные ссылки в ката-<br />
логе /etc/rс.d и утилиту, которая позволяет в режиме текстового меню изменять эти настройки. Если ко-<br />
гда-нибудь потребуется изменить данные настройки, достаточно будет просто установить эти пакеты. Для<br />
удаления пакетов выполните:<br />
[root@drwalbr /]# rpm -e kbdconfig mouseconfig timeconfig netconfig authconfig<br />
ntsysv setuptool<br />
Пакет newt<br />
Пакет newt содержит библиотеку для текстовых интерфейсов, в том числе и для только что удален-<br />
ных конфигурационных утилит. Для удаления пакета выполните:<br />
[root@drwalbr /]# rpm -e newt<br />
Пакет lilo<br />
Пакет lilo содержит загрузчик системы – LILO. Если вы собираетесь его использовать, то не нужно уда-<br />
лять этот пакет. Авторы рекомендуют использовать GRUB. В этом случае можно удалить данный пакет:<br />
[root@drwalbr /]# rpm -e lilo<br />
Пакет asplrd<br />
Пакет asplrd содержит загрузчик системы ASPLoader. Если вы собираетесь использовать именно<br />
его, то не удаляйте этот пакет. В противном случае удалите данный пакет:<br />
[root@drwalbr /]# rpm -e aspldr<br />
[root@drwalbr /]# rm -f /etc/aspldr.conf<br />
Пакет reiserfs-utils<br />
Пакет reiserfs-utils содержит множество утилит для администрирования (создания, проверки,<br />
изменения и восстановления) файловой системы Reiserfs. В нашем варианте установки используются фай-<br />
ловые системы Ext2 или Ext3, поэтому можно удалить пакет:<br />
[root@drwalbr /]# rpm -e reiserfs-utils<br />
Пакет quota<br />
Пакет quota содержит средства для контроля и ограничения использования файловой системы дис-<br />
ка различными пользователями и группами. Эта программа должна быть установлена только на серверах,<br />
где в этом есть необходимость. В остальных случаях можно удалить пакет:<br />
[root@drwalbr /]# rpm -e quota<br />
Пакет indexhtml<br />
Пакет indexhtml содержит HTML-код и графику для начальной страницы, показываемую браузе-<br />
ром при использовании графического интерфейса инсталляции. Эти HTML-страницы содержат информа-<br />
цию о программном обеспечении ASPLinux. На самом деле, нет никакой надобности в этом пакете при ин-<br />
сталляции сервера и особенно в случае, когда графический интерфейс пользователя не доступен. Поэтому<br />
можно спокойно удалить этот пакет из системы. Для удаления пакета выполните:<br />
[root@drwalbr /]# rpm -e indexhtml<br />
Пакет usbutils<br />
Пакет usbutils содержит средства взаимодействия ОС с USB-устройствами, которые на сервере не<br />
используются. Для удаления пакета выполните:<br />
[root@drwalbr /]# rpm -e usbutils<br />
Пакет hwdata<br />
Пакет hwdata содержит данные о конфигурации USB-устройств, используемые, в основном,<br />
XFree86. Для удаления пакета выполните:<br />
[root@drwalbr /]# rpm -e hwdata<br />
Пакет hesiod<br />
Пакет hesiod – еще один пакет, который можно удалить после завершения конфигурации сервера.<br />
Программа использует существующие функциональные возможности DNS для обеспечения доступа к базам<br />
данных с редко изменяемой информацией. Для удаления пакета выполните:<br />
[root@drwalbr /]# rpm -e hesiod<br />
Пакет mt-st<br />
Пакет mt-st содержит средства управления накопителями на магнитной ленте. Для удаления пакета<br />
выполните:<br />
[root@drwalbr /]# rpm -e mt-st<br />
Пакеты man-pages и man-pages-ru-asp<br />
Данные пакеты содержат страницы руководства (man-страницы). Их место – на рабочей станции ад-<br />
министратора сервера. Для удаления пакетов выполните:<br />
[root@drwalbr /]# rpm -e man-pages<br />
[root@drwalbr /]# rpm -e man-pages-ru-asp<br />
Пакет sendmail<br />
Даже если вы не хотите использовать вашу систему в качестве почтового сервера, почтовый транс-<br />
портный агент (Mail Transport Agent) необходим для доставки сообщений, посылаемых пользователю root<br />
различными службами. Авторы не рекомендуют использовать sendmail из соображений безопасности. Вы<br />
должны удалить данный пакет и обратиться к той части книги, где описана установка и конфигурация аль-<br />
тернативного программного обеспечения – Exim или Qmail. Для удаления пакета выполните:<br />
[root@drwalbr /]# /etc/init.d/sendmail stop<br />
[root@drwalbr /]# rpm -e sendmail<br />
Пакет procmail<br />
Пакет procmail содержит программу обработки почты, используемую sendmail. Для удаления<br />
пакета выполните:<br />
[root@drwalbr /]# rpm -e procmail<br />
Пакет openldap<br />
Пакет openldap предназначен для обращения к базам данных, содержащих информацию об адресах,<br />
телефонах для пользователей сети и сервисов. Эта полезная программа устраивает не всех пользователей.<br />
Для удаления пакета выполните:<br />
[root@drwalbr /]# rpm -e &#8211;nodeps openldap<br />
Пакеты cyrus-sasl, cyrus-sasl-md5, cyrus-sasl-plain<br />
Данные пакеты содержат дополнительные средства идентификации для программы Cyrus, которая<br />
является электронной программой передачи сообщений, подобно Sendmail. Cyrus SASL в данном дистрибу-<br />
тиве используется совместно с Sendmail. Для удаления пакета выполните:<br />
[root@drwalbr /]# rpm -e &#8211;nodeps cyrus-sasl<br />
Пакет openssl<br />
Пакет openssl содержит средства шифрования, которые, как предполагают его разработчики, га-<br />
рантируют и обеспечивают сохранность и конфиденциальность информации, передаваемой по сетям общего<br />
пользования. Эта часть программного обеспечения - одна из самых важных, с точки зрения обеспечения<br />
безопасности системы, и обязательно должна быть установлена. К сожалению, тот пакет, который идет в<br />
дистрибутиве ASPLinux – устаревшей версии. Поэтому сейчас его следует удалить. К нему мы обратимся в<br />
главах, связанных с установкой программ безопасности. Для удаления пакета выполните:<br />
[root@drwalbr /]# rpm -e &#8211;nodeps openssl<br />
[root@drwalbr /]# rm -rf /usr/share/ssl/<br />
Пакеты ash, tcsh<br />
Пакеты ash, tcsh содержат командные интерпретаторы, не используемые нами. Для удаления па-<br />
кета выполните:<br />
[root@drwalbr /]# rpm -e ash<br />
[root@drwalbr /]# rpm -e tcsh<br />
Пакет specspo<br />
Пакет specspo содержит объектные каталоги для интернационализации ASPLinux. Не думаем, что<br />
этот пакет действительно необходим. Для удаления пакета выполните:<br />
[root@drwalbr /]# rpm -e specspo<br />
Пакет krb5-lib<br />
Пакет krb5-lib содержит динамические библиотеки, необходимые программе Kerberos 5. Посколь-<br />
ку данная программа у нас не используется, можно удалить этот пакет. Для удаления пакета выполните:<br />
[root@drwalbr /]# rpm -e krb5-libs<br />
[root@drwalbr /]# rm -rf /usr/kerberos/<br />
Удаление ненужных файлов документации.<br />
По умолчанию большинство пакетов rpm, устанавливаемых под Linux, идет с документацией по соот-<br />
ветствующим программам. Эта документация содержит первоначальные файлы из архива программ tar, по-<br />
добно readme, faq, bug, install, news, projects и другим. Многие из них могут быть легко най-<br />
дены на том Web-узле, откуда программа была загружена. Нет особого смысла сохранять их на системе. Ко-<br />
нечно, емкости жестких дисков значительно возросли, но зачем оставлять документацию на сервере с<br />
высоким уровнем безопасности, к которой почти не будут обращаться? Тем не менее, взгляните на эти фай-<br />
лы еще раз и решите, оставить их или удалить. Для удаления файлов документации выполните:<br />
[root@drwalbr /]# cd /usr/share/doc/<br />
[root@drwalbr doc]# rm -rf *<br />
Удаление ненужных (пустых) файлов и каталогов.<br />
Существуют некоторые файлы и каталоги, которые можно безболезненно удалить. Некоторые их них<br />
– ошибки сценария инсталляции ASPLinux, другие созданы по умолчанию. Для их удаления выполните:<br />
[root@drwalbr /]# rm -f /etc/exports<br />
[root@drwalbr /]# rm -f /etc/printcap<br />
[root@drwalbr /]# rm -f /etc/hosts.allow<br />
[root@drwalbr /]# rm -f /etc/hosts.deny<br />
[root@drwalbr /]# rm -f /etc/csh.login<br />
[root@drwalbr /]# rm -f /etc/csh.cshrc<br />
[root@drwalbr /]# rm -f /etc/fstab.REVOKE<br />
[root@drwalbr /]# rm -f /etc/pam_smbd.conf<br />
[root@drwalbr /]# rm -rf /etc/xinetd.d/<br />
[root@drwalbr /]# rm -rf /etc/opt/<br />
[root@drwalbr /]# rm -rf /var/nis/<br />
[root@drwalbr /]# rm -rf /var/yp/<br />
[root@drwalbr /]# rm -rf /var/lib/games/<br />
[root@drwalbr /]# rm -rf /var/spool/lpd/<br />
[root@drwalbr /]# rm -rf /usr/lib/games/<br />
[root@drwalbr /]# rm -rf /usr/local/<br />
[root@drwalbr /]# rm -rf /usr/dict/<br />
[root@drwalbr /]# rm -rf /usr/X11R6/<br />
[root@drwalbr /]# rm -f /usr/lib/X11<br />
ЗАМЕЧАНИЕ Если в будущем возникнет необходимость в установке программы, которой потребуются<br />
некоторые из удаленных файлов или каталогов, то программа сама их создаст в процессе инсталляции.<br />
Указанные выше операции могут быть легко осуществлены с помощью скрипта deinstall, приве-<br />
денного ниже:<br />
#!/bin/sh<br />
########################################################<br />
#######Скрипт для деинсталляции ненужных пакетов и######<br />
####### и удаления файлов и каталогов ######<br />
########################################################<br />
#Удаляем anacron<br />
#/etc/init.d/anacron stop<br />
#rpm -e anacron<br />
#rm -rf /var/spool/anacron/<br />
#Удаляем apmd<br />
#/etc/init.d/apmd stop<br />
#rpm -e apmd<br />
#Удаляем at<br />
#/etc/init.d/atd stop<br />
#rpm -e at<br />
#Удаляем gpm<br />
#/etc/init.d/gpm stop<br />
#rpm -e gpm<br />
#Удаляем другие пакеты<br />
#rpm -e dhcpcd eject hotplug lokkit ipchains ksymoops kudzu mailcap \<br />
#pciutils raidtools asplinux-logos<br />
#rpm -e –-nodeps asplinux-release<br />
#echo You string /etc/asplinux-release<br />
#cp /etc/asplinux-release /etc/redhat-release<br />
#Удаление hdparm только для SCSI систем<br />
#rpm -e hdparm<br />
#Удаление<br />
#rpm -e mkinitrd<br />
#Удаляем пакеты конфигурирования X-сервера<br />
#rpm -e kbdconfig mouseconfig timeconfig netconfig \<br />
#authconfig ntsysv setuptool<br />
#Удаляем newt<br />
#rpm -e newt<br />
#Удаляем LILO если используем GRUB<br />
#rpm -e lilo<br />
#Удаляем asplrd<br />
#rpm -e aspldr<br />
#rm –f /etc/asplrd.conf<br />
#Удаляем reiserfs-utils<br />
#rpm -e reiserfs-utils<br />
#Удаляем quota#<br />
#rpm -e quota<br />
#Удаляем<br />
#rpm -e indexhtml usbutils hwdata hesiod<br />
#Удаляем man-страницы<br />
#rpm -e man-pages<br />
#rpm -e man-pages-ru-asp<br />
#Удаляем sendmail<br />
#/etc/init.d/sendmail stop<br />
#rpm -e sendmail<br />
#Удаляем procmail<br />
#rpm -e procmail<br />
#Удаляем openldap<br />
#rpm -e &#8211;nodeps openldap<br />
#Удаляем cyrus-sasl<br />
#rpm -e &#8211;nodeps cyrus-sasl cyrus-sasl-md5 cyrus-sasl-plain<br />
#Удаляем openssl<br />
#rpm -e &#8211;nodeps openssl<br />
#rm -rf /usr/share/ssl/<br />
#Удаляем ash и tcsh<br />
#rpm -e ash tcsh<br />
#Удаляем specspo<br />
#rpm -e specspo<br />
#Удаляем krb5-libs<br />
#rpm -e krb5-libs<br />
#rm -rf /usr/kerberos/<br />
#Удаляем yum<br />
#rpm -e yum<br />
#Удаляем ненужные файлы и каталоги<br />
#rm -f /etc/exports<br />
#rm -f /etc/printcap<br />
#rm -f /etc/hosts.allow<br />
#rm -f /etc/hosts.deny<br />
#rm -f /etc/csh.login<br />
#rm -f /etc/csh.cshrc<br />
#rm -f /etc/fstab.REVOKE<br />
#rm -f /etc/pam_smbd.conf<br />
#rm -rf /etc/xinetd.d/<br />
#rm -rf /etc/opt/<br />
#rm -rf /var/nis/<br />
#rm -rf /var/yp/<br />
#rm -rf /var/lib/games/<br />
#rm -rf /var/spool/lpd/<br />
#rm -rf /usr/lib/games/<br />
#rm -rf /usr/local/<br />
#rm -rf /usr/dict/<br />
#rm -rf /usr/X11R6/<br />
#rm -f /usr/lib/X11<br />
Удалите комментарии из строк, ответственных за удаление пакетов, каталогов, файлов, ненужных в<br />
требуемой конфигурации, и запустите скрипт.</p>
<p><strong>Дополнительно устанавливаемые пакеты</strong></p>
<p>Если планируется компилировать программное обеспечение на сервере, необходимо установить ряд<br />
дополнительных пакетов – пакеты, содержащие языки программирования, используемые ими библиотеки,<br />
пакеты, разрешающие зависимости, и файловый менеджер mc (аналог популярного файлового менеджера<br />
для DOS Norton Commander). В противном случае – т. е. если вы не собираетесь заниматься компиляцией<br />
программ на сервере, устанавливаете и обновляете программное обеспечение, используя только rpm-пакеты,<br />
например, используя рабочую станцию для разработки, компиляции и создания собственных rpm-пакетов c<br />
последующей их установкой на сервере – не следует выполнять приведенные ниже рекомендации по уста-<br />
новке дополнительных пакетов.<br />
Установка дополнительных пакетов осуществляется следующим образом.<br />
Шаг 1<br />
Скопируйте первый, второй и третий диски в некоторый каталог, например, /home/distrib/. Для<br />
этого сначала создайте его:<br />
[root@drwalbr /]# mkdir /home/distrib<br />
Вставьте первый инсталляционный диск в привод CD-ROM. Выполните команды:<br />
[root@drwalbr /]# mount /mnt/cdrom<br />
[root@drwalbr /]# cp /mnt/cdrom/ASPLinux/RPMS/* /home/distrib<br />
[root@drwalbr /]# umount /mnt/cdrom<br />
Вставьте второй инсталляционный диск в привод CD-ROM. Выполните команды:<br />
[root@drwalbr /]# mount /mnt/cdrom<br />
[root@drwalbr /]# cp /mnt/cdrom/ASPLinux/RPMS/* /home/distrib<br />
[root@drwalbr /]# umount /mnt/cdrom<br />
Вставьте третий инсталляционный диск в привод CD-ROM. Выполните команды:<br />
[root@drwalbr /]# mount /mnt/cdrom<br />
[root@drwalbr /]# cp /mnt/cdrom/ASPLinux/RPMS/* /home/distrib<br />
[root@drwalbr /]# umount /mnt/cdrom<br />
Шаг 2<br />
Установите необходимые пакеты:<br />
[root@drwalbr /]# cd /home/distrib<br />
[root@drwalbr distrib]# rpm -ihv binutils-2.11.93.0.2-11.i386.rpm<br />
[root@drwalbr distrib]# rpm -ihv cpp-2.96-112asp.i386.rpm<br />
[root@drwalbr distrib]# rpm -ihv freetype-2.0.9-2.i386.rpm<br />
[root@drwalbr distrib]# rpm -ihv m4-1.4.1-7.i386.rpm<br />
[root@drwalbr distrib]# rpm -ihv make-3.79.1-8.i386.rpm<br />
[root@drwalbr distrib]# rpm -ihv patch-2.5.4-12.i386.rpm<br />
[root@drwalbr distrib]# rpm -ihv perl-5.6.1-34.99.6.i386.rpm<br />
[root@drwalbr distrib]# rpm -ihv libjpeg-6b-19.i386.rpm<br />
[root@drwalbr distrib]# rpm -ihv libpng-1.0.12-2.i386.rpm<br />
[root@drwalbr distrib]# rpm -ihv gd-1.8.4-4.asp.i386.rpm<br />
[root@drwalbr distrib]# rpm -ihv libtool-libs-1.4.2-7.i386.rpm<br />
[root@drwalbr distrib]# rpm -ihv pspell-0.12.2-8asp.i386.rpm<br />
[root@drwalbr distrib]# rpm -ihv mc-4.5.55-5.1asp.i386.rpm<br />
[root@drwalbr distrib]# rpm -ihv bison-1.35-1.i386.rpm<br />
[root@drwalbr distrib]# rpm -ihv byacc-1.9-19.i386.rpm<br />
[root@drwalbr distrib]# rpm -ihv cproto-4.6-9.i386.rpm<br />
[root@drwalbr distrib]# rpm -ihv cdecl-2.5-22.i386.rpm<br />
[root@drwalbr distrib]# rpm -ihv ctags-5.2.2-2.i386.rpm<br />
[root@drwalbr distrib]# rpm -ihv flex-2.5.4a-23.i386.rpm<br />
[root@drwalbr distrib]# rpm -ihv glibc-kernheaders-2.4-7.14.asp.i386.rpm<br />
[root@drwalbr distrib]# rpm -ihv glibc-devel-2.2.5-37asp.i386.rpm<br />
[root@drwalbr distrib]# rpm -ihv gcc-2.96-112asp.i386.rpm<br />
[root@drwalbr distrib]# rpm -ihv libstdc++-devel-2.96-112asp.i386.rpm<br />
[root@drwalbr distrib]# rpm -ihv gcc-c++-2.96-112asp.i386.rpm<br />
[root@drwalbr distrib]# rpm -ihv db3-devel-3.3.11-6.i386.rpm<br />
[root@drwalbr distrib]# rpm -ihv freetype-devel-2.0.9-2.i386.rpm<br />
[root@drwalbr distrib]# rpm -ihv gdbm-devel-1.8.0-14.i386.rpm<br />
[root@drwalbr distrib]# rpm -ihv gd-devel-1.8.4-4.asp.i386.rpm<br />
[root@drwalbr distrib]# rpm -ihv libjpeg-devel-6b-19.i386.rpm<br />
[root@drwalbr distrib]# rpm -ihv zlib-devel-1.1.3-25.7.i386.rpm<br />
[root@drwalbr distrib]# rpm -ihv libpng-devel-1.0.12-2.i386.rpm<br />
[root@drwalbr distrib]# rpm -ihv ncurses-devel-5.2-26.i386.rpm<br />
[root@drwalbr distrib]# rpm -ihv pam-devel-0.75-32.2asp.i386.rpm<br />
[root@drwalbr distrib]# rpm -ihv pspell-devel-0.12.2-8asp.i386.rpm<br />
Указанные выше операции могут быть легко осуществлены с помощью сценария:<br />
#!/bin/sh<br />
########################################################<br />
#######Скрипт для установки дополнительных пакетов ######<br />
########################################################<br />
rpm -ihv binutils-2.11.93.0.2-11.i386.rpm\<br />
cpp-2.96-112asp.i386.rpm \<br />
freetype-2.0.9-2.i386.rpm \<br />
m4-1.4.1-7.i386.rpm \<br />
make-3.79.1-8.i386.rpm \<br />
patch-2.5.4-12.i386.rpm \<br />
perl-5.6.1-34.99.6.i386.rpm \<br />
libjpeg-6b-19.i386.rpm \<br />
libpng-1.0.12-2.i386.rpm \<br />
gd-1.8.4-4.asp.i386.rpm \<br />
libtool-libs-1.4.2-7.i386.rpm \<br />
pspell-0.12.2-8asp.i386.rpm \<br />
mc-4.5.55-5.1asp.i386.rpm \<br />
bison-1.35-1.i386.rpm \<br />
byacc-1.9-19.i386.rpm \<br />
cproto-4.6-9.i386.rpm \<br />
cdecl-2.5-22.i386.rpm \<br />
ctags-5.2.2-2.i386.rpm \<br />
flex-2.5.4a-23.i386.rpm \<br />
glibc-kernheaders-2.4-7.14.asp.i386.rpm \<br />
glibc-devel-2.2.5-37asp.i386.rpm \<br />
gcc-2.96-112asp.i386.rpm \<br />
libstdc++-devel-2.96-112asp.i386.rpm \<br />
gcc-c++-2.96-112asp.i386.rpm \<br />
db3-devel-3.3.11-6.i386.rpm \<br />
freetype-devel-2.0.9-2.i386.rpm \<br />
gdbm-devel-1.8.0-14.i386.rpm \<br />
gd-devel-1.8.4-4.asp.i386.rpm \<br />
libjpeg-devel-6b-19.i386.rpm \<br />
zlib-devel-1.1.3-25.7.i386.rpm \<br />
libpng-devel-1.0.12-2.i386.rpm \<br />
ncurses-devel-5.2-26.i386.rpm \<br />
pam-devel-0.75-32.2asp.i386.rpm \<br />
pspell-devel-0.12.2-8asp.i386.rpm \<br />
Если размеры жесткого диска не позволяют скопировать три первых диска дистрибутива, можно ог-<br />
раничиться только копированием требуемых пакетов.<br />
На первом диске находятся:<br />
cpp-2.96-112asp.i386.rpm<br />
freetype-2.0.9-2.i386.rpm<br />
gd-1.8.4-4.asp.i386.rpm<br />
libjpeg-6b-19.i386.rpm<br />
libpng-1.0.12-2.i386.rpm<br />
libtool-libs-1.4.2-7.i386.rpm<br />
m4-1.4.1-7.i386.rpm<br />
make-3.79.1-8.i386.rpm<br />
mc-4.5.55-5.1asp.i386.rpm<br />
patch-2.5.4-12.i386.rpm<br />
perl-5.6.1-34.99.6.i386.rpm<br />
pspell-0.12.2-8asp.i386.rpm<br />
На втором диске находятся:<br />
bison-1.35-1.i386.rpm<br />
byacc-1.9-19.i386.rpm<br />
cproto-4.6-9.i386.rpm<br />
cdecl-2.5-22.i386.rpm<br />
ctags-5.2.2-2.i386.rpm<br />
flex-2.5.4a-23.i386.rpm<br />
gcc-2.96-112asp.i386.rpm<br />
gcc-c++-2.96-112asp.i386.rpm<br />
glibc-devel-2.2.5-37asp.i386.rpm<br />
glibc-kernheaders-2.4-7.14.asp.i386.rpm<br />
На третьем диске находятся:<br />
db3-devel-3.3.11-6.i386.rpm<br />
freetype-devel-2.0.9-2.i386.rpm<br />
gdbm-devel-1.8.0-14.i386.rpm<br />
gd-devel-1.8.4-4.asp.i386.rpm<br />
gd-devel-1.8.4-4.asp.i386.rpm<br />
libjpeg-devel-6b-19.i386.rpm<br />
libpng-devel-1.0.12-2.i386.rpm<br />
libstdc++-devel-2.96-112asp.i386.rpm<br />
ncurses-devel-5.2-26.i386.rpm<br />
pam-devel-0.75-32.2asp.i386.rpm<br />
pspell-devel-0.12.2-8asp.i386.rpm<br />
zlib-devel-1.1.3-25.7.i386.rpm<br />
Для копирования дополнительных пакетов в раздел /home/distrib/ вставьте первый инсталля-<br />
ционный диск в привод CD-ROM. Выполните команды:<br />
[root@drwalbr /]# mount /mnt/cdrom<br />
[root@drwalbr /]# сd /mnt/cdrom/ASPLinux/RPMS<br />
[root@drwalbr RPMS]# cp cpp-2.96-112asp.i386.rpm /home/distrib/<br />
[root@drwalbr RPMS]# cp freetype-2.0.9-2.i386.rpm /home/distrib/<br />
[root@drwalbr RPMS]# cp m4-1.4.1-7.i386.rpm /home/distrib/<br />
[root@drwalbr RPMS]# cp make-3.79.1-8.i386.rpm /home/distrib/<br />
[root@drwalbr RPMS]# cp patch-2.5.4-12.i386.rpm /home/distrib/<br />
[root@drwalbr RPMS]# cp perl-5.6.1-34.99.6.i386.rpm /home/distrib/<br />
[root@drwalbr RPMS]# cp gd-1.8.4-4.asp.i386.rpm /home/distrib/<br />
[root@drwalbr RPMS]# cp libjpeg-6b-19.i386.rpm /home/distrib/<br />
[root@drwalbr RPMS]# cp libpng-1.0.12-2.i386.rpm /home/distrib/<br />
[root@drwalbr RPMS]# cp libtool-libs-1.4.2-7.i386.rpm /home/distrib/<br />
[root@drwalbr RPMS]# cp pspell-0.12.2-8asp.i386.rpm /home/distrib/<br />
[root@drwalbr RPMS]# cp mc-4.5.55-5.1asp.i386.rpm /home/distrib/<br />
[root@drwalbr RPMS]# cd /<br />
[root@drwalbr /]# umount /mnt/cdrom/<br />
Вставьте второй инсталляционный диск в привод CD-ROM. Выполните команды:<br />
[root@drwalbr /]# mount /mnt/cdrom/<br />
[root@drwalbr /]# сd /mnt/cdrom/ASPLinux/RPMS<br />
[root@drwalbr RPMS]# cp bison-1.35-1.i386.rpm /home/distrib/<br />
[root@drwalbr RPMS]# cp byacc-1.9-19.i386.rpm /home/distrib/<br />
[root@drwalbr RPMS]# cp cproto-4.6-9.i386.rpm /home/distrib/<br />
[root@drwalbr RPMS]# cp cdecl-2.5-22.i386.rpm /home/distrib/<br />
[root@drwalbr RPMS]# cp ctags-5.2.2-2.i386.rpm /home/distrib/<br />
[root@drwalbr RPMS]# cp flex-2.5.4a-23.i386.rpm /home/distrib/<br />
[root@drwalbr RPMS]# cp gcc-2.96-112asp.i386.rpm /home/distrib/<br />
[root@drwalbr RPMS]# cp gcc-c++-2.96-112asp.i386.rpm /home/distrib/<br />
[root@drwalbr RPMS]# cp glibc-kernheaders-2.4-7.14.asp.i386.rpm<br />
/home/distrib/<br />
[root@drwalbr RPMS]# cp glibc-devel-2.2.5-37asp.i386.rpm /home/distrib/<br />
[root@drwalbr RPMS]# cd /<br />
[root@drwalbr /]# umount /mnt/cdrom<br />
Вставьте третий инсталляционный диск в привод CD-ROM. Выполните команды:<br />
[root@drwalbr /]# mount /mnt/cdrom<br />
[root@drwalbr /]# cd /mnt/cdrom/ASPLinux/RPMS<br />
[root@drwalbr RPMS]# cp db3-devel-3.3.11-6.i386.rpm /home/distrib/<br />
[root@drwalbr RPMS]# cp freetype-devel-2.0.9-2.i386.rpm /home/distrib/<br />
[root@drwalbr RPMS]# cp gdbm-devel-1.8.0-14.i386.rpm /home/distrib/<br />
[root@drwalbr RPMS]# cp gd-devel-1.8.4-4.asp.i386.rpm /home/distrib/<br />
[root@drwalbr RPMS]# cp libjpeg-devel-6b-19.i386.rpm /home/distrib/<br />
[root@drwalbr RPMS]# cp libpng-devel-1.0.12-2.i386.rpm /home/distrib/<br />
[root@drwalbr RPMS]# cp libstdc++-devel-2.96-112asp.i386.rpm<br />
/home/distrib/<br />
[root@drwalbr RPMS]# cp ncurses-devel-5.2-26.i386.rpm /home/distrib/<br />
[root@drwalbr RPMS]# cp pam-devel-0.75-32.2asp.i386.rpm /home/distrib/<br />
[root@drwalbr RPMS]# cp pspell-devel-0.12.2-8asp.i386.rpm /home/distrib/<br />
[root@drwalbr RPMS]# cp zlib-devel-1.1.3-25.7.i386.rpm /home/distrib/<br />
[root@drwalbr RPMS]# cp gd-devel-1.8.4-4.asp.i386.rpm /home/distrib/<br />
[root@drwalbr RPMS]# cd /<br />
[root@drwalbr /]# umount /mnt/cdrom<br />
Для установки пакетов выполните команды:<br />
[root@drwalbr /]# cd /home/distrib/<br />
[root@drwalbr distrib]# rpm –ihv *.rpm<br />
ЗАМЕЧАНИЕ Выше описан процесс установки только самых необходимых пакетов для компиляции<br />
программ. Некоторое программное обеспечение может потребовать установить дополнительные пакеты как<br />
для компиляции, так и для своей работы. Обычно это отражено в документации.<br />
Шаг 3<br />
После окончания инсталляции, компиляции и настройки всех программ на сервере необходимо уда-<br />
лить все дополнительно установленные пакеты, т. к. они занимают место на диске и негативно влияют на<br />
безопасность системы. Например, если взломщик программной защиты получит доступ к вашему серверу,<br />
он не сможет компилировать, не установив соответствующие пакеты, и, следовательно, установить свои ва-<br />
рианты исполняемых файлов.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.compyuteri.ru/glava-2-ustanovka-asplinux/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Глава 3. Общие мероприятия по обеспечению безопасности сервера</title>
		<link>http://www.compyuteri.ru/glava-3-obshhie-meropriyatiya-po-obespecheniyu-bezopasnosti-servera/</link>
		<comments>http://www.compyuteri.ru/glava-3-obshhie-meropriyatiya-po-obespecheniyu-bezopasnosti-servera/#comments</comments>
		<pubDate>Sat, 13 Sep 2008 18:09:00 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[Часть 01. Инсталляция операционной системы Linux на сер]]></category>

		<category><![CDATA[.rhosts]]></category>

		<category><![CDATA[BIOS]]></category>

		<category><![CDATA[GRUB]]></category>

		<category><![CDATA[LILO]]></category>

		<category><![CDATA[MAC-адрес]]></category>

		<category><![CDATA[root]]></category>

		<category><![CDATA[ttys]]></category>

		<category><![CDATA[безопасность]]></category>

		<category><![CDATA[консоли]]></category>

		<category><![CDATA[монтирование]]></category>

		<category><![CDATA[оболочки]]></category>

		<category><![CDATA[пароли]]></category>

		<category><![CDATA[процессы]]></category>

		<category><![CDATA[сеть]]></category>

		<category><![CDATA[суперпользователь]]></category>

		<category><![CDATA[ФС]]></category>

		<guid isPermaLink="false">http://www.compyuteri.ru/?p=81</guid>
		<description><![CDATA[В этой главе:
1. Настройки BIOS
2. Отключение сервера от сети
3. Концепция безопасности
4. Выбор правильного пароля
5. Учетная запись суперпользователя root
6. История оболочки командного интерпретатора
7. Однопользовательский режим входа в систему
8. Отключение возможности выключения системы с помощью комбинации клавиш ++
9. Ограничение заданного по умолчанию числа запущенных виртуальных консолей ttys
10. LILO и файл /etc/lilo.conf
11. GRUB и файл /boot/grub/grub.conf
12. Файл /etc/services
13. [...]]]></description>
			<content:encoded><![CDATA[<p>В этой главе:<br />
1. Настройки BIOS<br />
2. Отключение сервера от сети<br />
3. Концепция безопасности<br />
4. Выбор правильного пароля<br />
5. Учетная запись суперпользователя root<br />
6. История оболочки командного интерпретатора<br />
7. Однопользовательский режим входа в систему<br />
8. Отключение возможности выключения системы с помощью комбинации клавиш <Ctrl>+<Alt>+<Delete><br />
9. Ограничение заданного по умолчанию числа запущенных виртуальных консолей ttys<br />
10. LILO и файл /etc/lilo.conf<br />
11. GRUB и файл /boot/grub/grub.conf<br />
12. Файл /etc/services<br />
13. Файл /etc/security<br />
14. Специальные учетные записи<br />
15. Управление монтированием файловых систем<br />
16. Права доступа к файлам сценариев запуска и остановки процессов<br />
17. Специальные символы у программ, владельцем которых является root<br />
18. Запрещение внутренним компьютерам сообщать серверу свой MAC-адрес<br />
19. Необычные или скрытые файлы<br />
20. Обнаружение файлов и каталогов, изменяемых любым пользователем<br />
21. Файлы без владельцев<br />
22. Поиск файлов .rhosts<br />
23. Копии файлов регистрации на жестких носителях и удаленных системах<br />
24. Удаление страниц руководства</p>
<p>Безопасность сервера определяется не только типом и версией установленной операционной системы,<br />
но в основном, грамотной его настройкой. В этой главе рассматриваются некоторые из основных методов,<br />
обеспечивающих безопасность вашей системы, которые можно использовать для предотвращения атак из<br />
внешней или локальной сети.</p>
<p><strong>Настройки BIOS</strong></p>
<p>Отключите в настройках BIOS возможность загрузки системы с дискеты и/или загрузочного компакт-<br />
диска и установите пароль на вход в BIOS. Это предотвратит попытки сторонних лиц загрузить систему, ис-<br />
пользуя специальный загрузочный диск или изменить настройки BIOS (например, разрешить начальную за-<br />
грузку диска или загрузку сервера без ввода пароля). Обратите внимание, что существует принципиальная<br />
возможность обойти эту меру защиты, получив физический доступ к серверу. Поэтому авторы настоятельно<br />
рекомендуют ограничить доступ как в помещение, где расположен сервер, так и внутрь его корпуса.</p>
<p><strong>Отключение сервера от сети</strong></p>
<p>Изменение настроек безопасности сервера не рекомендуется проводить на работающей в сети систе-<br />
ме. Для остановки всех сетевых интерфейсов системы (программного отключения) выполните:<br />
[root@drwalbr /]# /etc/init.d/network stop<br />
Деактивируется интерфейс eth0: [OK]<br />
Деактивируется интерфейс eth1: [OK]<br />
Для запуска всех сетевых интерфейсов системы выполните:<br />
[root@drwalbr /]# /etc/init.d/network start<br />
Устанавливаются параметры сети: [OK]<br />
Активизируется интерфейс lo: [OK]<br />
Активизируется интерфейс eth0: [OK]<br />
Активизируется интерфейс eth1: [OK]<br />
Для остановки и запуска только одного сетевого интерфейса, выполните, соответственно:<br />
[root@drwalbr /]# ifdown eth0<br />
[root@drwalbr /]# ifup eth0</p>
<p><strong>Концепция безопасности</strong></p>
<p>Важно подчеркнуть, что нельзя успешно осуществлять действия, направленные на повышение безо-<br />
пасности, без четкого представления, чего вы хотите добиться и от чего должны быть защищены. Необхо-<br />
димо выработать концепцию безопасности, т. е. перечень организационно-технических мероприятий, кото-<br />
рые обеспечат разумный компромисс между функциональностью системы и уровнем ее безопасности. Лю-<br />
бая концепция безопасности должна основываться на некоторой степени недоверия к людям, как внутри, так<br />
и за пределами вашей организации.</p>
<p><strong>Выбор правильного пароля</strong></p>
<p>Отправная точка возведения здания безопасности сервера – пароль. Много людей сохраняют свою<br />
ценную информацию и файлы на компьютере. Единственной вещью, защищающей ее от постороннего вни-<br />
мания, является строка из нескольких символов, называемая паролем. В отличие от общераспространенного<br />
мнения, не существует паролей, которые нельзя было бы расшифровать. В действительности все пароли мо-<br />
гут быть получены методами «социальной инженерии» или простым последовательным перебором.<br />
Социальная разработка паролей сервера – самый простой и самый популярный способ получения<br />
доступа к учетным записям и серверам. Человеческий фактор еще никто не отменял. Часто знание таких<br />
простых вещей, как названия компаний, действующих или временных должностей пользователей, даты из-<br />
вестных событий и др. приводят к потрясающим результатам.<br />
Было бы неплохо запускать взломщика пароля на вашей системе каждую неделю. Он поможет в по-<br />
иске и замене паролей, которые легко могут быть раскрыты. Также необходим механизм, проверяющий па-<br />
роли с целью недопущения ненадежных паролей при выборе пользователями начальных паролей или изме-<br />
нении старых. Символьные строки, которые являются обычными словами или набранные в одном регистре,<br />
не содержащие чисел или специальных символов, не должны приниматься в качестве нового пароля.<br />
Авторы рекомендуют следующие правила выбора паролей:<br />
• пароль должен состоять, по крайней мере, из восьми символов, включая, одну цифру или специаль-<br />
ный символ;<br />
• пароль не должен быть тривиальным, т. е. чтобы его нельзя было предсказать, используя общедос-<br />
тупную информацию о пользователях (фамилии, адреса, памятные даты, телефоны и др. информация лично-<br />
го характера);<br />
• пароль должен иметь ограниченный срок действия, по истечении которого должен быть выбран но-<br />
вый;<br />
• пароль должен блокироваться после нескольких (двух…трех попыток) его неправильного ввода.</p>
<p><strong>Учетная запись суперпользователя root</strong></p>
<p>Учетная запись root – самая привилегированная учетная запись на Unix-системе. Она не имеет ни-<br />
каких ограничений по безопасности. Поэтому очень просто, допустив ошибку в наборе команды, удалить<br />
критически важные системные файлы. При использовании этой учетной записи важно быть очень осторож-<br />
ным и внимательным.<br />
Часто администраторы, зарегистрировавшись в качестве суперпользователя root, забывают выйти из<br />
системы после окончания работы. Поэтому желательно использовать автоматическое завершение сеанса<br />
оболочки bash после бездействия консоли в течение определенного периода времени.<br />
Шаг 1<br />
Установите специальную переменную, названную TMOUT, равную интервалу времени в секундах, по<br />
истечении которого при отсутствии ввода с клавиатуры произойдет выход из системы. Для этого в файле<br />
/etc/profile добавьте следующую строку где-нибудь после строки, начинающейся с HISTSIZE =:<br />
HOSTNAME= &#8216; /bin/hostname &#8216;<br />
HISTSIZE=1000<br />
TMOUT=3600<br />
Значение, присвоенное переменной TMOUT = , выражено в секундах и составляет 1 час<br />
((60*60)*1=3600*1=3600 с).<br />
ЗАМЕЧАНИЕ Если вышеупомянутая строка вставлена в файл /etc/profile, то через 1 час произой-<br />
дет автоматическое завершение сеансов всех пользователей системы. Если вы желаете установить для раз-<br />
ных пользователей различные значения TMOUT то строка TMOUT=… должна быть добавлена в файл .bashrc ,<br />
находящийся в домашнем каталоге пользователя.<br />
Шаг 2<br />
В файле /etc/profile в строкe:<br />
export PATH USER LOGNAME MAIL HOSTNAME HISTSIZE INPUTRC<br />
добавьте параметр TMOUT:<br />
export PATH USER LOGNAME MAIL HOSTNAME HISTSIZE TMOUT INPUTRC<br />
Для вступления изменений в силу завершите сеанс и зарегистрируйтесь в системе как суперпользова-<br />
тель root.</p>
<p><strong>История оболочки командного интерпретатора</strong></p>
<p>Для облегчения ввода повторяющихся команд, командный интерпретатор сохраняет до 1000 команд в<br />
файле ~/.bash_history (где &#8221; ~/ &#8221; является вашим домашним каталогом). Пользователь может вместо<br />
повторного набора команды с помощью клавиш <Стрелка вверх> и <Стрелка вниз> вывести ранее набран-<br />
ную команду в командную строку и исполнить ее нажатием клавиши <Enter>. Некоторые команды могут<br />
запрашивать пароль. В результате ошибочных действий пользователя этот пароль может быть введен в ко-<br />
мандную строку и, следовательно, сохраниться в файле .bash_history. Сокращение числа запоминае-<br />
мых команд уменьшает вероятность сохранения в этом файле паролей, ошибочно введенных открытым тек-<br />
стом в командную строку. Для этого выполните некоторые действия.<br />
Шаг 1<br />
Значение параметра HISTSIZE в файле /etc/profile определяет число сохраняемых старых ко-<br />
манд в файле .bash_history для всех пользователей системы. Для всех учетных записей мы рекомендо-<br />
вали бы устанавливать значение параметра HISTSIZE в файле /etc/profile не более 10.<br />
Для этого в файле /etc/profile измените:<br />
HISTSIZE=1000<br />
на:<br />
HISTSIZE=10<br />
Шаг 2<br />
Для того, чтобы файл .bash_history уничтожался при каждом выходе пользователя из системы, в<br />
файл /etc/profile после строки, в которой устанавливается значение параметра HISTSIZE, добавьте<br />
строку:<br />
HISTSIZE=10<br />
HISTFILESIZE=0<br />
Шаг 3<br />
В файле /etc/profile в строке:<br />
export PATH USER LOGNAME MAIL HOSTNAME HISTSIZE TMOUT INPUTRC<br />
добавьте параметр HISTFILESIZE:<br />
export PATH USER LOGNAME MAIL HOSTNAME HISTSIZE HISTFILESIZB TMOUT<br />
INPUTRC<br />
Для вступления изменений в силу завершите сеанс и зарегистрируйтесь в системе как суперпользова-<br />
тель root.</p>
<p><strong>Однопользовательский режим входа в систему</strong></p>
<p>При использовании загрузчика LILO имеется возможность входа в однопользовательский режим. Это<br />
достигается путем ввода при загрузке LILO команды:<br />
LILO: linux single<br />
При этом вы регистрируетесь в системе как суперпользователь root без ввода пароля. Для того, что-<br />
бы система запрашивала пароль при входе в однопользовательский режим необходимо выполнить некото-<br />
рые действия.<br />
Шаг 1<br />
В файле /etc/inittab измените строку:<br />
id:3:initdefault:<br />
на:<br />
id:3:initdefault:<br />
~~:S:wait:/sbin/sulogin<br />
Добавление этой строки потребует ввода пароля root перед продолжением загрузки в однопользова-<br />
тельском режиме (программа init инициализирует выполнение программы sulogin перед входом в обо-<br />
лочку).<br />
Шаг 2<br />
Для того, чтобы сделанные изменения вступили в силу, выполните:<br />
[root@drwalbr /]# /sbin/init q</p>
<p><strong>Отключение возможности выключения системы с помощью комбинации клавиш <Ctrl>+<Alt>+<Delete></strong></p>
<p>Для отключения возможности выключения (перезагрузки) системы с помощью комбинации клавиш<br />
<Ctrl>+<Alt>+<Delete> в файле /etc/inittab удалите (закомментируйте) строку:<br />
ca::ctrlaltdel:/sbin/shutdown -t3 -r now<br />
т. е.:<br />
#ca::ctrlaltdel:/shin/shutdown-t3-r now<br />
Шаг 2<br />
Для того, чтобы сделанные изменения вступили в силу, выполните:<br />
[root@drwalbr /]# /sbin/init q</p>
<p><strong>Ограничение заданного по умолчанию числа запущенных виртуальных консолей ttys</strong></p>
<p>По умолчанию в ASPLinux допускается одновременный запуск шести виртуальных консолей в стан-<br />
дартных выполняемых уровнях. На сервере с высоким уровнем безопасности следует ограничиться двумя<br />
виртуальными консолями и заодно сэкономить некоторые ресурсы, которые могут быть задействованы для<br />
выполнения других процессов.<br />
Шаг 1<br />
В файле /etc/inittab удалите (закомментируйте) следующие строки:<br />
1:2345: respawn: /sbin/mingetty ttyl<br />
Часть 1. Инсталляция операционной системы Linux на сервере 44<br />
2:2345: respawn: /sbin/mingetty tty2<br />
3:2345: respawn: /sbin/mingetty tty3<br />
4:2345: respawn: /sbin/mingetty tty4<br />
5:2345: respawn: /sbin/mingetty tty5<br />
6:2345: respawn: /sbin/mingetty tty6<br />
т. е.:<br />
1:2345: respawn: /sbin/mingetty ttyl<br />
2:2345: respawn: /sbin/mingetty tty2<br />
#3:2345: respawn: /sbin/mingetty tty3<br />
#4:2345: respawn: /sbin/mingetty tty4<br />
#5:2345: respawn: /sbin/mingetty tty5<br />
#6:2345: respawn: /sbin/mingetty tty6<br />
Шаг 2<br />
Для того, чтобы сделанные изменения вступили в силу, выполните:<br />
[root@drwalbr /]# /sbin/init q</p>
<p><strong>LILO и файл /etc/lilo.conf</strong></p>
<p>Если вы используетесь LILO в качестве загрузчика операционной системы, то для обеспечения безо-<br />
пасности системы необходимо установить ряд параметров загрузчика в файле /etc/lilo.conf. К числу<br />
таких параметров относятся:<br />
• параметр timeout=00 – определяет длительность интервала времени в десятых долях секунды в<br />
течение которого LILO ожидает пользовательского ввода (например, команды на переход в однопользова-<br />
тельский режим, выбор загружаемого образа ядра и т. п.);<br />
• опция restricted – указывает на необходимость запроса пароля только, если параметры опреде-<br />
лены в командной строке (например, linux single). Эту опцию следует использовать только совместно с<br />
параметром password;<br />
• опция password=Secretnoe$l0vo – указывает на необходимость запроса пароля при загрузке<br />
образа ядра (при использовании опции restricted пароль будет запрашиваться только при введении па-<br />
раметров загрузки в командной строке, обычная загрузка будет осуществляться без ввода пароля).<br />
Для установки опций безопасности выполните следующий алгоритм.<br />
Шаг 1<br />
Отредактируйте файл /etc/lilo.conf, добавив или изменив строки, в соответствии с рекоменда-<br />
циями:<br />
boot=/dev/hda<br />
prompt<br />
timeout=00<br />
lba32<br />
default=linux-2.4.18<br />
# ASPLinux<br />
image=/boot/vmlinuz-2.4.18-5asp<br />
initrd=/boot/initrd.2.4.18-5asp.img<br />
restricted<br />
password= Secretnoe$l0vo<br />
label=ASPLinux-2.4.18<br />
root=/dev/hda8<br />
read-only<br />
Шаг 2<br />
Поскольку конфигурационный файл /etc/lilo.conf теперь содержит незашифрованный пароль,<br />
доступ к нему следует разрешить только пользователю root:<br />
[root@drwalbr /]# chmod 600 /etc/lilo.conf<br />
Для того, чтобы сделать файл неизменяемым, наберите:<br />
[root@drwalbr /]# chattr +i /etc/lilo.conf<br />
ЗАМЕЧАНИЕ В случае необходимости переконфигурирования LILO не забудьте снять атрибут запрета<br />
изменений с файла /etc/lilo.conf с помощью команды:<br />
[root@drwalbr /]# chattr -i /etc/lilo.conf .<br />
Шаг 3<br />
Для того, чтобы изменения вступили в силу, выполните:<br />
[root@drwalbr /]# /sbin/lilo –v<br />
LILO version 21.7-3, Copyright (C) 1992-1998 Werner Almesberger<br />
Linux Real Mode Interface library Copyright (C) 1998 Josh Vanderhoof<br />
Development beyond version 21 Copyright (C) 1999-2001 John Coffman<br />
Released 29-Mar-2001 and compiled at 06:06:43 on Jun 4 2002.<br />
Reading boot sector from /dev/hda<br />
Merging with /boot/boot.b<br />
Boot image: /boot/vmlinuz-2.4.18-5asp<br />
Mapping RAM disk /boot/initrd.2.4.18-5asp.img<br />
Added ASPLinux-2.4.18 *<br />
/boot/boot.0300 exists - no backup copy made.<br />
Writing boot sector.</p>
<p><strong>GRUB и файл /boot/grub/grub.conf</strong></p>
<p>GRUB очень важна, так как это первая выполняемая программа при запуске компьютера, и мы долж-<br />
ны обеспечить безукоризненную ее работу во избежание всевозможных сбоев. В заданной по умолчанию<br />
инсталляции она уже достаточно хорошо защищена. Мы постараемся объяснить, как сделан ее конфигура-<br />
ционный файл. На наш взгляд, по сравнению с LILO, GRUB более удобен при конфигурации. Далее приво-<br />
дятся значения заданного по умолчанию конфигурационного файла GRUB и рекомендуемые методы защи-<br />
ты. Полужирный текст – части конфигурационного файла /boot/grub/grub.conf, которые должны<br />
быть откорректированы в соответствии с вашими потребностями:<br />
default 0<br />
splashimage=/boot/grub/splash.xpm.gz<br />
timeout 0<br />
password &#8211;md5 $1$RFEae/$MxXN6ck3laZMTy8ajwINk0<br />
title ASPLinux-2.4.18<br />
root (hd0,0)<br />
kernel /boot/vmlinuz-2.4.18-5asp ro root=/dev/sda5<br />
initrd /boot/initrd.2.4.18-5asp.img<br />
boot<br />
Опция default<br />
используется в конфигурационном файле для определения заданной по умолчанию загрузки. Значение &#8220;0&#8243;<br />
обозначает заданный по умолчанию вариант. Для сервера, где Linux – единственная операционная система,<br />
заданная по умолчанию загрузка будет и единственной. Другие варианты не задаем.<br />
Опция timeout<br />
используется для определения времени ожидания в секундах перед тем, как автоматически загрузить задан-<br />
ный по умолчанию вариант загрузки.<br />
Опция splashimage<br />
определяет графическое изображение, отображаемое при загрузке GRUB. Решайте сами – сохранять этот<br />
параметр или удалять. Если вы хотите удалить его, то удалите и вышеупомянутую строку со сжатым изо-<br />
бражением.<br />
Опция password<br />
используется для сообщения GRUB о необходимости ввода пароля и отвергает любое интерактивное управ-<br />
ление, пока вы не нажимаете клавишу
<p> и не введете правильный пароль. Параметр -md5 сообщает<br />
GRUB, что в качестве пароля требуется значение в формате MD5. Если он пропущен, GRUB предполагает,<br />
что указанный пароль – обычный текст. При установке ASPLinux загрузчик GRUB устанавливается без оп-<br />
ции password и, следовательно, строки, содержащей пароль в зашифрованном виде, в вашем конфигура-<br />
ционном файле не будет. Для установки пароля выполните:<br />
[root@drwalbr /]# grub-md5-crypt<br />
Password:SecretnoeSlovo<br />
$1$RFEae/$MxXN6ck3laZMTy8ajwINk0<br />
В результате выполнения команды пароль автоматически будет занесен в конфигурационный файл.<br />
После использования команды новый пароль уже записан в конфигурационном файле.<br />
Опция title<br />
используется для определения имени варианта загружаемой системы. Она очень полезна при использовании<br />
нескольких операционных систем. В данном случае введите любую строку.<br />
Опция root<br />
один из самых важных параметров GRUB. Используется для определения текущего корневого устройства<br />
при загрузке операционной системы. Как видите, определение параметра несколько необычно. Приведем<br />
объяснение его значений:<br />
• параметр hd0 означает использование всего диска;<br />
• параметр hd0, 0 обозначает использование раздела диска (или загрузочного сектора раздела при<br />
инсталляции GRUB).<br />
Обозначение hd здесь не обозначает диски SCSI и IDE, хотя для них используется аналогичная сим-<br />
волика.<br />
Опция kernel<br />
используется для загрузки начального изображения (т. е. ядра). Параметр для этой опции – просто путь, где<br />
GRUB должен найти нужное изображение ядра для загрузки. Дополнительные строки – для сообщения того,<br />
что изображение ядра расположено в разделе sda5, и что необходимо загружать его в режиме доступа<br />
только для чтения, из соображений безопасности.<br />
Опция initrd<br />
является дополнительной и появляется в конфигурационном файле GRUB, если есть SCSI-устройства. Для<br />
компьютера с IDE жестким диском эта опция не нужна. Параметр просто сообщает программе GRUB, где<br />
находится начальный образ виртуального диска.</p>
<p><strong>Файл /etc/services</strong></p>
<p>Номера портов, которые используются службами, определены в RFC 1700. Файл /etc/services<br />
дает возможность серверу и клиентским программам устанавливать соответствие между названиями служб<br />
и номерами (портов). Только суперпользователю root должно быть разрешено вносить изменения в этот<br />
файл. Для этого установите запрет на внесение изменений в файл /etc/services:<br />
[root@drwalbr /]# chattr +i /etc/services</p>
<p><strong>Файл /etc/security</strong></p>
<p>Этот файл позволяет определить, на каких консолях (tty и vc устройствах) разрешена регистрация<br />
суперпользователя root. Файл /etc/security читается программой, отвечающей за регистрацию в сис-<br />
теме (/bin/login). Формат файла – список разрешенных tty и vc.<br />
Отключите все ненужные tty и vc устройства. Настоятельно рекомендуется разрешить регистрацию<br />
суперпользователя root только с двух консолей, для этого в файле /etc/security закомментируйте или<br />
удалите лишние строки:<br />
vc/1<br />
#vc/2<br />
#vc/3<br />
#vc/4<br />
#vc/5<br />
#vc/6<br />
#vc/7<br />
#vc/8<br />
#vc/9<br />
#vc/10<br />
#vc/11<br />
tty1<br />
#tty2<br />
#tty3<br />
#tty4<br />
#tty5<br />
#tty6<br />
#tty7<br />
#tty8<br />
#tty9<br />
#tty10<br />
#tty10</p>
<p><strong>Специальные учетные записи</strong></p>
<p>Удалите все создаваемые при установке и неиспользуемые при работе сервера учетные записи. Эту<br />
операцию следует выполнять после каждого обновления или инсталляции программного обеспечения. Про-<br />
грамма установки ASPLinux устанавливает дополнительные учетные записи операционной системы, даже<br />
если соответствующие им службы не установлены на сервере. Наличие неиспользуемых учетных записей<br />
упрощает несанкционированный доступ к системе.<br />
Шаг 1<br />
Удаление учетной записи пользователя из системы осуществляется с помощью команды вида:<br />
[root@drwalbr /]# userdel username<br />
Сведения о пользователях, имеющих учетные записи на системе, содержатся в файле /etc/passwd:<br />
root:x:0:0:root:/root:/bin/bash<br />
bin:x:1:1:bin:/bin:/sbin/nologin<br />
daemon:x:2:2:daemon:/sbin:/sbin/nologin<br />
adm:x:3:4:adm:/var/adm:/sbin/nologin<br />
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin<br />
sync:x:5:0:sync:/sbin:/bin/sync<br />
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown<br />
halt:x:7:0:halt:/sbin:/sbin/halt<br />
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin<br />
news:x:9:13:news:/var/spool/news:<br />
uucp:x:10:14:uucp:/var/spool/uucp:/sbin/nologin<br />
operator:x:11:0:operator:/root:/sbin/nologin<br />
games:x:12:100:games:/usr/games:/sbin/nologin<br />
gopher:x:13:30:gopher:/var/gopher:/sbin/nologin<br />
ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin<br />
nobody:x:99:99:Nobody:/:/sbin/nologin<br />
vcsa:x:69:69:virtual console memory owner:/dev:/sbin/nologin<br />
rpm:x:37:37::/var/lib/rpm:/bin/bash<br />
mailnull:x:47:47::/var/spool/mqueue:/dev/null<br />
Необходимо удалить пользователей, учетные записи которых выделены жирным шрифтом.<br />
Шаг 2<br />
Удаление группы пользователей осуществляется с помощью команды:<br />
[root@drwalbr /]# groupdel groupname<br />
Сведения о группах пользователей содержатся в файле /etc/group:<br />
root:x:0:root<br />
bin:x:1:root,bin,daemon<br />
daemon:x:2:root,bin,daemon<br />
sys:x:3:root,bin,adm<br />
adm:x:4:root,adm,daemon<br />
tty:x:5:<br />
disk:x:6:root<br />
lp:x:7:daemon,lp<br />
mem:x:8:<br />
kmem:x:9:<br />
wheel:x:10:root<br />
mail:x:12:mail<br />
news:x:13:news<br />
uucp:x:14:uucp<br />
man:x:15:<br />
games:x:20:<br />
gopher:x:30:<br />
dip:x:40:<br />
ftp:x:50:<br />
lock:x:54:<br />
nobody:x:99:<br />
users:x:100:<br />
floppy:x:19:<br />
vcsa:x:69:<br />
utmp:x:22:<br />
rpm:x:37:<br />
mailnull:x:47:<br />
slocate:x:21:<br />
Необходимо удалить группы пользователей, выделенные жирным шрифтом.<br />
Шаг 4<br />
Установка атрибута immutable (т. е. запрет любых изменений) может использоваться для предот-<br />
вращения случайного удаления или перезаписи защищенного файла. Он также препятствует созданию сим-<br />
вольной ссылки к файлу, которая может использоваться для атаки, основанной на удалении файлов<br />
/etc/passwd, /etc/shadow, /etc/group или /etc/gshadow.<br />
Для установки атрибута immutable для файлов паролей и групп выполните:<br />
[root@drwalbr /]# chattr +i /etc/passwd<br />
[root@drwalbr /]# chattr +i /etc/shadow<br />
[root@drwalbr /]# chattr +i /etc/group<br />
[root@drwalbr /]# chattr +i /etc/gshadow<br />
Если в дальнейшем потребуется добавить или удалить пользователей, пароли, группу пользователей<br />
или файлы групп, или установить rpm-пакет, который автоматически добавляет нового пользователя и/или<br />
группу пользователей, вы должны снять атрибут immutable с файлов /etc/passwd, /etc/shadow,<br />
/etc/group и /etc/gshadow. Для этого:<br />
[root@drwalbr /]# chattr -i /etc/passwd<br />
[root@drwalbr /]# chattr -i /etc/shadow<br />
[root@drwalbr /]# chattr -i /etc/group<br />
[root@drwalbr /]# chattr -i /etc/gshadow</p>
<p><strong>Управление монтированием файловых систем</strong></p>
<p>Вы можете управлять монтированием файловых систем, размещенных на отдельных разделах диска,<br />
с использованием опций монтирования файловых систем:<br />
• defaults – все операции (quota, read-write и suid) разрешены;<br />
• noquota – отсутствуют квоты для пользователей;<br />
• nosuid – отсутствует доступ SUID/SGID;<br />
• nodev – отсутствует доступ к символьным или специальным устройствам;<br />
• noexec – запрещено выполнение любых файлов;<br />
• quota – все пользователи имеют квоты;<br />
• ro – разрешен доступ только для чтения;<br />
• rw – разрешен доступ чтения и записи;<br />
• suid – разрешен доступ SUID/SGID.<br />
Шаг 1<br />
Отредактируйте файл /etc/fstab в соответствии с вашими потребностями, например, заменив<br />
строки:<br />
/dev/hda13 /usr ext3 defaults 0 1<br />
/dev/hda14 /tmp ext3 defaults 0 1<br />
/dev/hda18 /home ext3 defaults 0 1<br />
/dev/hda16 /var/lib ext3 defaults 0 1<br />
на:<br />
/dev/hda13 /usr ext3 Defaults, ro0 1<br />
/dev/hda14 /tmp ext3 defaults, nosuid 0 1<br />
/dev/hda18 /home ext3 defaults, nosuid, noexec 0 1<br />
/dev/hda16 /var/lib ext3 defaults, nodev 0 1<br />
Шаг 2<br />
Для перемонтирования файловых систем с новыми опциями выполните:<br />
[root@drwalbr /]# mount /usr -oremount<br />
[root@drwalbr /]# mount /var/lib -oremount<br />
[root@drwalbr /]# mount /home -oremount<br />
[root@drwalbr /]# mount /tmp -oremount<br />
Проверить правильность монтирования файловых систем можно с помощью команды:<br />
[root@drwalbr/]# cat /proc/mounts<br />
Полезно смонтировать каталог /usr, в который устанавливаются основные пользовательские про-<br />
граммы, с опцией ro (только чтение). При этом устраняется возможность замены критичных, с точки зрения<br />
безопасности системы, файлов.<br />
ЗАМЕЧАНИЕ При установке программ из исходных кодов или rpm-пакетов в указанный каталог необ-<br />
ходимо перемонтировать его без опции ro. Для этого удалите из файла /etc/fstab опцию ro и перемонти-<br />
руйте каталог с помощью команды mount -oremount.</p>
<p><strong>Права доступа к файлам сценариев запуска и остановки процессов</strong></p>
<p>В каталоге /etc/init.d находятся файлы сценариев запуска и остановки процессов, запускаемых<br />
при загрузке системы. Обычным пользователям, а также злоумышленникам, получившим права доступа<br />
обычных пользователей, совершенно не обязательно знать, что находится в этих файлах. Поэтому настоя-<br />
тельно рекомендуем разрешить доступ к этим файлам (чтение, запись и исполнение) только пользователю<br />
root:<br />
[root@drwalbr /]# chmod 0700 /etc/init.d/*<br />
При установке программы, использующей сценарий в каталоге /etc/init.d, не забывайте прове-<br />
рять права доступа к вновь созданному или измененному сценарию.</p>
<p><strong>Специальные символы у программ, владельцем которых является root</strong></p>
<p>Обычный пользователь сможет выполнить программу с правами суперпользователя root, если в<br />
правах доступа к файлу программы установлен, так называемый, SUID или SGID бит (символ &#8220;s&#8221; в правах<br />
доступа, например, -rwsr-xr-x или -r-xr-sr-x допускаемый символ). Поскольку эти программы пре-<br />
доставляют специальные привилегии пользователю, который их выполняет, важно удалить SUID и SGID из<br />
прав доступа файлов программ, владельцем которых является root, и которые не должны выполняться<br />
другими пользователями. Это делается следующим образом.<br />
Шаг 1<br />
Для получения списка программ, имеющих в правах доступа SUID или SGID-биты, выполните:<br />
[root@drwalbr /]# find / -type f \( -perm -04000 -o -perm -02000 \) -exec<br />
ls -l {} \;<br />
-rwsr-xr-x 1 root root 60104 Июл 29 20:34 /bin/mount<br />
-rwsr-xr-x 1 root root 30664 Июл 29 20:34 /bin/umount<br />
-rwsr-xr-x 1 root root 35040 Июн 19 2002 /bin/ping<br />
-rwsr-xr-x 1 root root 19072 Июн 10 2002 /bin/su<br />
-r-xr-sr-x 1 root tty 6920 Июн 10 2002 /usr/bin/wall<br />
-rwsr-xr-x 1 root root 34680 Июн 4 2002 /usr/bin/chage<br />
-rwsr-xr-x 1 root root 36032 Июн 4 2002 /usr/bin/gpasswd<br />
-rws&#8211;x&#8211;x 1 root root 12104 Июл 29 20:34 /usr/bin/chfn<br />
-rws&#8211;x&#8211;x 1 root root 11496 Июл 29 20:34 /usr/bin/chsh<br />
-rws&#8211;x&#8211;x 1 root root 4764 Июл 29 20:34 /usr/bin/newgrp<br />
-rwxr-sr-x 1 root tty 9008 Июл 29 20:34 /usr/bin/write<br />
-rwsr-xr-x 1 root root 21044 Июн 4 2002 /usr/bin/crontab<br />
-rwxr-sr-x 1 root mail 17767 Июн 4 2002 /usr/bin/lockfile<br />
-r-s&#8211;x&#8211;x 1 root root 15080 Июн 4 2002 /usr/bin/passwd<br />
-rwxr-sr-x 1 root slocate 30422 Июн 4 2002 /usr/bin/slocate<br />
-rwsr-xr-x 1 root root 32797 Июн 19 2002 /usr/sbin/ping6<br />
-rwsr-xr-x 1 root root 14033 Июн 19 2002 /usr/sbin/ traceroute6<br />
-rwsr-xr-x 1 root root 17413 Июл 11 2002<br />
/usr/sbin/usernetctl<br />
-rwxr-sr-x 1 root utmp 6372 Июн 4 2002<br />
/usr/sbin/utempter<br />
-rws&#8211;x&#8211;x 1 root root 22388 Июн 4 2002<br />
/usr/sbin/userhelper<br />
-rwxr-sr-x 1 root root 14609 Июл 11 2002 /sbin/netreport<br />
-r-sr-xr-x 1 root root 109384 Июл 29 14:12 /sbin/pwdb_chkpwd<br />
-r-sr-xr-x 1 root root 16072 Июл 29 14:12 /sbin/unix_chkpwd<br />
find / -type f \( -perm -2 -o -perm -20 \) -exec ls -ldg {} \;<br />
Шаг 2<br />
Снимите SUID-биты в правах доступа к следующим файлам:<br />
[root@drwalbr /]# chmod a-s /bin/mount<br />
[root@drwalbr /]# chmod a-s /bin/umount<br />
[root@drwalbr /]# chmod a-s /bin/ping<br />
[root@drwalbr /]# chmod a-s /usr/bin/wall<br />
[root@drwalbr /]# chmod a-s /usr/bin/chage<br />
[root@drwalbr /]# chmod a-s /usr/bin/gpasswd<br />
[root@drwalbr /]# chmod a-s /usr/bin/chfn<br />
[root@drwalbr /]# chmod a-s /usr/bin/chsh<br />
[root@drwalbr /]# chmod a-s /usr/bin/newgrp<br />
[root@drwalbr /]# chmod a-s /usr/bin/write<br />
[root@drwalbr /]# chmod a-s /usr/sbin/ping6<br />
[root@drwalbr /]# chmod a-s /usr/sbin/traceroute6<br />
[root@drwalbr /]# chmod a-s /usr/sbin/usernetctl<br />
[root@drwalbr /]# chmod a-s /sbin/netreport</p>
<p><strong>Запрещение внутренним компьютерам сообщать серверу свой MAC-адрес</strong></p>
<p>Злоумышленник может легко изменить IP-адрес своего компьютера и представиться в виде другого<br />
компьютера для вашей системы. Для исключения (осложнения) реализации такого мероприятия следует за-<br />
претить всем локальным компьютерам в вашей сети сообщать серверу свой MAC (Media Access Control) и<br />
IP-адрес.<br />
Для этого необходимо сделать следующее.<br />
Шаг 1<br />
Для каждого компьютера в сети узнайте его MAC-адрес:<br />
[root@drwalbr /]# ifconfig<br />
eth0 Link encap:Ethernet HWaddr 00:80:48:CB:BD:73<br />
inet addr:172.16.181.103 Bcast:172.16.181.255<br />
Mask:255.255.255.0<br />
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1<br />
RX packets:1 errors:0 dropped:0 overruns:0 frame:0<br />
TX packets:26 errors:0 dropped:0 overruns:0 carrier:0<br />
collisions:0 txqueuelen:100<br />
RX bytes:250 (250.0 b) TX bytes:2996 (2.9 Kb)<br />
Interrupt:11 Base address:0xc000<br />
lo Link encap:Local Loopback<br />
inet addr:127.0.0.1 Mask:255.0.0.0<br />
UP LOOPBACK RUNNING MTU:16436 Metric:1<br />
RX packets:10 errors:0 dropped:0 overruns:0 frame:0<br />
TX packets:10 errors:0 dropped:0 overruns:0 carrier:0<br />
collisions:0 txqueuelen:0<br />
RX bytes:700 (700.0 b) TX bytes:700 (700.0 b)<br />
MAC-адресом компьютера являются символы, стоящие после HWaddr в первой строке вывода ко-<br />
манды ifconfig. В данном примере - 00:80:48:CB:BD:73.<br />
Шаг 2<br />
После определения MAC-адреса, соответствующего определенному IP-адресу, их нужно добавить в<br />
ARP таблицу сервера:<br />
[root@drwalbr /]# arp -s 172.16.181.103 00:80:48:CB:BD:73<br />
или:<br />
[root@drwalbr /]# arp -s karlnext.und 00:80:48:CB:BD:73<br />
Шаг 3<br />
Проверьте правильность внесенных изменений:<br />
[root@drwalbr /]# arp<br />
Address Hwtype Hwaddress Flags Mask Iface<br />
…<br />
karlnext.und ether 00:80:48:CB:73:00 CM eth0<br />
Шаг 4<br />
Для того, чтобы внесенные нами изменения сохранились при перезагрузке системы, добавьте в конец<br />
файла /etc/rc.local строку:<br />
arp -s 172.16.181.103 00:80:48:CB:BD:73<br />
или:<br />
arp -s karlnext.und 00:80:48:CB:BD:73<br />
Теперь в случае изменения IP-адреса компьютера karlnext сервер не будет отвечать на его запросы.</p>
<p><strong>Необычные или скрытые файлы</strong></p>
<p>Проверьте систему на предмет наличия необычных или скрытых файлов (файлы, которые начинаются<br />
с точки и обычно не отображающиеся в выводе команды ls), поскольку они могут использоваться для<br />
скрытия инструментальных программ, используемых для получения информации о системе.<br />
Для поиска скрытых файлов наберите:<br />
[root@drwalbr /]# find / -name &#8220;.. &#8221; -print –xdev<br />
или:<br />
[root@drwalbr /]# find / -name &#8220;.*&#8221; -print -xdev | cat -v</p>
<p><strong>Обнаружение файлов и каталогов, изменяемых любым пользователем</strong></p>
<p>Файлы и каталоги, изменяемые любым пользователем, особенно системные файлы, могут стать бре-<br />
шью в защите, если взломщик программной защиты получит доступ к вашей системе и изменит их. Кроме<br />
того, общедоступные каталоги опасны, так как они позволяют злоумышленникам добавлять или удалять<br />
файлы в этих каталогах как им вздумается. Для поиска общедоступных файлов и каталогов выполните:<br />
[root@drwalbr /]# find / -type f \( -perm -2 -о -perm -20 \) -exec ls -lg<br />
{} \;<br />
-rw-rw-r&#8211; 1 root utmp 92928 Янв 16 18:37 /var/log/wtmp<br />
-rw-rw-r&#8211; 1 root utmp 4224 Янв 16 18:37 /var/run/utmp<br />
и:<br />
[root@drwalbr /]# find / -type d \( -perm -2 -о -perm -20 \) -exec ls -<br />
ldg {} \;<br />
drwxrwxr-x 12 root man 4096 Дек 23 16:23<br />
/var/cache/man/X11R6<br />
drwxrwxr-x 2 root man 4096 Июн 11 2002<br />
/var/cache/man/X11R6/cat1<br />
drwxrwxr-x 2 root man 4096 Июн 11 2002<br />
/var/cache/man/X11R6/cat2<br />
drwxrwxr-x 2 root man 4096 Июн 11 2002<br />
/var/cache/man/X11R6/cat3<br />
drwxrwxr-x 2 root man 4096 Июн 11 2002<br />
/var/cache/man/X11R6/cat4<br />
drwxrwxr-x 2 root man 4096 Июн 11 2002<br />
/var/cache/man/X11R6/cat5<br />
drwxrwxr-x 2 root man 4096 Июн 11 2002<br />
/var/cache/man/X11R6/cat6<br />
drwxrwxr-x 2 root man 4096 Июн 11 2002<br />
/var/cache/man/X11R6/cat7<br />
drwxrwxr-x 2 root man 4096 Июн 11 2002<br />
/var/cache/man/X11R6/cat8<br />
drwxrwxr-x 2 root man 4096 Июн 11 2002<br />
/var/cache/man/X11R6/cat9<br />
drwxrwxr-x 2 root man 4096 Июн 11 2002<br />
/var/cache/man/X11R6/catn<br />
drwxrwxr-x 2 root man 4096 Июн 11 2002<br />
/var/cache/man/cat1<br />
drwxrwxr-x 2 root man 4096 Июн 11 2002<br />
/var/cache/man/cat2<br />
drwxrwxr-x 2 root man 4096 Июн 11 2002<br />
/var/cache/man/cat3<br />
drwxrwxr-x 2 root man 4096 Июн 11 2002<br />
/var/cache/man/cat4<br />
drwxrwxr-x 2 root man 4096 Июн 11 2002<br />
/var/cache/man/cat5<br />
drwxrwxr-x 2 root man 4096 Июн 11 2002<br />
/var/cache/man/cat6<br />
drwxrwxr-x 2 root man 4096 Июн 11 2002<br />
/var/cache/man/cat7<br />
drwxrwxr-x 2 root man 4096 Июн 11 2002<br />
/var/cache/man/cat8<br />
drwxrwxr-x 2 root man 4096 Июн 11 2002<br />
/var/cache/man/cat9<br />
drwxrwxr-x 2 root man 4096 Июн 11 2002<br />
/var/cache/man/catn<br />
drwxrwxr-x 12 root man 4096 Дек 23 16:23<br />
/var/cache/man/local<br />
drwxrwxr-x 2 root man 4096 Июн 11 2002<br />
/var/cache/man/local/cat1<br />
drwxrwxr-x 2 root man 4096 Июн 11 2002<br />
/var/cache/man/local/cat2<br />
drwxrwxr-x 2 root man 4096 Июн 11 2002<br />
/var/cache/man/local/cat3<br />
drwxrwxr-x 2 root man 4096 Июн 11 2002<br />
/var/cache/man/local/cat4<br />
drwxrwxr-x 2 root man 4096 Июн 11 2002<br />
/var/cache/man/local/cat5<br />
drwxrwxr-x 2 root man 4096 Июн 11 2002<br />
/var/cache/man/local/cat6<br />
drwxrwxr-x 2 root man 4096 Июн 11 2002<br />
/var/cache/man/local/cat7<br />
drwxrwxr-x 2 root man 4096 Июн 11 2002<br />
/var/cache/man/local/cat8<br />
drwxrwxr-x 2 root man 4096 Июн 11 2002<br />
/var/cache/man/local/cat9<br />
drwxrwxr-x 2 root man 4096 Июн 11 2002<br />
/var/cache/man/local/catn<br />
drwxrwxr-x 3 root lock 4096 Янв 16 18:37 /var/lock<br />
drwxrwxr-x 2 root root 4096 Июл 11 2002<br />
/var/run/netreport<br />
drwxrwxr-x 2 root mail 4096 Янв 16 18:37 /var/spool/mail<br />
drwxrwxrwt 2 root root 4096 Дек 23 16:23 /var/tmp<br />
drwxrwxrwt 4 root root 4096 Янв 16 18:37 /tmp<br />
drwxrwxrwt 2 root root 0 Янв 16 18:31 /dev/shm<br />
Для поиска общедоступных файлов и каталогов можно также воспользоваться и программой<br />
tripwire.</p>
<p><strong>Файлы без владельцев</strong></p>
<p>Не допускайте наличия в системе любых файлов, не имеющих владельцев, кроме находящихся в ка-<br />
талоге /dev. Появление таких файлов может также служить сигналом, что злоумышленник проник в систе-<br />
му. Если найден файл или каталог, не имеющий владельца, проверьте целостность системы, и если все нор-<br />
мально, задайте имя владельца. Иногда после удаления программы могут появиться файлы или каталоги,<br />
связанные с ней и не имеющие владельцев. В этом случае их можно просто удалить.<br />
Для поиска файлов и каталогов без владельцев выполните:<br />
[root@drwalbr /]# find / -nouser -o -nogroup</p>
<p><strong>Поиск файлов .rhosts</strong></p>
<p>Поиск всех существующих .rhosts файлов на сервере должен стать частью вашей обычной работы<br />
по администрированию системы. Наличие этих файлов недопустимо, т:к они могут использоваться для по-<br />
лучения несанкционированного доступа к вашей системе.<br />
Для поиска файлов .rhosts выполните:<br />
[root@drwalbr /]# find /home -name .rhosts<br />
В случае обнаружения таких файлов их нужно уничтожить.</p>
<p><strong>Копии файлов регистрации на жестких носителях и удаленных системах</strong></p>
<p>Одним из самых важных принципов безопасности является обеспечение целостности различных фай-<br />
лов регистрации в каталоге сервера /var/log. Критически важные сообщения могут быть также выведены<br />
на принтер с использованием программы syslog. Взломщик может изменить файлы, программы и т. д. на<br />
вашем сервере, но ничего не сможет сделать с реальными бумажными копиями.<br />
Для распечатки на принтере, подключенном к вашей системе, всех telnet-соединений, почтовых со-<br />
общений, сообщений начальной загрузки и ssh-соединений сделайте следующее.<br />
Шаг 1<br />
На вашей системе добавьте в конец файла /etc/syslog.conf строку:<br />
authpriv.*;mail.*;local7.*; auth.*;daemon.info /dev/lp0<br />
Шаг 2<br />
Перезапустите службу syslog:<br />
[root@drwalbr /]# /etc/init.d/syslog restart<br />
Останавливается служба журналирования ядра: [ОК]<br />
Останавливается служба журналирования системы: [ОК]<br />
Запускается служба журналирования системы: [ОК]<br />
Запускается служба журналирования ядра: [ОК]<br />
Для распечатки на принтере, подключенном к удаленной системе, всех telnet-соединений, почтовых<br />
сообщений, сообщений начальной загрузки и ssh-соединений сделайте следующее.<br />
Шаг 1<br />
Добавьте в конец файла /etc/syslog.conf на удаленной системе строку:<br />
authpriv.*;mail.*;local7.*;auth.*;daemon.info /dev/lp0<br />
Если в вашей сети нет принтера, скопируйте регистрационные файлы на другую машину. Для этого<br />
не выполняйте первый шаг, а переходите сразу ко второму.<br />
Шаг 2<br />
Для включения возможности получения по сети сообщений от других систем, на удаленной системе в<br />
файле /etc/rc.d/init.d/syslog замените строку:<br />
SYSLOGD_OPTIONS=&#8221;-m 0&#8243;<br />
на:<br />
SYSLOGD_OPTIONS=&#8221;-r -m 0&#8243;<br />
Шаг 3<br />
Перезапустите службу syslog на удаленной системе:<br />
[root@mail /]# etc/init.d/syslog restart<br />
Останавливается служба журналирования ядра: [ОК]<br />
Останавливается служба журналирования системы: [ОК]<br />
Запускается служба журналирования системы: [ОК]<br />
Запускается служба журналирования ядра: [ОК]<br />
Шаг 4<br />
Отредактируйте файл /etc/syslog.conf на локальной системе и добавьте в конец этого файла<br />
следующую строку:<br />
authpriv.*;mail.*;local7.*;auth.*;daemon.info NameRemouteHost<br />
Вместо NameRemouteHost используйте имя удаленной системы, на которую осуществляется ко-<br />
пирование файлов регистрации.<br />
Шаг 5<br />
Перезапустите службу syslog на локальной системе:<br />
[root@mail /]# etc/init.d/syslog restart<br />
Останавливается служба журналирования ядра: [ОК]<br />
Останавливается служба журналирования системы: [ОК]<br />
Запускается служба журналирования системы: [ОК]<br />
Запускается служба журналирования ядра: [ОК]</p>
<p><strong>Удаление страниц руководства</strong></p>
<p>Страницы руководства, также известные как man-страницы – это сжатые файлы, расположенные в ка-<br />
талоге /usr/share/man системы. Файлы документации очень полезны для получения быстрой информа-<br />
ции о работе различных служб, программ, команд и синтаксисе различных конфигурационных файлов. Эти<br />
файлы читаются man-программой. Их место– на рабочей станции администратора сервера. Авторы реко-<br />
мендуют удалить страницы руководства и программы, необходимые для их просмотра, c целью увеличения<br />
объема свободного места на дисках и некоторого увеличения безопасности системы.<br />
Шаг 1<br />
Удалите программу man:<br />
[root@drwalbr /]# rpm -e man<br />
Шаг 2<br />
Удалите программу groff, используемую программой man для форматирования страниц:<br />
[root@drwalbr /]# rpm -e groff<br />
Шаг 3<br />
Удалите файлы архивов, содержащие страницы руководства:<br />
[root@drwalbr /]# cd /usr/share/man/<br />
[root@drwalbr man]# rm -f man*/*.gz<br />
ЗАМЕЧАНИЕ В дальнейшем инсталляцию и обновление rpm-пакетов нужно осуществлять с использо-<br />
ванием опции -excludedocs. При этом страницы руководства не устанавливаются.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.compyuteri.ru/glava-3-obshhie-meropriyatiya-po-obespecheniyu-bezopasnosti-servera/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Глава 4. Дополнительные модули аутентификации</title>
		<link>http://www.compyuteri.ru/glava-4-dopolnitelnye-moduli-autentifikacii/</link>
		<comments>http://www.compyuteri.ru/glava-4-dopolnitelnye-moduli-autentifikacii/#comments</comments>
		<pubDate>Sat, 13 Sep 2008 17:39:20 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[Часть 01. Инсталляция операционной системы Linux на сер]]></category>

		<category><![CDATA[root]]></category>

		<category><![CDATA[su]]></category>

		<category><![CDATA[sudo]]></category>

		<category><![CDATA[аутентификация]]></category>

		<category><![CDATA[логин]]></category>

		<category><![CDATA[модули]]></category>

		<category><![CDATA[пароли]]></category>

		<category><![CDATA[пользователи]]></category>

		<category><![CDATA[службы]]></category>

		<category><![CDATA[суперпользователь]]></category>

		<guid isPermaLink="false">http://www.compyuteri.ru/?p=79</guid>
		<description><![CDATA[В этой главе:
1. Допустимая минимальная длина пароля
2. Таблица управления доступом входа в систему
3. Удаление из системы ненужных привилегированных пользователей
4. Наложение ограничений на ресурсы, выделяемые пользователям системы
5. Управление временем доступа к службам
6. Ограничение использования команды su root
7. Использование команды sudo вместо su для регистрации в качестве суперпользователя
Дополнительные модули аутентификации (РАМ – Pluggable Authentication Modules) включают дина-
мические [...]]]></description>
			<content:encoded><![CDATA[<p>В этой главе:<br />
1. Допустимая минимальная длина пароля<br />
2. Таблица управления доступом входа в систему<br />
3. Удаление из системы ненужных привилегированных пользователей<br />
4. Наложение ограничений на ресурсы, выделяемые пользователям системы<br />
5. Управление временем доступа к службам<br />
6. Ограничение использования команды su root<br />
7. Использование команды sudo вместо su для регистрации в качестве суперпользователя</p>
<p>Дополнительные модули аутентификации (РАМ – Pluggable Authentication Modules) включают дина-<br />
мические библиотеки, которые дают администраторам возможность выбора методов подтверждения под-<br />
линности пользователей.<br />
PАМ разрешает применение различных опознавательных схем. Это достигается использованием биб-<br />
лиотеки функций, которую используют приложения для идентификации пользователей. SSH, POP, IMAP и<br />
т. д. – приложения, использующие спецификацию PAM. Для них может быть изменен метод ввода пароля,<br />
например, не с консоли, а с голоса или по отпечаткам пальцев, путем изменения РАМ-модулей без необхо-<br />
димости перезаписи самих кодов приложений.<br />
Конфигурационные файлы модулей PAM расположены в каталоге /etc/pam.d, а сами модули (ди-<br />
намические библиотеки) расположены в каталоге /lib/security. Каталог /etc/pam.d содержит фай-<br />
лы, названные в соответствии с использующими их приложениями, например, SSH, POP, IMAP и т. д., ука-<br />
зывающие на заданный по умолчанию конфигурационный файл other.<br />
В этой главе будут рассмотрены некоторые настройки PAM, улучшающие безопасность системы.</p>
<p><strong>Допустимая минимальная длина пароля</strong></p>
<p>Длина пароля при использовании настройки PAM управляется пятью параметрами: minlen,<br />
dcredit, ucredit, lcredit и ocredit.<br />
Параметр minlen=N определяет допустимое минимальное количество символов в новом пароле.<br />
Допустимое минимальное количество символов в пароле уменьшается на величину, равную значению<br />
параметров:<br />
• dcredit - используемой в пароле цифры;<br />
• ucredit - для каждого используемого в пароле символа в верхнем регистре;<br />
• lcredit - для каждого используемого в пароле символа в нижнем регистре;<br />
• ocredit - для каждого используемого в пароле специального символа.<br />
Значения параметров dcredit, ucredit, lcredit и ocredit равны единице.<br />
Для задания приемлемого минимального количества символов длины пароля, например, равного 12, в<br />
файле /etc/pam.d/system-auth раскомментируйте строку:<br />
#password required /lib/security/pam_cracklib.so retry=3<br />
и добавьте параметр minlen=12:<br />
password required /lib/security/pam_cracklib.so retry=3 minlen=12<br />
Теперь попробуем установить пароль из девяти символов – Wsvhl_Faz. Пароль благополучно уста-<br />
новится. Что и следовало ожидать. Максимально допустимая длина пароля (12 символов) уменьшилась на 3<br />
из-за одного специального символа &#8220;_&#8221; и двух букв в верхнем регистре &#8220;W&#8221; и &#8220;F&#8221;.</p>
<p><strong>Таблица управления доступом входа в систему</strong></p>
<p>В каталоге /etc/security находится файл access.conf, с помощью которого можно ограни-<br />
чить доступ для различных пользователей и IP-адресов к вашей системе. Предположим, что у нас имеется<br />
Linux-сервер, к администрированию которого допущены только два пользователя – drwalbr и karlnext.<br />
Шаг 1<br />
Одним из вариантов ограничения доступа к серверу является добавление в файл<br />
/etc/security/access.conf строки:<br />
-:ALL EXCEPT root drwalbr karlnext:ALL<br />
При этом доступ к консоли сервера будет запрещен с любой другой системы для всех пользователей,<br />
кроме root, drwalbr и karlnext. А для последних пользователей доступ будет разрешен откуда угодно.<br />
Для разрешения только удаленного доступа к серверу пользователям root, drwalbr и karlnext с<br />
рабочей станции 192.168.2.99 в файл /etc/security/access.conf нужно добавить (подредактировать<br />
предыдущую строку):<br />
-:ALL EXCEPT root drwalbr karlnext: 192.168.2.99<br />
и добавить еще одну:<br />
-:ALL: LOCAL<br />
Последняя строка запрещает локальный доступ всех пользователей, в том числе и root.<br />
Шаг 2<br />
Для того, чтобы настройки, внесенные в файл /etc/security/access.conf, в последующем<br />
(когда вы установите OpenSSH) могли использоваться средствами удаленного администрирования SSH, в<br />
файлы /etc/pam.d/system-auth и /etc/pam.d/sshd необходимо добавить (проверить наличие)<br />
строки:<br />
ассоunt required /lib/security/раm_access.so</p>
<p><strong>Удаление из системы ненужных привилегированных пользователей</strong></p>
<p>Файл безопасности /etc/security/console.perms, используемый модулем<br />
pam_console.so, предназначен для выделения привилегированным пользователям физической возмож-<br />
ности использования консоли (виртуальных консолей и локальных xdm-управляемых X-сеансов).<br />
ЗАМЕЧАНИЕ Обратите внимание, что привилегированные пользователи не имеют ничего общего с<br />
обычными пользователями. Это пользователи, соответствующие устройствам, подобно дисководу, CD-ROM,<br />
сканеру, и т. п., которые в среде сетевой операционной системы также считаются пользователями.<br />
Файл /etc/security/console.perms устанавливаемый по умолчанию:<br />
#<br />
# This file determines the permissions that will be given to priviledged<br />
# users of the console at login time, and the permissions to which to<br />
# revert when the users log out.<br />
# format is:<br />
# <class>=list of regexps specifying consoles or globs specifying files<br />
# file-glob|<class> perm dev-regex|<dev-class> \<br />
# revert-mode revert-owner[.revert-group]<br />
# the revert-mode, revert-owner, and revert-group are optional, and default<br />
# to 0600, root, and root, respectively.<br />
#<br />
# For more information:<br />
# man 5 console.perms<br />
# file classes &#8212; these are regular expressions<br />
<console>=tty[0-9][0-9]* vc/[0-9][0-9]* :[0-9]\.[0-9] :[0-9]<br />
<xconsole>=:[0-9]\.[0-9] :[0-9]<br />
# device classes &#8212; these are shell-style globs<br />
<floppy>=/dev/fd[0-1]* \<br />
/dev/floppy/* /mnt/floppy*<br />
<sound>=/dev/dsp* /dev/audio* /dev/midi* \<br />
/dev/mixer* /dev/sequencer \<br />
/dev/sound/* /dev/beep<br />
<cdrom>=/dev/cdrom* /dev/cdroms/* /dev/cdwriter* /mnt/cdrom*</p>
<pilot>=/dev/pilot<br />
<jaz>=/mnt/jaz*<br />
<zip>=/mnt/pocketzip* /mnt/zip*<br />
<ls120>=/dev/ls120 /mnt/ls120*<br />
<scanner>=/dev/scanner /dev/usb/scanner*<br />
<rio500>=/dev/usb/rio500<br />
<camera>=/mnt/camera* /dev/usb/dc2xx* /dev/usb/mdc800*<br />
<memstick>=/mnt/memstick*<br />
<flash>=/mnt/flash*<br />
<diskonkey>=/mnt/diskonkey*<br />
<rem_ide>=/mnt/microdrive*<br />
<fb>=/dev/fb /dev/fb[0-9]* \<br />
/dev/fb/*<br />
<kbd>=/dev/kbd<br />
<joystick>=/dev/js[0-9]*<br />
<v4l>=/dev/video* /dev/radio* /dev/winradio* /dev/vtx* /dev/vbi* \<br />
/dev/video/*<br />
<gpm>=/dev/gpmctl<br />
<dri>=/dev/3dfx*<br />
<mainboard>=/dev/apm_bios<br />
# permission definitions<br />
<console> 0660 <floppy> 0660 root.floppy<br />
<console> 0600 <sound> 0600 root<br />
<console> 0600 <cdrom> 0660 root.disk<br />
<console> 0600
<pilot> 0660 root.uucp<br />
<console> 0600 <jaz> 0660 root.disk<br />
<console> 0600 <zip> 0660 root.disk<br />
<console> 0600 <ls120> 0660 root.disk<br />
<console> 0600 <scanner> 0600 root<br />
<console> 0600 <camera> 0600 root<br />
<console> 0600 <memstick> 0600 root<br />
<console> 0600 <flash> 0600 root<br />
<console> 0600 <diskonkey> 0660 root.disk<br />
<console> 0600 <rem_ide> 0660 root.disk<br />
<console> 0600 <fb> 0600 root<br />
<console> 0600 <kbd> 0600 root<br />
<console> 0600 <joystick> 0600 root<br />
<console> 0600 <v4l> 0600 root<br />
<console> 0700 <gpm> 0700 root<br />
<console> 0600 <mainboard> 0600 root<br />
<console> 0600 <rio500> 0600 root<br />
<xconsole> 0600 /dev/console 0600 root.root<br />
<xconsole> 0600 <dri> 0600 root<br />
является достаточно безопасным для правильного использования системы с интерфейсом Xwindow. Но в<br />
среде без графической оболочки пользователя (GUI – Graphical User Interface) и специальных устройств, на-<br />
подобие звуковым картам, джойстикам, сканерам, Web-камерам, накопителям zip, jaz и т. д., для повышения<br />
безопасности удалите всех несуществующих или ненужных привилегированных пользователей из файла:<br />
#file classes &#8212; these are regular expressions<br />
<console>=tty[0-9][0-9]* vc/[0-9][0-9]* :[0-9]\.[0-9] :[0-9]<br />
#device classes &#8212; these are shell-style globs<br />
<floppy>=/dev/fd[0-1]* \<br />
/dev/floppy/* /mnt/floppy*<br />
<cdrom>=/dev/cdrom* /dev/cdroms/* /dev/cdwriter* /mnt/cdrom*</p>
<pilot>=/dev/pilot<br />
<fb>=/dev/fb /dev/fb[0-9]* \<br />
/dev/fb/*<br />
<kbd>=/dev/kbd<br />
/dev/video/*<br />
<gpm>=/dev/gpmctl<br />
<mainboard>=/dev/apm_bios<br />
# permission definitions<br />
<console> 0660 <floppy> 0660 root.floppy<br />
<console> 0600 <cdrom> 0660 root.disk<br />
<console> 0600
<pilot> 0660 root.uucp<br />
<console> 0600 <fb> 0600 root<br />
<console> 0600 <kbd> 0600 root<br />
<console> 0600 <v4l> 0600 root<br />
<console> 0700 <gpm> 0700 root<br />
<console> 0600 <mainboard> 0600 root</p>
<p><strong>Наложение ограничений на ресурсы, выделяемые пользователям системы</strong></p>
<p>Файл /etc/security/limits.conf может использоваться для наложения ограничений на ре-<br />
сурсы (число выполняемых процессов, объем памяти и т. д.), выделяемые пользователям системы. Файл, ус-<br />
танавливаемый по умолчанию, не накладывает никаких ограничений на объем ресурсов, выделяемых поль-<br />
зователям системы:<br />
# /etc/security/limits.conf<br />
#<br />
#Each line describes a limit for a user in the form:<br />
#<br />
#<domain> <type> <item> <value><br />
#<br />
#Where:<br />
#<domain> can be:<br />
# - an user name<br />
# - a group name, with @group syntax<br />
# - the wildcard *, for default entry<br />
#<br />
#<type> can have the two values:<br />
# - &#8220;soft&#8221; for enforcing the soft limits<br />
# - &#8220;hard&#8221; for enforcing hard limits<br />
#<br />
#<item> can be one of the following:<br />
# - core - limits the core file size (KB)<br />
# - data - max data size (KB)<br />
# - fsize - maximum filesize (KB)<br />
# - memlock - max locked-in-memory address space (KB)<br />
# - nofile - max number of open files<br />
# - rss - max resident set size (KB)<br />
# - stack - max stack size (KB)<br />
# - cpu - max CPU time (MIN)<br />
# - nproc - max number of processes<br />
# - as - address space limit<br />
# - maxlogins - max number of logins for this user<br />
# - priority - the priority to run user process with<br />
# - locks - max number of file locks the user can hold<br />
#<br />
#<domain> <type> <item> <value><br />
#<br />
#* soft core 0<br />
#* hard rss 10000<br />
#@student hard nproc 20<br />
#@faculty soft nproc 20<br />
#@faculty hard nproc 50<br />
#ftp hard nproc 0<br />
#@student - maxlogins 4<br />
# End of file<br />
И это, не смотря на то, что указанные ограничения существенно затруднили бы со стороны пользова-<br />
телей системы реализацию атак типа отказа в обслуживании. В предположении, что все обычные пользова-<br />
тели вашей системы входят в группу users для установления ограничений в файл<br />
/etc/security/limits.conf добавьте следующие строки:<br />
@users hard core 0<br />
@users hard rss 5000<br />
@users hard nproc 30<br />
В результате для всех пользователей из группы users будет запрещено создание файлов с образами<br />
памяти приложений, объем используемой оперативной памяти ограничится 5 МБайт, а число запускаемых<br />
процессов – тридцатью.<br />
ЗАМЕЧАНИЕ При добавлении новых пользователей не забудьте указать, что они входят в группу users.</p>
<p><strong>Управление временем доступа к службам</strong></p>
<p>С помощью файла безопасности /etc/security/time.conf, в случае необходимости, можно ог-<br />
раничить время доступа к различным службам. Файл time.conf может быть cконфигурирован для запрета<br />
доступа ко всем или некоторым службам сервера различным пользователям. Дополнительная селекция мо-<br />
жет осуществляться по временным интервалам, консолям, именам машин и их IP-адресам.<br />
Шаг 1<br />
Для регистрации на сервере в рабочее время только пользователей karlnext и root в файл<br />
/etc/security/time.conf добавьте следующую строку:<br />
login;tty* &#038; !ttyp*; !root &#038; karlnext &#038; ; !Al0900-1900<br />
Шаг 2<br />
Для реализации возможности использования настроек в предыдущем файле в файл<br />
/etc/pam.d/system-auth и /etc/pam.d/sshd (если вы используете SSH для удаленного админист-<br />
рирования сервера) добавьте (проверьте наличие строки):<br />
account required /lib/security/pam_time.so</p>
<p><strong>Ограничение использования команды su root</strong></p>
<p>Команда su (substitute user) позволяет открывать сеансы под именами других пользователей системы,<br />
запускать программы и выполнять команды от их имени и с их правами доступа.<br />
Для открытия сеанса суперпользователя root используется команда:<br />
[root@drwalbr /]# su root<br />
Password:<br />
Авторы рекомендуют не использовать команду su, либо строго ограничить круг пользователей, кото-<br />
рому использование этой команды разрешено.<br />
Шаг 1<br />
В файле /etc/pam.d/su раскомментируйте (добавьте строку):<br />
auth required /lib/security/pam_wheel.so use_uid<br />
В этом случае использование команды su будет разрешено только пользователям из специальной<br />
группы<br />
Шаг 2<br />
Для того, чтобы некоторый пользователь системы, например karlnext, мог использовать команду,<br />
ему в качестве дополнительной группы нужно добавить группу wheel:<br />
[root@drwalbr /]# usermod –G wheel karlnext<br />
В файле /etc/pam.d/su имеется строка:<br />
#auth sufficient /lib/security/pam_wheel.so trust use_uid<br />
раскомментировав которую, можно разрешить пользователям из группы wheel разрешить выполнять ко-<br />
манду su root без ввода пароля. Авторы не рекомендуют использовать эту опцию.</p>
<p><strong>Использование команды sudo вместо su для регистрации в качестве суперпользователя</strong></p>
<p>Программа sudo, также как и команда su, позволяет выполнять команды от имени и с полномочия-<br />
ми другого пользователя, но более безопасным и информативным способом. Используя sudo, вы получите<br />
полную информацию о том, кто вошел в систему как суперпользователь root, а также много другой полез-<br />
ной информации. Инсталляция и настройка sudo рассматривается далее в отдельной главе.<br />
Если вы планируете использовать sudo, удалите SUID-бит из файла /bin/su:<br />
[root@drwalbr /]# chmod a-s /bin/su</p>
]]></content:encoded>
			<wfw:commentRss>http://www.compyuteri.ru/glava-4-dopolnitelnye-moduli-autentifikacii/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Глава 5. Оптимизация операционной системы</title>
		<link>http://www.compyuteri.ru/glava-5-optimizaciya-operacionnoj-sistemy/</link>
		<comments>http://www.compyuteri.ru/glava-5-optimizaciya-operacionnoj-sistemy/#comments</comments>
		<pubDate>Sat, 13 Sep 2008 17:32:31 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[Часть 01. Инсталляция операционной системы Linux на сер]]></category>

		<category><![CDATA[gcc specs]]></category>

		<category><![CDATA[Glibc 2.2]]></category>

		<category><![CDATA[HDD]]></category>

		<category><![CDATA[IDE]]></category>

		<category><![CDATA[библиотеки]]></category>

		<category><![CDATA[диски]]></category>

		<category><![CDATA[оптимизация]]></category>

		<category><![CDATA[ОС]]></category>

		<guid isPermaLink="false">http://www.compyuteri.ru/?p=77</guid>
		<description><![CDATA[В этой главе:
1. Статические и динамические библиотеки
2. Библиотеки Linux Glibc 2.2
3. Почему Linux-программы распространяются в исходных кодах
4. Файл gcc specs
5. Удаление комментариев из исполняемых файлов и библиотек
6. Оптимизация настроек жесткого диска с IDE-интерфейсом
Если вы следовали нашим рекомендациям, то на сервере установлены пакеты программ для его
функционирования, обеспечения безопасности и компиляции программ. Перед тем как начать установку [...]]]></description>
			<content:encoded><![CDATA[<p>В этой главе:<br />
1. Статические и динамические библиотеки<br />
2. Библиотеки Linux Glibc 2.2<br />
3. Почему Linux-программы распространяются в исходных кодах<br />
4. Файл gcc specs<br />
5. Удаление комментариев из исполняемых файлов и библиотек<br />
6. Оптимизация настроек жесткого диска с IDE-интерфейсом</p>
<p>Если вы следовали нашим рекомендациям, то на сервере установлены пакеты программ для его<br />
функционирования, обеспечения безопасности и компиляции программ. Перед тем как начать установку не-<br />
обходимых служб, необходимо выполнить ряд операций, повышающих быстродействие сервера.</p>
<p><strong>Статические и динамические библиотеки</strong></p>
<p>Во время компиляции исходных кодов большинства программ на последней стадии осуществляется<br />
связь кода программы с кодами Linux-библиотек. Эти библиотеки поставляются в динамическом и статиче-<br />
ском формате и содержат общий системный код, который хранится в одном месте и совместно использует-<br />
ся различными программами. Обычно на Linux-системах файлы библиотек находятся в каталогах /lib,<br />
/usr/lib и /usr/share. По умолчанию Linux использует динамические библиотеки, а если он не может<br />
найти их, то статические.<br />
При использовании статической библиотеки, компилятор находит фрагменты кода, которые требуют-<br />
ся для модулей программы, и копирует их непосредственно в исполняемый файл. При использовании дина-<br />
мических библиотек компилятор вставляет ссылку, в которой указывает на необходимость загрузки опреде-<br />
ленной библиотеки перед началом выполнения программы.<br />
С одной стороны, при статической компоновке программ в случае выявления ошибки в одной из биб-<br />
лиотек, влияющей на безопасность системы, система будет потенциально уязвимой до тех пор, пока не бу-<br />
дут перекомпилированы все программы, содержащие код соответствующей библиотеки. С другой стороны,<br />
при динамической компоновке программ система потенциально уязвима к атакам, направленным на моди-<br />
фикацию библиотечных файлов, а уязвимость системы, вызванная ошибкой в библиотеке, может быть уст-<br />
ранена путем ее замены.<br />
Другим достоинством статической компоновки является то, что процесс инсталляции программного<br />
обеспечения упрощается и может быть осуществлен при отсутствии доступа к библиотечным файлам. На<br />
сильно загруженных системах использование статических библиотек негативно влияет на производитель-<br />
ность системы, поэтому в этом случае использование динамических библиотек более предпочтительно.<br />
Таким образом:<br />
• если вы хотите компилировать программу, используя динамические библиотеки, необходимо ис-<br />
пользовать следующие флаги компилятора:<br />
CFLAGS = &#8220;-О2-march=i686 -funroll-loops&#8221;; export CFLAGS<br />
./Configure \<br />
• если хотите компилировать, используя статические библиотеки, необходимо использовать следую-<br />
щие флаги компилятора:<br />
CFLAGS=&#8221;-О2 -static -march=i686 -funroll-loops&#8221;; export CFLAGS<br />
./Configure \<br />
&#8211;disabled-shared\<br />
ЗАМЕЧАНИЕ В Linux статические библиотеки имеют имена вида libc.a, а динамические библиотеки –<br />
.libc.so.x.y.z, где x.y.z - номер версии.</p>
<p><strong>Библиотеки Linux Glibc 2.2</strong></p>
<p>Библиотека Glibc 2.2 пришла на смену libc4 и libc5 и является последней версией GNU биб-<br />
лиотеки языка C для Linux. Она содержит стандартные библиотеки, используемые различными программа-<br />
ми. Этот специфический пакет содержит самые важные наборы динамических и статических библиотек, ко-<br />
торый обеспечивает основные функциональные возможности ядра для запуска программ C. Без них Linux-<br />
система не смогла бы функционировать.<br />
По умолчанию в ASPLinux и во многих других дистрибутивах этот пакет для повышения совмести-<br />
мости устанавливается сконфигурированным для работы c процессором i386. Поэтому для того, чтобы наши<br />
рекомендации по повышению производительности сервера за счет использования программ, откомпилиро-<br />
ванных для конкретной версии процессора, оказались наиболее действенными, необходимо установить вер-<br />
сию пакета Glibc 2.2 для соответствующего процессора. Если использовать файл, устанавливаемый по<br />
умолчанию, часть кода программы, использующая код библиотек, не будет оптимизирована для работы с<br />
версией процессора, отличной от i386.</p>
<p><strong>Почему Linux-программы распространяются в исходных кодах</strong></p>
<p>Первоначально Linux был разработан как операционная система, предназначенная для работы на раз-<br />
личных платформах. Поэтому наиболее простым способом распространения программного обеспечения яв-<br />
ляется распространение исходного кода программы и последующая ее компиляция. Создатели программно-<br />
го обеспечения не всегда могут знать, на какой версии процессора (i386,i486, Pentium и т. д.) будут выпол-<br />
няться их коды. Поэтому для обеспечения межплатформенной совместимости предварительно откомпили-<br />
рованное программное обеспечение поставляется в версии для процессора i386 и, естественно, не учитыва-<br />
ются дополнительные особенности более современных процессоров, например, набор команд MMX или 3D<br />
Now! Естественно, при использовании предварительно откомпилированного программного обеспечения не<br />
может быть достигнута максимальная производительность системы, если вы, конечно, не используете про-<br />
цессор i386.<br />
Опции компилятора, грамотное использование которых позволяет получить исполняемые файлы, оп-<br />
тимизированы для заданной архитектуры центрального процессора. Описание опций, используемых при<br />
компиляции исходных кодов программ применительно к различным процессорам, приведено ниже. Первый<br />
параметр, который необходимо установить – это тип центрального процессора. Это делается с помощью<br />
флага &#8220;-march=cpu_type&#8221; (архитектура процессора). Например, &#8220;-march=i686&#8243; или &#8220;-march=k6&#8243; по-<br />
зволяет компилятору выбирать соответствующий вариант оптимизации для конкретного процессора.<br />
Вы можете установить значение флага &#8220;-O&#8221; от 1 до 3, указав компилятору степень оптимизации. Зна-<br />
чение &#8220;-O3&#8243; позволяет создавать исполняемые файлы, имеющие максимальное быстродействие.<br />
Следующим этапом является установка флага &#8220;-f&#8221; , который может принимать значение &#8220;-<br />
funroll-loops&#8221; и &#8220;-fomit-frame-pointer&#8221;.<br />
ЗАМЕЧАНИЕ Компиляция с опцией выключателя &#8220;-fomit-frame-pointer&#8221; будет использовать стек для об-<br />
ращения к переменным. К сожалению, отладка программ при установке этой опции, как правило, невозможна.<br />
Также, обратите внимание, что во флаге &#8220;O3&#8243; первым символом является заглавная буква &#8220;O&#8221;.<br />
Учитывая вышеизложенное, мы предлагаем компилировать программное обеспечение со следующи-<br />
ми флагами:<br />
CFLAGS = &#8220;-O2-march=i686 -funroll-loops&#8221;<br />
Мы не используем флаги &#8220;-O3&#8243; и &#8220;-fomit-frame-pointer&#8221;, так как они не всегда хорошо рабо-<br />
тают при компиляции некоторого программного обеспечения.</p>
<p><strong>Файл gcc specs</strong></p>
<p>Файл /usr/lib/gcc-lib/i386-asplinux-linux/2.96/specs содержит набор установок<br />
для компилятора gcc и будет использован нами для задания параметров компиляции.<br />
Шаг 1<br />
Проверьте версию компилятора, установленную на вашей системе:<br />
[root@drwalbr /]# gcc -v<br />
Reading specs from /usr/lib/gcc-lib/i386-asplinux/2.96/specs<br />
gcc version 2.96 20000731 (ASPLinux 7.3 2.96-112)<br />
Шаг 2<br />
Для процессоров i686 или PentiumPro, Pentium II, Pentium III и Athlon откройте файл<br />
/usr/lib/gcc-lib/i386-redhat-linux/2.96/specs.В ниже приведенном фрагменте:<br />
*cpp_cpu_default:<br />
-D__tune_i386__<br />
*cpp_cpu:<br />
-Acpu(i386) -Amachine(i386) %{!ansi:-Di386} -D__i386 -D__i386__<br />
%{march=i386:%{!mcpu*:-D__tune_i386__ }}%{march=i486:-D__i486 -D__i486__<br />
%{!mcpu*:-D__tune_i486__ }}%{march=pentium|march=i586:-D__pentium -<br />
D__pentium__ %{!mcpu*:-D__tune_pentium__<br />
}}%{march=pentiumpro|march=i686:-D__pentiumpro -D__pentiumpro__<br />
%{!mcpu*:-D__tune_pentiumpro__ }}%{march=k6:-D__k6 -D__k6__ %{!mcpu*:-<br />
D__tune_k6__ }}%{march=athlon:-D__athlon -D__athlon__ %{!mcpu*:-<br />
D__tune_athlon__ }}%{m386|mcpu=i386:-D__tune_i386__ }%{m486|mcpu=i486:-<br />
D__tune_i486__ }%{mpentium|mcpu=pentium|mcpu=i586:-D__tune_pentium__<br />
}%{mpentiumpro|mcpu=pentiumpro|mcpu=i686:-D__tune_pentiumpro__<br />
}%{mcpu=k6:-D__tune_k6__ }%{mcpu=athlon:-D__tune_athlon__<br />
}%{!march*:%{!mcpu*:%{!m386:%{!m486:%{!mpentium*:%(cpp_cpu_default)}}}}}<br />
*cc1_cpu:<br />
%{!mcpu*: %{m386:-mcpu=i386} %{m486:-mcpu=i486} %{mpentium:-mcpu=pentium}<br />
%{mpentiumpro:-mcpu=pentiumpro}}<br />
сделайте следующие исправления:<br />
*cpp_cpu_default:<br />
-D__tune_i686__<br />
*cpp_cpu:<br />
-Acpu(i386) -Amachine(i386) %{!ansi:-Di386} -D__i386 -D__i386__<br />
%{march=i386:%{!mcpu*:-D__tune_i386__ }}%{march=i486:-D__i486 -D__i486__<br />
%{!mcpu*:-D__tune_i486__ }}%{march=pentium|march=i586:-D__pentium -<br />
D__pentium__ %{!mcpu*:-D__tune_pentium__<br />
}}%{march=pentiumpro|march=i686:-D__pentiumpro -D__pentiumpro__<br />
%{!mcpu*:-D__tune_pentiumpro__ }}%{march=k6:-D__k6 -D__k6__ %{!mcpu*:-<br />
D__tune_k6__ }}%{march=athlon:-D__athlon -D__athlon__ %{!mcpu*:-<br />
D__tune_athlon__ }}%{m386|mcpu=i386:-D__tune_i386__ }%{m486|mcpu=i486:-<br />
D__tune_i486__ }%{mpentium|mcpu=pentium|mcpu=i586:-D__tune_pentium__<br />
}%{mpentiumpro|mcpu=pentiumpro|mcpu=i686:-D__tune_pentiumpro__<br />
}%{mcpu=k6:-D__tune_k6__ }%{mcpu=athlon:-D__tune_athlon__<br />
}%{!march*:%{!mcpu*:%{!m386:%{!m486:%{!mpentium*:%(cpp_cpu_default)}}}}}<br />
*cc1_cpu:<br />
%{!mcpu*: -O2 –march=i686 –funroll-loops %{m386:-mcpu=i386} %{m486:-<br />
mcpu=i486} %{mpentium:-mcpu=pentium} %{mpentiumpro:-mcpu=pentiumpro}}<br />
ЗАМЕЧАНИЕ Мы используем флаг &#8220;-O2&#8243; (большая буква &#8220;O&#8221; два), а не &#8220;-02&#8243; (ноль два).<br />
Для процессоров i586 и Pentium откройте файл /usr/lib/gcc-lib/i386-redhatlinux/<br />
2.96/specs. В ниже приведенном фрагменте:<br />
*cpp_cpu_default:<br />
-D__tune_i386__<br />
*cpp_cpu:<br />
-Acpu(i386) -Amachine(i386) %{!ansi:-Di386} -D__i386 -D__i386__<br />
%{march=i386:%{!mcpu*:-D__tune_i386__ }}%{march=i486:-D__i486 -D__i486__<br />
%{!mcpu*:-D__tune_i486__ }}%{march=pentium|march=i586:-D__pentium -<br />
D__pentium__ %{!mcpu*:-D__tune_pentium__<br />
}}%{march=pentiumpro|march=i686:-D__pentiumpro -D__pentiumpro__<br />
%{!mcpu*:-D__tune_pentiumpro__ }}%{march=k6:-D__k6 -D__k6__ %{!mcpu*:-<br />
D__tune_k6__ }}%{march=athlon:-D__athlon -D__athlon__ %{!mcpu*:-<br />
D__tune_athlon__ }}%{m386|mcpu=i386:-D__tune_i386__ }%{m486|mcpu=i486:-<br />
D__tune_i486__ }%{mpentium|mcpu=pentium|mcpu=i586:-D__tune_pentium__<br />
}%{mpentiumpro|mcpu=pentiumpro|mcpu=i686:-D__tune_pentiumpro__<br />
}%{mcpu=k6:-D__tune_k6__ }%{mcpu=athlon:-D__tune_athlon__<br />
}%{!march*:%{!mcpu*:%{!m386:%{!m486:%{!mpentium*:%(cpp_cpu_default)}}}}}<br />
*cc1_cpu:<br />
%{!mcpu*: %{m386:-mcpu=i386} %{m486:-mcpu=i486} %{mpentium:-mcpu=pentium}<br />
%{mpentiumpro:-mcpu=pentiumpro}}<br />
сделайте следующие исправления:<br />
*cpp_cpu_default:<br />
-D__tune_i586__<br />
*cpp_cpu:<br />
-Acpu(i386) -Amachine(i386) %{!ansi:-Di386} -D__i386 -D__i386__<br />
%{march=i386:%{!mcpu*:-D__tune_i386__ }}%{march=i486:-D__i486 -D__i486__<br />
%{!mcpu*:-D__tune_i486__ }}%{march=pentium|march=i586:-D__pentium -<br />
D__pentium__ %{!mcpu*:-D__tune_pentium__<br />
}}%{march=pentiumpro|march=i686:-D__pentiumpro -D__pentiumpro__<br />
%{!mcpu*:-D__tune_pentiumpro__ }}%{march=k6:-D__k6 -D__k6__ %{!mcpu*:-<br />
D__tune_k6__ }}%{march=athlon:-D__athlon -D__athlon__ %{!mcpu*:-<br />
D__tune_athlon__ }}%{m386|mcpu=i386:-D__tune_i386__ }%{m486|mcpu=i486:-<br />
D__tune_i486__ }%{mpentium|mcpu=pentium|mcpu=i586:-D__tune_pentium__<br />
}%{mpentiumpro|mcpu=pentiumpro|mcpu=i686:-D__tune_pentiumpro__<br />
}%{mcpu=k6:-D__tune_k6__ }%{mcpu=athlon:-D__tune_athlon__<br />
}%{!march*:%{!mcpu*:%{!m386:%{!m486:%{!mpentium*:%(cpp_cpu_default)}}}}}<br />
*cc1_cpu:<br />
%{!mcpu*: -O2 –march=i586 –funroll-loops %{m386:-mcpu=i386} %{m486:-<br />
mcpu=i486} %{mpentium:-mcpu=pentium} %{mpentiumpro:-mcpu=pentiumpro}}<br />
ЗАМЕЧАНИЕ Мы используем флаг &#8220;-O2&#8243; (большая буква &#8220;O&#8221; два), а не &#8220;-02&#8243; (ноль два).<br />
Для процессоров i486 откройте файл /usr/lib/gcc-lib/i386-redhat-linux/2.96/specs.<br />
В ниже приведенном фрагменте:<br />
*cpp_cpu_default:<br />
-D__tune_i386__<br />
*cpp_cpu:<br />
-Acpu(i386) -Amachine(i386) %{!ansi:-Di386} -D__i386 -D__i386__<br />
%{march=i386:%{!mcpu*:-D__tune_i386__ }}%{march=i486:-D__i486 -D__i486__<br />
%{!mcpu*:-D__tune_i486__ }}%{march=pentium|march=i586:-D__pentium -<br />
D__pentium__ %{!mcpu*:-D__tune_pentium__<br />
}}%{march=pentiumpro|march=i686:-D__pentiumpro -D__pentiumpro__<br />
%{!mcpu*:-D__tune_pentiumpro__ }}%{march=k6:-D__k6 -D__k6__ %{!mcpu*:-<br />
D__tune_k6__ }}%{march=athlon:-D__athlon -D__athlon__ %{!mcpu*:-<br />
D__tune_athlon__ }}%{m386|mcpu=i386:-D__tune_i386__ }%{m486|mcpu=i486:-<br />
D__tune_i486__ }%{mpentium|mcpu=pentium|mcpu=i586:-D__tune_pentium__<br />
}%{mpentiumpro|mcpu=pentiumpro|mcpu=i686:-D__tune_pentiumpro__<br />
}%{mcpu=k6:-D__tune_k6__ }%{mcpu=athlon:-D__tune_athlon__<br />
}%{!march*:%{!mcpu*:%{!m386:%{!m486:%{!mpentium*:%(cpp_cpu_default)}}}}}<br />
*cc1_cpu:<br />
%{!mcpu*: %{m386:-mcpu=i386} %{m486:-mcpu=i486} %{mpentium:-mcpu=pentium}<br />
%{mpentiumpro:-mcpu=pentiumpro}}<br />
сделайте следующие исправления:<br />
*cpp_cpu_default:<br />
-D__tune_i486__<br />
*cpp_cpu:<br />
-Acpu(i386) -Amachine(i386) %{!ansi:-Di386} -D__i386 -D__i386__<br />
%{march=i386:%{!mcpu*:-D__tune_i386__ }}%{march=i486:-D__i486 -D__i486__<br />
%{!mcpu*:-D__tune_i486__ }}%{march=pentium|march=i586:-D__pentium -<br />
D__pentium__ %{!mcpu*:-D__tune_pentium__<br />
}}%{march=pentiumpro|march=i686:-D__pentiumpro -D__pentiumpro__<br />
%{!mcpu*:-D__tune_pentiumpro__ }}%{march=k6:-D__k6 -D__k6__ %{!mcpu*:-<br />
D__tune_k6__ }}%{march=athlon:-D__athlon -D__athlon__ %{!mcpu*:-<br />
D__tune_athlon__ }}%{m386|mcpu=i386:-D__tune_i386__ }%{m486|mcpu=i486:-<br />
D__tune_i486__ }%{mpentium|mcpu=pentium|mcpu=i586:-D__tune_pentium__<br />
}%{mpentiumpro|mcpu=pentiumpro|mcpu=i686:-D__tune_pentiumpro__<br />
}%{mcpu=k6:-D__tune_k6__ }%{mcpu=athlon:-D__tune_athlon__<br />
}%{!march*:%{!mcpu*:%{!m386:%{!m486:%{!mpentium*:%(cpp_cpu_default)}}}}}<br />
*cc1_cpu:<br />
%{!mcpu*: -O2 –march=i486 –funroll-loops %{m386:-mcpu=i386} %{m486:-<br />
mcpu=i486} %{mpentium:-mcpu=pentium} %{mpentiumpro:-mcpu=pentiumpro}}<br />
ЗАМЕЧАНИЕ Мы используем флаг &#8220;-O2&#8243; (большая буква &#8220;O&#8221; два), а не &#8220;-02&#8243; (ноль два).<br />
Для процессоров AMD K6 или K6-2 откройте файл /usr/lib/gcc-lib/i386-redhatlinux/<br />
2.96/specs. В ниже приведенном фрагменте:<br />
*cpp_cpu_default:<br />
-D__tune_i386__<br />
*cpp_cpu:<br />
-Acpu(i386) -Amachine(i386) %{!ansi:-Di386} -D__i386 -D__i386__<br />
%{march=i386:%{!mcpu*:-D__tune_i386__ }}%{march=i486:-D__i486 -D__i486__<br />
%{!mcpu*:-D__tune_i486__ }}%{march=pentium|march=i586:-D__pentium -<br />
D__pentium__ %{!mcpu*:-D__tune_pentium__<br />
}}%{march=pentiumpro|march=i686:-D__pentiumpro -D__pentiumpro__<br />
%{!mcpu*:-D__tune_pentiumpro__ }}%{march=k6:-D__k6 -D__k6__ %{!mcpu*:-<br />
D__tune_k6__ }}%{march=athlon:-D__athlon -D__athlon__ %{!mcpu*:-<br />
D__tune_athlon__ }}%{m386|mcpu=i386:-D__tune_i386__ }%{m486|mcpu=i486:-<br />
D__tune_i486__ }%{mpentium|mcpu=pentium|mcpu=i586:-D__tune_pentium__<br />
}%{mpentiumpro|mcpu=pentiumpro|mcpu=i686:-D__tune_pentiumpro__<br />
}%{mcpu=k6:-D__tune_k6__ }%{mcpu=athlon:-D__tune_athlon__<br />
}%{!march*:%{!mcpu*:%{!m386:%{!m486:%{!mpentium*:%(cpp_cpu_default)}}}}}<br />
*cc1_cpu:<br />
%{!mcpu*: %{m386:-mcpu=i386} %{m486:-mcpu=i486} %{mpentium:-mcpu=pentium}<br />
%{mpentiumpro:-mcpu=pentiumpro}}<br />
сделайте следующие исправления:<br />
*cpp_cpu_default:<br />
-D__tune_k6__<br />
*cpp_cpu:<br />
-Acpu(i386) -Amachine(i386) %{!ansi:-Di386} -D__i386 -D__i386__<br />
%{march=i386:%{!mcpu*:-D__tune_i386__ }}%{march=i486:-D__i486 -D__i486__<br />
%{!mcpu*:-D__tune_i486__ }}%{march=pentium|march=i586:-D__pentium -<br />
D__pentium__ %{!mcpu*:-D__tune_pentium__<br />
}}%{march=pentiumpro|march=i686:-D__pentiumpro -D__pentiumpro__<br />
%{!mcpu*:-D__tune_pentiumpro__ }}%{march=k6:-D__k6 -D__k6__ %{!mcpu*:-<br />
D__tune_k6__ }}%{march=athlon:-D__athlon -D__athlon__ %{!mcpu*:-<br />
D__tune_athlon__ }}%{m386|mcpu=i386:-D__tune_i386__ }%{m486|mcpu=i486:-<br />
D__tune_i486__ }%{mpentium|mcpu=pentium|mcpu=i586:-D__tune_pentium__<br />
}%{mpentiumpro|mcpu=pentiumpro|mcpu=i686:-D__tune_pentiumpro__<br />
}%{mcpu=k6:-D__tune_k6__ }%{mcpu=athlon:-D__tune_athlon__<br />
}%{!march*:%{!mcpu*:%{!m386:%{!m486:%{!mpentium*:%(cpp_cpu_default)}}}}}<br />
*cc1_cpu:<br />
%{!mcpu*: -O2 –march=k6 –funroll-loops %{m386:-mcpu=i386} %{m486:-<br />
mcpu=i486} %{mpentium:-mcpu=pentium} %{mpentiumpro:-mcpu=pentiumpro}}<br />
ЗАМЕЧАНИЕ Мы используем флаг &#8220;-O2&#8243; (большая буква &#8220;O&#8221; два), а не &#8220;-02&#8243; (ноль два).<br />
Шаг 3<br />
Для проверки работоспособности внесенных изменений выполните следующие команды:<br />
[root@drwalbr /]# touch cpu.c<br />
[root@drwalbr /]# gcc cpu.c –S –fverbose-sam<br />
[root@drwalbr /]# less cpu.c<br />
Если на экран будет выведено нечто подобное:<br />
.file &#8220;cc9xBgp3.i&#8221;<br />
.version &#8220;01.01&#8243;<br />
# GNU C version 2.96 20000731 (ASPLinux 7.3 2.96-112) (i386-asplinuxlinux)<br />
compiled by GNU C version 2.96 20000731 (ASPLinux 7.3 2.96-112).<br />
# options passed: -O2 -march=i686 -funroll-loops -fverbose-asm<br />
# options enabled: -fdefer-pop -foptimize-sibling-calls -fcse-followjumps<br />
# -fcse-skip-blocks -fexpensive-optimizations -fthread-jumps<br />
# -fstrength-reduce -funroll-loops -fpeephole -fforce-mem -ffunction-cse<br />
# -finline -fkeep-static-consts -fcaller-saves -fpcc-struct-return -fgcse<br />
# -frerun-cse-after-loop -frerun-loop-opt -fdelete-null-pointer-checks<br />
# -fschedule-insns2 -fsched-interblock -fsched-spec -fbranch-count-reg<br />
# -fnew-exceptions -fcommon -fverbose-asm -fgnu-linker -fregmove<br />
# -foptimize-register-move -fargument-alias -fstrict-aliasing<br />
# -fmerge-constants -fident -fpeephole2 -fmath-errno -m80387 -mhard-float<br />
# -mno-soft-float -mieee-fp -mfp-ret-in-387 -march=i686<br />
gcc2_compiled.:<br />
.ident &#8220;GCC: (GNU) 2.96 20000731 (ASPLinux 7.3 2.96-112)&#8221;<br />
то внесенные вами изменения работают.</p>
<p><strong>Удаление комментариев из исполняемых файлов и библиотек</strong></p>
<p>На этапе компиляции программы в нее добавляется много различных комментариев. Это делается для<br />
удобства отладки программного обеспечения. Для повышения быстродействия системы и сокращения раз-<br />
мера исполняемых и библиотечных файлов эти комментарии необходимо удалить. Что может быть выпол-<br />
нено при помощи команды strip Linux. При использовании команды необходимо соблюдать некоторые<br />
меры предосторожности, о которых мы расскажем ниже. Неаккуратное использование команды strip мо-<br />
жет привести к непредсказуемым последствиям. Важно помнить, что не все бинарные файлы, особенно<br />
файлы библиотек, должны быть отредактированы с использованием этой команды, а только часть из них.<br />
Этот метод повышения производительности системы может быть применен на серверах, на которых не<br />
осуществляется компиляция программного обеспечения, либо на сервере, на котором откомпилировано и<br />
установлено все необходимое для его работы программное обеспечение.<br />
Шаг 1<br />
Прежде всего, необходимо убедиться, что команда strip доступна на вашем сервере. Если она не<br />
установлена, то необходимо установить пакет binutils, входящий в дистрибутив ASPLinux, используя<br />
рекомендации раздела «Как использовать команды rpm» главы 2.<br />
Шаг 2<br />
Для очистки исполняемых файлов в директориях /bin, /sbin, /usr/bin и /usr/sbin необхо-<br />
димо выполнить следующие команды:<br />
[root@drwalbr /]# strip /bin/*<br />
[root@drwalbr /]# strip /sbin/*<br />
[root@drwalbr /]# strip /usr/bin/*<br />
[root@drwalbr /]# strip /usr/sbin/*<br />
ЗАМЕЧАНИЕ При выполнении этих команд вы увидите несколько сообщений об ошибках:<br />
&#8220;File format not recognized&#8221;.<br />
Это обусловлено тем, что в директориях /bin, /sbin, /usr/bin и /usr/sbin содержатся не только исполняе-<br />
мые файлы, но и символьные ссылки на них, а программа strip не умеет их обрабатывать.<br />
Шаг 3<br />
Для очистки файлов библиотек необходимо выполнить следующие команды:<br />
[root@drwalbr /]# strip –R .comment /usr/lib/*.so.*<br />
[root@drwalbr /]# strip –R .comment /lib/*.so.*<br />
ЗАМЕЧАНИЕ Опция &#8220;-R&#8221; в команде strip позволяет нам задавать названия фрагментов, удаляемых из<br />
библиотек. С помощью &#8220;.comment&#8221; мы сообщаем команде, что необходимо удалять любые строки, содержа-<br />
щие &#8220;.comment&#8221;</p>
<p><strong>Оптимизация настроек жесткого диска с IDE-интерфейсом</strong></p>
<p>Доступ к информации на жестком диске осуществляется в 50…100 раз медленнее, чем к данным в<br />
оперативной памяти. Именно поэтому настройка быстродействия жесткого диска является критичной, с<br />
точки зрения обеспечения максимальной производительности сервера<br />
Настройки ASPLinux по умолчанию позволяют обеспечить максимум совместимости. Вы же, хорошо<br />
зная особенности диска и материнской платы, можете изменить настройки, обеспечив максимум производи-<br />
тельности. Для оптимизации настроек жесткого диска с интерфейсом IDE используется команда hdparm.<br />
Ускорение в работе на операции ввода-вывода достигается путем специализированных IDE драйверов, ис-<br />
пользования прямого доступа к памяти, 32-разрядного обмена и блочных режимов передачи данных.<br />
Следует отметить, что диски IDE/ATA разных производителей по-разному подвержены ускорению с<br />
помощью рассматриваемой утилиты. Так, лучше всего ускоряются диски Quantum (ныне Maxtor), чуть хуже<br />
– Western Digital, и совсем плохо – Fujitsu.<br />
Перед началом оптимизации диска проверьте, установлен ли пакет hdpram:<br />
[root@drwalbr /]# rpm -q hdparm<br />
package hdparm is not installed<br />
Для установки пакета необходимо вставить первый компакт-диск дистрибутива ASPLinux в дисковод<br />
и выполнить следующие команды:<br />
[root@drwalbr /]# mount /mnt/cdrom<br />
[root@drwalbr /]# cd /mnt/cdrom/ASPLinux/RPMS<br />
[root@drwalbr RPMS]# rpm –Uhv hdparm-5.1-1.asp.i386.rpm<br />
hdparm ################################################## 100%<br />
После установки пакета необходимо размонтировать компакт диск:<br />
[root@drwalbr /]# cd<br />
[root@drwalbr /]# umount /mnt/cdrom<br />
В зависимости от моделей производителей диска и системной платы будут устанавливаться различ-<br />
ные параметры оптимизации. Неправильный выбор этих параметров может привести к полному выходу<br />
диска из строя. Поэтому перед началом оптимизации необходимо изучить параметры системы.<br />
Необходимо так же проверить параметры настройки BIOS, выяснить, поддерживает ли ваша система<br />
режим DMA и включены ли параметры, обеспечивающие поддержку этого режима.<br />
Шаг 1<br />
Этот шаг применим к большинству дисков – включает 32-разрядный ввод-вывод по PCI-шинам. Эта<br />
опция – одна из самых важных и может удвоить скорость вашего диска:<br />
[root@drwalbr /]# /sbin/hdparm -c3 /dev/hda<br />
Здесь и далее предполагается, что мы оптимизируем диск /dev/hda. Опция &#8220;-c3&#8243; работает почти со<br />
всеми 32-разрядными наборами микросхем IDE. Более подробно использование этой опции описано на man-<br />
странице hdparm:<br />
[root@drwalbr /]# /sbin/man 8 hdparm -c3 /dev/hda<br />
Шаг 2<br />
Второй параметр применяется только для дисков стандарта DMA и активизирует обычный режим<br />
DMA. Такой режим поддерживается старыми DMA дисками. Для включения режима DMA выполните:<br />
[root@drwalbr /]# /sbin/hdparm –d1 /dev/hda<br />
Эта команда не только включает поддержку DMA (только для интерфейсов, поддерживающих этот<br />
режим), но и в зависимости от набора микросхем, поддерживаемых ядром системы, вдвое сокращает время<br />
считывания информации с диска.<br />
Шаг 3<br />
Протокол Multiword DMA mode 2 (максимальная скорость передачи данных - 16,6 МБ/с), также<br />
известный как ATA-2 интерфейс – более скоростной преемник DMA. Если у вас жесткий диск, поддержи-<br />
вающий этот режим, для включения режима DMA-2 выполните команду:<br />
[root@drwalbr /]# /sbin/hdparm –d1 –X34 /dev/hda<br />
Шаг 4<br />
Протокол multiword DMA mode 3, названный UltraDMA, также известный как ATA/ATAPI-4 –<br />
это дальнейшее развитие технологии DMA (максимальная скорость пакетной передачи данных - 33 МБ/с).<br />
Если у вас такой диск, то выбирайте этот режим:<br />
[root@drwalbr /]# /sbin/hdparm –d1 –X66 /dev/hda<br />
Шаг 5<br />
Протокол UltraDMA с пропускной способностью 66 МБ/с, также известный как ATA/ATAPI-5. Жест-<br />
кие диски, поддерживающие такой интерфейс, появились начиная с 1999 года. Включение поддержки про-<br />
токола осуществляется командой:<br />
[root@drwalbr /]# /sbin/hdparm –d1 –X12 –X68 /dev/hda<br />
Шаг 6<br />
Протокол UltraDMA с пропускной способностью 100 МБ/с – один из распространенных сейчас ин-<br />
терфейсов, также известен как ATA/ATAPI-6. Производители представили такие жесткие диски уже в сере-<br />
дине 2000 года, т. е. еще до официального утверждения ATA/ATAPI-5. Фактически, их объявление было<br />
приурочено к объявлению 5 июня первого чипсета, поддерживающего протокол UltraATA/100 – i820E. Мы<br />
думаем, что у большинства из вас именно такие жесткие диски. Включение поддержки протокола осуществ-<br />
ляется командой:<br />
[root@drwalbr /]# /sbin/hdparm –d1 –X12 –X70 /dev/hda<br />
Шаг 7<br />
Режим Multiple sector mode (IDE Block Mode) поддерживается большинством современных<br />
жестких дисков с IDE-интерфейсом. Этот режим позволяет сокращать количество обращений к жесткому<br />
диску на 30…50 % , увеличивая скорость передачи данных на 5…50%. Для включения режима выполните<br />
команду:<br />
[root@drwalbr /]# /sbin/hdparm –mXX /dev/hda<br />
Параметр &#8220;ХХ&#8221; представляет максимальное значение, поддерживаемое IDE/ATA диском. Для опреде-<br />
ления величины этого параметра используется опция &#8220;-i&#8221;. Посмотрите вывод значения MaxMultSect в<br />
тексте:<br />
[root@drwalbr /]# /sbin/hdparm –i /dev/hda<br />
/dev/hda:<br />
Model=QUANTUM FIREBALLP LM15, FwRev=A35.0700, SerialNo=737909725840<br />
Config={ HardSect NotMFM HdSw>15uSec Fixed DTR>IOMbs }<br />
RawCHS=16383/16/63, TrkSize=32256, SectSize=21298, ECCbytes=4<br />
BuffType=3(DualPortCache), BuffSize=1900kB, MaxMultSect=16, MultSect=16<br />
DblWordIO=no, OldPIO=2, DMA=yes, OldDMA=2<br />
CurCHS=16383/16/63, CurSects=-66060037, LBA=yes, LBAsects=29336832<br />
tDMA={min:120,rec:120}, DMA modes: mword0 mword1 mword2<br />
IORDY=on/off, tPIO={min:120,w/IORDY:120}, PIO modes: mode3 mode4<br />
UDMA modes: mode0 mode1 mode2 mode3 *mode4<br />
Шаг 8<br />
Число секторов get/set влияет на быстродействие многократного обращения к большим файлам.<br />
Значение этого параметра по умолчанию – 8 секторов (4 кБайт). Мы советуем увеличить его вдвое, для этого<br />
выполните команду:<br />
[root@drwalbr /]# /sbin/hdparm -a16 /dev/hda .<br />
Шаг 9<br />
Флаг get/set interrupt-unmask несколько увеличивает скорость обмена с жестким диском и<br />
устраняет ошибки переполнения последовательного порта. Для установки флага выполните команду:<br />
[root@drwalbr /]# /sbin/hdparm -u1 /dev/hda<br />
Шаг 10<br />
Кэширование записи также несколько увеличивает скорость обмена с жестким диском. Для включе-<br />
ния кэширования выполните команду:<br />
[root@drwalbr /]# /sbin/hdparm –W1 /dev/hda<br />
Шаг 11<br />
Эти опции позволяют сохранять параметры настройки диска при перезагрузке системы. К сожале-<br />
нию, не все диски их поддерживают. Для включения опций выполните команду:<br />
[root@drwalbr /]# /sbin/hdparm -K1 -k1 /dev/hda<br />
Шаг 12<br />
Протестировать настройки можно с помощью команды:<br />
[root@drwalbr /]# /sbin/hdparm -vtT /dev/hda<br />
/dev/hda:<br />
multcount = 16 (on)<br />
I/O support = 3 (32-bit w/sync)<br />
unmaskirq = 1 (on)<br />
using_dma = 1 (on)<br />
keepsettings = 1 (on)<br />
nowerr = 0 (off)<br />
readonly = 0 (off)<br />
readahead = 16 (on)<br />
geometry - 1826/255/63, sectors = 29336832, start = 0<br />
Timing buffer-cache reads: 128 MB in 0.85 seconds = 150.59 MB/sec<br />
Timing buffered disk reads: 64 MB in 2.54 seconds = 25.20 MB/sec<br />
ЗАМЕЧАНИЕ Использование всех перечисленных выше опций должно осуществляться с максималь-<br />
ной осторожностью, т. к. может привести к повреждению жесткого диска.<br />
После того, как выполнена установка и проверка опции hdparm в конец файла /etc/rc.local ло-<br />
гично добавить строку, запускающую hdparm с выбранными опциями, например:<br />
/sbin/hdparm -c3 -d1 -X12 -X68 -m16 -a16 -u1 -W1 -k1 -K1 /dev/hda<br />
Это позволит устанавливать требуемые опции при каждой перезагрузке системы.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.compyuteri.ru/glava-5-optimizaciya-operacionnoj-sistemy/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Глава 6. Безопасность и оптимизация ядра</title>
		<link>http://www.compyuteri.ru/glava-6-bezopasnost-i-optimizaciya-yadra/</link>
		<comments>http://www.compyuteri.ru/glava-6-bezopasnost-i-optimizaciya-yadra/#comments</comments>
		<pubDate>Sat, 13 Sep 2008 17:24:10 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[Часть 01. Инсталляция операционной системы Linux на сер]]></category>

		<category><![CDATA[Grsecurity]]></category>

		<category><![CDATA[архитектура]]></category>

		<category><![CDATA[загрузчик]]></category>

		<category><![CDATA[ядро]]></category>

		<guid isPermaLink="false">http://www.compyuteri.ru/?p=75</guid>
		<description><![CDATA[]]></description>
			<content:encoded><![CDATA[]]></content:encoded>
			<wfw:commentRss>http://www.compyuteri.ru/glava-6-bezopasnost-i-optimizaciya-yadra/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Глава 7. Псевдофайловая система /proc</title>
		<link>http://www.compyuteri.ru/glava-7-psevdofajlovaya-sistema-proc/</link>
		<comments>http://www.compyuteri.ru/glava-7-psevdofajlovaya-sistema-proc/#comments</comments>
		<pubDate>Sat, 13 Sep 2008 15:21:37 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[Часть 01. Инсталляция операционной системы Linux на сер]]></category>

		<category><![CDATA[/proc]]></category>

		<category><![CDATA[ICMP-переадресация]]></category>

		<category><![CDATA[IPv4]]></category>

		<category><![CDATA[ping-запросы]]></category>

		<category><![CDATA[SYN-атаки]]></category>

		<category><![CDATA[sysctl]]></category>

		<category><![CDATA[ФС]]></category>

		<guid isPermaLink="false">http://www.compyuteri.ru/?p=73</guid>
		<description><![CDATA[В этой главе:
1. Утилита sysctl
2. Настройка параметров подсистемы виртуальной памяти
3. Настройка параметров подсистемы IPv4
4.Установка запрета ответа на ping-запросы
5. Установка запрета ответа на широковещательные ping-запросы
6. Запрет на использование сервером информации об источнике пакета
7. Включение защиты от SYN-атак
8. ICMP-переадресация
9. Сообщения об ошибках сети
10. Включение защиты от атак, основанных на фальсификации IP-адреса
11. Включение регистрации Spoofed, Source Routed и [...]]]></description>
			<content:encoded><![CDATA[<p>В этой главе:<br />
1. Утилита sysctl<br />
2. Настройка параметров подсистемы виртуальной памяти<br />
3. Настройка параметров подсистемы IPv4<br />
4.Установка запрета ответа на ping-запросы<br />
5. Установка запрета ответа на широковещательные ping-запросы<br />
6. Запрет на использование сервером информации об источнике пакета<br />
7. Включение защиты от SYN-атак<br />
8. ICMP-переадресация<br />
9. Сообщения об ошибках сети<br />
10. Включение защиты от атак, основанных на фальсификации IP-адреса<br />
11. Включение регистрации Spoofed, Source Routed и Redirect пакетов<br />
12. Включение пересылки пакетов</p>
<p>Псевдофайловая система /proc используется как интерфейс для доступа к структурам данных ядра.<br />
Большинство каталогов в каталоге /proc имеют названия в виде десятичных чисел, совпадающих с иден-<br />
тификатором соответствующего процесса, выполняемого в системе. Файловая система /proc отображает<br />
информацию о центральном процессоре, IDE и SCSI-устройствах, прерываниях, портах ввода-вывода, памя-<br />
ти, модулях, разделах, PCI-платах и др. При этом следует учитывать, что, на самом деле, не существует ни<br />
подкаталогов /proc, ни файлов в них. В этом легко убедится, посмотрев каталог /proc на машине, в кото-<br />
рой установлены две операционные системы Linux и Windows с помощью программы для просмотра файло-<br />
вых систем Еxt2 и Еxt3, например, ext2viewer из Windows. Каталог /proc будет пустым. Содержимое<br />
этого каталога можно рассматривать как некоторые временные файлы, существующие только во время ра-<br />
боты системы. Большинство из этих файлов доступны только для чтения и, следовательно, не могут быть<br />
изменены. Изменение параметров ядра осуществляется путем редактирования конфигурационного файла<br />
/etc/sysctl.conf, используемого утилитой sysctl, либо непосредственным вызовом утилиты. В этой<br />
главе рассматриваются некоторые параметры, конфигурирующие виртуальную память и TCP/IP.</p>
<p><strong>Утилита sysctl</strong></p>
<p>Утилита sysctl – интерфейс, который позволяет изменять некоторые параметры ядра без его пере-<br />
компиляции. Более подробная информация об этой утилите может быть получена с помощью команды:<br />
[root@karlnext /]# man 8 sysctl<br />
Эта утилита позволяет считывать и изменять параметры настройки ядра.<br />
Для просмотра всех переменных выполните:<br />
[root@karlnext /]# sysctl –a<br />
Для просмотра некоторой переменной, например, fs.file-max, выполните:<br />
[root@karlnext /]# sysctl fs.file-max<br />
fs.file-max = 8192<br />
Для установки значения некоторой переменной, например, fs.file-max, выполните:<br />
[root@karlnext /]# sysctl -w fs.file-max=16384<br />
fs.file-max = 16384<br />
Изменения, внесенные с помощью команды sysctl, действуют только до перезагрузки системы.<br />
Для того, чтобы внесенные изменения сохранились после перезагрузки, необходимо изменить соответст-<br />
вующие параметры в конфигурационном файле /etc/sysctl.conf.</p>
<p><strong>Настройка параметров подсистемы виртуальной памяти</strong></p>
<p>В каталоге /proc/sys/vm находятся файлы, используемые для настройки и отображения подсисте-<br />
мы виртуальной памяти ядра. Будьте очень осторожны и внимательны при выполнении приведенных ниже<br />
рекомендаций.<br />
Приведенных здесь примеры протестированы и прекрасно работают на серверах с объемом оператив-<br />
ной памяти 256, 384 и 512 МБайт. При меньшем объеме памяти мы не гарантируем работоспособности при-<br />
веденных ниже настроек и рекомендуем использовать настройки по умолчанию.<br />
Для просмотра файлов в каталоге /proc/sys/vm выполните:<br />
[root@karlnext /]# ls –l /proc/sys/vm<br />
-rw-r&#8211;r&#8211; 1 root root 0 Янв 12 10:38 bdflush<br />
-rw-r&#8211;r&#8211; 1 root root 0 Янв 12 10:38 kswapd<br />
-rw-r&#8211;r&#8211; 1 root root 0 Янв 12 10:38 max_map_count<br />
-rw-r&#8211;r&#8211; 1 root root 0 Янв 12 10:38 max-readahead<br />
-rw-r&#8211;r&#8211; 1 root root 0 Янв 12 10:38 min-readahead<br />
-rw-r&#8211;r&#8211; 1 root root 0 Янв 12 10:38 overcommit_memory<br />
-rw-r&#8211;r&#8211; 1 root root 0 Янв 12 10:38 page-cluster<br />
-rw-r&#8211;r&#8211; 1 root root 0 Янв 12 10:38 pagetable_cache<br />
Файл /proc/sys/vm/bdflush содержит настройки демона ядра bdflush и может быть исполь-<br />
зован для повышения производительности файловой системы. Файл /proc/sys/vm/bdflush содержит<br />
значения (приведены значения по умолчанию) следующих 9 параметров:<br />
[root@karlnext /]# cat /proc/sys/vm/bdflush<br />
30 500 0 0 500 3000 60 20 0<br />
Первый параметр – nfract – в конечном итоге определяет процент заполнения буфера, при дости-<br />
жении которого осуществляется запись на диск. Значение по умолчанию – 30 %, минимальное – 0 % и мак-<br />
симальное – 100 %. Установка высокого значения параметра приводит к тому, что задержка записи на диск<br />
осуществляется в течение более длительного времени, но при этом увеличивается загрузка памяти из-за<br />
операций ввода - вывода фрагментами большего размера. Рекомендуем установить значение параметра,<br />
равное 40.<br />
Второй параметр – dummy1 пока не используется, сохраните значение по умолчанию.<br />
Третий параметр – dummy2 тоже пока не используется, сохраните значение по умолчанию.<br />
О четвертом параметре – dummy3 – можно сказать то же самое.<br />
Параметр interval определяет минимальный интервал, в течение которого осуществляется очистка<br />
буфера. Значение по умолчанию – 5 секунд, минимальное – 0 секунд и максимальное – 600 секунд. Мы со-<br />
храняем здесь значение по умолчанию.<br />
Шестой параметр – age_buffer определяет максимальный интервал времени, по истечении которо-<br />
го информация из буфера записывается на диск. Значение по умолчанию – 30 секунд, минимальное – 1 се-<br />
кунда и максимальное – 6 000 секунд. Рекомендуем оставить значение по умолчанию.<br />
Седьмой параметр – nfract_sync управляет размером буферного кэша, выраженным в процентах,<br />
который заполняется до начала активизации bdflush. Его можно рассматривать как жесткое ограничение<br />
буфера прежде, чем bdflush начнет запись на диск. Значение по умолчанию – 60 %, минимальное – 0 % и<br />
максимальное – 100 %. Рекомендуем оставить значение по умолчанию.<br />
Восьмой и девятые параметры – dummy4 и dummy5 - пока не используется, сохраните значения по<br />
умолчанию.<br />
Установка рекомендуемых нами или любых других значений параметров осуществляется следую-<br />
щим образом.<br />
Шаг 1<br />
Добавьте или откорректируйте в файле /etc/sysctl.conf строку:<br />
#Увеличение производительности файловой системы<br />
vm.bdflush = 40 500 0 0 500 3000 60 20 0<br />
Шаг 2<br />
Для того, чтобы внесенные нами изменения вступили в силу, перезагрузите сеть:<br />
[root@karlnext /]# /etc/init.d/network restart<br />
Деактивируется интерфейс eth0: [ОК]<br />
Деактивируется интерфейс-петля: [ОК]<br />
Устанавливаются параметры сети: [ОК]<br />
Активируется интерфейс loopback: [ОК]<br />
Активируется интерфейс eth0: [ОК]<br />
Тот же самый эффект может быть достигнут и без перезагрузки сети:<br />
[root@karlnext /]# sysctl -w vm.bdflush=&#8221;40 500 0 0 500 3000 60 20 0&#8243;<br />
Файл /proc/sys/vm/kswapd содержит параметры настройки операций с виртуальной памятью<br />
системы (очистка, дефрагментирование). Очистка производится, когда виртуальная память сильно дефраг-<br />
ментированна или заполнена. Файл /proc/sys/vm/kswapd содержит значения (приведены значения по<br />
умолчанию) следующих 3 параметров:<br />
[root@karlnext /]# /proc/sys/vm/kswapd<br />
512 32 8<br />
Первый параметр – tries_base определяет максимальное количество страниц kswapd, которые<br />
должны очищаться за один цикл. Увеличив это число, можно заставить виртуальную память работать быст-<br />
рее. Сохраните значение по умолчанию.<br />
Второй параметр – tries_min определяет минимальное количество страниц, которые kswapd дол-<br />
жен очищать каждый раз при вызове. В основном этот параметр служит для того, чтобы удостовериться, что<br />
kswapd очищает страницы, даже когда программа работает с минимальным приоритетом. Значение по<br />
умолчанию – 32 страницы. Сохраните значение по умолчанию.<br />
Третий параметр – swap_cluster определяет количество страниц, которые kswapd записывает за<br />
одну итерацию. Естественно стремление повысить производительность за счет проведения операций ввода -<br />
вывода большими фрагментами и уменьшения времени поиска нужного сектора диска. Однако фрагменты<br />
не должны быть слишком большими, иначе может произойти переполнение очереди запроса. Значение по<br />
умолчанию – 8 страниц. Установите значение этого параметра, равное 32.<br />
Установка значений параметров осуществляется следующим образом.<br />
Шаг 1<br />
Добавьте или откорректируйте в файле /etc/sysctl.conf строки:<br />
#Увеличение производительности swap<br />
vm.kswapd = 512 32 32<br />
Шаг 2<br />
Для того, чтобы внесенные изменения вступили в силу, перезагрузите сеть:<br />
[root@karlnext /]# /etc/init.d/network restart<br />
Деактивируется интерфейс eth0: [ОК]<br />
Деактивируется интерфейс-петля: [ОК]<br />
Устанавливаются параметры сети: [ОК]<br />
Активируется интерфейс loopback: [ОК]<br />
Активируется интерфейс eth0: [ОК]<br />
Тот же самый эффект может быть достигнут и без перезагрузки сети:<br />
[root@karlnext /]# sysctl -w vm.kswapd = &#8220;512 32 32&#8243;</p>
<p><strong>Настройка параметров подсистемы IPv4</strong></p>
<p>Файлы, соответствующие всем описываемым ниже параметрам, находятся в каталоге<br />
/proc/sys/net/ipv4 и используются для настройки подсистемы ядра IPv4. Для просмотра файлов в ка-<br />
талоге /proc/sys/net/ipv4 наберите команду:<br />
[root@karlnext /]# ls –l /proc/sys/net/ipv4<br />
dr-xr-xr-x 6 root root 0 Янв 25 13:18 conf<br />
-rw-r&#8211;r&#8211; 1 root root 0 Янв 25 13:18<br />
icmp_echo_ignore_all<br />
-rw-r&#8211;r&#8211; 1 root root 0 Янв 25 13:18<br />
icmp_echo_ignore_broadcasts<br />
-rw-r&#8211;r&#8211; 1 root root 0 Янв 25 13:18<br />
icmp_ignore_bogus_error_responses<br />
-rw-r&#8211;r&#8211; 1 root root 0 Янв 25 13:18 icmp_ratelimit<br />
-rw-r&#8211;r&#8211; 1 root root 0 Янв 25 13:18 icmp_ratemask<br />
-rw-r&#8211;r&#8211; 1 root root 0 Янв 25 13:18<br />
inet_peer_gc_maxtime<br />
-rw-r&#8211;r&#8211; 1 root root 0 Янв 25 13:18<br />
inet_peer_gc_mintime<br />
-rw-r&#8211;r&#8211; 1 root root 0 Янв 25 13:18 inet_peer_maxttl<br />
-rw-r&#8211;r&#8211; 1 root root 0 Янв 25 13:18 inet_peer_minttl<br />
-rw-r&#8211;r&#8211; 1 root root 0 Янв 25 13:18<br />
inet_peer_threshold<br />
-rw-r&#8211;r&#8211; 1 root root 0 Янв 25 13:18 ip_autoconfig<br />
-rw-r&#8211;r&#8211; 1 root root 0 Янв 25 13:18 ip_conntrack_max<br />
-rw-r&#8211;r&#8211; 1 root root 0 Янв 25 13:18 ip_default_ttl<br />
-rw-r&#8211;r&#8211; 1 root root 0 Янв 25 13:18 ip_dynaddr<br />
-rw-r&#8211;r&#8211; 1 root root 0 Янв 25 13:18 ip_forward<br />
-rw-r&#8211;r&#8211; 1 root root 0 Янв 25 13:18 ipfrag_<br />
high_thresh<br />
-rw-r&#8211;r&#8211; 1 root root 0 Янв 25 13:18 ipfrag_low_thresh<br />
-rw-r&#8211;r&#8211; 1 root root 0 Янв 25 13:18 ipfrag_time<br />
-rw-r&#8211;r&#8211; 1 root root 0 Янв 25 13:18<br />
ip_local_port_range<br />
-rw-r&#8211;r&#8211; 1 root root 0 Янв 25 13:18 ip_nonlocal_bind<br />
-rw-r&#8211;r&#8211; 1 root root 0 Янв 25 13:18 ip_no_pmtu_disc<br />
dr-xr-xr-x 5 root root 0 Янв 25 13:18 neigh<br />
dr-xr-xr-x 2 root root 0 Янв 25 13:18 route<br />
-rw-r&#8211;r&#8211; 1 root root 0 Янв 25 13:18<br />
tcp_abort_on_overflow<br />
-rw-r&#8211;r&#8211; 1 root root 0 Янв 25 13:18 tcp_adv_win_scale<br />
-rw-r&#8211;r&#8211; 1 root root 0 Янв 25 13:18 tcp_app_win<br />
-rw-r&#8211;r&#8211; 1 root root 0 Янв 25 13:18 tcp_dsack<br />
-rw-r&#8211;r&#8211; 1 root root 0 Янв 25 13:18 tcp_ecn<br />
-rw-r&#8211;r&#8211; 1 root root 0 Янв 25 13:18 tcp_fack<br />
-rw-r&#8211;r&#8211; 1 root root 0 Янв 25 13:18 tcp_fin_timeout<br />
-rw-r&#8211;r&#8211; 1 root root 0 Янв 25 13:18<br />
tcp_keepalive_intvl<br />
-rw-r&#8211;r&#8211; 1 root root 0 Янв 25 13:18<br />
tcp_keepalive_probes<br />
-rw-r&#8211;r&#8211; 1 root root 0 Янв 25 13:18<br />
tcp_keepalive_time<br />
-rw-r&#8211;r&#8211; 1 root root 0 Янв 25 13:18 tcp_max_orphans<br />
-rw-r&#8211;r&#8211; 1 root root 0 Янв 25 13:18<br />
tcp_max_syn_backlog<br />
-rw-r&#8211;r&#8211; 1 root root 0 Янв 25 13:18<br />
tcp_max_tw_buckets<br />
-rw-r&#8211;r&#8211; 1 root root 0 Янв 25 13:18 tcp_mem<br />
-rw-r&#8211;r&#8211; 1 root root 0 Янв 25 13:18<br />
tcp_orphan_retries<br />
-rw-r&#8211;r&#8211; 1 root root 0 Янв 25 13:18 tcp_reordering<br />
-rw-r&#8211;r&#8211; 1 root root 0 Янв 25 13:18<br />
tcp_retrans_collapse<br />
-rw-r&#8211;r&#8211; 1 root root 0 Янв 25 13:18 tcp_retries1<br />
-rw-r&#8211;r&#8211; 1 root root 0 Янв 25 13:18 tcp_retries2<br />
-rw-r&#8211;r&#8211; 1 root root 0 Янв 25 13:18 tcp_rfc1337<br />
-rw-r&#8211;r&#8211; 1 root root 0 Янв 25 13:18 tcp_rmem<br />
-rw-r&#8211;r&#8211; 1 root root 0 Янв 25 13:18 tcp_sack<br />
-rw-r&#8211;r&#8211; 1 root root 0 Янв 25 13:18 tcp_stdurg<br />
-rw-r&#8211;r&#8211; 1 root root 0 Янв 25 13:18<br />
tcp_synack_retries<br />
-rw-r&#8211;r&#8211; 1 root root 0 Янв 25 13:18 tcp_syncookies<br />
-rw-r&#8211;r&#8211; 1 root root 0 Янв 25 13:18 tcp_syn_retries<br />
-rw-r&#8211;r&#8211; 1 root root 0 Янв 25 13:18 tcp_timestamps<br />
-rw-r&#8211;r&#8211; 1 root root 0 Янв 25 13:18 tcp_tw_recycle<br />
-rw-r&#8211;r&#8211; 1 root root 0 Янв 25 13:18 tcp_tw_reuse<br />
-rw-r&#8211;r&#8211; 1 root root 0 Янв 25 13:18<br />
tcp_window_scaling<br />
-rw-r&#8211;r&#8211; 1 root root 0 Янв 25 13:18 tcp_wmem<br />
Приведенный вывод с экрана получен для версии ядра 2.4.19, в другой системе он может выглядеть не-<br />
сколько по-другому.</p>
<p><strong>Установка запрета ответа на ping-запросы</strong></p>
<p>Предотвращение возможности ответов вашей системы на запросы утилиты ping может значительно<br />
улучшить сетевую безопасность, так как никто не сможет «пропинговать» ваш сервер. Установка запрета<br />
осуществляется следующим образом.<br />
Шаг 1<br />
Добавьте или откорректируйте в файле /etc/sysctl.conf следующие строки:<br />
# Игнорирование ответов на ping<br />
net.ipv4.icmp_echo_ignore_all=1<br />
ЗАМЕЧАНИЕ Установку значения параметра net.ipv4.icmp_echo_ignore_all=1 рекомендуется<br />
устанавливать только в случае осуществления атак, основанных на использовании ICMP-пакетов. В других<br />
случаях этого делать не рекомендуется, т. к. это существенно ограничивает функциональные возможности<br />
системы, которая использует ICMP-пакеты для установки такого важного параметра, как MTU. Многие вла-<br />
дельцы Web-серверов используют эту опцию, забывая при этом, что MS Windows-98/Ме имеет в установках<br />
по умолчанию автоматический выбор значения MTU. В этом случае Web-сервера становятся недоступными<br />
для большинства пользователей.<br />
Шаг 2<br />
Для того, чтобы внесенные изменения вступили в силу, перезагрузите сеть:<br />
[root@karlnext /]# /etc/init.d/network restart<br />
Деактивируется интерфейс eth0: [ОК]<br />
Деактивируется интерфейс-петля: [ОК]<br />
Устанавливаются параметры сети: [ОК]<br />
Активируется интерфейс loopback: [ОК]<br />
Активируется интерфейс eth0: [ОК]<br />
Тот же самый эффект может быть достигнут и без перезагрузки сети:<br />
[root@karlnext /]# sysctl –w net.ipv4.icmp_echo_ignore_all=1</p>
<p><strong>Установка запрета ответа на широковещательные ping-запросы</strong></p>
<p>Когда запрос утилиты ping посылается на широковещательный адрес (например, 172.16.255.255 или<br />
192.168.1.255), то соответствующие пакеты доставляются всем машинам этой сети. После этого все машины<br />
в сети отвечают на посланный широковещательный запрос. В результате может возникнуть перегрузка сети,<br />
и ваша система может оказаться невольным участником DoS-атаки. Более подробную информацию по этому<br />
вопросу можно получить в RFC 2644. Установка запрета осуществляется следующим образом.<br />
Шаг 1<br />
Добавьте или откорректируйте в файле /etc/sysctl.conf следующие строки:<br />
#Игнорирование широковещательных запросов<br />
net.ipv4.icmp_e_cho_ignore_broadcasts = 1<br />
Шаг 2<br />
Для того, чтобы внесенные изменения вступили в силу, перезагрузите сеть:<br />
[root@karlnext /]# /etc/init.d/network restart<br />
Деактивируется интерфейс eth0: [ОК]<br />
Деактивируется интерфейс-петля: [ОК]<br />
Устанавливаются параметры сети: [ОК]<br />
Активируется интерфейс loopback: [ОК]<br />
Активируется интерфейс eth0: [ОК]<br />
Тот же самый эффект может быть достигнут и без перезагрузки сети:<br />
[root@karlnext /]# sysctl –w net.ipv4.icmp_echo_ignore_broadcasts =1</p>
<p><strong>Запрет на использование сервером информации об источнике пакета</strong></p>
<p>Маршрутизация и протоколы маршрутизации также содержат источник потенциальной опасности для<br />
системы. Заголовки IP-пакетов содержат полный путь между источником и получателем пакета. В соответ-<br />
ствии с RFC 1122 получатель пакета должен ответить по адресу источника, содержащегося в пакете. Таким<br />
образом, злоумышленник может получить возможность перехватить ответ вашей системы и представиться<br />
доверенной системой. Авторы настоятельно рекомендуют отключить возможность использования сервером<br />
информации об источнике пакета. Установка запрета осуществляется следующим образом.<br />
Шаг 1<br />
Добавьте или откорректируйте в файле /etc/sysctl.conf следующие строки:<br />
# Установка запрета на использование информации об источнике пакета<br />
net.ipv4.conf.all.accept_source_route = 0<br />
net.ipv4.conf.default.accept_source_route = 0<br />
Шаг 2<br />
Для того, чтобы внесенные нами изменения вступили в силу, перезагрузите сеть:<br />
[root@karlnext /]# /etc/init.d/network restart<br />
Деактивируется интерфейс eth0: [ОК]<br />
Деактивируется интерфейс-петля: [ОК]<br />
Устанавливаются параметры сети: [ОК]<br />
Активируется интерфейс loopback: [ОК]<br />
Активируется интерфейс eth0: [ОК]<br />
Тот же самый эффект может быть достигнут и без перезагрузки сети:<br />
[root@karlnext /]# sysctl –w net.ipv4.conf.all.accept_source_route = 0<br />
[root@karlnext /]# sysctl –w net.ipv4.conf.default.accept_source_route = 0</p>
<p><strong>Включение защиты от SYN-атак</strong></p>
<p>SYN-атаки используют следующие особенности TCP/IP соединений. Обычно при установке соедине-<br />
ния клиент посылает серверу пакет с SYN-битом (первого типа), в ответ на который сервер посылает клиен-<br />
ту пакет-подтверждение (второго типа). После получения подтверждения клиент отправляет серверу пакет,<br />
который завершает установку соединения (третьего типа). При этом сервер сохраняет в очереди данные<br />
первого пакета и использует их для идентификации клиента. Посылая серверу пакеты, содержащие SYN-бит<br />
и случайные IP-адреса источников и не высылая соответствующие им завершающие пакеты (третьего типа),<br />
злоумышленник может реализовать DoS-атаку, исчерпав ресурсы для хранения информации, содержащейся<br />
в пакетах первого типа. Для исключения такой возможности на сервере устанавливается такой алгоритм<br />
функционирования, при котором пакеты, содержащие SYN-бит не сохраняются вообще, а сервер идентифи-<br />
цирует клиента, выполняя соответствующие операции над информацией, содержащейся в пакетах третьего<br />
типа. Включение защиты осуществляется следующим образом.<br />
Шаг 1<br />
Добавьте или откорректируйте в файле /etc/sysctl.conf следующие строки:<br />
#Включение защиты от TCP SYN атак<br />
net.ipv4.tcp_syncookies = 1<br />
Шаг 2<br />
Для того, чтобы внесенные изменения вступили в силу, перезагрузите сеть:<br />
[root@karlnext /]# /etc/init.d/network restart<br />
Деактивируется интерфейс eth0: [ОК]<br />
Деактивируется интерфейс-петля: [ОК]<br />
Устанавливаются параметры сети: [ОК]<br />
Активируется интерфейс loopback: [ОК]<br />
Активируется интерфейс eth0: [ОК]<br />
Тот же самый эффект может быть достигнут и без перезагрузки сети:<br />
[root@karlnext /]# sysctl –w net.ipv4.tcp_syncookies = 1</p>
<p><strong>ICMP-переадресация</strong></p>
<p>Когда компьютеры, находящиеся в сети, используют для пересылки пакетов неоптимальный или не-<br />
существующий маршрут, ICMP-переадресация используется маршрутизаторами для того, чтобы сообщить<br />
компьютерам правильный маршрут. В сетях со сложной топологией рекомендуется разрешение ICMP-<br />
переадресации. В небольших сетях ее следует отключить. При этом исключается возможность изменения<br />
злоумышленником таблиц маршрутизации на компьютерах сети путем отправки им поддельных ICMP-<br />
сообщений. Установка запрета на ICMP-переадресацию осуществляется следующим образом.<br />
Шаг 1<br />
Добавьте или откорректируйте в файле /etc/sysctl.conf следующие строки:<br />
# Установка запрета на ICMP переадресацию<br />
net.ipv4.conf.all.accept_redirects = 0<br />
net.ipv4.conf.default.accept_redirects = 0<br />
Шаг 2<br />
Для того, чтобы внесенные изменения вступили в силу, перезагрузите сеть:<br />
[root@karlnext /]# /etc/init.d/network restart<br />
Деактивируется интерфейс eth0: [ОК]<br />
Деактивируется интерфейс-петля: [ОК]<br />
Устанавливаются параметры сети: [ОК]<br />
Активируется интерфейс loopback: [ОК]<br />
Активируется интерфейс eth0: [ОК]<br />
Тот же самый эффект может быть достигнут и без перезагрузки сети:<br />
[root@karlnext /]# sysctl –w net.ipv4.conf.all.accept_redirects = 0<br />
[root@karlnext /]# sysctl –w net.ipv4.conf.default.accept_redirects = 0</p>
<p><strong>Сообщения об ошибках сети</strong></p>
<p>Шаг 1<br />
Для получения информации об ошибках сети добавьте или откорректируйте в файле<br />
/etc/sysctl.conf следующие строки:<br />
# Включение сообщений об ошибках сети<br />
net.ipv4.icmp_ignore_bogus_error_responses = 1<br />
Шаг 2<br />
Для того, чтобы внесенные изменения вступили в силу, перезагрузите сеть:<br />
[root@karlnext /]# /etc/init.d/network restart<br />
Деактивируется интерфейс eth0: [ОК]<br />
Деактивируется интерфейс-петля: [ОК]<br />
Устанавливаются параметры сети: [ОК]<br />
Активируется интерфейс loopback: [ОК]<br />
Активируется интерфейс eth0: [ОК]<br />
Тот же самый эффект может быть достигнут и без перезагрузки сети:<br />
[root@karlnext /]# sysctl –w net.ipv4.icmp_ignore_bogus_error_responses = 1</p>
<p><strong>Включение защиты от атак, основанных на фальсификации IP-адреса</strong></p>
<p>При реализации атак, основанных на фальсификации IP-адреса (IP spoofing), злоумышленник отправ-<br />
ляет в сеть пакеты с ложным обратным адресом, пытаясь переключить на свой компьютер соединения, ус-<br />
тановленные между другими компьютерами. При этом он может получить удаленный доступ к системе с<br />
правами доступа, равным правам доступа того пользователя, чье соединение с сервером было переключено<br />
на компьютер злоумышленника. Включение защиты осуществляется следующим образом.<br />
Шаг 1<br />
Добавьте или откорректируйте в файле /etc/sysctl.conf следующие строки:<br />
# Включение защиты от IP-spoofing<br />
# Усиленная проверка<br />
ipv4.conf.all.rp_filter = 2<br />
net.ipv4.conf.default.rp_f liter = 2<br />
# Простая проверка<br />
#ipv4.conf.all.rp_filter = 1<br />
#net.ipv4.conf.default.rp_f liter = 2<br />
Шаг 2<br />
Для того, чтобы внесенные изменения вступили в силу, перезагрузите сеть:<br />
[root@karlnext /]# /etc/init.d/network restart<br />
Деактивируется интерфейс eth0: [ОК]<br />
Деактивируется интерфейс-петля: [ОК]<br />
Устанавливаются параметры сети: [ОК]<br />
Активируется интерфейс loopback: [ОК]<br />
Активируется интерфейс eth0: [ОК]<br />
Тот же самый эффект может быть достигнут и без перезагрузки сети:<br />
[root@karlnext /]# sysctl –w ipv4.conf.all.rp_filter = 2<br />
[root@karlnext /]# sysctl –w net.ipv4.conf.default.rp_f liter = 2</p>
<p><strong>Включение регистрации Spoofed, Source Routed и Redirect пакетов</strong></p>
<p>Для получения информации о Spoofed, Source Routed и Redirect пакетах, которая может<br />
быть использована для анализа выявления попыток и механизмов взлома системы, необходимо установить<br />
следующие параметры.<br />
Шаг 1<br />
Добавьте или откорректируйте в файле /etc/sysctl.conf следующие строки:<br />
# Включение регистрации Spoofed, Source Routed и Redirect пакетов<br />
net.ipv4.conf.all.log_martians = 1<br />
net.ipv4.сonf.default.log_martians = 1<br />
Шаг 2<br />
Для того чтобы внесенные изменения вступили в силу, перезагрузите сеть:<br />
[root@karlnext /]# /etc/init.d/network restart<br />
Деактивируется интерфейс eth0: [ОК]<br />
Деактивируется интерфейс-петля: [ОК]<br />
Устанавливаются параметры сети: [ОК]<br />
Активируется интерфейс loopback: [ОК]<br />
Активируется интерфейс eth0: [ОК]<br />
Тот же самый эффект может быть достигнут и без ее перезагрузки:<br />
[root@karlnext /]# sysctl –w net.ipv4.conf.all.log_martians = 1<br />
[root@karlnext /]# sysctl –w net.ipv4.conf.all.log_martians = 1</p>
<p><strong>Включение пересылки пакетов</strong></p>
<p>Если система используется в качестве шлюза, прокси-сервера, VPN-сервера и т. п., необходимо вклю-<br />
чить пересылку пакетов с одной сети в другую. Это осуществляется следующим образом.<br />
Шаг 1<br />
Добавьте или откорректируйте в файле /etc/sysctl.conf следующие строки:<br />
# Разрешаем пересылку пакетов<br />
net.IPv4.IP_forward = 1<br />
Шаг 2<br />
Для того, чтобы внесенные изменения вступили в силу, перезагрузите сеть:<br />
[root@karlnext /]# /etc/init.d/network restart<br />
Деактивируется интерфейс eth0: [ОК]<br />
Деактивируется интерфейс-петля: [ОК]<br />
Устанавливаются параметры сети: [ОК]<br />
Активируется интерфейс loopback: [ОК]<br />
Активируется интерфейс eth0: [ОК]<br />
Тот же самый эффект может быть достигнут и без перезагрузки сети:<br />
[root@karlnext /]# sysctl –w IP_forward =1<br />
ЗАМЕЧАНИЕ К включению этой опции нужно относиться с определенной степенью осторожности и ис-<br />
пользовать ее только в случае крайней необходимости, т. е. только если предполагается использование сис-<br />
темы в качестве сервера, обеспечивающего пересылку пакетов. Подключать систему с включенной опцией<br />
IP_forward к сетям общего пользования можно только после настройки и тщательной проверки правильно-<br />
сти настроек системы сетевой защиты и серверов, ограничивающих пересылку пакетов, например SQUID,<br />
FreeS/WAN VPN и т. п.<br />
Авторы столкнулись с анекдотичной ситуацией, в которой некоторая московская фирма жаловалась<br />
на завышение объема трафика провайдером. Можно понять возмущение ее владельцев, когда в период с<br />
02.00 до 07.00 1января провайдер выставил счет на несколько сотен мегабайт трафика. В это время все ком-<br />
пьютеры (кроме шлюза, Web-сервера и почтового сервера), естественно, были выключены, а у единственно-<br />
го сотрудника службы безопасности, который в это время находился в офисе, было, на наш взгляд, железное<br />
алиби: «Я не умею включать компьютеры, и денег у вашего Интернета я не брал!..».<br />
Детальный анализ ситуации (проверка настроек и включение дополнительных опций служб регистра-<br />
ции) показал, что сервера этой компании используются в качестве анонимного прокси-сервера для просмот-<br />
ра ресурсов эротического содержания пользователями из страны, в которой это делать, по-видимому, за-<br />
прещено. В итоге деньги за трафик получали два провайдера – из далекой страны и московский. Последне-<br />
му, естественно, платила московская фирма.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.compyuteri.ru/glava-7-psevdofajlovaya-sistema-proc/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Глава 8. Настройка сети</title>
		<link>http://www.compyuteri.ru/glava-8-nastrojka-seti/</link>
		<comments>http://www.compyuteri.ru/glava-8-nastrojka-seti/#comments</comments>
		<pubDate>Sat, 13 Sep 2008 15:02:19 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[Часть 01. Инсталляция операционной системы Linux на сер]]></category>

		<category><![CDATA[hosts]]></category>

		<category><![CDATA[настройка]]></category>

		<category><![CDATA[сеть]]></category>

		<guid isPermaLink="false">http://www.compyuteri.ru/?p=71</guid>
		<description><![CDATA[В этой главе:
1. Конфигурационные файлы /etc/sysconfig/network-scripts/ifcfg-ethN
2. Конфигурационный файл /etc/resolv.conf
3. Конфигурационный файл /еtc/hosts
4. Конфигурационный файл /еtc/host.conf
5. Конфигурационный файл /etc/sysconfig/network
6. Проверка работоспособности сетевых настроек
В этой главе рассматриваются вопросы, связанные с конфигурационными файлами сетевых устройств
и основными командами, используемыми для настройки сети. Перед продолжением работ по созданию оп-
тимизированной и безопасной системы необходимо проверить все конфигурационные файлы, связанные с
настройкой сети [...]]]></description>
			<content:encoded><![CDATA[<p>В этой главе:<br />
1. Конфигурационные файлы /etc/sysconfig/network-scripts/ifcfg-ethN<br />
2. Конфигурационный файл /etc/resolv.conf<br />
3. Конфигурационный файл /еtc/hosts<br />
4. Конфигурационный файл /еtc/host.conf<br />
5. Конфигурационный файл /etc/sysconfig/network<br />
6. Проверка работоспособности сетевых настроек</p>
<p>В этой главе рассматриваются вопросы, связанные с конфигурационными файлами сетевых устройств<br />
и основными командами, используемыми для настройки сети. Перед продолжением работ по созданию оп-<br />
тимизированной и безопасной системы необходимо проверить все конфигурационные файлы, связанные с<br />
настройкой сети и убедиться, что все сконфигурировано правильно. И если в дальнейшем что-то не будет<br />
получаться, то будет твердая уверенность, что это уж точно не связано с настройками сети.</p>
<p><strong>Конфигурационные файлы /etc/sysconfig/network-scripts/ifcfg-ethN</strong></p>
<p>Файлы /etc/sysconfig/network-scripts/ifcfg-ethN используются системой для инициа-<br />
лизации и настройки сетевых карт. Содержимое файла /etc/sysconfig/network-scripts/ifcfgeth0,<br />
установленного по умолчанию можно посмотреть с помощью команды:<br />
[root@dymatel /]#cat /etc/sysconfig/network-scripts/ifcfg-eth0<br />
DEVICE=eth0<br />
ONBOOT=yes<br />
IPADDR=172.16.181.100<br />
NETMASK=255.255.255.0<br />
NETWORK=172.16.181.0<br />
BROADCAST=172.16.181.255<br />
BOOTPROTO=static<br />
DSERCTL=no<br />
Вы можете изменить параметры сети для данного сетевого интерфейса, добавив или изменив в файле<br />
/etc/sysconfig/network-scripts/ifcfg-eth0 соответствующие строки. Наиболее часто для<br />
конфигурации сетевых устройств используются следующие параметры.<br />
Параметр DEVICE=devicename<br />
определяет название физического сетевого устройства, в данном примере – eth0.<br />
Параметр ONBOOT=yes/no о<br />
определяет, активизируется ли сетевое устройство при загрузке или нет (yes-активизируется, no -нет).<br />
Параметр BOOTPROTO=proto<br />
определяет способ установки IP-адреса при загрузке системы. Например:<br />
• static – при загрузке системы устанавливается статический IP-адрес (значение по умолчанию);<br />
• none – при загрузке не используется никакой протокол;<br />
• bootp – при загрузке системы используется протокол bootp;<br />
• dhcp – при загрузке используется протокол dhcp.<br />
Параметр IPADDR=Ipaddr<br />
определяет IP-адрес, в данном примере 172.16.181.100.<br />
Параметр NETMASK=netmask<br />
определяет маску сети, в данном примере 255.255.255.0.<br />
Параметр NETWORK=network<br />
определяет адрес сети, в данном примере 172.16.181.0.<br />
Параметр BROADCAST=broadcast<br />
определяет широковещательный адрес, в данном примере 172.16.181.255.<br />
Параметр DSERCTL=yes/no<br />
определяет, разрешено ли обычным пользователям управлять сетевым интерфейсом (yes-разрешено, no -<br />
запрещено).<br />
Предположим, что нам необходимо присвоить сетевому интерфейсу дополнительный IP-адрес –<br />
172.16.181.101. Это можно реализовать следующим образом.<br />
Шаг 1<br />
Создайте копию файла /etc/sysconfig/network-scripts/ifcfg-eth0:<br />
[root@dymatel /]# cp /etc/sysconfig/network-scripts/ifcfg-eth0<br />
/etc/sysconfig/network-scripts/ifcfg-eth0:0<br />
Шаг 2<br />
Измените строку:<br />
IPADDR=172.16.181.100<br />
на:<br />
IPADDR=172.16.181.101<br />
Шаг 3<br />
Перезагрузите сеть:<br />
[root@dymatel /]# /etc/init.d/network restart<br />
Деактивируется интерфейс eth0: [ОК]<br />
Деактивируется интерфейс-петля: [ОК]<br />
Устанавливаются параметры сети: [ОК]<br />
Активируется интерфейс loopback: [ОК]<br />
Активируется интерфейс eth0: [ОК]</p>
<p><strong>Конфигурационный файл /etc/resolv.conf</strong></p>
<p>Конфигурационный файл /etc/resolv.conf содержит IP-адреса DNS-серверов, используемых<br />
вашей системой для выполнения преобразований имени хостов в IP-адрес и обратно:<br />
[root@dymatel /]# cat /etc/resolv.conf<br />
search und<br />
nameserver 172.16.181.200<br />
nameserver 212.111.78.3<br />
nameserver 212.111.80.3<br />
Запросы к серверам имен делаются в том порядке, в котором они указаны в файле<br />
/etc/resolv.conf. То есть в рассматриваемом примере сначала осуществляется обращение к DNS-<br />
серверу 172.16.181.200, который находится внутри локальной сети, и только в случае, если он не дает ответа<br />
на запрос, обращение осуществляется к первичному и вторичному DNS-серверам провайдера. Наличие<br />
внутреннего DNS-сервера упрощает администрирование локальной сети, повышает быстродействие и не-<br />
сколько сокращает затраты на трафик.</p>
<p><strong>Конфигурационный файл /еtc/hosts</strong></p>
<p>Конфигурационный файл /еtc/hosts предназначен для установления взаимно однозначного соот-<br />
ветствия между именами хостов и их IP-адресами без использования обращения к DNS-серверам. Этот файл<br />
имеет очень простую структуру:<br />
[root@dymatel /]# cat /etc/hosts/<br />
#IP- Адрес Полное имя хоста Псевдоним<br />
127.0.0.1 localhost.localdomain localhost<br />
…<br />
172.16.181.100 www.dymatel.und dymatel<br />
172.16.181.103 drwalbr.und walbr<br />
172.16.181.105 karlnext.und karlnext<br />
…<br />
213.180.194.129 www.yandex.ru y<br />
…<br />
Этот файл пришел к нам в качестве наследства из тех времен, когда сетевых ресурсов было очень ма-<br />
ло, и на каждом компьютере содержалась информация о всех хостах. В настоящее время этот файл может<br />
использоваться для организации преобразования имен в IP-адреса в небольших сетях, не имеющих DNS-<br />
серверов (при этом копия файла должна быть установлена на каждом из компьютеров сети), для снижения<br />
загрузки DNS-серверов при обращении к часто запрашиваемым ресурсам и для организации возможности<br />
обращении к ресурсам по псевдонимам. Например, при предложенной конфигурации файла /etc/hosts<br />
обращение к ресурсам www.dymatel.und и www.yandex.ru возможно по их псевдонимам, соответст-<br />
венно – dymatel и y.</p>
<p><strong>Конфигурационный файл /еtc/host.conf</strong></p>
<p>Конфигурационный файл /еtc/host.conf используется для установки порядка, в котором осуще-<br />
ствляются обращения к различным типам ресурсов, используемых для установки соответствия между име-<br />
нами хостов и их IP-адресами. Пример файла /еtc/host.conf:<br />
[root@dymatel /]# cat /etc/hosts.conf<br />
#сначала осуществляется обращение к файлу<br />
#/еtc/hosts а затем к DNS-серверам<br />
order hosts,bind<br />
#Разрешена поддержка хостов c несколькими IP-адресами<br />
multi on</p>
<p><strong>Конфигурационный файл /etc/sysconfig/network</strong></p>
<p>В файле /etc/sysconfig/network содержатся основные параметры настройки сети:<br />
[root@dymatel /]# cat /etc/sysconfig/network<br />
NETWORKING=yes<br />
HOSTNAME=www.dymatel.und<br />
GATEWAY=172.16.181.200<br />
GATEWAYDEV=eth0<br />
DNS1=212.111.78.3<br />
DNS2=212.111.80.3<br />
Вы можете изменять настройки сети, варьируя следующие параметры:<br />
• NETWORKING=yes/no – включает/выключает поддержку сетевых функций системы;<br />
• HOSTNAME=hostname – устанавливает сетевое имя системы, в данном примере<br />
www.dymatel.und;<br />
• GATEWAY=IP_gw – устанавливает IP-адрес шлюза;<br />
• GATEWAYDEV=dev_gv - определяет физическое устройство, через которое осуществляется доступ<br />
к шлюзу, в данном примере – eth0.</p>
<p><strong>Проверка работоспособности сетевых настроек</strong></p>
<p>Шаг 1<br />
Проверьте в соответствии с рекомендациями этой и предыдущей главы правильность установки па-<br />
раметров в следующих файлах:<br />
• /etc/sysctl.conf;<br />
• /etc/sysconfig/network-scripts/ifcfg-ethN;<br />
• /etc/resolv.conf;<br />
• /еtc/hosts и /etc/sysconfig/network.<br />
Шаг 2<br />
Проверьте состояние сетевых интерфейсов:<br />
[root@dymatel /]# ifconfig<br />
eth0 Link encap:Ethernet HWaddr 00:C0:26:AA:35:0C<br />
inet addr:172.16.181.100 Bcast:172.16.181.255<br />
Mask:255.255.255.0<br />
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1<br />
RX packets:13152266 errors:0 dropped:0 overruns:0 frame:0<br />
TX packets:13130468 errors:0 dropped:0 overruns:0 carrier:0<br />
collisions:56228 txqueuelen:100<br />
RX bytes:4209088620 (4014.0 Mb) TX bytes:2575418894 (2456.1<br />
Mb)<br />
Interrupt:11 Base address:0xd000<br />
eth0:0 Link encap:Ethernet HWaddr 00:C0:26:AA:35:0C<br />
inet addr:172.16.181.102 Bcast:172.16.181.255<br />
Mask:255.255.255.0<br />
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1<br />
Interrupt:11 Base address:0xd000<br />
eth1 Link encap:Ethernet HWaddr 00:C0:26:AA:47:38<br />
inet addr:192.168.14.85 Bcast:192.168.255.255<br />
Mask:255.255.0.0<br />
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1<br />
RX packets:21285840 errors:0 dropped:0 overruns:0 frame:0<br />
TX packets:10510 errors:0 dropped:0 overruns:0 carrier:0<br />
collisions:0 txqueuelen:100<br />
RX bytes:1755892233 (1674.5 Mb) TX bytes:2386737 (2.2 Mb)<br />
Interrupt:10 Base address:0xf000<br />
lo Link encap:Local Loopback<br />
inet addr:127.0.0.1 Mask:255.0.0.0<br />
UP LOOPBACK RUNNING MTU:16436 Metric:1<br />
RX packets:39809472 errors:0 dropped:0 overruns:0 frame:0<br />
TX packets:39809472 errors:0 dropped:0 overruns:0 carrier:0<br />
collisions:0 txqueuelen:0<br />
RX bytes:3988297410 (3803.5 Mb) TX bytes:3988297410 (3803.5<br />
Mb)<br />
В рассматриваемом примере на системе установлены две сетевых карты eth0 и eth1, причем eth0 име-<br />
ет два IP-адреса – 172.16.181.100 и 172.16.181.102, а eth1 один – 192.168.14.85. Все сетевые интерфейсы ак-<br />
тивны.<br />
Шаг 3<br />
Проверьте связь с другими системами.<br />
C системой в сети 172.16.181.103:<br />
[root@www root]# ping -c 3 172.16.181.103<br />
PING 172.16.181.103 (172.16.181.103) from 172.16.181.100 : 56(84) bytes<br />
of data.<br />
64 bytes from 172.16.181.103: icmp_seq=1 ttl=64 time=280 usec<br />
64 bytes from 172.16.181.103: icmp_seq=2 ttl=64 time=287 usec<br />
64 bytes from 172.16.181.103: icmp_seq=3 ttl=64 time=295 usec<br />
&#8212; 172.16.181.103 ping statistics &#8212;<br />
3 packets transmitted, 3 received, 0% loss, time 1998ms<br />
rtt min/avg/max/mdev = 0.280/0.287/0.295/0.015 ms<br />
C системой в сети 192.168.10.5:<br />
[root@www root]# ping -c 3 192.168.10.5<br />
PING 192.168.10.5 (192.168.10.5) from 192.168.14.85 : 56(84) bytes of<br />
data.<br />
64 bytes from 192.168.10.5: icmp_seq=1 ttl=64 time=1.625 msec<br />
64 bytes from 192.168.10.5: icmp_seq=2 ttl=64 time=742 usec<br />
64 bytes from 192.168.10.5: icmp_seq=3 ttl=64 time=671 usec<br />
&#8212; 192.168.10.5 ping statistics &#8212;<br />
3 packets transmitted, 3 received, 0% loss, time 2004ms<br />
rtt min/avg/max/mdev = 0.671/1.012/1.625/0.435 ms<br />
C системой в Интернете:<br />
[root@www root]# ping -c 3 213.180.194.129<br />
PING 213.180.194.129 (213.180.194.129) from 172.16.181.100 : 56(84) bytes<br />
of data.<br />
64 bytes from 213.180.194.129: icmp_seq=1 ttl=56 time=15.627 msec<br />
64 bytes from 213.180.194.129: icmp_seq=2 ttl=56 time=12.886 msec<br />
64 bytes from 213.180.194.129: icmp_seq=3 ttl=56 time=12.207 msec<br />
&#8212; 213.180.194.129 ping statistics &#8212;<br />
3 packets transmitted, 3 received, 0% loss, time 2023ms<br />
rtt min/avg/max/mdev = 12.207/13.573/15.627/1.481 ms<br />
Если вы получили отклики от других систем, аналогичные приведенным выше, то связь работает. В<br />
противном случае, т. е. при появлении вывода аналогичного этому:<br />
[root@www root]# ping -c 3 192.168.10.5<br />
PING 192.168.10.5 (192.168.10.5) from 192.168.14.85 : 56(84) bytes of<br />
data.<br />
From 192.168.14.85: icmp_seq=3 Destination Host Unreachable<br />
From 192.168.14.85: icmp_seq=3 Destination Host Unreachable<br />
From 192.168.14.85: icmp_seq=2 Destination Host Unreachable<br />
From 192.168.14.85: icmp_seq=1 Destination Host Unreachable<br />
&#8212; 192.168.10.5 ping statistics &#8212;<br />
3 packets transmitted, 0 received, +4 errors, 100% loss, time 2018ms<br />
, pipe 3<br />
убедитесь, что выбранные для тестирования системы включены и в них не установлен запрет на ответ на<br />
ping-запросы. Если системы, используемые для тестирования, включены и способны отвечать на ping-<br />
запросы, проверьте еще раз сетевые настройки (шаг 1), правильность подключения концентраторов и мар-<br />
шрутизаторов, кабели т. д.<br />
Шаг 4<br />
Проверьте правильность настроек DNS.<br />
Работоспособность настроек в файле /etc/hosts:<br />
[root@www root]# ping -c 3 drwalbr.und<br />
PING drwalbr.und (172.16.181.103) from 172.16.181.100 : 56(84) bytes of<br />
data.<br />
64 bytes from drwalbr.und (172.16.181.103): icmp_seq=1 ttl=64 time=395<br />
usec<br />
64 bytes from drwalbr.und (172.16.181.103): icmp_seq=2 ttl=64 time=344<br />
usec<br />
64 bytes from drwalbr.und (172.16.181.103): icmp_seq=3 ttl=64 time=296<br />
usec<br />
&#8212; drwalbr.und ping statistics &#8212;<br />
3 packets transmitted, 3 received, 0% loss, time 1998ms<br />
rtt min/avg/max/mdev = 0.296/0.345/0.395/0.040 ms<br />
[root@www root]# ping -c 3 walbr<br />
PING drwalbr.und (172.16.181.103) from 172.16.181.100 : 56(84) bytes of<br />
data.<br />
64 bytes from drwalbr.und (172.16.181.103): icmp_seq=1 ttl=64 time=392<br />
usec<br />
64 bytes from drwalbr.und (172.16.181.103): icmp_seq=2 ttl=64 time=293<br />
usec<br />
64 bytes from drwalbr.und (172.16.181.103): icmp_seq=3 ttl=64 time=292<br />
usec<br />
&#8212; drwalbr.und ping statistics &#8212;<br />
3 packets transmitted, 3 received, 0% loss, time 1999ms<br />
rtt min/avg/max/mdev = 0.292/0.325/0.392/0.051 ms<br />
Работоспособность настроек в файле /etc/resolv.conf:<br />
[root@www root]# ping -c 3 www.yandex.ru<br />
PING www.yandex.ru (213.180.194.129) from 172.16.181.100 : 56(84) bytes<br />
of data.<br />
64 bytes from yandex.ru (213.180.194.129): icmp_seq=1 ttl=56 time=16.812<br />
msec<br />
64 bytes from yandex.ru (213.180.194.129): icmp_seq=2 ttl=56 time=91.939<br />
msec<br />
64 bytes from yandex.ru (213.180.194.129): icmp_seq=3 ttl=56 time=17.107<br />
msec<br />
&#8212; www.yandex.ru ping statistics &#8212;<br />
3 packets transmitted, 3 received, 0% loss, time 2019ms<br />
rtt min/avg/max/mdev = 16.812/41.952/91.939/35.346 ms<br />
Если вы получили отклики от удаленных систем в Интернет и локальных сетях, аналогичные приве-<br />
денным выше, то настройки DNS – правильные. В противном случае, т. е. при появлении вывода аналогич-<br />
ного этому:<br />
[root@www root]# ping –с 3 www.yandex.ru<br />
ping: unknown host www.yandex.ru<br />
проверьте содержимое файлов /etc/hosts и /etc/resolv.conf.<br />
Шаг 5<br />
Проверьте таблицу маршрутизации:<br />
[root@www root]# route -n<br />
Destination Gateway Genmask Flags Metric Ref Use Iface<br />
172.16.181.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0<br />
192.168.0.0 0.0.0.0 255.255.0.0 U 0 0 0 eth1<br />
127.0.0.0 0.0.0.0 255.0.0.0 U 0 0 0 lo<br />
0.0.0.0 172.16.181.1 0.0.0.0 UG 0 0 0 eth0<br />
Шаг 6<br />
Проверьте статистику TCP/IP соединений:<br />
[root@dymatel /]# netstat –vat<br />
Active Internet connections (servers and established)<br />
Proto Recv-Q Send-Q Local Address Foreign Address State<br />
tcp 0 0 *:http *:* LISTEN<br />
tcp 0 0 *:https *:* LISTEN<br />
Шаг 7<br />
Проверьте правильность установки сетевого имени системы:<br />
[root@dymatel /]# hostname<br />
www.dymatel.und</p>
]]></content:encoded>
			<wfw:commentRss>http://www.compyuteri.ru/glava-8-nastrojka-seti/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Глава 9. Основные положения системы сетевой защиты (Firewall)</title>
		<link>http://www.compyuteri.ru/glava-9-osnovnye-polozheniya-sistemy-setevoj-zashhity-firewall/</link>
		<comments>http://www.compyuteri.ru/glava-9-osnovnye-polozheniya-sistemy-setevoj-zashhity-firewall/#comments</comments>
		<pubDate>Sat, 13 Sep 2008 14:53:27 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[Часть 02. Система сетевой защиты]]></category>

		<category><![CDATA[firewall]]></category>

		<category><![CDATA[iptables]]></category>

		<category><![CDATA[порты]]></category>

		<category><![CDATA[фаерволл]]></category>

		<guid isPermaLink="false">http://www.compyuteri.ru/?p=69</guid>
		<description><![CDATA[В этой главе:
1. Концепция безопасности системы сетевой защиты
2. Порты
3. Ограничения и допущения
4. Пакеты
5. Компиляция оптимизация и инсталляция IPTables из rpm -пакетов
6. Компиляция оптимизация и инсталляция IPTables из исходных кодов
7. Настройка системы сетевой защиты IPTables
8. Проверка настроек сетевой защиты
В этой главе рассматриваются основные принципы и понятия, связанные с системой сетевой защиты
(Firewall). К настоящему времени разработаны и [...]]]></description>
			<content:encoded><![CDATA[<p>В этой главе:<br />
1. Концепция безопасности системы сетевой защиты<br />
2. Порты<br />
3. Ограничения и допущения<br />
4. Пакеты<br />
5. Компиляция оптимизация и инсталляция IPTables из rpm -пакетов<br />
6. Компиляция оптимизация и инсталляция IPTables из исходных кодов<br />
7. Настройка системы сетевой защиты IPTables<br />
8. Проверка настроек сетевой защиты</p>
<p>В этой главе рассматриваются основные принципы и понятия, связанные с системой сетевой защиты<br />
(Firewall). К настоящему времени разработаны и активно развиваются системы сетевой защиты, основанные<br />
на следующих технологиях.<br />
Первый тип – фильтрация пакетов (packet filtering) – тип встроенной в ядро сетевой защиты, рабо-<br />
тающей на сетевом уровне. Пакеты фильтруются в соответствии с их типом, исходным адресом, адресом на-<br />
значения и информацией о порте, содержащейся в заголовке пакета. Такой тип сетевой защиты основан на<br />
анализе небольшого объема информации, поэтому мало влияет на загрузку центрального процессора и не<br />
создает заметных задержек в работе сети.<br />
Первое поколение данного типа фильтрации, известное в Linux как IPCHAINS, реализовывало стати-<br />
ческую схему сетевой защиты, при которой соединения между внутренними и внешними сетями всегда ос-<br />
тавались открытыми для портов, используемых работающими на системе службами. Такая система сетевой<br />
защиты реализована в ядрах версий 2.2.х. Основной недостаток этого типа защиты состоит в том, что для<br />
нормального функционирования системы необходимо все время держать открытыми ряд портов.<br />
Второе поколение – так называемые динамические пакетные фильтры (Dynamic Packet Filters), из-<br />
вестные в Linux, как программа сетевой защиты IPTables, используемая в версиях ядра 2.4.x. При такой сис-<br />
теме фильтрации соответствующий порт открывается только на время прохождения легитимного исходяще-<br />
го пакета, либо для приема ожидаемого системой пакета. Ядра Linux версии 2.4.х поддерживают новый ме-<br />
ханизм для формирования системы сетевой защиты, называемый сетевой пакетной фильтрацией (netfilter).<br />
Он более сложен, чем предыдущий механизм (IPCHAINS), но более безопасен. Блокирует большинство<br />
DoS-атак. В случае, если инородный пакет пытается проникнуть в защищаемую систему или сеть под видом<br />
пакета, принадлежащего существующему соединению, IPTables может свериться со своим хранящимся в<br />
памяти списком открытых соединений, обнаружить, что пакет не соответствует ни одному из них, и запре-<br />
тить его пропуск.<br />
Общими недостатками систем сетевой защиты, основанных на фильтрации пакетов, являются:<br />
• возможность подключения систем, находящихся за пределами локальной сети, к системам внутри<br />
неё;<br />
• отсутствие возможности селекции пакетов по пользователям с реализацией соответствующей иден-<br />
тификации.<br />
Второй тип систем сетевой защиты, так называемые прокси-программы (application gateway), извест-<br />
ные в Linux как Squid. Это программное обеспечения детально анализирует информацию, заключенную в<br />
теле пакетов, перед тем, как разрешить доступ в сеть пользователю из внешней сети. Запрещает прямые со-<br />
единения между внутренними и внешними системами, поддерживает идентификацию пользователей.<br />
Концепция безопасности системы сетевой защиты<br />
Существует два подхода к концепции безопасности.<br />
«Все, что не разрешено – то запрещено». При таком подходе блокируется весь трафик между внеш-<br />
ней и внутренней сетями, за исключением трафика, генерируемого разрешенными службами и приложения-<br />
ми. Такая концепция безопасности наиболее эффективна, однако создает определенные неудобства для<br />
пользователей и требует больших трудозатрат на администрирование сети для реализации конкретных тре-<br />
бований пользователей (у меня не работает «мирка», «аська», не могу скачать последнюю версию програм-<br />
мы с неправильно настроенного FTP-сервера, не слышу Web-радио и т. п. ).<br />
«Все, что не запрещено – то разрешено». При таком подходе разрешается весь трафик между двумя<br />
сетями, за исключением некоторого перечня служб и приложений. Это очень удобно для пользователей, но с<br />
точки зрения авторов, не обеспечивает приемлемый уровень безопасности.<br />
Поэтому авторы настоятельно рекомендуют использовать именно первый вариант концепции систе-<br />
мы сетевой защиты.</p>
<p><strong>Порты</strong></p>
<p>IANA (Internet Assigned Numbers Authority) образован международными организациями ISOC (Internet<br />
Society) и FNC (Federal Network Council) как центр обмена информацией для определения и координирова-<br />
ния использования параметров протоколов Интернет. Одним из таких параметров являются номера портов,<br />
закрепленные за определенной службой. Например, если вы разработали новый (ранее не существующий)<br />
тип службы, например, службу управления специфичными бытовыми устройствами в вашем доме, IANA<br />
должна будет зарегистрировать и обслуживать уникальный номер порта, выделенный для этой программы.<br />
Понятие «порт» было введено для организации одновременного соединения с многочисленными<br />
службами Интернет. Каждый компьютер имеет 65535 доступных портов. Так называемые «хорошо извест-<br />
ные» (well known) порты имеют номера в диапазоне от 0 до 1023. Эти порты, в большинстве случаев, ис-<br />
пользуются системными процессами или программами, выполняемыми привилегированными пользовате-<br />
лями в фоновом режиме (службами). Зарегистрированные (registered) порты имеют номера в диапазоне от<br />
1024 до 49151, но на большинстве систем могут использоваться любыми приложениями. Динамические<br />
порты (dynamic или private) имеют номера в диапазоне 49152…65535.<br />
Все открытые порты должны иметь службу (демон), которая на нем выполняется, т. е. обслуживает<br />
обращающихся к этому порту пользователей. Если служба на некотором порту не выполняется, то он дол-<br />
жен быть закрыт.</p>
<p><strong>Ограничения и допущения</strong></p>
<p>Все операции выполняются пользователем с учетной записью root.<br />
Используется ядро версии 2.4.х.<br />
Используется дистрибутив ASPLinux 7.3 (Vostok). На других дистрибутивах возможно успешное вы-<br />
полнение подобной процедуры, но авторы этого не проверяли.</p>
<p><strong>Пакеты</strong></p>
<p>В дистрибутив ASPLinux 7.3 (Vostok) входит пакет iptables-1.2.6a-1.asp, используемый для<br />
установки системы сетевой защиты. Ее поддержка также включена в ядро, устанавливаемое по умолчанию.<br />
Если вы следовали рекомендациям по инсталляции нового ядра, то пакет, поставляемый с дистрибутивом,<br />
сохраняет свою работоспособность и не требует перекомпиляции ядра. Однако, используя новое ядро с пер-<br />
сональной конфигурацией, из-за наличия неудовлетворенных зависимостей, вы не сможете установить па-<br />
кет iptables-1.2.6a-1.asp, входящий в состав дистрибутива, или обновленный пакет, который может<br />
быть выпущен поставщиком дистрибутива. В этом случае придется устанавливать IPTables из исходных ко-<br />
дов.<br />
Последующие рекомендации основаны на информации с домашней страницы проекта NetFilter/<br />
IPTables, полученной 01.02.2003. Пожалуйста, регулярно посещайте домашнюю страницу проекта<br />
http://www.iptables.org/ или http://www.iptables.org/ для отслеживания обновлений. Ос-<br />
новная часть кода, используемая для системы сетевой защиты, включается в состав ядра. Разработчики IPTables<br />
не могут гарантировать, что последние изменения внесены в официальный релиз ядра, размещаемый<br />
на http://www.kernel.org. Поэтому все необходимые для нормальной работы системы сетевой защи-<br />
ты изменения в код ядра содержатся в пакете patch-o-matic-YYYYMMDD.tar.bz2 (последний, доступ-<br />
ный на момент написания книги, - patch-o-matic-20030107.tar.bz2). Часть кода, не входящяя в яд-<br />
ро, содержится в пакете iptables-version.tar.bz2 (последний, доступный на момент написания кни-<br />
ги, - iptables-1.2.7a.tar.bz2).<br />
Необходимые пакеты доступны с домашней страницы разработчиков http://www.iptables.org<br />
или http://www.iptables.org, а также FTP-сервера ftp://ftp.netfilter.org.</p>
<p><strong>Компиляция оптимизация и инсталляция IPTables из rpm-пакетов</strong></p>
<p>Если вы используете пакет iptables-1.2.6a-1.asp, входящий в состав дистрибутива ASPLInux<br />
7.3 (Vostok), то вам необходимо сделать следующее.<br />
Шаг 1<br />
Если вы предпочитаете использование системы со стандартным ядром и программным обеспечением,<br />
установленным из rpm-пакетов, для установки или обновления пакета необходимо выполнить следующие<br />
операции.<br />
ЗАМЕЧАНИЕ Авторы настоятельно рекомендуют устанавливать программное обеспечение из исход-<br />
ных кодов.<br />
Шаг 1<br />
Проверьте, установлен ли пакет iptables с помощью следующей команды:<br />
[root@bastion /]# rpm –iq iptables<br />
Если вы следовали нашим рекомендациям, то он должен быть уже установлен.<br />
Если пакет не установлен, перейдите в каталог, где находится пакет iptables-1.2.6a-<br />
1.asp.i386.rpm. Если вы в соответствии с рекомендациями главы 2 скопировали все пакеты, входящие в<br />
дистрибутив, в каталог /home/distrib, то выполните команду:<br />
[root@bastion /]# cd /home/distrib<br />
и установите:<br />
[root@bastion distrib]# rpm –ihv iptables-1.2.6a-1.asp.i386.rpm<br />
или обновите пакет:<br />
[root@bastion distrib]# rpm –Uhv iptables-1.2.6a-1.asp.i386.rpm<br />
Шаг 2<br />
Как уже отмечалось, поддержка системы сетевой защиты осуществляется на уровне ядра. Для того,<br />
чтобы она могла функционировать на вашей системе, необходимо при настройке ядра установить или про-<br />
верить правильность установки опций, связанных с функционированием системы сетевой защиты, в соот-<br />
ветствии с рекомендациями, приведенными ниже в главе 6.<br />
Для всех серверов, кроме шлюзов и прокси-серверов:<br />
* Packet socket (CONFIG__PACKET) [Y/n/?] <Enter><br />
Эта опция включает/отключает поддержку приложений, которые связываются непосредственно с се-<br />
тевыми устройствами без использования промежуточного сетевого протокола, осуществленного в ядре, по-<br />
добно программе tcpdump.<br />
Packet socket: mmapped IO (CONFIG_PACKET_MMAP) [N/y/?] <y><br />
Эта опция включает/отключает ускорение работы драйвера пакетов.<br />
Netlink device emulation (CONFIG_NETLINK_DEV) [N/y/?] (NEW) <y><br />
Эта опция обеспечивает обратную совместимость.<br />
Network packet filtering (replaces ipchains) (CONFIG_NETFILTER) [N/y/?]<br />
<y><br />
Эта опция включает/отключает поддержку Firewall.<br />
Network packet filtering debugging (CONFIG_NETFILTER_DEBUG) [N/y/?] (NEW)<br />
<y><br />
Эта опция включает/отключает поддержку отладки кода netfilter.<br />
Socket Filtering (CONFIG_FILTER) [N/y/?] <Enter><br />
Эта опция включает/отключает поддержку фильтра Linux Socket Filter, необходимого для реализации<br />
фильтрации пакетов PPP соединений.<br />
Unix domain sockets (CONFIG_UNIX) [Y/n/?] <Enter><br />
Опция включает/отключает поддержку работы с сетями TCP/IP.<br />
TCP/IP networking (CONFIG_INET) [Y/n/?] <Enter><br />
Опция включает/отключает поддержку работы с сетями TCP/IP.<br />
IP: multicasting (CONFIG_IP_MULTICAST) [Y/n/?] <n><br />
Эта опция необходима для реализации сетевых мультимедийных технологий.<br />
IP: advanced router (CONFIG_IP_ADVANCED_ROUTER) [N/y/?] <n><br />
Эта опция позволяет конфигурировать систему как шлюз. В случае включения этой опции необходимо отве-<br />
тить на ряд дополнительных вопросов.<br />
IP: kernel level autoconfiguration (CONFIG IP_PNP) [N/y/?] <Enter><br />
Включение этой опции необходимо только для бездисковых рабочих станций, требующих доступа к сети<br />
для загрузки.<br />
IP: tunneling (CONFIG_NET_IPIP) [N/y/?] <Enter><br />
Эта опция включает поддержку туннелирования. Её использование необходимо, например, при подключе-<br />
нии сервера к сети через VPN-подключение.<br />
IP: GRE tunnels over IP (CONFIG_NET_IPGRE) [N/y/?] <Enter><br />
Другой вид настройки туннелирования. Её использование необходимо, например, при подключении<br />
сервера к сети через VPN-подключение.<br />
IP: TCP Explicit Congestion Notification support (CONFIG_INET_ECN)<br />
[N/y/?] <Enter><br />
Опция включает/отключает поддержку уведомления клиентов о перегрузке системы. К сожалению,<br />
многие сервера отказывают в доступе тем системам, на которых включена эта опция, из соображений безо-<br />
пасности.<br />
IP: TCP syncookie support (disabled per default) (CONFIG_SYN_COOKIES)<br />
[N/y/?] Y<br />
Эта опция включает/отключает поддержку защиты от SYN-атак.<br />
*<br />
*IP: Netfilter Configuration<br />
*<br />
Connection tracking (required for masq/NAT) (CONFIG_IP_NF_CONNTRACK)<br />
[N/y/?] (NEW) <y><br />
FTP protocol support (CONFIG_IP_NF_FTP) [N/y/?] (NEW) <y><br />
IRC protocol support (CONFIG_IP_NF_IRC) [N/y/?] (NEW) <Enter><br />
IP tables support (required for filtering/masq/NAT)<br />
(CONFIG_IP_NF_IPTABLES) [N/y/?] (NEW) <y><br />
limit match support (CONFIG_IP_NF_MATCH_LIMIT) [N/y/?] (NEW) <y><br />
MAC address match support (CONFIG_IP_NF_MATCH_MAC) [N/y/?] (NEW) <y><br />
netfilter MARK match support (CONFIG_IP_NF_MATCH_MARK) [N/y/?] (NEW) <y><br />
Multiple port match support (CONFIG_IP_NF_MATCH_MULTIPORT) [N/y/?] (NEW)<br />
<y><br />
TOS match support (CONFIG_IP_NF_MATCH_TOS) [N/y/?] (NEW) <y><br />
LENGTH match support (CONFIG_IP_NF_MATCH_LENGTH) [N/y/?] (NEW) <y><br />
TTL match support (CONFIG_IP_NF_MATCH_TTL) [N/y/?] (NEW) <y><br />
tcpmss match support (CONFIG_IP_NF_MATCH_TCPMSS) [N/y/?] (NEW) <y><br />
Connection state match support (CONFIG_IP_NF_MATCH_STATE) [N/y/?] (NEW)<br />
<y><br />
Packet filtering (CONFIG_IP_NF_FILTER) [N/y/?] (NEW) <y><br />
REJECT target support (CONFIG_IP_NF_TARGET_REJECT) [N/y/?] (NEW) <y><br />
Full NAT (CONFIG_IP_NF_NAT) [N/y/?] (NEW) <Enter><br />
Packet mangling (CONFIG_IP_NF_MANGLE) [N/y/?] (NEW) <y><br />
TOS target support (CONFIG_IP_NF_TARGET_TOS) [N/y/?] (NEW) <y><br />
MARK target support (CONFIG_IP_NF_TARGET_MARK) [N/y/?] (NEW) <y><br />
LOG target support (CONFIG_IP_NF_TARGET_LOG) [N/y/?] (NEW) <y><br />
TCPMSS target support (CONFIG IP NF_TARGET_TCPMSS) [N/y/?] (NEW) <y><br />
Для шлюзов и прокси-серверов.<br />
* Packet socket (CONFIG__PACKET) [Y/n/?] <Enter><br />
Эта опция включает/отключает поддержку приложений, которые связываются непосредственно с сетевыми<br />
устройствами без использования промежуточного сетевого протокола, осуществленного в ядре, подобно<br />
программе tcpdump.<br />
Packet socket: mmapped IO (CONFIG_PACKET_MMAP) [N/y/?] <y><br />
Эта опция включает/отключает ускорение работы драйвера пакетов.<br />
Netlink device emulation (CONFIG_NETLINK_DEV) [N/y/?] (NEW) <y><br />
Эта опция обеспечивает обратную совместимость.<br />
Network packet filtering (replaces ipchains) (CONFIG_NETFILTER) [N/y/?]<br />
<y><br />
Эта опция включает/отключает поддержку Firewall.<br />
Network packet filtering debugging (CONFIG_NETFILTER_DEBUG) [N/y/?] (NEW)<br />
<y><br />
Эта опция включает/отключает поддержку отладки кода netfilter.<br />
Socket Filtering (CONFIG_FILTER) [N/y/?] <y><br />
Эта опция включает/отключает поддержку фильтра Linux Socket Filter, необходимого для реализации<br />
фильтрации пакетов PPP-соединений.<br />
Unix domain sockets (CONFIG_UNIX) [Y/n/?] <y><br />
Опция включает/отключает поддержку работы с сетями TCP/IP.<br />
TCP/IP networking (CONFIG_INET) [Y/n/?] <Enter><br />
Опция включает/отключает поддержку работы с сетями TCP/IP.<br />
IP: multicasting (CONFIG_IP_MULTICAST) [Y/n/?] <Y><br />
Эта опция необходима для реализации сетевых мультимедийных технологий.<br />
IP: advanced router (CONFIG_IP_ADVANCED_ROUTER) [N/y/?] <y><br />
Эта опция позволяет конфигурировать систему как шлюз. В случае включения этой опции необходимо отве-<br />
тить на ряд дополнительных вопросов.<br />
IP: policy router (CONFIG_IP_MULTIPLE_TABLES) [N/y/?] <y><br />
IP: use netfilter MARK value as routing key (CONFIG_IP_ROUTE_FWMARK)<br />
[N/y/?] <y><br />
IP: fast network address translation (CONFIG_IP_ROUTE_NAT) [N/y/?] <y><br />
IP: equal cost multipath (CONFIG_IP_ROUTE_MULTIPATH) [N/y/?] <y><br />
IP: use TOS value as routing key(CONFIG_IP_ROUTE_TOS) [N/y/?] <y><br />
IP: verbose route monitoring (CONFIG_IP_ROUTE_VERBOSE) [N/y/?] <y><br />
IP: large routing tables (CONFIG_IP_ROUTE_LARGE_TABLES) [N/y/?] <y><br />
IP: kernel level autoconfiguration (CONFIG_IP_PNP) [N/y/?] <Enter><br />
Включение этой опции необходимо только для бездисковых рабочих станций, требующих доступа к сети<br />
для загрузки.<br />
IP: tunneling (CONFIG_NET_IPIP) [N/y/?] <y><br />
Эта опция включает поддержку туннелирования. Её использование необходимо, например, при подключе-<br />
нии сервера к сети через VPN-подключение.<br />
IP: GRE tunnels over IP (CONFIG_NET_IPGRE) [N/y/?] <y><br />
Другой вид настройки туннелирования. Её использование необходимо, например, при подключении сервера<br />
к сети через VPN-подключение.<br />
IP: TCP Explicit Congestion Notification support (CONFIG_INET_ECN)<br />
[N/y/?] <Enter><br />
Опция включает/отключает поддержку уведомления клиентов о перегрузке системы. К сожалению, многие<br />
сервера отказывают в доступе тем системам, на которых включена эта опция, из соображений безопасности.<br />
IP: TCP syncookie support (disabled per default) (CONFIG_SYN_COOKIES)<br />
[N/y/?] Y<br />
Эта опция включает/отключает поддержку защиты от атак типа &#8220;SYN-flood&#8221;.<br />
*<br />
*IP: Netfilter Configuration<br />
*<br />
Connection tracking (required for masq/NAT) (CONFIG_IP_NF_CONNTRACK)<br />
[N/y/?] (NEW) <y><br />
FTP protocol support (CONFIG_IP_NF_FTP) [N/y/?] (NEW) <y><br />
IRC protocol support (CONFIG_IP_NF_IRC) [N/y/?] (NEW) <y><br />
IP tables support (required for filtering/masq/NAT)<br />
(CONFIG_IP_NF_IPTABLES) [N/y/?] (NEW) <y><br />
limit match support (CONFIG_IP_NF_MATCH_LIMIT) [N/y/?] (NEW) <y><br />
MAC address match support (CONFIG_IP_NF_MATCH_MAC) [N/y/?] (NEW) <y><br />
netfilter MARK match support (CONFIG_IP_NF_MATCH_MARK) [N/y/?] (NEW) <y><br />
Multiple port match support (CONFIG_IP_NF_MATCH_MULTIPORT) [N/y/?] (NEW)<br />
<y><br />
TOS match support (CONFIG_IP_NF_MATCH_TOS) [N/y/?] (NEW) <y><br />
LENGTH match support (CONFIG_IP_NF_MATCH_LENGTH) [N/y/?] (NEW) <y><br />
TTL match support (CONFIG_IP_NF_MATCH_TTL) [N/y/?] (NEW) <y><br />
tcpmss match support (CONFIG_IP_NF_MATCH_TCPMSS) [N/y/?] (NEW) <y><br />
Connection state match support (CONFIG_IP_NF_MATCH_STATE) [N/y/?] (NEW)<br />
<y><br />
Packet filtering (CONFIG_IP_NF_FILTER) [N/y/?] (NEW) <y><br />
REJECT target support (CONFIG_IP_NF_TARGET_REJECT) [N/y/?] (NEW) <y><br />
Full NAT (CONFIG_IP_NF_NAT) [N/y/?] (NEW) <y><br />
MASQURADE target support (CONFIG_IP_NF_TARGET_MARK) [N/y/?] (NEW) <y><br />
REDIRECT target support (CONFIG_IP_NF_TARGET_REDIRECT) [N/y/?] (NEW) <y><br />
Packet mangling (CONFIG_IP_NF_MANGLE) [N/y/?] (NEW) <y><br />
TOS target support (CONFIG_IP_NF_TARGET_TOS) [N/y/?] (NEW) <y><br />
MARK target support (CONFIG_IP_NF_TARGET_MARK) [N/y/?] (NEW) <y><br />
LOG target support (CONFIG_IP_NF_TARGET_LOG) [N/y/?] (NEW) <y><br />
TCPMSS target support (CONFIG_IP_NF_TARGET_TCPMSS) [N/y/?] (NEW) <y><br />
ipchains (2.2 style) support (CONFIG_IP_NF_COMPAT_IPCHAINS) [N/y/?] (NEW)<br />
<y><br />
ipchains (2.0 style) support (CONFIG_IP_NF_COMPAT_IPWADM) [N/y/?] (NEW)<br />
<y><br />
Шаг 3<br />
Настройте, перекомпилируйте и инсталлируйте ядро в соответствии с одним из приведенных выше<br />
вариантов конфигурации и инструкциями, изложенными в главе 6.<br />
ЗАМЕЧАНИЕ Если вы следовали инструкциям, изложенным в главе 6, то в настройке, перекомпиляции<br />
и инсталляции ядра нет необходимости. В этом случае достаточно лишь проверить правильность установки<br />
опций, связанных с настройкой подсистемы сетевой безопасности ядра.</p>
<p><strong>Компиляция оптимизация и инсталляция IPTables из исходных кодов</strong></p>
<p>Для установки IPTables из исходных кодов необходимо сделать следующее. Авторы протестировали<br />
работоспособность приведенных ниже рекомендаций для ядра версии 2.4.19 с наложенным на исходные ко-<br />
ды патчем grsecurity-1.9.7d-2.4.19.<br />
Шаг 1<br />
Распакуйте архив с патчем patch-o-matic-20030107.tar.bz2 (этот патч применим к ядрам<br />
версии 2.4.18…2.4.20) в каталоге /var/tmp:<br />
[root@bastion tmp]# /usr/bin/bunzip2 patch-o-matic-20030107.tar.bz2<br />
[root@bastion tmp]# tar –xpf patch-o-matic-20030107.tar<br />
Шаг 2<br />
Примените патч к исходным кодам ядра:<br />
[root@bastion tmp]# cd patch-o-matic-20030107<br />
[root@bastion patch-o-matic-20030107]# make<br />
KERNEL_DIR=path_to_kernel_source patching_option<br />
Параметр path_to_kernel_source<br />
задает путь к каталогу, в который распакованы исходные коды ядра, инсталлированного в вашей системе. В<br />
рассматриваемом примере – KERNEL_DIR=/usr/src/linux-2.4.19.<br />
Параметр patching_option<br />
определяет степень модификации исходных кодов ядра.<br />
Параметр pending-patches<br />
означает, что при применении патча будут изменены только те фрагменты кодов ядра, которые содержат<br />
наиболее существенные ошибки и в любом случае будут учтены группой разработчиков кода ядра.<br />
Параметр most-of-pom<br />
внесет все из наиболее существенных, не противоречащих друг другу изменений, предлагаемыx группой<br />
разработчиков IPTables.<br />
Параметр patch-o-matic<br />
предназначен для экспертов в области сетевой безопасности и позволяет самостоятельно добавлять, удалять<br />
и получать информацию о каждом из патчей, применяемом к исходным кодам ядра. Если вы эксперт в об-<br />
ласти сетевой безопасности, то вряд ли вы будете читать этот раздел и книгу в целом. Для остальных чита-<br />
телей, желающих поэкспериментировать с различными вариантами модификации исходных кодов ядра, мо-<br />
жет оказаться полезным ознакомление, по крайней мере, с Netfilter Hacking HOWTO и Netfilter Extensions<br />
HOWTO, которые можно найти по адресу<br />
http://www.netfilter.org/documentation/index.html#HOWTO.<br />
Шаг 3<br />
Распакуйте архив с пакетом iptables-1.2.7a.tar.bz2 в каталоге /var/tmp:<br />
[root@bastion tmp]# /usr/bin/bunzip2 iptables-1.2.7a.tar.bz2<br />
[root@bastion tmp]# tar –xpf iptables-1.2.7a.tar<br />
Шаг 4<br />
Удалите старую версию пакета iptables, если она установлена. Если iptables был установлен<br />
из rpm-пакета, например, при первичной установке с поставляемого дистрибутива, выполните:<br />
[root@bastion tmp]# rpm -e iptables<br />
Если пакет устанавливался из исходных текстов, то наберите:<br />
[root@bastion tmp]# rm –rf list_installed_files<br />
Параметр list_of_installed_files представляет собой список файлов, установленных в сис-<br />
теме при инсталляции iptables из исходных кодов, разделенных пробелами. Описание команд для созда-<br />
ния перечня установленных файлов приведено ниже.<br />
Шаг 5<br />
Перейдите в каталог /var/tmp/iptables-1.2.7a:<br />
[root@bastion tmp]# cd iptables-1.2.7a.tar<br />
Откомпилируйте исходный код iptables-1.2.7a:<br />
[root@bastion iptables-1.2.7a]# make KERNEL_DIR=/usr/src/linux-2.4.19.<br />
BINDIR=/sbin LIBDIR=/lib/iptables MANDIR=/usr/share/man/man8<br />
Установите iptables-1.2.7a:<br />
[root@bastion iptables-1.2.7a]# find /* > /var/tmp/iptables.1.txt<br />
[root@bastion iptables-1.2.7a]# make KERNEL_DIR=/usr/src/linux-2.4.19.<br />
BINDIR=/sbin LIBDIR=/lib/iptables MANDIR=/usr/share/man/man8<br />
Создайте и сохраните в надежном месте список файлов IPTables, установленных на системе:<br />
[root@bastion iptables-1.2.7a]# find /* > /var/tmp/iptables.2.txt<br />
[root@bastion iptables-1.2.7a]# diff /var/tmp/iptables.1.txt<br />
/var/tmp/iptables.2.txt > /var/tmp/iptables.installed.txt<br />
[root@bastion iptables-1.2.7a]# mv iptables.installed.txt<br />
/very_reliable_place/iptables.installed.YYYYMMDD.txt /<br />
Шаг 6<br />
Осуществите в соответствии с назначением системы и рекомендациями, изложенными выше, на-<br />
стройку, компиляцию и инсталляцию нового ядра, к исходным кодам которого был применен патч patcho-<br />
matic-20030107. Инструкции по настройке компиляции и инсталляции ядра содержатся в главе 6.<br />
Шаг 7<br />
Удалите каталоги с исходными кодами ядра, патча patch-o-matic-20030107 и iptables-<br />
1.2.7a и их архивы:<br />
[root@bastion iptables-1.2.7a]# rm –rf /usr/src/linux-2.4.19<br />
[root@bastion iptables-1.2.7a]# rm –rf /var/tmp/patch-o-matic-20030107<br />
[root@bastion iptables-1.2.7a]# rm –rf /var/tmp/iptables-1.2.7a<br />
[root@bastion iptables-1.2.7a]# rm –f /var/tmp/ iptables-1.2.7a.tar<br />
[root@bastion iptables-1.2.7a]# rm –f /var/tmp/ patch-o-matic-<br />
20030107.tar</p>
<p><strong>Настройка системы сетевой защиты IPTables</strong></p>
<p>IPTables используется для отправки, переадресации, организации маскарадинга (masquarade) и фильт-<br />
рации пакетов, входящих в сеть или исходящих из нее. В настоящее время существуют четыре главных под-<br />
системы, но только три действительно важны для работы IPTables:<br />
• подсистема классификации пакетов;<br />
• подсистема мониторинга подключений (connection-tracking system);<br />
• подсистема трансляции адресов (network address translation).<br />
Обычно правила, определяющие, что же должна делать система сетевой защиты, передаются ей в ви-<br />
де команд:<br />
[root@bastion /]# /sbin/iptables RULE<br />
Параметр RULE представляет собой некоторое правило в виде набора опций команды iptables.<br />
Набор правил также может быть оформлен в виде скрипта командного интерпретатора, содержащего коман-<br />
ды, аналогичные приведенной выше. Подробное описание настроек сетевой защиты, применительно даже к<br />
типовым вариантам ее конфигурации, может являться темой для отдельной книги и не может быть рассмот-<br />
рено в пределах одной главы.<br />
Ниже приведены три примера, демонстрирующие возможность управления подсистемами классифи-<br />
кации пакетов, мониторинга подключений и трансляции адресов. Для желающих детально изучить систему<br />
сетевой защиты рекомендуем, по крайней мере, ознакомиться с документом Iptables Tutorial, автором кото-<br />
рого является Оскар Андреассон (Oskar Andreasson). Последнюю версию этого документа можно получить с<br />
http://www.netfilter.org/documentation/tutorials/blueflux/ или воспользоваться одной<br />
из версий перевода на русский язык этого документа, сделанного Андреем Киселевым. Для тех, кто не жела-<br />
ет или не имеет времени на детальное изучение системы сетевой безопасности, настоятельно рекомендуем<br />
изучить материалы следующей главы, где рассматриваются вопросы, связанные с установкой и настройкой<br />
GIPTables Firewall. Этот программный продукт прост в установке и настройке, и позволяет автоматически<br />
генерировать правила IPTables для систем различного целевого назначения с одной или двумя сетевыми<br />
картами.<br />
Правила IPTables используются для определения того, что вы хотите сделать с входящими и исходя-<br />
щими пакетами. По умолчанию существуют три цепочки правил:<br />
• для входящих пакетов используется цепочка правил INPUT;<br />
• для исходящих – OUTPUT;<br />
• для перенаправляемых – FORWARD.<br />
Для изменения концепции безопасности используйте команду:<br />
[root@bastion /]# /sbin/iptables –policy CHAIN TARGET<br />
Параметр CHAIN содержит имя цепочки правил (например, INPUT, OUTPUT или FORWARD), для ко-<br />
торой изменяется концепция безопасности. TARGET – имя концепции (например, ACCESS или DROP).<br />
Для добавления нового правила к цепочке используется опция –A. Для определения протокола, к ко-<br />
торому относится опция, используется опция –p. Для определения IP-адреса отправителя и получателя –<br />
опции –s и –d, соответственно. Для ограничения диапазона портов отправителя и получателя, к которым<br />
применимо правило – опции &#8211;sport и –-dport, соответственно. Определение, какие сетевые устройства<br />
используются для входящих и исходящих пакетов, осуществляется с помощью опций –i и –o, соответст-<br />
венно.<br />
Для работы подсистемы классификации соединений создайте правила, запрещающие доступ входя-<br />
щих и исходящих пакетов через внешний интерфейс к Web-серверу. Для этого добавьте к цепочке правил<br />
для входящих пакетов (-A INPUT) новое правило, которое запретит доступ всех пакетов (-J DROP) через<br />
интерфейс eth0 (-i eth0) c использованием протокола TCP (-p tcp) со всех адресов (-s 0.0.0.0) в<br />
диапазоне номеров портов 1024…65535 (&#8211;sport 1024:65535) на IP-адрес внешнего интерфейса<br />
212.45.28.122 (-d 212.45.28.122) к порту службы httpd (&#8211;dport 80):<br />
[root@bastion /]# /sbin/iptables -A INPUT -i eth0 -p TCP -s 0.0.0.0 &#8211;<br />
sport 1024:65535 -d 212.45.28.122 &#8211;dport 80 -j DROP<br />
Добавьте к цепочке правил для исходящих пакетов (-A OUTPUT) новое правило, которое запретит<br />
отправку всех пакетов (-J DROP) через интерфейс eth0 (-i eth0) c использованием протокола TCP (-p<br />
tcp), с адреса (-s 212.45.28.122) порта 80 (&#8211;sport 80) на любой IP-адрес (-d 0.0.0.0) в диа-<br />
пазоне портов 1024…65535 (&#8211;dport 1024:65535):<br />
[root@bastion /]# /sbin/iptables -A OUTPUT -o eth0 -p tcp -s<br />
212.45.28.122 &#8211;sport 80 -d 0.0.0.0 &#8211;dport 1024:65535 -j DROP<br />
Подсистема мониторинга подключений отслеживает соединения и позволяет селектировать принад-<br />
лежность пакетов к следующим типам соединений:<br />
• вновь устанавливаемым;<br />
• уже установленным;<br />
• создаваемым с уже установленными соединениями;<br />
• не установленной принадлежности.<br />
В правилах IPTables для характеристики каждого из типов пакетов, соответственно, используются<br />
опции NEW, ESTABLISH, RELATED и INVALID.<br />
Для иллюстрации работы подсистемы мониторинга соединений создайте правила:<br />
• разрешающие прием пакетов для устанавливаемых новых соединений;<br />
• разрешающие прием пакетов, принадлежащих уже установленным соединениям;<br />
• разрешающие отправку исходящих пакетов только для уже существующих соединений.<br />
Для этого добавьте к цепочке правил для входящих пакетов (-A INPUT) новое правило, которое<br />
разрешает прием всех пакетов (-J АССЕРТ), которые устанавливают новые соединения, инициализируе-<br />
мые вашей системой, или уже связаны с установленными соединениями (-m state &#8211;state NEW,<br />
ESTABLISHED) через интерфейс eth0 (-i eth0) c использованием протокола TCP (-p tcp) со всех адре-<br />
сов (-s 0.0.0.0) в диапазоне номеров портов 1024…65535 (&#8211;sport 1024:65535) на IP-адрес<br />
внешнего интерфейса 212.45.28.122 (-d 212.45.28.122) к порту службы httpd (&#8211;dport 80):<br />
[root@bastion /]# /sbin/iptables -A INPUT -i eth0 -p TCP -s 0.0.0.0 &#8211;<br />
sport 1024:65535 -d 212.45.28.122 &#8211;dport 80 -m state &#8211;state NEW,<br />
ESTABLISHED -j АССЕРТ<br />
Добавьте к цепочке правил для входящих пакетов (-A OUTPUT) новое правило, которое разрешает<br />
отправление всех пакетов (-J АССЕРТ), которые связаны с существующими соединениями (-m state &#8211;<br />
state ESTABLISHED) с интерфейса eth0 (-i eth0) c использованием протокола TCP (-p tcp) с адреса<br />
212.45.28.122 (-s 212.45.28.122) порта 80 (&#8211;sport 1024:65535) на любой IP-адрес (-d<br />
0.0.0.0) в диапазоне номеров портов 1024…65535 (&#8211;sport 1024:65535):<br />
[root@bastion /]# /sbin/iptables -A OUTPUT -o eth0 -p TCP -s<br />
212.45.28.122 &#8211;sport 80 -d 0.0.0.0 &#8211;dport 1024:65535 -m state &#8211;state<br />
ESTABLISHED -j АССЕРТ<br />
Подсистема трансляции сетевых адресов транслирует IP-адреса локальной сети в адреса внешней се-<br />
ти. Например, она используется для организации шлюзов, в том числе, и поддерживающих, так называемый,<br />
маскарадинг, для более эффективного распределения нагрузки на системы сети и т. п. Подсистема трансля-<br />
ции адресов содержит две цепочки правил PREROUTING и POSTROUTING. Первая из них содержит набор<br />
правил для входящих пакетов, вторая для исходящих.<br />
Для иллюстрации работы подсистемы трансляции адресов создайте правило, которое маскирует все<br />
пакеты, исходящие из вашей внутренней сети под пакеты, якобы отправленные с наружного интерфейса.<br />
Для наружного интерфейса – сетевой карты (eth0) – в таблицу NAT (-t nat) добавьте к цепочке правил<br />
исходящих пакетов (-A POSTROUTING) через сетевой интерфейс eth0 (–o eth0) маскарадинг (–j<br />
MASQUERADE):<br />
[root@bastion /]# /sbin/iptables –t nat –A POSTROUTING –o eth0 –j<br />
MASQUERADE<br />
Для наружного интерфейса – ppp0 (создаваемого при установке VPN-соединения по протоколу PPTP<br />
или модемном соединении со шлюзом провайдера) – в таблицу NAT (-t nat) добавьте к цепочке правил<br />
исходящих пакетов (-A POSTROUTING) через сетевой интерфейс ppp0 (–o ppp0) маскарадинг (–j<br />
MASQUERADE):<br />
[root@bastion /]# /sbin/iptables –t nat –A POSTROUTING –o ppp0 –j<br />
MASQUERADE<br />
Для перенаправления входящих пакетов на компьютер, находящийся во внутренней сети, создайте<br />
правило в таблицу NAT (-t nat), добавьте к цепочке правил входящих пакетов (-A PREROUTING) на IP-<br />
адрес 212.45.28.122 (-d 212.45.28.122) для протокола TCP (-p tcp) порта 80 (&#8211;dport 80) перена-<br />
правление (-j DNAT) на IP-адрес 172.16.181.102 порта 8001(&#8211;to 172.16.181.102:8001):<br />
Теперь, если вы хотите отправить информацию о порте, например, его значении, с TCP-пакетами,<br />
входящими на внешний интерфейс по IP-адресу 207.35.78.2 на порту 8080 так, чтобы их отображение адре-<br />
сата на локальный интерфейс было по IP-адресу 192.168.1.1 на порту 80, тогда вы могли бы использовать<br />
следующие правила:<br />
[root@bastion /]# /sbin/iptables -t nat -A PREROUTING -d 212.45.28.122 -p<br />
tcp &#8211;dport 80 -j DNAT &#8211;to 172.16.181.102:8001</p>
<p><strong>Проверка настроек сетевой защиты</strong></p>
<p>Для просмотра всех правил во всех цепочках используйте команду:<br />
[root@bastion /]# iptables -L<br />
Для вывода всех правил в некоторой цепочке используйте, например, команду INPUT:<br />
[root@bastion/ ] # iptables -L INPUT<br />
Если вы предпочитаете числовой формат отображения информации, то используйте опцию –n, на-<br />
пример:<br />
[root@bastion /]# iptables –nL<br />
ЗАМЕЧАНИЕ Команда iptables имеет большое число опций, которые позволяют создавать правила,<br />
удовлетворяющие практически любым требованиям пользователей к системе сетевой защиты, и осуществ-<br />
лять диагностику работы этой системы. Описание всех возможных и даже типовых конфигураций системы се-<br />
тевой защиты выходит за рамки этой главы и книги. Поэтому перед применением на практике рекомендаций,<br />
изложенных в настоящей главе, авторы рекомендуют изучить страницы руководства, связанные с IPTables, и<br />
документ IPTables Tutorial.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.compyuteri.ru/glava-9-osnovnye-polozheniya-sistemy-setevoj-zashhity-firewall/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Глава 10. GIPTables Firewall - программное обеспечение для настройки IPTables</title>
		<link>http://www.compyuteri.ru/glava-10-giptables-firewall-programmnoe-obespechenie-dlya-nastrojki-iptables/</link>
		<comments>http://www.compyuteri.ru/glava-10-giptables-firewall-programmnoe-obespechenie-dlya-nastrojki-iptables/#comments</comments>
		<pubDate>Sat, 13 Sep 2008 14:40:44 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[Часть 02. Система сетевой защиты]]></category>

		<category><![CDATA[firewall]]></category>

		<category><![CDATA[GIPTables]]></category>

		<category><![CDATA[iptables]]></category>

		<category><![CDATA[прокси]]></category>

		<category><![CDATA[серверы]]></category>

		<category><![CDATA[фаерволл]]></category>

		<category><![CDATA[шлюз]]></category>

		<guid isPermaLink="false">http://www.compyuteri.ru/?p=67</guid>
		<description><![CDATA[]]></description>
			<content:encoded><![CDATA[]]></content:encoded>
			<wfw:commentRss>http://www.compyuteri.ru/glava-10-giptables-firewall-programmnoe-obespechenie-dlya-nastrojki-iptables/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Глава 11. GnuPG – утилита для безопасного хранения и передачи данных</title>
		<link>http://www.compyuteri.ru/glava-11-gnupg-%e2%80%93-utilita-dlya-bezopasnogo-xraneniya-i-peredachi-dannyx/</link>
		<comments>http://www.compyuteri.ru/glava-11-gnupg-%e2%80%93-utilita-dlya-bezopasnogo-xraneniya-i-peredachi-dannyx/#comments</comments>
		<pubDate>Sat, 13 Sep 2008 14:17:34 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[Часть 03. Криптографическое программное обеспечение - и]]></category>

		<category><![CDATA[GnuPG]]></category>

		<category><![CDATA[gpg]]></category>

		<category><![CDATA[PGP]]></category>

		<guid isPermaLink="false">http://www.compyuteri.ru/?p=65</guid>
		<description><![CDATA[В этой главе:
1. Ограничения и допущения
2. Пакеты
3. Инсталляция с помощью rpm-пакетов
4. Компиляция, оптимизация и инсталляция GnuPG
5. Тестирование GnuPG
GnuPG – утилита для безопасной передачи и хранения данных. Используется для шифрования дан-
ных и создания цифровых подписей, включает управления базой данных ключей и соответствует стандарту
ОpenPGP. GnuPG – свободно распространяемая утилита, не использующая запатентованных алгоритмов,
поэтому она, к сожалению, не [...]]]></description>
			<content:encoded><![CDATA[<p>В этой главе:<br />
1. Ограничения и допущения<br />
2. Пакеты<br />
3. Инсталляция с помощью rpm-пакетов<br />
4. Компиляция, оптимизация и инсталляция GnuPG<br />
5. Тестирование GnuPG</p>
<p>GnuPG – утилита для безопасной передачи и хранения данных. Используется для шифрования дан-<br />
ных и создания цифровых подписей, включает управления базой данных ключей и соответствует стандарту<br />
ОpenPGP. GnuPG – свободно распространяемая утилита, не использующая запатентованных алгоритмов,<br />
поэтому она, к сожалению, не совместима с PGP2.<br />
Одной из наиболее важных областей применения утилиты является проверка подлинности получае-<br />
мых программ. GnuPG позволяет с высокой степенью достоверности установить, что коды устанавливаемо-<br />
го программного обеспечения не были модифицированы при транспортировке от разработчика к вам по се-<br />
тям общего пользования.</p>
<p><strong>Ограничения и допущения</strong></p>
<p>Исходные коды находятся в каталоге /var/tmp.<br />
Все операции выполняются пользователем с учетной записью root.<br />
Используется дистрибутив ASPLinux 7.3 (Vostok).<br />
Перекомпиляция ядра не требуется.<br />
Процедуры, описанные в этой главе, могут оказаться применимыми для других версий ядра и дистри-<br />
бутивов Linux, но авторы этого не проверяли.<br />
ЗАМЕЧАНИЕ В некоторых странах ввоз, распространение и использование программного обеспечения<br />
для криптографии запрещено.</p>
<p><strong>Пакеты</strong></p>
<p>Последующие рекомендации основаны на информации, полученной с домашней страницы проекта<br />
GnuPG по состоянию на 19.03.2003. Регулярно посещайте домашнюю страницу проекта<br />
http://www.gnupg.org/ и отслеживайте обновления.<br />
Исходные коды GnuPG содержатся в архиве gnupg-version.tar.gz (последняя доступная на<br />
момент написания главы стабильная версия gnupg-1.2.1.tar.gz).<br />
Для нормальной инсталляции и работы программного обеспечения необходимо, чтобы в системе бы-<br />
ли установлены пакеты gettext-0.11.1-2.i386.rpm, python-1.5.2-38.3asp.i386.rpm,<br />
expat-1.95.2-2.i386.rpm и gmp-4.0.1-3.i386.rpm.</p>
<p><strong>Инсталляция с помощью rpm-пакетов</strong></p>
<p>Если вы предпочитаете использование системы со стандартным ядром и программным обеспечением,<br />
установленным из rpm-пакетов, для установки или обновления пакета необходимо выполнить следующие<br />
операции.<br />
ЗАМЕЧАНИЕ Авторы настоятельно рекомендуют устанавливать программное обеспечение из исход-<br />
ных кодов.<br />
Шаг 1<br />
Проверьте, установлен ли пакет gnupg с помощью следующей команды:<br />
[root@drwalbr /]# rpm –iq gnupg<br />
Если вы следовали нашим рекомендациям, то пакет не установлен.<br />
Шаг 2<br />
Перейдите в каталог, где находится пакет gnupg-1.0.6-5.asp.i386.rpm. Если вы в соответст-<br />
вии с рекомендациями главы 2 скопировали все пакеты, входящие в дистрибутив, в каталог<br />
/home/distrib, то выполните команду:<br />
[root@drwalbr /]# cd /home/distrib<br />
и установите:<br />
[root@drwalbr distrib]# rpm –ihv gnupg-1.0.6-5.asp.i386.rpm<br />
или обновите пакет:<br />
[root@drwalbr distrib]# rpm –Uhv gnupg-1.0.6-5.asp.i386.rpm<br />
После установки пакета перейдите к тестированию утилиты GnuPG, описанной ниже.</p>
<p><strong>Компиляция, оптимизация и инсталляция GnuPG</strong></p>
<p>Для конфигурирования, компилирования и оптимизации GnuPG из исходных кодов выполните сле-<br />
дующие действия.<br />
Шаг 1<br />
Проверьте подлинность полученного архива с исходными кодами GnuPG. Для этого необходимо<br />
сравнить контрольную сумму MD5 пакета:<br />
[root@drwalbr /]# md5sum gnupg-1.2.1.tar.gz<br />
83e02b4905dab34c4dc25652936022f9 gnupg-1.2.1.tar.gz<br />
c контрольной суммой, указанной на сервере разработчика:<br />
[root@drwalbr /]# lynx http://www.gnupg.org/download/index.html<br />
# Download - GnuPG.org (p4 of 9)<br />
We suggest that you download the GNU Privacy Guard from a mirror site<br />
close to you. See our list of mirrors. To locate a source package<br />
…<br />
GnuPG 1.2.1 source compressed using gzip. 2.5MB S FTP HTTP<br />
Signature and MD5 checksum for previous file.<br />
83e02b4905dab34c4dc25652936022f9 gnupg-1.2.1.tar.gz FTP HTTP<br />
…<br />
Шаг 2<br />
Разархивируйте исходные коды в каталоге /var/tmp:<br />
[root@drwalbr /]# cd /var/tmp<br />
[root@drwalbr tmp]# tar xzpf gnupg-1.2.1.tar.gz<br />
Шаг 3<br />
Сконфигурируйте исходные коды программы:<br />
[root@drwalbr tmp]# cd gnupg-1.2.1/<br />
[root@drwalbrgnupg-1.2.1]# CFLAGS=&#8221;-O2 -march=i686 -funroll-loops&#8221;; export<br />
CFLAGS<br />
./configure \<br />
&#8211;prefix=/usr \<br />
&#8211;mandir=/usr/share/man \<br />
&#8211;infodir=/usr/share/info \<br />
&#8211;disable-nls<br />
При таких параметрах конфигурации осуществляется оптимизация применительно к архитектуре<br />
процессора i686, определяются каталоги для размещения соответствующих файлов и отключается поддерж-<br />
ка языков, отличных от английского.<br />
Шаг 4<br />
Откомпилируйте исходные коды, проверьте правильность компиляции и наличие соответствующих<br />
библиотек, проинсталлируйте файлы GnuPG, создайте и сохраните список инсталлированных файлов:<br />
[root@drwalbr gnupg-1.2.1]# make<br />
[root@drwalbr gnupg-1.2.1]# make check<br />
Making check in intl<br />
make[1]: Вход в каталог `/home/gnupg/gnupg-1.2.1/intl`<br />
make[1]: Цель `check` не требует выполнения команд.<br />
make[1]: Выход из каталог `/home/gnupg/gnupg-1.2.1/intl`<br />
…<br />
home: .<br />
Supported algorithms:<br />
Pubkey: RSA, RSA-E, RSA-S, ELG-E, DSA, ELG<br />
Cipher: 3DES, CAST5, BLOWFISH, AES, AES192, AES256, TWOFISH<br />
Hash: MD5, SHA1, RIPEMD160<br />
Compress: Uncompressed, ZIP, ZLIB<br />
PASS: version.test<br />
Hash algorithm TIGER/192 is not installed</p>
<p>ЗАМЕЧАНИЕ TIGER – является экспериментальным алгоритмом, поэтому мы не включили его в число<br />
устанавливаемых компонентов. Для его включения на этапе конфигурирования исходных кодов необходимо<br />
использовать опции &#8211;enable-tiger и &#8211;enable-new-tiger.<br />
PASS: mds.test<br />
PASS: decrypt.test<br />
PASS: decrypt-dsa.test<br />
PASS: sigs.test<br />
PASS: sigs-dsa.test<br />
PASS: encrypt.test<br />
PASS: encrypt-dsa.test<br />
PASS: seat.test<br />
PASS: clearsig.test<br />
PASS: encryptp.test<br />
PASS: detach.test<br />
PASS: armsigs.test<br />
PASS: armencrypt.test<br />
PASS: armencryptp.test<br />
PASS: signencrypt.test<br />
PASS: signencrypt-dsa.test<br />
PASS: armsignencrypt.test<br />
PASS: armdetach.test<br />
PASS: armdetachm.test<br />
PASS: detachm.test<br />
PASS: genkey1024.test<br />
PASS: conventional.test<br />
PASS: conventional-mdc.test<br />
PASS: multisig.test<br />
===================<br />
All 25 tests passed<br />
===================<br />
make[2]: Выход из каталог `/home/gnupg/gnupg-1.2.1/checks`<br />
make[1]: Выход из каталог `/home/gnupg/gnupg-1.2.1/checks`<br />
make[1]: Вход в каталог `/home/gnupg/gnupg-1.2.1`<br />
make[1]: Цель `check-am` не требует выполнения команд.<br />
make[1]: Выход из каталог `/home/gnupg/gnupg-1.2.1`<br />
[root@drwalbr gnupg-1.2.1]# find /* > /root/gnupg1<br />
[root@drwalbr gnupg-1.2.1]# make install<br />
[root@drwalbr gnupg-1.2.1]# strip /usr/bin/gpg<br />
[root@drwalbr gnupg-1.2.1]# strip /usr/bin/gpgv<br />
[root@drwalbr gnupg-1.2.1]# find /* > /root/gnupg2<br />
[root@drwalbr gnupg-1.2.1]# diff /root/gnupg1 /root/gnupg2 ><br />
/root/gnupg.installed<br />
[root@drwalbr gnupg-1.2.1]# mv /root/gnupg.installed<br />
/very_reliable_place/gnupg.installed.YYYYMMDD<br />
Шаг 5<br />
Удалите архив с исходными кодами и каталог gnupg-1.2.1:<br />
[root@drwalbr gnupg-1.2.1]# cd /var/tmp<br />
[root@drwalbr tmp]# rm -rf gnupg-1.2.1/<br />
[root@drwalbr tmp]# rm -f gnupg-1.2.1.tar.gz</p>
<p><strong>Тестирование GnuPG</strong></p>
<p>Для тестирования GnuPG создайте, как минимум, для двух пользователей вашей системы секретную<br />
пару ключей (открытый и закрытый ключ), проверьте возможность шифрования сообщения одним из поль-<br />
зователей и возможность расшифровки другим.<br />
Шаг 1<br />
Установите права доступа к файлу /usr/bin/gpg:<br />
[root@drwalbr tmp]# chmod 4755 /usr/bin/gpg<br />
Шаг 2<br />
Зарегистрируйтесь в системе в качестве обычного пользователя, например, sergey.<br />
[sergey@drwalbr sergey]$ cd<br />
Шаг 3<br />
Если вы впервые создаете ключи для пользователя sergey, наберите:<br />
[sergey@drwalbr sergey]$ gpg &#8211;gen-key<br />
gpg (GnuPG) 1.2.1; Copyright (C) 2002 Free Software Foundation, Inc.<br />
This program comes with ABSOLUTELY NO WARRANTY.<br />
This is free software, and you are welcome to redistribute it<br />
under certain conditions. See the file COPYING for details.<br />
gpg: /home/sergey/.gnupg: directory created<br />
gpg: new configuration file `/home/sergey/.gnupg/gpg.conf&#8217; created<br />
gpg: keyblock resource `/home/sergey/.gnupg/secring.gpg&#8217;: file open error<br />
gpg: keyring `/home/sergey/.gnupg/pubring.gpg&#8217; created<br />
Please select what kind of key you want:<br />
(1) DSA and ElGamal (default)<br />
(2) DSA (sign only)<br />
(5) RSA (sign only)<br />
Your selection?<br />
и прервите выполнение программы:<br />
<Ctrl>+C<br />
Это необходимо для того, чтобы программа gpg создала необходимые файлы и каталоги в домашнем<br />
каталоге пользователя. Если ключи для пользователя уже создавались ранее, перейдите к следующему шагу.<br />
Шаг 4<br />
Запустите gpg:<br />
[sergey@drwalbr sergey]$ gpg &#8211;gen-key<br />
gpg (GnuPG) 1.2.1; Copyright (C) 2002 Free Software Foundation, Inc.<br />
This program comes with ABSOLUTELY NO WARRANTY.<br />
This is free software, and you are welcome to redistribute it<br />
under certain conditions. See the file COPYING for details.<br />
gpg: keyring `/home/sergey/.gnupg/secring.gpg&#8217; created<br />
Please select what kind of key you want:<br />
(1) DSA and ElGamal (default)<br />
(2) DSA (sign only)<br />
(5) RSA (sign only)<br />
Выберите тип ключа, предлагаемый по умолчанию:<br />
Your selection? 1<br />
DSA keypair will have 1024 bits.<br />
About to generate a new ELG-E keypair.<br />
minimum keysize is 768 bits<br />
default keysize is 1024 bits<br />
highest suggested keysize is 2048 bits<br />
Выберите длину ключа, предлагаемую по умолчанию:<br />
What keysize do you want? (1024)<Enter><br />
Requested keysize is 1024 bits<br />
Please specify how long the key should be valid.<br />
0 = key does not expire<br />
<n> = key expires in n days<br />
<n>w = key expires in n weeks<br />
<n>m = key expires in n months<br />
<n>y = key expires in n years<br />
Выберите срок действия ключа (1 год):<br />
Key is valid for? (0) 1y<br />
Key expires at Чтв 18 Мар 2004 15:43:18 MSK<br />
Подтвердите правильность введенных данных:<br />
Is this correct (y/n)? y<br />
You need a User-ID to identify your key; the software constructs the user<br />
id<br />
from Real Name, Comment and Email Address in this form:<br />
&#8220;Heinrich Heine (Der Dichter) <heinrichh@duesseldorf.de>&#8221;<br />
Введите имя пользователя:<br />
Real name: Sergey Karlov<br />
Введите имя e-mail пользователя:<br />
Email address: sergey@drwalbr.und<br />
Введите, если хотите, какие-либо комментарии, касающиеся пользователя, в противном случае:<br />
Comment:<Enter><br />
You selected this USER-ID:<br />
&#8220;Sergey Karlov <sergey@drwalbr.und>&#8221;<br />
Вам предоставляется возможность отредактировать ID пользователя, по которому будет идентифици-<br />
роваться ключи. В рассматриваемом примере – это &#8220;Sergey Karlov <sergey@drwalbr.und>&#8220;. Если<br />
все правильно, то:<br />
Change (N)ame, (C)omment, (E)mail or (O)kay/(Q)uit? O<br />
В противном случае используйте опции N, C и E для изменения имени пользователя, комментария и<br />
адреса электронной почты, соответственно.<br />
You need a Passphrase to protect your secret key.<br />
Введите пароль для защиты секретного ключа.<br />
Passphrase:$ecretnoe_$lovo_Sergeya<br />
Далее система в автоматическом режиме осуществит генерацию ключей. В это время следует подви-<br />
гать мышку, понажимать кнопки на клавиатуре для повышения степени энтропии в вашей системе.<br />
We need to generate a lot of random bytes. It is a good idea to perform<br />
some other action (type on the keyboard, move the mouse, utilize the<br />
disks) during the prime generation; this gives the random number<br />
generator a better chance to gain enough entropy.<br />
.+++++.+++++..++++++++++++++++++++++++++++++&#8230;++++++++++.++++++++++.++++<br />
+&#8230;+++++++++++++++++++++++++++++++++++++++++++++++++++++++.++++++++++>++<br />
++++++++&#8230;&#8230;&#8230;+++++<br />
We need to generate a lot of random bytes. It is a good idea to perform<br />
some other action (type on the keyboard, move the mouse, utilize the<br />
disks) during the prime generation; this gives the random number<br />
generator a better chance to gain enough entropy.<br />
+++++.+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++<br />
+++++++++++++++++++++++++++++++++++++++++++.+++++..++++++++++>+++++&#8230;..+<br />
++++^^^<br />
gpg: /home/sergey/.gnupg/trustdb.gpg: trustdb created<br />
public and secret key created and signed.<br />
key marked as ultimately trusted.<br />
pub 1024D/5BC241B3 2003-03-19 Sergey Karlov <sergey@drwalbr.und><br />
Key fingerprint = D155 D3C4 F19A 5859 3A66 9108 99E5 5EBA 5BC2 41B3<br />
sub 1024g/69CADC7B 2003-03-19 [expires: 2004-03-18]<br />
Шаг 5<br />
Экспортируйте открытый ключ:<br />
[sergey@drwalbr sergey]$ gpg &#8211;export -ao sergey.asc<br />
В результате в домашнем каталоге пользователя sergey будет создан файл sergey.asc:<br />
[sergey@drwalbr sergey]$ cat sergey.asc<br />
&#8212;&#8211;BEGIN PGP PUBLIC KEY BLOCK&#8212;&#8211;<br />
Version: GnuPG v1.2.1 (GNU/Linux)<br />
mQGiBD54ZjQRBADBezMOEg0kncSEcIV7F47AfAXXz1WtR3y/cY38o2ZeiLTo0POF<br />
qS0aescQaU5/MU0CT7ipcD91rbcKbNLzgz4xf4jMBl3rr/qXn9xAKogPAwTvZYZL<br />
t15ouGuAQTU25E1OAp5C/71Ro9kOK9ZBxkuWz+kfp5Ctc5t0UdMIOewBawCg7Tq7<br />
/z7yrIUj0TpBGOpua8M32QsD/2ZhcUDTTBO6WBYMbTbWOoMrNxYfUqB4f3H24h9h<br />
uw3e+K9wP2HFCq1BxnDO6+IBYQLntscH2kQ4hYuipEFq+iZIDrPvUfDeNs9bR33z<br />
B+cEkGUsbE4auuQ9iD5fu3va4EJolM5EGvwp9LZBpz82i3H/2kgdTrlK3YFT7UQT<br />
IWk4A/4nKzDomsEmm6SAkz6gpxorkTTedHXXv8E7Z+4cwjWH1h/LKKzGG2IwqpyN<br />
liQiUHvLdQJ/fOQMiF907eWk3c/WWiMCQo1sAEJO8Y2yS5+iFzuKFisbIOmAHWMD<br />
dWdkB6+iSz3iZkk7wlfYG2zCLt5ET834u+dAWQwc8VN2VlpE7LQiU2VyZ2V5IEth<br />
cmxvdiA8c2VyZ2V5QGRyd2FsYnIudW5kPohfBBMRAgAfBQI+eGY0BQkB4TOABAsH<br />
AwIDFQIDAxYCAQIeAQIXgAAKCRCZ5V66W8JBsy/jAKCrGteDpQ45JcEzgxACnBAI<br />
vPF/3QCgpgeS3u5BBOAA1ZcsaJ0k8tnuMEG5AQ0EPnhmNRAEAOC+GW3G5FOp1aHJ<br />
cVF+zuRRZ+oeaPRoWJwGfZ+KR5L3YYO8kP/3eeRZ5Gnp0KyJ80VCeilaJpepjot6<br />
lrqwpRbF/oGY4qHn/a6ubPmqza+sq2ttYSDx0QkTLMiI6qbekrUxa2jNgEcXr6gJ<br />
ig92U8cQWO+wXT4xtxMLldnhZAO3AAMFBACaH6pNG7zAT/QIgFgwNTT+roBUJGze<br />
lFb4eUMzSSBtEi3o3NgHt6gHqkglYOZeo8wBR+lzr69Aoq8zLpSSWzY/iHjcc/p7<br />
XflKlaiL6yqZNwSjO6aki/Hqlq9pTrxyuSIhz2jWfuzvEqoJHp1pLXbd0DbZvNs5<br />
Wc93PcctqRx/64hMBBgRAgAMBQI+eGY1BQkB4TOAAAoJEJnlXrpbwkGzRSgAoOLL<br />
N9siEQqzYa1ujl9y/GEQmHwbAJ9smVzY7PaLOGUIWA2Zxe+XXy0cjw==<br />
=o1IS<br />
&#8212;&#8211;END PGP PUBLIC KEY BLOCK&#8212;&#8211;<br />
Файл sergey.asc, содержащий открытый ключ пользователя sergey, нужно передать всем поль-<br />
зователям, с которыми он предполагает обмениваться зашифрованными файлами. Файл может быть выло-<br />
жен на Web -сервере пользователя или разослан по электронной почте.<br />
Шаг 6<br />
Зарегистрируйтесь в системе в качестве другого пользователя, например valentine и повторите<br />
шаги 1…5.<br />
Шаг 7<br />
Поместите открытый ключ пользователя sergey в домашний каталог пользователя valentine, а<br />
открытый ключ пользователя valentine в домашний каталог пользователя sergey.<br />
Шаг 8<br />
Подпишите открытые ключи.<br />
Для пользователя sergey:<br />
[sergey@drwalbr sergey]$ gpg &#8211;sign valentine.asc<br />
You need a passphrase to unlock the secret key for<br />
user: &#8220;Sergey Karlov <sergey@drwalbr.und>&#8221;<br />
1024-bit DSA key, ID 5BC241B3, created 2003-03-19<br />
Введите пароль, который использовался для защиты закрытого ключа в шаге 4:<br />
Enter passphrase: $ecretnoe_$lovo_Sergeya<br />
Для пользователя valentine:<br />
[valentine@drwalbr valentine]$ gpg &#8211;sign sergey.asc<br />
You need a passphrase to unlock the secret key for<br />
user: &#8220;Valentine Bruy <valentine@drwalbr.und>&#8221;<br />
1024-bit DSA key, ID F3238EE5, created 2003-03-19<br />
Введите пароль, который использовался для защиты закрытого ключа в шаге 4:<br />
Enter passphrase: $ecretnoe_$lovo_Valentine<br />
Шаг 9<br />
От имени пользователя valentine создайте сообщение для пользователя sergey:<br />
[valentine@drwalbr valentine]$ echo Привет, Сергей ! = Валентин > message_<br />
to_sergey<br />
Шаг 10<br />
Зашифруйте сообщение:<br />
[valentine@drwalbr valentine]$ gpg -sear sergey@drwalbr.und message_<br />
to_sergey<br />
You need a passphrase to unlock the secret key for<br />
user: &#8220;Valentine Bruy <valentine@drwalbr.und>&#8221;<br />
1024-bit DSA key, ID F3238EE5, created 2003-03-19<br />
Введите пароль для секретного ключа:<br />
Enter passphrase: $ecretnoe_$lovo_Valentine<br />
gpg: checking the trustdb<br />
gpg: checking at depth 0 signed=0 ot(-/q/n/m/f/u)=0/0/0/0/0/1<br />
gpg: next trustdb check due at 2004-03-18<br />
gpg: 69CADC7B: There is no indication that this key really belongs to the<br />
owner<br />
1024g/69CADC7B 2003-03-19 &#8220;Sergey Karlov <sergey@drwalbr.und>&#8221;<br />
Primary key fingerprint: D155 D3C4 F19A 5859 3A66 9108<br />
99E5 5EBA 5BC2 41B3<br />
Subkey fingerprint: 456F C70F 8F64 38B3 B6F4 E900<br />
70C3 B3B8 69CA DC7B<br />
It is NOT certain that the key belongs to the person named<br />
in the user ID. If you *really* know what you are doing,<br />
you may answer the next question with yes<br />
Подтвердите использования ключа:<br />
Use this key anyway? yes<br />
В результате в домашнем каталоге появился файл message_to_sergey.asc. Следует отметить,<br />
что вместо указания адреса электронной почты, используемого при шифровании сообщения, можно исполь-<br />
зовать имя пользователя (первую часть идентификатора пользователя), т. е. команды:<br />
[valentine@drwalbr valentine]$ gpg -sear sergey@drwalbr.und message_<br />
to_sergey<br />
и<br />
[valentine@drwalbr valentine]$ gpg -sear &#8220;Sergey Karlov&#8221; message_<br />
to_sergey<br />
приводят к одинаковым результатам. Переместите файл message_to_sergey в домашний каталог поль-<br />
зователя sergey.<br />
Шаг 11<br />
Файл message_to_sergey содержит зашифрованное сообщение. Если бы вы передавали его по се-<br />
тям общего пользования, то в случае перехвата сообщения третьими лицами, они смогли бы ознакомится со<br />
следующим текстом:<br />
[sergey@drwalbr sergey]$ cat message_to_sergey.asc<br />
&#8212;&#8211;BEGIN PGP MESSAGE&#8212;&#8211;<br />
Version: GnuPG v1.2.1 (GNU/Linux)<br />
hQEOA3DDs7hpytx7EAQA3+zuXyc4ckZhS3fbKsV+vcPp9wJmbYE0BF8qFYP8KQAo<br />
lRlbl1tz7l2HlAKqGrbnyTtuVqRw1RPz/vMo4IQCqL1/YHVz6KhYYbXsFIqFYXGb<br />
vB9PqgEMfRCpAJK63WFj3oyX2EL1Q9qAc9v/9Ru5SY2D1bqM3dHdneWbjJvhBcAD<br />
/iF5qWnlpex3FTTwtmvrobrKuuFzZQNIZl3AQpOL7b5EWyM5RfjKPqaG4+FVaAyd<br />
dSRvKNpeTNA4s+OgShTp8bRpNcwZ72Fy35pkwxTTRqcD7QWVaisn/Q3EnC78T3Md<br />
0ESCEHT/tkZmGhnQHBN3vA0PvC32SXTHFRoa+aiO09Ou0rYBc2D9KJPu7VMWUuSq<br />
MZ4YYkF5GUOKivURAkWbrOBztHunipgbbG6QxdeaL1eSJPkq58Ob4rtgErD8tL2M<br />
nrPbhBnUYOFoW+t+UzfFQ28eJo+jQOoFtxcQu2hpLpipBaGjbl8owXSHEVkSWmb1<br />
/8oW1uq+wBrTP0sghYxchr/7ByBeAMirvBuwkVIUrQr5S+XP6CAXnKNLfyxakMrE<br />
4T5NAuAteSlZwUj6fvo2Ba67aQBdDO7FvA==<br />
=C5As<br />
&#8212;&#8211;END PGP MESSAGE&#8212;&#8211;<br />
Для расшифровки сообщения в файле message_to_sergey:<br />
[sergey@drwalbr sergey]$ gpg -d message_to_sergey.asc > message_to_sergey<br />
You need a passphrase to unlock the secret key for<br />
user: &#8220;Sergey Karlov <sergey@drwalbr.und>&#8221;<br />
1024-bit ELG-E key, ID 69CADC7B, created 2003-03-19 (main<br />
key ID 5BC241B3)<br />
введите пароль:<br />
Enter passphrase: $ecretnoe_$lovo_Sergeya<br />
gpg: encrypted with 1024-bit ELG-E key, ID 69CADC7B,<br />
created 2003-03-19<br />
&#8220;Sergey Karlov <sergey@drwalbr.und>&#8221;<br />
gpg: Signature made Срд 19 Мар 2003 16:05:22 MSK using DSA<br />
key ID F3238EE5<br />
gpg: Good signature from &#8220;Valentine Bruy<br />
<valentine@drwalbr.und>&#8221;<br />
gpg: checking the trustdb<br />
gpg: checking at depth 0 signed=0<br />
ot(-/q/n/m/f/u)=0/0/0/0/0/1<br />
gpg: next trustdb check due at 2004-03-18<br />
gpg: WARNING: This key is not certified with a trusted<br />
signature!<br />
gpg: There is no indication that the signature<br />
belongs to the owner.<br />
Primary key fingerprint: BAD5 B986 F5AC 89E7 99A4 92CE<br />
4678 9056 F323 8EE5<br />
В результате в домашнем каталоге пользователя sergey появится файл message_to_sergey, со-<br />
держащий исходное сообщение:<br />
[sergey@drwalbr sergey]$ cat message_to_sergey<br />
Привет, Сергей ! = Валентин</p>
]]></content:encoded>
			<wfw:commentRss>http://www.compyuteri.ru/glava-11-gnupg-%e2%80%93-utilita-dlya-bezopasnogo-xraneniya-i-peredachi-dannyx/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Глава 12. OpenSSL - программное обеспечение для безопасной передачи данных</title>
		<link>http://www.compyuteri.ru/glava-12-openssl-programmnoe-obespechenie-dlya-bezopasnoj-peredachi-dannyx/</link>
		<comments>http://www.compyuteri.ru/glava-12-openssl-programmnoe-obespechenie-dlya-bezopasnoj-peredachi-dannyx/#comments</comments>
		<pubDate>Sat, 13 Sep 2008 13:39:05 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[Часть 03. Криптографическое программное обеспечение - и]]></category>

		<category><![CDATA[OpenSSL]]></category>

		<category><![CDATA[сертификаты]]></category>

		<guid isPermaLink="false">http://www.compyuteri.ru/?p=63</guid>
		<description><![CDATA[В этой главе:
1. Ограничения и допущения
2. Пакеты
3. Инсталляция с помощью rpm-пакетов
4. Компиляция, оптимизация и инсталляция OpenSSL
5. Конфигурирование OpenSSL
6. Тестирование OpenSSL
Большинство сетевых протоколов, используемых в Интернете, например, IMAP, POP, SQL, SMTP,
SMB, HTTP, FTP и LDAP, обеспечивают поддержку шифрования информации по протоколу SSL. Обычно
шифрование используется для скрытия от злоумышленников передаваемых по сетям общего пользования
логинов и паролей доступа [...]]]></description>
			<content:encoded><![CDATA[<p>В этой главе:<br />
1. Ограничения и допущения<br />
2. Пакеты<br />
3. Инсталляция с помощью rpm-пакетов<br />
4. Компиляция, оптимизация и инсталляция OpenSSL<br />
5. Конфигурирование OpenSSL<br />
6. Тестирование OpenSSL</p>
<p>Большинство сетевых протоколов, используемых в Интернете, например, IMAP, POP, SQL, SMTP,<br />
SMB, HTTP, FTP и LDAP, обеспечивают поддержку шифрования информации по протоколу SSL. Обычно<br />
шифрование используется для скрытия от злоумышленников передаваемых по сетям общего пользования<br />
логинов и паролей доступа к различным ресурсам, например, средствам администрирования через Web-<br />
интерфейс акаунтов для предоставления различных услуг (хостинг, электронная почта, управление мобиль-<br />
ным телефоном и т. п.), почтовым ящикам, закрытым каталогам на FTP и Web-серверах для передачи раз-<br />
личных конфиденциальных сообщений (например, ЦРУ имеет на своем сервере http://www.cia.gov<br />
форму, предназначенную для приема информации, которая при передаче будет зашифрована).<br />
При передаче аутентификационной информации в виде обычного текста она может быть перехвачена<br />
третьими лицами с использованием программ-сниферов и использована для получения несанкционирован-<br />
ного доступа к вашим ресурсам. Например, одна неверная супруга, ведущая переписку с любовником через<br />
почтовый ящик на http://www.mail.com, где логин и пароль передаются в виде обычного текста, была<br />
поймана с поличным (в полученном ей письме содержалась информация о месте и времени встречи). Аутен-<br />
тификационные параметры для доступа к почтовому ящику были получены мужем с помощью снифера, ус-<br />
тановленного на системе в локальной сети офиса, где работала беспечная дама.<br />
В настоящее время протокол SSL практически незаметно для пользователя взаимодействует с осталь-<br />
ными протоколами Интернет и обеспечивает передачу конфиденциальной информации по сетям общего<br />
пользования в зашифрованном виде.<br />
Программное обеспечение OpenSSL поддерживает протоколы SSL v2/v3 (Secure Sockets Layer) и TLS<br />
v1 (Transport Layer Security). Большинство программ, описанных в этой книге, требует установки OpenSSL.<br />
Группа разработчиков предупреждает, что использование алгоритмов RC5 и IDEA, также реализованных в<br />
OpenSSL, требует получения соответствующих лицензий, и рекомендует проконсультироваться на эту тему<br />
с вашим юристом. Для исключения из OpenSSL этих алгоритмов при установке на вашем компьютере ис-<br />
ходные коды необходимо сконфигурировать с опциями no-rc5 и no-idea.<br />
В этой главе описаны процедуры установки, настройки и тестирования OpenSSL, включая операции<br />
по генерации и подписи ключей, применяемых для шифрования передаваемой по сетям общего пользования<br />
информации с использованием протоколов Интернет, поддерживающих OpenSSL.</p>
<p><strong>Ограничения и допущения</strong></p>
<p>Исходные коды находятся в каталоге /var/tmp.<br />
Все операции выполняются пользователем с учетной записью root.<br />
Используется дистрибутив ASPLinux 7.3 (Vostok).<br />
Перекомпиляция ядра не требуется.<br />
Процедуры, описанные в этой главе, могут оказаться применимыми для других версий ядра и дистри-<br />
бутивов Linux, но авторы это не проверяли.<br />
ЗАМЕЧАНИЕ В некоторых странах ввоз, распространение и использование программного обеспечения<br />
для криптографии запрещено.</p>
<p><strong>Пакеты</strong></p>
<p>Последующие рекомендации основаны на информации, полученной с домашней страницы проекта<br />
OpenSSL по состоянию на 22.03.2003. Регулярно посещайте домашнюю страницу проекта<br />
http://www.openssl.org/ и отслеживайте обновления.<br />
Исходные коды OpenSSL содержатся в архиве openssl-version.tar.gz (последняя доступная<br />
на момент написания главы стабильная версия openssl-0.9.7a.tar.gz).</p>
<p><strong>Инсталляция с помощью rpm-пакетов</strong></p>
<p>Если вы предпочитаете использование системы со стандартным ядром и программным обеспечением,<br />
установленным из rpm-пакетов, для установки или обновления пакета необходимо выполнить следующие<br />
операции.<br />
ЗАМЕЧАНИЕ Авторы настоятельно рекомендуют устанавливать программное обеспечение из исход-<br />
ных кодов.<br />
Шаг 1<br />
Проверьте, установлен ли пакет openssl с помощью следующей команды:<br />
[root@dymatel /]# rpm –iq openssl<br />
Шаг 2<br />
Если пакет не установлен, перейдите в каталог, где находится пакет openssl-0.9.6b-<br />
24asp.i686.rpm. Если вы в соответствии с рекомендациями главы 2 скопировали все пакеты, входящие в<br />
дистрибутив, в каталог /home/distrib, то выполните команду:<br />
[root@dymatel /]# cd /home/distrib<br />
и установите:<br />
[root@dymatel distrib]# rpm –ihv openssl-0.9.6b-24asp.i686.rpm<br />
или обновите пакет:<br />
[root@dymatel distrib]# rpm –Uhv openssl-0.9.6b-24asp.i686.rpm<br />
После установки пакета перейдите к настройке OpenSSL, описанной ниже.</p>
<p><strong>Компиляция, оптимизация и инсталляция OpenSSL</strong></p>
<p>Шаг 1<br />
Проверьте целостность данных и подлинность архива, содержащего исходные коды OpenSSL.<br />
Одним из способов проверки подлинности и целостности архива является определение его контроль-<br />
ной суммы MD5 и сравнение ее с суммой, опубликованной на сервере разработчика (контрольная сумма<br />
MD5 архива openssl-0.9.7a.tar.gz содержится в файле<br />
ftp://ftp.openssl.org/source/openssl-0.9.7a.tar.gz.md5).<br />
Определите контрольную сумму MD5 пакета:<br />
[root@dymatel /]# cd /var/tmp/<br />
[root@drwalbr tmp]# md5sum openssl-0.9.7a.tar.gz<br />
a0d3203ecf10989fdc61c784ae82e531 openssl-0.9.7a.tar.gz<br />
Скачайте c сервера разработчика файл, содержащий контрольную сумму MD5 архива openssl-<br />
0.9.7a.tar.gz:<br />
[root@drwalbr tmp]# wget ftp://ftp.openssl.org/source/openssl-<br />
0.9.7a.tar.gz.md5<br />
и сравните ее c контрольной суммой, полученной с помощью команды md5sum:<br />
[root@drwalbr tmp]# cat openssl-0.9.7a.tar.gz.md5<br />
a0d3203ecf10989fdc61c784ae82e531<br />
Если полученные значения сумм совпадают, значит, в вашем распоряжении находится подлинный и<br />
сохранивший целостность при передаче по сетям общего пользования архив с исходными кодами OpenSSL.<br />
Подлинность архива также может быть проверена с использованием утилит GnuPG. Для этого вам<br />
необходимо получить с сервера разработчика файлы, содержащие открытый ключ GPG (по непонятным для<br />
авторов причинам он находится не на сервере http://www.openssl.org, а на сервере одного из членов<br />
команды разработчиков http://richard.levitte.org/pubkey2.asc):<br />
[root@drwalbr tmp]# wget http://richard.levitte.org/pubkey2.asc<br />
и сигнатуру архива openssl-0.9.7a.tar.gz:<br />
[root@drwalbr tmp]# wget ftp://ftp.openssl.org/source/openssl-<br />
0.9.7a.tar.gz.asc<br />
После получения необходимых файлов импортируйте открытый ключ pubkey2.asc в базу ваших<br />
GPG ключей:<br />
[root@drwalbr tmp]# gpg &#8211;import pubkey2.asc<br />
gpg: key E06D2CB1: public key &#8220;levitte@openssl.org&#8221; imported<br />
gpg: Total number processed: 1<br />
gpg: imported: 1 (RSA: 1)<br />
Подтвердите подлинность добавленного ключа:<br />
[root@drwalbr tmp]# gpg &#8211;sign-key levitte@openssl.org<br />
pub 2048R/E06D2CB1 created: 1998-09-18 expires: never trust: -/-<br />
(1). levitte@openssl.org<br />
(2) Richard Levitte <levitte@lp.se><br />
(3) Richard Levitte <richard@levitte.org><br />
Really sign all user IDs? y<br />
pub 2048R/E06D2CB1 created: 1998-09-18 expires: never trust: -/-<br />
Primary key fingerprint: 35 3E 6C 9E 8C 97 85 24 BD 9F D1 9E 8F 75 23<br />
6B<br />
levitte@openssl.org<br />
Richard Levitte <levitte@lp.se><br />
Richard Levitte <richard@levitte.org><br />
How carefully have you verified the key you are about to sign actually<br />
belongs<br />
to the person named above? If you don&#8217;t know what to answer, enter &#8220;0&#8243;.<br />
(0) I will not answer. (default)<br />
(1) I have not checked at all.<br />
(2) I have done casual checking.<br />
(3) I have done very careful checking.<br />
Your selection? 3<br />
Are you really sure that you want to sign this key<br />
with your key: &#8220;root.drwalbr <root@drwalbr.und>&#8221;<br />
I have checked this key very carefully.<br />
Really sign? y<br />
You need a passphrase to unlock the secret key for<br />
user: &#8220;root.drwalbr <root@drwalbr.und>&#8221;<br />
1024-bit DSA key, ID E3A03FAD, created 2003-05-10<br />
Enter passphrase: $ecretnoe_Slovo_root.drwalbr<br />
и проверьте подлинность архива:<br />
[root@drwalbr tmp]# gpg &#8211;verify openssl-0.9.7a.tar.gz.asc openssl-<br />
0.9.7a.tar.gz<br />
Если вы получите вывод вида:<br />
gpg: Signature made Wed Feb 19 16:07:58 2003 MSK using RSA key ID<br />
E06D2CB1<br />
gpg: Good signature from &#8220;levitte@openssl.org&#8221;<br />
gpg: aka &#8220;Richard Levitte <levitte@lp.se>&#8221;<br />
gpg: aka &#8220;Richard Levitte <richard@levitte.org>&#8221;<br />
gpg: checking the trustdb<br />
gpg: checking at depth 0 signed=1 ot(-/q/n/m/f/u)=0/0/0/0/0/1<br />
gpg: checking at depth 1 signed=0 ot(-/q/n/m/f/u)=1/0/0/0/0/0<br />
то значит, в вашем распоряжении находится подлинный и сохранивший целостность при передаче по сетям<br />
общего пользования архив с исходными кодами OpenSSL.<br />
Для демонстрации возможностей предлагаемых средств проверки подлинности архивов авторы вста-<br />
вили лишний байт, соответствующий символу «пробел» в архив openssl-0.9.7a.tar.gz и проверили<br />
его подлинность с помощью утилит md5sum и gpg:<br />
[root@drwalbr tmp]# md5sum openssl-0.9.7a.tar.gz<br />
c0312ab825c0c9465e411b1475ab5d47 openssl-0.9.7a.tar.gz<br />
[root@drwalbr tmp]#<br />
[root@drwalbr tmp]# gpg &#8211;verify openssl-0.9.7a.tar.gz.asc openssl-<br />
0.9.7a.tar.gz<br />
gpg: Signature made Wed Feb 19 16:07:58 2003 MSK using RSA key ID<br />
E06D2CB1<br />
gpg: BAD signature from &#8220;levitte@openssl.org&#8221;<br />
Утилита md5sum выдала контрольную сумму:<br />
c0312ab825c0c9465e411b1475ab5d47<br />
не соответствующую контрольной сумме, указанной на сервере разработчиков программного продукта:<br />
a0d3203ecf10989fdc61c784ae82e531<br />
а утилита gpg сообщила о неправильной сигнатуре архивного файла:<br />
gpg: BAD signature from &#8220;levitte@openssl.org&#8221;<br />
ЗАМЕЧАНИЕ Проверка подлинности и целостности скачиваемых архивов очень важна, с точки зрения<br />
обеспечения безопасности вашей системы. Если пробел, который мы вставили выше, непреднамеренно или<br />
специально был бы вставлен в строку сценария, удаляющего после инсталляции OpenSSL ненужные вре-<br />
менные файлы, т. е. строка вида:<br />
rm –rf /some_path/*<br />
была бы заменена на:<br />
rm –rf /some_path /*<br />
в результате выполнения сценария были бы удалены все файлы в вашей системе. Модифицирован-<br />
ная команда сначала бы удалила каталог /some_path, а затем все в корневом каталоге системы – /*.<br />
Шаг 2<br />
Распакуйте архив с исходными кодами OpenSSL в каталоге /var/tmp:<br />
[root@dymatel tmp]# tar xzpf openssl-0.9.7a.tar.gz<br />
и перейдите во вновь созданный каталог, содержащий исходные коды OpenSSL:<br />
[root@dymatel tmp]# cd openssl-0.9.7a/<br />
Шаг 3<br />
Для оптимизации откомпилированного кода OpenSSL применительно к процессору, используемому<br />
на вашей системе, в файле /var/tmp/openssl-0.9.7a/Configure замените сроку:<br />
&#8220;linux-elf&#8221;, &#8220;gcc:-DL_ENDIAN -DTERMIO -O3 –m486 -Wall::-D_REENTRANT::-<br />
ldl:BN_LLONG ${x86_gcc_des} ${x86_gcc_opts}:${x86_elf_asm}:dlfcn:linuxshared:-<br />
fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)&#8221;,<br />
на:<br />
&#8220;linux-elf&#8221;, &#8220;gcc:-DL_ENDIAN -DTERMIO -O3 -march=i686 -funroll-loops -<br />
fomit-frame-pointer -Wall::-D_REENTRANT::-ldl:BN_LLONG ${x86_gcc_des}<br />
${x86_gcc_opts}:${x86_elf_asm}:dlfcn:linux-shared:-<br />
fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)&#8221;,<br />
Строку:<br />
&#8220;debug-linux-elf&#8221;, &#8220;gcc:-DBN_DEBUG -DREF_CHECK -DCONF_DEBUG -<br />
DBN_CTX_DEBUG -DCRYPTO_MDEBUG -DL_ENDIAN -DTERMIO –g –m486 -Wall::-<br />
D_REENTRANT::-lefence -ldl:BN_LLONG ${x86_gcc_des}<br />
${x86_gcc_opts}:${x86_elf_asm}:dlfcn:linux-shared:-<br />
fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)&#8221;,<br />
на:<br />
&#8220;debug-linux-elf&#8221;, &#8220;gcc:-DBN_DEBUG -DREF_CHECK -DCONF_DEBUG -<br />
DBN_CTX_DEBUG -DCRYPTO_MDEBUG -DL_ENDIAN -DTERMIO -O3 -march=i686 -<br />
funroll-loops -fomit-frame-pointer -Wall::-D_REENTRANT::-lefence -<br />
ldl:BN_LLONG ${x86_gcc_des} ${x86_gcc_opts}:${x86_elf_asm}:dlfcn:linuxshared:-<br />
fPIC::.so.\$(SHLIB_MAJOR).\$(SHLIB_MINOR)&#8221;,<br />
Строку:<br />
&#8220;debug-linux-elf-noefence&#8221;, &#8220;gcc:-DBN_DEBUG -DREF_CHECK -DCONF_DEBUG -<br />
DBN_CTX_DEBUG -DCRYPTO_MDEBUG -DL_ENDIAN -DTERMIO -O3 –g –m486 -Wall::-<br />
D_REENTRANT::-ldl:BN_LLONG ${x86_gcc_des}<br />
${x86_gcc_opts}:${x86_elf_asm}:dlfcn&#8221;,<br />
на:<br />
&#8220;debug-linux-elf-noefence&#8221;, &#8220;gcc:-DBN_DEBUG -DREF_CHECK -DCONF_DEBUG -<br />
DBN_CTX_DEBUG -DCRYPTO_MDEBUG -DL_ENDIAN -DTERMIO -O3 -march=i686 -<br />
funroll-loops -fomit-frame-pointer -Wall::-D_REENTRANT::-ldl:BN_LLONG<br />
${x86_gcc_des} ${x86_gcc_opts}:${x86_elf_asm}:dlfcn&#8221;,<br />
Шаг 4<br />
В исходных кодах OpenSSL предполагается, что интерпретатор perl находится в каталоге<br />
/usr/local/bin/. Если вы точно следовали нашим рекомендациям по первичной установке системы, то<br />
интерпретатор должен находится в каталоге /usr/bin/perl. Для того, чтобы программа установки<br />
OpenSSL могла воспользоваться интерпретатором perl, выполните команду:<br />
[root@dymatel openssl-0.9.7a]# perl util/perlpath.pl /usr/bin/perl<br />
Шаг 5<br />
Сконфигурируйте исходные коды OpenSSL:<br />
[root@dymatel openssl-0.9.7a]#./configure linux-elf no-asm shared \<br />
&#8211;prefix=/usr \<br />
&#8211;openssldir=s/usr/share/ss1<br />
Шаг 6<br />
Откомпилируйте исходные коды, проверьте правильность компиляции и наличие соответствующих<br />
библиотек, проинсталлируйте файлы OpenSSL, создайте и сохраните список инсталлированных файлов:<br />
[root@dymatel openssl-0.9.7a]# LD_LIBRARY_PATH=`pwd` make all buildshared<br />
[root@dymatel openssl-0.9.7a]# LD_LIBRARY_PATH=`pwd` make tests apps<br />
tests<br />
[root@dymatel openssl-0.9.7a]# find /* > /root/openssl1<br />
[root@dymatel openssl-0.9.7a]# make install build-shared<br />
[root@dymatel openssl-0.9.7a]# cd /usr/lib<br />
[root@dymatel lib]# mv libcripto.so.0.9.7 ../../lib/<br />
[root@dymatel lib]# mv libssl.so.0.9.7 ../../lib/<br />
[root@dymatel lib]# ln –sf ../../lib/libcripto.so.0.9.7 libcripto.so<br />
[root@dymatel lib]# ln –sf ../../lib/libcripto.so.0.9.7 libcripto.so.0<br />
[root@dymatel lib]# ln –sf ../../lib/libssl.so.0.96 libssl.s0<br />
[root@dymatel lib]# ln –sf ../../lib/libssl.so.0.96 libssl.s0.0<br />
[root@dymatel lib]# mv /usr/share/ssl/man/manl/* /usr/share/man/man1/<br />
[root@dymatel lib]# mv /usr/share/ssl/man/man3/* /usr/share/man/man3/<br />
[root@dymatel lib]# mv /usr/share/ssl/man/man5/* /usr/share/man/man5/<br />
[root@dymatel lib]# mv /usr/share/ssl/man/man7/* /usr/share/man/man7/<br />
[root@dymatel lib]# rm -rf /usr/share/ssl/man/<br />
[root@dymatel lib]# rm -rf /usr/share/ssl/lib/<br />
[root@dymatel lib]# strip /usr/bin/openssl<br />
[root@dymatel lib]# mkdir -p /usr/share/ssl/crl<br />
[root@dymatel lib]# cd /var/tmp/openssl-0.9.7a/<br />
[root@dymatel openssl-0.9.7a]# find /* > /root/openssl2<br />
[root@dymatel openssl-0.9.7a]# diff /root/openssl1 /root/openssl2 ><br />
/root/ openssl.installed<br />
[root@dymatel openssl-0.9.7a]# mv /root/openssl.installed<br />
/very_reliable_place/openssl.installed.YYYYMMDD<br />
Шаг 7<br />
Удалите архив и каталог с исходными кодами OpenSSL:<br />
[root@dymatel /]# cd /var/tmp/<br />
[root@dymatel tmp]# rm -rf openssl-0.9.7a /<br />
[root@dymatel tmp]# rm -f opensal-0.9.7a.tar.gz</p>
<p><strong>Конфигурирование OpenSSL</strong></p>
<p>Конфигурирование OpenSSL осуществляется с использованием следующих файлов:<br />
• главного конфигурационного файла /usr/shared/ssl/openssl.cnf;<br />
• скрипта для самостоятельной подписи (без привлечения сертификационного центра подписи<br />
сертификата) /usr/shared/ssl/misc/sign.<br />
Шаг 1<br />
Отредактируйте в соответствии с приведенными ниже рекомендациями и вашими потребностями<br />
файл/usr/shared/ssl/openssl.cnf:<br />
ЗАМЕЧАНИЕ В файле /usr/shared/ssl/openssl.cnf, созданном при установке OpenSSL, необхо-<br />
димо изменить параметры только в разделах [CA_default]и [req_distinguished_name].<br />
OpenSSL example configuration file.<br />
# This is mostly being used for generation of certificate requests.<br />
#<br />
# This definition stops the following lines choking if HOME isn&#8217;t<br />
# defined.<br />
HOME = .<br />
RANDFILE = $ENV::HOME/.rnd<br />
# Extra OBJECT IDENTIFIER info:<br />
#oid_file = $ENV::HOME/.oid<br />
oid_section = new_oids<br />
# To use this configuration file with the &#8220;-extfile&#8221; option of the<br />
# &#8220;openssl x509&#8243; utility, name here the section containing the<br />
# X.509v3 extensions to use:<br />
# extensions =<br />
# (Alternatively, use a configuration file that has only<br />
# X.509v3 extensions in its main [= default] section.)<br />
[ new_oids ]<br />
# We can add new OIDs in here for use by &#8216;ca&#8217; and &#8216;req&#8217;.<br />
# Add a simple OID like this:<br />
# testoid1=1.2.3.4<br />
# Or use config file substitution like this:<br />
# testoid2=${testoid1}.5.6<br />
####################################################################<br />
[ ca ]<br />
default_ca = CA_default # The default ca section<br />
####################################################################<br />
[ CA_default ]<br />
dir = /usr/share/ssl # Where everything is kept<br />
certs = $dir/certs # Where the issued certs are kept<br />
crl_dir = $dir/crl # Where the issued crl are kept<br />
database = $dir/ca.db.index # database index file.<br />
new_certs_dir = $dir/ca.db.certs # default place for new certs.<br />
certificate = $dir/certs/ca.crt # The CA certificate<br />
serial = $dir/ca.db.serial # The current serial number<br />
crl = $dir/crl.pem # The current CRL<br />
private_key = $dir/private/ca.key # The private key<br />
RANDFILE = $dir/ca.db.rand # private random number file<br />
x509_extensions = usr_cert # The extentions to add to the<br />
cert<br />
# Extensions to add to a CRL. Note: Netscape communicator chokes on V2<br />
CRLs<br />
# so this is commented out by default to leave a V1 CRL.<br />
# crl_extensions = crl_ext<br />
default_days = 365 # how long to certify for<br />
default_crl_days= 30 # how long before next CRL<br />
default_md = md5 # which md to use.<br />
preserve = no # keep passed DN ordering<br />
# A few difference way of specifying how similar the request should look<br />
# For type CA, the listed attributes must be the same, and the optional<br />
# and supplied fields are just that <img src='http://www.compyuteri.ru/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /><br />
policy = policy_match<br />
# For the CA policy<br />
[ policy_match ]<br />
countryName = match<br />
stateOrProvinceName = match<br />
organizationName = match<br />
organizationalUnitName = optional<br />
commonName = supplied<br />
emailAddress = optional<br />
# For the &#8216;anything&#8217; policy<br />
# At this point in time, you must list all acceptable &#8216;object&#8217;<br />
# types.<br />
[ policy_anything ]<br />
countryName = optional<br />
stateOrProvinceName = optional<br />
localityName = optional<br />
organizationName = optional<br />
organizationalUnitName = optional<br />
commonName = supplied<br />
emailAddress = optional<br />
####################################################################<br />
[ req ]<br />
default_bits = 1024<br />
default_keyfile = privkey.pem<br />
distinguished_name = req_distinguished_name<br />
attributes = req_attributes<br />
x509_extensions = v3_ca # The extentions to add to the self signed cert<br />
# Passwords for private keys if not present they will be prompted for<br />
# input_password = secret<br />
# output_password = secret<br />
# This sets a mask for permitted string types. There are several options.<br />
# default: PrintableString, T61String, BMPString.<br />
# pkix : PrintableString, BMPString.<br />
# utf8only: only UTF8Strings.<br />
# nombstr : PrintableString, T61String (no BMPStrings or UTF8Strings).<br />
# MASK:XXXX a literal mask value.<br />
# WARNING: current versions of Netscape crash on BMPStrings or<br />
UTF8Strings<br />
# so use this option with caution!<br />
string_mask = nombstr<br />
# req_extensions = v3_req # The extensions to add to a certificate request<br />
[ req_distinguished_name ]<br />
countryName = Country Name (2 letter code)<br />
countryName_default = RU<br />
countryName_min = 2<br />
countryName_max = 2<br />
stateOrProvinceName = State or Province Name (full name)<br />
stateOrProvinceName_default = Moscow region<br />
localityName = Locality Name (eg, city)<br />
localityName_default = Ybileynyi<br />
0.organizationName = Organization Name (eg, company)<br />
0.organizationName_default = SIP RIA<br />
# we can do this but it is not needed normally <img src='http://www.compyuteri.ru/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /><br />
#1.organizationName = Second Organization Name (eg, company)<br />
#1.organizationName_default = World Wide Web Pty Ltd<br />
organizationalUnitName = Organizational Unit Name (eg, section)<br />
commonName = Common Name (eg, YOUR name)<br />
commonName_default = www.dymatel.und<br />
commonName_max = 64<br />
emailAddress = Email Address<br />
emailAddress_default = root@dymatel.und<br />
emailAddress_max = 40<br />
# SET-ex3 = SET extension number 3<br />
[ req_attributes ]<br />
challengePassword = A challenge password<br />
challengePassword_min = 8<br />
challengePassword_max = 20<br />
unstructuredName = An optional company name<br />
[ usr_cert ]<br />
# These extensions are added when &#8216;ca&#8217; signs a request.<br />
# This goes against PKIX guidelines but some CAs do it and some software<br />
# requires this to avoid interpreting an end user certificate as a CA.<br />
basicConstraints=CA:FALSE<br />
# Here are some examples of the usage of nsCertType. If it is omitted<br />
# the certificate can be used for anything *except* object signing.<br />
# This is OK for an SSL server.<br />
# nsCertType = server<br />
# For an object signing certificate this would be used.<br />
# nsCertType = objsign<br />
# For normal client use this is typical<br />
# nsCertType = client, email<br />
# and for everything including object signing:<br />
# nsCertType = client, email, objsign<br />
# This is typical in keyUsage for a client certificate.<br />
# keyUsage = nonRepudiation, digitalSignature, keyEncipherment<br />
# This will be displayed in Netscape&#8217;s comment listbox.<br />
nsComment = &#8220;OpenSSL Generated Certificate&#8221;<br />
# PKIX recommendations harmless if included in all certificates.<br />
subjectKeyIdentifier=hash<br />
authorityKeyIdentifier=keyid,issuer:always<br />
# This stuff is for subjectAltName and issuerAltname.<br />
# Import the email address.<br />
# subjectAltName=email:copy<br />
# Copy subject details<br />
# issuerAltName=issuer:copy<br />
#nsCaRevocationUrl = http://www.domain.dom/ca-crl.pem<br />
#nsBaseUrl<br />
#nsRevocationUrl<br />
#nsRenewalUrl<br />
#nsCaPolicyUrl<br />
#nsSslServerName<br />
[ v3_req ]<br />
# Extensions to add to a certificate request<br />
basicConstraints = CA:FALSE<br />
keyUsage = nonRepudiation, digitalSignature, keyEncipherment<br />
[ v3_ca ]<br />
# Extensions for a typical CA<br />
# PKIX recommendation.<br />
subjectKeyIdentifier=hash<br />
authorityKeyIdentifier=keyid:always,issuer:always<br />
# This is what PKIX recommends but some broken software chokes on critical<br />
# extensions.<br />
#basicConstraints = critical,CA:true<br />
# So we do this instead.<br />
basicConstraints = CA:true<br />
# Key usage: this is typical for a CA certificate. However since it will<br />
# prevent it being used as an test self-signed certificate it is best<br />
# left out by default.<br />
# keyUsage = cRLSign, keyCertSign<br />
# Some might want this also<br />
# nsCertType = sslCA, emailCA<br />
# Include email address in subject alt name: another PKIX recommendation<br />
# subjectAltName=email:copy<br />
# Copy issuer details<br />
# issuerAltName=issuer:copy<br />
# DER hex encoding of an extension: beware experts only!<br />
# obj=DER:02:03<br />
# Where &#8216;obj&#8217; is a standard or added object<br />
# You can even override a supported extension:<br />
# basicConstraints= critical, DER:30:03:01:01:FF<br />
[ crl_ext ]<br />
# CRL extensions.<br />
# Only issuerAltName and authorityKeyIdentifier make any sense in a CRL.<br />
# issuerAltName=issuer:copy<br />
authorityKeyIdentifier=keyid:always,issuer:always<br />
Шаг 2<br />
Группа разработчиков OpenSSL предъявляет некоторые требования, затрудняющие использование<br />
файлов CA.pl или CA.sh для самостоятельной подписи ключей. Для подписи ключей авторы рекомендуют<br />
самостоятельно воспользоваться скриптом, разработанным Ральфом С. Энгелчолом (Ralf S. Engelschall).<br />
Создайте файл /usr/share/ssl/misc/sign следующего содержания:<br />
#!/bin/sh<br />
##<br />
## sign.sh &#8212; Sign a SSL Certificate Request (CSR)<br />
## Copyright (c) 1998-1999 Ralf S. Engelschall, All Rights Reserved.<br />
##<br />
# argument line handling<br />
CSR=$1<br />
if [ $# -ne 1 ]; then<br />
echo &#8220;Usage: sign.sign <whatever>.csr&#8221;; exit 1<br />
fi<br />
if [ ! -f $CSR ]; then<br />
echo &#8220;CSR not found: $CSR&#8221;; exit 1<br />
fi<br />
case $CSR in<br />
*.csr ) CERT=&#8221;`echo $CSR | sed -e &#8217;s/\.csr/.crt/&#8217;`&#8221; ;;<br />
* ) CERT=&#8221;$CSR.crt&#8221; ;;<br />
esac<br />
# make sure environment exists<br />
if [ ! -d ca.db.certs ]; then<br />
mkdir ca.db.certs<br />
fi<br />
if [ ! -f ca.db.serial ]; then<br />
echo &#8216;01&#8242; >ca.db.serial<br />
fi<br />
if [ ! -f ca.db.index ]; then<br />
cp /dev/null ca.db.index<br />
fi<br />
# create an own SSLeay config<br />
cat >ca.config <<EOT<br />
[ ca ]<br />
default_ca = CA_own<br />
[ CA_own ]<br />
dir = /usr/share/ssl<br />
certs = /usr/share/ssl/certs<br />
new_certs_dir = /usr/share/ssl/ca.db.certs<br />
database = /usr/share/ssl/ca.db.index<br />
serial = /usr/share/ssl/ca.db.serial<br />
RANDFILE = /usr/share/ssl/ca.db.rand<br />
certificate = /usr/share/ssl/certs/ca.crt<br />
private_key = /usr/share/ssl/private/ca.key<br />
default_days = 365<br />
default_crl_days = 30<br />
default_md = md5<br />
preserve = no<br />
policy = policy_anything<br />
[ policy_anything ]<br />
countryName = optional<br />
stateOrProvinceName = optional<br />
localityName = optional<br />
organizationName = optional<br />
organizationalUnitName = optional<br />
commonName = supplied<br />
emailAddress = optional<br />
EOT<br />
# sign the certificate<br />
echo "CA signing: $CSR -> $CERT:&#8221;<br />
openssl ca -config ca.config -out $CERT -infiles $CSR<br />
echo &#8220;CA verifying: $CERT <-> CA cert&#8221;<br />
openssl verify -CAfile /usr/share/ssl/certs/ca.crt $CERT<br />
# cleanup after SSLeay<br />
rm -f ca.config<br />
rm -f ca.db.serial.old<br />
rm -f ca.db.index.old<br />
# die gracefully<br />
exit 0<br />
Шаг 3<br />
Измените права доступа к файлу и назначьте владельцем файла суперпользователя root:<br />
[root@dymatel /]# chmod 700 /usr/share/ssl/misc/sign<br />
[root@dymatel /]# chown 0.0 /usr/share/ssl/misc/sign</p>
<p><strong>Тестирование OpenSSL</strong></p>
<p>Для проверки работоспособности OpenSSL создайте на вашей системе SSL-сертификат Web-сервера<br />
Apache. Для создания ключей RSA и запросов на подтверждение подлинности сертификатов (Certificate<br />
Signing Requests, CSR) используется утилита /usr/bin/openssl.<br />
Шаг 1<br />
Выберите пять любых больших файлов со случайным (уникальным) содержанием, скопируйте их в<br />
каталог /usr/share/ssl и переименуйте в random1, random2, random3, random4, random5.<br />
Для выбора пяти случайных файлов и размещения их в /usr/share/ssl используйте команды:<br />
[root@dymatel /]# cp /var/log/messages /usr/share/ssl/random1<br />
[root@dymatel /]# cp /var/log/messages.1 /usr/share/ssl/random2<br />
[root@dymatel /]# cp /var/log/messages.2 /usr/share/ssl/random3<br />
[root@dymatel /]# cp /var/log/messages.3 /usr/share/ssl/random4<br />
[root@dymatel /]# cp /var/log/messages.4 /usr/share/ssl/random5<br />
Шаг 2<br />
Создайте закрытый ключ RSA для Web-сервера, защищенный паролем:<br />
[root@dymatel /]# cd /usr/share/ssl/<br />
[root@dymatel ssl]# openssl genrsa -des3 -rand random1:<br />
random2:random3:random4:random5 -out www.dymatel.und.key 1024<br />
1540748 semi-random bytes loaded<br />
Generating RSA private key, 1024 bit long modulus<br />
&#8230;&#8230;..++++++<br />
&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;&#8230;.++++++<br />
e is 65537 (0&#215;10001)<br />
Введите пароль для защиты вашего RSA-ключа:<br />
Enter pass phrase for www.dymatel.und.key: $ecretn0e_Sl0vo<br />
Подтвердите пароль:<br />
Verifying - Enter pass phrase for www.dymatel.und.key: $ecretn0e_Sl0vo<br />
ЗАМЕЧАНИЕ Обратите внимание, что в качестве имени системы нужно ввести www.dymatel.und, а<br />
не dymatel.und. В противном случае вы не сможете подписать сертификат.<br />
Шаг 3<br />
Сохраните ключ, содержащийся в файле www.dymatel.und.key, и защищающий его пароль в на-<br />
дежном месте, например, на дискете.<br />
Шаг 4<br />
Создайте запрос на подтверждение подлинности сертификата:<br />
[root@dymatel ssl]# openssl req -new -key www.dymatel.und.key -out<br />
www.dymatel.und.csr<br />
Введите пароль, защищающий ключ www.dymatel.und.key:<br />
Enter pass phrase for www.dymatel.und.key: $ecretn0e_Sl0vo<br />
You are about to be asked to enter information that will be incorporated<br />
into your certificate request.<br />
What you are about to enter is what is called a Distinguished Name or a<br />
DN.<br />
There are quite a few fields but you can leave some blank<br />
For some fields there will be a default value,<br />
If you enter &#8216;.&#8217;, the field will be left blank.<br />
Подтвердите заданные ранее в файле /usr/shared/ssl/openssl.cnf название страны, области,<br />
города, организации, Web-сервера, почтового адреса администратора сервера:<br />
Country Name (2 letter code) [RU]: <Enter><br />
State or Province Name (full name) [Moscow Region]: <Enter><br />
Locality Name (eg, sity) [Ybileynyi]: <Enter><br />
Organization Name (eg, company) [SIP RIA]: <Enter><br />
Organizational Unit Name (eg, section) []:<Enter><br />
Common Name (eg, YOUR name) [www.dymatel.und]: <Enter><br />
Email Address [root@dymatel.und]: <Enter><br />
Please enter the following &#8216;extra&#8217; attributes<br />
to be sent with your certificate request<br />
A challenge password []:<Enter><br />
An optional company name []:<Enter><br />
Файл www.dymatel.und.csr, содержащий запрос на подтверждение подлинности сертификата,<br />
отправьте в коммерческий сертификационный центр, оплатите его услуги, и через некоторое время вы по-<br />
лучите файл www.dymatel.und.crt, который вы сможете использовать для подтверждения подлинности<br />
сертификата.<br />
Если вы не желаете прибегать к услугам коммерческих сертификационных центров и желаете подпи-<br />
сать его самостоятельно, то выполните операции, описанные в шагах 5, 6,7,8 и 9.<br />
Шаг 5<br />
Создайте закрытый RSA-ключ для своего собственного центра сертификации:<br />
[root@dymatel ssl]# openssl genrsa -des3 -out ca.key 1024<br />
Generating RSA private key, 1024 bit long modulus<br />
&#8230;&#8230;&#8230;&#8230;++++++<br />
&#8230;&#8230;&#8230;&#8230;&#8230;++++++<br />
e is 65537 (0&#215;10001)<br />
Введите пароль, защищающий ключ:<br />
Enter pass phrase for ca.key: $ecretnoe_Slov0<br />
Подтвердите пароль:<br />
Verifying - Enter pass phrase for ca.key: $ecretnoe_Slov0<br />
Шаг 6<br />
Сохраните ключ и защищающий его пароль в надежном месте, например на дискете.<br />
Шаг 7<br />
Создайте и подпишите для ключа ca.key сертификат:<br />
[root@dymatel ssl]# openssl req -new -x509 -days 365 -key ca.key -out<br />
ca.crt<br />
Enter pass phrase for ca.key:<br />
You are about to be asked to enter information that will be incorporated<br />
into your certificate request.<br />
What you are about to enter is what is called a Distinguished Name or a<br />
DN.<br />
There are quite a few fields but you can leave some blank<br />
For some fields there will be a default value,<br />
If you enter &#8216;.&#8217;, the field will be left blank.<br />
Введите название страны, области, города, организации, Web-сервера, почтового адреса администра-<br />
тора сервера:<br />
Country Name (2 letter code) [RU]:<Enter><br />
State or Province Name (full name) [Moscow Region]: <Enter><br />
Locality Name (eg, sity) [Ybileynyi]: <Enter><br />
Organization Name (eg, company) [SIP RIA]: <Enter><br />
Organizational Unit Name (eg, section) []: Sertification Department <Enter><br />
Common Name (eg, YOUR name) [www.dymatel.und]: <Enter><br />
Email Address [root@dymatel.und]: <Enter><br />
ЗАМЕЧАНИЕ В этом примере были подтверждены все параметры, определенные в файле<br />
/usr/shared/ssl/openssl.cnf и использованные при создании www.dymatel.und.csr (шаг 4), кроме на-<br />
звания подразделения (Organizational Unit Name (eg, section)). Для реализации возможности са-<br />
мостоятельной подписи сертификата исходные данные, вводимые для www.dymatel.und.csr и ca.crt<br />
должны различаться, в противном случае при подписании сертификата произойдет ошибка.<br />
Шаг 8<br />
Поместите все созданные файлы в соответствующие каталоги:<br />
[root@dymatel ssl]# mv www.dymatel.und.key private/<br />
[root@dymatel ssl]# mv ca.key private/<br />
[root@dymatel ssl]# mv ca.crt certs/<br />
Шаг 9<br />
Подпишите созданный ранее запрос на подтверждение подлинности сертификата<br />
www.dymatel.und.csr:<br />
[root@dymatel ssl]# /usr/share/ssl/misc/sign www.dymatel.und.csr<br />
CA signing: www.dymatel.und.csr -> www.dymatel.und.crt:<br />
Using configuration from ca.config<br />
Enter PEM pass phrase:<br />
Check that the request matches the signature<br />
Signature ok<br />
The Subjects Distinguished Name is as follows<br />
countryName :PRINTABLE:&#8217;RU&#8217;<br />
stateOrProvinceName :PRINTABLE:&#8217;Moscow region&#8217;<br />
localityName :PRINTABLE:&#8217;Ybileyniy&#8217;<br />
organizationName :PRINTABLE:&#8217;SIP RIA&#8217;<br />
organizationalUnitName:PRINTABLE:&#8217;Sertification Department&#8217;<br />
commonName :PRINTABLE:&#8217;www.dymatel.und&#8217;<br />
emailAddress :IA5STRING:&#8217;root@dymatel.und&#8217;<br />
Certificate is to be certified until Mar 19 12:24:10 2004 GMT (365 days)<br />
Подтвердите необходимость подписи сертификата:<br />
Sign the certificate? [y/n]:y<br />
Еще раз подтвердите необходимость подписи сертификата:<br />
1 out of 1 certificate requests certified, commit? [y/n]:y<br />
Write out database with 1 new entries<br />
Data Base Updated<br />
CA verifying: www.dymatel.und.crt <-> CA cert<br />
www.dymatel.und.crt: OK<br />
Шаг 10<br />
Поместите файл www.dymatel.und.crt в /usr/share/ssl/cert:<br />
[root@dymatel ssl]# mv www.dymatel.und.crt certs/<br />
и удалите www.dymatel.und.csr:<br />
[root@dymatel ssl]# rm -f www.dymatel.und.csr<br />
ЗАМЕЧАНИЕ Если во время подписывания сертификата выдается сообщение об ошибках, вероятно,<br />
это является следствием того, что при вводе полного доменного имени системы вы ввели mydomain.ru вме-<br />
сто www.mydomain.ru или информация, введенная при создании ca.crt (шаг 7) и www.mydomain.ru.csr<br />
(шаг 4) идентична.<br />
Шаг 11<br />
Для повышения безопасности измените права доступа к вновь созданным файлам:<br />
[root@dymatel /]# chmod 750 /usr/share/ssl/private/<br />
[root@dymatel /]# chmod 400 /usr/share/ssl/certs/ca.crt<br />
[root@dymatel /]# chmod 400 /usr/share/ssl/certs/www.dymatel.und.crt<br />
[root@dymatel /]# chmod 400 /usr/share/ssl/private/ca.key<br />
[root@dymatel /]# chmod 400 /usr/share/ssl/private/www.dymatel.und.key<br />
Шаг 12<br />
Для того, чтобы созданный и подписанный вами сертификат мог использоваться Web-сервером<br />
Apache, в конфигурационный файл httpd.conf добавьте строки:<br />
SSLCertificateFile /usr/share/ssl/certs/www.dymatel.und.crt<br />
SSLCertificateFile /usr/share/ssl/private/www.dymatel.und.key</p>
]]></content:encoded>
			<wfw:commentRss>http://www.compyuteri.ru/glava-12-openssl-programmnoe-obespechenie-dlya-bezopasnoj-peredachi-dannyx/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Глава 13. OpenSSH – программное обеспечение для безопасного администрирования удаленных систем</title>
		<link>http://www.compyuteri.ru/glava-13-openssh-%e2%80%93-programmnoe-obespechenie-dlya-bezopasnogo-administrirovaniya-udalennyx-sistem/</link>
		<comments>http://www.compyuteri.ru/glava-13-openssh-%e2%80%93-programmnoe-obespechenie-dlya-bezopasnogo-administrirovaniya-udalennyx-sistem/#comments</comments>
		<pubDate>Sat, 13 Sep 2008 13:24:22 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[Часть 03. Криптографическое программное обеспечение - и]]></category>

		<category><![CDATA[chroot-jail]]></category>

		<category><![CDATA[OpenSSH]]></category>

		<category><![CDATA[ssh]]></category>

		<category><![CDATA[администрирование]]></category>

		<guid isPermaLink="false">http://www.compyuteri.ru/?p=61</guid>
		<description><![CDATA[В этой главе:
1. Ограничения и допущения
2. Пакеты
3. Инсталляция с помощью rpm-пакетов
4. Компиляция, оптимизация и инсталляция OpenSSH
5. Конфигурирование OpenSSH
6. Тестирование OpenSSH
7. Использование OpenSSH
8. OpenSSH в окружении chroot-jail
9. Создание окружения chroot-jail
10. Компиляция, оптимизация, инсталляция, конфигурирование и тестирование OpenSSH в среде chroot-jail
Многие сетевые службы, предназначенные для администрирования удаленных систем (например,
telnet, rsh, rlogin и др.) не обеспечивают должный уровень [...]]]></description>
			<content:encoded><![CDATA[<p>В этой главе:<br />
1. Ограничения и допущения<br />
2. Пакеты<br />
3. Инсталляция с помощью rpm-пакетов<br />
4. Компиляция, оптимизация и инсталляция OpenSSH<br />
5. Конфигурирование OpenSSH<br />
6. Тестирование OpenSSH<br />
7. Использование OpenSSH<br />
8. OpenSSH в окружении chroot-jail<br />
9. Создание окружения chroot-jail<br />
10. Компиляция, оптимизация, инсталляция, конфигурирование и тестирование OpenSSH в среде chroot-jail</p>
<p>Многие сетевые службы, предназначенные для администрирования удаленных систем (например,<br />
telnet, rsh, rlogin и др.) не обеспечивают должный уровень безопасности, т. к. передают аутентифика-<br />
ционную информацию по сети в виде незашифрованного текста. Эта информация может быть перехвачена<br />
третьими лицами и использована для получения несанкционированного доступа к вашим системам. В на-<br />
стоящее время эти программы почти полностью вытеснены программой OpenSSH (Open Secure Shell), кото-<br />
рая шифрует весь трафик, включая аутентификационную информацию, и позволяет:<br />
• регистрироваться на удаленных системах;<br />
• выполнять команды на удаленных системах;<br />
• копировать файлы c одной системы на другую.</p>
<p><strong>Ограничения и допущения</strong></p>
<p>Исходные коды находятся в каталоге /var/tmp.<br />
Все операции выполняются пользователем с учетной записью root.<br />
Используется дистрибутив ASPLinux 7.3 (Vostok).<br />
Перекомпиляция ядра не требуется.<br />
Процедуры, описанные в этой главе, могут оказаться применимыми для других версий ядра и дистри-<br />
бутивов Linux, но авторы этого не проверяли.<br />
ЗАМЕЧАНИЕ В некоторых странах ввоз, распространение и использование программного обеспечения<br />
для криптографии запрещено.</p>
<p><strong>Пакеты</strong></p>
<p>Последующие рекомендации основаны на информации, полученной с домашней страницы проекта<br />
OpenSSH по состоянию на 5.04.2003. Регулярно посещайте домашнюю страницу проекта<br />
http://www.openssh.org/и отслеживайте обновления.<br />
Исходные коды OpenSSH содержатся в архиве openssh-version.tar.gz (последняя доступная<br />
на момент написания главы стабильная версия openssh-3.6.1p1.tar.gz).<br />
ЗАМЕЧАНИЕ Обратите внимание, что вам необходима именно «переносимая» (предназначенная для<br />
Linux и др. операционных систем) версия, название которой содержит индекс &#8220;p&#8221;, например &#8220;3.6.1p1&#8243;.<br />
Для работы OpenSSH требуется наличие некоторых библиотек OpenSSL, поэтому перед установкой<br />
OpenSSH требуется установить OpenSSL в соответствии с рекомендациями главы 12 из исходных кодов или<br />
rpm-пакетов. Если вам необходим запуск OpenSSH в окружении chroot-jail, т. е. некоторым пользователям<br />
необходимо предоставить доступ к выполнению команд только в их домашних каталогах, без предоставле-<br />
ния доступа к системе в целом, должны использоваться исходные коды OpenSSH, к которым применен со-<br />
ответствующий патч. Пропатченные исходные коды OpenSSH содержатся в архиве openssh-versionchroot.<br />
tar.gz (последняя доступная на момент написания главы стабильная версия openssh-<br />
3.6.1p1.tar.gz) и могут быть получены с http://chrootssh.sourceforge.net.</p>
<p><strong>Инсталляция с помощью rpm-пакета</strong></p>
<p>Если вы предпочитаете использование системы со стандартным ядром и программным обеспечением,<br />
установленным из rpm-пакетов, для установки или обновления пакета необходимо выполнить простые опе-<br />
рации. Следует заметить, что в этом случае, к сожалению, вам не удастся в дальнейшем настроить работу<br />
программы в среде chroot-jail.<br />
ЗАМЕЧАНИЕ Авторы настоятельно рекомендуют устанавливать программное обеспечение из исход-<br />
ных кодов.<br />
Шаг 1<br />
Проверьте, установлен ли пакет openssh с помощью следующей команды:<br />
[root@drwalbr /]# rpm –iq openssh<br />
Шаг 2<br />
В случае его отсутствия перейдите в каталог, где находится пакет openssh-3.1p1-<br />
6.1asp.i386.rpm. Если вы в соответствии с рекомендациями главы 2 скопировали все пакеты, входящие<br />
в дистрибутив, в каталог /home/distrib, то выполните команду:<br />
[root@drwalbr /]# cd /home/distrib<br />
и установите:<br />
[root@drwalbr distrib]# rpm –ihv openssh-3.1p1-6.1asp.i386.rpm<br />
или обновите пакет:<br />
[root@drwalbr distrib]# rpm –Uhv openssh-3.1p1-6.1asp.i386.rpm<br />
После установки пакета перейдите к настройке программы OpenSSH, процесс которой описан ниже.</p>
<p><strong>Компиляция, оптимизация и инсталляция OpenSSH</strong></p>
<p>Шаг 1<br />
Осуществите проверку подлинности имеющегося в вашем распоряжении архива с исходными кодами<br />
с использованием процедур, описанных в шаге 1 радела «Компиляция, оптимизация и инсталляция<br />
OpenSSL» главы 12.<br />
Шаг 2<br />
Распакуйте архив с исходными кодами в каталог /var/tmp:<br />
[root@drwalbr tmp]# tar xzpf openssh-3.6.1p1.tar.gz<br />
[root@drwalbr tmp]# cd openssh-3.6.1p1<br />
Шаг 3<br />
Создайте специального пользователя, от имени которого будет запускаться служба sshd:<br />
[root@drwalbr openssh-3.6.1p1]# groupadd -g 39 sshd > /dev/null 2>&#038;1 ||:<br />
[root@drwalbr openssh-3.6.1p1]# useradd -u 39 -g 39 -s /bin/false -M -r -<br />
d /var/empty sshd > / dev/null 2>&#038;1 || :<br />
Шаг 4<br />
Добавьте имя несуществующего командного интерпретатора. Для этого в конец файла<br />
/etc/shells добавьте строку:<br />
/bin/sh<br />
/bin/bash<br />
/bin/bash2<br />
/bin/false/<br />
Шаг 5<br />
Сконфигурируйте исходные коды OpenSSH:<br />
[root@drwalbr openssh-3.6.1p1]# CFLAGS=&#8221;-O2 -march=i686 -funroll-loops&#8221;;<br />
export CFLAGS<br />
./configure \<br />
&#8211;prefix=/usr \<br />
&#8211;sysconfdir=/etc/ssh \<br />
&#8211;libexecdir=/usr/libexec/openssh \<br />
&#8211;mandir=/usr/share/man \<br />
&#8211;with-pam \<br />
&#8211;with-ipaddr-display \<br />
&#8211;with-ipv4-default \<br />
&#8211;with-md5-passwords \<br />
&#8211;with-zlib<br />
При таких параметрах конфигурации осуществляется компиляция исходных кодов с оптимизацией<br />
применительно к архитектуре процессора i686, разрешается поддержка модулей аутентификации PAM и ис-<br />
пользование IP-адресов вместо имени системы, паролей MD5, инсталляция файлов осуществляется в соот-<br />
ветствующие каталоги.<br />
Шаг 6<br />
Откомпилируйте исходные коды, проинсталлируйте файлы OpenSSH, создайте и сохраните список<br />
установленных файлов:<br />
[root@drwalbr openssh-3.6.1p1]# make<br />
[root@drwalbr openssh-3.6.1p1]# cd<br />
[root@drwalbr openssh-3.6.1p1]# find /* > /root/openssh1<br />
[root@drwalbr openssh-3.6.1p1]# make install<br />
[root@drwalbr openssh-3.6.1p1]# mkdir /var/empty<br />
[root@drwalbr openssh-3.6.1p1]# chown root.sys /var/empty<br />
[root@drwalbr openssh-3.6.1p1]# find /* > /root/openssh2<br />
[root@drwalbr openssh-3.6.1p1]# diff /root/openssh1 /root/openssh2 ><br />
/root/openssh.installed<br />
[root@drwalbr openssh-3.6.1p1]# mv /root/openssh.installed<br />
/very_reliable_place/openssh.installed.YYYYMMDD<br />
Шаг 7<br />
Удалите архив и каталог с исходными кодами OpenSSH:<br />
[root@drwalbr openssh-3.6.1p1]# cd /var/tmp/<br />
[root@drwalbr tmp]# rm -rf openssh-3.6.1p1/<br />
[root@drwalbr tmp]# rm -f openssh-3.6.1p1.tar.gz</p>
<p><strong>Конфигурирование OpenSSH</strong></p>
<p>Конфигурирование OpenSSН осуществляется с использованием следующих файлов:<br />
• конфигурационный файл сервера /etc/ssh/sshd_config;<br />
• конфигурационный файл клиента /etc/ssh/ssh_config;<br />
• файл для поддержки модулей PAM /etc/pam.d/sshd;<br />
• файл инициализации /etc/init.d/sshd.<br />
Шаг 1<br />
Для конфигурирования сервера создайте файл /etc/ssh/sshd_config, руководствуясь своими<br />
потребностями и нижеприведенными рекомендациями:<br />
Port 22<br />
Protocol 2,1<br />
ListenAddress 192.168.2.99<br />
HostKey /etc/ssh/ssh_host_key<br />
HostKey /etc/ssh/ssh_host_rsa_key<br />
HostKey /etc/ssh/ssh_host_dsa_key<br />
ServerKeyBits 768<br />
LoginGraceTime 60<br />
KeyRegenerationInterval 3600<br />
PermitRootLogin no<br />
IgnoreRhosts yes<br />
IgnoreUserKnownHosts yes<br />
StrictModes yes<br />
X11Forwarding no<br />
X11DisplayOffset 10<br />
PrintMotd yes<br />
KeepAlive yes<br />
SyslogFacility AUTHPRIV<br />
LogLevel INFO<br />
RhostsAuthentication no<br />
RhostsRSAAuthentication no<br />
RSAAuthentication yes<br />
PasswordAuthentication no<br />
PermitEmptyPasswords no<br />
AllowUsers drwalbr karlnext<br />
UsePrivilegeSeparation yes<br />
Subsystem sftp /usr/libexec/openssh/sftp-server<br />
Опция Port 22 определяет номер порта, на котором сервер sshd ожидает запросов клиентов. В<br />
данном примере используется 22 порт, установленный по умолчанию.<br />
Опция Protocol 2,1 определяет порядок версий протоколов, используемых при установке соеди-<br />
нения. В рассматриваемом примере при установлении связи сначала будет предпринята попытка установки<br />
соединения по протоколу версии 2 и если она окажется неудачной, будет предпринята попытка установле-<br />
ния соединения по протоколу версии 1.<br />
Опция ListenAddress 192.168.2.99 определяет IP-адрес сетевого интерфейса, на котором<br />
sshd ожидает запросы на подключение.<br />
Опции HostKey /etc/ssh/ssh_host_key, HostKey /etc/ssh/ssh_host_dsa_key и<br />
HostKey /etc/ssh/ssh_host_rsa__key определяют местоположение файлов с ключами.<br />
Опция ServerKeyBits 768 определяет количество битов, отведенных под ключ сервера, и ис-<br />
пользуется при генерировании ключей.<br />
Опция LoginGraceTime 60 определяет время в секундах, через которое сервер разрывает соеди-<br />
нение в случае неудачной попытки регистрации удаленного пользователя. Эта настройка затрудняет реали-<br />
зацию DoS-атак (Denial of Service), основанных на установлении соединений пользователями, не имеющих<br />
доступа к аутентификационной информации.<br />
Опция KeyRegenerationinterval 3600 определяет продолжительность интервала времени в<br />
секундах, по окончании которого сервер автоматически генерирует новые ключи. Это настройка повышает<br />
безопасность системы за счет затруднения расшифровки третьими лицами трафика, генерируемого соедине-<br />
ниями легитимных пользователей.<br />
Опция PermitRootLogin no запрещает регистрацию пользователя root, используя ssh. В слу-<br />
чае необходимости выполнения команд на удаленной системе от имени пользователя root безопаснее заре-<br />
гистрироваться в системе в качестве обычного пользователя и затем повысить свои права доступа c помо-<br />
щью команд su или sudo.<br />
Опции IgnoreRhosts yes, IgnoreUserKnownHosts yes, StrictModes yes, RhostsAuthentication<br />
no и RhostsRSAAuthentication no повышают безопасность системы за счет<br />
запрета использования файлов rhosts или shosts для аутентификации пользователей.<br />
Опция X11Forwarding no запрещает поддержку X-сервера.<br />
Опция PrintMotd yes разрешает вывод приветственного сообщения из файла /etc/motd после<br />
регистрации пользователя.<br />
Опция SyslogFacility AUTHPRIV определяет вывод сообщений sshd.<br />
Опция LogLevel INFO опрделяет степень подробности вывода информации sshd.<br />
Опция RSAAuthentication yes разрешает использовать RSA аутентификацию. Она использует-<br />
ся только протоколом SSH1. Протокол SSH2 использует DSA аутентификацию.<br />
Опция PasswordAuthentication no повышает безопасность системы за счет запрещения ис-<br />
пользования паролей для аутентификации пользователей, предоставляя возможность для регистрации толь-<br />
ко тем удаленным пользователям, чьи открытые ключи, созданные с помощью утилиты ssh-keygen, раз-<br />
мещены на сервере. Эти ключи так же защищены паролем. Такой предлагаемый вариант значения опции<br />
(no) запрещает регистрацию пользователей, которые узнали или подобрали пароль, но не имеют соответст-<br />
вующего ключа на своей системе.<br />
Опция PermitEmptyPasswords no запрещает регистрацию на системе удаленных пользователей,<br />
для которых не определены значения паролей. В рассматриваемом примере значение этой опции не сущест-<br />
венно, так как выше запрещено использование паролей для аутентификации пользователей. Тем не менее, из<br />
соображений безопасности, рекомендуется запретить использование пустых паролей.<br />
Опция AllowUsers drwalbr karlnext определяет список удаленных пользователей, которым<br />
разрешена регистрация в системе.<br />
Опция UsePrivilegeSeparation yes используется для повышения устойчивости системы к раз-<br />
личного рода сбоям.<br />
Шаг 2<br />
Для конфигурирования клиента создайте и отредактируйте в соответствии с вашими потребностями<br />
файл /etc/ssh/ssh_config:<br />
Host *<br />
ForwardAgent no<br />
ForwardX11 no<br />
RhostsAuthentication no<br />
RhostsRSAAuthentication no<br />
RSAAuthentication yes<br />
PasswordAuthentication no<br />
FallBackToRsh no<br />
UseRsh no<br />
BatchMode no<br />
CheckHostIP yes<br />
StrictHostKeyChecking yes<br />
IdentityFile ~/.ssh/identity<br />
IdentityFile ~/.ssh/id_dsa<br />
IdentityFile ~/.ssh/id_rsa<br />
Port 22<br />
Protocol 2,1<br />
Cipher blowfish<br />
EscapeChar ~<br />
Опция Host * предназначена для наложения ограничений на имена систем, с которыми разрешено<br />
соединение. В рассматриваемом примере образец &#8220;*&#8221; не устанавливает никаких ограничений. Опция Host в<br />
файле /etc/ssh/ssh_config может использоваться несколько раз, при этом задаваемый ей образец<br />
имен систем, с которыми разрешено соединение, действует до следующего упоминания опции Host или<br />
конца файла. Это позволяет реализовывать разные настройки клиента для соединения с различными систе-<br />
мами.<br />
Опции ForwardAgent no и ForwardX11 no запрещают автоматическое распространение сеансов<br />
на вашу систему.<br />
RhostsAuthentication no и RhostsRSAAuthentication no запрещают устаревшие и<br />
ставшими небезопасными механизмы аутентификации пользователей.<br />
Опция RSAAuthentication yes разрешает использовать RSA аутентификацию. Этот тип аутен-<br />
тификации используется только протоколом SSH1. Протокол SSH2 использует DSA аутентификацию.<br />
Опция PasswordAuthentication no повышает безопасность системы за счет запрещения ис-<br />
пользования паролей для аутентификации пользователей. Более подробно назначение этой опции рассмат-<br />
ривалось выше при конфигурировании сервера.<br />
Опция FallBackToRsh no запрещает в случае неудачной попытки соединения с помощью ssh-<br />
клиента автоматической попытки установки соединения с помощью rsh-клиента.<br />
Опция UseRsh no запрещает использование небезопасных служб.<br />
Опция BatchMode no требует безусловной проверки имени пользователя и пароля при установке<br />
соединения. Значение опции должно быть изменено, если вы разрабатываете скрипты, предназначенные для<br />
автоматической установки соединения, например, при резервном копировании данных.<br />
Опция checkHostIP yes требует обязательной проверки соответствия IP-адреса и имени системы<br />
при установке соединения.<br />
Опция StrictHostKeyChecking yes запрещает автоматическое добавление ключей удаленных<br />
систем в файл known_hosts. В начале, т. е. сразу после установки системы, можно изменить значение оп-<br />
ции на &#8220;no&#8221;, установить соединения со всеми системами, с которыми имеется необходимость установки ssh-<br />
соединений, при этом ключи автоматически добавятся в файл known_hosts. После чего необходимо уста-<br />
новить значение опции &#8220;yes&#8221;.<br />
Опции IdentityFile ~/.ssh/identity, IdentityFile ~/.ssh/id_dsa и Identity-<br />
File ~/.ssh/id_rsa позволяют определить местоположение файлов, используемых при аутентифика-<br />
ции.<br />
Опция Protocol 2,1 определяет порядок версий протоколов, используемых при установке соеди-<br />
нения. В рассматриваемом примере сначала будет предпринята попытка установки соединения по протоко-<br />
лу версии 2 и если она окажется неудачной, будет предпринята попытка установления соединения по прото-<br />
колу версии 1.<br />
Опция Cipher blowfish определяет алгоритм шифрования информации. Шифр blowfish пре-<br />
дусматривает использование 64-битных блоков и ключей длиной до 448 битов.<br />
Опция EscapeChar ~ определяет возможность использования символа <ESC> для приостановки<br />
сеанса.<br />
Шаг 3<br />
Для повышения безопасности компиляция OpenSSH осуществлена с поддержкой аутентификации с<br />
использованием модулей PAM. Для настройки аутентификации создайте файл /etc/pam.d/sshd, содер-<br />
жащий следующие строки:<br />
#%PAM-1.0<br />
auth required /lib/security/pam_stack.so service=system-auth<br />
auth required /lib/security/pam_nologin.so<br />
account required /lib/security/pam_stack.so service=system-auth<br />
account required /lib/security/pam_access.so<br />
account required /lib/security/pam_time.so<br />
password required /lib/security/pam_stack.so service=system-auth<br />
session required /lib/security/pam_stack.so service=system-auth<br />
session required /lib/security/pam_limits.so<br />
Установите права доступа к файлу, назначьте его владельцем пользователя root:<br />
[root@drwalbr /]# chmod 640 /etc/pam.d/sshd<br />
[root@drwalbr /]# chown 0.0 /etc/pam.d/sshd<br />
Шаг 4<br />
Создайте файл /etc/init.d/sshd, содержащий следующие строки:<br />
#!/bin/bash<br />
# This shell script takes care of starting and stopping OpenSSH.<br />
#<br />
# chkconfig: 2345 55 25<br />
# description: OpenSSH is a program thas allows to establish a secure remote<br />
\<br />
# connection to a server.<br />
#<br />
# processname: sshd<br />
# config: /etc/ssh/ssh_host_key<br />
# config: /etc/ssh/ssh_host_key.pub<br />
# config: /etc/ssh/ssh_random_seed<br />
# config: /etc/ssh/sshd_config<br />
# pidfile: /var/run/sshd.pid<br />
# Source function library.<br />
. /etc/init.d/functions<br />
# Source networking configuration.<br />
. /etc/sysconfig/network<br />
# Source OpenSSH configureation.<br />
if [ -f /etc/sysconfig/sshd ] ; then<br />
. /etc/sysconfig/sshd<br />
fi<br />
RETVAL=0<br />
# Some functions to make the below more readable.<br />
KEYGEN=/usr/bin/ssh-keygen<br />
RSA1_KEY=/etc/ssh/ssh_host_key<br />
RSA_KEY=/etc/ssh/ssh_host_rsa_key<br />
DSA_KEY=/etc/ssh/ssh_host_dsa_key<br />
PID_FILE=/var/run/sshd.pid<br />
my_success() {<br />
local msg<br />
if [ $# -gt 1 ]; then<br />
msg=&#8221;$2&#8243;<br />
else<br />
msg=&#8221;done&#8221;<br />
fi<br />
case &#8220;`type -type success`&#8221; in<br />
function)<br />
success &#8220;$1&#8243;<br />
;;<br />
*)<br />
echo -n &#8220;${msg}&#8221;<br />
;;<br />
esac<br />
}<br />
my_failure() {<br />
local msg<br />
if [ $# -gt 1 ]; then<br />
msg=&#8221;$2&#8243;<br />
else<br />
msg=&#8221;FAILED&#8221;<br />
fi<br />
case &#8220;`type -type failure`&#8221; in<br />
function)<br />
failure &#8220;$1&#8243;<br />
;;<br />
*)<br />
echo -n &#8220;${msg}&#8221;<br />
;;<br />
esac<br />
}<br />
do_rsa1_keygen() {<br />
if ! test -f $RSA1_KEY ; then<br />
echo -n &#8220;Generating SSH1 RSA host key: &#8221;<br />
if $KEYGEN -q -t rsa1 -f $RSA1_KEY -C &#8221; -N &#8221;<br />
>&#038;/dev/null; then<br />
my_success &#8220;RSA1 key generation&#8221;<br />
echo<br />
else<br />
my_failure &#8220;RSA1 key generation&#8221;<br />
echo<br />
exit 1<br />
fi<br />
fi<br />
}<br />
do_rsa_keygen() {<br />
if ! test -f $RSA_KEY ; then<br />
echo -n &#8220;Generating SSH2 RSA host key: &#8221;<br />
if $KEYGEN -q -t rsa -f $RSA_KEY -C &#8221; -N &#8221; >&#038;/dev/null;<br />
then<br />
my_success &#8220;RSA key generation&#8221;<br />
echo<br />
else<br />
my_failure &#8220;RSA key generation&#8221;<br />
echo<br />
exit 1<br />
fi<br />
fi<br />
}<br />
do_dsa_keygen() {<br />
if ! test -f $DSA_KEY ; then<br />
echo -n &#8220;Generating SSH2 DSA host key: &#8221;<br />
if $KEYGEN -q -t dsa -f $DSA_KEY -C &#8221; -N &#8221; >&#038;/dev/null;<br />
then<br />
my_success &#8220;DSA key generation&#8221;<br />
echo<br />
else<br />
my_failure &#8220;DSA key generation&#8221;<br />
echo<br />
exit 1<br />
fi<br />
fi<br />
}<br />
do_restart_sanity_check() {<br />
sshd -t<br />
RETVAL=$?<br />
if [ ! "$RETVAL" = 0 ]; then<br />
my_failure &#8220;Configuration file or keys&#8221;<br />
echo<br />
exit $RETVAL<br />
fi<br />
}<br />
case &#8220;$1&#8243; in<br />
start)<br />
# Create keys if necessary<br />
do_rsa1_keygen;<br />
do_rsa_keygen;<br />
do_dsa_keygen;<br />
echo -n &#8220;Starting SSHD: &#8221;<br />
if [ ! -f $PID_FILE ] ; then<br />
sshd $OPTIONS<br />
RETVAL=$?<br />
if [ "$RETVAL" = "0" ] ; then<br />
my_success &#8220;sshd startup&#8221; &#8220;sshd&#8221;<br />
touch /var/lock/subsys/sshd<br />
else<br />
my_failure &#8220;sshd startup&#8221; &#8220;&#8221;<br />
fi<br />
fi<br />
echo<br />
;;<br />
stop)<br />
echo -n &#8220;Shutting down SSHD: &#8221;<br />
if [ -f $PID_FILE ] ; then<br />
killproc sshd<br />
RETVAL=$?<br />
[ $RETVAL -eq 0 ] &#038;&#038; rm -f /var/lock/subsys/sshd<br />
fi<br />
echo<br />
;;<br />
restart)<br />
do_restart_sanity_check<br />
$0 stop<br />
$0 start<br />
RETVAL=$?<br />
;;<br />
condrestart)<br />
if [ -f /var/lock/subsys/sshd ] ; then<br />
do_restart_sanity_check<br />
$0 stop<br />
$0 start<br />
RETVAL=$?<br />
fi<br />
;;<br />
status)<br />
status sshd<br />
RETVAL=$?<br />
;;<br />
*)<br />
echo &#8220;Usage: sshd<br />
{start|stop|restart|status|condrestart}&#8221;<br />
exit 1<br />
;;<br />
esac<br />
exit $RETVAL<br />
Установите права доступа к файлу, назначьте его владельцем пользователя root и создайте соответ-<br />
ствующие ссылки:<br />
[root@drwalbr /]# chmod 700 /etc/init.d/sshd<br />
[root@drwalbr /]# chown 0.0 /etc/init.d/sshd<br />
[root@drwalbr /]# chkconfig &#8211;add sshd<br />
[root@drwalbr /]# chkconfig &#8211;level 2345 sshd on</p>
<p><strong>Тестирование OpenSSH</strong></p>
<p>Для проверки работоспособности OpenSSH попытайтесь установить удаленное соединение между<br />
двумя системами. Ниже приведены подробные инструкции по установке соединения по протоколу SSH ме-<br />
жду двумя системами drwalbr.und (IP-адрес 192.168.1.105) и karlnext.und (IP-адрес 192.168.1.35).<br />
Для реализации безопасного соединения на каждой из систем пользователь должен создать пару клю-<br />
чей (закрытый и открытый). Открытые ключи переносятся на другую систему (не ту на которой он был соз-<br />
дан) и хранятся в домашнем каталоге пользователя в файле /.ssh/authorized_keys.<br />
Шаг 1<br />
Для создания пары ключей на системе drwalbr.und от имени пользователя drwalbr выполни-<br />
те:<br />
[drwalbr@drwalbr drwalbr]$ ssh-keygen -t rsa<br />
Generating public/private rsa key pair.<br />
Введите имя каталога, в котором будут сохранены ключи. Рекомендуется имя каталога, предлагаемое<br />
по умолчанию - /home/drwalbr/.ssh/id_rsa:<br />
Enter file in which to save the key (/home/drwalbr/.ssh/id_rsa):<br />
Введите пароль:<br />
Enter passphrase (empty for no passphrase): $ecretnoe_Slovo_dr_Walbr<br />
Подтвердите пароль:<br />
Enter same passphrase again: $ecretnoe_Slovo_dr_Walbr<br />
Your identification has been saved in /home/drwalbr/.ssh/id_rsa.<br />
Your public key has been saved in /home/drwalbr/.ssh/id_rsa.pub.<br />
The key fingerprint is:<br />
f0:7f:09:90:5d:71:d4:59:1e:e5:9b:2b:b2:77:a1:ce drwalbr@drwalbr.und<br />
На системе karlnext.und от имени пользователя drwalbr:<br />
[drwalbr@drwalbr drwalbr]$ ssh-keygen -t rsa<br />
Generating public/private rsa key pair.<br />
Введите имя каталога, в котором будут сохранены ключи. Рекомендуется имя каталога, предлагаемое<br />
по умолчанию - /home/drwalbr/.ssh/id_rsa:<br />
Enter file in which to save the key (/home/drwalbr/.ssh/id_rsa):<br />
Ведите пароль:<br />
Enter passphrase (empty for no passphrase): $ecretnoe_Slovo_Karl_Next<br />
Подтвердите пароль:<br />
Enter same passphrase again: $ecretnoe_Slovo_Karl_Next<br />
Your identification has been saved in /home/drwalbr/.ssh/id_rsa.<br />
Your public key has been saved in /home/drwalbr/.ssh/id_rsa.pub.<br />
The key fingerprint is:<br />
f0:7f:09:90:5d:71:d4:59:1e:e5:9b:2b:b2:77:a1:ce drwalbr@karlnext.und<br />
Закрытый ключ будет находиться в файле id_rsa, а открытый в файле id_rsa.pub.<br />
ЗАМЕЧАНИЕ В приведенном выше примере описана генерация ключей для протокола SSH версии 2.<br />
Если вы по каким либо причинам собираетесь использовать ключи для протокола SSH версии 1, следует ис-<br />
пользовать команду:<br />
[drwalbr@drwalbr drwalbr]$ ssh-keygen -t rsa1<br />
В этом случае закрытый ключ будет находиться в файле identity, а открытый в - identity.pub.<br />
Шаг 2<br />
Скопируйте открытый ключ id_rsa.pub, находящийся на системе drwalbr.und в каталоге<br />
/home/drwalbr/.ssh/, в файл /home/drwalbr/.ssh/authorized_keys системы<br />
karlnext.und.<br />
Шаг 3<br />
Скопируйте открытый ключ id_rsa.pub, находящийся на системе karlnext.und в каталоге<br />
/home/drwalbr/.ssh/, в файл /home/drwalbr/.ssh/authorized_keys системы drwalbr.und.<br />
Копирование ключей может быть осуществлено с помощью электронной почты или в случае, если системы<br />
находятся поблизости, с помощью съемных носителей.<br />
Шаг 4<br />
На обеих системах зарегистрируйтесь в качестве суперпользователя root и запустите sshd:<br />
[root@drwalbr /]# /etc/init.d/sshd start<br />
Starting SSHD: [ОК]<br />
[root@karlnext /]# /etc/init.d/sshd start<br />
Starting SSHD: [ОК]<br />
Шаг 5<br />
Регистрация на удаленной системе осуществляется с помощью команды:<br />
[drwalbr@drwalbr drwalbr]$ ssh name_of_user@name_of_remoute_system.domen<br />
где:<br />
name_of_user – имя пользователя;<br />
name_of_remoute_system.domen – имя удаленной системы, на которой осуществляется регист-<br />
рация.<br />
Попробуйте зарегистрироваться в качестве пользователя drwalbr на удаленной системе<br />
karlnext.und с системы drwalbr.und. Для этого от имени пользователя drwalbr на системе<br />
drwalbr.und выполните:<br />
[drwalbr@drwalbr drwalbr]$ ssh drwalbr@karlnext.und<br />
Введите пароль, используемый для защиты закрытого ключа на системе drwalbr.und:<br />
Enter passphrase for key &#8216;/home/drwalbr/.ssh/id_dsa&#8217;: $ecretnoe_<br />
Slovo_dr_Walbr<br />
Last login: Tue Mar 25 11:52:56 2003 from drwalbr.und<br />
[drwalbr@karlnext drwalbr]$<br />
ЗАМЕЧАНИЕ Если вы работаете в локальной сети, в которой нет DNS-сервера, для нормальной рабо-<br />
ты SSH в файлы /etc/hosts на системе drwalbr.und следует добавить строку:<br />
192.168.1.35 karlnext.und karlnext<br />
а на системе karlnext.und - строку:<br />
192.168.1.105 drwalbr.und drwalbr<br />
Не рекомендуется использовать файлы /etc/hosts для преобразования имен систем в IP-адреса в<br />
сетях, содержащих больше 5…10 систем. В этом случае необходимо установить, настроить и запустить DNS-<br />
сервер.</p>
<p><strong>Использование OpenSSH</strong></p>
<p>Часто OpenSSH используется для копирования файлов с одной системы на другую. Для этого исполь-<br />
зуется утилита scp (Secure Copy), синтаксис которой аналогичен синтаксису широко используемой для ко-<br />
пирования файлов на локальной системе утилиты cp.<br />
Для копирования файлов с локальной системы на удаленную наберите:<br />
[drwalbr@drwalbr /]$ scp -p local_dir/local_file<br />
name_of_user@name_of_remoute_system.domen:/dir/file<br />
где:<br />
-p – опция, предписывающая сохранять атрибуты копируемого файла;<br />
local_dir – путь к каталогу, откуда копируется файл на локальной системе;<br />
local_file –.имя копируемого файла на локальной системе;<br />
name_of_user – имя пользователя удаленной системы;<br />
name_of_remoute_system.domen – имя удаленной системы;<br />
dir – путь к каталогу на удаленной системе, в который копируется файл;<br />
file – имя файла на удаленной системе, в который осуществляется копирование.<br />
Например, если вы хотите скопировать файлы test и test1, находящиеся на системе<br />
drwalbr.und в домашнем каталоге пользователя drwalbr, в домашний каталог пользователя drwalbr<br />
на системе karnext.und, то на системе drwalbr.und от имени пользователя drwalbr выполните ко-<br />
манду:<br />
[drwalbr@drwalbr drwalbr]$ scp -p test*<br />
drwalbr@karlnext.und:/home/drwalbr/<br />
Введите пароль, используемый для защиты закрытого ключа на системе drwalbr.und:<br />
Enter passphrase for key &#8216;/home/drwalbr/.ssh/id_dsa&#8217;:<br />
20030325 100% |*********************| 229 KB 00:00<br />
20030326 100% |*********************| 246 KB 00:00<br />
Для копирования файлов с удаленной системы на локальную используйте:<br />
[drwalbr@drwalbr /]$ scp -p<br />
name_of_user@name_of_remoute_system.domen:/dir/file local_dir/local_file<br />
Для копирования файлов с одной удаленной системы на другую удаленную систему выполните:<br />
drwalbr@drwalbr /]$ scp -p<br />
name_of_user@name_of_remoute_system.domen:/dir/file<br />
name_of_user_1@name_of_remoute_system_1.domen_1:/dir_1/file_1<br />
где:<br />
name_of_user_1, name_of_remoute_system_1, domen_1, dir_1, file_1 – соответственно,<br />
значения параметров name_of_user, name_of_remoute_system, domen, dir, file для удаленной<br />
системы, на которую копируется файл.<br />
В некоторых случаях, например, если пользователь забыл пароль или он стал доступен третьим ли-<br />
цам, может потребоваться изменение пароля, используемого для защиты секретного ключа. Для изменения<br />
пароля пользователя drwalbr на системе drwalbr выполните:<br />
[drwalbr@drwalbr drwalbr]$ ssh-keygen –p<br />
Введите имя ключа, для которого должен быть изменен пароль, используемый для защиты:<br />
Enter file in which the key is (/home/drwalbr/.ssh/id_rsa):<Enter><br />
Введите старый пароль:<br />
Enter old passphrase: $ecretnoe_Slovo_dr_Walbr<br />
Введите новый пароль:<br />
Enter new passphrase again: New_$ecretnoe_Slovo<br />
Подтвердите новый пароль:<br />
Enter same passphrase again: New_$ecretnoe_Slovo<br />
Your identification has been saved with the new passphrase</p>
<p><strong>OpenSSH в окружении chroot-jail</strong></p>
<p>Для того, что бы программа OpenSSH выполнялась в окружении chroot-jail – т. е. пользователь, заре-<br />
гистрировавшийся с помощью клиента ssh, не имел бы доступа на чтение-запись и исполнение файлов за<br />
пределами своего пользовательского каталога – необходимо создать среду chroot-jail и установить версию<br />
OpenSSH, поддерживающую работу в этой среде. Этот вид установки полезен не только для компаний, пре-<br />
доставляющих услуги хостинга, но и для администраторов, желающих повысить безопасность своей систе-<br />
мы. В этом случае, если злоумышленник получит доступ только к аутентификационной информации поль-<br />
зователя он вря ли сможет получить доступ к системе в целом.</p>
<p><strong>Создание окружения chroot-jail</strong></p>
<p>В конечном счете, вы должны создать подобие корневой файловой системы, содержащей все компо-<br />
ненты, необходимые для работы приложений (исполняемые файлы, файлы настроек, библиотеки и т. п.).<br />
Для повышения безопасности системы окружение chroot-jail лучше всего создавать на отдельном разделе<br />
диска, смонтированном в отдельный каталог, например /chroot. Если вы следовали рекомендациям главы<br />
2, то такой раздел уже существует.<br />
Шаг 1<br />
Создайте нового пользователя:<br />
[root@drwalbr /]# useradd -g users -d /chroot/urbanoff urbanoff<br />
[root@drwalbr /]# passwd urbanoff<br />
Changing password for user urbanoff<br />
New UNIX password: Urbanoff&#8217;s_$ecretnoe_$lovo<br />
Retype new UNIX password: Urbanoff&#8217;s_$ecretnoe_$lovo<br />
passwd: all authentication tokens updated successfully<br />
Шаг 2<br />
Создайте необходимые каталоги в домашнем каталоге пользователя urbanoff:<br />
[root@drwalbr /]# mkdir /chroot/urbanoff/bin<br />
[root@drwalbr /]# mkdir /chroot/urbanoff/dev<br />
[root@drwalbr /]# mkdir /chroot/urbanoff/etc<br />
[root@drwalbr /]# mkdir /chroot/urbanoff/lib<br />
[root@drwalbr /]# mkdir /chroot/urbanoff/usr<br />
[root@drwalbr /]# mkdir /chroot/urbanoff/usr/bin<br />
[root@drwalbr /]# mkdir /chroot/urbanoff/usr/lib<br />
[root@drwalbr /]# mkdir /chroot/urbanoff/lib/i686<br />
Шаг 3<br />
Установите права доступа к каталогам:<br />
[root@drwalbr /]# chmod -R 0111 /chroot/urbanoff/*<br />
Шаг 4<br />
Скопируйте минимальный набор программ, необходимый для работы пользователя, например, cp,<br />
bash, ls, mkdir, grep, rm, vi, dircolors в соответствующие каталоги:<br />
[root@drwalbr urbanoff]# cp /bin/cp /chroot/urbanoff/bin<br />
[root@drwalbr urbanoff]# cp /bin/bash /chroot/urbanoff/bin<br />
[root@drwalbr urbanoff]# cp /bin/ls /chroot/urbanoff/bin<br />
[root@drwalbr urbanoff]# cp /bin/mkdir /chroot/urbanoff/bin<br />
[root@drwalbr urbanoff]# cp /bin/grep /chroot/urbanoff/bin<br />
[root@drwalbr urbanoff]# cp /bin/rm /chroot/urbanoff/bin<br />
[root@drwalbr urbanoff]# cp /bin/vi /chroot/urbanoff/bin<br />
[root@drwalbr urbanoff]# cp /usr/bin/dircolors /chroot/urbanoff/usr/bin<br />
Шаг 5<br />
Установите права доступа к каталогам:<br />
[root@drwalbr urbanoff]# chmod 0111 /chroot/urbanoff/bin/*<br />
[root@drwalbr urbanoff]# chmod 0111 /chroot/urbanoff/usr/bin/*<br />
Шаг 6<br />
В файле /etc/passwd строку:<br />
urbanoff:x:503:100::/chroot/urbanoff:/bin/bash<br />
замените на:<br />
urbanoff:x:503:100::/chroot/urbanoff/./:/bin/bash<br />
Шаг 7<br />
Исполняемые файлы в домашнем каталоге пользователя urbanoff используют динамические биб-<br />
лиотеки, находящиеся в каталогах /lib и /usr/lib, недоступных пользователю, работающему в окруже-<br />
нии chroot-jail. Поэтому необходимо создать локальные копии для всех библиотек, используемых исполняе-<br />
мыми файлами, расположенные в домашнем каталоге пользователя urbanoff. Для нахождения необходи-<br />
мых динамических библиотек используйте команду ldd:<br />
[root@drwalbr urbanoff]# ldd bash cp ls mkdir grep rm vi<br />
/usr/bin/dircolors<br />
bash:<br />
libtermcap.so.2 => /lib/libtermcap.so.2 (0&#215;4cc1e000)<br />
libdl.so.2 => /lib/libdl.so.2 (0&#215;4cc23000)<br />
libc.so.6 => /lib/i686/libc.so.6 (0&#215;4cc26000)<br />
/lib/ld-linux.so.2 => /lib/ld-linux.so.2 (0&#215;4cc07000)<br />
cp:<br />
libc.so.6 => /lib/i686/libc.so.6 (0&#215;4de49000)<br />
/lib/ld-linux.so.2 => /lib/ld-linux.so.2 (0&#215;4de32000)<br />
ls:<br />
libtermcap.so.2 => /lib/libtermcap.so.2 (0&#215;4db5c000)<br />
libc.so.6 => /lib/i686/libc.so.6 (0&#215;4db61000)<br />
/lib/ld-linux.so.2 => /lib/ld-linux.so.2 (0&#215;4db45000)<br />
mkdir:<br />
libc.so.6 => /lib/i686/libc.so.6 (0&#215;40d9b000)<br />
/lib/ld-linux.so.2 => /lib/ld-linux.so.2 (0&#215;40d84000)<br />
grep:<br />
libc.so.6 => /lib/i686/libc.so.6 (0&#215;44399000)<br />
/lib/ld-linux.so.2 => /lib/ld-linux.so.2 (0&#215;44382000)<br />
rm:<br />
libc.so.6 => /lib/i686/libc.so.6 (0&#215;439ef000)<br />
/lib/ld-linux.so.2 => /lib/ld-linux.so.2 (0&#215;439d8000)<br />
vi:<br />
libtermcap.so.2 => /lib/libtermcap.so.2 (0&#215;4d667000)<br />
libdl.so.2 => /lib/libdl.so.2 (0&#215;4d66c000)<br />
libc.so.6 => /lib/i686/libc.so.6 (0&#215;4d66f000)<br />
/lib/ld-linux.so.2 => /lib/ld-linux.so.2 (0&#215;4d650000)<br />
/usr/bin/dircolors:<br />
libc.so.6 => /lib/i686/libc.so.6 (0&#215;41203000)<br />
/lib/ld-linux.so.2 =>/lib/ld-linux.so.2 (0&#215;411ec000)<br />
Скопируйте библиотеки в соответствующие подкаталоги домашнего каталога пользователя urbanoff<br />
и удалите из них комментарии:<br />
[root@drwalbr /]# cp /lib/libtermcap.so.2 /chroot/urbanoff/lib/<br />
[root@drwalbr /]# cp /lib/libd1.so.2 /chroot/urbanoff/lib/<br />
[root@drwalbr /]# cp /lib/libc.so.6 /chroot/urbanoff/lib/<br />
[root@drwalbr /]# cp /lib/libgcc_s.so.1 /chroot/urbanoff/lib/<br />
[root@drwalbr /]# cp /lib/ld-linux.so.2 /chroot/urbanoff/lib/<br />
[root@drwalbr /]# cp /lib/i686/libc.so.6 /chroot/urbanoff/lib/i686/<br />
[root@drwalbr /]# strip -R .comment /chroot/urbanoff/lib/*<br />
Шаг 8<br />
Скопируйте файлы настроек в соответствующие подкаталоги домашнего каталога пользователя urbanoff:<br />
[root@drwalbr /]# cp /etc/dir_colors /chroot/urbanoff/etc/<br />
[root@drwalbr /]# cp /etc/passwd /chroot/urbanoff/etc/<br />
Шаг 9<br />
Создайте в домашнем каталоге пользователя urbanoff файл устройства<br />
/chroot/urbanoff/dev/null и установите права доступа к нему:<br />
[root@drwalbr /]# mknod /chroot/urbanoff/dev/null c 1 3<br />
[root@dr mknod walbr /]# chmod 666 /chroot/urbanoff/dev/null<br />
ЗАМЕЧАНИЕ Если вы постоянно добавляете новых пользователей в окружение chroot-jail, для упро-<br />
щения данной операции можно написать скрипт, реализующий шаги 1&#8230;9.</p>
<p><strong>Компиляция, оптимизация, инсталляция, конфигурирование и тестирование OpenSSH в среде chroot-jail</strong></p>
<p>Компиляция, оптимизация, инсталляция и конфигурирование OpenSSH в среде chroot-jail осуществ-<br />
ляется так же, как и в случае инсталляции в обычной среде, с тем отличием, что используются исходные ко-<br />
ды из архива openssh-version-chroot.tar.gz или исходные коды из архива opensshversion.<br />
tar.gz, модифицированные с помощью патча osshChroot-version.diff.<br />
Если вы используете ядро, собранное из исходных кодов, к которым применен патч Grsecurity, убеди-<br />
тесь, что в настройках ядра опция CONFIG_GRKERNSEC_CHROOT не включена, т. е. при конфигурирова-<br />
нии кодов ядра вы дали отрицательный ответ на вопрос:<br />
Chroot jail restrictions (CONFIG_GRKERNSEC_CHROOT) [N/y/?] <n><br />
Тестирование OpenSSН в среде chroot-jail можно провести путем проверки возможности регистрации<br />
chroot-пользователя на удаленной системе с помощью ssh-клиента:<br />
[dymatel@urbanoff urbanoff]$ ssh urbanoff@drwalbr.und<br />
Введите пароль, используемый для защиты закрытого ключа пользователя urbanoff на системе dymatel.<br />
und:<br />
Enter passphrase for key &#8216;/home/urbanoff/.ssh/id_dsa&#8217;: Urbanoff&#8217;s_$<br />
ecretnoe_$lovo<br />
bash-2.05a$<br />
Если регистрация прошла удачно, попробуйте «вырваться» из окружения chroot-jail, например, с по-<br />
мощью команды:<br />
bash-2.05a$ cd /<br />
Если вы окажетесь в корневом каталоге chroot-пользователя:<br />
bash-2.05a$ ls<br />
bin dev etc lib usr<br />
то все настроено правильно.<br />
Если вы окажетесь в корневом каталоге системы, т. е.:<br />
bash-2.05a$ ls<br />
bin chroot etc initrd lost+found opt root tmp var<br />
boot dev home lib mnt proc sbin usr<br />
то среда chroot-jail не работает. Скорее всего, вы используете OpenSSН из rpm-пакета, входящего в состав<br />
дистрибутива ASPLinux 7.3 (Vostok).</p>
]]></content:encoded>
			<wfw:commentRss>http://www.compyuteri.ru/glava-13-openssh-%e2%80%93-programmnoe-obespechenie-dlya-bezopasnogo-administrirovaniya-udalennyx-sistem/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Глава 14. Sudo – программное обеспечение для делегирования пользователям сервера полномочий пользователя root в ограниченном объеме</title>
		<link>http://www.compyuteri.ru/glava-14-sudo-%e2%80%93-programmnoe-obespechenie-dlya-delegirovaniya-polzovatelyam-servera-polnomochij-polzovatelya-root-v-ogranichennom-obeme/</link>
		<comments>http://www.compyuteri.ru/glava-14-sudo-%e2%80%93-programmnoe-obespechenie-dlya-delegirovaniya-polzovatelyam-servera-polnomochij-polzovatelya-root-v-ogranichennom-obeme/#comments</comments>
		<pubDate>Sat, 13 Sep 2008 13:12:45 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[Часть 04. Программное обеспечение для ограничения досту]]></category>

		<category><![CDATA[root]]></category>

		<category><![CDATA[sudo]]></category>

		<guid isPermaLink="false">http://www.compyuteri.ru/?p=59</guid>
		<description><![CDATA[В этой главе:
1. Ограничения и допущения
2. Пакеты
3. Инсталляция с помощью rpm-пакетов
4. Компиляция, оптимизация и инсталляция Sudo
5. Конфигурирование Sudo
6. Тестирование Sudo
7. Более сложная конфигурация Sudo
Sudo (superuser do) – программа, предназначенная для предоставления администратору системы воз-
можности делегирования в ограниченном объеме привилегий пользователя root обычным пользователям
системы.
Возможности Sudo аналогичны возможностям команды su. Однако Sudo предоставляет более широ-
кие возможности для [...]]]></description>
			<content:encoded><![CDATA[<p>В этой главе:<br />
1. Ограничения и допущения<br />
2. Пакеты<br />
3. Инсталляция с помощью rpm-пакетов<br />
4. Компиляция, оптимизация и инсталляция Sudo<br />
5. Конфигурирование Sudo<br />
6. Тестирование Sudo<br />
7. Более сложная конфигурация Sudo</p>
<p>Sudo (superuser do) – программа, предназначенная для предоставления администратору системы воз-<br />
можности делегирования в ограниченном объеме привилегий пользователя root обычным пользователям<br />
системы.<br />
Возможности Sudo аналогичны возможностям команды su. Однако Sudo предоставляет более широ-<br />
кие возможности для частичного делегирования полномочий обычным пользователям системы и протоко-<br />
лирования действий пользователя root. Sudo позволяет:<br />
• ограничивать номенклатуру команд, выполняемых обычным пользователем с правами root;<br />
• регистрировать все команды, выполняемые от имени пользователя root, при этом регистрация мо-<br />
жет осуществляться как на локальной, так и на удаленной системе, например, центральном сервере;<br />
• конфигурационный файл имеет установку, позволяющую использовать утилиту на многих маши-<br />
нах.<br />
Программа Sudo может оказаться просто незаменимой в ситуации, когда нужно разрешить доступ с<br />
правами пользователя root только к некоторым программам.</p>
<p><strong>Ограничения и допущения</strong></p>
<p>Исходные коды находятся в каталоге /var/tmp.<br />
Все операции выполняются пользователем с учетной записью root.<br />
Используется дистрибутив ASPLinux 7.3 (Vostok).<br />
Перекомпиляция ядра не требуется.<br />
Процедуры, описанные в этой главе, могут оказаться применимыми для других версий ядра и дистри-<br />
бутивов Linux, но авторы этого не проверяли.</p>
<p><strong>Пакеты</strong></p>
<p>Последующие рекомендации основаны на информации, полученной с домашней страницы проекта<br />
Sudo по состоянию на 8.04.2003. Регулярно посещайте домашнюю страницу проекта<br />
http://www.sudo.ws/ и отслеживайте обновления.<br />
Исходные коды Sudo содержатся в архиве sudo-version.tar.gz (последняя доступная на момент<br />
написания главы стабильная версия sudo-1.6.7p3.tar.gz).</p>
<p><strong>Инсталляция с помощью rpm-пакета</strong></p>
<p>Если вы предпочитаете использование системы со стандартным ядром и программным обеспечением,<br />
установленным из rpm-пакетов, для установки или обновления пакета необходимо выполнить следующие<br />
операции.<br />
ЗАМЕЧАНИЕ Авторы настоятельно рекомендуют устанавливать программное обеспечение из исход-<br />
ных кодов.<br />
Шаг 1<br />
Проверьте, установлен ли пакет sudo с помощью следующей команды:<br />
[root@drwalbr /]# rpm –iq sudo<br />
Шаг 2<br />
В случае его отсутствия перейдите в каталог, где находится пакет sudo-1.6.5p2-2.i386.rpm.<br />
Если вы в соответствии с рекомендациями главы 2 скопировали все пакеты, входящие в дистрибутив, в ка-<br />
талог /home/distrib, то выполните команду:<br />
[root@drwalbr /]# cd /home/distrib<br />
и установите:<br />
[root@drwalbr distrib]# rpm –ihv sudo-1.6.5p2-2.i386.rpm<br />
или обновите пакет:<br />
[root@drwalbr distrib]# rpm –Uhv sudo-1.6.5p2-2.i386.rpm<br />
После установки пакета перейдите к конфигурированию программы Sudo, описанного ниже в соот-<br />
ветствующем разделе.</p>
<p><strong>Компиляция, оптимизация и инсталляция Sudo</strong></p>
<p>Шаг 1<br />
Осуществите проверку подлинности имеющегося в вашем распоряжении архива с исходными кодами<br />
с использованием процедур, описанных в шаге 1 радела «Компиляция, оптимизация и инсталляция<br />
OpenSSL» главы 12.<br />
Шаг 2<br />
Распакуйте архив с исходными кодами в каталоге /var/tmp:<br />
[root@drwalbr tmp]# tar xzpf sudo-1.6.7p3.tar.gz<br />
Шаг 3<br />
Сконфигурируйте исходные коды Sudo:<br />
[root@drwalbr tmp]# cd sudo-1.6.7p3<br />
[root@drwalbr sudo-1.6.7p3]# CFLAGS=&#8221;-O2 -march=i686 -funroll-loops&#8221;; export<br />
CFLAGS<br />
./configure \<br />
&#8211;prefix=/usr \<br />
&#8211;sbindir=/usr/sbin \<br />
&#8211;with-logging=syslog \<br />
&#8211;with-logfac=authpriv \<br />
&#8211;with-pam \<br />
&#8211;with-with-env-editor \<br />
&#8211;with-ignore-dot \<br />
&#8211;with-tty-tickets \<br />
&#8211;disable-root-mailer \<br />
&#8211;disable-root-sudo \<br />
&#8211;disable-path-info \<br />
&#8211;with-mail-if-noperms \<br />
&#8211;with-mailsubject=&#8221;*** Sudo SECURITY information for %h ***&#8221;<br />
При таких параметрах конфигурации Sudo:<br />
• регистрация сообщения Sudo будет осуществляться с использованием syslog;<br />
• для аутентификации пользователей будут использоваться модули PAM;<br />
• для редактирования конфигурационного файла будет использоваться программа visudo;<br />
• символы &#8220;.&#8221; в путях к файлам будут игнорироваться;<br />
• будут использоваться различные контрольные файлы для каждого пользователя и консоли;<br />
• программа электронной почты не будет запускаться с правами пользователя root;<br />
• пользователю root будет запрещено выполнять команду sudo;<br />
• при попытке запуска обычным пользователем запрещенной команды от имени root, будет выво-<br />
диться сообщение &#8220;command not allowed&#8221;;<br />
• в случае попытки запуска неразрешенных программ обычными пользователями администратору<br />
системы будет отправляться сообщение по электронной почте.<br />
Шаг 4<br />
Откомпилируйте исходные коды, проинсталлируйте файлы Sudo, создайте и сохраните список ин-<br />
сталлированных файлов:<br />
[root@drwalbr sudo-1.6.7p3]# make<br />
[root@drwalbr sudo-1.6.7p3]# find /* > /root/sudo1<br />
[root@drwalbr sudo-1.6.7p3]# make install<br />
[root@drwalbr sudo-1.6.7p3]# strip /usr/bin/sudo<br />
[root@drwalbr sudo-1.6.7p3]# strip /usr/sbin/visudo<br />
[root@drwalbr sudo-1.6.7p3]# mkdir -p -m0700 /var/run/sudo<br />
[root@drwalbr sudo-1.6.7p3]# find /* > /root/sudo2<br />
[root@drwalbr sudo-1.6.7p3]# diff /root/sdudo1 /root/sudo2 ><br />
/root/sudo.installed<br />
[root@drwalbr sudo-1.6.7p3]# mv /root/sudo.installed<br />
/very_reliable_place/sudo.installed.YYYYMMDD<br />
Шаг 5<br />
Удалите архив и каталог с исходными кодами Sudo:<br />
[root@drwalbr sudo-1.6.7p3]# cd /var/tmp/<br />
[root@drwalbr tmp]# rm -rf sudo-1.6.7p3/<br />
[root@drwalbr tmp]# rm -f sudo-1.6.7p3.tar.gz</p>
<p><strong>Конфигурирование Sudo</strong></p>
<p>Конфигурирование Sudo осуществляется с использованием следующих файлов:<br />
• главного конфигурационного файла /etc/sudoers;<br />
• файла для поддержки модулей PAM /etc/pam.d/sudo.<br />
ЗАМЕЧАНИЕ Для редактирования файла /etc/sudoers используйте только visudo. Использование<br />
vi и других редакторов не допускается.<br />
Шаг 1<br />
Отредактируйте с помощью visudo файл /etc/sudoers в соответствии с приведенными рекомен-<br />
дациями:<br />
# This file MUST be edited with the &#8216;visudo&#8217; command as root.<br />
# Defaults specification<br />
Defaults rootpw<br />
# User privilege specification<br />
# Super-user root can run anything as any user.<br />
root ALL=(ALL) ALL<br />
# Uncomment to allow people in group wheel to run all commands<br />
%wheel ALL=(ALL) ALL<br />
В этой простейшей конфигурации (более сложные варианты рассмотрены ниже) всем пользователям<br />
из группы wheel разрешается получать права пользователя root в полном объеме.<br />
Опция Defaults rootpw<br />
указывает на необходимость при вызове sudo обычным пользователем запроса пароля пользователя root,<br />
а не своего пароля.<br />
Опция root ALL= (ALL) ALL<br />
позволяет пользователю root выполнять все операции на сервере.<br />
Опция %wheel ALL= (ALL) ALL<br />
предоставляет возможность любому пользователю из группы wheel выполнять все команды от имени<br />
пользователя root.<br />
Шаг 2<br />
Добавьте в группу wheel (для группы wheel GID=10) пользователей, которым вы хотите разрешить<br />
использовать sudo для получения прав пользователя root. Например, чтобы добавить пользователя<br />
drwalbr выполните команду:<br />
[root@drwalbr /]# usermod -G10 drwalbr<br />
Шаг 3<br />
Создайте файл /etc/pam.d/sudo, содержащий следующие строки:<br />
#%PAM-1.0<br />
auth required /lib/security/pam_stack.so service=system-auth<br />
account required /lib/security/pam_stack.so service=system-auth<br />
password required /lib/security/pam_stack.so service=system-auth<br />
session required /lib/security/pam_stack.so service=system-auth<br />
Установите права доступа к файлу, назначьте его владельцем пользователя root:<br />
[root@drwalbr /]# chmod 0640 /etc/pam.d/sudo<br />
[root@drwalbr /]# chown 0.0 /etc/pam.d/sudo<br />
Шаг 4<br />
Для исключения возможности получения прав пользователя root обычными пользователями систе-<br />
мы удалите SUID-бит программы su:<br />
[root@drwalbr /]# chmod 0511 /bin/su</p>
<p><strong>Тестирование Sudo</strong></p>
<p>Шаг 1<br />
Зарегистрируйтесь в системе в качестве пользователя из группы wheel. В рассматриваемом примере<br />
членом этой группы является пользователь drwalbr.<br />
Шаг 2<br />
Попытайтесь выполнить какую-нибудь команду от имени пользователя root, например, запустить<br />
сервер sshd:<br />
[drwalbr@drwalbr /]$ sudo /etc/init.d/sshd start<br />
Введите пароль пользователя root:<br />
Password:Root&#8217;s_$ecretnoe_Slovo<br />
Starting SSHD: [ОК]<br />
Шаг 3<br />
Зарегистрируйтесь в системе в качестве пользователя, не являющегося членом группы wheel, на-<br />
пример karlnext.<br />
Шаг 4<br />
Попытайтесь выполнить какую-нибудь команду от имени пользователя root, например, остановить<br />
сервер sshd:<br />
[karlnext@drwalbr /]$ sudo /etc/init.d/sshd stop<br />
Пользователь получит предупреждение о возможности возникновения проблем с администратором<br />
системы, необходимости уважительного отношения к правам других пользователей на конфиденциальность<br />
и осмысленном использовании команд:<br />
We trust you have received the usual lecture from the local System<br />
Administrator. It usually boils down to these two things:<br />
#1) Respect the privacy of others.<br />
#2) Think before you type.<br />
Даже если пользователь karlnext введет правильный пароль пользователя root:<br />
Password: Root&#8217;s_$ecretnoe_Slovo<br />
команда не будет выполнена, а karlnext получит сообщение о том, что он не в праве использовать sudo.<br />
О попытке неправомерного использования им sudo будет сообщено администратору системы:<br />
karlnext is not in the sudoers file. This incident will be reported.</p>
<p><strong>Более сложная конфигурация Sudo</strong></p>
<p>Отредактируйте с помощью visudo файл /etc/sudoers в соответствии с приведенными рекомен-<br />
дациями:<br />
# This file MUST be edited with the &#8216;visudo&#8217; command as root.<br />
# User alias specification<br />
User_Alias FULLTIME_USERS = drwalbr, karlnext<br />
User_Alias PARTTIME_USERS = hare, fish, cat<br />
# Cmnd alias specification<br />
Cmnd_Alias HTTP = /etc/init.d/httpd, /bin/vi /etc/httpd/*<br />
Cmnd_Alias MYSQL = /etc/init.d/mysqld, /usr/bin/mysql,<br />
/usr/bin/mysqladmin<br />
# Defaults specification<br />
Defaults:FULLTIME_USERS rootpw<br />
Defaults:FULLTIME_USERS !lecture<br />
# User privilege specification<br />
# Super-user root can run anything as any user.<br />
root ALL=(ALL) ALL<br />
# Every users member of the group wheel will be allowed<br />
# to run all commands as super-user root.<br />
%wheel ALL=(ALL) ALL<br />
# Full time users may run anything but need a password.<br />
FULLTIME_USERS ALL = ALL<br />
# Part time users may administrate httpd and mysqld servers.<br />
PARTTIME_USERS ALL = HTTP, MYSQL<br />
В этом файле строки:<br />
User_Alias FULLTIME_USERS = drwalbr, karlnext<br />
User_Alias PARTTIME_USERS = hare, fish, cat<br />
описывают две группы пользователей FULLTIME_USERS и PARTTIME_USERS. Пользователям из группы<br />
FULLTIME_USERS – drwalbr и karlnext – в дальнейшем будет разрешен доступ к серверу с правами<br />
root в полном объеме. Пользователям из группы PARTTIME_USERS – hare, fish и cat – в дальнейшем<br />
будет предоставлен доступ с правами пользователя root в объеме, достаточном для администрирования<br />
Web-сервера и сервера баз данных MySQL.<br />
ЗАМЕЧАНИЕ Пользователи, описанные в разделе User alias specification, используя sudo,<br />
смогут получать доступ к системе с правами пользователя root даже, если они не являются членами группы<br />
wheel.<br />
Строка:<br />
root ALL= (ALL) ALL<br />
позволяет пользователю root выполнять все операции на сервере.<br />
Строка:<br />
%wheel ALL= (ALL) ALL<br />
предоставляет возможность любому пользователю из группы wheel выполнять все команды от имени<br />
пользователя root.<br />
Строка:<br />
FULLTIME_USERS ALL = ALL<br />
разрешает группе пользователей FULLTIME_USERS(drwalbr, karlnext) доступ к системе с правами<br />
пользователя root в полном объеме.<br />
Строка:<br />
Cmnd_Alias HTTP = /etc/init.d/httpd, /bin/vi /etc/httpd/*<br />
описывает команды, которые в дальнейшем будет разрешено выполнять пользователям из группы<br />
PARTTIME_USERS для администрирования Web-сервера:<br />
• /etc/init.d/httpd – запуск и остановка Web-сервера;<br />
• /bin/vi /etc/httpd/* – редактора vi, необходимого для редактирования файлов<br />
конфигурации Web-сервера в каталоге /etc/httpd/*.<br />
Строка:<br />
Cmnd_Alias MySQL = /etc/init.d/mysqld, /usr/bin/mysql,<br />
/usr/bin/mysqladmin<br />
описывает команды, которые в дальнейшем будет разрешено выполнять пользователям из группы<br />
PARTTIME_USERS для администрирования сервера баз данных MySQL:<br />
• /etc/init.d/mysqld – запуск и остановка сервера баз данных;<br />
• /usr/bin/mysql – запуск клиентской программы mysql;<br />
• /usr/bin/mysqladmin – запуск программы для администрирования сервера баз данных<br />
mysqladmin.<br />
Строка:<br />
Defaults:FULLTIME_USERS rootpw<br />
требует ввода пароля пользователя root при использовании sudo для пользователей из группы<br />
PARTTIME_USERS (по умолчанию sudo требует ввода пароля обычного пользователя).<br />
Строка:<br />
Defaults:FULLTIME_USERS !lecture<br />
отменяет вывод предостерегающих сообщений вида:<br />
We trust you have received the usual lecture from the local System<br />
Administrator. It usually boils down to these two things:<br />
#1) Respect the privacy of others.<br />
#2) Think before you type.<br />
для пользователей из группы FULLTIME_USERS.<br />
Строка:<br />
PARTTIME_USERS ALL = HTTP, MYSQL<br />
разрешает доступ к системе с правами пользователя root пользователям из группы PARTTIME_USERS<br />
(hare, fish и cat) в объеме, достаточном для администрирования Web-сервера и сервера баз данных.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.compyuteri.ru/glava-14-sudo-%e2%80%93-programmnoe-obespechenie-dlya-delegirovaniya-polzovatelyam-servera-polnomochij-polzovatelya-root-v-ogranichennom-obeme/feed/</wfw:commentRss>
		</item>
		<item>
		<title>Глава 15. sXid – программное обеспечение для поиска файлов, в правах доступа к которым установлены SUID и SGID-биты</title>
		<link>http://www.compyuteri.ru/glava-15-sxid-%e2%80%93-programmnoe-obespechenie-dlya-poiska-fajlov-v-pravax-dostupa-k-kotorym-ustanovleny-suid-i-sgid-bity/</link>
		<comments>http://www.compyuteri.ru/glava-15-sxid-%e2%80%93-programmnoe-obespechenie-dlya-poiska-fajlov-v-pravax-dostupa-k-kotorym-ustanovleny-suid-i-sgid-bity/#comments</comments>
		<pubDate>Sat, 13 Sep 2008 13:06:46 +0000</pubDate>
		<dc:creator>admin</dc:creator>
		
		<category><![CDATA[Часть 04. Программное обеспечение для ограничения досту]]></category>

		<category><![CDATA[SGID]]></category>

		<category><![CDATA[SUID]]></category>

		<category><![CDATA[sXid]]></category>

		<guid isPermaLink="false">http://www.compyuteri.ru/?p=57</guid>
		<description><![CDATA[В этой главе:
1. Ограничения и допущения
2. Пакеты
3. Инсталляция с помощью rpm-пакетов
4. Компиляция, оптимизации и инсталляция sXid
5. Конфигурирование sXid
6. Тестирование sXid
Многим системным программам (которые могут быть запущены любым, в том числе и непривилеги-
рованным пользователем) для правильного функционирования необходимы права пользователя root. Од-
ной из таких программ является программа passwd, предназначенная для самостоятельного изменения
пользователями системы своего пароля. Для [...]]]></description>
			<content:encoded><![CDATA[<p>В этой главе:<br />
1. Ограничения и допущения<br />
2. Пакеты<br />
3. Инсталляция с помощью rpm-пакетов<br />
4. Компиляция, оптимизации и инсталляция sXid<br />
5. Конфигурирование sXid<br />
6. Тестирование sXid</p>
<p>Многим системным программам (которые могут быть запущены любым, в том числе и непривилеги-<br />
рованным пользователем) для правильного функционирования необходимы права пользователя root. Од-<br />
ной из таких программ является программа passwd, предназначенная для самостоятельного изменения<br />
пользователями системы своего пароля. Для нормального функционирования этой программе просто необ-<br />
ходимо обеспечить доступ для чтения данных и внесения изменений в файл /etc/shadow с правами поль-<br />
зователя root. Поэтому программа, осуществляющая смену пароля пользователя, выполняется не от имени<br />
запустившего его пользователя, а от имени суперпользователя (который, естественно, имеет право на запись<br />
в файл /etc/shadow). Для этого у исполняемого файла программы установлен специальный SUID-бит,<br />
позволяющий изменять идентификатор пользователя у запущенного процесса. Эта, безусловно, нарушаю-<br />
щая исходную модель разграничения доступа, особенность Linux используется большим числом приложе-<br />
ний. Поэтому наличие SUID или SGID-битов у исполняемых файлов негативно влияет на безопасность сис-<br />
темы.<br />
Для поиска программ на файлы, у которых установлены SUID или SGID-биты используется програм-<br />
ма sXid. После установки sXid регулярно запускается с помощью cron и сообщает администратору систе-<br />
мы по электронной почте обо всех обнаруженных файлах, на которые установлены SUID или SGID-биты.</p>
<p><strong>Ограничения и допущения</strong></p>
<p>Исходные коды находятся в каталоге /var/tmp.<br />
Все операции выполняются пользователем с учетной записью root.<br />
Используется дистрибутив ASPLinux 7.3 (Vostok).<br />
Перекомпиляция ядра не требуется.<br />
Процедуры, описанные в этой главе, могут оказаться применимыми для других версий ядра и дистри-<br />
бутивов Linux, но авторы этого не проверяли.</p>
<p><strong>Пакеты</strong></p>
<p>Последующие рекомендации основаны на информации, полученной с домашней страницы проекта<br />
sXid по состоянию на 22.04.2003. Регулярно посещайте домашнюю страницу проекта<br />
http://www.phunnypharm.org/pub/ и отслеживайте обновления.<br />
Исходные коды sXid содержатся в архиве sxid_version.tar.gz (последняя доступная на момент<br />
написания главы стабильная версия sxid_4.0.2.tar.gz).</p>
<p><strong>Инсталляция с помощью rpm-пакетов</strong></p>
<p>Если вы предпочитаете использование системы со стандартным ядром и программным обеспечением,<br />
установленным из rpm-пакетов, для установки или обновления пакета необходимо выполнить следующие<br />
операции.<br />
ЗАМЕЧАНИЕ Авторы настоятельно рекомендуют устанавливать программное обеспечение из исход-<br />
ных кодов.<br />
Шаг 1<br />
Проверьте, установлен ли пакет sXid с помощью следующей команды:<br />
[root@drwalbr /]# rpm –iq sXid<br />
Шаг 2<br />
В случае его отсутствия перейдите в каталог, где находится пакет sxid-4.0.1-1.asp.i386.rpm.<br />
Если вы в соответствии с рекомендациями главы 2 скопировали все пакеты, входящие в дистрибутив, в ка-<br />
талог /home/distrib, то выполните команду:<br />
[root@drwalbr /]# cd /home/distrib<br />
и установите:<br />
[root@drwalbr distrib]# rpm –ihv sxid-4.0.1-1.asp.i386.rpm<br />
или обновите пакет:<br />
[root@drwalbr distrib]# rpm –Uhv sxid-4.0.1-1.asp.i386.rpm<br />
После установки пакета перейдите к конфигурированию программы sXid, подробно описанного ниже.</p>
<p><strong>Компиляция, оптимизация и инсталляция sXid</strong></p>
<p>Шаг 1<br />
Осуществите проверку подлинности имеющегося в вашем распоряжении архива с исходными кодами<br />
с использованием процедур, описанных в шаге 1 радела «Компиляция, оптимизация и инсталляция<br />
OpenSSL» главы 12.<br />
Шаг 2<br />
Распакуйте архив с исходными кодами sxid_4.0.2.tar.gz в каталоге /var/tmp, откомпили-<br />
руйте и проинсталлируйте sXid, создайте список установленных файлов и сохраните его в надежном месте:<br />
[root@drwalbr tmp]# tar xzpf sxid_4.0.2.tar.gz<br />
[root@drwalbr tmp]# cd sxid-4.0.2<br />
[root@drwalbr sxid-4.0.2]# CFLAGS=&#8221;-O2 -march=i686 -funroll-loops&#8221;; export<br />
CFLAGS<br />
./configure \<br />
&#8211;prefix=/usr \<br />
&#8211;sysconfdir=/etc \<br />
&#8211;mandir=/usr/share/man<br />
[root@drwalbr sxid-4.0.2]# find /* > /root/sxid1<br />
[root@drwalbr sxid-4.0.2]# make install<br />
[root@drwalbr sxid-4.0.2]# find /* > /root/sxid2<br />
[root@drwalbr sxid-4.0.2]# diff /root/sxid1 /root/sxid2 ><br />
/root/sxid.installed<br />
[root@drwalbr sxid-4.0.2]# diff sxid1 sxid2 > sxid.installed<br />
[root@drwalbr sxid-4.0.2]# mv sxid.installed /very_reliable_place/<br />
sxid.installed.YYYYMMDD<br />
Шаг 3<br />
Удалите каталоги с исходными кодами sXid и архив:<br />
[root@drwalbr sxid-4.0.2]# cd /var/tmp/<br />
[root@drwalbr tmp]# rm -rf sxid-4.0.2/<br />
[root@drwalbr tmp]# rm -f sxid_4.0.2.tar.gz</p>
<p><strong>Конфигурирование sXid</strong></p>
<p>Конфигурирование sXid осуществляется с помощью двух конфигурационных файлов:<br />
• конфигурационного файла sXid /etc/sxid.conf;<br />
• файла /etc/cron.daily/sxid для автоматического запуска sXid с помощью crond.<br />
Шаг 1<br />
Создайте или отредактируйте файл /etc/sxid.conf в соответствии с приведенными ниже реко-<br />
мендациями:<br />
Configuration file for sXid<br />
# Note that all directories must be absolute with no trailing /&#8217;s<br />
# Where to begin our file search<br />
SEARCH = &#8220;/&#8221;<br />
# Which subdirectories to exclude from searching<br />
EXCLUDE = &#8220;/proc /mnt /cdrom /floppy&#8221;<br />
# Who to send reports to<br />
EMAIL = &#8220;root&#8221;<br />
# Always send reports, even when there are no changes?<br />
ALWAYS_NOTIFY = &#8220;no&#8221;<br />
# Where to keep interim logs. This will rotate &#8216;x&#8217; number of<br />
# times based on KEEP_LOGS below<br />
LOG_FILE = &#8220;/var/log/sxid.log&#8221;<br />
# How many logs to keep<br />
KEEP_LOGS = &#8220;5&#8243;<br />
# Rotate the logs even when there are no changes?<br />
ALWAYS_ROTATE = &#8220;no&#8221;<br />
# Directories where +s is forbidden (these are searched<br />
# even if not explicitly in SEARCH), EXCLUDE rules apply<br />
FORBIDDEN = &#8220;/home /tmp&#8221;<br />
# Remove (-s) files found in forbidden directories?<br />
ENFORCE = &#8220;yes&#8221;<br />
# This implies ALWAYS_NOTIFY. It will send a full list of<br />
# entries along with the changes<br />
LISTALL = &#8220;no&#8221;<br />
# Ignore entries for directories in these paths<br />
# (this means that only files will be recorded, you<br />
# can effectively ignore all directory entries by<br />
# setting this to &#8220;/&#8221;). The default is /home since<br />
# some systems have /home g+s.<br />
IGNORE_DIRS = &#8220;/home&#8221;<br />
# File that contains a list of (each on it&#8217;s own line)<br />
# other files that sxid should monitor. This is useful<br />
# for files that aren&#8217;t +s, but relate to system<br />
# integrity (tcpd, inetd, apache&#8230;).<br />
# EXTRA_LIST = &#8220;/etc/sxid.list&#8221;<br />
# Mail program. This changes the default compiled in<br />
# mailer for reports. You only need this if you have changed<br />
# it&#8217;s location and don&#8217;t want to recompile sxid.<br />
MAIL_PROG = &#8220;/bin/mail&#8221;<br />
Шаг 2<br />
Установите права доступа к файлу /etc/sxid.conf:<br />
[root