Адміну на замітку: OpenVPN + pfSense + Dreamkas = автоматизація в роздрібній торгівлі


У статті буде розглянуто приклад налаштувань кас вендора Dreamkas і маршрутизатора pfSense для роботи з сервером 1С через OpenVPN швидко і зашифровано (з використанням TLS/SSL), з будь-яких публічних каналах.

Завдання: є багато кас у багатьох магазинах, є сервер 1С в офісі. Потрібно налаштувати взаємодія. Вдаватися в налаштування 1С не буду, акцент зроблено на OpenVPN в маршрутизаторі pfSense і побудові мережі. Детальний опис кас у моїй статті відсутня.

Пункт 1. Оновлюємо ЗА до актуальних версій
Версію pfSense можна подивитися на головній сторінці, там же оновити буквально в 3 кліка + 1 перезавантаження.

Версію каси можна оновити в автоматичному режимі через меню «настройки» на самій касі. Є ще купа варіантів оновлення, вони перераховані на сайті виробника.

В основному оновлювати потрібно для мінімізації проблем з OpenVPN. У мене були «нюанси» для роботи з openVPN на різних версіях pfSense. Захистите себе від зайвих проблем. Так само і пакет OpenVPN з'явився в касах відносно недавно.

Пункт 2. Виписуємо CA сертифікат
Йдемо в System->Cert.Manager->Ca, натискаємо кнопку Add і заповнюємо поля.



Звертаю увагу на поля:

— вибираємо Create an internal, якщо у вас немає вже готового сертифіката
Lifetime (days) — термін життя сертифікату CA
Common Name — саме так він буде відображатися далі в налаштуванні.
Вводите дані обдумано, змінити не вийде.

Пункт 3. Виписуємо сертифікат
Йдемо System → Certificate Manager → Certificates, натискаємо Add і заповнюємо поля.



Звертаю увагу на наступні пункти:

Create an internal, якщо у нас немає готового сертифіката
Certificate authority — вибираємо наш сертифікат CA, створений в п. 1
Certificate Type вибираємо Server
Lifetime (days) — термін життя сертифіката сервера
Common Name — саме так він буде відображатися далі в налаштуванні.

Пункт 4. Виписуємо клієнтський сертифікат
ВАЖЛИВО! Для кожного клієнта — свій індивідуальний сертифікат! Йдемо System → Certificate Manager → Certificates, натискаємо Add і заповнюємо поля. Все аналогічно п. 3, за винятком Certificate Type, де вибираємо Client

Звертаю увагу на наступні пункти:

Certificate authority — вибираємо наш сертифікат CA, створений в п. 1
Certificate Type вибираємо Server
Lifetime (days) — термін життя сертифіката сервера
Common Name — саме так він буде відображатися далі в налаштуванні.
— можна задіяти поле Alternative Names, але якщо ви не знаєте що це, то воно вам не потрібно(залиште порожнім). А взагалі — по цьому полю можна задавати доп налаштування і прив'язки для openVPN клієнтів.

Поділюся своїм досвідом — я даю усвідомлене назва у Common Name, mag.address.kassanomer — це дозволить візуально відрізняти сертифікати один від одного.

Пункт 5. Налаштовуємо OpenVPN
Тут все просто. Все в pfSense налаштовується мишкою через зручний інтерфейс. Спасибі розробникам і всім учасникам спільноти.

Йдемо VPN → OpenVPN → Servers, додаємо сервер.



Зроблю деякі зауваження:

— я працюю з tap тунелем, мені так зручніше, він імітує L2 рівень. З ним працюють всякі мультикасты, бродкасты і т. п.;
— протокол UDP швидше ніж TCP, і ширина каналу в однакових умовах більше. Це давня проблема OpenVPN;
— вибираємо в розділі Server mode режим Exploit;
— вибираємо в розділі Peer Certificate Authority зі списку наш сертифікат CA;
— вибираємо в розділі Server certificate наш сертифікат;
— вибираємо в розділі DH Parameter length (bits) потрібну довжину;
— вибираємо в розділі Certificate Depth режим One(Client+Server), це схема без засвідчують посередників;
— в розділі IPv4 Tunnel Network прописуємо нашу тунельну сітку, наприклад 192.168.202.0/24;
— в розділі IPv4 Local network(s) прописуємо ресурси, роутинг до яких повинні отримати каси. У мене це наприклад 192.168.100.2/32, 192.168.1.0/24;
— інше можна не чіпати, або заповнювати на свій розсуд. Не забудьте відкрити на фаєрволі порт, на який повешается ваш OpenVPN сервер.

ВАЖЛИВО!
Каси будуть чіплятися на сервер, і отримувати адреси з діапазону IPv4 Tunnel Network, адреси будуть видаватися в порядку черговості підключення. Але сервер 1С завжди повинен знати, що «така то каса» знаходиться на «такому-то адресою». Тому налаштовуємо далі.

Йдемо в VPN → OpenVPN → Client Specific Overrides, кнопка Add. Потрібно створити налаштування для конкретних клієнтів. Прив'яжемо кожному клієнту свій IP адреса



Далі алгоритм такий:

— вибираємо в Server List наш сервер
Common name прописуємо ім'я нашого клієнтського сертифіката з п. 4
— в розділі Advanced прописуємо команду присвоєння IP адреси
ifconfig-push 192.168.202.12 255.255.255.0


Пункт 6. Вивантаження з pfSense сертифікатів
Завантажити наступні файли:

1) CA-сетификат
2) клієнтський сертифікат + ключ
3) якщо у нас SSL/TLS, то збережемо ключ
4) dh параметри

Пункти 1) і 2) експортуються через веб-інтерфейс:



Файл для 3) експортується з налаштувань сервера OpenVPN. Якщо ви вже створили — зайдіть, там буде прописаний ключ. Копіюємо, вставляємо в файл зберігаємо наприклад в файл client.tls-auth.

DH параметри зберігаються через команди:

/usr/bin/openssl dhparam 1024 > /etc/dh1024.pem
/usr/bin/openssl dhparam 2048 > /etc/dh2048.pem
/usr/bin/openssl dhparam 4096 > /etc/dh4096.pem

Через меню Diagnostics ->Edit File відкриваємо потрібний нам файл, наприклад dh1024.pem, налаштування DH задаються в налаштуваннях сервера OpenVPN.

Пункт 7. Для загального розвитку
Коли я налаштовував TLS/SSL, я слабо уявляв, що повинно бути написано в конфіги у клієнта, у мене були дуже скромні знання з OpenVPN. Я спробував рішення в лоб — налаштував на іншому pfSense коннект в режимі «клієнт», подгрузил сертифікати клієнта, перевірив, як працює. Маршрутизатор налаштовується через веб інтерфейс, коннект не становило ніякої складності.

Завдяки консолі управління pfsense я знав, що конфіги OpenVPN лежать в папці /var/etc/openvpn. Використовуючи Edit File можна подивитися, як включення і вимикання галочок і параметрів у веб інтерфейсі прописується до файлу. Заодно можна підглянути ключі.

Якщо будете робити так само — не забуваємо видалити за собою OpenVPN-клієнт і сертифікати з тестового сервера.
Пункт 8. Налаштування каси
Біля каси за замовчуванням smb-папка з ім'ям \\ipaddress\exchange, там є доступ на запис. Вивантажуємо в неї всі 4 файлу з п. 6.

Подконнекчиваемся по SSH до каси, стандартний дефолтний акаунт root / 324012, переносимо наші файли в /opt/networks. Так, на борту якого то обрізаний лінукс.

Щоб коннектіться до сервера потрібний файл client.ovpn, його можна подивитися в п. 7 і відредагувати його під свої потреби. Покласти туди ж — /opt/networks. У мене вийшло приблизно так:

client
dev tap
proto udp
remote server_ip server_port
keepalive 10 60
ping-timer-rem
persist-tun
persist-key
cipher AES-128-CBC
auth SHA1
resolv-retry infinite
nobind
persist-key
persist-tun
ca "//opt//networks//CAforOpenVPN.crt"
cert "//opt//networks//mag.magaddress.kassa1.crt"
key "//opt//networks//mag.magaddress.kassa1.key"
dh "//opt//networks//dh1024.pem"
tls-client
<b>tls-auth "//opt//networks//client.tls-auth" 1
ns-cert-type server
verb 3

Файл зберігаємо. Все запрацює, коли ми перезагрузим касу, наприклад через reboot. Не забудьте прописати правила на інтерфейсі openVPN в pfSense для наших підмереж!

Як візуально бачити, що каси працюють(конектяться)?

Варіант 1 — винести віджет OpenVPN на головну сторінку pfSense
Варіант 2 — через меню Status->OpenVPN
Варіант 3 — через касу. Коннектимся по ssh, а далі стандартний набір — ifconfig, ping etc…

Пункт 9. Як працювати з 1С
Каса в smb-папці зберігає свої робочі матеріали. Сервер 1С зчитує їх і записує. Майте це на увазі цю дірку в інформаційній безпеці, коли будете проектувати мережу магазину.

Як підсумок
У статті розглянуто приклад, як маючи в розпорядженні безкоштовний маршрутизатор pfSense і безліч Linux-based кас можна зробити хороший шифрований тунель до віддаленого сервера 1С, який налаштовується за кілька кліків.

В описаному варіанті налаштування ми отримуємо дуже масштабну схему підключення кас з персональним сертифікатом для кожного віддаленого пристрою.

Використання OpenVPN безпосередньо в касі робить неактуальними ризики інформаційної безпеки в частині передачі даних.

Якщо у вас маленька торгова точка будувати мережу можливо немає необхідності. Купуємо будь-роутер з підтримкою 3G, заводимо інтернет — каса його отримує або по кабелю, або через Wi-Fi, і вже сама постукає на сервер. В моїх масштабах це суттєва економія на мережевій інфраструктурі.

Корисні посилання
Про pfSense
OpenVPN PKI: Site-to-Site інструкція для обговорення
Інструкція від виробника, без TLS/SSL шифрування


Всім спасибі.
Джерело: Хабрахабр

0 коментарів

Тільки зареєстровані та авторизовані користувачі можуть залишати коментарі.