Лучший способ защитить соединение с firebird через Интернет - программирование
Подтвердить что ты не робот

Лучший способ защитить соединение с firebird через Интернет

У меня есть клиент-серверное приложение, которое использует сервер Firebird 2.5 через Интернет. Я столкнулся с проблемой предоставления безопасного доступа к базам данных FB, и в качестве первого решения попытался решить эту проблему, интегрировав туннельное решение в приложение (точнее, программное обеспечение STunnel). НО, этот аскетизм страдает от многих аспектов: - это увеличивает потребление ресурсов (процессор, память, потоки) на стороне клиента и сервера, - развертывание sotware становится серьезной проблемой, поскольку программное обеспечение STunnel записывается как служба WinNT, а не Dll или компонент (для доступа к службе WINNT необходимы права администратора) и мое клиентское приложение должно работать без установки!

SO, я решил взять быка за рог (или птицу перьями, когда мы говорим о Firebird). Я загрузил исходный код Firebird 2.5 и ввел безопасный код туннелирования непосредственно на свой низкоуровневый уровень связи (слой сокета INET). СЕЙЧАС шифрование/дешифрование выполняется непосредственно механизмом firebird для каждого пакета TCP/IP.

Что вы думаете об этом подходе против внешней туннелизации?

4b9b3361

Ответ 1

Я бы рекомендовал обернуть обмен данными в потоке SSL/TLS с обеих сторон. Это проверенный стандарт. Хотя пользовательские реализации со статическими ключами могут быть небезопасными.

Например, режим CTR с константой IV может отображать много информации, поскольку он только шифрует увеличивающийся вектор и XORes с данными, поэтому XORing двух зашифрованных пакетов покажет xored версию незашифрованных пакетов.

Ответ 2

В общем, мое мнение о критически важном для безопасности кодексе заключается в следующем: "вы хотите как можно больше взглянуть на соответствующий код, и вы не хотите поддерживать его самостоятельно". Причина в том, что все мы ошибаемся, и в условиях совместной работы их скорее всего поймают. Кроме того, они, вероятно, будут лучше тестироваться.

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

  • Stunnel

  • IPSec (один из моих фаворитов). Обратите внимание, что с помощью IPSec вы можете создавать туннели, и затем их можно перенаправить на другие хосты, чтобы вы могли переместить управление VPN на компьютер, отличный от вашего хоста db. Вы также можете сделать IPSec непосредственно на хосте.

  • PPTP

  • Кросс-платформенное программное обеспечение vpn, такое как tinc и т.д.

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

Ответ 3

Предложение stunnel является хорошим, но если это не подходит, вы можете запустить виртуальную виртуальную виртуальную машину с проверкой подлинности. (Попробуйте сказать это несколько раз.) Это немного странно, но это сработает примерно так:

  • Настройте виртуальную машину на машине firebird и дайте этим виртуальным машинам два интерфейса, один, который выходит в вашу внешнюю локальную сеть (лучше всего, если вы действительно можете привяжите к нему карту локальной сети) и одну, которая является локальной сетью только для firebird.
  • Загрузите сервер openvpn в эту виртуальную машину и используйте как клиент, так и сервер сертификаты
  • Запустите клиент openvpn на своих клиентах.

Странно, но он обеспечивает следующее:

  • Ваши клиенты не могут подключиться к серверу, если только клиент и сервер соглашаются с сертификатами
  • Служба Firebird принимает только соединения через эту доверенную VPN ссылка.
  • Технически, локальные объекты все равно могут подключаться к Firebird сервер за пределами VPN, если вы этого хотите, например, консоли разработчика в той же локальной сети.

Ответ 4

Самый быстрый способ добиться успеха - это не улучшить firebird, а улучшить ваше соединение. Получите два устройства брандмауэра, которые могут выполнять аутентификацию SSL-сертификата, и поставить его перед сервером БД и устройством Firebird. Пусть устройства брандмауэра выполняют шифрование/дешифрование, а сервер БД выполняет свою работу без хлопот с каждым пакетом.