Рейтинг:1

Блокировка всех портов кроме 80 и 443 через cloudflare

флаг jp

Я пытаюсь заблокировать все порты, кроме 22, 80 и 443. Я добавил следующие правила в iptables.

*фильтр
: ВВОД ПРИНЯТЬ [36878:18003219]
:ВПЕРЕД ПРИНЯТЬ [0:0]
: ВЫВОД ПРИНЯТ [33947:26518456]
-A ВХОД -m состояние --state УСТАНОВЛЕНО,СВЯЗАННО -j ПРИНЯТЬ
-A INPUT -s МОЙ_IP -p tcp -m tcp --dport 22 -j ПРИНЯТЬ
-A ВХОД -p tcp -m tcp --dport 80 -j ПРИНЯТЬ 
-A INPUT -p tcp -m tcp --dport 443 -j ПРИНЯТЬ 
-A ВВОД -p icmp -m icmp --icmp-type 8 -j ПРИНЯТЬ 
-A ВВОД -j DROP
СОВЕРШИТЬ

Порт 22 работает, но Cloudflare не может подключиться к веб-серверу. -A ВВОД -j DROP вызывает проблему. На самом деле соединение 443 не соответствует правилу до конца списка.

Michael Hampton avatar
флаг cz
Какую конкретную ошибку выдал CloudFlare?
флаг jp
@MichaelHampton 504 Тайм-аут шлюза.
Michael Hampton avatar
флаг cz
Я вижу, что вы до сих пор не включили ICMP в своем брандмауэре. Вы действительно должны это сделать.
флаг jp
@MichaelHampton — распространенная ошибка CloudFlare, заключающаяся в том, что мы подключены к серверу Cloudflare, но Cloudflare не может подключиться к хосту.
флаг jp
@MichaelHampton Я предполагал, что уже сделал это. Как мне это сделать?
Michael Hampton avatar
флаг cz
Вы только включили пинги. Вы должны включить все протоколы ICMP, а не только один конкретный тип.
флаг jp
@MichaelHampton, вы имеете в виду «iptables -A INPUT -p icmp -m icmp --icmp-type any -j ACCEPT»? Это не имело никакого эффекта!
Michael Hampton avatar
флаг cz
Хорошо, теперь мы делаем успехи. Единственная другая серьезная проблема, которую я вижу в брандмауэре, заключается в том, что вы не разрешили трафик с локального хоста. Это сломает широкий спектр служб (таких как apache или nginx, взаимодействующий с сервером веб-приложений). Это также приводит к ошибке 504 Gateway Timeout.
флаг jp
@MichaelHampton, вы имеете в виду «iptables -A INPUT -i lo -j ACCEPT». Если да, то я чувствую себя глупо. Я пробовал это, и это сработало, но я удаляю его, так как думал, что он возвращает эффект «-A INPUT -j DROP» из-за «ПРИНЯТЬ все — где угодно и где угодно». УДАЛИТЬ все -- где угодно и где угодно ` Теперь, когда я думаю, правило `DROP` следует за правилом `ACCEPT` и должно блокировать все остальное.
флаг jp
@MichaelHampton Я не встречал страницы, на которой подчеркивалась бы необходимость ПРИНИМАТЬ трафик локального хоста. Если вы разместите свой совет в качестве ответа, это может помочь кому-то еще.
Рейтинг:1
флаг cz

Итак, после продолжительной сессии комментариев, вот что мы собрали:

Когда вы включили свой собственный брандмауэр, CloudFlare сообщил о тайм-ауте шлюза 504. Но, что особенно важно, он сказал, что это была ошибка, которую он получил от вашего сервера, а не то, что время ожидания истекло при попытке связаться с вашим сервером. Разница тонкая, но важная: это означает, что CloudFlare нормально разговаривал с вашим сервером, но ваш сервер не разговаривал сам с собой.

У вас есть веб-сервер, который проксирует внутреннее веб-приложение, работающее на локальном хосте. Но ваш собственный брандмауэр не разрешал подключения к локальному хосту. Это необходимо для того, чтобы веб-сервер взаимодействовал с веб-приложением, а также для стольких других внутренних служб, которые взаимодействуют друг с другом, так что каждый профессиональный сборщик брандмауэра, который вы когда-либо использовали, просто разрешит трафик локального хоста без вопросов.

(PS: вы должны оставить ICMP включенным, чтобы предотвратить другие виды поломки, такие как обнаружение MTU пути.)

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.