1С Предприятие 7.7 Защищенный автообмен через FTP

  • Автор:

1c_complex771.png

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

Онлайн-курс по устройству компьютерных сетей
На углубленном курсе "Архитектура современных компьютерных сетей" вы с нуля научитесь работать с Wireshark и «под микроскопом» изучите работу сетевых протоколов. На протяжении курса надо будет выполнить более пятидесяти лабораторных работ в Wireshark.

Основным незащищенным местом протокола FTP является передача учетных данных (логина и пароля) открытым способом в виде простого текста. Злоумышленнику не составит труда их перехватить и использовать, на рисунке ниже окно сниффера в котором прекрасно видны учетные данные. Учитывая, что в нашем случае передается информация в ряде случаев составляющая коммерческую тайну, становится очевидно, что требуются меры по защите данных в процессе автообмена.

1cv77-urib-sftp-001.png

С другой стороны для пользователя, который чаще всего не является специалистом в данной области, процесс автообмена должен оставаться максимально простым (сводиться к нажатию ярлыка).

Используем защищенный протокол SFTP

Протокол SFTP предназначен для копирования и выполнения других операций с файлами поверх надёжного и безопасного соединения. Как правило, в качестве базового протокола, обеспечивающего соединение, используется протокол SSH, что обеспечивает весьма высокую защищенность соединения. Чтобы начать использование SFTP достаточно иметь его поддержку со стороны сервера, так большинство хостеров предоставляют доступ к шеллу через SSH, что дает возможность использовать SFTP. Так как в основу нашей системы положен WinSCP, то никаких дополнительных компонентов нам не понадобится, достаточно внести изменения в конфигурационные файлы.

Для начала откроем get.ini, закомменитруем строку включающую автоподтверждение действия по умолчанию и внесем изменения в параметры соединения с сервером:

# Автоматическое подтверждение действия по умолчанию
# option confirm off

# Соединяемся с сервером
open sftp://login:password@mysite.ru

Теперь запустим WinSCP командой:

winscp.exe /console /script=get.ini

В ответ получим приглашение принять ключ хоста и скопировать его в кэш, но не спешим этого делать, сначала скопируем ключ (клавиша C) и снова откроем get.ini. Раскомментируем автоподтверждение, а в параметры подключения добавим скопированный нами ключ:

# Автоматическое подтверждение действия по умолчанию
option confirm off

# Соединяемся с сервером
open sftp://login:password@mysite.ru -hostkey="ssh-dss 1024 xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx"

В put.ini достаточно изменить только секцию соединения с сервером. Подключение настроено, теперь нужно разобраться с путями. Для FTP корневым является домашний каталог, все пути далее строятся от него, работая через SFTP пути необходимо указывать от корня файловой системы сервера (абсолютный путь), узнать этот параметр можно у хостера или администратора сервера. Так в нашем случае для FTP мы указывали путь:

/tis/F9.zip

Для SFTP этот же путь имеет вид:

/www/users/interface31/tis/F9.zip

Изменив пути в файлах скриптов можно проверять работу автообмена, только уже по защищенному протоколу. Можем запустить сниффер и убедиться, что никаких лишних данных в сеть не утекает.

1cv77-urib-sftp-002.pngКак видим, благодаря использованию WinSCP, настройка системы на работу по защищенному протоколу занимает минимум времени и производится "легким движением руки"

Шифруем данные

Следующим этапом защиты данных при автообмене является их шифрование. Описанный ниже метод кожно использовать как совместно с защищенным доступом так и отдельно, если применение SFTP по каким-то причинам невозможно. Несмотря на кажущуюся сложность этого процесса, реализуется шифрование довольно просто и если вы будете следовать нашим рекомендациям то никаких проблем быть не должно. В качестве программы для шифрования мы будем использовать GnuPG (скачать) бесплатную кроссплатформенную утилиту с интерфейсом командной строки. В качестве языка установки (не путать с языком инсталлятора) выбираем русский, чтобы было проще понимать, что она от нас хочет. После установки нужно добавить путь к каталогу с программой в переменную PATH.

1cv77-urib-sftp-003.pngПеред ее использованием нам надо создать два (или более, по числу филиалов) набора ключей. Для этого запускаем командную строку и набираем команду:

gpg.exe --gen-key

Система предложит выбрать тип генерируемого ключа, не вдаваясь в подробности выбираем тип 1 "DSA и ElGamal" , срок действия ключа (нас устроит бессрочный) а также вводим имя, e-mail и комментарий (необязательно). Далее задаем пароль, для защиты ключа и ждем пока идет процесс рандомизации, для его ускорения можем понажимать на клавиши или подвигать мышку. По завершении генерации ключа необходимо экспортировать открытый ключ для расшифровки, который мы передадим в филиал. Это можно сделать командой:

gpg.exe --output f:\office.gpg --export office@company.com

В нашем случае мы выгрузили ключ на съемный диск F: под именем office.gpg, параметр office@company.com указывает ID того ключа, который необходимо выгрузить (этот e-mail мы указали при генерации ключа шагом ранее).

Аналогичные действия проводим и на компьютере филиала. Теперь необходимо импортировать полученный из филиала открытый ключ (в нашем случае это filial.gpg):

gpg.exe --import f:\filial.gpg

и подписать его:

gpg.exe --edit-key filial@company.com

По выполнении данной команды появится приглашение командного интерпретатора GnuPG, вводим команду sign и подтверждаем свои действия, после подписания вводим команду save. Такие же действия необходимо повторить с открытым ключом office.gpg на компьютере филиала. Теперь мы готовы принимать и отправлять зашифрованные данные.

Теперь откорректируем Avtoobmen.bat, добавим в него строки для рашифровки полученного файла обмена:

gpg.exe --output С:\1c_bases\DB\PC\F9.zip --passphrase 123456 --yes --decrypt С:\1c_bases\DB\PC\F9.zip.pgp

И зашифровки выгруженного:

gpg.exe --output С:\1c_bases\DB\CP\F8.zip.gpg --yes --encrypt --recipient office@company.com С:\1c_bases\DB\CP\F8.zip

На первый взгляд приведенные выше команды могут показаться "китайской грамотой", однако все очень просто, GnuPG имеет следующий синтаксис:

  • --output С:\1c_bases\DB\PC\F9.zip - указывает вывод для команды, для команды шифрования это путь и имя зашифрованного файла, для команды дешифрования это путь и имя расшифрованного файла. Мы добавляли зашифрованным файлам второе расширение .gpg,однако в целях безопасности можно дать им любое другое имя и расширение, чтобы не было понятно, что это за файл вообще.
  • --yes - подтверждение действия по умолчанию, нужен для автоматической перезаписи уже существующего файла.
  • --passphrase 123456 - указывает пароль ключа для расшифровки (в нашем случае 123456)
  • --encrypt --recipient office@company.com С:\1c_bases\DB\CP\F8.zip - команда шифрования "recipient office@company.com" - указывает получателя зашифрованного файла и только указанный в этой опции получатель сможет его расшифровать, после получателя указывается путь к файлу, который необходимо зашифровать.
  • --decrypt С:\1c_bases\DB\PC\F9.zip.pgp - команда дешифровки, указывается путь к файлу, который необходимо расшифровать.

В итоге наш Avtoobmen.bat должен выглядеть следующим образом:

winscp.exe /console /script=get.ini

gpg.exe --output С:\1c_bases\DB\PC\F9.zip --passphrase 123456 --yes --decrypt С:\1c_bases\DB\PC\F9.zip.pgp

"C:\Program Files\1Cv77\BIN\1cv7.exe" CONFIG /D"С:\1с_bases\DB\" /NAvtoobmen/P123456 /@С:\1с_bases\script\autoexec

gpg.exe --output С:\1c_bases\DB\CP\F8.zip.gpg --yes --encrypt --recipient office@company.com С:\1c_bases\DB\CP\F8.zip

winscp.exe /console /script=put.ini

Остается изменить команды get и put для выгрузки / загрузки не F8.zip / F9.zip а зашифрованных F8.zip.gpg / F9.zip.gpg в файлах get.ini и put.ini соответственно. Эти же операции проводим на компьютере филиала, после чего у нас будет полностью рабочая система автообмена с шифрованием данных.

Онлайн-курс по устройству компьютерных сетей
На углубленном курсе "Архитектура современных компьютерных сетей" вы с нуля научитесь работать с Wireshark и «под микроскопом» изучите работу сетевых протоколов. На протяжении курса надо будет выполнить более пятидесяти лабораторных работ в Wireshark.

Помогла статья? Поддержи автора и новые статьи будут выходить чаще:

Поддержи проект!

Или подпишись на наш Телеграм-канал: Подпишись на наш Telegram-канал



Loading Comments