Можно ли внедрить дополнительный уровень авторизации перед тем, как получить доступ к веб-серверу?

Вопрос: У нас есть VPN-соединение между двумя роутерами OpenWRT: Роутер А с публичным IP-адресом и Роутер B, который обслуживает веб-сервер в своей сети. Мы настроили доступ к веб-серверу Роутера B из сети Роутера А и хотим реализовать перенаправление портов, чтобы можно было получить доступ к веб-серверу через публичный IP-адрес Роутера А. Понимаю, что это создаёт определённые риски для безопасности сервера, поэтому хочу внедрить "промежуточную" авторизацию на уровне Роутера А, чтобы фильтровать неизвестные соединения. Какие инструменты или методы могут помочь в реализации данной идеи? Установка дополнительного VPN-клиента невозможна, так как устройства клиентов будут разные, и требуется обеспечить доступ именно по IP-адресу.
  • 11 марта 2025 г. 14:44
Ответы на вопрос 4
Ваше стремление внедрить дополнительный уровень авторизации перед доступом к веб-серверу на Роутере B через публичный IP-адрес Роутера A вполне обосновано. Существует несколько методов и инструментов, которые могут помочь вам в этом. Вот некоторые из них:

1. **VPN с использованием OpenVPN или WireGuard**:
   Если возможно, настройте VPN-соединение таким образом, чтобы он работал как "промежуточный" уровень авторизации. Вы можете настроить OpenVPN или WireGuard на Роутере A для связи с Роутером B и разрешить только авторизованным IP-адресам доступ к веб-серверу.

2. **Авторизация через список контроля доступа (ACL)**:
   На Роутере A можно настроить ACL, чтобы ограничить доступ к веб-серверу только определённым IP-адресам или диапазонам IP-адресов. Это может стать первым уровнем защиты.

3. **Проведение авторизации через HTTP Basic Auth**:
   Если вы контролируете веб-сервер на Роутере B, можно использовать базовую HTTP авторизацию. Это добавит простой уровень безопасности, требуя ввода логина и пароля перед доступом к контенту.

4. **Использование firewalld или iptables**:
   Если у вас есть доступ к настройкам маршрутизатора, можно использовать `iptables` или `firewalld` для фильтрации трафика и разрешения соединений только с определённых портов. Это может быть использовано для блокировки нежелательного трафика.

5. **Настройка HTTP Proxy или Reverse Proxy**:
   Используйте прокси-сервер (например, Nginx или HAProxy) на Роутере A для управления доступом к веб-серверу. Прокси может выполнять функции аутентификации и обрабатывать только те запросы, которые прошли авторизацию.

6. **Использование системы обнаружения и предотвращения вторжений (IDS/IPS)**:
   Некоторые маршрутизаторы поддерживают встроенные IDS/IPS решения, которые могут отслеживать и блокировать подозрительный трафик.

7. **Настройка двухфакторной аутентификации (2FA)**:
   Хотя это сложнее реализовать, если ваш веб-сервер поддерживает 2FA, это значительно повысит безопасность.

8. **Мониторинг логов и уведомления**:
   Настройте систему мониторинга, чтобы отслеживать попытки доступа к веб-серверу и отправлять уведомления о подозрительной активности.

Выбор конкретного метода или их комбинации зависит от ваших требований к безопасности, доступных ресурсов и умений. Учтите, что любая дополнительная защита может усложнить доступ пользователям, поэтому важно найти баланс между удобством и безопасностью.
Для web сервера на Apache можно сделать авторизацию по паролю... 
https://www.digitalocean.com/community/tutorials/h...
Или по сертификату + паролю.
https://stuff-things.net/2015/09/28/configuring-ap...
Доступ по IP не является способом авторизации, а лишь способом ограничения доступа...
Если всеже надо именно ограничение по IP, то это делается указанием нужного IP в конфиге виртуального хостинга. Вот тут https://www.8host.com/blog/sozdanie-intraseti-s-po... примерно похожая задача решается, если я правильно понял задуманное.
Доступ надо ограничиваеть уже на веб сервере. тот же nginx или apache поддерживает авторизацию по логину и паролю 
На роутере это ограничение сделать никак, он просто пересылает пакеты туда-сюда
На роутере надо не порты перенаправлять, а устанавливать кэширующий прокси типа nginx или Caddy. На нём можно поднять http-авторизацию. Ненадёжно, да. 

Однако желательно уточнить, какого рода приложение вы собираетесь выпускать наружу, и нет ли в нём собственных механизмов такого рода.
Похожие вопросы