Start typing to search across invoices, services, domains, tickets, and more...
Когда сайт работает через Cloudflare, посетители и злоумышленники видят IP-адреса узлов Cloudflare, а не IP вашего сервера. Но если реальный IP уже утёк или сервер по-прежнему принимает подключения на порты 80/443 с любых адресов, атакующий может просто обойти CDN и бить напрямую по origin. В этой инструкции пошагово разберём подключение, поиск утечек и настройку белого списка в файрволе, чтобы origin действительно оказался «спрятан».
На странице DNS в панели Cloudflare переключите статус прокси для A/AAAA-записей сайта в «Proxied» (оранжевое облако). Теперь dig +short example.com должен возвращать IP-адреса Cloudflare, а не IP вашего сервера.
В настройках SSL/TLS выберите Full (strict). Для сертификата на origin можно использовать Let's Encrypt или сгенерировать бесплатный сертификат Origin CA в панели Cloudflare (ему доверяет только Cloudflare, срок действия — до 15 лет). Не используйте режим Flexible: в нём трафик между Cloudflare и origin идёт открытым текстом, к тому же он часто вызывает циклические редиректы.
До подключения CDN домен мог напрямую указывать на IP сервера. Типичные источники утечки:
mail, ftp или dev с серым облаком указывают прямо на тот же сервер.Если IP точно утёк, одним Cloudflare проблему полностью не решить — рекомендуем сменить IP сервера. Клиенты IMIDC могут создать тикет в клиентском центре и узнать о вариантах смены или добавления IP.
Cloudflare официально публикует свои диапазоны IP по адресам https://www.cloudflare.com/ips-v4 и https://www.cloudflare.com/ips-v6. Команды ниже сразу берут актуальные списки.
Ubuntu / Debian (UFW):
sudo ufw allow OpenSSH # If you changed the SSH port, use: sudo ufw allow <port>/tcp
for ip in $(curl -fsS https://www.cloudflare.com/ips-v4) $(curl -fsS https://www.cloudflare.com/ips-v6); do
sudo ufw allow proto tcp from "$ip" to any port 80,443 comment 'Cloudflare'
done
# Remove earlier rules that opened 80/443 to everyone (delete whichever actually exist)
sudo ufw delete allow 'Nginx Full'
sudo ufw delete allow 80/tcp
sudo ufw delete allow 443/tcp
sudo ufw enable
sudo ufw status numbered
Если при удалении правила появляется сообщение «Could not delete non-existent rule», его можно игнорировать.
Rocky / Alma 9 (firewalld + ipset):
sudo firewall-cmd --permanent --new-ipset=cf4 --type=hash:net
sudo firewall-cmd --permanent --new-ipset=cf6 --type=hash:net --option=family=inet6
for ip in $(curl -fsS https://www.cloudflare.com/ips-v4); do
sudo firewall-cmd --permanent --ipset=cf4 --add-entry="$ip"
done
for ip in $(curl -fsS https://www.cloudflare.com/ips-v6); do
sudo firewall-cmd --permanent --ipset=cf6 --add-entry="$ip"
done
for svc in http https; do
sudo firewall-cmd --permanent --add-rich-rule="rule family=ipv4 source ipset=cf4 service name=$svc accept"
sudo firewall-cmd --permanent --add-rich-rule="rule family=ipv6 source ipset=cf6 service name=$svc accept"
done
# Remove the http/https services that were open to all sources
sudo firewall-cmd --permanent --remove-service=http --remove-service=https
sudo firewall-cmd --reload
sudo firewall-cmd --list-all
Диапазоны IP Cloudflare время от времени меняются, поэтому раз в несколько месяцев сверяйте правила с официальным списком.
Важно: порты, опубликованные через Docker, обходят правила UFW. Если сайт работает в Docker, привяжите порты контейнера к
127.0.0.1, а наружу отдавайте трафик через Nginx на хосте.
Добавьте в Nginx сайт по умолчанию, который обрывает соединения по голому IP или неизвестным именам хостов, чтобы сертификат не выдавал ваш домен:
sudo tee /etc/nginx/conf.d/00-default.conf > /dev/null <<'EOF'
server {
listen 80 default_server;
listen [::]:80 default_server;
server_name _;
return 444;
}
server {
listen 443 ssl default_server;
listen [::]:443 ssl default_server;
server_name _;
ssl_reject_handshake on;
}
EOF
Директива ssl_reject_handshake требует Nginx 1.19.4 или новее. Штатные версии в Ubuntu 24.04, Debian 12 и Rocky/Alma 9 подходят, а версия 1.18 из Ubuntu 22.04 — нет, поэтому обновитесь из официального репозитория nginx.org. В Ubuntu/Debian также удалите встроенный сайт по умолчанию, чтобы избежать конфликта default_server:
sudo rm -f /etc/nginx/sites-enabled/default
За Cloudflare в логах Nginx вместо IP клиента оказывается IP узла Cloudflare. Восстановить настоящий адрес поможет модуль realip:
{
for ip in $(curl -fsS https://www.cloudflare.com/ips-v4) $(curl -fsS https://www.cloudflare.com/ips-v6); do
echo "set_real_ip_from $ip;"
done
echo "real_ip_header CF-Connecting-IP;"
} | sudo tee /etc/nginx/conf.d/cloudflare-realip.conf > /dev/null
sudo nginx -t && sudo systemctl reload nginx
Выполните команды с другой машины. Первая должна завершиться ошибкой или по тайм-ауту, а доступ по домену — работать как обычно:
curl -m 10 -I http://YOUR_SERVER_IP
curl -I https://example.com
Это значит, что Cloudflare не может подключиться к origin. Проверьте, что в файрволе есть все диапазоны IP Cloudflare (включая IPv6), что Nginx запущен и что режим SSL соответствует сертификату на origin.
Бесплатный тариф проксирует только трафик HTTP/HTTPS и только на определённых портах. SSH, базы данных, игровые серверы и другие TCP/UDP-сервисы через Cloudflare не идут, поэтому их по-прежнему защищают собственный файрвол сервера и защита от DDoS на уровне дата-центра.
Да. Включите в Cloudflare Authenticated Origin Pulls (mTLS) — тогда Nginx на origin будет принимать только запросы с клиентским сертификатом Cloudflare. Это не позволит посторонним направить на ваш IP трафик через собственный аккаунт Cloudflare.
Сначала определите тип атаки и объём трафика, затем смените IP и выполните все описанные выше шаги защиты. Мощные атаки полностью забивают канал аплинка, и в этом случае нужна защита от DDoS повышенной ёмкости от провайдера.
Скрыть IP origin можно, соблюдая три правила: весь трафик идёт через прокси Cloudflare, прошлые утечки найдены и устранены, а файрвол origin принимает подключения только от Cloudflare. С не-HTTP-сервисами и очень крупными атаками CDN в одиночку не справится. IMIDC предлагает VPS и выделенные серверы с защитой от DDoS и поддержкой нескольких IP — они могут стать базовым уровнем защиты для вашего origin. Чтобы сменить IP или подобрать вариант защиты, создайте тикет в клиентском центре — поддержка работает 24/7.