Рассел Сейдж. Приемы профессиональной работы в unix перевод "Tricks of the unix masters" by Russel G

Вид материалаДокументы

Содержание


Некоторые наблюдения посвященного в администрирование
Административные обязанности
Поддержка работоспособности системы
Улучшение системных возможностей
Помощь пользователям
Безопасность: нужен сторожевой пес
Защита от запрещенных входов в систему, файлов
Входы в систему
Файлы и программы
Подобный материал:
1   ...   35   36   37   38   39   40   41   42   ...   45

раммистом, то вас может удивить, зачем вам становиться на точку зре-

ния системного администратора и овладевать его основными

инструментами работы. На это имеется две серьезные причины: знание и

необходимость.

Системное администрирование требует близкого знакомства с тем,

где и что находится в системе, и понимания взаимосвязи конкретного

процесса с системой в целом. Программисты стремятся нахвататься све-

дений о чудесах и результатах таинственных команд и о всяческих хит-

ростях, которые они считают полезными, но зачастую они не хотят тра-

тить время на знакомство с системой UNIX в целом. Мы бы хотели

сагитировать вас на более систематическое изучение системы UNIX с той

целью, чтобы вы могли открыть для себя новые кладовые знаний. Вот по-

чему на протяжении данной книги мы создавали инструментальные средс-

тва, которые не только делают полезные вещи, но и помогают вам изу-

чать саму систему.

Необходимость знать администрирование становится ощутимой, когда

вы обнаруживаете, что вам вдруг задали работу системного администра-

тора или администратор ушел в отпуск, что пользователи выстроились

возле ВАШЕГО стола в ожидании помощи, поскольку вас считают признан-

ным авторитетом. Другой причиной возникновения необходимости может

быть то, что вы стали безраздельным хозяином вашей собственной микро-

ЭВМ с системой UNIX и хотите все установить и поддерживать по своему

вкусу. Взгляните на такую необходимость администрирования как на воз-

можность накопить обширные и доскональные знания о UNIX, которые мо-

гут сослужить вам добрую службу в вашей будничной работе с компьюте-

ром.

Быть мастером UNIX - дело чести и технической грамотности. Пыта-

ясь удовлетворить требованиям необходимости, мастера UNIX учатся пос-

певать за потоком необходимых им знаний. Мастера UNIX не только хоро-

шо играют, но и просчитывают игру на один ход вперед.


НЕКОТОРЫЕ НАБЛЮДЕНИЯ ПОСВЯЩЕННОГО В АДМИНИСТРИРОВАНИЕ


-----------------------------------------------------


Положение системного администратора таково, что требует более

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

программисту, и в связи с этим большей ответственности. Способность

всех, кто не сильно знает UNIX, выполнить свою работу, зависит от

способности администратора поддерживать работоспособность системы,

предвидя и разрешая проблемы до того, как они станут опасными.

Одним из наиболее важных вопросов администрирования является бе-

зопасность. Сведения о безопасности, представленные здесь, были на-

коплены в результате работы с администраторами, работы в качестве ад-

министратора и иногда необходимости работы при наличии несогласованно

действующих администраторов.

Помимо безопасности, рассмотрены некоторые из более общих вопро-

сов деятельности администратора. Немногие руководства и книги учат,

как быть администратором. Эти навыки в основном приходят с опытом.

Ваша конфигурация системы, потребности пользователей и приоритеты все

вместе оказывают влияние на то, как вы справляетесь с административ-

ными задачами. Мы поможем вам показом инструментальных средств и трю-

ков, рассказом историй о ловушках и капканах и рассмотрением различ-

ных подходов, работающих в реальной практике.


АДМИНИСТРАТИВНЫЕ ОБЯЗАННОСТИ


----------------------------


В большинстве больших компьютерных систем администраторы весьма

уважаемые люди. Они отвечают за поддержание работоспособности вычис-

лительной системы 24 часа в сутки, наращивание ее в случае необходи-

мости, помощь пользователям в разрешении их проблем, патрулирование и

обеспечение безопасности. Администрирование - это фактически несколь-

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

этих областей, а затем предложить помощь и инструментальные средства

для овладения администрированием.


ПОДДЕРЖКА РАБОТОСПОСОБНОСТИ СИСТЕМЫ


Поддержка работоспособности системы - приоритет номер один. Это

означает нечто большее, чем просто избегать сокрушительных системных

крахов, хотя важность их недопущения очевидна. Обеспечение работоспо-

собности системы требует также профилактических мер. Одно из лучших

занятий для вас после того, как вы завершите первое прочтение данной

книги,- вернуться в ее начало и рассмотреть изложенные в ней идеи и

инструментальные средства с точки зрения администратора. Например,

рассмотрение того, как правильно реализовать резервное копирование

файлов и сборку мусора (см. главу 3), может помочь предотвратить сис-

темные крахи, вызванные условиями переполнения. Если же крах все-таки

произойдет, то такое рассмотрение позволит вам восстановить все дан-

ные настолько быстро и полно, насколько это возможно.


УЛУЧШЕНИЕ СИСТЕМНЫХ ВОЗМОЖНОСТЕЙ


По мере того, как все больше и больше людей эксплуатируют систе-

му, требуется все больше ресурсов, но вы можете также найти способы

использования имеющихся ресурсов с большей эффективностью. Разрабаты-

вая способы повышения производительности системы, вы найдете для себя

много полезного в инструментальных средствах, представленных в главе

3. В системе UNIX редко хватает принтеров, дисковых устройств, после-

довательных портов, сетевого оборудования и т.п., но более эффектив-

ное применение может помочь решить те же задачи без добавления новых

ресурсов.

По всей видимости, наиболее важным ресурсом является время цент-

рального процессора. Посадите тридцать пользователей в системе, расс-

читанной на двадцати четырех - и вы сразу почувствуете нехватку про-

цессорного времени. В работу администратора входит поддержка текущих

ресурсов, а также планирование роста системы на будущее. Поэтому тре-

буется, чтобы вы знали типичные раскладки использования вашей систе-

мы, знали, где могут возникнуть "узкие места", как эффективно распре-

делить имеющиеся ресурсы и какие способы наращивания системы могут

быть наиболее эффективными по стоимости. Некоторую полезную информа-

цию можно извлечь путем "статического" инспектирования файловой сис-

темы с помощью средств, представленных в главе 2. Более динамичную

картину эксплуатации системы вы можете получить, применяя команду ps,

чтобы увидеть, какие процессы активны в настоящее время, и применяя

команду w (в системе Berkeley), которая выдает статистику загрузки

системы и организации очередей.


ПОМОЩЬ ПОЛЬЗОВАТЕЛЯМ


Пользователи системы - несомненно, имеют высокий приоритет. Все

в системе должно быть организовано так, чтобы они могли выполнить

свою работу. Администратор должен следить за тем, чтобы все разумные

(и некоторые неразумные) запросы пользователей удовлетворялись.

В обслуживание потребностей пользователей может входить монтиро-

вание лент и других файловых систем, резервное копирование файлов,

отладка коммуникационных линий и заготовка персональных записей для

пользователей в привилегированных файлах типа crontab и inittab. (Эти

два файла дают пользователям больше гибкости в организации их среды и

планировании задач, но при этом ощутимы также для прямого пользова-

тельского доступа.) Это может показаться легким делом, но требует

много времени.


БЕЗОПАСНОСТЬ: НУЖЕН СТОРОЖЕВОЙ ПЕС


Администратор ведает всеми вопросами безопасности. Обычно он

единственный, кто занимается этой работой. Пользователи не обеспечи-

вают безопасность, потому что они не умеют или не знают, как это сде-

лать. Нарушители безопасности могут атаковать систему многими спосо-

бами. Они могут занять системные ресурсы, заполняя таблицу процессов

или таблицу открытых файлов и распределяя для себя все свободное дис-

ковое пространство и все свободные индексные дескрипторы файлов. Они

могут перепутаться с другими пользователями системы или поменять сис-

темное время. Они могут повредить файлы данных или исполняемые модули

и даже подделать почту. Но при вашей организации системы они чаще

всего становятся просто "пользователями-хулиганами". Позже мы расс-

мотрим более серьезные вещи, чем системное хулиганство - тех пользо-

вателей, кто может несанкционированно воспользоваться правами супер-

пользователя.

Наилучший подход к проблемам безопасности - осознать, что дейс-

твительно нуждается в защите, а не пытаться стать суперсыщиком. Вы

должны особенно заботиться о нуждах системных программистов и других

опытных авторитетов в вашей системе. В идеале администратор должен

работать ВМЕСТЕ, а не против признанных авторитетов и поддерживать с

ними хорошие деловые контакты. Не у всех нарушителей одинаковые моти-

вы. Например, кто-то из авторитетов может захотеть получить доступ к

правам суперпользователя для того, чтобы самостоятельно делать неко-

торую работу, а не ждать, когда ее сделаете вы. Кто-то другой может

быть обижен на кого-то или вообще на весь мир и стремится отомстить

путем разрушения файлов. Каждая ситуация требует индивидуальной оцен-

ки. Напомним, что разделяющая линия между администраторами и систем-

ными авторитетами зачастую неопределенная и непостоянная. Безопас-

ность иногда превращается в игру, в которой определенные пользователи

пытаются разглядеть, чего они могут избежать, а администраторы пыта-

ются сохранить контроль над системой.

В работе сторожевого пса задействовано пять функций:

1. Защита от неразрешенных входов в систему, файлов, программ

и команд su.

2. Сохранение конфиденциальности определенных данных.

3. Наблюдение за использованием модемов.

4. Предотвращение неразрешенных пересылок файлов.

5. Сведение к минимуму возможностей взлома.

Здесь много работы! Система UNIX так обширна, и файлы могут

скрываться в таком большом количестве мест, что один лишь поиск са-

мозванцев занимает почти все время. Это требует от администратора не

столько тяжелой, сколько изобретательной работы. Для того чтобы обес-

печить себе шансы на победу в этой борьбе, вы должны сделать так,

чтобы система помогала себя защищать. Несколько позднее в этой главе

мы предложим инструментальные средства access и suw, которые помогают

вам защищаться от запрещенных входов в систему, и командный файл

chkset, имеющий дело с защитой конфиденциальных файлов. Мы также

предлагаем более детальный взгляд на конкретные проблемы безопаснос-

ти.


ЗАЩИТА ОТ ЗАПРЕЩЕННЫХ ВХОДОВ В СИСТЕМУ, ФАЙЛОВ,


ПРОГРАММ И КОМАНД su


Имеется много способов получения несанкциониованных привилегий в

системе UNIX. Самый простой способ - иметь корневой (суперпользова-

тельский) интерпретатор shell. Это такой shell, который запускается

как особо привилегированный процесс, имеющий возможность читать, уда-

лять или модифицировать ЛЮБОЙ файл в системе независимо от того, ка-

кие права доступа установлены для этого файла его владельцем. Корне-

вой shell можно заполучить, узнав корневой пароль у неосторожного

администратора или при помощи других средств, рассматриваемых ниже.

Несанкционированный пользователь, имея доступ к правам супер-

пользователя, может подготовить "потайные двери", обеспечивающие

дальнейший запрещенный доступ. Они позволяют нарушителю запускать

shell с корневыми привилегиями. Более подробно мы рассмотрим их позд-

нее.

Потайные двери могут выступать в различном обличье. Они могут

быть исполняемыми модулями, латками в системных утилитах или латками

в системных файлах. Администратор должен вести постоянное наблюдение

за изменениями в системе и уметь противодействовать всяческим вмеша-

тельствам. Ниже мы рассмотрим некоторые инструментальные средства и

приемы, помогающие вам обнаруживать такое проникновение.


ВХОДЫ В СИСТЕМУ


Начнем с несанкционированных входов в систему. Это может прои-

зойти многими способами. Бывает, что нарушитель добавляет свое собс-

твенное регистрационное имя в парольный файл и помещает туда свой па-

роль. Если администратор не знаком с парольным файлом или давно туда

не заглядывал, то такую несанкционированную запись можно проглядеть.

Другой метод несанкционированного входа в систему заключается в

том, что кто-то может завладеть всеми паролями, вставляя в программу

login "латку" с текстом, направлящим все введенные пользователями па-

роли в потайной файл. Ниже мы рассмотрим некоторые типы таких "ла-

ток".

Конечно, такая изысканная работа зачастую совсем не обязательна.

Как известно, люди оставляют свои пароли написанными на листках бума-

ги в незапертых ящиках стола. Для некоторых верхом секретности явля-

ется применение комбинации первого и последнего имени в качестве па-

роля. Однако если уж нарушитель знает много паролей, он может

применять каждый раз различные регистрационные имена, чтобы не попа-

даться на опасном имени.

Пробить систему защиты UNIX можно с помощью "исполняемых регист-

рационных имен". Это имена, которые запускают программу, а не просто

предоставляют вам shell, что является обычным способом начала сеанса

работы пользователя в системе. Это может выглядеть примерно так:


date::100:50:Print the date:/bin:/bin/date

who::101:50:Print all logged on users:/bin:/bin/who


Это может запустить любой, кто имеет доступ к терминалу или мо-

демному порту. Иногда это правильные имена, например date, who или

sync. Хотя для администратора может быть удобным наличие программ,

запускаемых при входе в систему, они часто становятся лазейками, че-

рез которые кто-нибудь может проникнуть в систему и обнаружить много

информации о системе.

Самые крупные лазейки появляются тогда, когда эти регистрацион-

ные имена выполняют командные файлы интерпретатора shell. Как только

нарушитель получает привилегии суперпользователя (даже если они лишь

временные), он может поместить в парольный файл такую запись, которая

в момент входа в систему запускает командный файл интерпретатора

shell (или может изменить имеющуюся запись с командным файлом). Сами

эти командные файлы можно в любой момент изменить так, чтобы они ра-

ботали по заданию несанкционированного пользователя. Например, в па-

рольном файле может быть такая запись:


break::102:50::/:/usr/bin/break


Такая запись позволила бы кому угодно набрать имя "break" в ответ на

регистрационную подсказку, в результате чего выполнился бы файл /usr/

bin/break. Когда break отработает, снова поступает регистрационная

подсказка, и в системе появляется новая лазейка. Почему? Потому что

командный файл break может содержать команды для редактора, которые

отредактировали бы парольный файл и добавили несанкционированные за-

писи. Это становится возможным по той причине, что процесс getty (пе-

чатающий регистрационную подсказку) запускается процессом init, а

владельцем файла init является суперпользователь. Такая привилегия

передается командному файлу, так как он запущен в момент регистрации

в системе, а программам, запускаемым при входе в систему, обычно тре-

буется суперпользовательский доступ для выполнения необходимых иници-

ализаций. В данном случае, однако, он позволяет редактору читать файл

/etc/passwd и писать в него. Таким образом, как только нарушитель

ОДИН РАЗ получает доступ на запись в /etc/passwd (аналогично "дивер-

сионным программам"), он может установить постоянный доступ, часто

даже через несколько точек входа.

И еще. В старых версиях UNIX попадаются некоторые ошибки, пре-

доставляющие суперпользовательские возможности. Например, если в

пользовательской записи парольного файла не указан номер пользова-

тельского идентификатора, то по умолчанию он считается нулевым, т.е.

суперпользовательским. В эту лазейку очень легко проникнуть. Пример

такой записи:


rt::::The Super User:/:/bin/sh


Вот некоторые другие проблемы, за которыми должен следить адми-

нистратор. Если первая строка парольного файла пустая, то пользова-

тель может зарегистрироваться как корневой без пароля. Проверьте так-

же запись "bin" в парольном файле, которая обычно запускает системные

программы. Если запись bin не содержит пароля, как в приведенном выше

примере, кто-то может войти в систему в качестве bin и отредактиро-

вать файл crontab, чтобы применить к парольному файлу команду chmod

(change permission mode, изменение прав доступа) и обеспечить себе

доступ к нему. Пользователь bin может также отредактировать файл /etc

/rc, чтобы сменить парольный файл. Файл rc используется для конфигу-

рирования системы в момент ее старта путем автоматического запуска

ряда программ. Все, что нужно для успешного вторжения,- подождать,

когда администратор перегрузит систему (поскольку именно в этот мо-

мент файл запускается). После перезагрузки нарушитель может войти в

систему как обычный пользователь, отредактировать парольный файл, за-

писать его, а потом в любой момент входить в систему в качестве су-

перпользователя. Это всего лишь несколько способов, которыми можно

добиться несанкционированного входа в систему. К сожалению, каждый

день выдумывают новые способы.


ФАЙЛЫ И ПРОГРАММЫ


Еще одна сфера злоупотреблений связана с несанкционированным

проникновением в файлы и программы. Самый трудный этап для того, кто

хочет взломать защиту системы UNIX,- стать суперпользователем первый

раз, но как только эта цель достигнута какими-либо средствами, файлы-

интервенты можно поместить в любом месте системы. Вторжение может

включать в себя размещение "потайных дверей", латание команды login с

целью овладения паролями, чтение и изменение системных учетных файлов

и т.д. Ниже мы рассмотрим примеры этих и других методов.

Основными файлами, в которые вторгается корневой нарушитель, яв-

ляются /etc/passwd, /etc/*rc*, /usr/lib/crontab, /usr/lib/uucp/L.sys.

Для обнаружения трещин в вашей административной броне можно поискать

файлы, для которых взведен бит разрешения установки пользовательского

идентификатора (что указывается буквой "s" в правах доступа, отобра-

жаемых командой "ls -l"), и файлы, владельцем которых является супер-

пользователь. Назначение бита установки пользовательского идентифика-

тора - разрешить программе иметь временный доступ к более

привилегированному состоянию (например, суперпользовательскому), чем

она имеет в момент своего запуска. На самом деле это очень полезное

свойство системы UNIX, так как оно позволяет управлять доступом ко

многим таким особенностям, к которым вы бы не хотели предоставить не-

посредственный доступ для других пользователей. К сожалению, в эти

программы может кто-нибудь проникнуть, чтобы использовать их времен-

ный корневой статус для вредительства, которое мы уже описывали. Та-

ких файлов имеется конечное число, и все они могут быть проверены.

Рассматриваемый далее командный файл chkset автоматизирует для вас

процесс проверки. Тем не менее, знание того, какие файлы МОГЛИ быть

подвергнуты вмешательству, еще ничего не говорит о том, в какие файлы

ДЕЙСТВИТЕЛЬНО произошло вторжение и как. Тяжелее всего обнаружить за-

латанные системные файлы. Некоторыми из часто латаемых файлов являют-

ся login, su, passwd, ps, crypt и mv.

Бывает, что изощренный нарушитель скрывает даты модификации фай-

ла, чтобы никто не смог его обнаружить по этому признаку. Единствен-

ный способ зафиксировать такое вмешательство - иметь КОНТРОЛЬНУЮ СУМ-

МУ, т.е. запись с суммой (количеством байтов) всех важных файлов и

хранить ее в отдельном месте или в закодированном виде. Путем перио-

дической сверки старых сумм с новыми, можно обнаружить измененные