Разрешить доступ к моему сайту только через Cloudflare и заблокировать все остальные запросы?

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

Оригинальный заголовок вопроса: “Разрешить только доступ Cloudflare к моему сайту и блокировать все посещения, боты или краулеры по моему IP-адресу”

У меня есть вопрос, я использую Cloudflare DNS на своем домене. Мой VPS 30.xxx.xxx.xxx.xx Порт 4490

Мой IP-адрес VPS был отфильтрован краулерными веб-страницами, и я получаю бот-атаки на свой сервер.

Я думаю о покупке нового VPS и добавлении защиты, которая разрешает только Cloudflare и блокирует все IP-адреса.

Я читал документацию Cloudflare.

Они рекомендуют мне эти опции для добавления IPTABLES на мой сервер

Разрешить только Cloudflare

https://developers.cloudflare.com/fundamentals/get-started/setup/allow-cloudflare-ip-addresses/#allowlist-cloudflare-ip-addresses

запретить все остальное

https://developers.cloudflare.com/fundamentals/get-started/setup/allow-cloudflare-ip-addresses/#block-other-ip-addresses-recommended

IPTABLE блокировать

https://www.linode.com/docs/guides/control-network-traffic-with-iptables/#block-or-allow-traffic-by-port-number-to-create-an-iptables-firewall

Вопрос в том, если я выполню эти шаги, будут ли у меня проблемы с доступом к SSH через мой IP?

Что меня волнует, так это доступ к SSH, и чтобы все посещения разрешались только через Cloudflare, а все остальное, связанное с IP, было заблокировано для посетителей, ботов или краулеров.

Вам нужно добавить свой собственный IP-адрес в список разрешенных IP-адресов.

Другой вариант – настроить взаимную TLS-аутентификацию, где любой желающий подключиться к вашему веб-серверу должен иметь клиентский сертификат. https://developers.cloudflare.com/ssl/origin-configuration/authenticated-origin-pull/ объясняет, как это реализовать с помощью Cloudflare.

Если вы разрешаете доступ только определенным/конкретным субъектам и блокируете все другие запросы к вашему сайту, то белый список IP может быть полезен для блокировки любых нежелательных посещений без разрешения.

Скрипт для добавления необходимых правил iptables и ip6tables, при этом сначала разрешая диапазоны IP Cloudflare

https://ongoingtechnology.blogspot.com/2025/02/script-to-add-required-iptables-and.html

 #!/bin/bash

# Разрешить IPv4-адреса Cloudflare
for ip in 173.245.48.0/20 103.21.244.0/22 103.22.200.0/22 103.31.4.0/22 141.101.64.0/18 108.162.192.0/18 190.93.240.0/20 188.114.96.0/20 197.234.240.0/22 198.41.128.0/17 162.158.0.0/15 104.16.0.0/13 104.24.0.0/14 172.64.0.0/13 131.0.72.0/22
do
    iptables -I INPUT -p tcp -m multiport --dports http,https -s $ip -j ACCEPT
done

# Разрешить IPv6-адреса Cloudflare
for ip in 2400:cb00::/32 2606:4700::/32 2803:f800::/32 2405:b500::/32 2405:8100::/32 2a06:98c0::/29 2c0f:f248::/32
do
    ip6tables -I INPUT -p tcp -m multiport --dports http,https -s $ip -j ACCEPT
done

# Заблокировать весь остальной входящий HTTP и HTTPS трафик
iptables -A INPUT -p tcp -m multiport --dports http,https -j DROP
ip6tables -A INPUT -p tcp -m multiport --dports http,https -j DROP

echo "Правила межсетевого экрана применены: разрешены IP Cloudflare, остальные заблокированы."

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

Позволить доступ к вашему веб-сайту только через Cloudflare и заблокировать все другие запросы — это разумный шаг, особенно если вы столкнулись с атаками ботов и нежелательной активностью на вашем сервере. В этом ответе я подробно объясню, как это можно сделать, ориентируясь на использование IPTABLES и учитывая ваш интерес к обеспечению безопасного доступа к SSH.

Теория

Когда вы используете Cloudflare, вы основательно маскируете свой реальный IP-адрес для внешнего мира, поскольку все запросы сначала направляются на сервер Cloudflare, который затем перенаправляет их на ваш сервер. Это помогает защититься от DDoS-атак, снижает нагрузку на сервер и повышает безопасность. Используя пожарные стены, такие как IPTABLES, вы можете еще больше усилить эту защиту, разрешив доступ к вашему серверу только от определенных IP-адресов, принадлежавших Cloudflare.

Пример

Чтобы реализовать эту конфигурацию, вам нужно добавить правила IPTABLES для разрешения входящего трафика только из диапазонов IP-адресов Cloudflare, а затем заблокировать все остальные входящие HTTP/HTTPS-соединения. Вот пример скрипта, который поможет это сделать:

#!/bin/bash

# Разрешение Cloudflare IPv4 адресов
for ip in 173.245.48.0/20 103.21.244.0/22 103.22.200.0/22 103.31.4.0/22 141.101.64.0/18 108.162.192.0/18 190.93.240.0/20 188.114.96.0/20 197.234.240.0/22 198.41.128.0/17 162.158.0.0/15 104.16.0.0/13 104.24.0.0/14 172.64.0.0/13 131.0.72.0/22
do
    iptables -I INPUT -p tcp -m multiport --dports http,https -s $ip -j ACCEPT
done

# Разрешение Cloudflare IPv6 адресов
for ip in 2400:cb00::/32 2606:4700::/32 2803:f800::/32 2405:b500::/32 2405:8100::/32 2a06:98c0::/29 2c0f:f248::/32
do
    ip6tables -I INPUT -p tcp -m multiport --dports http,https -s $ip -j ACCEPT
done

# Блокировка всех прочих входящих HTTP и HTTPS запросов
iptables -A INPUT -p tcp -m multiport --dports http,https -j DROP
ip6tables -A INPUT -p tcp -m multiport --dports http,https -j DROP

echo "Правила файла сетевого экрана применены: IP-адреса Cloudflare разрешены, остальные заблокированы."

Применение

Вы можете скопировать этот скрипт в файл, например, cloudflare.sh, сделать его исполняемым командой chmod +x cloudflare.sh и выполнить его с правами суперпользователя (sudo ./cloudflare.sh). Это добавит необходимые правила в вашу конфигурацию IPTABLES.

Важно помнить о некоторых нюансах:

  1. Доступ к SSH: Если ваше соединение по SSH также проходит через Cloudflare, проверьте наличие правил, разрешающих его. Однако если вы подключаетесь напрямую к вашему серверу по IP, добавьте свой IP-адрес в список разрешенных.

  2. Обновление IP-адресов Cloudflare: Периодически проверяйте диапазоны IP-адресов Cloudflare на их официальной странице, поскольку они могут изменяться, и обновляйте свой IPTABLES скрипт соответственно.

  3. Конфиденциальность: Убедитесь, что ваш VPS всегда доступен для администрирования, даже при строгой фильтрации. Если ваша компания использует статические IP-адреса, добавьте их в сейф-лист.

  4. Муни-технология аутентификации на основе TLS: Рассмотрите возможность внедрения взаимной аутентификации TLS, как описано в документации Cloudflare. Это добавит еще один слой безопасности, требуя клиентский сертификат для подключения к вашему серверу.

  5. Тестирование: Всегда тестируйте изменения в конфигурации за пределами рабочей среды, чтобы быть уверенным в том, что ваши правила сетевого экрана работают как задумано.

Эти меры значительно снизят риск нежелательного доступа и помогут поддерживать ваш сервер в защищенном состоянии. Используя Cloudflare в качестве посредника, вы сможете настроить безопасное и надежное соединение для всех легитимных запросов.

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

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