Безопасность WinXP

В любой крупной фирме существует своя локальная сеть. Если в качестве сервера выступает WinXP, позаботиться о защите следует обязательно, иначе можно лишиться сервера в первый же день работы.

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

Непропатченная винда – мечта хакера

К сожалению, в настоящее время нельзя выводить в Сеть свежеустановленную WinXP. Это чревато мгновенным проникновением хакера или вируса msblast. Нашумевшая бага RPC DCOM надолго останется в наших сердцах. Поэтому возьми себе за правило: прежде чем настраивать Сеть на машине, пропатчь систему, предварительно скачав заплатку с сайта Microsoft.

Сама по себе новость о том, что RPC-уязвимость актуальна как для Win2k, так и для WinXP, повергла многих в шок и подмочила репутацию Microsoft. Действительно, можно сделать вывод, что весь серверный код Win2000 был просто перенесен в новый релиз системы. Таким образом, если в багтраке появляется новость о новой бреши в стандартном сервисе Win2000, будь уверен, что бага будет присутствовать в твоей любимой WinXP. И это действительно подтверждается эксплойтом.

RPC DCOM – самая страшная уязвимость, которая присутствует в системе. Это связано не только с тем, что сервис RPC нельзя выключить (теряется нормальная работоспособность). Сейчас в Сети до сих пор гуляет msblast, ищет жертвы, среди которых может быть твоя система. Следует помнить и о других багах, например, уязвимости в сервисе Messenger, приводящей к полному захвату системы. Против бреши существует патч, доступный на сайте Microsoft. И это далеко не единственный пример. Без патчей сейчас никуда, поэтому регулярно читай багтрак и своевременно посещай любимый microsoft.com ;).

Смертельные сервисы

То, что стандартные сервисы гнилые и содержат в себе массу дыр - давно проверенный факт. Но не стоит забывать, что большинство багов админ заносит в систему сам, устанавливая сырой и непроверенный софт. Суди сам. Администратор по какой-либо причине невзлюбил стандартный IIS, променяв его на портированный Apache (конечно же, из нестабильной второй ветки). Спустя некоторое время его систему поимели, оставив на прощание красивый дефейс. Дело даже не в халатности админа - он мог быть ответственным человеком и читать багтрак. Причина в OpenSource-приложениях, которые очень быстро анализируются на баги. В данном случае баг был во второй версии Apache, причем эта брешь могла вовсе не присутствовать в разделе уязвимостей для Win32, так как это линуксовый сервис. Соответственно, не переустановив сервис, админ поплатился своей системой.

Лишний раз задумайся, променивая проверенный стандарт на какой-то новый (пусть даже удобный) сервис. Яркий пример: совсем недавно была найдена бага в Jordan Telnet Server, приводящая к захвату системы. Причем надо отдать должное стандартному сервису Telnet, в котором пока не обнаружили никаких уязвимостей.

Кстати, совсем не обязательно, что в сервисе должна содержаться ошибка, приводящая к фатальным последствиям. В этом можно убедиться, рассмотрев пример сети с общим доменом. Пусть в локальной сети существует файловый сервер на платформе Linux, на котором крутится процесс smbd (аналог ActiveDirectory в винде). Сервер на WinXP включен в домен. Казалось бы, все нормально, и никакого изъяна быть не может. А теперь представь, что файловый сервер был взломан. В наше время это нормальное явление, так как ломают в основном пингвинов. Теперь злоумышленник может добавить в домен новую учетную запись и прописать ее в административных алиасах. В итоге у него будут права админа, если он войдет под новым логином в WinXP. А все потому, что группа Domain Admins (куда хакер внес себя) имеет абсолютные права.

Вообще, портированному софту следует уделить предельное внимание, прежде чем обкатывать на WinXP. Еще один наглядный пример – Perl. Проект был перенесен в Windows без реализации каких-либо изменений. Что имеем? Выполнив любой дырявый cgi-скрипт, хакер может запросто получить заветный шелл (пусть даже не с правами администратора). Чтобы этого не произошло, необходимо патчить и настраивать Perl. То же самое можно сказать и о mysqld, который по умолчанию принимает подключения со всех хостов под root-логином. Последствия: если на сервере установлен какой-либо web-движок, то захватить его через базу становится довольно просто.

Ваши права?

Вспомни заветную мудрость линуксоидов: "Не сиди под рутом". Действительно, управлять системой под привилегированным аккаунтом нежелательно, так как в этом случае злоумышленнику будет легче проникнуть в систему. Почему? Дело в том, что когда администратор использует соответствующий логин для входа, возможен случай простого пароля, который можно подобрать брутфорсом. К тому же, как ты знаешь, в Windows существует стандартный набор шаров, которые имеют вид IPC$, ADMIN$, C$, D$ и прочее.

IPC$ - шара, которая используется для удаленной аутентификации, поэтому трогать ее не имеет смысла. Остальные из соображений безопасности можно удалить. Сделать это проще всего командой net share C$ /delete (по аналогии удаляются все остальные диски). Эту операцию следует проводить каждый раз при запуске сервера, поэтому рекомендую создать bat-файл, выполняющий грязную работу за тебя.

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

Не забывай периодически проверять список пользователей на сервере. Возможно, ты найдешь в нем странноватые имена, типа x4k0r или evil ;). Создать администратора консольной командой очень просто. Делается это следующим образом:

net user evil /add

net group Администраторы evil /add

В чем сила, брат?

Идеальных сервисов не бывает. Даже в самом стабильном продукте при желании можно найти смертельные для системы уязвимости. Поэтому лучшим решением для абсолютной безопасности является установка хорошего брандмауэра или, попросту, фаервола. WinXP снабжена стандартным межсетевым экраном, который, по словам разработчиков, будет работать быстрее любых фаерволов, написанных третьими лицами. Поверим им на слово ;). Для сервера я бы рекомендовал использовать более мощный экран, например Sygate.

Настроить фаервол очень просто: зайди в свойства сетевого соединения, пометь галочкой "использовать фаервол", и жмакай на "параметры". Теперь отметь те сервисы, которые ты хотел бы разрешить. Если нужная служба отсутствует в списке, добавь ее вручную. После этого (при желании) можно разрешить проброс ICMP-пакетов в соответствующей вкладке. И напоследок, рекомендую включить полное логирование данных в отдельный файл. Впоследствии через этот файл можно выявить попытки взлома и вовремя их пресечь.

Для серьезного сервера, простои которого недопустимы, фаервол должен настраиваться на вышестоящем маршрутизаторе, так как мощная атака заDoSит сервак даже с активным фаерволом. Это уже давно проверенный факт.

Локальная безопасность превыше всего

Если админы и выполняют настройку политики удаленной безопасности, то про локальную почему-то забывают. А зря. К примеру, установив фаервол, который закрывает 139 порт и блокирует атаки на RPC, и не пропатчив систему, администратор перестает волноваться за WinXP. Однако любой злоумышленник с помощью обычного эксплойта KAHT2 может поиметь права администратора. Поэтому на уровне локальной политики патчи следует устанавливать обязательно.

Затем следует уделить особое внимание учетным записям. А именно, переименовать логин "администратор" во что-нибудь необычное, например, root :). Это нужно для того, чтобы запутать вероятного противника, который вовсю сканирует твою систему. Также обязательно отруби аккаунт гостя, так как это единственная запись, под которой можно проникнуть в систему без авторизации.

Удели больше внимания папкам, к которым доступ посторонних лиц нежелателен. К примеру, за компьютером могут работать три непривилегированных лица. При этом на диске C: существует папка secret, доступ к которой должен иметь только администратор. Несмотря на то, что папка была создана админом, на чтение она будет доступна всем. Чтобы закрыть доступ, войди в свойства каталога и выбери вкладку "доступ". Там необходимо добавить категорию "ВСЕ" и запретить чтение каталога.

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

И, наконец, возьми себе за правило читать системные журналы. В них содержится информация, которая может тебя заинтересовать. Возможно, после прочтения ты узнаешь, что локальный юзер vasya пытался стать админом ;) или запустить запрещенную программу.

Абсолютной безопасности не существует

Несмотря на то, что защитить свою операционку на 100% невозможно, методы, приведенные в этой статье, помогут спасти твой сервер от глупых скрипткиддисов и начинающих хакеров (а их, как ты знаешь, бесчисленное множество). Если же твоей системой заинтересуются профессиональные хакеры, тебе стоит поискать более продвинутые решения для усиления безопасности. Рекомендую прочитать книгу Эда Ботта и Карла Зихерта "Безопасность Windows".

Лоботомия Perl

Портированный Perl довольно опасно ставить на WinXP, поскольку любой дырявый скрипт может вызвать командный интерпретатор. Однако запретить системные вызовы вполне реально (при наличии прямых рук). Для этого следует найти подстроку "cmd.exe" в файле Perl58.dll (местонахождение – каталог perl\bin). Замени имя файла cmd на что-нибудь другое той же длины, например, xak.exe. Таким образом, символ "конвейера" окажется нерабочим, однако в сценариях по-прежнему будет возможным запускать приложения функцией system("ИмяПрограммы"), а хакер получит от ворот поворот.

Этот и другие советы по защите интерпретатора ты можешь прочитать в статье "Защита Perl" по адресу www.citforum.ru/internet/perl/safe.

Слово специалистам

Мы обратились к специалистам в области компьютерной безопасности с вопросом: "Как сделать XP безопаснее?"

- ознакомься с www.microsoft.com/technet/treeview/default.asp?url=/technet/security/chklist/xpcl.asp;

- поставь антивирус, при активной работе в Сети установи какой-нибудь файрвол;

- включи автообновление (Windows Update), либо не ленись периодически запускать обновление ручками;

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

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

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

- установи антивирус, мигом вычищающий и уничтожающий различные вирусы и backdoor'ы;

- убей в Word'е движок макросов;

- если ты используешь IE, то отключи поддержку ActiveX, JavaScript и т.п.;

- выбери почтовый клиент, который режет все HTML-письма в plain-text, а также сохраняй все вложения в специально заведенной для них папке;

- реже используй проводник, отдавая предпочтение командной строке либо FAR'у;

- делай backup как минимум один раз в день.

Джентльменский набор

Каждый администратор должен иметь под рукой набор патчей, которые будут наложены на свежую систему WinXP. Вот некоторые из них:

- RPC DCOM Patch - актуальная заплатка в настоящее время, исправляет ошибку, ведущую к переполнению буфера;

- Windows Messenger Patch – патч, исправляющий фатальную ошибку в сервисе сообщений;

- Cummulative IE 6.0 Patch – патч для IE, исправляющий различные баги в вызовах ActiveX;

- Service Pack1 - исправляет старые уязвимости системы, наподобие smbdie и прочего;

- Service Pack1 для Office XP – при наличии офиса XP установить этот патч следует в обязательном порядке.

Установка патчей предельно проста. В первую очередь посети сайт microsoft.com и выкачай необходимое обновление. Затем запусти его и выполняй все требования инсталлятора. После установки тебя попросят перезагрузиться, чтобы изменения вступили в силу. В некоторых случаях патч не может быть установлен до инсталляции Service Pack1.

Быль о паролях

Ты когда-нибудь думал о том, насколько легко можно угадать твой пароль? Если нет, то это намного упростит работу взломщика, который поставил перед собой цель овладеть твоей системой. Так как в глобальной сети выложено для скачки огромное число словарей (bruteforce), то хакер расколет и поработит твою тачку за считанные секунды.

Чтобы впоследствии ты не рвал на себе волосы от злости, давай разберемся, как нужно правильно составлять защищенный пароль. Во-первых, при выборе пароля забудь свое имя, фамилию, ник и т.д. Методы социальной инженерии успешно применяются до сих пор, поэтому хакеру не составит труда развести тебя, притворившись милой и симпатичной девушкой. Пароль нужно придумать самому. Запиши любое запомнившееся тебе слово на бумажке и произведи над ним некоторые преобразования. Например, добавь пару циферок, слеш, русскую буковку. Прояви фантазию, и тогда твой пароль будет практически не угадываемым.

Простой пример. У тебя есть пароль password. Задача – усложнить его, изменив до неузнаваемости. Следуя нашему рецепту, добавляешь буковку, слеш, пару циферок и... твой пароль принял совсем другой вид. Стоило слегка видоизменить пароль (pa6sw/Ord5), и он стал непригодным для взлома bruteforce.

Когда в сети имеется Linux-сервер с доменом, его защите нужно уделить особое внимание. В противном случае под угрозой будет находиться вся локалка.

Если тебе трудно (или ломает) составлять сложные пароли, можешь скачать простой генератор. Например, тут:
www.kirillovichali.narod.ru/Work/progs/Password_generator.zip.

Все патчи, обсуждаемые в этой статье, ты можешь найти на официальном сайте MicroSoft.

Продвинутый фаервол Sygate доступен для скачивания на сайте www.sygate.com.

IPC$ - шара, которая используется для удаленной аутентификации и обмена данными между серверами. Не вздумай удалять ее, без этого ресурса сервер не сможет обмениваться информацией с другими машинами.

Команда mysqladmin password –u root устанавливает root-ый пароль для сервиса mysqld.

Если система пострадала от msblast, отмени аварийную перезагрузку командой shutdown –a.