SYN/ACKЕвгений Зобнин (execbit.ru)00000000\r_NET» Антонов (0000nline.ru)ЛечебноеобрезаниеДЕЛАЕММИНИМАЛИСТИЧНЫЙLINUX-ДИСТРИБУТИВДЛЯ КОНКРЕТНОГОСЕРВЕРАБезопасность и надежностьпрограммной системыобратно пропорциональны еесложности. Но к современнымLinux-дистрибутивам этуформулу применить довольнопроблематично, так как, пообщепринятому мнению, онибезопасны сами по себе. Ксожалению, это не так, но в этойстатье я расскажу и покажу, каксделать Linux действительнопростой и очень устойчивой квзломам системой.INFOХорошей практикойбудет установкаутилиты rkhunter,которая сверяетконтрольныесуммы системы,чтобы выявитьфакт модификациифайлов.Чтобы запутатьвзломщика, можноудалить командыuname и dmesg,переименоватьядро и внестисоответствующиеизменения в /boot/grub/menu.lst, тоесть «обезличить»дистрибутив.1160116 ХАКЕР 02 /157/ 2012
КорпоративныйЛечебное обрезаниеDrupalащиту операционной системы принято строить послойно.Первый, внешний слой отвечает за взаимодействие ОСЗс внешним миром, то есть этот слой составляют сетевыесервисы, которые слушают определенные порты и отвечают назапросы клиентов. К таким сервисам относятся любые демоны,способные принимать сетевые сообщения, например web- и ftpсервера,сервер DNS, почтовый сервер и т. д. Защиту этого слояобеспечивают программисты, которые следят за безопасностьюкода, и администратор, своевременно накладывающий заплаткии правильно конфигурирующий сетевые сервисы. Второй слой,или рубеж обороны, — это сама система, которая не должна позволитьвзломщику добраться до конфиденциальных данных илиизменить важные системные файлы в случае нарушения границпервого слоя.В идеале второму слою защиты нужно уделять не меньшевнимания, чем первому, однако многие сисадмины пренебрегаютэтим, предпочитая полагаться на разработчиков дистрибутива,которые якобы уже позаботились о надежной защите своихпродуктов. Это, конечно же, не так. Современные дистрибутивы— это универсальные операционные системы, рассчитанные наприменение в самых разных областях и на решение различныхзадач. В них входит множество компонентов, которые создаютпотенциальную опасность и при этом вряд ли когда-нибудь тебепонадобятся. Многие дистрибутивы по умолчанию включают всебя средства сборки приложений, различные сетевые и диагностическиеинструменты, каждый из которых может использоватьвзломщик.Самый верный способ обезопасить сервер в этой ситуации —это самому создать дистрибутив, ориентированный на решениеконкретной задачи и лишенный всех тех компонентов, которыевзломщик может использовать для получения сведений о системе,повышения своих прав или установки бэкдора.ЧАСТЬ 1. ПОСТАНОВКА ЗАДАЧИИтак, мы решили сделать свой профильный дистрибутив. Преждевсего мы должны определиться с функциями, которые будетвыполнять ОС. Здесь можно придумать массу вариантов, но япредлагаю остановиться на самом распространенном: дистрибутивдля web-сервера. Наш будущий дистрибутив будет отвечатьза хостинг web-сайтов, причем не статических, а написанных сиспользованием фреймворка Django. Почему не PHP+Djoomla/Drupal? Да потому, что я их не люблю!Таким образом, в дистрибутив должны входить как минимумпять сервисов:1. Сам web-сервер (к черту Apache, nginx — наше все).2. Дистрибутив Python, который будет отвечать за работу Django.3. Django, на котором будут написаны сайты.4. PostgreSQL, которая будет хранить данные.5. SSH для удаленного управления.МНОГИЕ ДИСТРИБУТИВЫ ПОУМОЛЧАНИЮ ВКЛЮЧАЮТВ СЕБЯ СРЕДСТВА СБОРКИПРИЛОЖЕНИЙ, РАЗЛИЧНЫЕИНСТРУМЕНТЫ, КАЖДЫЙИЗ КОТОРЫХ МОЖЕТИСПОЛЬЗОВАТЬ ВЗЛОМЩИКВсе остальные компоненты типичного сервера, такие какFTP-сервер, sendmail, и прочую шелуху можно выкинуть. Чемменьше в системе лишних сервисов, тем меньше шансов у взломщика.ЧАСТЬ 2. ПОДГОТОВКА КАРКАСАСуществует множество способов собрать собственный дистрибутивв домашних условиях, но все они требуют времени и терпения.Мы поступим проще: возьмем обычный Linux-дистрибутиви вырежем из него все лишнее. На роль подопытного хорошоподойдет ArchLinux, один из самых простых и легких дистрибутивов(ты, конечно, можешь выбрать что-нибудь другое вродеSlackware или Gentoo, но сути это не поменяет).Получить базовую версию ArchLinux можно, например, с сервераYandex (прямой линк на x86_64-сборку: http://goo.gl/EZRtQ). Послезагрузки ISO-образ следует скормить виртуальной машине иустановить дистрибутив на виртуальный жесткий диск. Проблемво время установки возникнуть не должно: запускаем инсталляторкомандой /arch/setup, выбираем «Select Source», жмем , выбираем«Prepare hard drive(s)», в ответ на все вопросы жмем ,в последнем окне выбираем ФС ext2. Далее «Select Packages», в ответ на все вопросы. Затем выбираем «Configure system»,жмем , в следующем окне выбираем Done. Выбираем «Installbootloader», выходим из редактора, а когда получаем предложениеизменить /boot/grub.conf, жмем и, наконец, «Exit install».Перезагружаем машину (не забываем отключить ISO-образ).После установки системы и загрузки виртуальной машинызаходим в систему под учетной записью root (пустой пароль) иначинаем разбираться с содержимым системы. Прежде всего необходимообновить все ее пакеты. Но сначала следует настроитьсеть. Нормальные виртуалки имеют встроенный DHCP-сервер,поэтому обычно достаточно только запустить DHCP-клиент:Загрузка ArchLinuxГлавное окно инсталлятораХАКЕР 02 /157/ 2012 1170117