В прошлой статье мы рассмотрели настройку автообмена с использованием FTP- сервера. При всех описанных достоинствах этому методу присущ недостаток - передача информации по незащищенным каналам связи, что не всегда приемлемо. В данной статье мы рассмотрим организацию защищенного автообмена на базе предложенной ранее схемы.
Онлайн-курс по устройству компьютерных сетей
На углубленном курсе "Архитектура современных компьютерных сетей" вы с нуля научитесь работать с Wireshark и «под микроскопом» изучите работу сетевых протоколов. На протяжении курса надо будет выполнить более пятидесяти лабораторных работ в Wireshark.
Основным незащищенным местом протокола FTP является передача учетных данных (логина и пароля) открытым способом в виде простого текста. Злоумышленнику не составит труда их перехватить и использовать, на рисунке ниже окно сниффера в котором прекрасно видны учетные данные. Учитывая, что в нашем случае передается информация в ряде случаев составляющая коммерческую тайну, становится очевидно, что требуются меры по защите данных в процессе автообмена.
С другой стороны для пользователя, который чаще всего не является специалистом в данной области, процесс автообмена должен оставаться максимально простым (сводиться к нажатию ярлыка).
Используем защищенный протокол 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
Изменив пути в файлах скриптов можно проверять работу автообмена, только уже по защищенному протоколу. Можем запустить сниффер и убедиться, что никаких лишних данных в сеть не утекает.
Как видим, благодаря использованию WinSCP, настройка системы на работу по защищенному протоколу занимает минимум времени и производится "легким движением руки"
Шифруем данные
Следующим этапом защиты данных при автообмене является их шифрование. Описанный ниже метод кожно использовать как совместно с защищенным доступом так и отдельно, если применение SFTP по каким-то причинам невозможно. Несмотря на кажущуюся сложность этого процесса, реализуется шифрование довольно просто и если вы будете следовать нашим рекомендациям то никаких проблем быть не должно. В качестве программы для шифрования мы будем использовать GnuPG (скачать) бесплатную кроссплатформенную утилиту с интерфейсом командной строки. В качестве языка установки (не путать с языком инсталлятора) выбираем русский, чтобы было проще понимать, что она от нас хочет. После установки нужно добавить путь к каталогу с программой в переменную PATH.
Перед ее использованием нам надо создать два (или более, по числу филиалов) набора ключей. Для этого запускаем командную строку и набираем команду:
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.
Последние комментарии