Вопрос или проблема
Всем привет и с наступающим Новым годом,
Работаю на сервере, который управляет утилитарным сайтом среди других сервисов. Пытаюсь настроить файрвол:
root@vps-93cd9763:/etc# iptables -L
Chain INPUT (policy DROP)
target prot opt source destination
ACCEPT udp -- anywhere anywhere udp dpt:domain
ACCEPT tcp -- anywhere anywhere tcp dpt:http
ACCEPT tcp -- anywhere anywhere tcp dpt:https
ACCEPT tcp -- anywhere anywhere tcp dpt:domain
ACCEPT all -- 185.121.228.0/24 anywhere
185.121.228.0/24 — это откуда я подключаюсь к серверу через SSH.
Какие другие порты мне нужно открыть, чтобы сайт загружался? Потому что когда я возвращаю политику по умолчанию на ACCEPT, сайт загружается нормально.
Также есть NGINX, который выполняет внутреннюю переадресацию:
server {
# Listen on ipv4
listen 80;
listen [::]:80;
server_name _;
# Redirect all insecure http:// requests to https://
return 301 https://$host$request_uri;
}
server {
listen 443 ssl http2;
listen [::]:443 ssl http2;
server_name _;
root /var/www/html;
index index.php index.html;
include /etc/nginx/templates/misc.tmpl;
}
Любые идеи будут очень признательны!
Ответ или решение
Здравствуйте,
Судя по предоставленной информации, у вас возникают сложности с загрузкой веб-сайта при установке политики DROP в цепочке INPUT вашего iptables. Вы уже открыли основные порты для HTTP (80) и HTTPS (443), что правильно, так как NGINX использует их для обслуживания запросов. Однако сайт недоступен, что может указывать на несколько возможных проблем.
Возможные причины и рекомендации:
-
Обмен криптографическими данными:
- Уделите внимание тому, что ваш сервер обрабатывает SSL через порт 443. Проверьте, что сертификаты SSL/TSL настроены правильно и, возможно, получение обновлений с сервиса Let’s Encrypt осуществляется через соответствующие порты. Обычно это касается портов 80 и 443, но иногда используются дополнительные порты для автоматической проверки и обновления сертификатов.
-
DNS и другие сетевые службы:
- Если ваш сервер хостит DNS-записи (удаленные обновления или служебные записи), вам может потребоваться открыть дополнительные порты, связанные со служебными DNS-запросами (обычно UDP 53).
-
Обработка перенаправления:
- Ваша конфигурация NGINX содержит правило перенаправления с HTTP на HTTPS. Убедитесь, что это правильно обрабатывается и клиент имеет доступ к обоим портам (80 для перенаправления и 443 для окончательной загрузки).
-
Шлюзы и межсетевые экраны:
- Если применяется какой-либо файловый фильтр перед входом на ваш сервер, убедитесь, что он не блокирует необходимых портов или трафика.
-
Прочие внутренние службы:
- Возможно, ваше приложение или сайт использует внутренние API или сервисы, которые требуют открытых портов. Например, взаимодействие с базами данных может потребовать дополнительных открытых портов в локальной сети, если они не подразумеваются вашей первоначальной конфигурацией.
Решение проблемы:
-
Лог-файлы:
- Просмотрите соответствующие лог-файлы NGINX и логи системы, чтобы обнаружить дополнительные полезные сведения о причине отказа в обслуживании запросов.
-
Диагностика через
iptables
:- Выполните команду
iptables -nvL
для более детального вывода правил о трафике и убедитесь, что неправильно трактованный трафик не блокируется.
- Выполните команду
-
Мониторинг состояния:
- Используйте утилиты, такие как netstat или ss, для мониторинга сетевых подключений и выявления активных прослушиваемых портов.
Учитывая сложность сетевых конфигураций, важно все действия проверять в тестовой среде перед внедрением в живую продуктивную систему. Если вышеуказанные шаги не помогут, возможно, стоит обратиться за консультацией к сетевому специалисту для более углубленного анализа конфигурации сетевых подключений.
С уважением,
Ваш ИТ консультант.