При этом на машине, где выполняется сервер Firebird 1.5 и установлено программное обеспечение встроенного сервера, хакерская программа может быть запущена под встроенным сервером, когда базы данных закрыты, может соединиться с файлом security.fdb как пользователь SYSDBA, украсть или разрушить пользовательские записи, прочесть зашифрованный пароль и обратиться к другим базам данных, как SYSDBA. Когда приложение соединяется с базами через fbembed.dll, оно блокирует каждую базу данных. Хакерское приложение может сохранять соединения с базами данных - включая security.fdb - бесконечно долго.
Приложения встроенного сервера и клиенты выполняются в адресном пространстве операционной системы пользователя. Для исключения риска попадания в систему злонамеренных программ встроенного сервера ограничьте доступ пользователя и группы в файловой системе пространством, где располагаются базы данных и системные файлы Firebird.
Безопасность сетевого соединения
Множество сообщений между клиентом и сервером несет информацию, которая может быть довольно легко получена кем-то, подслушивающим сетевые сообщения. Например, зашифрованный пароль может быть получен и использован для неавторизованного доступа к серверу.
Поэтому необходимо, чтобы все части сетевого пути между клиентом и сервером были под контролем.
Можно приобрести дополнительные продукты для зашифрованной передачи данных по сети, чтобы блокировать незащищенные цепи[133].
Web и другие многозвенные серверные приложения
Попытка полагаться на имена пользователей по умолчанию может привести к непредвиденным результатам, таким как неожиданная передача привилегий владельца базы данных или даже владельца серверного процесса обычным пользователям. Строго рекомендуется, чтобы ваше серверное приложение требовало ввода имени пользователя и пароля до каких-либо обращений к серверному процессу Firebird.
Использование выделенных серверов
Исключите использование на хост-машине других сервисов, особенно таких уязвимых, как серверы Web и FTP, которые потенциально принимают безымянные подключения. Отключение других сервисов не требуется для запуска Firebird. В Windows ограничьте сетевой доступ к реестру на серверах баз данных.
Использование средств межсетевой защиты
По очевидным причинам рекомендуется размещение ваших серверных машин под управлением средств межсетевой защиты (firewall). Может быть менее очевидным то, что использование средств межсетевой защиты клиентских процессов также является хорошей идеей. Неконтролируемый пользователь может запустить процесс на надежной клиентской машине для передачи некорректной информации серверу и получить привилегированный доступ к его базам данных. Известно, что клиенты Windows ненадежны.
Отражение атак
Код Firebird 1.0.x содержит большое количество команд копирования строк, которые не проверяют длину копируемых данных. Некоторые из этих переполнений могут быть доступны для внешнего манипулирования путем передачи больших строк двоичных данных в операторах SQL или "проталкивания" произвольного мусора в порт сервера (в настоящий момент 3050). Использование таких функций является общей техникой для попыток переполнения буфера с целью взлома серверов.
Такая уязвимость проще реализуется, если серверный и клиентский процессы выполняются не в надежной сети и/или без использования адекватной межсетевой защиты.
Защищенное программирование может помочь в превентивном отражении атак на вашу систему. Например, проверка длины получаемой строки может оказаться особенно полезной.
В следующей главе обсуждается защита, предоставляемая (или не предоставляемая) средствами сервера Firebird безопасности баз данных, вместе с использованием инструмента gsec для управления списком доступа пользователей на сервере. Глава заканчивается специальной темой настроек безопасности баз данных для улучшения некоторых аспектов такой встроенной защиты.
ГЛАВА 34. Защита сервера.
Инсталляция сервера включает базу данных идентификации пользователя для хранения описания всех пользователей, которые имеют доступ к серверу Firebird. Чувствительный к регистру пароль должен быть определен для каждого пользователя и должен быть использован для доступа к серверу. Инструментом командной строки для поддержки пользователей баз данных является gsec.
Именем базы данных безопасности для Firebird 1.5 и выше является security.fdb. В версии l.O.x это файл isc4.gdb. Он должен размещаться в корневом каталоге Firebird для всех инсталляций сервера за исключением встроенного сервера для Windows[134].