Ограничить порт сервера Linux для IP-адреса VPN

Вопрос или проблема

У меня есть 2 сервера, и я развернул VPN на сервере 1 с использованием IP-адреса сервера 1 в качестве IP-адреса VPN.

Затем я ограничил порты сервера 1 и сервера 2 с помощью iptables.

Это VPN, который я использовал KUY.io Konnect

Правила iptables для сервера 1 и сервера 2

iptables -A INPUT -p tcp -s ${SERVER_1_IP} --dport 8080 -j ACCEPT

iptables -A INPUT -p tcp -s 127.0.0.1 --dport 8080 -j ACCEPT

iptables -A INPUT -p tcp --dport 8080 -j DROP

Сервис, использующий порт 8080, развернут в docker с режимом сети host.

Проблема: я могу получить доступ к порту 8080 сервера 2 через VPN, но не к серверу 1.

Ответ или решение

Ограничение доступа к портам Linux-сервера для IP-адреса VPN

Введение

Вопрос ограничения доступа к портам серверов через настройки iptables является важным аспектом управления безопасностью в информационных технологиях. В данном случае, у вас имеется два сервера, на одном из которых развернут VPN-клиент, а на другом – сервис, работающий на порту 8080. Для обеспечения безопасности и доступа к этим сервисам необходимо правильно настроить правила iptables.

Проблема

Вы сталкиваетесь с проблемой доступа к порту 8080 на сервере 1 из-за конфигурации iptables. В то время как сервер 2 корректно принимает соединения через VPN, сервер 1 блокирует их. Давайте разберёмся, как корректно настроить правила для обоих серверов.

Текущие правила iptables

Ваши текущие правила iptables выглядят следующим образом:

iptables -A INPUT -p tcp -s ${SERVER_1_IP} --dport 8080 -j ACCEPT
iptables -A INPUT -p tcp -s 127.0.0.1 --dport 8080 -j ACCEPT
iptables -A INPUT -p tcp --dport 8080 -j DROP

Эти команды устанавливают следующие правила:

  1. Разрешить входящие TCP-запросы к порту 8080 от IP-адреса сервера 1.
  2. Разрешить локальные запросы к порту 8080.
  3. Блокировать все остальные запросы к порту 8080.

Анализ проблемы

Проблема заключается в том, что сервер 1 использует свой собственный IP-адрес, который, возможно, не совпадает с VPN-адресом или не соответствуют условиям вашего правила. В результате пакеты от VPN-клиента не проходят через ваши настройки iptables.

Решение

Для решения данной проблемы, необходимо внести следующие изменения в настройки iptables на сервере 1:

  1. Добавить правило для разрешения доступа от VPN: Убедитесь, что вы разрешаете запросы от VPN-адреса. Вам нужно будет определить IP-адреса, которые выделяются вашим VPN-сервером (это можно сделать с помощью ifconfig или ip a на сервере 1).

    iptables -A INPUT -p tcp -s ${VPN_IP} --dport 8080 -j ACCEPT
  2. Проверка порядка правил: Помните, что порядок правил в iptables важен. Более общие правила должны располагаться ниже более специфичных. После добавления строк для VPN, ваши правила могут выглядеть следующим образом:

    iptables -A INPUT -p tcp -s 127.0.0.1 --dport 8080 -j ACCEPT
    iptables -A INPUT -p tcp -s ${VPN_IP} --dport 8080 -j ACCEPT
    iptables -A INPUT -p tcp -s ${SERVER_1_IP} --dport 8080 -j ACCEPT
    iptables -A INPUT -p tcp --dport 8080 -j DROP
  3. Тестирование: После внесения изменений, протестируйте доступность порта 8080 на сервере 1 через VPN. Используйте команды curl или telnet на вашем VPN-клиенте, чтобы проверить доступ.

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

    service iptables save
    # или
    iptables-save > /etc/iptables/rules.v4

Заключение

Корректная настройка iptables является ключевым аспектом обеспечения безопасности серверов. Описанные выше шаги помогут вам ограничить доступ к портам только для IP-адресов VPN и локальных адресов, улучшая безопасность и функциональность ваших систем. Если у вас остались вопросы или возникли трудности, рекомендуем обратиться к системным администраторам для детального анализа вашей конфигурации.

Оцените материал
Добавить комментарий

Капча загружается...