Анонимизация OpenVPN Разрешить SSH доступ к внутреннему серверу

10

Я использую анонимный VPN, но хочу SSH доступ к внутреннему компьютеру.

Как я могу получить доступ к своему внутреннему компьютеру через SSH? Когда я делаю SSH 98.123.45.6 , время ожидания соединения.

  • IP-адрес от кабельного провайдера: 98.123.45.6
  • Анонимный IP через VPN: 50.1.2.3
  • Внутренний компьютер: 192.168.1.123

При поиске я нашел рекомендации по настройке правил iptables, правил маршрутизации или по добавлению ListenAddress в sshd_config. Что из этого относится к моему делу?

Вот мой маршрут :

Таблица маршрутизации IP ядра
Шлюз назначения Genmask Флаги Метрика Ссылка Использовать Iface
10.115.81.1 10.115.81.9 255.255.255.255 UGH 0 0 0 tun0
10.115.81.9 * 255.255.255.255 UH 0 0 0 tun0
50.1.2.3-sta ddwrt 255.255.255.255 UGH 0 0 0 eth0
192.168.1.0 * 255.255.255.0 U 202 0 0 eth0
169.254.0.0 * 255.255.0.0 U 204 0 0 vboxnet0
loopback * 255.0.0.0 U 0 0 0 lo
по умолчанию 10.115.81.9 128.0.0.0 UG 0 0 0 tun0
128.0.0.0 10.115.81.9 128.0.0.0 UG 0 0 0 tun0
по умолчанию ddwrt 0.0.0.0 UG 202 0 0 eth0
Лионель
источник

Ответы:

15

Чтобы решить эту проблему, вам нужно настроить как iptables, так и правила маршрутизации. Конкретная проблема, с которой вы сталкиваетесь, заключается в том, что исходящие пакеты SSH маршрутизируются через ваш анонимный интерфейс VPN-туннеля, а не через интерфейс Ethernet. Это происходит потому, что ваше программное обеспечение VPN настроило правило маршрутизации для отправки любого и всего необработанного трафика через туннельный интерфейс. Хорошо подходит для анонимизации вашего сетевого трафика; плохо для установления SSH-соединений с вашим компьютером.

Есть несколько способов решить эту проблему, но я поделюсь с вами тем, который работал для меня в такой же ситуации. Вот что нам нужно сделать:

  1. Создайте новую таблицу правил IP для обработки трафика не VPN
  2. Добавьте правило IP, чтобы просмотреть нашу таблицу без VPN для любых пакетов, помеченных определенной маской сетевого фильтра.
  3. Добавьте IP-маршрут, который направляет весь трафик в нашей таблице без VPN на использование вашего интерфейса Ethernet вместо туннеля.
  4. Добавьте правило iptables, чтобы пометить весь трафик SSH с помощью нашей назначенной маски сетевого фильтра.

Примечание: я работал с Raspbian, выполняя следующее, поэтому вам может понадобиться немного изменить команды, чтобы они подходили под ваш дистрибутив.

Создание новой таблицы правил IP

Начните с проверки файла определения таблицы iproute2. Мы хотим убедиться, что мы не используем имя или номер каких-либо существующих таблиц правил.

cat /etc/iproute2/rt_tables

Скорее всего, вы увидите что-то вроде этого:

# reserved values
255      local 
254      main
253      default   
0        unspec
#
# local
#
#1      inr.ruhep

Выберите произвольное число и имя для своей новой таблицы правил - ничего, что не использовалось выше. Я буду использовать номер 201 и имя novpnдля оставшейся части этого ответа.

Добавьте определение непосредственно в файл определения или отредактируйте его в текстовом редакторе по вашему выбору:

echo "201 novpn" >> /etc/iproute2/rt_tables

Добавьте новое правило IP для поиска таблицы без VPN

Проверьте все существующие правила ip, которые работают с масками netfilter:

ip rule show | grep fwmark

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

ip rule add fwmark 65 table novpn

Это приводит к тому, что любые пакеты с маской сетевого фильтра 65 ищут нашу новую novpnтаблицу для инструкций о том, как маршрутизировать пакеты.

Направьте весь трафик в нашей новой таблице на использование интерфейса Ethernet

ip route add default via YOUR.GATEWAY.IP.HERE dev eth0 table novpn

Здесь важно отметить следующее dev eth0. Это заставляет весь трафик, проходящий через novpnтаблицу, использовать только аппаратный интерфейс Ethernet вместо интерфейса виртуального туннеля, который создает ваша VPN.

Сейчас самое время очистить кэш iproute, чтобы убедиться, что новые правила и маршруты вступают в силу немедленно:

ip route flush cache

Поручить правилу брандмауэра пометить весь трафик SSH назначенной маской сетевого фильтра

iptables -t mangle -A OUTPUT -p tcp --sport 22 -j MARK --set-mark 65

Здесь слишком много вариантов, чтобы объяснить их с какой-либо глубины. Я настоятельно рекомендую вам прочитать страницу руководства для iptables, чтобы понять, что здесь происходит:

man iptables

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

Что дальше?

На этом этапе вы должны быть готовы к тестированию SSH. Если все идет хорошо, вас встретит радостная подсказка «Войти как».

В целях безопасности я рекомендую поручить брандмауэру отбрасывать любые входящие запросы SSH из туннельного интерфейса:

iptables -A INPUT -i tun0 -p tcp -m tcp --dport 22 -j DROP

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

Бен Д.
источник