Иногда кто-то из клиентов службы SQL Server Consulting (http://www.sqlserveraudits.com) спрашивает мое мнение относительно использования антивируса на серверах SQL Server, работающих в производственной среде. И, как ни странно, я отвечаю на это, что антивирусы не должны использоваться в производственных центрах данных. В подтверждение сказанного, я сам не использовал антивирусы на своих компьютерах уже более 10 лет. Однако, с другой стороны, я рекомендую своим далеким от техники друзьям и семье использовать антивирусы (сообщая им при этом, что антивирус во многих случаях не обезопасит их компьютеры от сетевого «мусора»).
Почему я не люблю антивирусные решения на производственных серверах
Очевидно, что лицензии на антивирусные решения и их поддержка часто стоят немалых денег, да и сами продукты могут стать причиной возникновения проблем, решение которых «влетит в копеечку»: например, антивирусы блокируют пользовательский код, настройки конфигурации или закрывают доступ к важнейшим запросам ввода-вывода.
Однако куда важнее то, что антивирусы, к сожалению, создают иллюзию защиты для менеджеров, далеких от техники, которые считают антивирусные решения каким-то «магическим барьером». На деле же в антивирусах нет ничего магического: они не могут остановить все атаки только потому, что вы платите деньги за защиту от вирусов. Они просто собирают многочисленные «определения» распознанных и каталогизированных угроз, а затем в ходе работы «сканируют» процессы в системе на предмет обнаружения знакомых векторов атак и сигнатур.
Другими словами, антивирусы не могут защитить от только что появившихся угроз, а лишь только от уже известных. Защищают, по крайней мере, теоретически – но новые тесты и испытания ясно показали, что большинство антивирусов не могут поддерживать достаточный уровень актуальности на фоне частоты появления новых угроз (http://gcn.com/blogs/pulse/2012/11/antivirus-0-for-82-against-new-malware.aspx).
Следовательно, если вы допускаете к использованию производственных серверов только компетентных специалистов (которые не будут лазить по Интернету или открывать почтовые вложения из сеансов RDP на производственных серверах) и следите за тем, чтобы серверы были закрыты брандмауэрами и на них были установлены необходимые исправления, тогда вам вряд ли придется беспокоиться насчет вирусов. Иначе говоря, так как подавляющее большинство вирусов либо используют хорошо известные «дыры», либо ждут пока пользователи «пригласят их войти», политика минимизации возможных рисков даст лучший результат в защите от вирусов, чем программные средства. В большинстве случаев.
SQL Server и антивирус
Еще один большой вопрос к структуре «ваши данные – SQL Server – антивирусные решения» вызывает тот факт, что антивирусы просто не могут защитить от более серьезных проблем и угроз (http://sqlmag.com/aspnet/key-ways-secure-aspnet-applications-sql-server-back-end), возникающих в рабочей среде или приложениях в результате ваших действий или использования собственных кодов. Другими словами, антивирусы ищут в системе атаки, нацеленные на хорошо известные уязвимости, а от такого подхода не будет толку, если вы используете специально разработанное программное обеспечение для управления данными.
В таких случаях в игру вступают такие технологии, как SQL Injection (http://sqlmag.com/sql-server/sql-injection-beyond-basics), ведь антивирусы просто не могут обеспечить защиту от проблем кодирования или уязвимостей программ в ВАШЕМ специализированном программном обеспечении, так как антивирусы действительно разработаны только для борьбы с известными проблемами.
SQL Server, антивирус и соответствие требованиям
Независимо от моего мнения на счет того, стоит ли использовать антивирус на производственном сервере или нет, реальность такова, что вопросы соответствия требованиям полностью завязаны на необходимость использования антивируса. Если вы хотите соответствовать стандарту PCI (http://www.pcicomplianceguide.org/pci-basics.php) или стараетесь подняться над планкой, установленной стандартом SOX (http://www.bytware.com/media/compliance/index.html) или HIPPA (http://www.computerworld.com/s/article/9025253/HIPAA_audit_The_42_questions_HHS_might_ask), вам, скорее всего, понадобится антивирус.
С моей точки зрения, антивирус необходим для этих типов соответствия в основном из-за того, что юристы, написавшие законы, либо были настолько технически безграмотны, чтобы считать антивирус «чудом», решающим все проблемы в тех областях, в которых его необходимо использовать, либо (что вероятнее) во время написания были чересчур восприимчивы к лоббистам антивирусных решений. Речь не о том, что от антивируса на производственных серверах нет никакого толка. Администраторы, если кто не знает, тоже люди и тоже порой совершают ошибки. Однако моя позиция состоит в том, что «соответствие требованиям» — это не магическая «печать неуязвимости» и не панацея от взлома. Так, например, компании, соответствующие стандарту PCI, к сожалению, пострадали от атак (http://www.simplysecurity.com/2012/02/03/subway-hack-raises-pci-compliance-concerns/) и столкнулись с утечкой данных и другими проблемами — даже при использовании антивируса.
Конечно, независимо от того, что я думаю по поводу антивируса и «соответствия требованиям», вам никак не удастся обойти это требование – и я ни в коем случае не поддерживаю ваши попытки спорить с аудиторами о том, стоит ли использовать антивирус или для защиты серверов достаточно иметь под рукой надежных IT-специалистов. Потому что аудиторы не покупаются на такие доводы, и спор приведет только к проблемам (то есть они поймут все неправильно, поднимут красные флаги, и это аукнется вам неприятностями, а вашей компании – огромными дополнительными расходами)
Итак, подведем итог: не рассчитывайте, что антивирус обеспечит вам «реальную» защиту, если вы уже практикуете «безопасную работу» на своих серверах. Но справедливо и то, что во многих ситуациях вам, возможно, придется использовать антивирус на SQL Server.
Антивирус и SQL Server — игра в команде
Попросту говоря, лучший способ заставить систему SQL Server и антивирус работать вместе, это рассматривать взаимодействие с точки зрения разделения рабочих зон. Или, другими словами, позволить антивирусной программе делать то, что у нее получается лучше всего, а службе SQL Server — управлять теми задачами, в которых она сильна, при этом любой ценой избегая их пересечения друг с другом.
Так, например, если вы правильно настроили систему SQL Server и обеспечили ее защиту (а также при условии корректного использования), данной службе потребуется доступ только к небольшому количеству ресурсов сервера. Некоторые из них перечислены ниже.
- Исполняемые файлы (Binaries) или пути к реальным исполняемым файлам для каждой из используемых служб SQL Server Services (MSSQL, SQL Server agent, SSAS). Как правило, «по умолчанию» их можно найти в папке C:Program Files Microsoft SQL Server, хотя они могут находиться и в любой другой папке, в зависимости от производственного сервера. Кроме того, имейте в виду, что, возможно, еще придется проверить, включен ли путь C:Program Files(x86) Microsoft SQL server во все исключения на машинах с архитектурой х64.
- Журналы ошибок SQL Server. Имеются в виду не ваши файлы журнала базы данных, а те текстовые файлы, которые система SQL Server использует для хранения собственных «журналов событий» при работе или обновлении. Они, в свою очередь, отличаются от системных журналов событий системы Windows. По умолчанию путь к этим файлам входит в состав путей, указанных выше – или они являются частью содержимого папки Program Files, где хранятся исполняемые файлы – хотя вы можете при желании изменить место хранения этих журналов (при выполнении расширенной операции с помощью стартовых параметров).
- Файлы данных и журналы. Да, это ваши текущие файлы типов. mdf,. ndf, и. ldf, или путь к вашим файлам данных и журналов. Их необходимо оградить от любых действий со стороны антивируса, ведь создание новых баз данных, операции увеличения размеров файлов и другие повседневные действия могут быть заблокированы механизмами антивируса, что в большинстве случаев заканчивается плохо.
- Резервные копии. Пути к любым вашим резервным копиям и хранилища резервных копий также необходимо исключить из сферы деятельности антивируса.
Соответственно, чтобы заставить антивирус успешно работать в команде с системой SQL Server, нужно исключить все пути, перечисленные выше, из любых операций сканирования или защиты в реальном времени. Более того, если ваше антивирусное решение пытается отслеживать работу процессов, необходимо убедиться, что оно не затрагивает процессы SQL Server Services, такие как MMSSQLSERVER (sqlservr.exe), Full-Text Daemon, SQL Server Agent, sqlwriter.exe и любые другие службы, которые могут быть использованы (такие как MSDTC, SSAS, SSRS, службы интеграции и так далее).
Теперь вы можете позволить антивирусу делать то, что он считает нужным, и отслеживать все необходимые системные прерывания, операции и процессы, не обращаясь при этом к процессам системы SQL Server. И, исходя из моего опыта, если вы настроили антивирус и систему SQL Server так, чтобы они избегали пересечений друг с другом и накладок, вам будет очень трудно заметить, что узел SQL Server работает еще и с антивирусом. А это именно то, чего мы добивались.