Министерство экономического развития Российской Федерации
ЗАО «Интерфакс»
|
|
УТВЕРЖДАЮ
|
|
|
Первый заместитель генерального директора ЗАО «Интерфакс»
|
|
|
______________________ В.В. Герасимов
|
|
|
«_____» ____________ 2012 г.
|
|
|
М.П.
|
АВТОМАТИЗИРОВАННАЯ ИНФОРМАЦИОННАЯ СИСТЕМА
«СВЕДЕНИЯ О БАНКРОТСТВЕ. УДАЛЕННОЕ РАБОЧЕЕ МЕСТО ЕФИР СБ»
Шифр темы 2135-09-11
РУКОВОДСТВО СИСТЕМНОГО ПРОГРАММИСТА
На листах
Действует с «____» ____________ 2012 г.
СОГЛАСОВАНО
|
|
СОГЛАСОВАНО
|
Директор Департамента инновационного развития и корпоративного управления Минэкономразвития России
|
|
Директор Департамента государственного регулирования в экономике Минэкономразвития России
|
____________________ И. В. Осколков
|
|
____________________ А.И. Херсонцев
|
«_____» ____________ 2012 г.
|
|
«_____» ____________ 2012 г.
|
ОГЛАВЛЕНИЕ
-
АННОТАЦИЯ
Настоящий документ представляет собой руководство системного программиста программного обеспечения «Сведения о банкротстве. Удаленное рабочее место ЕФИР СБ» – информационно-аналитической системы, именуемой далее ИАС «Сведения о банкротстве. Удаленное рабочее место ЕФИР СБ» или «Система».
В руководстве системного программиста описаны требования к рабочему месту, а также принципы установки и настройки автоматизированной системы и необходимых для ее функционирования программных компонентов.
-
ВВЕДЕНИЕ
-
Знакомство с системой
ИАС «Сведения о банкротстве. Удаленное рабочее место ЕФИР СБ» представляет собой клиентское веб-приложение, работа с которым осуществляется посредством веб-браузера, и предназначено для взаимодействия с подсистемой прокси-серверов (рабочее место пользователя ИАС «Сведения о банкротстве. Удаленное рабочее место ЕФИР СБ»).
Задачей системы является просмотр всех запросов и ответов пользователей электронных торговых площадок в «сыром» виде (за определенный период в хронологическом порядке) для дальнейшего рассмотрения жалоб вручную.
ИАС «Сведения о банкротстве. Удаленное рабочее место ЕФИР СБ» предполагает разделение участников по следующим ролям: «пользователь» и «администратор», которые обеспечивают доступ к выполнению определенного перечня действий в соответствии с возложенными на пользователей обязанностями.
-
Уровень подготовки системного программиста
Системный программист должен иметь навыки работы системным администратором UNIX/Linux, опыт удаленного администрирования серверов, понимать принципы работы UNIX/Linux (Debian-based) и сетевых протоколов. Знание протоколов маршрутизации приветствуется.
Кроме того, программист должен обладать знаниями по установке и последующей настройке программных продуктов:
apache
iptables
python
MongoDB
MySQL
Уровень подготовки системного программиста также включает в себя написание shell-скриптов.
Для установки системы требуется наличие персонального компьютера IBM PC под управлением Debian Linux 6.0 и определенным набором программных компонентов.
-
Перечень эксплуатационной документации, с которой необходимо ознакомиться системному программисту
Перед началом установки и первоначальной настройки АИС «Сведения о банкротстве. Удаленное рабочее место ЕФИР СБ» системному программисту рекомендуется ознакомиться с настоящим документом.
-
СОСТАВ СИСТЕМЫ
Система представляет собой модуль сбора и хранения сетевого трафика между электронной торговой площадкой и пользователем.
Общая схема программно-аппаратного комплекса представлена на рис. 1
Рис. 1
Модуль отслеживания манипуляций с помощью прозрачных прокси-серверов состоит из 3 основных блоков:
Кластер прозрачных прокси-серверов с возможностью дешифрования и сохранения сетевого трафика между клиентом и электронной площадкой.
Основные функции:
Дешифрация сетевого трафика (HTTPS)
Дешифрация HTTPS-трафика осуществляется автоматически на каждом из прокси-серверов кластера.
Прозрачное проксирование HTTP трафика
Запись всех запросов к электронной площадке от клиента
Запись всех ответов ЭП клиенту
Запись все запросов и ответов производится в виде «сырого» трафика, разделенного по сессиям клиентов.
Данные о запросах и ответах хранятся в документоориентированной базе MongoDB данных на каждом из прокси-серверов кластера (один сервер – одна площадка).
Предобработка данных: получение соответствий между логином клиента на площадке и ID сессии, маркировка сохраненных пакетов.
Хранение трафика торговой площадки в течение определенного времени (к примеру, 3 месяца)
На рис. 2 представлена схема дешифрации/шифрации и перехвата HTTPS-трафика при помощи программы Stunnel.
Рис. 2
Центральный сервер сбора и анализа трафика (с кластера прокси-серверов) (рис. 3).
Основные функции:
Получение дешифрованного трафика с кластера прокси-серверов
Сохранение сетевого обмена между клиентами и площадками в едином хранилище
Предоставление клиентскому приложению данных о сетевом обмене
Рис. 3
Клиентское приложение для взаимодействия с подсистемой прокси-серверов (рабочее место пользователя АИС «Сведения о банкротстве. Удаленное рабочее место ЕФИР СБ») (рис. 4).
Основные функции:
Настройка, администрирование и контроль системы прокси-серверов
Возможность просмотра всех страниц, отданных площадкой за определенный период клиенту, в хронологическом порядке для рассмотрения жалобы вручную
Выгрузка трафика в «сыром» виде по определенной сессии пользователя
Рис. 4
-
УСТАНОВКА И НАСТРОЙКА СИСТЕМЫ
Каждый из следующих компонентов Системы: Кластер прозрачных прокси-серверов с возможностью дешифрования и сохранения сетевого трафика между клиентом и электронной площадкой (сборщик данных) и Клиентское приложение для взаимодействия с подсистемой прокси-серверов – представляют собой компьютер IBM PC под управлением ОС Debian Linux 6.0. Начальная установка обоих компонентов совпадает, тогда так набор программного обеспечения для их функционирования различается. Должны быть получены все исходные файлы системы iproxy.
-
Подготовка рабочего места программиста
Подготовка рабочего места программиста включает в себя:
Установку ОС Debian Linux 6.0.
Дистрибутив системы можно скачать с сайта debian.org, перейдя по следующему адресу: http://www.debian.org/distrib/ftplist . При выборе ОС следует остановиться на 64-битной версии, так как БД MongoDB имеет ограничения по работе под Debian Linux 32bit.
Установку Python из репозитария (команда «apt-get install python»). Ссылка на соответствующую документацию: http://www.python.org/ .
Установку веб-сервера (команда «apt-get install apache2»). Ссылка на документацию: http://apache.org/ .
-
Framework для работы веб-интерфейсов (команда «apt-get install python-django»). Ссылка на документацию: https://www.djangoproject.com/ .
-
Установка ПО для кластера прозрачных прокси-серверов
Установка ПО
На данном этапе следует произвести установку следующих компонентов:
Установка БД Mongo DB производится командой «apt-get install mongodb». Документация расположена по следующей ссылке: http://www.mongodb.org/ . Создание базы происходит автоматически при первом обращении.
«Туннельный» SSL-прокси Stunnel
Установка осуществляется посредством команды «apt-get install stunnel4». Ссылка на документацию: http://www.stunnel.org/ .
Установка пакета поддержки в Python базы MongoDB.
Выполняется командой «apt-get install python-mongoengine». Ссылка на документацию: http://mongoengine.org/ .
Настройка Apache на сборщике данных
Далее должна быть произведена настройка Apache на сборщике данных. Следует добавить в Apache сайт, расположенный в папке «iproxy/src/dataview»
С инструкцией по настройке сайта на фреймворке Django под Apache можно ознакомиться по адресу: https://docs.djangoproject.com/en/dev/howto/deployment/modpython/?from=olddocs . Пример конфигурационного файла можно посмотреть в папке «iproxy/config/apache/dataview» (пример 1):
VirtualHost 95.79.54.203:7000>
SetHandler python-program
PythonHandler django.core.handlers.modpython
SetEnv DJANGO_SETTINGS_MODULE dataview.settings
PythonOption django.root /dataview
PythonDebug On
PythonPath "['/home/eugene/Projects/iproxy/src/','/home/eugene/Projects/iproxy/src/dataview','/home/eugene/Projects/iproxy'] + sys.path"
SetHandler None
CustomLog /home/eugene/Projects/iproxy/src/dataview/log/access.log common
ErrorLog /home/eugene/Projects/iproxy/src/dataview/log/error.log
|
Пример 1
Настройка Stunnel
Следующий этап – настройка Stunnel для обработки HTTPS-трафика, идущего через площадку (трафик вида HTTP обрабатывать не нужно).
Для этого должны быть установлены 2 SSL-прокси Stunnel: один для дешифрации HTTPS (сервер), другой для шифрации HTTP HTTPS (клиент). Образцы конфигурационных файлов представлены в папке «iproxy/config» (файлы «stunnel_client.conf.example» и «stunnel_server.conf.example»).
Проброс HTTP-трафика
HTTP-трафик должен пробрасываться через сборщик данных напрямую. Для этого следует включить процесс маскарадинга при помощи «iptables».
Документация на «iptables» представлена по ссылке: http://www.opennet.ru/docs/RUS/iptables .
Далее представлен пример shell-скрипта (пример 2):
IPTABLES="/sbin/iptables"
ext_ip="193.104.207.103" # внешний ip
local_ip="95.79.54.203" #локальный ip
port="80"
echo 1 > /proc/sys/net/ipv4/ip_forward
$IPTABLES -t nat -F PREROUTING
$IPTABLES -t nat -F POSTROUTING
$IPTABLES -F FORWARD
$IPTABLES -F INPUT
iptables -t nat -A PREROUTING -p tcp -i eth1 -d $local_ip --dport $port -j DNAT --to $ext_ip:$port
iptables -t nat -A POSTROUTING -o eth1 -j MASQUERADE
|
Пример 2
Запуск HTTP-снифера
Для перехвата HTTP-трафика должен быть запущен HTTP-снифер (адрес исходных файлов – «src/httpshiff»). В случае если нужно дополнительно перехватывать трафик c Stunnel, следует запустить еще один снифер.
Снифер использует общий конфигурационный файл (пример расположен по адресу «iproxy/config/main.cfg» (пример 3)):
[platform]
num: 3
url: proxytest.bankruptcy.sberbank-ast.ru
[network]
port: 9000
interface: lo
[database]
name: iproxy
[storage]
main: /STORAGE_1
[auth]
sess_id_key: ASP.NET_SessionId
login_pattern: txbLogin=(\w+)&
url_login: POST\s/\s|POST\s/Default.aspx\s
url_success: (?!showLookupExtender)
|
Пример 3
Конфигурационный файл поделен на секции типа [….] и содержит параметры в них. Каждая секция параметров начинается с новой строки. В секции для снифера [network] должен быть указан «port» для перехвата трафика и сетевой интерфейс «interface». Перехватываемый снифером трафик следует располагать в папке «main» из секции [storage] .
Импорт трафика из папки в базу данных
Перехваченный снифером трафик обрабатывается при помощи скрипта «importdb.py» – для этого нужно применить функцию Python «importdb.py main.cfg». Скрипт обращается к данным из папки «main» из секции [storage] и импортирует их в базу, в случае iproxy – [database] name.
Парсинг логинов в базе данных
Данные в базе хранятся в виде HTTP-трафика. Для выделения логинов следует выделить в HTTP-трафике страницу входа, успешную страницу входа и «cookie». Соответствующая документация: http://ru.wikipedia.org/wiki/HTTP_cookie .
[auth]
sess_id_key: ASP.NET_SessionId
login_pattern: txbLogin=(\w+)&
url_login: POST\s/\s|POST\s/Default.aspx\s
url_success: (?!showLookupExtender)
|
Пример 4
В примере 4 указаны параметры: «sess_id_key» – ключ, содержащий cookie, «login_pattern» – паттерн логина на языке RegExp.
Соответствующая документация: http://ru.wikipedia.org/wiki/%D0%A0%D0%B5%D0%B3%D1%83%D0%BB%D1%8F%D1%80%D0%BD%D1%8B%D0%B5_%D0%B2%D1%8B%D1%80%D0%B0%D0%B6%D0%B5%D0%BD%D0%B8%D1%8F .
«url_login»: URL страницы, где пользователь вводит логин и пароль.
«url_success»: URL входа после успешной авторизации.
Для парсинга логинов следует запустить скрипт «python parse_cookies.py main.cfg»
-
Установка ПО для клиентского приложения
Настройка MySQL
Для клиентского приложения следует использовать базу MySQL. Установка производится командой «apt-get install mysql-server» (ссылка на документацию: http://mysql.com/). В процессе установки потребуется указать логин и пароль. В качестве логина укажите «root», поле с паролем оставьте незаполненным.
Требуемая поддержка базы MySQL в Python реализуется посредством установочной команды apt-get install python-mysqldb (ссылка на документацию: http://api.mongodb.org/python/ ).
Чтобы создать на центральной системе базу, в консоли необходимо задать команду «mysql –u root» (пример 5).
root@server05:/tmp# mysql -u root
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 9267
Server version: 5.1.61-2 (Debian)
Copyright (c) 2000, 2011, Oracle and/or its affiliates. All rights reserved.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql>
|
Пример 5
В строке «mysql>» для создания базы следует прописать без кавычек команду «CREATE DATABASE iproxyview CHARACTER SET utf8;».
Настройка Apache на центральном сервере
Настройка Apache включает в себя добавление сайта, находящегося в папке «iproxy/src/iproxyview».
Инструкция по настройке сайта на framework Django под Apach: https://docs.djangoproject.com/en/dev/howto/deployment/modpython/?from=olddocs .
Пример конфигурационного файла расположен в папке «iproxy/config/apache/iproxyview».
Текущий конфигурационный файл для Apach выглядит следующим образом (пример 6):
irtualHost 192.168.102.4:7050>
DocumentRoot '/home/eugene/Projects/iproxy/src/iproxyview'
SetHandler python-program
PythonHandler django.core.handlers.modpython
SetEnv DJANGO_SETTINGS_MODULE iproxyview.settings
PythonOption django.root /iproxyview
PythonDebug On
PythonPath "['/home/eugene/Projects/iproxy/src/','/home/eugene/Projects/iproxy/src/iproxyview','/home/eugene/Projects/iproxy'] + sys.path"
SetHandler None
|
Пример 6
Получение индексной информации
Для получения индексной информации со сборщика данных нужно запустить скрипт «iproxyview/manage.py get_new_login».
Москва, 2012
|