Заглянем в файл гс. Первым делом скрипт пытается определить текущий уровень выполнения и уровень выполнения, в который необходимо перевести систему. После этого он проверяет, нажимал ли пользователь букву I для перехода в режим пошаговой загрузки процессов. Затем скрипт останавливает запущенные на предыдущем уровне выполнения процессы, отсутствующие на новом уровне выполнения, а потом запускает необходимые службы для нового уровня выполнения. Как правило, одна и та же служба нужна на нескольких уровнях. Поэтому не имеет смысла эту службу при переходе с одного уровня выполнения на другой останавливать и тут же запускать. В Linux для этой цели используются специальные флаги.
   В качестве флагов служат файлы в каталоге /var/lock/subsys/${subsys} или /var/lock/subsys/${subsys}.init, где subsys – имя соответствующей службы. Если файлов нет, то данный процесс считается незапущенным (запуск S-файла имеет смысл), а если есть – запущенным (запуск К-файла имеет смысл). Так же для программы linuxconf создается специальный флаг /var/run/rimlevel.dir, из которого можно узнать текущий уровень выполнения системы.
   Для управления набором доступных служб в текущем уровне выполнения можно использовать программу конфигурирования linuxconf, программу ntsysv (рис. 6.1), /usr/sbin/setup или графическую программу Control-panel (рис. 6.2).
   Рис. 6.1. Программа ntsysv
 
   Рис. 6.2. Программа Control-panel
 
   Можно сконфигурировать набор доступных сервисов и вручную. Для запрета старта какого-либо сервиса достаточно просто удалить соответствующую ссылку (SXXlalala) из необходимого каталога /rcX.d, а для разрешения – создать соответствующую ссылку в нужном каталоге /rcX.d. Однако не следует забывать помимо стартовой ссылки создавать стоповую, иначе возможны проблемы, когда система некорректно завершит функционирование сервиса, для которого забыли создать стоповую ссылку. А как же корректно установить порядковый номер у соответствующей ссылки? Конечно, можно чисто эмпирически подобрать номер, исходя из функций, выполняемых сервисом. Но давайте заглянем в любой файл в каталоге /etc/rc.d/init.d/, к примеру, в файл anacron:
 
   #!/bin/sh
   # Startup script for anacron
   # chkconfig: 2345 95 05
   # description: Run cron jobs that were left out due to downtime
 
   # Source function library.
   . /etc/rc.d/init.d/functions
   [-f /usr/sbin/anacron] || exit 0
   prog="anaсron"
   start () {
   echo -n $"Starting $prog: "
   daemon anacron
   RETVAL=$?
   [$RETVAL – eq 0] && touch /var/lock/subsys/anacron
   echo
   return $RETVAL
   }
   stop() {
   if test "x" pidof anacron""!= x; then
   echo -n $"Stopping $prog:»
   killproc anacron
   echo
   fi
   RETVAL=$?
   [$RETVAL – eq 0] && rm -f /var/lock/subsys/anacron
   return $RETVAL
   }
   case "$1" in
   start)
   start
   ;;
   stop)
   stop
   ;;
   status)
   status anacron
   ;;
   restart)
   stop
   start
   ;;
   condrestart)
   if test "x" pidof anacron""!= x; then
   stop
   start
   fi
   ;;
   *)
   echo $"Usage: $0 {start|stop|restart|condrestart|status}"
   exit 1
   esac
   exit 0
   ###################################################################
 
   Обратите внимание на часть заголовка файла:
 
   #!/bin/sh
   # Startup script for anacron
   # chkconfig: 2345 95 05
   # description: Run cron jobs that were left out due to downtime
 
   Помимо указания, какой командной оболочкой необходимо воспользоваться, там есть строчка
 
   # chkconfig: 2345 95 05
 
   Из которой следует, что этот скрипт может использоваться во втором, третьем, четвертом и пятом уровнях выполнения, а цифры 95 и 05 – порядковый номер для стартового (95) и стопового (05) скриптов. Обратите внимание – в сумме эти две цифры составляют 100. Таким образом, достаточно просто добиться того, чтобы порядок останова сервисов был в точности обратный стартовому. Description в данном файле – комментарий, который linuxconf выдает на экран для объяснения роли данного сервиса.
   Если внимательно посмотреть скрипт, то сразу видно, что опций у него больше, чем стандартные start и stop. Имеются еще restart, condrestart и status. Старт, останов и проверка состояния демона выполняются рядом функций типа daemon, killproc, status. Процедуры daemon, killproc, status – определяются в файле /etc/rc.d/init.d/functions (а тот пользуется определениями из /etc/sysconfig/init). Они предназначены для старта, останова и проверки статуса демона (сервиса).
   Функция daemon обеспечивает старт сервиса. При этом можно учесть особенности поведения демона. Перед стартом сервиса всегда делается проверка наличия его в системе. Так как появление дампа (дамп – моментальный снимок памяти, используемой зависшей программой на момент ее краха) памяти сервиса может привести к проблемам с безопасностью, то все демоны запускаются в режиме без создания дампа памяти.
   Останов сервиса выполняется процедурой killproc. Данная функция предполагает один аргумент в виде имени демона и, при необходимости, еще один для указания сигнала, который будет послан сервису. Сигнал sigkill часто может быть нежелателен для останова сервиса, поэтому, если сигнал назначен, то используется только он, в противном случае сперва посылается sigterm и, если данный сигнал не произвел на процесс впечатления, то посылается сигнал sigkill. В последнюю очередь скрипт подчищает различные блокировочные файлы.
   Функция status позволяет проверить текущее состояние сервиса. Если сервис нормально функционирует, то просто сообщается об этом факте. В противном случае осуществляется проверка на наличие флаговых файлов (/var/run/noflCHCTeMa.pid и /var/lock/subsys/подсистема), которые должны блокировать повторный запуск сервиса. Таким образом, несложно самому создать скрипт для управления сервисом.
rc.local
   Файл /etc/rc.d/rc.local выполняется после скрипта rc. В исто рекомендуется помещать дополнительные сервисы или персональные настройки. Однако обычный пользователь редко использует эту возможность.

www.osp.ru/os/2001/02/073.htm – и. Облаков. Восход солнца вручную.
   • /usr/src/Linux-2.4.3/Documentation/ – много информации, так или иначе связанной с ядром операционной системы, драйверами, файловыми системами и т. п.
   • Справочные страницы man – init, inittab, teiinit, initscript.
   • Соответствующие HOWTO (см. гл. 13):
   – Ethernet-HOWTO – различные тонкости настройки сетевых адаптеров;
   – The Linux BootPromt HOWTO – справочник по аргументам начальной загрузки, передаваемым ядру Linux во время загрузки системы;
   – The Linux Bootdisk HOWTO – создание загрузочной дискеты.

Глава 7
Безопасная работа в Linux

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

Основные положения

Зачем вам безопасность?

   Безопасность компьютеров и компьютерных сетей сейчас, в связи с повсеместным распространением Интернета и электронной коммерции, все больше выходит на первый план. В любой серьезной организации при приеме на работу системного администратора одним из основных требований к нему является умение организовать безопасность системы и сетей.
   Даже если вы устанавливаете один-единственный сервер, не исключена возможность, что кто-то попробует взломать его просто от скуки. Поэтому особо нельзя надеяться, что на ваш сервер или Web-страницу никто не покусится.

Надежность защиты системы

   Следует помнить: «все, что один человек построил, другой всегда сможет поломать». Надежность защиты, в идеале, должна соответствовать следующему правилу: затраты взломщика на преодоление защиты должны существенно превышать стоимость поврежденных или украденных данных. Это, конечно, не означает, что домашнюю систему, на которой ничего важного нет, защищать не надо. Просто необходимо соразмерять затраченные усилия – для домашнего пользователя их надо потратить гораздо меньше, чем для банковской сети.
   У защиты есть одна особенность – чем более безопасна система, тем больше усилий необходимо затрачивать на поддержание ее в рабочем состоянии, и тем более навязчивой становится сама система безопасности. Всегда необходимо соблюдать золотую середину между безопасностью системы и неудобствами пользователей, связанными с режимом безопасности.
   Защита не бывает идеальной. Вы должны представлять, сколько времени и усилий необходимо потратить на восстановление или воссоздание данных при их потере.

Определение приоритетов защиты

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

Политика безопасности

   Если ваша задача – администрирование средней или большой сети, необходимо разработать документ, который называется «Политика безопасности» и определяет права и обязанности пользователей, меры по защите системы и действия, применяемые в случае нарушения безопасности системы.
   Этот документ должен быть утвержден руководством фирмы, и с ним следует ознакомить каждого сотрудника, причем желательно под расписку. Чем проще и понятнее составлен документ, тем больше вероятность, что его поймут и будут им руководствоваться. Главное правило, которое должно быть четко зафиксировано: "То, что не разрешено – запрещено".

Основные направления защиты

   Прежде чем что-то защищать, необходимо знать, что, от кого и от чего.
   • Физическая защита:
   – защита от физического проникновения в компьютер;
   – защита от аппаратных сбоев.
   • Защита рабочей станции (локальная безопасность).
   • Защита сервера:
   – защита от пользователей;
   – защита от внешнего мира.
   • Защита сети:
   – защита от проникновения извне;
   – защита от взломов изнутри.

Физическая безопасность

   Первое, что следует сделать, это позаботиться о физической безопасности системы. Нет никакого прока от программной защиты, если из сервера можно просто изъять жесткий диск и переписать данные. Необходимо выяснить, кто имеет прямой физический доступ к системе, а также можно (и нужно ли) защитить систему от их потенциально вредного воздействия.
   Степень физической безопасности напрямую зависит от ситуации и финансовых возможностей. Домашнему пользователю, скорее всего, не нужна сильная физическая защита. Офисный компьютер может понадобиться обезопасить на время отсутствия пользователя. А если это сервер, то его физическая защищенность должна быть максимальна, в идеальном случае он должен находиться в бронированной комнате без окон, с сейфовым замком на стальной двери.

Замки

   Практически любой серверный корпус имеет специальный замок или отверстия для установки навесного замка. Как правило, наружные отсеки для винчестеров тоже имеют замки.
   Для корпуса обычного компьютера дело обстоит похуже. Сейчас редко встретишь компьютерный корпус, у которого есть замок блокировки клавиатуры, хотя еще лет пять назад он был обязательным элементом любого компьютерного корпуса. Но даже при наличии такого замка эта защита является крайне слабой – как правило, к замку подходит любой ключ от аналогичных корпусов, а с помощью обыкновенной канцелярской скрепки можно открыть его за несколько секунд. Тем не менее, для неопытного взломщика замок является непреодолимой преградой.
   Хуже дело обстоит с ноутбуками – его можно просто взять со стола. Но любой современный ноутбук имеет специальное отверстие, куда крепится замок, похожий на велосипедный.

Охрана жесткого диска

   Если на жестком диске хранится информация, которая ни в коем случае не должна попасть в чужие руки, и лучше ее уничтожить, чем допустить пропажу, то для этого необходимо предпринять дополнительные меры. Если у вас небольшой сервер или рабочая станция, имеет смысл жесткий диск, на котором хранится информация, установить в специальную съемную корзину, так называемый Rack Mount. Это позволит по окончании работы извлекать жесткий диск из компьютера и прятать в сейф. Для больших серверов такое сделать несколько затруднительно, но иногда имеет смысл. В случае, если к вам заявляются гости, которым «невозможно отказать», можно практически моментально извлечь жесткий диск и уничтожить его, разбив об пол. (Автору известна фирма, возле сервера которой стоит охранник, в случае попытки прорыва в серверную обязанный выстрелом из пистолета уничтожить жесткие дискию.)

BIOS

   BIOS является самым первым звеном, от которого зависят настройки компьютера, и попытка проникновения в BIOS будет произведена взломщиком в 99 % случаев. Практически любая BIOS имеет возможность установить два типа паролей – на вход в систему и на вход в BIOS. Это не дает стопроцентной защиты (установки BIOS могут быть обнулены, если кто-то имеет доступ вовнутрь корпуса), но может быть хорошим сдерживающим фактором. Однако следует помнить, что в случае установки загрузочного пароля на сервере система не сможет загрузиться без вмешательства администратора. (Очень неприятно, когда в три часа ночи вас выдергивают из постели для того, чтобы вы ввели пароль в сервер.)

Загрузочные устройства

   Если не установлен пароль в BIOS, велика вероятность, что взломщик попытается загрузить систему с помощью системной дискеты, CD-ROM-диска, Zip-дисковода и тому подобных съемных устройств. Это дает ему полный доступ к жестким дискам компьютера. Поэтому, помимо установки пароля на вход в BIOS, необходимо запретить в BIOS загрузку со всех устройств, кроме жесткого диска. Так же рекомендуется либо отключить в BIOS сервера дисководы съемных устройств, либо (при наличии такой возможности) физически отключить флоппи-, Zip– и тому подобные дисководы и CD-ROM, а иногда даже вообще не устанавливать их в сервер.

Безопасность загрузчика операционной системы

   Загрузчики Linux также имеют возможность установки стартового пароля. Это позволяет предотвратить загрузку операционной системы без ввода пароля.

Программы xlock и vlock

   Если вы отходите на какое-то время от своего рабочего компьютера и не хотите выключать его, используйте программы xlock и vlock. Эти программы заблокируют доступ к системе, причем как визуально (черный экран или какая-то надпись типа «Консоль заблокирована»), так и с помощью клавиатуры:
   • xlock предназначена для X Window. Она «запирает» дисплей и для продолжения работы запрашивает пароль;
   • vlock – консольная программа, которая позволяет «запереть» часть или все виртуальные консоли системы.
   Конечно, «запирание» консоли не позволит нанести прямой вред работе, однако не помешает перезагрузить машину (кнопку Reset или отключение питания еще никто не отменял).

Определение нарушений физической безопасности

   При подозрении на попытку нарушения физической безопасности системы первым делом проверьте, что сразу бросается в глаза – наличие физических повреждений. Второе – определите, была ли произведена перезагрузка системы. Операционная система Linux очень надежна, и непроизвольные перезагрузки по ее вине исключены. Если операционная система непроизвольно перезагружается, причина, скорее всего, в аппаратной части. Известны случаи, когда установленный на столе компьютер перезагружался, если кто-то задевал стол. Причиной была микротрещина в материнской плате. Во всех остальных случаях перезагрузка системы производится администратором (пользователем) или по команде источника бесперебойного питания. Если компьютер перезагружен без вас – это проблема, требующая изучения.
   Вот часть того, что следует проверить:
   • короткие или незаконченные системные журналы;
   • системные журналы, которые содержат неверные права доступа или права собственности;
   • системные журналы, в которых присутствуют записи перегрузки или перезапуска сервисов;
   • отсутствие системных журналов;
   • подключение пользователя с нетипичного для него места или использование программы su пользователем, который никогда этого не делал.
   Так же крайне желательно вести журнал перезагрузки системы с указанием даты, времени и причины перезагрузки. Время, прошедшее с момента перезагрузки, можно узнать из системного журнала или командой uptime.

Локальная безопасность

   Сразу после установки системы необходимо позаботиться о защите от локальных пользователей. Достаточно много методов взлома основано на различных недочетах или ошибках программного обеспечения, доступного только им. Локальный пользователь и сам по себе потенциально опасен. Предоставьте ему чуть больше прав, чем следует и одной простой командой rm он может снести половину операционной системы.

Регистрация новых пользователей