Отключите ненужные сервисы. Это обычный совет, который дается почти в каждой книге, технической документации или лекции по безопасности. Но на этом совет обычно и заканчивается, оставляя системных администраторов в неведении относительно того, что такое ненужные сервисы и как их лучше всего отключить. Несомненно, достаточно просто войти в "Administrative tools", затем в "Services" и увидеть список всех сервисов. И также просто дважды нажать мышью на сервис, который вы не используете, и установить "Startup Type" в disabled. Но есть ли еще что-то кроме этого для организации безопасности сервисов?
Отключите ненужные сервисы. Это обычный совет, который дается почти в каждой книге, технической документации или лекции по безопасности. Но на этом совет обычно и заканчивается, оставляя системных администраторов в неведении относительно того, что такое ненужные сервисы и как их лучше всего отключить. Несомненно, достаточно просто войти в "Administrative tools", затем в "Services" и увидеть список всех сервисов. И также просто дважды нажать мышью на сервис, который вы не используете, и установить "Startup Type" в disabled. Но есть ли еще что-то кроме этого для организации безопасности сервисов?
Сервис – это приложение, которое выполняется в фоновом режиме, независимо от сессий пользователей. Поскольку сервисы запускаются автоматически при загрузке, они хорошо подходят для серверных приложений, например Web-сервера. Но это также имеет недостатки, поскольку пользователь может не знать о выполнении сервиса. Без какого-либо вмешательства пользователя, по умолчанию могут быть запущены несколько сервисов, и пользователь не будет подозревать о потенциальных рисках безопасности. Это стало очевидно недавно, когда сетевые черви такие как "Code Red" и "Nimda" распространились в Интернет, зачастую атакуя пользователей, которые даже не знали о запущенных Web-сервисах на их рабочих станциях. В свою очередь, эти зараженные рабочие станции распространили вирусы на тысячи других систем в Интернет.
Чтобы управлять безопасностью Windows, вы должны управлять сервисами Windows. Вы должны понимать, как работают сервисы, как они атакуются и как обеспечить их защиту. Эта статья объяснит вам, как. Она не укажет вам, какие сервисы запускать, а какие отключить, но даст информацию, которая поможет вам определить, что вам больше всего нужно.
При атаке сервисы Windows используются для запуска команды или доступа к файловой системе для чтения или записи защищенного файла. Поскольку большинство сервисов исполняются с правами эккаунта SYSTEM, они обычно имеют доступ к большинству системных функций. Это делает их особенно интересными для хакеров. Умело используя сервис, атакующий может получить возможность делать на компьютере все, что он захочет. Например, Microsoft Security Bulletin MS02-006 сообщает о переполнении буфера в сервисе SNMP, что может позволить хакеру удаленно запускать команды с правами SYSTEM.
Другие атаки менее серьезны, но также могут использовать ошибки в сервисе, позволяющие другие неавторизованные действия. Например, существовали дыры в SMTP сервисе, которые позволяли спамерам рассылать электронную почту через ваш сервер.
Хакеру необходимо получить доступ к сервису. Для большинства Интернет-сервисов, это означает соединиться с соответствующим TCP портом. Для других сервисов, нужно иметь локальный консольный доступ, чтобы совершить серьезную атаку. Чтобы защитить сервис, вы должны знать об этих эксплоитах и минимизировать его подверженность им.
Наиболее очевидный способ минимизации риска состоит в отключении сервиса. Конечно, некоторые сервисы необходимы; в этом случае важно регулярно обновлять service packs и hotfixes. Как только становится известна серьезная опасность, Microsoft обычно выпускает patch, закрывающий эту уязвимость. В большинстве атак используются известные уязвимости. Устанавливая patch, вы значительно уменьшаете подверженность атакам.
Другой способ уменьшения подверженности сервиса – не запускать его от эккаунта SYSTEM. Вы можете создать новый, непривилегированный эккаунт для запуска сервиса, таким образом исключая всесильный доступ SYSTEM. Но такой подход имеет и недостатки. Например, вы должны провести исследование, чтобы определить минимальные привилегии, которые должен иметь новый эккаунт. Очевидно, что при наличии около 100 сервисов Windows, создание уникального эккаунта для каждого – не легкая задача. Windows XP и .Net Server решаю эту проблему, представляя два новых сервисных эккаунта: LocalService и NetworkService. Эти эккаунты запускаются с меньшими привилегиями, тем самым ограничивая полномочия сервисов. Пользователи Windows 2000 могут ограничиться эккаунтом SYSTEM, кроме случаев, когда безопасность гораздо важнее, чем время, затраченное на исследования.
Некоторые сервисы, не содержащие ошибок, подвергают сервер риску, открывая возможности для других типов атак. Например, в плохих руках, сервис SNMP может дать огромное количество информации. Если вы вынуждены использовать сервис, тогда ограничьте доступ к нему, блокируя соответствующие порты на вашем firewall. Повторю еще раз, лучшая защита – отключить ненужные сервисы.
Прежде чем объяснить, как исключить ненужные сервисы, я хочу представить утилиту командной строки sc.exe (Service Controller). Утилита содержится в Windows 2000 Resource Kit, Platform SDK, и инсталлируется по умолчанию с Windows XP. Sc.exe дает гораздо больше контроля над сервисами и имеет возможность работы со скриптами.
Утилита Services из Administrative Tools имеет некоторые значительные ограничения. Например, она может показывать сервис только в одном из трех состояний: stopped, paused, или running (остановлен, приостановлен и исполняется). В действительности, существует еще четыре добавочных состояния, которые можно увидеть с помощью sc.exe: continue pending, pause pending, start pending, и stop pending (продолжение ожидания, задержка ожидания, начало ожидания и остановка ожидания). Если сервис повисает в состоянии stop pending, утилита Services покажет, что сервис stopped. А если использовать команду NET START, она покажет, что сервис все еще running. Таким образом, только утилита sc.exe показывает правильное состояние сервиса.
Sc.exe – важнейшая утилита для управления сервисами. Для дополнительной информации по ее использованию смотрите Microsoft Technet overview.
Сервисы Windows имеют три режима загрузки: automatic, manual и disabled (автоматический, ручной и отключенный). Но оказывается, эти три описания не так точны, как кажутся. Загрузка automatic означает, что сервис будет запускаться при загрузке системы. Manual точнее может быть описана как загрузка по требованию. Когда сервис установлен в режим загрузки manual, он бездействует, пока пользователь не запустит его, или какое-нибудь приложение не запросит его через вызов StartService API. Другими словами, сервис, установленный в режим загрузки manual, запустится автоматически по требованию. Например, если вы запустите Clipbook Viewer (Clipbk.exe), чтобы посмотреть локальный clipboard, запустится также Clipbook сервис. Этот сервис также позволяет просматривать clipboard с удаленных компьютеров, и вы можете не желать, чтобы он исполнялся. Сервис Clipbook зависит от сервиса Network DDE, который, в свою очередь, зависит от сервиса Network DDE DSDM, и все они запустятся, будучи установленными в режим загрузки automatic или manual.
Единственный способ избежать этого – установить режим загрузки всех этих сервисов в "Disabled". Но даже disabled окончательно не запрещает загрузку сервиса. Пользователь с соответствующими правами может запустить запрещенный сервис простым изменением режима загрузки на Manual или Automatic.
Sc.exe дает больше контроля, позволяя вам реально удалить сервис; более детально это объяснено ниже.
Знать, какие сервисы отключить – может оказаться сложным вопросом. Необходимость отключения некоторых сервисов очевидна, а для других все не так ясно. Основное правило в том, что если у вас нет пользователя, использующего данный сервис, отключите его. Если вы думаете, что в будущем этот сервис может понадобиться, отключите его до тех пор.
Сервисы, которые вам нужны, зависят от роли вашего сервера. Если у вас Web-сервер, очевидно, что вам нужно запускать IIS, иначе отключите его. Если ваш сервер не является частью домена (что часто рекомендуется для серверов IIS), вы можете спокойно отключить сервисы, относящиеся к Windows networking.
Советы Microsoft о том, какие сервисы нужны для IIS, смотрите на List of Services Needed to Run a Secure IIS Computer. Обратите внимание, что в этой статье Microsoft указал License Logging Service как необходимый. Не смотря на то, что они хотят, чтобы вы регистрировали лицензии, это не требуется для работы IIS. (Заметьте также, что приложение в конце этой статьи содержит список сервисов по категориям.).
Обычно вы можете определить, нужен ли вам сервис, отключив его и посмотрев, испортит ли это что-нибудь. Но будьте осторожны при использовании этого метода! Никогда нельзя отключать сервис Remote Procedure Call (RPC). Он требуется для многих других сервисов: если вы отключите его, вы не сможете вернуться в утилиту Services, чтобы запустить его вновь. В некоторых случаях отключение RPC не даст загрузиться системе. В общем, не отключайте этот сервис.
Другой сервис, с которым нужно быть осторожнее – Print Spooler. Хотя у вас может и не быть установлен принтер, вам нужен этот сервис для установки service packs. Лучший совет – установите его в режим Manual.
Некоторые сервисы имеют такие смутные описания, что трудно понять их действительную функцию. Возьмем сервис Single Instance Storage Groveler. Его описание гласит, что он "Сканирует запоминающие устройства в поисках дублирующихся файлов, и адресует эти файлы к одной точке устройства, сберегая дисковое пространство". Однако не упоминается, что используется он только с сервисом Remote Installation, и если вы не используете remote installation, вам не нужен этот сервис.
Чтобы узнать, что действительно делает сервис, попробуйте следующее:
Знание сервиса включает знание того, какие файлы он использует. Часто определить, нужен ли вам сервис можно просто просмотрев, какие файлы он использует. Чтобы посмотреть зависимости файлов, я написал короткий скрипт, который использует две утилиты Windows Resource Kit, reg.exe и depends.exe:
<@set imagepath= @FOR /F "tokens=3" %%a in ('reg query HKLM\system\currentcontrolset\services\%1 /v imagepath 2^> nul ^| find "imagepath" ') DO @set imagepath=%%a @if defined imagepath ( @echo Dependencies for %imagepath%: @call depends /a0f1c /oc:~svcdep.tmp "%imagepath%" @FOR /F "tokens=1 delims=, skip=1" %%b in ('type ~svcdep.tmp ^| findstr /B /c:"," ^| findstr /V /c:"?" ^| sort') do @echo %%b @del ~svcdep.tmp 2>nul ) else ( @Echo '%1' is not installed or is not a valid service )
Сохраните этот файл под именем svcdep.bat и запустите его с коротким именем сервиса, чтобы получить список файлов, используемых этим сервисом. Например, чтобы увидеть зависимости сервиса File Replication, наберите: svcdep.bat ntfrs.
Вы увидите следующее:
Dependencies for %SystemRoot%\system32\ntfrs.exe:
"c:\winnt\system32\DBGHELP.DLL"
"c:\winnt\system32\DNSAPI.DLL"
"c:\winnt\system32\ESENT.DLL"
"c:\winnt\system32\GDI32.DLL"
"c:\winnt\system32\KERNEL32.DLL"
"c:\winnt\system32\MSVCRT.DLL"
"c:\winnt\system32\NETAPI32.DLL"
"c:\winnt\system32\NETRAP.DLL"
"c:\winnt\system32\NTDLL.DLL"
"c:\winnt\system32\NTDSAPI.DLL"
"c:\winnt\system32\NTFRS.EXE"
"c:\winnt\system32\RPCRT4.DLL"
"c:\winnt\system32\SAMLIB.DLL"
"c:\winnt\system32\SECUR32.DLL"
"c:\winnt\system32\USER32.DLL"
"c:\winnt\system32\WLDAP32.DLL"
"c:\winnt\system32\WS2_32.DLL"
"c:\winnt\system32\WS2HELP.DLL"
"c:\winnt\system32\WSOCK32.DLL"
Если вы просмотрите этот список, вы увидите, что он использует библиотеки DNS (DNSAPI.DLL), Winsock (WS*.DLL), и Remote Procedure Call (RPCRT4.DLL). Это не столько даст вам ключ к тому, какие действия выполняет сервис, но также поможет увидеть, от каких других сервисов он зависит.
Как уже упоминалось ранее, установка сервиса в disabled только запрещает запуск сервиса, но не удаляет его из системы. Однако, sc.exe позволяет проделать следующий шаг, реально удаляя сервис из реестра. Набрав
sc.exe delete {service name}
вы можете удалить все ключи реестра, относящиеся к сервису, так что он более не будет отображаться в утилите Services. Это нужно делать, когда вы уверены, что не будете использовать данный сервис, но будьте осторожны, так как sc.exe не имеет возможности вернуть сервис, если он удален.
Вы можете захотеть пройти этот шаг до конца и удалить из системы все файлы сервиса. Для этого вы сначала должны просмотреть зависимости файла сервиса, используя скрипт, представленный выше. Далее, вы должны определить, какие файлы сервиса уникальны, а какие являются общими библиотеками Windows. Что-то будет очевидно, а что-то нет. Вам стоит сделать резервные копии перед этим на случай, если вы удалите важный файл.
Если вы взгляните на зависимости файла сервиса FAX, вы получите следующий список файлов:
"c:\winnt\system32\COMCTL32.DLL"
"c:\winnt\system32\FAXEVENT.DLL"
"c:\winnt\system32\FAXSVC.EXE"
"c:\winnt\system32\FAXTIFF.DLL"
"c:\winnt\system32\GDI32.DLL"
"c:\winnt\system32\KERNEL32.DLL"
"c:\winnt\system32\MSVCRT.DLL"
"c:\winnt\system32\NTDLL.DLL"
"c:\winnt\system32\RPCRT4.DLL"
"c:\winnt\system32\SHELL32.DLL"
"c:\winnt\system32\SHLWAPI.DLL"
"c:\winnt\system32\USER32.DLL"
В списке вы увидите три файла: faxevent.dll, faxsvc.exe и faxtiff.dll. Поскольку эти три файла, очевидно, относятся к функциям факса, довольно безопасно будет удалить их. Вам даже не нужно удалять все файлы, чтобы достичь требуемого результата; удаление нескольких ключевых файлов сделает сервис нерабочим. Заметьте, что этот шаг рекомендуется только для серверов, для которых безопасность очень важна, и для тех, кто достаточно смел на такие эксперименты. Вы вряд ли захотите пробовать это на производственном сервере.
Как только вы определили, какие сервисы вы хотите запускать, а какие нет, важно закрепить их в этом режиме. Установка сервиса в режим загрузки "Disabled" не означает, что он всегда останется отключен. Но у сервисов нет способа фиксации их режимов загрузки. Кроме того, утилита Services не предлагает путей для установки прав, определяющих, кто может, и кто не может запускать сервис.
Политики domain security позволяют вам закрепить режимы запуска сервисов и установить разрешения на сервисы; однако это не работает на одиночных серверах, таких как Web-серверы. В этих случаях вам следует положиться на security templates. Используйте Security Templates MMC для конфигурации режимов загрузки и настроек безопасности для каждого сервиса. Далее, используйте Security Configuration Editor (или secedit.exe) для применения template.
Управление сервисами Windows – умение, которым обладают немногие администраторы. Безопасность вашего сервера может быть значительно повышена, если вы понимаете работу сервисов и как управлять ими. Потратьте время, чтобы ознакомиться с сервисами Windows и разработайте политику сервисов для серверов и рабочих станций под Windows. Время окажется потрачено не зря, а вознаграждение – повышенная безопасность вашей сети.
Кластеризация и баланс загрузки |
Удаленный доступ |
Distributed Transaction Coordinator Intersite Messaging |
Internet Authentication Service Remote Access Auto Connection Manager Remote Access Connection Manager Routing and Remote Access |
Совместная работа |
Удаленное администрирование |
ClipBook NetMeeting Remote Desktop Sharing |
Remote Registry ServiceTe Telnet Terminal Services Terminal Services Licensing |
Связь |
Удаленная установка |
Fax Service Telephony |
Boot Information Negotiation Layer Single Instance Storage Groveler Trivial FTP Daemon |
Управление дисками и файлами |
Сменные и удаленные носители информации |
Distributed File System Distributed Link Tracking Client Distributed Link Tracking Server File Replication Indexing Service Logical Disk Manager Logical Disk Manager Administrative Service |
Remote Storage Engine Remote Storage File Remote Storage Media Remote Storage Notification Removable Storage |
Контроль, регистрация и предупреждение о событиях |
Системное администрирование |
Alerter COM+ Event System Event Log Performance Logs and Alerts SNMP Trap Service System Event Notification |
Application Management License Logging Service RunAs Service Task Scheduler Windows Installer Windows Management Instrumentation Windows Management Instrumentation Driver Extensions Windows Time |
Аппаратное оборудование |
Системные сервисы |
Plug and Play Smart Card Smart Card Helper Uninterruptible Power Supply |
Protected Storage Remote Procedure Call (RPC) Security Accounts Manager |
Клиенты Интернет |
Сеть TCP/IP |
DHCP Client DNS Client |
Internet Connection Sharing QoS Admission Control (RSVP) TCP/IP NetBIOS Helper Service |
Сервисы Интернет серверов |
Сеть Windows |
DNS Server FTP Publishing Service IIS Admin Service Network News Transport Protocol (NNTP) Simple Mail Transport Protocol (SMTP) Simple TCP/IP Services Site Server ILS Service SNMP Service TCP/IP Print Server World Wide Web Publishing Service |
Computer Browser IPSEC Policy Agent Messenger Net Logon Network Connections Network DDE Network DDE DSDM NT LM Security Support Provider Remote Procedure Call (RPC) Locator Server Windows Internet Name Service (WINS) Workstation |
Мультимедийные сервисы |
Другие |
On-line Presentation Broadcast Windows Media Monitor Service Windows Media Program Service Windows Media Station Service Windows Media Unicast Service |
Print Spooler Utility Manager |
Поддержка других ОС |
|
File Server for Macintosh Print Server for Macintosh |
Одно найти легче, чем другое. Спойлер: это не темная материя