Безопасное открытие порта

Безопасное открытие порта

Я работаю над веб-приложением, которое должно быть доступно только небольшому числу людей, оснащенных планшетами. Оно обслуживается портом 80 сервера, который находится в нашей локальной сети за маршрутизатором ISP.

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

Я думал открыть порт на маршрутизаторе, перенаправить его на сервер и защитить его сертификатом, но возможно ли это вообще?

Другим решением может стать установка VPN, но для некоторых пользователей это может оказаться слишком сложным в управлении.

решение1

Есть много способов сделать это, но правильный из них зависит от того, какие еще механизмы безопасности у вас есть. Примеры:

  • Клиентские сертификаты. Это вполне возможно, если только вы не хотите использовать порт 80, который обычно не зашифрован. Вам нужно будет перенастроить ваш веб-сервер или поставить перед ним прокси, но это, безусловно, возможно. Как это сделать с Apache, описано здесь,https://httpd.apache.org/docs/2.4/ssl/ssl_howto.html#allclients
  • Фильтрация по IP или MAC-адресу на сетевом уровне, т.е. в брандмауэре.
  • Используйте VPN, как вы упомянули. Это можно сделать достаточно прозрачным для пользователей.
  • Проверьте наличие заголовка аутентификации на веб-сервере или на прокси-сервере перед ним.

Несомненно, их больше. Некоторые из них не подходят, если у вас нет дополнительных методов аутентификации, например, MAC-адреса легко подделываются. Другие варианты становятся доступными, если вы ослабляете требование к сетевому порту выглядеть закрытым, поскольку многие методы аутентификации не работают, пока порт не открыт.

решение2

Ваш вопрос как-то обобщён. Вы можете сделать одно или несколько из следующих:

  1. Требуйте действительное имя пользователя/пароль для доступа к вашему веб-приложению. Это можно сделать на уровне приложения или на уровне веб-сервера (например: apache2).
  2. Защитите доступ к этому IP/порту, настроив брандмауэр. Разрешены только определенные IP. Другие запрещены. Для этого вам необходимо получить список IP-адресов ваших пользователей.
  3. Перенаправьте пользователей с http (порт 80) на https (порт 443) для защиты от атак типа «man-in-the-middle».
  4. Обеспечьте конфиденциальность доступа к серверу и направляйте трафик пользователей в вашу сеть (одно из решений VPN, требующих аутентификации).

Связанный контент