Большинство серверов в сети имеют очень плохую защиту от атак и взлома. Причём это касается как шаред хостингов, так и выделенных частных серверов. А ведь интернет - чрезвычайно агрессивная среда, где тысячи ботов и толпы доморощенных хакеров - школьников будут постоянно пытаться сломать или атаковать Ваш сервер. Это я говорю, основываясь на личном опыте. Ведь постоянно в логах сервера вижу попытки перебора паролей, сканирование портов и другие подобные гадости. В ISPConfig 3, если Вы устанавливали её по официальному мануалу, уже имеется довольно хорошая защита от взлома, но вот перед банальным рефрешингом и тем более DoS атакой, любой неподготовленный сервер бессилен.

Давайте разберёмся подробнее, что грозит нашим домашним (и не только домашним) серверам в плане активных DoS атак после открытия серверов во всемирную паутину. К примеру, человек, имеющий широкополосный канал интернета заходит на Ваш сайт, расположенный на домашнем сервере, нажимает и удерживает на своей клавиатуре клавишу F5. В итоге на сервер идёт постоянный поток запросов, а сервер пытается их обработать. Всё это быстро пожирает ресурсы процессора и оперативной памяти - через несколько секунд сайт начинает очень медленно работать или вообще становится не доступным на всё время, пока  человек удерживает клавишу нажатой. Это и есть рефрешинг. Можно ещё назвать такую атаку малой DoS атакой. Как говорится, банально, но эффективно особенно для слабых серверов.

Если же для подобной атаки злоумышленник будет применять специализированный софт, то эффективность атаки будет ещё выше. Но не стоит расстраиваться: от таких одиночных DoS-еров можно довольно легко защититься. А вот если их будут сотни или тем более тысячи, то уже ничто не спасёт Ваш сервер, будь он дома либо в датацентре, в любом случае он ляжет. Такой вид атаки называется DDoS, и я не буду её рассматривать, так как она маловероятна на домашний сервер, на котором навряд ли будут коммерческие проекты вроде крупных магазинов. Да и вообще против такой атаки нет спасения, чего бы Вам не говорили «знатоки».

Итак, сейчас будем ставить защиту от малых DoS атак. Самый простой способ - это установить на сервер (D)DoS Deflate. Этот скрипт отслеживает количество одновременных подключений с каждого IP и в случае превышения установленного количества блокирует такие IP посредством iptables. Всё нижеописанное проводится на операционной системе Debian.

Для установки скрипта залогинимся в консоли под root. После чего выполним команду установки

wget http://www.inetbase.com/scripts/ddos/install.sh
chmod 0700 install.sh
./install.sh

После установки необходимо отконфигурировать скрипт. Для этого открываем файл конфигурации командой          

nano /usr/local/ddos/ddos.conf

Затем  изменяем  максимальное количество соединений, при котором IP адрес попадёт в бан. Эта настройка зависит от Вашего проекта и настраивается индивидуально, но лучше не ставить слишком малое значение, иначе скрипт начнёт банить пользователей либо поисковых ботов.           

##### How many connections define a bad IP? Indicate that below.
NO_OF_CONNECTIONS=70

Далее включаем бан через iptables  

##### APF_BAN=1 (Make sure your APF version is atleast 0.96)
##### APF_BAN=0 (Uses iptables for banning ips instead of APF)
APF_BAN=0

Указываем время в секундах, на которое будут забанены нехорошие IP адреса.

##### Number of seconds the banned ip should remain in blacklist.
BAN_PERIOD=600

Желательно вписать свой реальный Email адрес, на который скрипт будет отсылать отчёт о забаненных адресах и количестве соединений в момент их бана.

##### An email is sent to the following address when an IP is banned.
##### Blank would suppress sending of mails
EMAIL_TO="ваш@mail.ru"

Также можно добавить избранные IP в список игнорируемых. Игнорлист открыть командой      

nano /usr/local/ddos/ignore.ip.list

После этого добавляем в крон задание запуска этого скрипта каждую минуту. Для этого выполним в консоли команду            

crontab -e

И добавляем новое задание 

*/1 * * * * nice -n -5 /usr/local/ddos/ddos.sh

Сохраняем и выходим.

Теперь неплохо бы проверить скрипт в деле. Для этого симулируем DoS атаку на свой сервер с помощью сервиса http://loadimpact.com. Это платный сервис для тестирование серверов и вебскриптов на предельную нагрузку. Несмотря на платность, один раз в сутки сервис позволяет протестировать один домен бесплатно, чем я и воспользуюсь.

В бесплатном тесте создаётся нагрузка в виде 50 соединений с одного IP адреса, что нам более чем достаточно. Главное - это не забыть перед тестом изменить в конфигурации (D)DoS Deflate значение NO_OF_CONNECTIONS на меньшее, чем 50. Я поставил для теста значение 30.

Далее вводим в поле домен сайта, расположенного на домашнем сервере и жмём кнопку «Run free test». Через некоторое время количество соединений будет плавно увеличиваться. Кстати: в консоли в это время можно наблюдать количество соединений с помощью команды   

netstat -ntu | awk '{print $5}' | cut -d: -f1 | sort | uniq -c | sort -n

Как только количество соединений достигнет прописанного в конфигурации, скрипт сработает и IP будет забанен, а на Ваш электронный адрес будет выслан отчёт.

Приведу ещё пару полезных команд позволяющих следить за количеством соединений. Количество запущеных процессов апача можно узнать так:

ps aux | grep apache | wc -l

А количество соединений на 80 порт можно узнать так:

netstat -na | grep ":80\ " | wc -l

Удалить (D)DoS Deflate можно либо вручную затерев директорию ddos либо выполнив скрипт удаления:

wget http://www.inetbase.com/scripts/ddos/uninstall.ddos
chmod +x uninstall.ddos
./uninstall.ddos
Добавить комментарий


cooltext1694913428.png