На главную | Содержание | Назад | Вперёд
Наши друзья

 

 

Защита от вредоносного использования расширенных хранимых процедур


Бюллетень
Hen

BID
Нет

Исправлено в SP
Нет

Фиксируется
Hen

Прежде всего, нужно строго ограничить доступ к расширенным хранимым процедурам. Вероятно, наиболее эффективный способ сделать это — настроить служебную учетную запись, от имени которой запускается служба MSSQLServer. И это не должна быть учетная запись LocalSystem. Во время установки есть возможность настроить SQL Server, чтобы он работал с правами учетной записи какого-то пользователя. Потратьте некоторое время, создайте пользовательскую учетную запись (не администратора) и введите во время установки сервера ее данные. Таким образом пользователи, которые выполняют расширенные хранимые процедуры как системные администраторы, не смогут получить права системного администратора локальной системы или учетной записи LocalSystem.
Также рекомендуется полностью удалить из программы SQL Server неиспользуемые мощные расширенные хранимые процедуры. Конечно, хакеры всегда смогут установить их заново, но, по меньшей мере, такая операция задержит их атаку. В табл. 11.4 перечислены наиболее опасные процедуры, которые по возможности нужно удалить с серверов. Нужно заметить, что удаление многих из перечисленных процедур может повлиять на работу программы Enterprise Manager, так что на серверах для разработки или в системах, где требуются функции Enterprise Manager, их удаление не рекомендуется.
Таблица 1Щ. Список^расШренныхлхранимых процедур, которые следует;: удалить, если они не используются в SQL Server
sp_bi nds es s ion sp_cursor sp_cursorelose sp_cursorfetch sp_cu r so rope n sp_cursoroption sp__get bind token sp_Ge t MBC SCha r Len sp_IsMBCSLeadByte sp^OACreate s p_OADe s t r oy sp_OAGetErrorInfо sp_0AGetProperty sp_OAMethod s p_0AS e t Prope r ty sp_OAStop sp_replcmds sp_replcoimters
sp_repldone sp_replflush sp_replstatus sp_rер1trans sp_sdidebug xp_avai1ablemedia xp_cmdsbell
xp_de 1 e tenia i 1
xp_dirtree
xp_dr opwe b t a s k
xp_dsninfо
xp_enumdsn
xp_eniaer г о r 1 о g s
xp__e numg r oup s
xp_enumqu eu edta s ks
xp_eventlog
xp_f indnextmsg
xp_fixeddrives
xp_ge t f ilede taiIs
xp_getnetname
xp_grantlogin
xp_logevent
xp_logineonfig
xp_logininfо
xp jna k ewebta s k
xp_msver
xp_perfend
xp jie r f m о n i t or
xpjerf sample
xpjierf start
xp_r eaderго r1og xp_readmail xp_revokelogin xp_runweb task xp_s с he dul e r s i gn a 1 xp_sendmail xp_servicecontrol xp_s nmp_g e t s ta te xp_snmp_raisetrap xp_sprintf xp_s qlinventоry xp_sqlregister xp_sqltrace xp_sscant xp_startmail xp_stopmail xp_subdirs xp_unc _ t o_dr ive Xp_regaddmu1tistring Xp_regdeletekey Xp_re gdeletevalue Xp_r e genumvalues Xp_regread
Xp_r egremovemultistring Xp_regwrite ■
Стратегия безопасной работы
Перед тем как рассмотреть лучшие методы защиты SQL Server, рассмотрим наиболее распространенные ошибки многих пользователей и администраторов SQL Server. Наша цель — не стать следующей жертвой атаки хакера. Как ясно продемонстрировало появление "червя" SQL Slammer, отсутствие установленных исправлений или оставленные открытые порта могут стать фатальной ошибкой. В этом разделе будут описаны основные задачи, которые обязательно должны быть выполнены для каждой реализации SQL Server независимо от выполняемых сервером задач.
Найдите все серверы SQL в своей сети
Поскольку невозможно обеспечить безопасность того, о чем не знаешь, то очень важно инвентаризировать все машины своей локальной сети, на которых установлен сервер SQL. Найти серверы SQL довольно сложно по многим причинам, включая одновременную установку на нескольких компьютерах сети, динамическое распределение TCP-портов, запуск SQL Server на переносимых компьютерах и тот факт, что клиенты SQL запущены не всегда (они могут запускаться только когда потребуются пользователю компьютера).
Несмотря на кажущуюся сложность ситуации, решение проблемы довольно просто. Для сканирования и выявления инсталляций SQL Server И MSDE доступно множество средств,
включая 3Vi_rrng, oyi- ocan (oi компании iviicrosonj и различные коммерческие профаммы, например AppDetective от Application Security Inc. Эти программы используют возможности службы SQL Resolution Service и другие методы для выявления серверов SQL.
Другой метод для выявления SQL-серверов, доступный администраторам, заключается в отправке специального запроса к Service Control Manager (диспетчер управления службами) на все сетевые хосты. В этом случае даже не требуется запуска SQL Server. Ниже приведен пример пакетного файла, который может быть использован для получения списка всех установленных экземпляров SQL Server в локальной сети (независимо от того, запущена или нет программа SQL Server). SSecho off
net view|find "\\">list.txt
for it %i in (list.txt) do so %i query bufsize= 6000|find "MSSQL"
Заблокируйте доступ ко всем портам SQLServer для посторонних клиентов
Одним из самых очевидных методов защиты от хакеров является установка брандмауэра, блокирующего непосредственные соединения для всех клиентов, кроме тех, с которыми установлены доверительные отношения. Хотя этот метод и не защитит от атак с помощью до­бавления кода SQL или атак со скомпрометированных хакером доверенных систем, он вполне заслуживает Применения в качестве первого рубежа обороны. Ясно, что с помощью персонального брандмауэра или специального устройства следует зэблоклрозать UDP-лорт 1434 и те ТСР-порты, на которые ожидает запросы SQL Server.
Для определения всех портов, которые используют экземпляры SQL Server, может потребоваться небольшое исследование. Очевидным является блокирование порта по умолчанию (ТСР-порт 1433), но для других экземпляров обычно выделяются порты со случайными но­мерами. В этом случае можно воспользоваться либо программой SQLPing для выявления открытых портов, либо запустить программу Server Network Utility, которая поставляется совместно с SQL Server, для назначения используемых TCP-портов вручную. Безусловно, для любого брандмауэра наилучшей стратегией является блокирование всех входящих и исходящих сообщений, кроме тех, которые были специально разрешены.
Постоянно обновляйте заплаты
Одним из наиболее насущных требований безопасности является постоянное обновление программного обеспечения и установка всех последних заплат. Дело в том, что заплаты для SQL Server не включаются в пакеты обновлений Windows Update. Долгие годы пакеты Win­dows Update являлись основными средствами для обновления пользователями программного обеспечения своих систем. Несмотря на то, что SQL Server является продуктом компании Microsoft и установлен (в виде MSDE) на огромном количестве рабочих станций, обновления SQL Server до сих пор игнорировались в пакетах Windows Update, что касается и удобной службы автоматического обновления Windows (Automatic Updates), встроенной в большинство операционных систем компании Microsoft.
Чтобы использовать единственный способ проверки того, обновлен ли ваш SQL-сервер, необходимо открыть окно свойств своего экземпляра SQL Server в Enterprise Manager или запустить следующую команду SQL.
select 99version до
Полученную информацию об используемой версии следует сравнить с номером версии последнего пакета обновлений SQL Server или исправлений Hotfix. Поскольку Microsoft не публикует информации о последней версии SQL Server на официальной Web-странице, то для отслеживания информации об обновлениях можно воспользоваться, например, ссылкой http://www.sqlsecurity.com/DesktopDefau.lt.aspx?tabindex-3&tabid-4.
Как только ваш экземпляр SQL Server окажется устаревшим, необходимо зайти на Web-сайт Microsoft и скачать последний пакет обновлений или исправление Hotfix. Перед внесе-
нием любых исправлений Hotfix сначала проверьте, что установлен последний пакет обновлений (Service Pack), Не забывайте, что пакеты обновлений — это отдельное программное обеспечение, не зависимое от SQL Server, MSDE и Analysis Services, поэтому их нужно скачивать и устанавливать отдельно. Кроме того, пакеты обновлений необходимо устанавливать отдельно для каждого экземпляра — поэтому при наличии на компьютере трех экземпляров SQL Server придется устанавливать пакет обнов1ений три раза, каждый раз указывая другой экземпляр.
ВНИМАНИЕ
I
Особенно неприятной может оказаться установка пакетов обновлений для экземпляров MSDE. Для начала укажем, что для инсталляций MSDE требуется специальный пакет обновлений от Microsoft. Более того, если ваш экземпляр MSDE не был установлен как экземпляр по умолчанию, то для установки пакета обновлений необходимо воспользоваться следующей командой, setup /upgrades? setup\sql2000 .msi instance=instance_narne
Но даже такая команда может оказаться бесполезной, если инсталляция MSDE была выполнена с помощью специального пакета MSI. Ингрормацию о том, какой MSI-файл был использован для конфетной инсталляции, можно найти по адресу http://support.microsoft.com/default.aspx?scid=№,-EN-US;311762. Оказывается, что даже специальные пакеты MSI могут быть обновлены, если можно найти место хранения специального файла MSI и указать его как второй параметр команды установки. Например, если нужно установить заплату для инсталляции MSDE, которая входит в пакет Visual Studio.NET, то можно скопировать срайл sgl2000.msi (входит в состав VS.NET) в каталог установки пакета обновлений и воспользоваться следующей командой.
setup /upgrades? setup\sql2000.msi instanoe=vsdotnet
После установки последнего пакета обновлений необходимо получить последнее "горячее испра&чение" Hotfix. Поскольку эти исправления создаются по методу добавления информации в существующее исправление, то для исправления всех ошибок достаточно скачать только последнее исправление Hotfix. Однако проблема в том, что раньше для исправлений SQL Server отсутствовала программа установки и приходилось вручную копировать большое количество файлов, вносить исправления в реестр и запускать сценарии. Но в последнее время Microsoft позаботилась о добавлении программы установки для пакетов Hotfix. Опять-таки, процесс установки исправлений должен быть проведен отдельно для каждого экземпляра SQL Server или MSDE, установленного на хосте.
По завершению установки последнего исправления Hotfix необходимо пере запустить SQL Server и проверить, что теперь информация о сервере соответствует последней версии SQL Server. Если все это кажется довольно утомительным, то так оно и есть. Вряд ли постоянно занятые системные администраторы (еще менее вероятно, разработчики и пользователи) станут заниматься постоянным обновлением SQL Server без серьезного стимула. Для решения этой проблемы появились программы наподобие HFNerChk Pro (http://ww.shavlik.com), которые позволяет выполнить удаленную идентификацию и обновление версии сервера SQL. Сделайте все возможное, чтобы всегда были установлены последние исправления SQL Server. Это потребует серьезных усилий, но в противном случае последствия могут оказаться значительно более тяжелыми.
Задайте сложный пароль для учетной записи sa
Независимо от того, какой режим аутентификации был выбран для сервера SQL, необходимо установить сложный пароль для учетной записи sa. Эта учетная запись имеет привилегии наиболее мощной роли для SQL Server и часто становится целью атак подбора пароля. Этот пароль нужно задавать, даже если серверы SQL работают только в режиме аутентифика иии Windows (Windows Only), на тот случай, если режим аутентификации будет когда-то из менен, то сервер не окажется незащищенным для хакеров.
Пароль для учетной записи sa можно сменить с помощью Enterprise Manager или путем запуска следующего сценария T-SQL, который позволяет задать в качестве пароля достаточно длинную случайную строку символов (по крайней мере, на SQL Server 2000).
DECLARE @pass char(72)
SELECT @pass=convert(char(361 , newidl)]tcunvert(char(36),newidf))
EXECUTE master..sp_password null,Spass,'sa'
GO

 

На главную | Содержание | Назад | Вперёд
 
Яндекс.Метрика