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

Вид: 12603|Ответ: 2

[linux] Посмотрите, как мой Linux защищает от SYN-атак

[Скопировать ссылку]
Опубликовано 12.12.2015 0:04:58 | | | |

Когда я пришёл в компанию сегодня утром, я чувствовал себя довольно медленно, когда вошёл на официальный сайт компании, вошёл на сервер, чтобы проверить статус доступа к официальному сайту:

[root@web ~]# netstat -anp |awk '{print $6}'|sort|uniq -c |sort -rn

     172 ГОД ОСНОВАНО

     59 CONNECTED

    589 SYN_RECV

     15 ПОТОК

SYN на самом деле настолько высок, продолжайте отслеживать SYN, отправленный этими IP-адресами:

[root@tweb ~]# netstat -an | grep SYN | awk '{печатать $5}' | awk -F: '{print $1}' | сортировать | uniq -c | сортировать -nr | Подробнее

570 x.x.x.x   

(IP не записан, это IP компании Shandong Zaozhuang Unicom), но этот IP отправил так много SYN-запросов, а конкурентность нашего веб-сервера не очень высокая, поэтому обычные пользовательские запросы не могут быть соответствующими, и страница не может быть открыта. Поскольку аппаратный файрвол управляется IT-отделом группы, у меня нет полномочий, поэтому я могу лишь частично предотвратить атаку на локальном сервере.

Прежде всего, давайте поговорим о принципе атаки SYN:

В протоколе TCP/IP протокол TCP обеспечивает надёжные сервисы соединения, используя трёхстороннее рукопожатие для установления соединения.

Первое рукопожатие: при установлении соединения клиент отправляет син-пакет (syn=j) на сервер и входит в состояние SYN_SEND, ожидая подтверждения сервером.

Второе рукопожатие: Когда сервер получает пакет SYN, он должен подтвердить SYN клиента (ack=j+1), а также отправить пакет SYN (syn=k), то есть пакет SYN+ACK, в этот момент сервер переходит в состояние SYN_RECV.

Третье рукопожатие: клиент получает пакет SYN+ACK от сервера и отправляет подтверждающий пакет ACK (ack=k+1) на сервер. После трёх рукопожатий клиент и сервер начинают передавать данные.


Если пользователь инициирует запрос на соединение с сервером, чтобы пожать руку во второй раз и не отвечает серверу, сервер будет ждать подтверждения пользователя. Поэтому мы вносим следующие изменения непосредственно из SYN-соединения:

Проверьте стандартную конфигурацию SYN в Linux:

[root@web ~]# sysctl -a | Grep _syn

net.ipv4.tcp_max_syn_backlog = 1024

net.ipv4.tcp_syncookies = 1

net.ipv4.tcp_synack_retries = 5

net.ipv4.tcp_syn_retries = 5

tcp_max_syn_backlog — длина очереди SYN, и увеличение её длины позволяет поддерживать больше сетевых соединений, ожидающих подключения. tcp_syncookies — это переключатель для включения функции cookie SYN, которая может предотвратить частичные атаки SYN. tcp_synack_retries и tcp_syn_retries определяют количество повторных соединений для SYN и уменьшают параметры по умолчанию, чтобы максимально контролировать количество SYN-соединений.

Ниже приведены параметры, которые я изменил, и которые можно корректировать в зависимости от реального положения моего сервера:

[root@web ~]# больше /etc/rc.d/rc.local

#!/bin/sh

# Этот скрип{filter}t будет выполнен *после* всех остальных init scrip{filter}ts.

# Если нет — можешь положить сюда свои собственные материалы для инициализации

# хочу сделать полный стиль Sys V init.

Нажмите на /var/lock/subsys/local

ulimit -HSn 65535

/usr/local/apache2/bin/apachectl start

#####

sysctl -w net.ipv4.tcp_max_syn_backlog=2048

sysctl -w net.ipv4.tcp_syncookies=1

sysctl -w net.ipv4.tcp_synack_retries=3

sysctl -w net.ipv4.tcp_syn_retries=3

Чтобы конфигурация вступила в силу сразу без перезагрузки сервера, её можно выполнить

#sysctl -w net.ipv4.tcp_max_syn_backlog=2048

#sysctl -w net.ipv4.tcp_syncookies=1

#sysctl -w net.ipv4.tcp_synack_retries=3

#sysctl -w net.ipv4.tcp_syn_retries=3

Некоторые предпочитают использовать списки контроля доступа для предотвращения SYN-атак, что в определённой степени замедляет SYN-атаки:

Атака син-флудом

#iptables -A ВХОД -p tcp --syn -m предел --предел 1/s -j ПРИНЯТЬ

--limit 1/s ограничивает количество син-параллелизма 1 раз в секунду

Сканирование антипортов

# iptables -A FORWARD -p tcp --tcp-flags SYN,ACK,FIN,RST RST -m limit --limit 1/s -j ACCEPT

Пинг смерти

# iptables -A FORWARD -p icmp --icmp-type echo-request -m limit --limit 1/s -j ACCEPT

#>iptables-save >/etc/sysconfig/iptables

Чтобы посмотреть, #iptables -L

ACCEPT tcp — где угодно, где угодно, TCP-флаги: FIN,SYN,RST,ACK/SYN лимит: средний 1/сек вспышки 5

ACCEPT tcp — где угодно, где угодно, флаги tcp: FIN,SYN,RST,ACK/RST лимит: средний 1/сек вспышки 5

ACCEPT ICMP — где угодно, в любом месте, лимит эхозапроса ICMP: в среднем 1/сек вспышки 5

Проверьте соединение с синтезатором ещё раз:

[root@web ~]# netstat -an | grep SYN | awk '{печатать $5}' | awk -F: '{print $1}' | сортировать | uniq -c | сортировать -nr | Подробнее

     20 10.92.10.220

      1 125.43.36.199

Очевидно, что количество SYN-соединений сократилось.






Предыдущий:«Извините, вы не устанавливаете подлинное приложение, установщик не может продолжать обходной путь»
Следующий:SC Create создаёт системный сервис Windows
Опубликовано 13.12.2015 10:53:04 |
Какой мощный взгляд
Опубликовано 14.12.2015 15:55:43 |
Отказ:
Всё программное обеспечение, программные материалы или статьи, публикуемые Code Farmer Network, предназначены исключительно для учебных и исследовательских целей; Вышеуказанный контент не должен использоваться в коммерческих или незаконных целях, иначе пользователи несут все последствия. Информация на этом сайте взята из Интернета, и споры по авторским правам не имеют отношения к этому сайту. Вы должны полностью удалить вышеуказанный контент с компьютера в течение 24 часов после загрузки. Если вам нравится программа, пожалуйста, поддержите подлинное программное обеспечение, купите регистрацию и получите лучшие подлинные услуги. Если есть нарушение, пожалуйста, свяжитесь с нами по электронной почте.

Mail To:help@itsvse.com