Это шестой день моего участия в августовском испытании обновлений. Узнайте подробности мероприятия: Испытание августовского обновления
Параметры TCP в ядре Linux
/proc/sys/net/ipv4/
/proc/sys/net/ipv4/
хранитсяTCP
Файлы параметров, содержимое каталога используются для добавления сетевых настроек, многие из которых можно использовать для предотвращения атак на систему или для установки функции маршрутизации системы.
tcp_syn_retries
Инициировано клиентомSYN
Соединение, если время ожидания истекло, повторная передача, количество повторных передач
Затем мы используемsysctl net.ipv4.tcp_syn_retries=2
Измените этот параметр на2
пройти тест
Тогда давайте проверим, поехалиssh
несуществующий хост, потому чтоssh
также на основеtcp
пройти черезwireshark
Вы можете видеть захват пакета, и он был повторно передан.2
пакеты
net.ipv4.tcp_window_scaling
Включить или отключить параметр коэффициента увеличения окна
net.ipv4.tcp_sack
Включить или отключить подтверждение выбора(Selective Acknowledgement, SACK)
опции
имя | По умолчанию | предлагаемое значение | описывать |
---|---|---|---|
tcpsyn_retries |
5 | 1 | Сколько раз ядро должно отправить для нового соединенияSYN Запрос на соединение решает отказаться. не должно быть больше, чем255 , значение по умолчанию5 , что соответствует времени около 180 миллисекунд. (Для сети с большой нагрузкой и хорошей физической связью это значение слишком велико и может быть изменено как2 . Это значение только для исходящих соединений, для входящих оно определяется tcp_retries1) |
tcp_synack_retries |
5 | 1 | Для запроса удаленного подключения SYN ядро отправитSYN+ACK пакет для подтверждения получения последнего пакета запроса на соединение SYN. Это второй шаг так называемого механизма трехстороннего рукопожатия. Это определяет количество SYN+ACK, отправленных ядром перед отказом. не должно быть больше, чем255 , значение по умолчанию5 , что соответствует примерно 180 секундам. |
tcp_keepalive_time |
7200 | 600 | TCP-отправкаkeepalive Интервал (в секундах) тестовых сообщений для подтверждения правильности TCP-соединения. Предотвращает атаки, когда обе стороны устанавливают соединение, но не отправляют данные. |
tcp_keepalive_probes |
9 | 3 | TCP-отправкаkeepalive Интервал (в секундах) тестовых сообщений для подтверждения правильности TCP-соединения. |
tcp_keepalive_intvl |
74 | 15 | Интервал (в секундах) для повторной отправки тестового сообщения, если оно не получило ответа. По умолчанию75 Второй. (Для обычных приложений это значение слишком велико, и при необходимости его можно изменить на меньшее значение. Особенно для веб-серверов это значение необходимо изменить на меньшее значение.15 более подходящее значение) |
tcp_retries1 |
3 | 3 | Сколько повторных попыток требуется, прежде чем отказаться от ответа на запрос TCP-подключения. В RFC указано, что минимальное значение равно3
|
tcp_retries2 |
15 | 5 | Сколько повторных попыток требуется, прежде чем активное (установленное состояние связи) TCP-соединение будет разорвано. По умолчанию15 ,согласно сRTO Значение определяется значением, которое эквивалентно 13-30 минутам (в RFC1122 указано, что оно должно быть больше 100 секунд) (это значение можно соответствующим образом изменить в соответствии с текущими сетевыми настройками. В моей сети оно изменено на5 ) |
tcp_orphan_retries |
7 | 3 | Сколько попыток нужно сделать, прежде чем ближний конец разорвет TCP-соединение. Значение по умолчанию7 каждый, эквивалентный 50 секундам - 16 минутам, в зависимости от RTO. Если ваша система представляет собой сильно загруженный веб-сервер, вам может потребоваться уменьшить это значение, так как эти сокеты могут потреблять много ресурсов. Дополнительная ссылкаtcp_max_orphans . |
tcp_fin_timeout |
60 | 2 | Для отключенных сокетных соединений на локальном конце TCP остается наFIN-WAIT-2 состояние времени. Другая сторона может разъединиться или никогда не разорвать соединение или непредсказуемо обработать смерть. По умолчанию 60 Второй |
tcp_max_tw_buckets |
180000 | 36000 | Система может обрабатывать максимумtimewait sockets количество. Если это число превышено,time-wait socket будет немедленно отключен, и появится предупреждающее сообщение. Причина установления этого ограничения состоит исключительно в защите от этих простыхDoS Атаки, однако, если сетевые условия требуют больше, чем по умолчанию, его можно увеличить (возможно, больше памяти). (На самом деле лучше всего соответствующим образом увеличить это значение при выполнении NAT) |
tcp_tw_recycle |
0 | 1 | открыть быстроTIME-WAIT sockets Перерабатывать. Не изменяйте это значение, если это не рекомендовано или не запрошено техническим экспертом. (При выполнении NAT рекомендуется открыть его) |
tcp_tw_reuse |
0 | 1 | Указывает, разрешить ли повторное применение вTIME-WAIT Сокет состояния используется для новых TCP-соединений (это очень полезно для быстрого перезапуска некоторых служб, а порт уже используется после запуска) |
tcp_max_orphans |
8192 | 32768 | Система может обрабатывать процессы, которые не принадлежат ни одному процессуTCP sockets наибольшая сумма. Если это число превышено, соединения, не принадлежащие ни одному процессу, будут немедленно сброшены, и будет отображено предупреждающее сообщение. Причина установления этого ограничения состоит исключительно в защите от этих простыхDoS Атакуйте, не полагайтесь на это и не занижайте этот предел искусственно. Если объем памяти большой, это значение следует увеличить. (Это значение установлено на 32768 в версии Redhat AS, но при изменении многих брандмауэров рекомендуется изменить это значение на 2000) |
tcp_abort_on_overflow |
0 | 0 | Когда демон слишком занят, чтобы принимать новые соединения, поскольку одноранговый узел отправляетreset сообщение, значение по умолчаниюfalse . Это означает, что когда причиной переполнения будет случайный всплеск, то соединение будет восстановлено. Включайте эту опцию только в том случае, если вы уверены, что демон действительно не может выполнить запрос на соединение, эта опция влияет на использование клиента. (лечить уже загруженныйsendmail ,apache Когда используется этот тип службы, это может быстро заставить клиента разорвать соединение и может дать сервисной программе возможность буферизации для обработки существующего соединения, поэтому рекомендуется открывать его на многих брандмауэрах.) |
tcp_synookies |
0 | 1 | Выбирается только при компиляции ядраCONFIG_SYNCOOKIES вступит в силу. Когда очередь ожидания синхронизации переполняется, она отправляется другой сторонеsyncookies . Цель состоит в том, чтобы предотвратитьsyn flood атака. |
tcp_stdurg |
0 | 0 | использоватьTCP urg pointer Хост в поле запрашивает функцию объяснения. Большинство хостов используют старый интерпретатор BSD, поэтому, если вы откроете его в Linux, вы не сможете правильно с ними общаться. |
tcp_max_syn_backlog |
1024 | 16384 | Для тех запросов на подключение, которые еще не были подтверждены клиентом, максимальное число, которое необходимо сохранить в очереди. Для систем с объемом памяти более 128 МБ по умолчанию1024 , и 128 ниже 128Mb. Если сервер часто перегружается, попробуйте увеличить это число. Если вы установите это значение больше 1024, лучше изменитьinclude/net/tcp.h внутриTCP_SYNQ_HSIZE , хранитьTCP_SYNQ_HSIZE*16 (SYN Flood Атака использует недостаток протокола TCP для распространения рукопожатий, подделывая IP-адреса источников для отправки большого количестваTCP-SYN Полуоткрытое подключение к целевой системе в конечном итоге приводит к исчерпанию ресурсов очереди сокетов целевой системы и невозможности принимать новые подключения. Чтобы справиться с этим типом атаки, в современных системах Unix обычно используется способ обработки очереди с несколькими подключениями для буферизации (а не решения) этого типа атаки, который заключается в использовании базовой очереди для обработки обычных полностью подключенных приложений. (Connect() и Accept()). Это использование другой очереди для отдельного хранения полуоткрытых соединений. Когда этот метод обработки с двойной очередью сочетается с некоторыми другими мерами ядра системы (такими как Syn-Cookies/Caches), он может эффективно смягчить мелкомасштабные атаки SYN Flood (оказалось, что) |
tcp_window_scaling |
1 | 1 | Этот файл указывает, является ли размер скользящего окна для настройки сеансов tcp/ip переменным. Значение параметра является логическим значением, 1 означает переменную, 0 означает неизменность. Максимальное окно, обычно используемое tcp/ip, может достигать65535 байт.Для высокоскоростных сетей это значение может быть слишком маленьким.В настоящее время, если эта функция включена, размер скользящего окна tcp/ip можно увеличить на несколько порядков, тем самым улучшив возможность передачи данных (RFC 1323). |
tcp_timestamps |
1 | 1 |
Timestamps Используется в некоторых других вещах для защиты от этих подделок.sequence Число. Широкополосная линия 1G может снова столкнуться с пропускной способностьюout-of-line Старый порядковый номер значения (если он был сгенерирован в прошлый раз).Timestamp сообщит ему, что это «старый пакет». (Этот файл указывает, следует ли включить более точный метод, чем повторная передача по тайм-ауту (RFC 1323)RTT расчеты; эта опция должна быть включена для повышения производительности. ) |
tcp_sack |
1 | 1 | использоватьSelective ACK , который можно использовать для поиска конкретных отсутствующих дейтаграмм, что помогает быстро восстановить состояние. Этот файл указывает, включено ли выборочное подтверждение, которое может повысить производительность за счет выборочного подтверждения пакетов, полученных не по порядку, что позволяет отправителю отправлять только отсутствующие сегменты. Эта опция должна быть включена для связи по глобальной сети, но это увеличит использование ЦП. |
tcp_fack |
1 | 1 | ОткрытьFACK Предотвращение перегрузки и возможности быстрой повторной передачи. Обратите внимание, что когдаtcp_sack Если установлено значение 0, это значение недопустимо, даже если оно установлено на 1. Это основная функция надежности TCP-соединения. |
tcp_dsack |
1 | 1 | Позволяет TCP отправлять «два одинаковых»SACK . |
tcp_ecn |
0 | 0 | Функция прямого уведомления о перегрузке TCP. |
tcp_reordering |
3 | 6 | Максимальное количество дейтаграмм для переупорядочивания в потоке TCP. Как правило, рекомендуется немного увеличить это значение. |
tcp_retans_collapse |
1 | 0 | Обеспечивает совместимость с некоторыми глючными принтерами. Эта поддержка вообще не нужна, ее можно отключить |
tcp_wmem:mindefaultmax |
4096 16384 131072 | 8192 131072 16777216 | Отправить настройки кеша.min : минимальный объем памяти, зарезервированный для сокета TCP для отправки буферов. Каждый сокет tcp может использовать его после предложения. Значение по умолчанию — 4096 (4K).default : объем памяти, зарезервированный для отправки буферов для сокетов TCP.По умолчанию это значение будет влиять на объем памяти, используемый другими протоколами.net.core.wmem_default значение, как правило, ниже于net.core.wmem_default ценность . По умолчанию16384(16K) .max : максимальный объем памяти, используемый для буфера отправки сокета TCP. Это значение не влияетnet.core.wmem_max , "статический" параметр выбораSO_SNDBUF не зависит от этого значения. По умолчанию131072(128K) . Для сервера увеличение значения этого параметра полезно для отправки данных. |
tcprmem:mindefaultmax |
4096 87380 174760 | 32768 131072 16777216 | Получить настройки кеша. такой жеtcp_wmem
|
tcp_mem:mindefaultmax |
Рассчитано по памяти | 786432 1048576 1572864 |
low : TCP не будет рассматривать освобождение памяти, если TCP использует количество страниц памяти меньше этого значения. то есть ниже этого значения нет нагрузки на память. (В идеале это значение должно совпадать со вторым значением, присвоенным tcp_wmem — это второе значение указывает произведение максимального размера страницы на максимальное количество одновременных запросов, деленное на размер страницы (131072 300/4096).)pressure : Когда TCP использует больше страниц памяти, чем это значение, TCP пытается стабилизировать использование памяти и входит в режим давления и выходит из режима давления, когда потребление памяти ниже нижнего значения. (В идеале это значение должно быть максимальным общим размером буфера, который может использовать TCP (204800 300/4096).)high : количество страниц, которое разрешено использовать всем сокетам tcp для постановки в очередь буферизованных дейтаграмм. (Если это значение превышено, TCP-соединение будет отклонено, поэтому его не следует делать слишком консервативным (512000 * 300/4096). В этом случае предоставленное значение велико, он может обрабатывать много соединений, да в 2,5 раза больше, чем ожидалось, или позволить существующим соединениям передавать в 2,5 раза больше данных. |
tcp_app_win |
31 | 31 | резервmax(window/2^tcp_app_win, mss) Количество окон из-за буферизации приложения. При 0 буферизация не требуется. |
tcp_adv_win_scale |
2 | 2 | Рассчитайте затраты на буферизацию. |
tcp_low_latency |
0 | 0 | Позволяет стеку TCP/IP адаптироваться к малой задержке при высокой пропускной способности; обычно этот параметр отключен. |
tcp_westwood |
0 | 0 | Включает алгоритм управления перегрузкой на стороне отправителя, который поддерживает оценку пропускной способности и пытается оптимизировать общее использование полосы пропускания; этот параметр следует включить для трафика глобальной сети. |
tcp_bic |
0 | 0 | Включить для быстрых междугородных сетей Binary Increase Congestion ; это позволяет лучше использовать каналы, работающие на скорости гигабайта; эта опция должна быть включена для трафика WAN. |
ip_forward |
0 | 1 |
NAT Должна быть включена поддержка переадресации IP, запишите это значение1
|
ip_local_port_range:minmax |
32768 61000 | 1024 65000 | Указывает диапазон портов, используемых для исходящих подключений, который по умолчанию мал. Этот диапазон также косвенно используется для размера таблицы NAT. |
ip_conntrack_max |
65535 | 65535 | Максимум, поддерживаемый системойipv4 количество подключений, по умолчанию65536 (На самом деле это также теоретическое максимальное значение), и это значение связано с объемом вашей памяти,1G Вышеуказанные значения памяти являются значениями по умолчанию65536
|
/proc/sys/net/core/
/proc/sys/net/core/
Каталог включает в себя ряд настроек, управляющих тем, как ядро Linux взаимодействует с сетевым уровнем, то есть как ядро реагирует, когда сеть что-то делает.
имя | По умолчанию | предлагаемое значение | описывать |
---|---|---|---|
netdev_max_backlog |
1024 | 16384 | Максимальное количество пакетов, которое можно поставить в очередь, когда каждый сетевой интерфейс получает пакеты быстрее, чем ядро может их обработать. Для сильно загруженных серверов это значение может потребоваться увеличить. |
somaxconn |
128 | 16384 | Используется для ограничения максимального количества пакетов в очереди на прослушивание. Превышение этого числа приведет к истечению времени ожидания канала или запуску механизма повторной передачи. Бэклог функции listen в веб-приложении даст нам параметры ядра по умолчаниюnet.core.somaxconn ограниченный128 , а nginx определяетNGX_LISTEN_BACKLOG По умолчанию511 , поэтому необходимо скорректировать это значение. Для загруженных серверов увеличение этого значения может повысить производительность сети. |
wmem_default |
129024 | 129024 | Размер окна отправки по умолчанию (байты) |
rmem_default |
129024 | 129024 | Размер окна приема по умолчанию (байты) |
rmem_max |
129024 | 873200 | Максимальный буфер приема данных TCP (байты) |
wmem_max |
129024 | 873200 | Максимальный буфер отправки данных TCP (байты) |
/proc/sys/net/netfilter/
правдаnetfilter
конфигурация параметров, см.Документация по ядру Linux
Как изменить параметры ядра
- использовать
echo value
способ добавления непосредственно в файл. Такие какecho "1" > /proc/sys/net/ipv4/tcp_syn_retries
, но после перезагрузки устройства таким образом оно вернется к значению по умолчанию. - добавить параметр в
/etc/sysctl.conf
, затем выполнитеsysctl -p
Сделайте так, чтобы параметры вступили в силу. Этот метод является постоянным. - использовать
systcl
команда для изменения, например, изменение количества повторных передач SYNsysctl net.ipv4.tcp_syn_retries=n
Просмотр статистики системы Linux
последующийeth0
Перейдите на сетевую карту, которую необходимо проверить
sys/class/net/eth0/statistics/rx_packets 收到的数据包数量
sys/class/net/eth0/statistics/tx_packets 传输的数据包数量
sys/class/net/eth0/statistics/rx_bytes 接收的字节数
sys/class/net/eth0/statistics/tx_bytes 传输的字节数
sys/class/net/eth0/statistics/rx_dropped 收包时丢弃的数据包
sys/class/net/eth0/statistics/tx_dropped 发包时丢弃的数据包
Параметры сетевой карты Linux можно найти в/sys/class/net/
Введите соответствующий каталог сетевой карты для просмотра, например сетевой картыMAC地址
,速率(speed)
,MTU
так далее
использованная литература
Настройка Linux TCP/IP — Примечания к параметрам ядра Linux
Оптимизация параметров TCP/IP ядра Linux
Рекомендуемое чтение
Управление службами Linux (подробно)!
Платформа проникновения Metasploit, которую должен знать каждый специалист по сетевой безопасности!
Основы проникновения — использование общих модулей Metasploit