Спецвыпуск журнала «Хакер» 47, октябрь 2004 г.
Шрифт:
Так почему же именно Linux притягивает хакеров всего мира? Объяснить это лучше всего, сравнивая эту ОС с другими системами. Начнем, пожалуй, с самой близкой ОС – FreeBSD. Как ты знаешь, это тоже свободно распространяемая, POSIX-совместимая, доступная в исходных кодах система, то есть она имеет все основные преимущества Linux. И, кроме этого, у нее есть большой плюс: она разрабатывалась не с начала девяностых, а гораздо раньше, при этом очень неглупыми людьми. Кажется, все указывает на явное превосходство FreeBSD. Но есть одно большое но: развивать и дополнять эту BSD-систему могут только избранные разработчики ядра. А значит, далеко не каждый желающий программист может отправить свой участок кода для включения в ОС. С Linux все проще: если ты профи, то твоя работа будет оценена по достоинству и добавлена в ядро, при условии что это действительно полезная наработка.
Решение о выпуске нового релиза Linux принимается исключительно централизованно.
Причем дистрибутив не будет отправлен на реализацию до тех пор, пока множество бета-тестеров по всему миру не заявит
Администраторы все чаще выбирают Linux для своих детищ. И это легко объяснить. Админ получает, во-первых, очень стабильную ОС. Во-вторых, постоянное обновление и совершенствование не только системы, но всего сетевого ПО. Полный контроль над операционной системой привлекает грамотных системщиков, правда, достичь этого удается только в таких дистрибутивах, как Gentoo или LFS, но тотальная власть над системой реальна. Отсутствие всевозможных «закладок» и «меток», абсолютная прозрачность межсетевого взаимодействия позволяет Linux-админам спать спокойно. И все это дополняется огромным количеством документации, как в интернете, так и в бумажном варианте, как на английском, так и на русском языке. Этот список преимуществ Linux над другими *nix-системами можно продолжать довольно долго. Но! Раз есть админы и хакеры, то должны быть атаки и взломы, не так ли? Хотя система очень стабильна и продуманна, иногда можно слышать об удачных взломах Linux-хостов. Кто же виноват в том, что ОС отдается в руки хакера? Попробуем разобраться в этом.
Чаще всего взломы и успешные атаки на Linux можно объяснить либо неграмотностью, либо ленью админа. Грамотно настроенная и вовремя обновляемая система практически неуязвима.
Какие возможны атаки? Сначала поговорим о самой простой. Реализовать взлом несложно, достаточно почаще посещать security-сайты и отслеживать изменения на top-страницах эксплоитов. При обнаружении новой удаленной уязвимости сразу же начинать искать эксплоит, а, пока его еще не разработали, исследовать сервера на предмет этой уязвимости. Конечно, в твоем сетевом анализаторе этой уязвимости еще нет, и поэтому придется поработать головой: провести полное сканирование хоста на предмет выяснения версии сервисов. При обнаружении бажного релиза ожидать свеженького эксплоита и успевать брать root-шелл. Вообще, лучше немного оптимизировать процесс поддержания тебя в курсе всех изменений на security-фронте. Есть два варианта: простой – подписаться на рассылку, сложный – написать скрипт, который будет отслеживать изменения на заданных тобой Web-ресурсах по IT-безопасности, а в случае обновления автоматически скидывать тебе свежачок на мыло или мобильник (для этих целей можно использовать готовый софт, о котором мы неоднократно писали). Атака на незнание системщика гораздо сложнее. Хакер должен знать Linux и его сервисы гораздо лучше администратора хоста, он должен понимать всю модель взаимодействия сетевых компонентов между собой и с системой. Профессиональные хакеры работают именно так: изучают ОС в совершенстве, атакуют сервера редко, но метко. Успех определяется соотношением твоих IT-знаний и IT-знаний администратора. Собственно, больше принципиальных способов атаки нет. Все остальные варианты представляют собой модификации этих двух.
Самое первое, что следует сделать при удачном входе, – это проверить, нет ли сейчас админа в системе. Команда 'who' позволяет узнать всех пользователей, работающих с системой в данный момент. Таким образом, если root уже зарегистрирован, то хакеру лучше уйти. Действовать дальше нужно только в том случае, если root на своем рабочем месте не обнаружен ;-). Следующий этап – разобраться с системой логирования и регистрации пользователей сервера. Я знаю администраторов, которые так опасаются за свой сервер, что создали скрипт, который при входе root в систему сразу отправляет администратору сообщение на мобильник, в котором содержится время входа, IP-адрес, с которого произошла регистрация, и номер виртуальной консоли, на которой работает сейчас суперюзер. Кроме этого, если не будет подтверждена регистрация, то сеанс завершится через определенный промежуток времени! Реализовано это с помощью следующего скрипта: при входе он создает определенный файл, и, если он не будет удален через некоторое время, программа считает, что произошел взлом сервера и скидывает псевдоадмина с терминала, отправляет предупреждение о критической ситуации настоящему администратору на мобильник. Поэтому сразу при входе нужно внимательно изучить содержание домашнего каталога и просмотреть все файлы, отвечающие за регистрацию. Их имена зависят от оболочки-интерпретатора. Затем – изучение лог-файлов и их очистка. Это первые шаги. Я не случайно так подробно описал одну из ловушек администратора – атакующий должен быть готов ко всему и очень хорошо знать атакуемую ОС. Без этого любой админ сможет рано или поздно вычислить и наказать взломщика. При любых действиях в системе следует анализировать результат предельно внимательно.
Даже невинное создание папки в каталоге /tmp может выдать атакующего с потрохами (это очень просто реализуется встроенными средствами аудита ФС).
Поэтому если ты создаешь рабочий каталог для себя, то после окончания сразу удаляй и чисти логи всех операций. Самое главное – это научиться думать, как администратор хоста, причем как грамотный администратор. Если взломщик недооценивает противника, рано или поздно он будет пойман. Поэтому бди!
Никогда не следует менять пароль на учетную запись root. Это самое большое желание малограмотных скрипткидисов. Думая, что, сменив рут-пароль, они заблокируют доступ к серверу законного администратора, они очень глубоко ошибаются. Если админ не сможет с утра войти в систему – Linux не захочет опознать его пароль, то возможны два варианта. Если опыта и знаний немного, то он посчитает, что просто забыл ключ. Если же админ – матерый малый, то он сразу же узреет во всем атаку и будет восстанавливать пароль, параллельно усилив защиту до такого уровня, что любой скрипткиди скорее прохачит общественный сортир, чем его хост ;-). Кстати, процедура восстановления пароля предельно проста: загружаемся с CD или дискеты, монтируем разделы сервера, смотрим /etc/passwd, удаляем запись пароля root, отмонтируем винт, ребутимся в Linux, логинимся с пустым пассом. Таким образом, 10-минутная остановка сервера стоит тебе бессонной ночи и утраты этого сервака – при восстановлении пароля защита будет усилена.
Не рекомендую добавлять пользователей на взломанную систему. Просто очень многие администраторы опасаются за безопасность своего хоста и ставят ловушку на команду «adduser», которая отправляет сообщение на почту всякий раз при создании аккаунта пользователя, да и это еще не все. Некоторые сервера имеют сильную связь с остальными машинами сети: например, хакер взломал Dial-in сервер провайдера, добавил своего пользователя, прописал скрипты, выдержал паузу и захотел попользоваться плодами своего труда. Но не тут-то было: сервер его пускает, но при попытке запуска сессии PPP процесс умирает по тайм-ауту. Причина проста до безобразия – машина, принимающая звонки, не имела на своем хосте базы пользователей! Весь биллинг был на отдельном сервере, который и записывал в логи подозрительные запросы на несуществующего пользователя. После нескольких таких ошибок админ получил письмо с вырезкой лог-файла. И, как следствие, хакер лишился доступа на Dial-in. Поэтому не повторяй чужих ошибок и никогда не добавляй пользователя, не разобравшись, как устроен весь механизм взаимодействия серверов. Не ставь руткитов, не изучив сервер полностью. Это грозит полной утратой аккаунта – ночные проверки безопасности, постоянные лог-анализы, сравнение хеш-функций у основных утилит гарантированно выдадут действия взломщика. Чтобы этого не случилось, изучай систему как можно тщательней. Кроме этого, категорически запрещается убивать процессы сервера. Даже такой вредный и опасный для хакера демон, как syslog, должен крутиться в системе, когда он что-то там делает. Причина банальна – очень часто при остановке критических процессов они перезапускаются, а, если падают и во второй раз, – отправляют сообщение админу на мобильник, в котором приведена информация о том, что случилось, кто и откуда работает в системе, что делает и т.д. Как нельзя убивать чужие сервисы, так нельзя и запускать своих демонов на сервере. Точнее, это делать можно и нужно, но только после установки соответствующих руткитов, которые смогут скрыть активность левых приложений на хосте.
Если взломщик надеется подольше удержать за собой максимальные права на Linux-сервере, то он должен постараться выполнить еще несколько действий. Самое главное – это изучить всю систему и найти «закладки»: программы и скрипты, установленные администратором сервера, предназначенные для поиска и ликвидации взломов. Наиболее популярны для Linux-серверов на сегодня скрипт, который следит за подтверждением входа (следует искать в /root файл конфигурации оболочки пользователя) и скрипты проверки хеш-суммы всех утилит системы. Чаще всего они запускаются с помощью cron от root, поэтому следует внимательно изучать вывод команды crontab. Если не будет найдено никаких подозрительных записей для cron, то взломщику чаще всего необходимо изучить /var/log. Именно этот каталог содержит результаты всех проверок, если они существуют, и в нем легко можно обнаружить отчеты ловушек админа. Просмотрев журнал, следует подумать об установке руткита, если, конечно, на хосте не установлена программа-ревизор. Ну а после успешного инсталла все становится проще: патченые утилиты будут прикрывать тебя и твои процессы в нужный момент, а админ будет спать спокойно, не зная, что его сервера находятся под чужой властью :-). Если же администратор попался грамотный и установил все возможные ловушки-анализаторы, то тут необходимо действовать крайне осторожно.
Учти, что даже банальный запуск mc вызовет изменения времени доступа на некоторых файлах.
Чтобы удержаться на таком защищенном хосте, необходимо быть предельно внимательным, забыть про всякие утилиты-помощники и всегда чистить логи своих действий. Причем обязательно нужно следить за программой-ревизором, то есть перед ее запуском на сервере не должно быть никаких следов действий хакера, как и самого взломщика не должно быть в системе :-). Общеизвестное правило – чем дольше изучаешь систему перед установкой каких-либо своих прог, тем больше шансов воспользоваться этими софтинами в будущем. Так складывается ситуация, что хакер встает на борьбу не только со знаниями админа, но и со всевозможными ловушками, чаще всего написанными крупными IT-специалистами.