1

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

У меня есть устройство черного ящика, которое действует как веб-сервер (я могу подключиться к нему локально, введя его IP-адрес в поле адреса браузера). Коробка не реализует никаких мер безопасности, кроме простого имени пользователя и пароля. Это, конечно, хорошо, когда этот сервер находится в изолированной сети, но я хочу иметь доступ к нему из Интернета - то есть из любой точки мира. При этом я хочу использовать безопасность TLS для шифрования данных.

Имея Rasbperry PI (и программное обеспечение openVPN), я подумал, что он подойдет для этого приложения. Существует множество различных учебных пособий по реализации VPN, моста, маршрутизатора и брандмауэра с использованием Raspberry PI, но я не могу понять, какая из четырех функций подходит для моего приложения. Концептуальная схема показана ниже:

Raspberry Pi будет иметь два сетевых интерфейса для доступа в интернет: один через наземный Ethernet (eth0), другой - через сотовый интернет (eth1) - который всегда доступен для наземного интернет-соединения. IP-адреса для обоих интерфейсов будут известны. Третий интерфейс Ethernet (eth2) будет подключен к локальной сети через коммутатор. Сервер также будет подключен к коммутатору. У меня нет контроля над сервером (это черный ящик) - я знаю только его IP-адрес.

Идея состоит в том, чтобы Raspberry PI выполнял роль посредника между мной и сервером, чтобы я мог безопасно подключиться к его веб-приложению с помощью своего веб-браузера. Но какие функции Raspberry Pi должен реализовать: VPN, маршрутизатор, мост или брандмауэр?

РЕДАКТИРОВАТЬ:

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

RP будет подключен к сотовому Интернету через интерфейс ppp0 и направит весь трафик на интерфейс eth0, который будет напрямую подключен к серверу:

  1. dynamic ppp0 IP address (given by cell service provider)
  2. static eth0 IP address (assigned by me)
  3. non-secure internet connection
  4. RP is connected to the server directly (no switch needed)

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

В настоящее время, когда я подключаю RPi к веб-серверу, я могу просматривать его из веб-браузера. Цель состоит в том, чтобы получить доступ к веб-серверу из Интернета через RPi. Может ли кто-нибудь предоставить учебное пособие о том, как правильно настроить маршрутизацию, учитывая, что интерфейс ppp0 будет подниматься и опускаться в зависимости от сотовой связи, а также его IP-адрес будет отличаться и каждый раз неизвестен.

2 ответа2

3

TLDR;

Вам нужен брандмауэр для защиты вашего веб-сервера, и ваш маршрутизатор, вероятно, уже предоставляет эту функцию.

ПОДРОБНОСТИ

Все, что вам действительно нужно, это брандмауэр и SSL для защиты вашего веб-сервера. Если ваш домашний маршрутизатор уже обеспечивает это, то Raspberry Pi не даст вам больше безопасности.

Вы должны использовать SSL для защиты связи с вашим веб-сервером. Вы можете потенциально использовать Raspberry Pi в качестве обратного прокси-сервера для обеспечения функциональности SSL, но обратные прокси-серверы существуют, поскольку шифрование SSL требует больших вычислительных ресурсов, а прокси-сервер снимает нагрузку SSL с веб-сервера. Пи, вероятно, имеет гораздо меньше вычислений, чем ваш веб-сервер. Но если вы ищете проект Pi, это может быть весело.

Распространенным заблуждением является то, что VPN "более безопасен", чем без него. VPN - это просто шифрование + туннелирование. Туннелирование - это то, что позволяет обеим сетям считать, что они находятся в одной сети. Если вы не пытаетесь "жениться" на двух сетях, вам не нужен VPN. SSL + брандмауэр должен быть в порядке.

1

Простейшим решением было бы настроить ваш Pi как устройство маршрутизатора / брандмауэра - то есть вы бы хотели направлять запросы брандмауэра на веб-сервер, чтобы они проходили через PI, только если они проходят через интерфейс VPN, который заканчивается на нем, но не будет изолировать Pi от других устройств в вашей локальной сети. Это означает, что он будет работать только на все подключения к Интернету через Pi согласно вашей схеме. Если другое устройство в локальной сети взломано, доступ к веб-серверу может быть получен через него.

(Если вы ищете простое и умеренно безопасное решение, вы можете игнорировать все ниже)

Есть более сложные и дорогие сценарии, которые вы могли бы использовать вместо этого. Вместо использования обычного коммутатора вы можете использовать управляемый коммутатор и настроить веб-сервер на свою собственную VLAN, которая видна только Пи (т. Е. Пи будет говорить по нескольким VLANS). Вы также можете назначить веб-серверу собственный IP-адрес, что позволит другим устройствам в локальной сети общаться с ним, но только через Pi.

Вы можете дополнительно расширить идею коммутатора, описанную выше, брандмауэром VLAN, на которой работает веб-сервер, так что через порт 80 могут общаться только пакеты, исходящие из интерфейса VLAN PI. Затем вы можете добавить обратный прокси-сервер (например, с использованием Apache) к Pi, который может отвечать на порт 443, а затем получать запросы от веб-сервера на порт 80. Используя клиентскую сторону и обычный сертификат, вы можете гарантировать, что только люди, которые могут получить доступ к маршрутизатору, и люди с клиентским сертификатом смогут подключиться.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .