Рассел Сейдж. Приемы профессиональной работы в unix перевод "Tricks of the unix masters" by Russel G
Вид материала | Документы |
- Лекция 10. Файловые системы Unix, 116.79kb.
- Unix-подобные операционные системы, характеристики, особенности, разновидности, 40.63kb.
- Методические материалы, 3002.45kb.
- Курс для опытных администраторов unix, 67.69kb.
- Министерство Образования Российской Федерации. Юургу курсовая, 383.18kb.
- Программа курса «unix», 18.71kb.
- Лабораторная работа №1. Командный интерпретатор, 418.36kb.
- The design of the unix operating system by Maurice, 9215.6kb.
- Разработка автоматизированной системы мониторинга аппаратного и программного обеспечения, 20.06kb.
- Лекція 6 "Інформатика та комп'ютерна техніка" Тема Сервісні та прикладні програми Види, 55.04kb.
раммистом, то вас может удивить, зачем вам становиться на точку зре-
ния системного администратора и овладевать его основными
инструментами работы. На это имеется две серьезные причины: знание и
необходимость.
Системное администрирование требует близкого знакомства с тем,
где и что находится в системе, и понимания взаимосвязи конкретного
процесса с системой в целом. Программисты стремятся нахвататься све-
дений о чудесах и результатах таинственных команд и о всяческих хит-
ростях, которые они считают полезными, но зачастую они не хотят тра-
тить время на знакомство с системой 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.
Бывает, что изощренный нарушитель скрывает даты модификации фай-
ла, чтобы никто не смог его обнаружить по этому признаку. Единствен-
ный способ зафиксировать такое вмешательство - иметь КОНТРОЛЬНУЮ СУМ-
МУ, т.е. запись с суммой (количеством байтов) всех важных файлов и
хранить ее в отдельном месте или в закодированном виде. Путем перио-
дической сверки старых сумм с новыми, можно обнаружить измененные