Форум русскоязычного сообщества Ubuntu


Получить помощь и пообщаться с другими пользователями Ubuntu можно
на irc канале #ubuntu-ru в сети Freenode
и в Jabber конференции ubuntu@conference.jabber.ru

Автор Тема: Настройка Iptables для внутрених адресов OpenVPN  (Прочитано 1302 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн vitaros

  • Автор темы
  • Новичок
  • *
  • Сообщений: 9
    • Просмотр профиля


Здравствуйте!

Поставлена задача скрыть от внешнего мира сервер с 1С, к которому подключаются по RDP из вне 10 клиентов. Сервер 1С скрыт за роутером с статическим IP-адресом и проброшенным портом 3389 наружу.

Перебрав кучу вариантов, мною было принято решение «спрятать» весь трафик, между клиентами и сервером, в VPN канал. Порывшись в Инете, я принял решение использовать OpenVPN.

И так, у нас есть «три точки», которые находятся в разных местах и в разных сетях. 1-я точка: OpenVPN сервер на базе Ubuntu 16.04 (в сети №1 с белым IP-адресом) 2-я точка: сервер 1С (в сети №2) . 3-я точка: пул клиентов в количестве 10 штук (в разных местах и в разных сетях) - точка-многоточка :-).

И так, OpenVPN сервер имеет на интерфейсе tun0 адрес 10.10.2.1, сервер 1С 10.10.2.202 и остальные клиенты от 10.10.2.6 до 10.10.2.42

После запуска всего этого дела, клиенты и сервер соединяются через OpenVPN сервер. Как бонус торчащий наружу порт 3389 был закрыт.

Но при таком раскладе сервер с 1С получается абсолютно «голый» перед всеми клиентами в VPN туннеле. Поэтому появилась новая задача - средствами iptables - закрыть все порты для адреса 10.10.2.202 оставив открытым лишь порт RDP 3389 для сервера 1С.

Прошу помощи в создании этого правила для iptables если это возможно, или предложите свой вариант для решения этой задачи.

Оффлайн fisher74

  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 13750
    • Просмотр профиля
Re: Настройка Iptables для внутрених адресов OpenVPN
« Ответ #1 : 10 Февраль 2017, 13:58:43 »
закройте так же как в самом начале было: на сервере OVPN с VPN-сети(сори за тафталогию) пробрасывайте только порт на 1C. Т.е. тот же nat, без прозрачной маршрутизации.

А по iptables мы готовы помочь... Именно помочь, а не делать за Вас. Представляйте свои наработки, а мы подскажем на проблемы и, возможно, как их устранить.
Принимаю благодарности в WMR и WMZ на кошельки:
R158160676909 и Z313280060764

Оффлайн vitaros

  • Автор темы
  • Новичок
  • *
  • Сообщений: 9
    • Просмотр профиля
Re: Настройка Iptables для внутрених адресов OpenVPN
« Ответ #2 : 10 Февраль 2017, 15:32:06 »
Вот что наизобретал!

Структура такая:
1. enp0s3 - физический интерфейс с адресом 192.168.1.9. На него с жилезного роутера прокинут порт 1194.
2. tun0 - виртуальный интерфейс OpenVPN. Ему выдан адрес 10.10.2.1
3. Клиенты и сервер 1С подключены к OpenVPN

iptables -A INPUT -i tun+ -d 10.10.2.202/32 -p tcp -m tcp  -m conntrack --ctstate  NEW,ESTABLISHED --dport 3389 -j ACCEPT
iptables -A OUTPUT -o tun+ -p tcp -m conntrack --ctstate ESTABLISHED --sport 3389 -j ACCEPT

Как теперь закрыть все порты для 10.10.2.202? iptables -A INPUT -j REJECT - не вариант.

Оффлайн fisher74

  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 13750
    • Просмотр профиля
Re: Настройка Iptables для внутрених адресов OpenVPN
« Ответ #3 : 10 Февраль 2017, 15:54:06 »
Рекомендую к изучению, тогда и беседа легче пойдёт.
Объём не большой, но оно стоит того. Вам же эту систему потом эксплуатировать.
Принимаю благодарности в WMR и WMZ на кошельки:
R158160676909 и Z313280060764

Оффлайн fisher74

  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 13750
    • Просмотр профиля
Re: Настройка Iptables для внутрених адресов OpenVPN
« Ответ #4 : 10 Февраль 2017, 17:32:51 »
Я повторюсь: форум предназначен для помощи, а не для "сделать за Вас". Для второго есть фрилансеры. Но они за бесплатно не помогают.
Покажите, что "у Вас не получилось", а не "Вам некогда читать всякую фрисурсную хрень"

Подсказка
существует два основных типа защиты системы:
1. Запрещено всё, кроме ...
2. Разрешено всё, кроме ...
Соответственно и строиться АЛГОРИТМ фильтрации пакетов, а не придумывается одно-два волшебных правила для решения задачи. Да, в итоге возможно он и выльется в 2-3 правила, но это уже будет единый механизм защиты.

Ещё чуть-чуть: в качестве "запрещено/разрешено всё" используется действие по умолчанию. То есть если пакет при прохождении цепочки не попадётся ни на одно из терминирующих правил, то будет выполнено это дефолтное действие.
Принимаю благодарности в WMR и WMZ на кошельки:
R158160676909 и Z313280060764

Оффлайн vitaros

  • Автор темы
  • Новичок
  • *
  • Сообщений: 9
    • Просмотр профиля
Re: Настройка Iptables для внутрених адресов OpenVPN
« Ответ #5 : 11 Февраль 2017, 23:04:33 »
Я думаю начал совсем не с того!
Для начала надо разрулить с маршрутами OpenVpn
Т.е.:
С включённой опцией client-to-client, openvpn сам рулит правилами и правила фаервола не дествуют на внутрение маршруты тунеля.
Без опции client-to-client, клиенты, по умолчанию, могут видеть только сервер  openvpn.
Я же хочу использовать openvpn как маршрутизатор. Т.е. прописать маршруты для того что бы клиенты видели друг друга. И только тогда применять к ним свои правила.

Правильно ли я мыслю?
Если правильно, то подскажите как правильно прописать эти маршруты или подскажите куда копать.
Средствами openvpn как то не помагает.

Оффлайн AnrDaemon

  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 27435
    • Просмотр профиля
Re: Настройка Iptables для внутрених адресов OpenVPN
« Ответ #6 : 12 Февраль 2017, 00:02:45 »
OpenVPN вообще к брандмауэру не имеет отношения.
Непонятно, зачем вы его сюда приплели.
Хотите получить помощь? Потрудитесь представить запрошенную информацию в полном объёме.

Прежде чем [Отправить], нажми [Просмотр] и прочти собственное сообщение. Сам-то понял, что написал?…

Оффлайн vitaros

  • Автор темы
  • Новичок
  • *
  • Сообщений: 9
    • Просмотр профиля
Re: Настройка Iptables для внутрених адресов OpenVPN
« Ответ #7 : 12 Февраль 2017, 01:02:43 »
Цитировать
OpenVPN вообще к брандмауэру не имеет отношения.
Непонятно, зачем вы его сюда приплели.

Хотите об этом поговорить?
Обясняю: Мне нужно оставить открытым только один порт 3389 для адреса 10.10.2.202
При включёной опции client-to-client правила брандмауэра не работают

-A forward -i tun0 -d 10.10.2.202 -p tcp --dport 3389 -j ACCEPT
-A forward -i tun0 -d 10.10.2.202 -j DROP

Можете объяснить почему? Сомневаюсь!

Оффлайн fisher74

  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 13750
    • Просмотр профиля
Re: Настройка Iptables для внутрених адресов OpenVPN
« Ответ #8 : 12 Февраль 2017, 11:02:11 »
1. (повторюсь) netfilter - комплексный механизм, а не сборник единичных правил. Потому нужно видеть полный набор правил, как минимум, рассматриваемой цепочки (но все таблицы). Но...
2. сервис OVPN имеет своё собственное ядро для работы с пакетами и с ядром системы не пересекается - "потому и не кусают"
Принимаю благодарности в WMR и WMZ на кошельки:
R158160676909 и Z313280060764

Оффлайн vitaros

  • Автор темы
  • Новичок
  • *
  • Сообщений: 9
    • Просмотр профиля
Re: Настройка Iptables для внутрених адресов OpenVPN
« Ответ #9 : 12 Февраль 2017, 22:00:38 »
Опишем "правильный" алгоритм решения задачи

1. Для того что бы правила фаервола срабатывали в vpn сети OpenVPN сервера, в конфигурации этого сервера исключаем опцию client-to-client.
2.В конфигурацию сервера добавляем маршрут VPN сети.
3. Пишем правила для фаервола.

Конкретно для моего случая:
1. Исключаем опцию client-to-client.
2.В конфигурацию сервера добавляем маршрут VPN сети
route 10.10.2.0 255.255.255.0 - маршрут для сервера (не обязательно. Не проверял)
push «route 10.10.2.0 255.255.255.0» - маршрут для клиента.
3. Пишем правила для фаервола
-A forward -i tun[ваш-интерфейс] -d 10.10.2.202 -p tcp --dport 3389 -j ACCEPT
-A forward -i tun[ваш-интерфейс] -d 10.10.2.202 -j DROP

Всё!!! Работает и радует.
У меня проблема была на сервере 1С. Которая решилась перезагрузкой виртуального сетевого  интерфейса (отключить-включить) ;)

Можна сделать маленький отступ.
Пока вы объясняли мне "Как космические корабли бороздят просторы Большого Театра", мне люди помогли понять, осознать и даже дали готовые примеры (Безвозмездно).

P.S.
Для вашего форума, в правилах, нужно внести один пункт и выделить жирным "Если нечего сказать лучше промолчать"

Оффлайн vitaros

  • Автор темы
  • Новичок
  • *
  • Сообщений: 9
    • Просмотр профиля
Решил кое-что допилить .
Т.е. хотелось, чтоб всё выглядело примерно так:
1. К серверу 1С на порт 3389 имеют доступ все.
2. Все клиенты не видят друг друга (и администраторов тоже)
3. Есть несколько администраторов, которые видят всех.

С первым пунктом разобрался.
Со вторым туговато. Есть два варианта:

1. Создать несколько подсетей. Например, сервер 1C и админы в подсети 10.10.2.0/24 у клиентов 10.10.1.0/24
В конфигурации клиента на сервере в CCD пропишем маршрут
Для сервера 1С и админов
push "route 10.10.1.0 255.255.255.0"
push "route 10.10.2.0 255.255.255.0"

Для клиентов лишь
push "route 10.10.2.0 255.255.255.0"Т.е маршрут для клиентов не существует и они не видят друг друга

Но тут вопрос, какое правило прописать для админов чтоб быть закрытыми для всех но видеть всех?

Вариант №2. Прописать правило для диапазона сетевых адресов
Тоже туплю с iptables

Прошу помощи! Скажите, в какую сторону копать




Оффлайн AnrDaemon

  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 27435
    • Просмотр профиля
Копать в сторону "не е…создавай себе проблем".
Хотите получить помощь? Потрудитесь представить запрошенную информацию в полном объёме.

Прежде чем [Отправить], нажми [Просмотр] и прочти собственное сообщение. Сам-то понял, что написал?…

 

Страница сгенерирована за 0.233 секунд. Запросов: 24.