Я использую частные сети на Цифровом Океане между подсистемой балансировки нагрузки и веб-сервером (nginx/node). Я хочу, чтобы веб-сервер заблокировал весь входящий трафик на всех портах, кроме двух вещей:
Я попытался достигнуть этого со следующими командами ufw:
ufw enable
ufw default deny
ufw deny http
ufw deny https
ufw allow ssh
ufw allow from loadbalancer.private.ip to any port 80
ufw allow from loadbalancer.public.ip to any port 80
Результат ufw состояния подробные шоу это:
Status: active
Logging: on (low)
Default: deny (incoming), allow (outgoing), disabled (routed)
New profiles: skip
To Action From
-- ------ ----
80 DENY IN Anywhere
443 DENY IN Anywhere
22 ALLOW IN Anywhere
80 ALLOW IN loadbalancer.private.ip
80 ALLOW IN loadbalancer.public.ip
80 (v6) DENY IN Anywhere (v6)
443 (v6) DENY IN Anywhere (v6)
22 (v6) ALLOW IN Anywhere (v6)
Веб-сайт не отвечает и только показывает тайм-аут шлюза nginx 504. Если я ввожу ufw, позволяют http, сайт доступен. Таким образом, мой выше установки должен блокировать loadbalancer. Что не так?
Правила брандмауэра сначала подобраны с точки зрения обработки. Если ОТКЛОНЕНИЕ произойдет то перед ПОЗВОЛЕНИЕМ оно не будет работать правильно.
Ваш ПОЗВОЛЯТЬ правила должен прибыть перед ОТКЛОНЯТЬ правилами. Иначе первые подобранные правила являются ОТКЛОНЯТЬ правилами, и Вы не можете соединиться, как Вы хотите.
Старый вопрос, но Вы не должны конкретно отклонять вещи в UFW, это - значение по умолчанию, отклоняют.
В этом случае, необходимо было бы только добавить, что определенные позволяют правило для упомянутого IP. И вот именно. Ничто иное.