защита от ddos атак

Защита от ddos атак

DDos атака — это любая атака на сервер ( сайт) чтобы избавится от него ( вывести из строя). Это делается в качестве забавы или задуманное действие ( из-за конкуренции, и тд и пд). Я не сильно буду говорить что это такое, вы просто можете это почитать в интернете ( википедиа), а я расскажу в теме «защита от ddos атак» как же можно защитить себя от различных атак.

Виды DDos атак

1. Насыщение полосы пропускания

  • HTTP-flood и ping-flood;
  • Smurf-атака (ICMP-flood);
  • Атака Fraggle (UDP-flood);
  • Атака SYN (SYN-flood). Используется с помощью переполнения пакетами.

2. Недостаток ресурсов

  • Отправка «тяжелых» пакетов;
  • Переполнить сервер логами;
  • Плохая система квотирования;
  • Очень плохая проверка данных пользователя;
  • Атака второго рода.

3. Ошибки программирования

  • Изъяны в коде самих программ;
  • Переполненный буфер.

4.Маршрутизация и атаки DNS

  • DoS-атаки на изъяны в ПО на ДНС-серверах
  • ДДос атаки на сами DNS-сервера

Существуют методы для обнаружения различных ДДос-атак:

  • сигнатурные — Этот метод основанный на глубоком и хорошем анализе вашего трафика.
  • статистические — Этот метод основанный на количественном анализе конкретного трафика.
  • гибридные — комбинируют оба метода.

Что нужно делать в самом начале атаки DoS?

До самой ДДос -атаки хакеры только набирают свои обороты и постепенно увеличивая поток пакетов на  ПК самой жертвы. Нужно быстро и немедленно принимать конкретные действия, а то может закончится не очень хорошо.

Допустим,  нас пытаются атаковать с помощью SYN-flood-а, то чтобы с этим справиться нужно выставить число «полуоткрытых» соединений:

# grep ":80\ " | grep SYN_RCVD

По хорошему, они не вообще не должны быть, но а если уже и есть, то максимум должен быть около 1-3. Если больше, то  это говорит о возможной DoS-атаки.

Немного посложнее обходится  с HTTP-flood-ом. Для самого начала нужно подсчитать сколько у нас имеется подключений по 80-му порту, а так же сколько процессов апача:

# grep httpd | wc -l grep ":80\ " | wc -l

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

Чтобы вывести список  всех IP-адресов по которым идут запросы на соединение можно использовать команду что ниже:

# grep ":80\ " | sort | uniq -c | sort -nr | less

Так же легко можно заюзать вот такой еще вариант:

# netstat -ntu | grep "your_IP:80" | grep -v "127.0.0.1" | awk '{print $5}' | cut -d: -f1 | sort | uniq -c | sort -n

На следующем этапе нужно выполнить анализ всех пакетов с использованием команды tcpdump:

# tcpdump -n -i eth0 -s 0 -w output.txt dst port 80 and host IP-сервера

Если  мы видим очень большой поток однообразных пакетов с разных айпишников, которые «слушают» один порт, можно тогда сказать что Вас Ддосят.  Если такое произошло, но нужно ребутнуть (перезапустить или сбросить) все эти соединения, но само лучшее решение сделать это прямо на самом маршрутизаторе:

# iptables -A INPUT -s xxx.xxx.xxx.xxx -p tcp --destination-port http -j DROP

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

Защита от основных видов DoS-атак

  • Защита от HTTP-flood

Чтобы защитится от HTTP-flood нужно прибавить одновременное количество максимальных подключений к БД сервера, нужно установить перед апачем еще и энжинкс для кэширования всех запросов. Данный конфиг приведу файликом, который можно глянуть:

nginx.conf

  • Защита от ICMP-flood

Расскажу сейчас как бороться от ICMP-flood, а всего то нужно отключить ответы на запросы ICMP ECHO:

# sysctl net.ipv4.icmp_echo_ignore_all=1

Так же это можно сделать с помощью брандмауэра:

# iptables -A INPUT -p icmp -j DROP --icmp-type 8
  • Защита от UDP-flood

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

# iptables -I INPUT -p udp --dport 53 -j DROP -m iplimit --iplimit-above 1
  • Защита от SYN-flood

Эта данная защита  заключается в выключении самой очереди «полуоткрытых» TCP-соединений:

# sysctl -w net.ipv4.tcp_max_syn_backlog=1024

Так же нужно включить сам механизм TCP syncookies, для этого следует выполнить:

# sysctl -w net.ipv4.tcp_syncookies=1

Следующим этапом мы ограничиваем максимального число «полуоткрытых» соединений с 1-го IP для нужного порта:

# iptables -I INPUT -p tcp --syn --dport 80 -m iplimit --iplimit-above 10 -j DROP

У вас  должна быть настроена система, которая будет анализировать трафик и которая сможет своевременно узнать о  ДДос-атаке, а так же по мере возможности, принимать меры по ее избежанию.

Защита от DDoS с iptables, готовый скрипт

  • Защита от спуфинга

Для этого нужно выполнить:

# net.ipv4.conf.default.rp_filter = 1

Проверяем TCP-соединение каждую минуту (если на др стороне — нормальный сервер, то сразу ответит. (Стандартное значение — 2ч):

# net.ipv4.tcp_keepalive_time = 60

Проверяем через 10 сек:

# net.ipv4.tcp_keepalive_intvl = 10

Устанавливаем количество проверок перед закрытием соединения:

# net.ipv4.tcp_keepalive_probes = 5

Я очень бегло рассказал и описал что и как, но постепенно ( со временем) я буду рассказывать и приводить примеры по борьбе с ДДосиками, так же я буду более глубоко уделять вниманию каждому из видов атак. Чтобы это я мог сделать, мне нужно время, время для   того чтобы я смог найти нужный и полезный материал, а так же более подробно расписал, чтобы всем было понятно. Надеюсь я нормально пишу статьи, если есть замечания или может предложения, добавляйтесь  в группы, можно и в друзья, а так же можете просто писать в комментах.

Собственно, я завершу наверное на этом «защита от ddos атак», надеюсь было полезно. Спасибо что посещаете мой сайт  http://linux-notes.org

 

2 thoughts on “защита от ddos атак

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

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

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.