11.06.2002

Организация безопасности сервисов Microsoft

Отключите ненужные сервисы. Это обычный совет, который дается почти в каждой книге, технической документации или лекции по безопасности. Но на этом совет обычно и заканчивается, оставляя системных администраторов в неведении относительно того, что такое ненужные сервисы и как их лучше всего отключить. Несомненно, достаточно просто войти в "Administrative tools", затем в "Services" и увидеть список всех сервисов. И также просто дважды нажать мышью на сервис, который вы не используете, и установить "Startup Type" в disabled. Но есть ли еще что-то кроме этого для организации безопасности сервисов?

Михаил Разумов, по материалам securityfocus

 Отключите ненужные сервисы. Это обычный совет, который дается почти в каждой книге, технической документации или лекции по безопасности. Но на этом совет обычно и заканчивается, оставляя системных администраторов в неведении относительно того, что такое ненужные сервисы и как их лучше всего отключить. Несомненно, достаточно просто войти в "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

Обычно вы можете определить, нужен ли вам сервис, отключив его и посмотрев, испортит ли это что-нибудь. Но будьте осторожны при использовании этого метода! Никогда нельзя отключать сервис Remote Procedure Call (RPC). Он требуется для многих других сервисов: если вы отключите его, вы не сможете вернуться в утилиту Services, чтобы запустить его вновь. В некоторых случаях отключение RPC не даст загрузиться системе. В общем, не отключайте этот сервис.

Другой сервис, с которым нужно быть осторожнее – Print Spooler. Хотя у вас может и не быть установлен принтер, вам нужен этот сервис для установки service packs. Лучший совет – установите его в режим Manual. 

Как узнать, что делает сервис

Некоторые сервисы имеют такие смутные описания, что трудно понять их действительную функцию. Возьмем сервис Single Instance Storage Groveler. Его описание гласит, что он "Сканирует запоминающие устройства в поисках дублирующихся файлов, и адресует эти файлы к одной точке устройства, сберегая дисковое пространство". Однако не упоминается, что используется он только с сервисом Remote Installation, и если вы не используете remote installation, вам не нужен этот сервис.

Чтобы узнать, что действительно делает сервис, попробуйте следующее:

  • Посмотрите более детальное описание в Microsoft TechNet's Windows 2000 Services;
  • Посмотрите описание в свойствах файла нажатием правой кнопки мыши на файл и выбором страницы "Version";
  • Проверьте зависимости файла сервиса, как описано ниже; и/или
  • Проверьте порты, которые открывает сервис, запустив netstat –an в командной строке до и после запуска сервиса и сравнив результаты.

Как узнать, какие файлы использует сервис

Знание сервиса включает знание того, какие файлы он использует. Часто определить, нужен ли вам сервис можно просто просмотрев, какие файлы он использует. Чтобы посмотреть зависимости файлов, я написал короткий скрипт, который использует две утилиты 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

Kerberos Key Distribution Center

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

 
или введите имя

CAPTCHA