Заметка Правильная защита от ддос форума при помощи CloudFlare

X-Oleg

Местный
Сообщения
588
Симпатии
619
Баллы
93
#1
Всем привет !

Вообще по моему мнению защита должна-быть на уровне дата-центра хостера, т.е. перенос сайта на отдельное оборудование защищенное от ддос...

Но тем не менее, если у вас шарред хостинг или бюджетный VPS, а денег/желания переносить нет, то способ может вам помочь !

Итак, если у вас шарред хостинг, то вам нужно арендовать выделенный IP-адрес, если у вас VPS то нужно поменать айпишник на другой, неизвестный ддосеру !

Расписываю по шагам далее:

1)Регистрация:

Заходим на сайт

Пожалуйста, Войдите или Зарегистрируйтесь для просмотра скрытого текста.

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

upload_2015-8-20_11-4-58.png

2)Добавляем Домен:

Теперь добавляем домен, для которого мы хотим использовать DNS

upload_2015-8-20_11-6-1.png

3)Пара слов про DNS:

После этого появляется конфигурация нашей DNS зоны.

Если домен уже был рабочий и висел на другом DNS, то записи считаются автоматически.

Если же домен был пустой, только что куплен/зарегистрирован, то их нужно заполнить самому.

upload_2015-8-20_11-7-55.png


Подробнее о записях:

А запись — здесь нужно ввести IP адрес выделенного сервера или VDS. Или если у вас shared хостинг, то IP адрес этого shared хостинга. Можно найти в меню ISPmanager в разделе «Домены»

AAAA запись — тоже самое, только для IPv6

CNAME запись — псевдоним домена, часто используется для привязки блогов тип tumblr, ucoz, blogger и тому подобных к доменам второго уровня

Примеры:

@ A 8.8.8.8 — данная запись направит основной домен на сервер с IPv4 8.8.8.8 поддомены создаются так же, направляются на IP.

www A 8.8.8.8 — поддомен www направлен на тот же сервер. Таким образом нужно добавить все поддомены. ( Красным выделены основные )

upload_2015-8-20_11-17-0.png

Можно один раз прописать, чтобы любой несуществующий поддомен ссылался на ip

* A 8.8.8.8

Когда вы используете всего один сервер, то это удобно. Но когда поддомены нужно раскидывать на десятки серверов, то всё таки удобно использовать грамотную DNS структуру, т.к. DNS тоже могут засираться ;)

Типы записей:

Выше названы 2 типа, через которые можно просто направить домен на какой-то сервер. А есть же еще почта. Я рекомендую пользоваться бесплатной

Пожалуйста, Войдите или Зарегистрируйтесь для просмотра скрытого текста.

для домена.

Для почты тип записи MX, TXT еще используется.

Более подробно про типы вы можете почитать в

Пожалуйста, Войдите или Зарегистрируйтесь для просмотра скрытого текста.



Потом вам предложат посмотреть ролик и выдадут два DNS-домена, которые нужно прописать у регистратора вашего домена, пример:

NS1 — baby.dns.cloudflare.com
NS2 — high.dns.cloudflare.com

4)Непосредственная защита от ддос:

4.1)Нужно ОБЯЗАТЕЛЬНО использовать сторонний сервер почты для домена, например Яндекс;

4.2)Нужно ОБЯЗАТЕЛЬНО удалить NS-записи, которые ведут на сервер, КРОМЕ А-записей и включить проксирование (Оранжевое облако), пример (Используется почта яндекса для домена):

upload_2015-8-20_11-17-0.png

5)Разбор настроек защиты от ддос:

upload_2015-8-20_11-19-4.png

Security Level:


High:
обеспечивает широкую защиту от спама, хакерских атак, а также атак типа DDoS. Данный уровень безопасности требует ввода капчи каждым пользователем, который был уличен в злонамеренном поведении на других сайтах. Сервис проверяет браузер пользователя на наличие вредоносных сигнатур. Этот уровень безопасности подойдет администраторам, для которых безопасность веб-сайта находится на первом месте.


Medium:
при использовании данного уровня безопасности пользователи будут отсеиваться на основе случаев спама, хакерских атак или атак типа DoS, которые производились данными пользователями на других сайтах. Небходим ввод капчи пользователям, которые были уличены в частых атаках на другие сайты. Сервис также проверит браузер пользователя на наличие вредоносных сигнатур. Идеально подойдет для сайтов с высокими требованиями безопасности. На данном уровне риск ложного срабатывания системы безопасности минимален.

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

Essentially off: запретит доступ к Вашему сайту только тем пользователям, которые на данный момент участвуют в известной сервису DoS атаке. Подойдет веб-мастерам, которые используют CF в основном для увеличение скорости выдачи контента пользователям. Мы также не рекомендуем использовать данный уровень в целях безопасности.

I'm Under Attack!: Будет показывать заглушку посетителям и проверять браузер ботам:


upload_2015-8-20_11-21-49.png


6)Советы для защиты форума:

6.1) Если вы используете e-mail рассылку для регистрации и новостей в темах, то к сожалению ваш реальный айпи адрес может перехватить ддосер в загаловках письма и вся эта защита сведётся к нулю, но тут следующее решение:

- Отказаться от всех емаил рассылок (Отключить);

- Арендовать VPS и пересылать письма через SMTP, но не забывать чистить загаловки.

6.2)Вместо I'm Under Attack! которые будут напрягать пользователей, можно предложить ввод капчи с пользователей стран, которые участвуют в атаки, сделать это можно в настройках CF:

В граф Firewall (Там-же кстати и выбирается Security Level):

upload_2015-8-20_11-41-38.png

Далее выбираете страну:

Пожалуйста, Войдите или Зарегистрируйтесь для просмотра скрытого текста.



upload_2015-8-20_11-43-10.png

Вписываем страну (Например Китай CN), выбираем "Challenge" и нажимаем ADD, всё все пользователи из Китая, будут вводить капчу.

6.3)Для XenForo, что-бы у всех пользователей отображался реальный IP-дарес, нужно:

В library/config.php нужно добавить:

Код:
if (isset($_SERVER['HTTP_CF_CONNECTING_IP'])) { $_SERVER['REMOTE_ADDR'] = $_SERVER['HTTP_CF_CONNECTING_IP']; }
6.4)Ну и для счастливых пользователей VPS, запретите доступ всем, кроме этих адресов:

Пожалуйста, Войдите или Зарегистрируйтесь для просмотра скрытого текста.



Для того-чтобы сделать реальные IP-адреса пользователей на уровне nginx, воспользуйтесь этим мануалом:

Пожалуйста, Войдите или Зарегистрируйтесь для просмотра скрытого текста.



Вроде всё, надеюсь статья кому-нить поможет ! ;)
 
Последнее редактирование:

X-Oleg

Местный
Сообщения
588
Симпатии
619
Баллы
93
#4
Не хватает самого главного: обязательно закрыть доступ по портам 80/443 всем ip, кроме

Пожалуйста, Войдите или Зарегистрируйтесь для просмотра скрытого текста.

А смысл ?

Если узнают реальный IP-адрес, то просто забьют канал, если у хостера есть уже защита, то смысл в CloudFlare !
 

[email protected]

Местный
Сообщения
105
Симпатии
89
Баллы
28
#5
А смысл ?

Если узнают реальный IP-адрес, то просто забьют канал, если у хостера есть уже защита, то смысл в CloudFlare !
Большой. Если атака на L7, то ее смогут донести в обход сервиса.
 

X-Oleg

Местный
Сообщения
588
Симпатии
619
Баллы
93
#6
Большой. Если атака на L7, то ее смогут донести в обход сервиса.
А мне это не помогло, просто забили канал и всё... :(

Я не профессионал в этом вопросе, но мне кажется если ддосер узнает реальный айпи это не поможет, а вот если несколько сайтов на сервере, может доставить проблемы, т.е. всем сайтам придётся быть у CloudFlare... :(
 

[email protected]

Местный
Сообщения
105
Симпатии
89
Баллы
28
#7

SOUL

АдминкА
Администратор
Сообщения
7.086
Симпатии
10.374
Баллы
266
#10
Сейчас да, это вчера, походу, в отключке были.. поэтому под спойлер помещу сам мануал по ссылке на свякий случай :) :
How do I whitelist CloudFlare's IP addresses in iptables?


Пожалуйста, Войдите или Зарегистрируйтесь для просмотра скрытого текста.

can be added to iptables using the following steps below. This should be done to ensure none of our connections will be dropped, which could otherwise result in timeouts and otherconnectivity issues.

IPv4: For each of the ranges listed here:

Пожалуйста, Войдите или Зарегистрируйтесь для просмотра скрытого текста.

, you'll need to enter the following command at the terminal, replacing $ip with one of the IPs in the list:
iptables -I INPUT -p tcp -m multiport --dports http,https -s "$ip" -j ACCEPT

IPv6: For each of the ranges listed here:

Пожалуйста, Войдите или Зарегистрируйтесь для просмотра скрытого текста.

, you'll need to enter the following command at the terminal, replacing $ip with one of the IPs in the list:
ip6tables -I INPUT -p tcp -m multiport --dports http,https -s "$ip" -j ACCEPT

An alternative to having a long list of iptables rules for each network range is to use a utility called ipset. If you don't have this installed on your origin server, you can install it using your package manager.

Debian: sudo apt-get install ipset

Create an ipset set:
ipset create cf hash:net

Now populate the set with CloudFlare IP ranges:
for x in $(curl

Пожалуйста, Войдите или Зарегистрируйтесь для просмотра скрытого текста.

do ipset add cf $x; done

You can use the 'cf' set now in a iptables rule like so:
iptables -A INPUT -m set --match-set cf src -p tcp -m multiport --dports http,https -j ACCEPT

Once you run the iptables commands, you will need to save the iptables rules. The top two commands are used for IPv4 and the bottom two for IPv6.

Debian/Ubuntu: iptables-save > /etc/iptables/rules.v4
RHEL/CentOS: iptables-save > /etc/sysconfig/iptables
Debian/Ubuntu: ip6tables-save > /etc/iptables/rules.v6
RHEL/CentOS: ip6tables-save > /etc/sysconfig/ip6tables

Note: These rules only apply to your iptables and do not work for any additional firewalls.
 

X-Oleg

Местный
Сообщения
588
Симпатии
619
Баллы
93
#11
Это может-быть важно, например есть VPS (Типо OVH), они защищают на дешёвых тарифах от забивания канала, но не защищают от атак на http, поэтому если есть возможность лучше сделать такую настройку ! ;)
 

andrey

Проверенный
Сообщения
240
Симпатии
33
Баллы
28
#12

X-Oleg

Местный
Сообщения
588
Симпатии
619
Баллы
93
#13
Код:
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

service iptables save
 

andrey

Проверенный
Сообщения
240
Симпатии
33
Баллы
28
#14
Код:
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

service iptables save
а это применится ко всему серверу?
 

X-Oleg

Местный
Сообщения
588
Симпатии
619
Баллы
93
#17
А нет ли способа чтоб это работало не ко всему серверу?
а например только к конкретному сайту?
К сожалению нет, либо оставлять открытыми порты, либо закрывать и переносить все сайты на CF ! :(
 

andrey

Проверенный
Сообщения
240
Симпатии
33
Баллы
28
#18
К сожалению нет, либо оставлять открытыми порты, либо закрывать и переносить все сайты на CF !
плохо:(
Потому что использую свой dns сервер по этому не получится, и бог его знает как сделать
 

X-Oleg

Местный
Сообщения
588
Симпатии
619
Баллы
93
#19
плохо:(
Потому что использую свой dns сервер по этому не получится, и бог его знает как сделать
А использовать сторонние днс никак ?

Часто ддосят, если нет атак то и смысла нет... Есть и минусы в этом сервисе !

Кстати есть хостеры, которые защищают от ддоса, может вам лучше присмотреться к ним, но будет дороже по цене конечно ! :(
 

andrey

Проверенный
Сообщения
240
Симпатии
33
Баллы
28
#20
А использовать сторонние днс никак ?

Часто ддосят, если нет атак то и смысла нет... Есть и минусы в этом сервисе !

Кстати есть хостеры, которые защищают от ддоса, может вам лучше присмотреться к ним, но будет дороже по цене конечно ! :(
Сервер свой, а сторонние dns , я просто создаю субдомены на основе существующего домена, надо чтото еще придумать)
 
Вверх Снизу