Настройка сервера для новичков

Хостинг:
1. JS заглушка: многие боты настолько тупые, что не поддерживают JS, а те, что поддерживают заслуживают особого внимания. Простая JS заглушка:
Создаем простой index.html со следующим годом:
Код:
<script language="JavaScript">
Код:
windows.location="https://domen.zona/index.php";
</script>

Спасет от большинства атак идиотов. Теперь поговорим про ботов, которые оборудованы парсером window.location. Для таких случаев мы просто должны закриптовать нашу заглушку и дело с концом. Минус в том, что мы пошлем и поисковых ботов.


2. Cookie заглушка. Работает точно так же как и JS. На просторах сети очень много статей по таим заглушкам, так что вам не составит труда найти с JS + COOKIE
Код:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
Код:
<html><head>
<META HTTP-EQUIV="pragma" CONTENT="no-cache" />
<META HTTP-EQUIV="Cache-Control" CONTENT="no-cache" />
</head><body onload="document.cookie = 'DDOS=OK'; location.reload(true);">
</body>
</html>


1. Самый простой способ, это iptables. Прежде чем идти дальше, поищите информацию по netstat и поймите для чего эта штука нужна, а я пойду дальше. Дос/ДДос начался. Подсчитаем кол-во школьных соединений к нашему веб серверу:
Код:
netstat -na | grep ":443\ " | wc -l

864 - много.
Теперь, посмотрим ближе какие IP адреса к нам коннектятся.
Код:
netstat -na | grep ":443\ " | sort | uniq -c | sort -nr

Копируем все что выдал терминал в нотепад и разгребаем. Там где вы видите много коннектов - выписываем и баним в iptables.
Код:
iptables -I INPUT -s 10.10.10.10 -j DROP

Не забудьте сохранить правила! Это будет также касаться ipset и geoip.

2. Ipset. Чем он хорош? Просто баним список IP адресов/диапазонов, но нужно будет "подключить" список от ipset в iptables.

3. Geoip. Ну просто самый простой способ забанить целую страну одной командой. Способ для самых линевых. Вам не нужно писать диапазоны как с ipset/iptables, просто достаточно дать команду и к примеру Китай никогда не увидит ваш сайт без VPN/proxy.
Код:
iptables -A INPUT -p tcp --dport 443 -m geoip --src-cc CN -j REJECT


4. Настройка nginx на лимитирование запросов с 1 IP (также можно сделать и с iptables)

5. hosts.deny - мой любимый способ. Я анализирую атакующие IP адреса и выделяю диапазон, если первые 2 - 3 значения одинаковы. Например:
15.12.15.12
15.12.15.85
15.12.15.65
15.12.15.88
или
15.12.15.54
15.12.65.54
15.12.0.59
15.12.14.55
Приходится банить диапазоном /24 /16. Также hosts.deny поддерживает просто IP адреса и вы можете просто написать их в файл. (белый трафик от пользователей кидайте в hosts.allow)
6. Модули на apache - бред на мой взгляд. Мне не удалось его защитить на своем сервере, но есть много статей как это сделать. Из-за неудач и частых падений я перешел на php-fpm. Никаких падений не было до сих пор.
7. Свое проксирование. Если вы имеете достаточно денег для снятия хорошего оборудования для фильтрации трафика, то эта статья для вас: Полезные статьи. Система защиты от DDOS атак - Syncookied. LTD Beget

Гитхаб: GitHub - LTD-Beget/syncookied: syn flood protection
8. Временный способ с помощью CloudFlare. Я сам пользуюсь бесплатным тарифом, но он не спасет вас от стрессеров. При превышении допустимой нагрузке он напрямую посылает этот трафик, а не добавляет в бан как хотелось бы. В итоге нет фильтрации и вы лежите. При выборе этого метода ваш ресурс не ляжет от школьной атаки, но помрет от стрессера. Сегодня такаю атаку я наблюдал у себя. Отбился с помощью 3х записей в iptables. Смешная атака была, но 4 ядра были загружены полностью, что затрудняло использование моего сайта пользователями.

9. Мод на nginx. Описание: Модуль nginx для борьбы с DDoS
Вкратце: защита основана на cookies и JavaScript.
Гитхаб: testcookie-nginx-module

http://evil-hack.us/threads/56083/

Comments

Popular posts from this blog

Заработок на Арабах

Арбитраж на Кворк: как я зарабатываю 40к деревянных в месяц пиная