
Я пытаюсь заблокировать все порты, кроме 22, 80 и 443. Я добавил следующие правила в iptables
.
*filter
:INPUT ACCEPT [36878:18003219]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [33947:26518456]
-A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
-A INPUT -s MY_IP -p tcp -m tcp --dport 22 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 80 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 443 -j ACCEPT
-A INPUT -p icmp -m icmp --icmp-type 8 -j ACCEPT
-A INPUT -j DROP
COMMIT
Порт 22 работает, но Cloudflare не может подключиться к веб-серверу. -A INPUT -j DROP
вызывает проблему. Фактически, соединение 443 не соответствует правилу до конца списка.
решение1
Итак, после продолжительного обсуждения, вот что мы собрали:
Когда вы включили свой пользовательский брандмауэр, CloudFlare сообщил о 504 Gateway Timeout. Но, что примечательно, он сказал, что это была ошибка, полученная от вашего сервера, а не то, что он истек тайм-аут при попытке связаться с вашим сервером. Разница тонкая, но важная: это означает, что CloudFlare нормально общался с вашим сервером, но ваш сервер не общался сам с собой.
У вас есть веб-сервер, который проксирует внутреннее веб-приложение, работающее на localhost. Но ваш пользовательский брандмауэр не разрешает локальные соединения. Это необходимо для того, чтобы веб-сервер мог общаться с веб-приложением, а также для того, чтобы многие другие внутренние службы могли общаться друг с другом, поэтому любой профессиональный конструктор брандмауэров, который вы когда-либо использовали, просто разрешит локальный трафик без вопросов.
(P.S. Вам следует оставить ICMP включенным, чтобы предотвратить другие виды сбоев, такие как обнаружение MTU пути.)