Friday, December 15, 2006

Выпуск N3. Немного о безопасности в Windows или как из удобной вещи сделать надёжную.

Пожалуй время продолжить. Прежде всего хотелось бы сказать ещё пару слов по уже пройденной теме, а именно о "Какие программы следует спрятать подальше". Как я уже говорил что, в своих системах я переношу описанные утилиты в отдельную защищённую директорию, поскольку в этом методе есть определённые преимущества. Однако есть и маленькие хитрости, а именно WFP (Windows File Protection system). Это встроенная система защиты файлов, которые разработчики Windows считают критическими для её жизнидейтелности. Для того чтобы данные файлы не были случайно повреждены или удалённы неопытным пользователем, система хранит их копию в защищённой директории %SystemRoot%\System32\dllcach\. Система постоянно сканирует эти файлы и в случае обнаружения несоответствия, немедленно заменяет на эталонный. Превосходная мысль, резко снижает количество головной боли отделам тех. поддержки. Однако, нам как раз и требуется удалить, точнее перенести в секретное место, эти самые (некоторые из них) файлы. Что же делать, пути два (ну скажем полтора ;) - для WinXP Professional и Win2K3 (как я уже писал, Vista я пока не рассматриваю) есть возможность временно остановить WFP через Group Policy, в других вариантах это не пройдёт (для Win2K есть не документированный метод, но воизбежание неожиданностей, я не буду описывать его здесь). Независимо от типа операционки, нужно сделать следующее - написать скрипт который будет одновременно (практически одновременно) убирать файлы и из их оригинальной директории (%SystemRoot%, %SystemRoot%\System или %SystemRoot%\System32), а так же и из dllcach. Если WFP не остановлена, вы получите извещение о том что, важная часть системы была повреждена и предложение вставить инсталяционный диск (ВНИМАНИЕ!!! не храните инслаяционную версию локально на диске, иначе ничего не выйдет, да это и не безопасно). Вежливо откажитесь :)
Ну вот теперь можно пожалуй перейти к следующей теме.
Не всё что удобно - полезно, или какие сервисы лучше остановить.
Как известно в Windows на любой случай жизни есть сервис. Не будем отрицать что, для домашнего компьютера это удобно. Захотелось владельцу подключится к сети - пожалуйста, через NetBIOS - пожалуйста, а с файлами - пожалуйста, а с Novell сервера - пожалуйста, а... - пожалуйста. Жаль кофе сам в постель не приносит. К сожалению за удобства надо платить, и цена всем этим "пожалуйста" производительность и конечно же безопасность. Очень многие сервисы, обладая несомненными удобствами, имеют массу уязвимостей, а незначительная ошибка в конфигурации, может привести к краху всей политики безопасности. И тут не помогут не современные firewall-ы, не системы Intrusion detection, не самые драконовские права доступа и пароли. И так, моё мнение, на сервере не должна работать ни одна служба, в прямую не связанная с функциями сервера. Даже системы управления желательно отключить, обеспечив только возможность быстрой их активизации в случае необходимости. Я считаю что эксперт в области безопасности обязан, убедить и научить персонал - администраторов, операторов, службы поддержки, работать в новой среде. Поверьте мне, это не займёт слишком много времени, особенно если вы подготовите скрипты, которые позволят персоналу выполнять их обязанности или временно открывать те механизмы, без которых невозможно обойтись.
Как известно сервисы в Windows делятся на 5 типов по виду старта. Первые два, строго говоря, скорее не сервисы, а дриверы. Взглянем на список сервисов который хранится в ветви реестра HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services. Загрузчик виндовс (NTLDR), начинает загрузку драйверов нижнего уровня, они имеют значение 0 в поле Start. После этого NTLDR передаёт управление ядру (Ntoskrnl.exe) Ядро, после некоторых манипуляций с реестром, начинает загрузку драйверов устройств. Их значение в поле Start равно 1-це. После этого подымается Win32 подсистема и выполнив некоторые дополнительные действия инициализирует процесс локальной авторизации (lsass.exe) и система управления сервисами, начинает запуск драйверов третьего уровня. Они и являются сервисами в обычном понимании, значение их ключа Start от 2 до 4. Сейчас мы будем рассматривать именно их.
И так, если бы мы жили в идеальном мире, ваш сервер был чистым Windows 2000 SP4 без примеси всяких дополнительных IIS, SQL и иже с ними то... На установленном и полностью отконфигурированном сервере достаточно следующего минимально-идеального набора (кроме перечисленных ниже, остальные в состоянии Start = 4 (Disable)) :
• DNS Client - Automatic (Start = 2) - Клиент DNS, необходим для работы через Internet, а так же в некоторых корпоративных сетях. Даже если в вашей сети нет DNS сервера и выхода в интернет остановка сервиса может вызвать задержки в работе некоторых сетевых аппликаций. (Необходим для обнаружения AD domain controller-а)
• EventLog - Automatic (Start = 2) - Служба журнала событий, необходима для отслеживания событий безопасности, а так же записи системных и апликативных сообщений. Должна быть включена всегда и везде. О конфигурации аудита и методах защиты журналов от стирания или фальсификации, мы поговорим позже. Хочу только отметить что в политике безопасности существует специальный раздел - "Shut down system immediately if unable to log security audits" Если он активирован, сервер будет немедленно остановлен в случае невозможности записи событий безопасности. Как видите, иногда, правильный лог даже важнее жизни самого сервера.
• IPSec Policy Agent - Manual (Start = 3) ( в этом состоянии сервис не подымается при подъёме OS, а только по запросу другой системы) - Сервисе управления политикой IPSec получаемой от domain controller-а или local registry если компьютер не является частью домена. Пересылает политику на IPSec driver. IPSec является важным методом сетевой безопасности в сетях Microsoft.
• Logical Disk Manager - Automatic (Start = 2) - Менеджер локальных дисков. Необходим для управления mapping-ом локальных и подключаемых дисков. Поаккуратней с экспериментами с этим сервисом - восстановление реестра off-line дело не из приятных ;)
• Network Connections Manager - Manual (Start = 3) - Ну тут все понятно, машина без сетевых подключений не может является сервером, по определению. Управляет не только LAN, но и Dial-Up подключениями.
• Plug & Play - Automatic (Start = 2) - Из названия ясно - управляет обнаружением нового оборудования. Когда я был молод и наивен, я полагал что на стабильном сконфигурированном сервере где железо не меняется годами, он не нужен. О, как я ошибался, после ребута сервер поднялся, но зайти на него не было ни какой возможности. Думаю, что в некоторых специфических случаях его можно остановить, он это для любителей экстрима.
• Protected Storage - Automatic (Start = 2) - Сервисе управляет защитой критических, с точки зрения безопасности, данных. Например, ключе пользователей. Обеспечивает защиту от несанкционированного доступа со стороны сервисов, аппликаций или пользователей. Остановка сервиса делает эти данные недоступными.
• Remote Procedure Call (RPC) - Manual (Start = 3) - Сервис вызова удалённых процедур. От него зависит добрая половина всех сервисов в Windows. И хотя именно RPC очень часто являлись ненадёжными с точки зрения безопасности, остановка этого сервиса будет иметь катастрофические последствия (загляните в список зависимых сервисов - Dependency, и вы все поймёте сами :)
• Security Accounts Manager (SAM) - Automatic (Start = 2) - Управление пользовательскими записями безопасности (знающий все поймёт по сокращённому имени сервиса). Этот сервис никогда не должен останавливаться.
• Server - Automatic (Start = 2) - Необходим только в случае использования сервера как файле или принтер сервер, а так же при работе с AD. Во всех остальных случаях желательно деинсталировать этот сервис. Это легко сделать через настройку любого из сетевых интерфейсов. Достаточно нажать кнопку Uninstall на сервисе с именем "File and Printer Sharing for Microsoft Networks", и сервисе Сервер исчезнет из списка.
• Workstation - Automatic (Start = 2) (Может работать в Manual но не очень стабильно) - Используется для удалённого доступа с сервера к другим Microsoft Networks ресурсам. Если это не нужно, деинсталируйте сервисе, убрав в свойствах сетевого интерфейса строку "Client for Microsoft Networks"
Ну что-ж помечтали, а теперь к реальности. Попробуем рассмотреть какие сервисы и в каких случаях могут быть остановлены:

A B C D E F H I K L M N P Q R S T U V W

• Alerter - имя Alerter - Используется для посылки административных сигналов выбранным пользователям и компьютерам. Отключение сервиса может блокировать реакцию некоторых аппликаций на административные сообщения. Например сигналы от UPS.
• Application Layer Gateway Service – ALG (Win2K3, WinXP)– используется как субкомпонента для Internet Connection Sharing и Internet Connection Firewall сервисов позволяя plug-in-ам протоколов внешних аппликаций проходить через ICF и использовать ICS.
• Application Management - AppMgmt - используется при инсталляции и удалении аппликаций через AD механизм (IntelliMirror) и COM объектов
• ASP .NET State Service - имя aspnet_state (Win2K3) - обеспечивает управление состоянием сессий на компьютере (смотри IIS). TCP 42424
• Automatic Updates - wuauserv (Win2KSP4, WinXP, Win2K3) - позволяет автоматически загружать и устанавливать Microsoft paths и hotfixs. Для лучшей надёжности и управляемости в критических серверах, используйте специальные инструменты или скрипты для установки только проверенных (на полную совместимость) и необходимых заплаток.
• Background Intelligent Transfer Service - BITS (Win2KSP4, WinXP, Win2K3) - позволяет незаметно загружать файлы между клиентом и HTTP сервером, используя время простоя сетевых соединений.
• Certificate Services - CertSvc - создаёт и управляет сертификатами X.509.
• Client Service for Netware - NWCWorkstation - как понятно из названия нужен только для связи с сетями Netware
• ClipBook - ClipSrv - используется для совместного использования информации из Clipboard-а удалённой машины. Отключение не влияет на функции локального копирования или переноса.
• Cluster Service - ClusSvc - сервисе управляет кластером от Microsoft. Необходим на каждом узле подключённом к кластеру. UDP 3343
• COM+ Event System - COMSysApp - Manual (Start = 3) - обеспечивает автоматическую пересылку событий используемых в COM модели. Необходим для правильной работы COM+ интерфейса (используется например в IIS). При отключении перестаёт работать System Event Notification (SENS) - например Login и logoff сообщения не доставляются
• COM+ System Application - EventSystem (Win2K3, WinXP)- Используется для конфигурации и управления объектами COM+ модели
• Computer Browser - Browser - нужен для поддержания списка компьютеров доступных в сети
• Cryptographic Services - CryptSvc (Win2K3, WinXP) - сервисе управления ключами
• DHCP Client - Dhcp - Клиент Dhcp. Необходим только если ваш компьютер пользуется динамически распределяемым IP адресом
• DHCP-Server - DHCPServer (в серверном варианте) - сервер динамического распределения IP адресов и некоторых других сетевых настроек. UDP 67 2535
• Distributed File System - Dfs (Win2Kx) - сервер распределённой файловой системы. Позволяет распределять файлы по локальной или удалённой сети и осуществлять монтаж в необходимой точке локальной файловой системы
• Distributed Link Tracking Client – TrkWks - клиент поддерживает целостность линков в NTFS файловой системе даже если сам адресуемый файл был переименован или перенесён на другую машину в домене
• Distributed Link Tracking Server - TrkSvr (в серверном варианте)- запускается на контроллере домена и поддерживает список всех перемещения линков внутри домена
• Distributed Transaction Coordinator- MSDTC - обеспечивает управление транзакциями между некоторыми компьютерными ресурсами и системами управления базами данных, очередями сообщений или к примеру файловой системой. Необходим для конфигурации (но не работы!) COM+ компонент, и таких систем как Message Queuing (MSMQ) или Microsoft SQL Server
• DNS Server - DNS (в серверном варианте) - производит разрешение DNS имён в IP. Необходим для работы AD. TCP/UDP 53
• Error Reporting Service - ERSvc (Win2K3, WinXP) - используется для сбора и посылки на Microsoft информации о сбоях в работе аппликации запущенных в нестандартной среде.
• Fast User Switching Compatibility – FastUserSwitching-Compatibility (WinXP) - облегчает процес переключения между акоунтами в много-пользовательской среде
• Fax Service - Fax - Fax сервер. Все ясно из названия
• File Replication - NtFrs (Win2Kx) - поддерживает синхронизацию файлов между различными машинами
• File Server for Macintosh - MacFile (Win2K3) - Обеспечивает доступ к файлам на NTFS для машин семейства Macintosh. TCP 548
• FTP Publishing Service - MSFtpsvc - FTP сервер. Одна из компонент IIS сервера. TCP 20, 21
• Help and Support – helpsvc (Win2K3, WinXP) - обеспечивает работу службы Помощи и Поддержки на локальном компьютере
• HTTP SSL - HTTPFilter (Win2K3, WinXP) - обеспечивает безопасную (кириптованую) передачу данных по HTTP протоколу. TCP 443
• Human Interface Device Access - HidServ (Win2K3, WinXP) - обеспечивает подключение специальных устройств ввода и применение "горячих" кнопок на клавиатуре пульте дистанционного управления и т.п.
• IAS Jet Database Access - IASJet (Win2K3) - обеспечивает доступ к Internet Authentication Service базе
• IIS Admin Service - IISADMIN - сервис управления IIS. Необходим если используется хотя бы одна из компонент (HTTP, FTP, SMTP или NNTP)
• IMAPI CD-Burning COM Service - ImapiService (Win2K3, WinXP) - обеспечивает облегчённый доступ к записи на IMAPI CD – Burning COM Service. Например для таких аппликаций как WMP или Explorer
• Indexing Service - cisvc - индексирует файловые ресурсы на локальном или удалённом компьютере. Ускоряет поиск файлов или веб запросов
• Infrared Monitor - Irmon (Win2K3) - Сервис инфракрасного порта
• Internet Authentication Service - IAS (в сервером варианте) - позволяет проводить централизованную аутентификацию, учёт и правление пользователями при локальном или удалённом подключении через Virtual Private Network (VPN), Remote Access Equipment (RAS), беспроводной 802.1x или Ethernet/Switch Access Points. Если сервис опущен, то запрос на авторизацию будет передан на запасной сервер, при его отсутствии - отвергнут
• Internet Connection Firewall (ICF) / Internet Connection Sharing (ICS) - SharedAccess (для Win2K только ICS) - ICS обеспечивает перевод адресов внутренней сети в глобальные (NAT), разрешение имён и адресов при подключении локальной сети в интернет через dial-up или broadband соединение путём установки sharing-а. Предназначение ICF понятно из названия.
• Intersite Messaging - IsmServ (Win2Kx) - предназначен для посылки сообщений между серверами. Сообщения посылаются с использованием SMTP over IP протокола. Поддержка SMTP осуществляется SMTP сервисом, который является частью IIS.
• Kerberos Key Distribution Center - Kdc (в сервером варианте) - позволяет пользователю идентифицироваться с использованием протокола Kerberos 5-й версии. TCP/UDP 88
• License Logging Service - LicenseService (в сервером варианте) - отслеживает клиентские лицензии доступа используемые в таких серверных приложениях как IIS, Terminal Services, File and Print services а так же например, в SQL сервере и службе Microsoft Exchange. При отключении сервиса серверные аппликации продолжат нормально работать, но их использование не будет более отслеживаться.
• Logical Disk Manager Administrative Service - dmadmin - позволяет просматривать и управлять состоянием жёстких дисков, строить новые разделы и т.п. Для работы использует сервисе - менеджер логических дисков (Logical Disk Manager), от него же и получает информацию о состоянии и новых устройствах. После конфигурации дисков на сервере может быть выключен.
• Message Queuing - msmq (Win2K3) - предоставляет средства разработки и создания инфраструктуры распределённых аппликаций доставки сообщений. Обеспечивает гарантированную, безопасную и эффективную доставку ц использованием транзакций и системы приоритетов. Может работать с обоими Win32® и COM API методами. Используется в таких сервисах как например, COM+ Queued Component (QC), WMI и MSMQ Triggers. TCP/UDP 1801, TCP 1801, 1803, 1805, 1807, UDP 3527
• Message Queuing Down Level Clients - mqds (Win2K3) - смотри Message Queuing.
• Message Queuing Triggers - Mqtgsvc (Win2K3) - смотри Message Queuing.
• Messenger - Messenger - посылает и доставляет сообщения от Alerter сервиса. Не имеет отношения к службе Windows Messenger. При отключении NET SEND и NET NAME перестанут работать. UDP 138
• Microsoft POP3 Service - POP3SVC (Win2K3) - служба доставки почты по POP3 протоколу. TCP 110
• Microsoft Software Shadow Copy Provider - SwPrv (Win2K3, WinXP) - применяется для управления программным обеспечением для создания теневой (Shadow) копии тома диска использованием сервиса Volume Shadow Copy. Что позволяет в определённый момент времени создавать консистентную копию диска (только для чтения) которая может использоваться такими программами как например - Ntbackup для копирования на ленту. При отключении становится невозможным управление данным классом программ.
• MSSQL$UDDI - MSSQL$UDDI (Win2K3) - обеспечивает поддержку UDDI (Universal Description, Discovery, and Integration) для MSSQL сервера. TCP 1433, UDP 1434
• MSSQLServerADHelper - MSSQLServerADHelper (Win2K3) - обеспечивает поддержку интерфейса между AD (Active Directory) и MSSQL сервером. Внимание, экоунт под которым бежит MSSQL сервер, будет иметь возможность изменять любые объекты в AD.
• .NET Framework Support Service - CORRTSvc (Win2K3) - предназначение следует из названия.
• Net Logon - Netlogon - сервисе обеспечивает авторизацию а так же обновление DNS записи при входе в домен. При подключении к домену, активизируется автоматически. На машинах - членах домена использует: RPC over named pipes; на домен-контроллере RPC over named pipes, RPC over TCP/IP, mailslots и LDAP. Необходима для подключения в домен.
• NetMeeting Remote Desktop Sharing - mnmsrvc - предназначен для подключения авторизованного пользователя к десктопу удалённой машины с использованием "Microsoft NetMeeting". Этот сервисе должен быть специально разрешён в NetMeeting. Отключение вызывает выгрузку NetMeeting display драйвера. TCP 3389
• Network DDE - NetDDE - обеспечивает сетевой транспорт и безопасность динамического обмена данными между аппликациями на одном и тем же или различных компьютерах. Используется такими аппликациями как например, Clipbrd.exe или DDEshare.exe. При отключении будет вызывать задержку в работе зависимых аппликаций на локальном компьютере, или ошибку "Компьютер не найден в сети" при удалённом подключении.
• Network DDE DSDM - NetDDEdsdm - используется "Network DDE" и поддерживает базу данных соединений с информацией об уровне безопасности, осуществляет проверку и разрешение валидности запроса.
• Network Location Awareness (NLA) - NLA (Win2K3, WinXP) - собирает и хранит информацию о состоянии сети, например изменения IP, доменных имён или положения в сети. Передаёт информацию заинтересованным аппликациям.
• Network News Transport Protocol (NNTP) - NntpSvc (в сервером варианте) - сервис доставки новостей. Обычно устанавливается как часть IIS или Exchange. TCP 119, 563
• NTLM Security Support Provider - NtLmSsp (Start = 3) - сервис позволяет пользователю подключатся к сетевым ресурсам используя NTLM протокол автонтефикации. Применялся в основном в версиях до Win2K.
• Performance Logs and Alerts - SysmonLog - применяется для локального или удалённого сбора мониторинговой информации о машине, процессах сервисах и т.д. Активизируется только при запуске процесса мониторинга. К сожалению невозможен доступ к удалённому списку параметров мониторинга при остановке сервиса "Remote registry".
• Portable Media Serial Number Service - WmdmPmSN (Win2K3, WinXP) - обрабатывает серийные номере переносных музыкальных плееров подключаемых к системе.
• Print Server for Macintosh - MacPrint (Win2K3) - принт сервер для машин типа Macintosh.
• Print Spooler - Spooler - сервисе управления локальными и сетевыми принтерами, а так же поддерживает очереди печати.
• QoS RSVP / QoS Admission Control (RSVP) - RSVP - предоставляет возможности о управлению и обработке сетевых сигналов для QoS (Quality of Service). Воспринимает сигналы от GQoS (Generic Quality of Service) API.
• Remote Access Auto Connection Manager - RasAuto - используется для определения состояния удалённого компьютера путём определения DNS или NetBIOS имени или адреса при подключении через dial-up или VPN. А так же подачи сообщения и переподключения по альтернативному пути при потере соединения. Остановка сервиса не вызывает проблем ц ручным подключением.
• Remote Administration Service - SrvcSurg (Win2K3) - сервис удалённого администрирования
• Remote Desktop Help Session Manager - RDSessMgr (Win2K3, WinXP) - управляет и контролирует службу Remote Assistance из комплекта центра поддержки (Help and Support Center - helpctr.exe).
• Remote Installation - BINLSVC (Win2K3)- позволяет удалённую установку Win2K, WinXP, Win2K3, на база предустановленного клиента - Pre Execution Environment (PXE). Использует Boot Information Negotiation Layer (BINL) сервис. UDP 4011
• Remote Procedure Call (RPC) Locator - RpcLocator - обеспечивает разрешение RPC имён (RpcNs), и обнаружение RPC серверов ц их поддержкой.
• Remote Registry Service - RemoteRegistry - предназначен для удалённой работы с реестром. При отключении блокирует функции удавленного мониторинга и администрирования.
• Remote Server Manager - AppMgr (Win2K3) - обеспечивает хранение,обработку и ранжирование сообщений удалённого администрирования, а так же запуск заданий удалённого администрирования.
• Remote Server Monitor - Appmon (Win2K3) - мониторинг удалённого администрирования.
• Removable Storage - NtmsSvc - обеспечивает каталогизацию и хранение информации об отключаемых устройствах подключавшихся к вашему компьютеру (например ленты или CD). Применяется в функциях типа автоматического проигрывания. При отключении могут может существенно замедлятся старт таких аппликаций как Backup или Remote Storage.
• Remote Storage Notification - Remote_Storage_User_Link (Win2K3) - предупреждает о попытке подключения к off-line файлу, недоступному в данный момент. Уменьшает простои и позволяет заранее отказаться от невыполнимой задачи.
• Remote Storage Server - Remote_Storage_Server (Win2K3) - системный сервис позволяющий хранить редко используемые файлы на втором диске. Отключение делает невозможным чтение и запись в эти файлы.
• Resultant Set of Policy Provider - RSoPProv (Win2K3) - позволяет подключиться к контроллеру домена на базе Win2K3 и симулировать установку групповой политики для компьютеров с Win2K или старше.
• Routing and Remote Access - RemoteAccess - обеспечивает LAN-LAN, LAN-WAN, VPN и NAT маршрутизацию, а так же удалённый доступ к серверу по dial-up или VPN. L2TP UDP 1701,PPTP TCP 1723.
• RunAs Service - Seclogon (Win2K) - позволяет запускать процессы от имени другого пользователя. Для WinXP и Win2K3 такую роль выполняет сервис - Secondary Logon.
• Server - lanmanserver - выполняет основные функции сервера: доступ к файлам, принтерам и именованным каналам через сеть. Может быть отключён, если вам не нужны стандартные методы доступа к серверу - например если это веб сервер или сервер аппликаций. UDP 137, 138; TCP 139, 445
• Simple Mail Transport Protocol (SMTP) - SMTPSVC (в сервером варианте) - сервис доставки электронной почты. Часто устанавливается как часть IIS. TCP 25.
• Simple TCP/IP Services - SimpTcp (в сервером варианте) - поддерживает простые TCP протоколы, такие как: Echo (port 7, RFC 862), Discard (port 9, RFC 863), Character Generator (port 19, RFC 864), Daytime (port 13, RFC 867), Quote of the Day (port 17, RFC 865).
• Single Instance Storage Groveler - Groveler (Win2K3) - одна из частей Remote Installation Services (RIS). Позволяет экономить место на диске, путём нахождения и замены линками, одинаковых файлов в RIS директориях.
• Shell Hardware Detection - ShellHWDetection (Win2K3, WinXP) - отслеживает и выдаёт сообщения о AutoPlay событиях аппаратного обеспечения (диски, флаш карты и т.п.)
• Smart Card - SCardSvr - обеспечивает контроль доступа к Smart Card-ам вставленной в ридер вашего компьютера.
• SNMP Service - SNMP (в сервером варианте) - обеспечивает обслуживание входящих запросов по протоколу SNMP в ваш компьютер. Имеет так же агенты для мониторинга сетевых устройств и посылки информации на консоль компьютера. UDP 161
• SNMP Trap Service - SNMPTRAP (в сервером варианте) - принимает trap сообщения генерируемые локальным или удалённым SNMP агентом и пересылает их на локальную программу управления SNMP. UDP 162.
• Special Administration Console Helper - Sacsvr (Win2K3) - выполняет задачи удалённого управления, если любая из систем семейства Win2K3 останавливает своё функционирование в связи с получением Stop error message.
• SQLAgent$* (*UDDI или WebDB) - SQLAgent$WEBDB (Win2K3) - может передавать администратору сообщения о наличии проблем на сервере и запускать периодическую активность. Поддерживаемые типы объектов: задания (Jobs), сигналы (Alerts) и операторы (Operators) - сетевые или e-mail адреса персонала получающего сообщения.
• SSDP Discovery Service - SSDPSRV (WinXP) - сервер позволяет подключение Universal Plug and Play (UnPnP) устройств через сеть и некоторые другие функции. TCP 5000, но в WinXP_SP2 TCP 2869. UDP 1900.
• Task Scheduler - Schedule - позволяет конфигурировать и запускать задания согласно расписанию.
• TCP/IP NetBIOS Helper Service - LMHosts - поддерживает работу NetBT, обеспечивая для него разрешение имён, а так же, пинг и поддержание списка доступных машин в сети.
• TCP/IP Print Server - LPDSVC (Win2K3) - обеспечивает доступ к сетевым принтерам по Line Printer Daemon протоколу. Может так же принимать данные от LPR утилиты в UNIX. TCP 515.
• Telephony - TapiSrv - обеспечивает поддержку программ управления телефонными устройствами, а так же VoIP.
• Telnet - TlntSvr - сервисе терминального доступа по одноимённому протоколу. TCP 23.
• Terminal Services - TermService - обеспечивает удалённый параллельный доступ к графическому интерфейсу Windows. TCP 3389.
• Terminal Services Session Directory - Tssdis (Win2K3) - позволяет организовывать кластера из нескольких терминальных серверов, для повышения производительности системы. Позволяет правильно трассировать запросы между несколькими серверами без потери сессии, а так же, хранит информацию об оборванной сессии, позволяя пользователю подключится к ней вновь. UDP 1083.
• Terminal Services Licensing - TermServLicensing (Win2K3) - позволяет регистрировать лицензии клиентов при их подключении к терминальному серверу.
• Themes - Themes (Win2K3, WinXP) - обеспечивает поддержку нового вида графического интерфейса в WinXP, позволяет модернизировать или создавать свои собственные темы. В Win2K3 выключен по умолчанию, при отключении в WinXP, новый вид интерфейса становится недоступен и активизируется классический вид.
• Trivial FTP Daemon - tftpd (Win2K3) - сервис простой пересылки файлов, является частью RIS. Применяется для доставки инсталяционных файлов на удалённую машину, а так же, для запуска бездисковых станций. Опасный сервис, активизируйте его только при необходимости удалённой инсталляции системы. TCP/UDP 69.
• Uninterruptible Power Supply - UPS - сервис поддержки устройств бесперебойного питания подкрученных к вашей машине через последовательный порт (если ваш UPS имеет USB соединение, не активируйте этот сервис).
• Universal Plug and Play Device Host - upnphost (WinXP) - хост сервис имеет все необходимые компоненты для регистрации, управления и обработки запросов от всех устройств подключённых по протоколу UPnP. Включает в себя так же, веб сервер с описанием сервиса и устройств, и страницу презентации. Остановка сервиса (в режиме Manual) приводит к посылке сигнала на отключение подключены устройств и невозможность их поиска, однако первый же запрос на подключение запускает сервис. Пир запуске сервир так же активизирует SSDP Discovery service.
• Upload Manager - Uploadmgr (Win2K3, WinXP) - предназначен для синхронной и асинхронной передачи файлов в сети. Позволяет анонимно передавать данные о аппаратной конфигурации клиента и ID операционной системы на Microsoft для автоматического поиска подходящих драйверов и установки из Интернета. TCP 80
• Utility Manager - UtilMan (Win2K) - сервис обеспечивает быстрый доступ к таким утилитам как: Magnifier - "увеличительное стекло на экране", Narrator - "прочитывает голосом надписи в меню и окнах" и On-Screen Keyboard - клавиатура на экране.
• Virtual Disk Service - VDS (Win2K3) - обеспечивает единый интерфейс управления виртуализацией блочных устройств, как например RAID, для всех программ операционной системы. Позволяет создавать аппаратно и программно независимые виртуальные диски и тома. Обеспечивать их полное управление, контроль и мониторинг.
• Volume Shadow Copy - VSS (Win2K3, WinXP) - (смотри описание Microsoft Software Shadow Copy Provider).
• WebClient - WebClient (Win2K3, WinXP) - позволяет Win32 аппликациям чтение и запись файлов в Интернете ц использованием WebDAV механизма. Отключение сервиса не позволит пользователю применять Web Publishing Wizard для публикации данных в Интернет.
• Web Element Manager - elementmgr (Win2K) - предоставляет веб интерфейс для удалённого администрирования. Использует asp технологию, собирает все данные при поднятии. Бежит с правами Local System и запрашивает необходимые данные через COM интерфейс для запуска которого необходимы права Local System или администратор. TCP 8098.
• Windows Audio - AudioSrv (Win2K3, WinXP) - сервис обрабатывает Plug-and-Play события от аудио устройств или например GFX эффекты. Сервис не может быть остановлен после старта, если сервис отключён могут наблюдаться проблемы со звуком или GFX (фильтры, эквалайзеры). Однако на серверах звуковые карты чаще всего не используются.
• Windows Image Acquisition (WIA) - StiSvc (Win2K3, WinXP) - поддерживает устройства ввода изображения по WIA. Устройства могут быть подключены по любым из перечисленных методов: SCSI, IEEE 1394, USB, а так же через паралельный последовательный или инфра-красный порт. Сервис поддерживает так же захват кадров из видео.
• Windows Installer - MSIServer - обеспечивает установку и удаление программ по заранее определённым правилам. Инсталляционные файлы имеют msi формат (возможна упаковка в другой формат, например exe). При отключении сервиса становится невозможным установка или удаление таких программ, а так же компонентов Windows.
• Windows Internet Name Service (WINS) - WINS (Win2K сервер) - служба имён от Microsoft работающая с протоколом NetBIOS. При отключении разрешение имён возможно локально из файла, либо в одной подсети с помощью broadcast запросов. В сетях необходимость в WINS отпадает после перевода всех доменов в AD и всех компьютеров на Win2K или старше. TCP 42 (Replication), 135 (WINS MANAGER), 137 (WINS Registration), 1101. UDP 445, 1100, 1512
• Windows Management Instrumentation Driver Extensions - Wmi - обеспечивает мониторинг драйверов и подготовку данных для WMI.
• Windows Media Services - WMServer (Win2K3) - версия для Win2K3 заменяет собой все четыре сервиса из WMS 4.0 или 4.1. Поддерживает различные протоколы: RTSP, MMS и HTTP. TCP 1755 (MMS), 554 (RSTP), 80 (HTTP), 135 (DCOM, WMI). UDP 161 (SNMP), 1755 (MMS), 135 (DCOM, WMI)
• Windows System Resource Manager – WindowsSystemResourceManager (Win2K3) – позволяет пользователю организовывать сценарии распределения ресурсов (память, CPU, и т.п.) для процесов. Такие сценарии могут действовать на нескольких машинах даже в гетерогенных сетях. Имеет встроенный календарь для организации управления сценариями то времени.
• Windows Time - W32Time – синхронизирует часы и календарь компьютера по центральному серверу с использованием протокола NTP. TCP 123.
• WinHTTP Web Proxy Auto-Discovery Service – WinHttpAutoProxySvc (Win2K3) – предоставляет возможности автоматической конфигурации прокси для WinHttp клиента. Использует для конфигурации загружаемый файл Proxy Auto-Configuration (PAC). Аналогичный подход используется в интернет эксплориаре при установка autoproxy.
• Wireless Configuration / Wireless Zero Configuration – WZCSVC (Win2K3, WinXP) – используется для автоматической конфигурации IEEE 802.11 беспроводного адаптера. Сканирует беспроводную сеть с целью обнаружения всех доступных сетей и определения их параметров. Благодаря этому, работа пользователя или аппликаций верхнего уровня, сводится к выбору сети из списка.
• WMI Performance Adapter - WmiApSrv (Win2K3, WinXP) – обеспечивает передачу информации о performance counters из WMI HiPerf модели в Performance Data Helper (PDH). Ей пользуются такие PDH клиенты как например Sysmon.
• Workstation – lanmanworkstation – обеспечивает клиентский доступ к удалённым файле и принтер сервисам, а так же получение информации через именованные каналы. Обеспечивает поддержку WNet API. Отключение сервиса никак не влияет на TCP (HTTP) протоколы и доступ в Интернет.
• World Wide Web Publishing Service - W3SVC - веб сервер. Предоставляет доступ к файлам или активным веб страницам (asp и т.п.) по HTTP и HTTPS протоколам. Является частью IIS. TCP/UDP 80, 443

Возможно этот список показался вам слишком длинным и нудным, но я надеюсь что вы сможете пользоваться им как справочником, когда решите попробовать сократить число включённых служб на вашем компьютере. Позволю себе сформулировать некоторое правило, которое кажется мне разумным при выборе сервисов кандидатов на отключение. Итак, если вы конфигурируете рабочую станцию помните, главное здесь функциональность, следом идёт производительность, а уж патом (кроме некоторых особых случаев) безопасность. Как следствие такого списка приоритетов, отключать следует только те службы, которые заведомо не используются в вашей конфигурации сети (скажем File Server for Macintosh - явно не нужен если в сети нет Macintosh-ей). Стоит так же обратить внимание на сервисы потребляющие неоправданно много ресурсов, но не используемые в повседневной работе, возможно разумнее остановить их, и запускать только по мере надобности.
Теперь взглянем на сервер. Приоритеты располагаются в прямо противоположном порядке - прежде всего безопасность, следом разумеется производительность (иногда выходит на первое место, но в нашем случае они сотрудничают, а не конфликтуют) и уж патом функциональность. Хочу отметить что излишние функциональные возможности на сервере часто приводят к лишней головной боли, не принося ни какой пользы. Как следствие - стараемся остановить все сервисы не являющиеся прямо необходимыми для выполнения прямых обязанностей сервера. Наиболее, в этом плане, удобны сервера со строго определёнными задачами и не подвергающиеся слишком частым обновлениям и изменениям.
Кстати, хотел обсудить с вами некоторое изменение. Мне кажется что мои выпуски немного длинноваты. Прочтение такого требует довольно много времени и серьёзного сосредоточения. Посему, сегодня я сделал выпуск только из одной темы "Не всё что удобно - полезно, или какие сервисы лучше остановить", а вас попрошу высказаться как лучше. Делать выпуски на одну тему (возможно чаще) с подробным изложением материала, или как раньше три темы? Заранее благодарю всех высказавших своё мнение.

Cледующий раз:
Права на диски или забудьте про группу Everyone

Если ваши советы и комментарии интересны всем, буду рад увидеть их здесь.
С личными просьбами и предложениями, добро пожаловать на e-mail

Saturday, November 25, 2006

Выпуск N2. Немного о безопасности в Windows или как из удобной вещи сделать надёжную.

Ну чтож, если вам понравилось, можно и продолжить. Надеюсь ваши машины полностью пропатчины и очищены от всего лишнего, а Вы готовы к получению новой порции информации.

О чем пойдёт речь в этот раз:

  1. Что такое правильный пароль - устанавливаем Account Policies
  2. Какие программы следует спрятать подальше - список утилит которые должен запускать только администратор.
  3. Повышаем надёжность TCP/IP

Что такое правильный пароль?

Я думаю с правильного подхода к работе с паролями начинается безопасность (к сожалению часто она заканчивается там же ещё не успев начаться). Итак начнём с прописных истин. Чего не стоит делать никогда - не используйте в качестве пароля имя того-же экаунта в прямой или перевёрнутой последовательности, своё (равно как и близких родственников) имя, фамилию или дату рождения - эти сведения слишком легко получить из других источников (например прочитать на двери вашего кабинета), не используйте простые слова или названия - взлом по словарю займе считанные минуты. Что же тогда - наилучший пароль состоит из смеси цифр, символов, малых и больших букв, причём первые три группы должны быть обязательно представлены в пароле. Почему? В Windows до сих пор существует метод криптования паролей называемый LM, но просто необходим если в вашей сети ещё остались машины с Windows 95 или 98, а так же UNIX с Samba ранних версий (кстати, если у вас динозавры уже вымерли, позже мы рассмотрим как запретить этот беспридел). Чем же так плох LM, дело в том что максимальная длинна пароля в нем 14 алфавитно-цифровых символов которые он переводит в нижний регистр перед криптованием (т.е. те самые три первых группы описанные ранее). После этого криптует пароль разделив по 7 символов, если длинна пароля 7 или менее знаков - хеш удваивается. Что в результате - простейший случай это симметричный хеш - заранее знаем что длинна пароля не более 7 символов, перебирать только алфавитно-цифровые нижнего регистра. Просто бальзам на сердце Bruteforce-ра. Теперь маленькая загадка - какой пароль лучше 8 или 10 символов. Казалось бы ответ очевиден - чем длиннее тем лучше ;) но не в этот раз. Что сделает умный хакер увидев несимметричный хеш, конечно начнёт взлом со второй половины, в надежде (обычно вполне оправданной), что до 14-и знаков дело не дошло, а значит и взлом будет легче. ОК, если пароль состоял из 8 символов, через секунду в руках взломщика будет последний. Что с ним делать? Ничего :_( Но совсем другое дело если у тебя три последних буквы, тут уж вполне можно прикинуть, а что же там было в начале: фамилия, дата рождения, номер телефона?

Подводим итог сказанному выше - хороший пароль имеет длину 8, а лучше 14 знаков, не может быть найден в словаре и состоит цифр, знаков и букв верхнего и нижнего регистра. Идиллическая картина, но как же этого добиться. Существуют организации, которые генерируют надёжные пароли специальными программами и заставляют своих пользователей ими пользоваться, запретив опцию замены пароля. Скажу прямо - это просто отвратительно, мало того людей лишают свободы выбора и заставляют набирать абсолютно не читабельные ругательства. С точки зрения security есть как минимум две большие проблемы: первая - сгенерированный пароль должен быть как-то доставлен пользователю, и тут уж громадное поле для краж и копирования; вторая - такой пароль невозможно запомнить если ты не Джеймс Бонд или хотя бы Кевин Митник, а посему, он будет записан и скорее всего просто приклеен к монитору или, в лучшем случае уложен в ящик стола. На мой взгляд, единственный способ, это научить своих пользователей применять алгоритм при заведении пароля. Например - к первым буквам имён детей выстроив их по возрасту прибавьте год вашего рождения в обратном порядке разделив их решётками плюс первые три цифры нажимая и отпуская клавишу Shift. Предложите несколько подобных алгоритмов чтобы работнику было легче придумать свой или хотя бы скомбинировать ваши.

Ну чтож, ц пряником разобрались, перейдём ко кнуту. Как не позволить создание слабых паролей. Для этого в Local Security Policy существует раздел - Account Policies. Рассмотрим его подробно

Для этого открываем папку Administrative Tools в Control Panel и запускаем Local Security Policy. На данном этапе нас интересует раздел Account Policies в нем есть две ветви: Password Policy и Account Lockout Policy.

Первая определяет правила работы с паролями, ей и займёмся.

Enforce password history - определяет сколько старых паролей будет помнить Windows. Нужен что бы при запросе на изменение пароля пользователь не мог установить свой старый (или один из старых) паролей. По умолчанию 0 т.е. при запросе на обновление можете поставить свой старый, уже всем известный пароль ;) Думаю 10 норма.

Maximum password age - как ясно из названия максимальное время которое можно иметь один пароль. 60-90 дней вполне приемлемо.

Minimum password age - минимальное время жизни пароля. Поясную зачем это нужно, если установить его в ноль (так оно стоит по умолчанию) то умный пользователь легко обойдёт ограничение "Enforce password history" просто перебрав нужное количество временных паролей. Установим 1 день, и юсер не станет этого делать.

Minimum password length - минимальная длинна пароля. Это мы уже обсудили. Я ставлю 14 знаков, хотя часто слышу нелестные слова от тех кто это набирает.

Password must meet complexity requirement - это (от Microsoft) означает: как минимум 3 из 4 описанных выше групп символов должны быть представлены в пароле, плюс , более трех символов подряд в имени и пароле совпадать не могут. По умолчнию отключено, по уму включить.

Store password using reversible encryption for all user in the domain - хранить пароли криптованые так что можно восстановить исходный текст. Практически тоже самое что хранить их открытым текстом. Почти никогда не нужен и выключен по умолчанию.

Второй раздел - Account Lockout Policy

  • Account lockout threshold - Количество неудачных попыток ввести пароль, после которого учётная запись будет заблокирована. На мой взгляд 3-5.
  • Account lockout duration - Время которое запись будет оставаться открученной. Эта настройка позволит владельцу все же войти в систему после разблокировки. Две особенности: первая - если параметр установлен в 0, пароль не будет разблокирован без участия администратора; вторая - локальный администратор не может быть блокирован от локального (с системной консоли) входа. Рекомендую для критичных систем 5 мин. для простых 15 мин.
  • Reset account lockout counter after - Время которое должно пройти с последней попытки для сброса счётчика "Account lockout threshold" в ноль. По понятным причинам должно быть меньше или равно "Account lockout duration"

Вот пожалуй и все что касается Account Policies. Теперь несколько слов о других параметрах связанных с паролями и авторизацией. Раздел политики Security Options. Начнём с

  • Prompt user to change password before expiration - этот параметр описывает за сколько дней до истечения срока действия пароля будет выдано сообщение о необходимости замены. (В реестр он представлен как HKLM\Software\Microsoft\Windows NT\CurrentVersion\Winlogon\PasswordExpiryWarning. Обычно 15 дней.
  • Number of previous logons to cache - Этот параметр позволяет машине члену домена кэшировать пароли локально. Желательно устанавливать значение в 0, но если машина член домена, вы не сможете зайти на неё при отсутствии доступа к контроллеру домена. При необходимости такого подключения установите в 1.
  • Recovery Console: Allow automatic administrative logon - Если параметр разрешён, при вход в Recovery Console, не будет запрашиваться пароль администратора.
  • LAN Manager Authentication Level - как уже говорилось LM наиболее слабый метод криптования пароля применяемый в Windows. Установите этот параметр в "Send NTLMv2 responses only\refuse LM & NTLM" и ваш сервер перестанет разрешать удалённые подключения с низким уровнем криптования пароля. (Значение в реестре - HKLM\System\CurrentControlSet\Control\Lsa\LMCompatibilityLevel максимальный уровень 5, минимальный "Send LM & NTLM responses" = 0)
  • Send unencrypted password to connect to third-party SMB servers - если этот параметр разрешён, Windows будет по запросу пересылать в сети пароль открытым текстом. Применяется для связи с программами не поддерживающими методы криптования принятые в Microsoft. Параметр должен быть отключён. (HKLM\System\CurrentControlSet\Services\LanmanWorkstation\Parameters\EnablePlainTextPassword = 0)
  • Do not display last user name in logon screen - Запрещает показ имени последнего пользователя вошедшего на машину. Таким образом атакующий должен подобрать не только пароль но и имя.
  • Rename administrator account - поскольку запись Administrator является стандартною, она может использоваться ка цель взлома. Параметр позволяет использовать другое имя как обычного администратора. Желательно создать ложную учётную запись Administrator, которая будет заранее блокирована, иметь сложный случайный пароль, обнулённые часы работы и просроченную дату устаревания. Ложный администратор не должен иметь ни каких прав на машине и используется как ловушка в IDS (Intrusion Detection Systems). Попытка зарегистрироваться под этим именем вызовет тревогу. Следует знать что SID у нового администратора останется прежним (предустановленным) и новое имя может быть узнано с помощью программ типа sid2user.
  • Rename guest account - переименовывает Guest запись соответственно.

Нужно отметить что в версиях Windows выше чем Win2K (WinXP, Win2K3, в Vista наверное тоже, но я ещё не проверял) добавлены дополнительные параметры:

  • Network security: Do not store LAN Manager hash value on next password change - запрещает сохранять новый пароль (после изменения) в LM формате. Поскольку алгоритмы шифрования пароля однонаправленные - т,е, пароль не может быть восстановлен из хеша (только подобран перебором) Windows вынужден хранить все форматы паролей: LM, NTLM и NTLMv2. Включите эту опцию, если ваша система не использует старые протоколы.
  • Accounts: Limit local account use of blank passwords to console logon only - не позволяет подключение с пустым паролем, кроме как через физическую консоль. Пользователи с пустым паролем не смогут подключится к серверу через сеть. ( HKLM\System\CurrentControlSet\Control\Lsa\LimitBlankPasswordUse = 1)
  • Interactive logon: Allow Automatic Administrator Logon - Позволяет администратору автоматически подключится к серверу если вам нужен безпарольный вход в систему (например для авто инстоляции с перезагрузкой). К сожалению, вы вынужденны сохранить пароль в реестре открытым текстом. Структура

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon]
DefaultUserName="имя_пользователя"
DefaultPassword="пароль"
AutoAdminLogon="1" (если вход требуется члену группы Administrators)
ForceAutoLogon ="1" (если перед входом высвечивается предупреждение)

Я настоятельно рекомендую создавать временного пользователя для подобных целей, и разрушать учётную запись скриптом сразу после входа.

  • Accounts: Administrator account status - запрещение этого параметра приводит к блокировке записи администратора, например если желателен доступ только администратору домена. Реактивировать запись может член администраторской группы или через Safe Mode где этот пользователь никогда не блокируется.
  • Accounts: Guest account status - активация позволит пользователям без пароля подключатся к серверу как Guest.

Ещё два поля, связанные со входов в систему, они позволяют предупредить пользователя о правилах работы и законности подключения на данном сервере:

  • Interactive logon: Message title for users attempting to log on - заголовок сообщения - будет высвечен на рамке окна. (HKLM\Software\Microsoft\Windows\CurrentVersion\Policies\System\LegalNoticeCaption)
  • Interactive logon: Message text for users attempting to log on - текст сообщения (HKLM\Software\Microsoft\Windows\CurrentVersion\Policies\System\LegalNoticeText)
  • Interactive logon: Require Domain Controller authentication to unlock workstation - если активна, авторизация не может быть поризведена из кеша (вспомните о Number of previous logons to cache). Если опция выключена - для проверки пароля используется кеш, а подключение к домену происхоДит асинхронно.
  • Network access: Do not allow anonymous enumeration of SAM accounts - не позволяет не авторизованному пользователю получить список учётных записей (имеет некоторые побочные эффекты при работе в домене)
  • (HKLM\System\CurrentControlSet\Control\Lsa\RestrictAnonymousSAM = 1)
  • Network access: Do not allow anonymous enumeration of SAM accounts and shares - как и приведущий он ограничивает доступ так же к списку розданных ресурсов. (HKLM\System\CurrentControlSet\Control\Lsa\RestrictAnonymous = 1)
  • Network access: Let Everyone permissions apply to anonymous users - позволяет не авторизованному пользователю получить некоторые дополнительные возможности, например список пользователей и доступных ресурсов в домене - сведения которые могут быть применены в социальной инженерии, например. (HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\LSA\EveryoneIncludesAnonymous = 0 )
  • Network access: Named Pipes that can be accessed anonymously - содержит список разрешённых коммуникационных сессий (именованных каналов) которыми пользуются аппликации для связи через сеть. Если анонимный доступ на машину запрещён, этот параметр может позволить стандартным аппликациям т.к. сервисы - Sever, Workstation, многие DCOM аппликации (о том все ли DCOM-ы нужны поговорим позже). (HKLM\System\CurrentControlSet\Services\LanManServer\Parameters\NullSessionPipes - формат Multi-String)
  • Network access: Restrict anonymous access to Named Pipes and Shares - запрещает анонимный доступ к "Named Pipes" и "Shares" даже если он был разрешён в "Network access: Named pipes that can be accessed anonymously" и "Network access: Shares that can be accessed anonymously"
  • Network access: Shares that can be accessed anonymously - содержит список сетевых ресурсов доступных анонимно. Очень опасный параметр, находящиеся в нем ресурсы будут доступны любому пользователю сети. Используйте его осторожно и только в случае необходимости. (HKLM\System\CurrentControlSet\Services\LanManServer\Parameters\NullSessionShares\NullSessionShares - формат Multi-String)
  • Network access: Sharing and security model for lkcal accounts - описывает как пользователь прошедший сетевую авторизацию будет обращаться к ресурсам сервера. Имеет два значения Classic - 0 позволяет установить разные уровни доступа для разных пользователей, Guest only - 1 рассматривает все пришедшие из сети будут рассматриваться как Guest. Этот параметр не действует на доменную авторизацию, а так же на интерактивные подключения через службы типа Telnet или Terminal Services. (HKLM\System\CurrentControlSet\Control\Lsa\ForceGuest = 0)

На этом мы закончим рассмотрение параметров политики безопасности связанных с авторизацией. Остальные параметры постараемся рассмотреть в следующих выпусках. Хочу только заметить, что ключи реестра приведённые в этом разделе могут быть использованы для немедленного изменения значения, или даже для временного локального обхода доменной политики. Однако для создания постоянной политики я рекомендую использовать стандартные редакторы локальной и групповой политики. А так же, как наилучший метод - создание файлов темплейтов политики которые позже могут быть загружены через GUI или secdit.exe. Превосходство этого метода заключается не только в том что повреждённая или изменённая политика может быть легко восстановлена в любой момент, но и в том что можно автоматически проверить расхождения между действующими значениями и темплетом.

В заключении этого раздела хотелось бы сказать несколько слов о других (не использующих обычный пароль) методах авторизации. Прежде всего обратим внимание на системы использующие так называемые Smart card и одноразовые пароли типа SecurID. Smart card - позволяют пользователю авторизацию с очень длинным паролем (2048 и более символов) без необходимости его ручного ввода. SecurID генерирует новый (обычно 6 - 8 значный) пароль примерно каждую минуту, что делает бессмысленным кражу пароля. Главной опасностью такого метода является кража карты или TokenSecurID (обычно в форме брелока). Для устранения этой опасности используется pin код (обычно 4-х значное число) который вводится в компьютер либо в сам Token. При трёх неудачных попытках микро-контроллер устройства полностью блокируется, что делает его абсолютно непригодным к использованию. Другой метод, приобретающий все большую популярность, это биометрия (biometric) - измерение уникальных биологических данных владельца. Наиболее популярны сегодня: отпечаток пальца (fingerprint), рисунок сетчатки глаза (retinal scanning), а так же измерение био-электрических показателей например ладони.

Какие программы следует спрятать подальше

Существует большое количество инструментов в Windows которые позволяют значительно облегчить жизнь системному администратору. С их помощью можно настроить и контролировать систему, написать автоматические скрипты на все случаи жизни или получить удалённый доступ к необходимым ресурсам. К сожалению, эти же инструменты могут стать источником немалой головной боли. Чего стоит одна tftp.exe - излюбленное средство вирусов для закачивания на ваш компьютер основной исполняемой части, всевозможных "Back doors" или даже "Root kits". И так, вот список программ которые, на мой взгляд, должны быть надёжно изолированны от всех пользователей (да и самой системы) кроме администратора:

  • arp.exe
  • at.exe
  • atsvc.exe
  • attrib.exe
  • cacls.exe
  • cmd.exe
  • command.com
  • cscript.exe
  • dcomcnfg.exe
  • diskcomp.com
  • diskcopy.com
  • debug.exe
  • format.com
  • gpresult.exe
  • edit.com
  • edlin.exe
  • finger.exe
  • ftp.exe
  • ipconfig.exe
  • iexpress.exe
  • irftp.exe
  • ipsecmon.exe
  • label.exe
  • nbtstat.exe
  • net.exe
  • net1.exe
  • netsh.exe
  • netstat.exe
  • nslookup.exe
  • ntbackup.exe
  • ping.exe
  • poledit.exe
  • qbasic.exe
  • rcp.exe
  • rdisk.exe
  • regedit.exe
  • regedt32.exe
  • regini.exe
  • rexec.exe
  • route.exe
  • rsh.exe
  • runonce.exe
  • runas.exe
  • srvmgr.exe
  • secedit.exe
  • setreg.exe
  • sysedit.exe
  • syskey.exe
  • telnet.exe
  • tftp.exe
  • tracert.exe
  • verifier.exe
  • wscript.exe
  • xcacls.exe
  • xcopy.exe
  • certmgr.msc
  • ciadv.msc
  • compmgmt.msc
  • devmgmt.msc
  • dfrg.msc
  • diskmgmt.msc
  • eventvwr.msc
  • faxserv.msc
  • fsmgmt.msc
  • gpedit.msc
  • ias.msc
  • lusrmgr.msc
  • ntmsmgr.msc
  • ntmsoprq.msc
  • perfmon.msc
  • secpol.msc
  • services.msc
  • webfldrs.msi
  • wmimgmt.msc

Обратите особое внимание на файл cmd.exe. Это, как всем известно, командный процессор. Побочный эффект такого изменения - невозможность запуска .bat файлов любыми пользователями кроме администратора. О запрещении интерактивного использования командного процессора поговорим позже. А теперь, я хочу обсудить два возможных метода решения этой задачи. Первый - изменение прав доступа к файлам, без изменения их места положения. Второй в добавок к изменению прав, перенос файлов в отдельную доступную только для администратора директория. Независимо от метода, я рекомендую следующие права: Administrator - Read&Execute, Users - Deny All, Everyone - Deny Write. ЕслИ применён второй метод (я обычно пользуюсь именно им) такие же права установите и на саму директорию. Основным плюсом этого метода является защита от вредоносных скриптов, написанных в расчёте на стандартное месторасположения системных утилит и запущенных под правами администратора. Небольшое неудобство в том что в таком случае администратор не сможет запускать bat файлы простым двойным кликом, и будет вынужден использовать структуру <new_path>\cmd.exe /c или /k <script>.bat /ц -применяется если после окончания работы скрипта окно должно быть закрыто, иначе /к.

Повышаем надёжность TCP/IP

Этот раздел будет совсем небольшим. Я опиши набор ключей в реестре которые позволяют сделать TCP стек более устойчивым к DOS (Denial-of-service attack) атакам. Предназначение конкретных ключей легко понять из их названия, поясню только некоторые из них. Все параметры находятся в разделе конфигурации TCP/IP сервиса и имеют формат DWORD (если параметр не представлен в реестре, его необходимо создать)

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters

  • EnableDeadGWDetect = 0 (Запрещает изменить default gateway если считает его неустойчивым)
  • EnableICMPRedirect = 0
  • IPEnableRouter = 1
  • DisableIPSourceRouting = 2
  • EnablePMTUDiscovery = 0 (Запрещает динамическое определение MTU (maximum transmission unit), устанавливает 576 bytes для всех компьютеров не находящихся в той же подсети)
  • KeepAliveTime = 300000
  • KeepAliveInterval = 1000
  • PerformRouterDiscovery = 0
  • SynAttackProtect = 2 (Перестраивает комплекс параметров для защиты от Syn атак)
  • TcpMaxHalfOpen = 100
  • TcpMaxHalfOpenedRetried = 80
  • TcpMaxPortsExhausted = 5
  • TcpMaxConnectResponseTransmissions = 3 (Если сервер подвергся жёсткой SYN flood атаке, измените это значение в 1. Однако это может повлиять на количество падений в корректных соединениях)

Ну вот пожалуй и все на этот раз. Сегодня мы коснулись широкого спектра проблем в области Windows security от простых правил работы с паролями и до тьюнинга TCP/IP стека. Но немало важных вопросов ещё впереди.

И так следующий раз:

  1. Не всё что удобно - полезно, или какие сервисы лучше остановить
  2. Права на диски - забудьте про группу Everyone
  3. А где же у него кнопка? Работаем с registry

Если ваши советы и комментарии интересны всем, буду рад увидеть их здесь.
С личными просьбами и предложениями, добро пожаловать на e-mail

Sunday, November 19, 2006

Немного о безопасности в Windows или как из удобной вещи сделать надёжную.

Долго собирался и вот решил поделится своим опытом как из славной мягкой и пушистой киски по имени Windows сделать нечто не такое гладкое и приятное, но быстрое и главное по возможности максимально устойчивое к попыткам откручивания шеи.

Эта история началась примерно года три назад, когда по долгу службы мне нужно было сделать hardening, а проще говоря художественное обрезание системе из нескольких серверов там были Sun, Linux, страшный зверь Unixware от SCO и Win2K. Вот о последнем и пойдёт речь.
Уровень который требовал заказчик можно выразить так - Злобный хакер сидит прямо на консоли и грызёт ногти в бессильной злобе :). Лучший предложный вариант был - выдернуть из сервера все провода торчащие наружу, оставшееся залить в бетон. Да, консоль оставить снаружи, чтобы хакеру было на-чем сидеть. Одна загвоздка - аппликация должна при этом работать...
Ну обо-всем по порядку:
Сегодня:

1 Как пропатчить Windows без интернета или сказание о MBSA

2 Лишние иконки с глаз долой или как работать со спец иконами

3 Если вам чего не нужно - удалите это нафиг или не все программы одинаково полезны


И так, как известно Microsoft лидер по производству всяческих updates, hotfixs и прочих patches для своих продуктов на все случаи жизни. Некоторые скажут, мол пусть себе клепают на здоровье, я мол постою в сторонке. Оно конечно можно если ваша машинка стоит в закрытом шкафчике, сетевые кабеля из неё не торчат и в ближайшие сто лет ни каких новых софтярин туда залито не будет, Аминь... Но с таким счастьем и на свободе... , получается далеко не у всех. Что же остаётся - основных путей, на мой взгляд два, нет вру, три. Третий – это подождать пока сломают, а патом (или даве пОтом) латать чего осталось. Ну об экстрималах в другом разделе. Первый - отдать все на откуп славному сервису - wuauserv или проще говоря Automatic Updates. Дома я так и делаю. Метод в вполне приемлем если: машина в интернете и конект нормальный, винды куплены или руки правильно заточены ;) , не хочется заморачиватся с ручным сканированием и железо стандартное (некоторые стандартные MS фиксы делают на нестандартном железе много головной боли его владельцу). Если так много счастья в одни руки не выдали, и вы (или ваш горячо любимый сервер) к примеру, можете видеть интернет только через замочную скважину в кабинете начальника или плече его же секретарши, то... Переходим ко второму методу. Разрешите представить MBSA - Microsoft Base Security Analyzer бесплатный продукт от фирмы производителя. На сегодня представлен в двух версиях 1.2.1 и 2.0.1 оба умеют работать на WinXP, Win2K и Win2K3, у 1.2.1 написано что мол NT4 тоже, но както отдельно от всех остальных, так что могут Быть варианты.

1.2.1 сканит:

Windows

  • IIS
  • SQL Server
  • Internet Explorer
  • Windows Media Player
  • Exchange Server
  • Microsoft Data Access Components (MDAC)
  • Microsoft XML (MSXML)
  • Microsoft virtual machine (VM)
  • Content Management Server
  • Commerce Server
  • BizTalk Server
  • Host Integration Server
  • Office (его только локально, да забыл сказать можно сканировать удалённую машину)


2.0.1 заявлено:

  • тоже самое плюс -
  • IIS 5.0, 5.1, and 6.0
  • Microsoft Internet Explorer 5.01, 5.5, and 6.0 (включая IE 6.0 for Windows XP SP2 и Internet IE 6.0 for Windows Server 2003)
  • Microsoft SQL Server 7.0 and SQL Server 2000
  • Microsoft Office 2000, Office XP, and Office 2003

С чего начать - скачиваем этих зверей с сайта MS. Тут есть одна маленькая тонкость 1.2.1 доступен свободно и для его скачивания от вас ничего не требуют, чтоб вам сократить время на поиски, вот линк - MBSA 1.2.1 http://download.microsoft.com/download/9/0/7/90769f0c-c025-48bf-a9c7-60072d0cb717/MBSASetup-EN.msi

Что-же касается версии 2.0.1 у вас попросят проверить – действительно ли у вас тот самый настоящий (то есть лицензионный) продукт. Чтобы избегать печальных мыслей что денег не хватает даже на самое необходимое (ну, на покупку той самой лицензии у дяди Била), вот конечный линк который вы получите если... MBSA 2.0.1
http://download.microsoft.com/download/3/f/d/3fd1a09d-af15-4ab7-a554-0ac6c1e76c16/MBSASetup-EN.msi

Как же MBSA знает чего там нового наворотила родная фирма, если конекта к ней нет? Для этого служат конфигурационные файлы содержащие информацию о всех обновлениях на момент смачивания. И так:
mssecure.xml - (в cab, для 1.2.1 уложить в установочную директорию)
http://go.microsoft.com/fwlink/?LinkId=23130
wsusscn2.cab - (для 2.0.1, уложить в C:\Documents and Settings\<ваше имя>\Local Settings\Application Data\Microsoft\MBSA\2.0\Cache\wsusscn2.cab) http://go.microsoft.com/fwlink/?LinkId=76054

Небольшое дополнение, MBSA для работы требует: MSXML parser - если нет или старый качайте заранее, а также, включённый Workstation сервисе. Если вдруг его нет в списке сервисов то, сделайте следующее - откройте свойства сетевой карты, нажмите кнопку инсталлировать и выберете “Client for Microsoft Networks”.
Ну можно устанавливать... Закончили?
Kак обычно два клика мышки. Копируем нужный файл в нужную папку -
для 1.2.1 это файл
MSSecure_1033.CAB в директорию установки (обычно C:\Program Files\Microsoft Baseline Security Analyzer)
для
2.0.1 как уже было сказано, wsusscn2.cab в C:\Documents and Settings\username\Local Settings\Application Data\Microsoft\MBSA\2.0\Cache
Запускаем, для локальной проверки нажимаем - "Scan a computer"










В поле "Computer name" написано имя вашего компа, если не сложилось, можно написать 127.0.0.1

Стартуем, тут он пишет что мол пошёл поискать обновления, если файлы на месте, а интернета нет, то переходим к сканированию. Это займёт минут 5-10.












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

Дальше все просто, жмём "Result details",










выбираем из списка понравившееся. Если есть сеть можно сразу скачать, если нет, берём список, диск и к истокам.
Инсталлируем выбранные патчи и хотфикы. Нельзя сказать что машина стала реально безопасной но, всяческим
exploits и DOS (Denial of service attack) жить стало труднее.
Ну и последнее замечание, для тех кто не любит (или не может, как говорится, по службе) много кликать по мышке, MBSA имеет интерфейс командной строки - mbsacli.ехе. Но за этими и многими другими подробностями отсылаю вас на сайт поддержки Маикрософт support.microsoft.com
Приступим к следующему шагу

Лишние иконки с глаз долой.

Если кто не знает, замечу, иконки типа "Мой компьютер" или "Панель управления" необычные. Если на такой нажать правую клавишу мыши то появится специальное меню, если её скопировать или стянуть, на десктоп, то получишь только указатель - без всех удобств.
Честно говоря, сам я, не отношу подобные действия к security, то есть увеличению уровня безопасности. Поскольку существует множество других методов попасть в нужное место, кроме как кликнуть по иконе на десктопе или скажем в меню. Но пожалуй одна реальная польза от этого есть, защита от дурака. Если на десктопе у вышеуказанного субъекта видна "Control panel" рано или поздно, он доберётся до настроек драйверов, сервисов и прочих интимных мест. И тут уж добра не жди! С другой стороны, если вы продвинутый спец, а IT вашей фирмы унижает вас пряча нужные вещи, нижеследующее именно для вас.
Начнём с раздела regestry который управляет видимостью спец икон на десктопе

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Desktop\NameSpace
стоит добавить или убрать в него ключ со специальным именем и нажать F5 как изменения не замедлят произойти. Что же это за специальное имя спросите вы? Это CLSID под которым зарегистрирован объект, подробнее об этом чуть позже, а сейчас список CLSID

  • Administrative Tools {D20EA4E1-3957-11D2-A40B-0C5020524153}
  • Control Panel {21EC2O2O-3AEA-1O69-A2DD-08002B30309D}
  • Microsoft Network {00028B00-0000-0000-C000-000000000046}
  • My Computer {20D04FE0-3AEA-1069-A2D8-08002B30309D}
  • My Documents {450D8FBA-AD25-11D0-98A8-0800361B1103}
  • Network Computers {1F4DE370-D627-11D1-BA4F-00A0C91EEDBA}
  • Network Connections {7007ACC7-3202-11D1-AAD2-00805FC1270E}
  • Printers and Faxes {2227A280-3AEA-1069-A2DE-08002B30309D}
  • Recycle Bin {645FF040-5081-101B-9F08-00AA002F954E}
  • Scheduled Tasks {D6277990-4C6A-11CF-8D87-00AA0060F5BF}
  • Start Menu Folder {48E7CAAB-B918-4E58-A94D-505519C795DC}
  • Temporary Internet Files {7BD29E00-76C1-11CF-9DD0-00A0C9034933}
  • Internet Explorer {871C5380-42A0-1069-A2EA-08002B30309D}

К выше сказанному добавлю, что спрятать объект из NameSpace десктопа, можно поместив его CLSID в
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\HideDesktopIcons\NewStartPanel
как value типа dword равное 1, меняешь на 0 и объект снова виден.
Аналогичную процедуру можно проделать и с "MyComputer". Поместите
CLSID в
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\MyComputer\NameSpace
и он появится в компании с именами дисков. что бы спрятать объект из NameSpace MyComputer, можно поместив его CLSID в
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\HideMyComputerIcons
как value типа dword равное 1, меняешь на 0 и объект снова виден.
Спрятать или показать объект мы научились, как насчёт других действий? Ну например, переименовать, удалить, скопировать? Конечно можно, хотя с этими опциями будьте осторожны, как говорят, не все йогурты одинаково полезны.
Как я и обещал раньше вернёмся к CLSID, это идентификатор под которым та или иная компонента зарегистрирована в Windows. Благодаря этому мы можем ссылаться на неё в других местах,как это и было описано раньше. Где же хранится CLSID? Основное место это - HKEY_CLASSES_ROOT\CLSID\ в registry. Для того чтобы добавить в меню класса нужные команд делаем следующее - изменяем value Attributes которое находится в HKEY_CLASSES_ROOT\CLSID\{CLSID}\ShellFolder интересующей нас компоненты. Приведу некоторые из значений (их можно комбинировать):
Параметры файла

  • 50 01 00 20 - Переименовать (Rename)
  • 60 01 00 20 - Удалить (Delete)
  • 70 01 00 20 - Переименовать и Удалить вместе (Rename and Delete)

Параметры редактирования

  • 41 01 00 20 - Копировать (Copy)
  • 42 01 00 20 - Вырезать (Cut)
  • 43 01 00 20 - Копировать и Вырезать (Copy and Cut)
  • 44 01 00 20 - Вставить (Paste)
  • 45 01 00 20 - Копировать и Вставить (Copy and Paste)
  • 46 01 00 20 - Вырезать и Копировать (Cut and Copy)
  • 47 01 00 20 - Все вместе (Cut, Copy and Paste)

Теперь в меню появились соответствующие пункты, воспользуйтесь ими во благо!
Последнее маленькое замечание, спрятать или запретить очень многие вещи можно через
Group Policy. Методы работы с ней мы рассмотрим в одном из следующих выпусков. Хочу только заметить, что в конечном счёте практически все сведётся к реестру. Так что знающий не убаится ни групповой ни доменной политики.
Ну и последнее на сегодня

Удаляем все что ненужн
о

Я сторонник той простой истины что на сервере не должно быть ничего лишнего (причём это без относительно к OS, на Linux или Sun я делаю тоже самое). Это значит - сейчас мы будем удалять с Windows избыточный вес. Некоторые скажут, что такая гимнастика не имеет ни какого отношения к безопасности системы, но это несовсем так. Все вы, наверняка, периодически слышите, что мол обнаружена дыра в безопасности Media Player, Paint или чего либо подобного. Так вот, представьте, плохой мальчик получил доступ на ваш сервер, но пока только как самый рядовой пользователь, скажем Guest. Он открывает паинтом правельно подготовленную "картинку", крекс, пекс, фекс ... и он уже Admin. Печальная картина. Посему, заходим в Панель управления - Add and Remove Programs, и безжалосно удаляем все что не нужно для работы сервера. Кажется все просто, да не совсем. Присмотритесь повнимательнее. Чего-то не хватает, например Pinball - в меню есть, а в списке инсталлированных программ нет. Я уже не говорю о такой совсем не безобидной штучке как Terminal Server. Чтобы подобных разочарований было поменьше делаем следующее: идём в директорию Windows, скажем C:\WINNT, далее в скрытую inf и тут открываем файл sysoc.inf. Короче - Run notepad %systemroot%\inf\sysoc.inf. Что-же мы видим? В разделе [Components], множество строк приблизительно такого формата

TerminalServer=TsOc.dll, HydraOc, TsOc.inf,hide,2
Все дело в слове hide, убираем его не нарушая формат -
TerminalServer=TsOc.dll, HydraOc, TsOc.inf,,2
идём в Add and Remove Programs - Add/Remove Windows Components, и о чудо, нашлась пропажа. Делаем Uninstall с чистой совестью

Ну вот и все на сегодня. Надеюсь хотя бы часть этой информации была для вас новой и интересной.
Если так, то продолжение следует...

В следующий раз:

  1. Что такое правильный пароль - устанавливаем Account Policies
  2. Какие программы следует спрятать подальше - список утилит которые должен запускать только администратор.
  3. Повышаем надёжность TCP/IP

Если ваши советы и комментарии интересны всем, буду рад увидеть их здесь.
С личными просьбами и предложениями, добро пожаловать на
e-mail