Обзор Cloudflare, подключение к Nginx

Cloudflare — американская компания, предоставляющая услуги CDN, защиту от DDoS-атак, безопасный доступ к ресурсам и серверы DNS. Сервисы Cloudflare работают как обратный прокси (reverse proxy) для сайта. Cloudflare охватывает более 100 стран, а прямые подключения к платформе имеют более 11 тысяч сетей, включая хостинг-провайдеров и крупных предприятий.

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

В это статье подразумевается, что вы уже добавили свой домен в Cloudflare и у вас настроен Nginx или Apache.

Основные возможности Cloudflare:

  1. Защита от DDoS-атак: Сам факт подключения сайта к сети Cloudflare уже дает определенный уровень защиты от DDoS . Злоумышленники не видят IP-адрес сайта, поэтому вынуждены атаковать его через сам сервис. Cloudflare в свою очередь фильтрует запросы таким образом, чтобы на сайт попадал только безопасный трафик. Платформа имеет 250 центров обработки данных по всему земному шару, которые используются для кибербезопасности.
  2. Увеличение скорости с помощью CDN: Cloudflare состоит из системы CDN-серверов, кэширующих статический контент (видео, изображения) и код (HTML, CSS, JavaScript). Когда пользователь отправляет запрос на сайт, служба определяет его местоположение и отправляет ответ из ближайшего клиента CDN-сервера. Благодаря этому уменьшается время отклика сайта и нагрузка на выделенный сервер, хостинг или VPS/VDS, что положительно влияет на показатели скорости.

На бесплатном тарифе Cloudflare защитит не от всех атак, а только от самых распространённых. Если разбираетесь в их разновидностях, то речь об атаках 3, 4 и 7 уровней. Для большинства сайтов этого будет достаточно, потому что не всех атакуют по-крупному, но серьёзная защита от DDoS начинается именно с платных тарифов Cloudflare.

Включите режим «I’m Under Attack!». В этом режиме Cloudflare начнёт проверяет каждого пользователя, который пытается попасть на сайт. Все они будут сначала видеть межстраничное уведомление. Так алгоритмам компании будет проще отделить вредоносный трафик от нормального.

Чтобы включить этот режим, перейдите в раздел «Security», откройте вкладку «Settings» и выберите «I’m Under Attack!» из выпадающего списка в блоке «Security Level». Проверенный посетитель получит доступ к вашему сайту не навсегда. По умолчанию это 30 минут, но вы можете указать другие временные рамки на этой же вкладке в блоке «Challenge Passage».

Не забудьте выключить этот режим, когда атака закончится. Нет смысла просто так усложнять посетителям доступ к сайту. Если планировали сделать это в качестве превентивной меры, лучше выберите не «I’m Under Attack!», а «High». Тогда Cloudflare тоже будет показывать межстраничное уведомление, но не всем посетителям, а только тем, с чьих IP-адресов было зафиксировано сомнительное поведение в течение последних 14 дней.

Что делать если злоумышленники знают ваш настоящий ip и атакуют на прямую, а не через IP Cloudflare. Вы можете разрешить доступ к портам 80 и 443 только с IP принадлежащим Cloudflare. Ниже bash команды для настройки iptables:

for i in `curl https://www.cloudflare.com/ips-v4`; do iptables -I INPUT -p tcp -s $i --dport http -j ACCEPT; done
 
for i in `curl https://www.cloudflare.com/ips-v4`; do iptables -I INPUT -p tcp -s $i --dport https -j ACCEPT; done
  iptables -A INPUT -p tcp --dport http -j DROP
  iptables -A INPUT -p tcp --dport https -j DROP

Изменять, добавлять и редактировать ресурсные записи можно в разделе «DNS». Для записей вы можете выбрать один из статусов проксирования:

  • Настройка «Proxied» (оранжевое облако) говорит о том, что вместо вашего IP-адреса будет указан адрес Cloudflare. Все запросы проксируются, то есть поступают сначала на сервера компании, а после отправляются на сервер, где сайт фактически размещен.
  • «DNS only» (серое облако) означает, что при обращении к домену Cloudflare будет отдавать IP-адрес вашего сервера. Настройки кеширования, Firewall и другие не будут применяться.

Чтобы изменить статус, нажмите на запись для перехода в режим редактирования, кликните на облако для изменения и нажмите «Save».

При использовании «Proxied» на бесплатном тарифе, подключиться по проксируемому домену к почте, FTP и SSH на хостинге не получится. Cloudflare пропускает запросы к вашему сайту только по 80 и 443 порту, поэтому используйте для подключения к почте и другим сервисам IP-адрес сервера, на котором находится ваш аккаунт (указан в Панели управления, раздел «Сайты и домены» → «IP-адреса»).

На приведённых ниже диаграммах показаны различные способы обработки IP-адресов с Cloudflare:

1 режим. Проксирование Cloudflare выключено: исходные IP-адреса посетителей появляются в логах вашего веб-сервера. (Original vistors IPs appear in your logs).

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

3 режим. Обратный прокси Cloudflare включен, и вы настроили расширения на вашем веб-сервере: исходные IP-адреса посетителей появляются в логах вашего веб-сервера.

Используйте mod_remoteip для настройки связи между Cloudflare и веб-сервером Apache.

Стандартная проблема всех обратных прокси (reverse proxy) в том что, сервер за прокси не видит реальный IP адресс посетителя сайта. Соответственно и решение этой проблемы тоже стандартное и хорошо описано на английском языке в официальной документации Cloudflare: Restoring original visitor IPs (Восстановление исходных IP-адресов посетителей)

Пошаговая настройка связки Cloudflare (в режиме обратного проксирования) с веб-сервером Nginx.

Копируем текущий список IP адресов Cloudflare (раздел Nginx). Раскоментируем строку real_ip_header X-Forwarded-For; и вставим в конфигурационный файл Nginx nginx.conf в раздел http.

set_real_ip_from 103.21.244.0/22;
set_real_ip_from 103.22.200.0/22;
set_real_ip_from 103.31.4.0/22;
set_real_ip_from 104.16.0.0/13;
set_real_ip_from 104.24.0.0/14;
set_real_ip_from 108.162.192.0/18;
set_real_ip_from 131.0.72.0/22;
set_real_ip_from 141.101.64.0/18;
set_real_ip_from 162.158.0.0/15;
set_real_ip_from 172.64.0.0/13;
set_real_ip_from 173.245.48.0/20;
set_real_ip_from 188.114.96.0/20;
set_real_ip_from 190.93.240.0/20;
set_real_ip_from 197.234.240.0/22;
set_real_ip_from 198.41.128.0/17;
set_real_ip_from 2400:cb00::/32;
set_real_ip_from 2606:4700::/32;
set_real_ip_from 2803:f800::/32;
set_real_ip_from 2405:b500::/32;
set_real_ip_from 2405:8100::/32;
set_real_ip_from 2c0f:f248::/32;
set_real_ip_from 2a06:98c0::/29;
 
#use any of the following two
 
#real_ip_header CF-Connecting-IP;
real_ip_header X-Forwarded-For;

Применяем конфигурацию

systemctl reload nginx

Всё! Проверяем логи Nginx, там вы должны увидеть настоящие IP посетителей вашего сайта.

Читайте также: Где получить SSL сертификат бесплатно? Использование центра сертификации Let’s Encrypt, Бесплатные Быстрые Публичные DNS Сервера (DNS Leak).

В Cloudflare доступна маршрутизация электронной почты. С помощью этой опции можно создавать множество новых электронных ящиков на домене и перенаправлять письма из них на рабочие адреса. Это позволяет скрыть реальный почтовый ящик и обезопасить его от попыток взлома. 

Чтобы подключить маршрутизацию, нужно ввести новое имя для ящика, который хотите создать, в поле «Custom address» и адрес рабочей почты, на который планируете отправлять письма, в поле «Destination address». После этого вы получите письмо для верификации почты для перенаправления. Верификация происходит только один раз, после чего можно добавлять в этот ящик любое количество адресов.

Эта функция помогает защищать почту от попыток взлома и атак фишинга. Для работы с ней необходимо отправить запрос на использование пробной версии.

Записей MX раскрывают реальный адрес сервера. Из превентивных рекомендаций — не держите почтовый сервер там же, где лежат сайты. Для этого лучше завести отдельную виртуальную машину.

Устранение неполадок с электронной почтой.

Вопрос: Имеется несколько купленных сертификатов для доменов/поддоменов. Если в настройках cloudflare указать SSL - Full, то все прекрасно работает, но подставляется сертификат от Сloudflare.

Ответ: Установите ваш купленный сертификат у себя на сервере, потом в настройки CloudFlare → Crypto → SSL выбираете Strict.

Ссылки: Настройка Cloudflare для сайта

PQ VPS сервера в 28+ странах.