Рубрики
sysctl \ настройки \ ограничения

IPv4 / dev / sysconf / параметры

ipv4

https://www.opennet.ru/docs/RUS/LARTC/x1727.html


/proc/sys/net/ipv4/icmp_echo_ignore_all
Параметр может принимать два значения -- 0 (выключено) и 1 (включено). Значение по-умолчанию -- 0 (выключено). 
Если записана 1, то ядро просто игнорирует все ICMP Echo Request запросы и тогда никто не сможет ping-ануть вашу машину, чтобы проверить ее наличие в сети, что само по себе не есть хорошо. 
С одной стороны -- окружающие лишены возможности проверить ваше присутствие в сети, с другой -- существует масса приложений, 
которые используют ICMP Echo Request запросы далеко не в благовидных целях.
Вообщем все как всегда -- что-то плохо, а что-то хорошо.


/proc/sys/net/ipv4/icmp_echo_ignore_broadcasts
Эта переменная очень близка по смыслу к icmp_echo_ignore_all, только в данном случае будут игнорироваться ICMP-сообщения, 
отправленные на широковещательный или групповой адрес. Вполне очевидно, почему полезно включить этот параметр -- защита от smurf атак.


/proc/sys/net/ipv4/icmp_ignore_bogus_error_responses
Отдельные маршрутизаторы, вопреки стандартам, описанным в RFC 1122, отправляют фиктивные ответы в широковещательном диапазоне. 
Обычно эти ошибки заносятся в системный журнал. 
Если вы не желаете регистрировать их, то включите этот параметр и тем самым сбережете некоторый объем дискового пространства в своей системе. 
Параметр может принимать два значения -- 0 (выключено) и 1 (включено). 
Значение по-умолчанию -- 0 (выключено)


/proc/sys/net/ipv4/icmp_ratelimit
Максимальная частота генерации ICMP-пакетов с типом, указанным в icmp_ratemask (см. ниже). 
Это значение задается в "тиках" и устанавливает временной интервал между ICMP-посылками. Таким образом, значение 0 означает отсутствие ограничений. 
Обычно 1 "тик" равен 0.01 секунды, так значение 1 в этой переменной ограничивает скорость передачи не более 100 посылок в секунду, а значение 100 -- не более 1 посылки в секунду. 
Значение по-умолчанию -- 100 (зависит от конфигурации ядра), что означает не более 1 ICMP посылки за интервал в 100 "тиков".


/proc/sys/net/ipv4/icmp_ratemask
Маска ICMP типов, на которые накладывается ограничение по частоте генерации переменной icmp_ratelimit. 
Каждый из ICMP типов маскируется своим битом.
icmp_ratemask -- это битовая маска, где каждый ICMP тип представлен своим битом. 
Соответствие между символическим названием ICMP типа и его порядковым номером вы найдете в заголовочном файле netinet/ip_icmp.h (обычно это /usr/include/netinet/ip_icmp.h). 
За дополнительной информацией обращайтесь к RFC 792 - Internet Control Message Protocol. 
Значение по-умолчанию -- 6168


/proc/sys/net/ipv4/igmp_max_memberships
Максимальное число групп на каждый сокет. 
Значение по-умолчанию -- 20 и может быть изменено по мере необходимости. 


/proc/sys/net/ipv4/inet_peer_maxttl
Это максимальное время хранения записей. 
При незначительных нагрузках на систему неиспользуемые записи будут удаляться через данный промежуток времени.


/proc/sys/net/ipv4/inet_peer_minttl
Параметр определяет минимальное время хранения данных в "inet peer storage". 
Это время должно быть достаточно большим, чтобы перекрыть время сборки фрагментов на противоположной стороне.
Минимальное время хранения является гарантией того, что размер пула будет меньше чем величина inet_peer_threshold.


/proc/sys/net/ipv4/inet_peer_threshold
Здесь хранится приблизительный размер памяти для "inet peer storage". 
Когда размер пула достигает этой величины, то "сборщик мусора" переводится в более агрессивный режим работы -- с периодом прохода inet_peer_gc_mintime. 
Кроме того, этот порог влияет на срок хранения записей. Чем выше этот порог, тем больше срок хранения.


/proc/sys/net/ipv4/ip_default_ttl
Устанавливает значение по-умолчанию для величины Time To Live исходящих пакетов. 
Это число определяет продолжительность "жизни" пакета в Internet. 
Каждый раз, когда пакет попадает на очередной роутер (брандмауэр и т.п.), величина TTL пакета уменьшается на 1.
Значение по-умолчанию -- 64


/proc/sys/net/ipv4/ip_dynaddr
Параметр используется для разрешения некоторых проблем, связанных с динамической адресацией. 
Позволяет демону diald одновременно устанавливать соединение и изменять исходящий адрес в пакетах (и сокетах для локальных процессов). 
Эта возможность была реализованв для поддержки TCP по коммутируемым соединениям и соединениям с маскарадингом (masqueradig). 
Эта опция позволяет "маскарадить" исходящий адрес пакета при изменении динамического IP-адреса.
В переменную можно записать одно из 3-х значений: 0, 1 или 2.
0 -- опция выключена, это значение по-умолчанию.
1 -- опция включена.
Любое другое значение, отличающееся от 0 и 1 подразумевает включение этой опции в "многословном" (verbose) режиме, что приводит к записи в системный журнал отладочных сообщений.


/proc/sys/net/ipv4/ip_forward
Включает/отключает функцию форвардинга (передачу транзитных пакетов между сетевыми интерфейсами), которая позволяет компьютеру выступать в роли брандмауэра или маршрутизатора. 
Эта переменная очень важна для Network Address Translation (Трансляция Сетевых Адресов), 
брандмауэров, маршрутизаторов и всего того, что должно передавать пакеты между сетями.
Это булева переменная. Или, другими словами, она может принимать два значения -- 0 или 1. 
Значение по-умолчанию -- 0, "запрещено". 
То есть 0 означает запрет форвардинга, а 1 -- разрешает его.


/proc/sys/net/ipv4/ip_local_port_range
Содержит два целых числа, которые определяют диапазон локальных портов, которые используются в клиентских соединениях, 
т.е. для исходящих соединений, которые связывают нашу систему с некоторым узлом сети, 
где мы выступаем в качестве клиента. Первое число задает нижнюю границу диапазона, второе -- верхнюю.
Значения по-умолчанию зависят от имеющегося объема ОЗУ. 
Если установлено более чем 128 Мб, то нижняя граница будет 32768, а верхняя -- 61000. При меньшем объеме ОЗУ нижняя граница будет 1024 а верхняя -- 4999 или даже меньше.
Этот диапазон определяет количество активных соединений, которые могут быть запущены одновременно, с другой системой, которая не поддерживает TCP-расширение timestamp.
Диапазона 1024-4999 вполне достаточно для установки до 2000 соединений в секунду с системами, не поддерживающими timestamp. Проще говоря, этого вполне достаточно для большинства применений.


/proc/sys/net/ipv4/ip_no_pmtu_disc
Параметр ip_no_pmtu_disc запрещает поиск PMTU (от англ. Path Maximum Transfer Unit -- Максимальный Размер Пакета для выбранного Пути). 
Для большинства случаев лучше установить в эту переменную значение FALSE, или 0 (т.е. система будет пытаться определить максимальный размер пакета, 
при котором не потребуется выполнять их фрагментацию, для передачи на заданный хост). 
Но иногда, в отдельных случаях, такое поведение системы может приводить к "срывам" соединений. 
Если у вас возникают такие проблемы, то вам следует попробовать отключить эту опцию (т.е. записать в переменную число 1) и установить нужное значение MTU.
Обратите внимание на то, что MTU и PMTU -- это не одно и то же! MTU -- (от англ. Maximum Transfer Unit -- максимальный размер пакета) определяет максимальный размер пакета для наших сетевых интерфейсов,
но не для сетевых интерфейсов на другом конце. 
PMTU -- опция, которая заставляет систему вычислять максимальный размер пакета, 
при котором не потребуется фрагментация пакетов, для маршрута к заданному хосту, включая все промежуточные переходы.
Значение по-умолчанию -- FALSE (0), т.е. функция определения разрешена. Если записать число 1 в этот файл, 
то функция определения PMTU будет запрещена. Параметр ip_no_pmtu_disc может принимать значение 0 или 1.


/proc/sys/net/ipv4/ipfrag_high_thresh
Параметр задает максимальный объем памяти, выделяемый под очередь фрагментированных пакетов. 
Когда длина очереди достигает этого порога, то обработчик фрагментов будет отвергать все фрагментированные пакеты до тех пор, 
пока длина очереди не уменьшится до значения переменной ipfrag_low_thresh. 
Это означает, что все отвергнутые фрагментированные пакеты должны быть повторно переданы узлом-отправителем.



/proc/sys/net/ipv4/ip_nonlocal_bind
Установка этого параметра позволяет отдельным локальным процессам выступать от имени внешнего (чужого) IP-адреса. 
Это может оказаться полезным в некоторых случаях, когда необходимо "прослушивать" внешние (чужие) IP-адреса, например -- сниффинг чужого траффика. 
Однако, эта опция может оказывать отрицательное влияние на работоспособность отдельных приложений.
Может иметь два значения -- 0 или 1. 
Если установлено значение 0, то опция отключена, 1 -- включена. 
Значение по-умолчанию -- 0.


/proc/sys/net/ipv4/ipfrag_low_thresh
Этот параметр очень тесно связан с переменной ipfrag_high_thresh. 
Он устанавливает нижний порог, при достижении которого опять разрешается прием фрагментов в очередь. 
Обработчик фрагментов имеет свою очередь, в которой находятся фрагментированные пакеты, ожидающие сборки. 
Когда длина очереди достигает верхнего порога (ipfrag_high_thresh), то прием фрагментов в очередь приостанавливается до тех пор, пока длина очереди не уменьшится до величины ipfrag_low_thresh. 
Это предохраняет систему от "затопления" фрагментированными пакетами и, тем самым, является, в своем роде, защитой от некоторых видов DoS-атак.


/proc/sys/net/ipv4/ipfrag_time
Определяет максимальное время "хранения" фрагментов в секундах. 
Это относится только к тем фрагментам, которые пока невозможно собрать, поскольку собранные пакеты к этому сроку скорее всего уже будут переданы дальше (на следующий уровень или в сеть).
Принимает целое значение и определяет предельное время хранения фрагментов в секундах. Если записать туда число 5, то это будет означать 5 секунд.



/proc/sys/net/ipv4/tcp_abort_on_overflow
Заставляет ядро отвергать новые соединения, если их поступает такое количество, что система не в состоянии справиться с таким потоком. 
Что это означает? Допустим, что на систему обрушивается шквал запросов на соединение, тогда они могут быть просто отвергнуты, если эта опция будет включена, 
поскольку система не в состоянии обработать их все. 
Если не установлена, то система будет пытаться обслужить все запросы.
Может иметь два значение -- 0(выключено) или 1(включено). Значение по-умолчанию -- 0. 
Включение этой опции следует расценивать как крайнюю меру. Перед этим необходимо попытаться поднять производительность сервисов.


/proc/sys/net/ipv4/tcp_fin_timeout
Задает максимальное время пребывания сокета в состоянии FIN-WAIT-2. 
Используется в тех случаях, когда другая сторона по тем или иным причинам не закрыла соединение со своей стороны. 
Каждый сокет занимает в памяти порядка 1.5 Кб, что может привести к значительным утечкам памяти в некоторых случаях.
Принимает целое число. Значение по-умолчанию -- 60 секунд. 
В ядрах серии 2.2 это значение было равно 180 секундам, но было уменьшено, поскольку иногда возникали проблемы, 
связанные с нехваткой памяти, на web-серверах, которые, как правило, обслуживают огромное количество подключений.
За дополнительной информацией -- обращайтесь к описанию параметров tcp_max_orphans и tcp_orphan_retries.


/proc/sys/net/ipv4/tcp_keepalive_time
Определяет -- как часто следует проверять соединение, если оно давно не используется. 
Значение параметра имеет смысл только для тех сокетов, которые были созданы с флагом SO_KEEPALIVE.
Принимает целое число секунд. Значение по-умолчанию -- 7200, т.е. 2 часа. 
Не уменьшайте это число без необходимости, поскольку это может привести к увеличению бесполезного трафика.


/proc/sys/net/ipv4/tcp_keepalive_intvl
Определяет интервал проверки "жизнеспособности" сокета. 
Это значение учитывается при подсчете времени, которое должно пройти перед тем как соединение будет разорвано.
Принимает целое число. Значение по-умолчанию -- 75 секунд. 
Это достаточно высокое значение, чтобы рассматривать его как нормальное. 
Значения параметров tcp_keepalive_probes и tcp_keepalive_intvl могут использоваться для определения времени, через которое соединение будет разорвано.
Со значениями по-умолчанию (9 попыток с интервалом 75 секунд) это займет примерно 11 минут. 
Попытки определения "жизнеспособности", в свою очередь, начнутся через 2 часа после того, как через данное соединение проследовал последний пакет.


/proc/sys/net/ipv4/tcp_keepalive_probes
Определяет количество попыток проверки "жизнеспособности" прежде, чем будет принято решении о разрыве соединения.
Принимает целое число, которое не следует устанавливать больше 50-ти. Значение по-умолчанию -- 9. 
Это означает, что будет выполнено 9 попыток проверки соединения, чтобы убедиться в том, что соединение разорвано.


/proc/sys/net/ipv4/tcp_max_orphans
Задает максимальное число "осиротевших" (не связанных ни с одним процессом) сокетов. 
Если это число будет превышено, то такие соединения разрываются, а в системный журнал пишется предупреждение.
Это ограничение существует исключительно ради предотвращения простейших разновидностей DoS-атак. 
Вообще вы не должны полагаться на эту переменную! Не рекомендуется уменьшать это число. 
Сетевая среда может потребовать увеличение этого порога, однако, такое увеличение может привести к необходимости увеличения объема ОЗУ в системе. 
Прежде чем поднимать этот предел -- попробуйте перенастроить сетевые сервисы на более агрессивное поведение по отношению к "осиротевшим" сокетам.
Принимает целое число. Значение по-умолчанию -- 8192, однако оно очень сильно зависит от объема памяти в системе. 
Каждый "осиротевший" сокет "съедает" примерно 64 Кб памяти, которая не может быть сброшена в своп (swap).
При возникновении проблем, связанных с этим ограничением -- в системный журнал будет записано сообщение, подобное этому: TCP: too many of orphaned sockets           
Это может служить поводом к тому, чтобы пересмотреть значения переменных tcp_fin_timeout или tcp_orphans_retries.


/proc/sys/net/ipv4/tcp_orphan_retries
Количество попыток закрыть соединение перед тем как оно будет разорвано принудительно. 
Если вы администрируете http-сервер, который испытывает большие нагрузки, то стоит подумать об уменьшении этого значения.
Значение по-умолчанию -- 0 (archlinux)


/proc/sys/net/ipv4/tcp_max_syn_backlog
Определяет максимальное время хранения SYN-запросов в памяти до момента получения третьего, завершающего установление соединения, пакета. 
Эта опция работает только тогда, когда включен параметр tcp_syncookies. 
Если сервер испытывает серьезные нагрузки, то можно попробовать немного увеличить этот параметр.
По-умолчанию равно 512


/proc/sys/net/ipv4/tcp_max_tw_buckets
Максимальное число сокетов, находящихся в состоянии TIME-WAIT одновременно. 
При превышении этого порога -- "лишний" сокет разрушается и пишется сообщение в системный журнал. Цель этой переменной -- предотвращение простейших разновидностей DoS-атак.
По-умолчанию -- 180000.


/proc/sys/net/ipv4/tcp_retrans_collapse
Включает/выключает эмуляцию ошибки протокола TCP, делая возможным сетевое взаимодействие с некоторыми устройствами, в которых реализация стека TCP имеет эту ошибку. 
Без ее эмуляции было бы невозможным работать с отдельными моделями принтеров. 
Ошибка заключается в отправке полноразмерных пакетов при повторной передаче.
Значение по-умолчанию -- 1 (включено).



/proc/sys/net/ipv4/tcp_retries1
Максимальное количество попыток повторной передачи пакетов по установленному соединению прежде, 
чем сообщение об ошибке будет передано сетевому уровню, в результате чего может быть выбран другой маршрут для отправки последующих пакетов. 
Минимальное значение этого параметра равно 3.
Это число является значением по-умолчанию, что соответствует интервалу времени от 3 секунд до 8 минут, в зависимости от величины Retransmission timeout (RTO). 
Детальное описание RTO вы найдете в разделе "3.7. Data Communication" RFC 793 - Transmission Control Protocol.
Значение по-умолчанию -- 3. 



/proc/sys/net/ipv4/tcp_retries2
Максимальное количество попыток повторной передачи пакетов, до того как соединение будет считаться разорванным. 
Это ограничение определено в RFC 1122 и равно 100, но обычно его уменьшают.
Значение по-умолчанию -- 15, что соответствует примерно 13-30 минутам в зависимости от величины Retransmission timeout (RTO).


/proc/sys/net/ipv4/tcp_rfc1337
Является реализацией решения проблемы, описываемой в "RFC 1337 - TIME-WAIT Assassination Hazards in TCP". 
Проблема связана с "устаревшими" дубликатами пакетов, которые могут вносить помехи во вновь устанавливаемые соединения и порождать три различные проблемы. 
Первая -- "устаревший" дубликат пакета с данными может быть ошибочно воспринят в новом соединении, что приведет к передаче неверных данных. 
Вторая -- соединение может быть десинхронизировано и "уйти" в ACK-цикл из-за "устаревших" дубликатов, 
которые порождают новые соединения (здесь автор имеет ввиду "устаревшие" дубликаты SYN-пакетов, прим. перев.). 
И третья проблема -- "устаревшие" дубликаты могут "проникнуть" в недавно созданное соединение и ошибочно уничтожить его.


/proc/sys/net/ipv4/tcp_sack
Разрешает Selective Acknowledgements (SACK -- Выборочное Подтверждение), детальное описание вы найдете в RFC 2883 
- An Extension to Selective Acknowledgement (SACK) Option for TCP и RFC 2883
- An Extension to Selective Acknowledgement (SACK) Option for TCP


/proc/sys/net/ipv4/tcp_stdurg
Разрешает/запрещает соответствие стандарту RFC 1122. Поведение по-умолчанию соответствует стандарту использования флага URG -- BSD 4.2, описанному в RFC 793. 
Если этот параметр включен, то возможны сбои при работе с отдельными узлами Интернета, точнее -- с узлами, которые придерживаются стандарта BSD 4.2. 
Значение по-умолчанию -- 0 (выключено).


/proc/sys/net/ipv4/tcp_syn_retries
Количество попыток передачи SYN-пакета при установлении нового соединения. 
Это число не должно устанавливаться больше чем 255, поскольку каждая повторная попытка отнимает значительное время. 
На каждую попытку отводится примерно 30-40 секунд. Значение по-умолчанию -- 5, что соответствует, примерно, 180 секундам.


/proc/sys/net/ipv4/tcp_synack_retries
Количество попыток передачи SYN,ACK-пакета в ответ на SYN-запрос. 
Другими словами -- максимальное число попыток установить пассивное TCP-соединение, инициированное другим хостом. 
Это число не должно устанавливаться больше чем 255. Значение по-умолчанию -- 5.


/proc/sys/net/ipv4/tcp_timestamps
Разрешает/запрещает использование временных меток (timestamps), в соответствии с RFC 1323. Если коротко, 
то это расширение TCP используется для расчета Round Trip Measurement (определение времени возврата) лучшим способом, нежели метод Retransmission timeout (RTO). 
Эта опция должна сохранять обратную совместимость в большинстве случаев, так что лучше оставить ее включенной, 
особенно если вы работаете в высокоскоростной сети (например LAN или 10mb Интернет). 
В случае низкоскоростного оединения (скажем модемное) -- вы прекрасно обойдетесь и без этой опции, и будет даже лучше, если вы ее отключите. 
Значение по-умолчанию -- 1 (включено).


/proc/sys/net/ipv4/tcp_window_scaling
Разрешает/запрещает масштабирование TCP-окна, как определено в RFC 1323. 
В этом документе описано как производится масштабирование TCP-окна при передаче по Large Fat Pipes (LFP -- "толстый" канал). 
При передаче TCP-пакетов по "толстым" каналам возникают существенные потери пропускной способности из-за того, 
что они не загружены полностью во время ожидания подтверждения о приеме предыдущего TCP-окна. 
Основная проблема состоит в том, что окно не может иметь размер больше, чем 2**16 байт (65 Кб). 
Разрешая масштабирование TCP-окна мы, тем самым, можем увеличить его размер и таким образом уменьшить потери пропускной способности. 
Значение по-умолчанию -- 1 (включено).

dev

DEV следует понимать название устройства.
Настройки в каталоге all применяются ко ВСЕМ сетевым интерфейсам

/proc/sys/net/ipv4/conf/DEV/accept_redirects
Управляет приемом ICMP-сообщений о переадресации. 
Сообщения ICMP Redirect ... используются для уведомления маршрутизаторов или хостов о существовании лучшего маршрута движения пакетов к заданному хосту, 
который (маршрут) может быть быстрее или менее загружен.

/proc/sys/net/ipv4/conf/DEV/accept_source_route
Разрешает/запрещает "маршрутизацию от источника". Маршрутизация от источника весьма небезопасна. 
По-умолчанию -- 1 (включено). В archlinux = 0


/proc/sys/net/ipv4/conf/DEV/bootp_relay
Разрешает/запрещает форвардинг пакетов с исходящими адресами 0.b.c.d. 
Демон BOOTP relay должен перенаправлять эти пакеты на корректный адрес. 
Значение по-умолчанию -- 0 (выключено), поскольку реализация обработки этого параметра еще отсутствует (kernel v2.2.12).

/proc/sys/net/ipv4/conf/DEV/forwarding
Включает/отключает функцию форвардинга (передачу транзитных пакетов) между сетевыми интерфейсами. 
Могут использоваться для включения/выключения функции форвардинга для отдельных интерфейсов. 
По-умолчанию все параметры conf/DEV/forwarding принимают значение, установленное в ipv4/ip_forward так, если этот параметр включить, 
то и все параметры conf/DEV/forwarding будут включены, если выключить, то и conf/DEV/forwarding окажутся выключены.


/proc/sys/net/ipv4/conf/DEV/log_martians
Включает/выключает функцию журналирования всех пакетов, которые содержат неправильные (невозможные) адреса (так называемые martians -- "марсианские" пакеты). 
Под невозможными адресами, в данном случае, следует понимать такие адреса, которые отсутствуют в таблице маршрутизации.


/proc/sys/net/ipv4/conf/DEV/mc_forwarding
Включает/выключает поддержку маршрутизации групповых рассылок для заданного интерфейса. 
Кроме того, чтобы иметь поддержку маршрутизации групповых рассылок, необходимо собрать ядро с включенной опцией CONFIG_MROUTE. 
Дополнительно в системе должен иметься демон, осуществляющий групповую маршрутизацию. Значение по-умолчанию -- 0 (выключено). 
Обратите внимание -- нет никакой необходимости включать эту опцию, если вы желаете лишь получать групповые пакеты. 
Она необходима только если вы собираетесь перенаправлять групповой трафик через вашу систему.


/proc/sys/net/ipv4/conf/DEV/proxy_arp
Включает/выключает проксирование arp-запросов для заданного интерфейса. 
ARP-прокси позволяет маршрутизатору отвечать на ARP запросы в одну сеть, в то время как запрашиваемый хост находится в другой сети. 
С помощью этого средства происходит "обман" отправителя, который отправил ARP запрос, после чего он "думает", что маршрутизатор является хостом назначения, 
тогда как в действительности хост назначения находится по другую сторону маршрутизатора. 
Маршрутизатор выступает в роли уполномоченного агента хоста назначения, перекладывая пакеты от другого хоста. Значение по-умолчанию -- 0 (выключено). 
Дополнительную информацию вы найдете в Proxy-ARP mini HOWTO.


/proc/sys/net/ipv4/conf/DEV/rp_filter
Проверка Обратного Адреса, хотя это слишком вольный перевод термина, но мне он кажется наиболее близким по смыслу. прим. перев..
По-умолчанию, маршрутизаторы перенаправляют все подряд, даже пакеты, которые не принадлежат вашей сети. 
В качестве примера можно привести утечку локального трафика в Интернет. 
Если у вас имеется интерфейс с маршрутом к нему 195.96.96.0/24, то вы наверняка не ожидаете получить на него пакеты от 212.64.94.1.
В файловой системе /proc лежит файл, изменив который вы сможете отключить или включить эту проверку. 
Смысл этого параметра достаточно прост -- все, что поступает к нам, проходит проверку на соответствие исходящего адреса с нашей таблицей маршрутизации и такая проверка считается успешной, 
если принятый пакет предполагает передачу ответа через тот же самый интерфейс.
Следующий фрагмент включит проверку исходящего адреса для всех существующих интерфейсов:
# for i in /proc/sys/net/ipv4/conf/*/rp_filter ; do echo 2 > $i ; done  


/proc/sys/net/ipv4/conf/DEV/secure_redirects
Включает/выключает режим безопасной переадресации. 
Если параметр выключен, то будут приниматься любые сообщения ICMP Redirect ... от любого хоста из любого места. 
Если включен, то сообщения о переадресации будут восприниматься только от тех шлюзов (gateways), которые имеются в списке шлюзов по-умолчанию. 
С помощью этой опции можно избежать большинства ложных переадресаций, которые могут быть использованы для перехвата трафика. 
Значение по-умолчанию -- 1 (включено). Обратите внимание -- действие этой параметра отменяется параметром shared_media, 
так что, если вы включаете secure_redirects, то необходимо включить и shared_media.


/proc/sys/net/ipv4/conf/DEV/send_redirects
Включает/выключает выдачу ICMP Redirect ... другим хостам. 
Эта опция обязательно должна быть включена, если хост выступает в роли маршрутизатора любого рода. 
Как правило ICMP-сообщения о переадресации отправляются в том случае, когда необходимо сообщить хосту о том, 
что он должен вступить в контакт с другим сервером. Значение по-умолчанию -- 1 (включено). 
Если компьютер не выступает в роли маршрутизатора, то этот параметр можно отключить.


/proc/sys/net/ipv4/conf/DEV/shared_media
Включает/выключает признак того, что физическая сеть является носителем нескольких логических подсетей, например, 
когда на одном физическом кабеле организовано несколько подсетей с различными сетевыми масками. 
Этот признак используется ядром при принятии решения о необходимости выдачи ICMP-сообщений о переадресации. 
Значение по-умолчанию -- 0 (выключено). Этот параметр влияет на установку параметра secure_redirects.



Рубрики
CentOS sysctl \ настройки \ ограничения

sysctl \ ipv6 \ ping \ nat \ управление системными настройками \ ограничения на всю систему

ссылки

https://fasterdata.es.net/host-tuning/linux/
https://b14esh.com/nix/iptables/iptables-conntrack-nat.html
http://www.bog.pp.ru/work/linux_ip.html

sysctl

Вообще-то в sysctl кладезь информации, и она достойна отдельной подробной статьи
sysctl — позволяет посмотреть параметры в системы и внести изменения, такие как стек tcp/ip, виртуальной памяти
sysctl -a — показывает все параметры
sysctl kern.ipc.numopensockets — показывает количество открытых сокетов
sysctl kern.openfiles — показывает количество открытых файлов

sysctl ipv6

/etc/sysctl.conf - файл настроек
# sysctl settings are defined through files in
# /usr/lib/sysctl.d/, /run/sysctl.d/, and /etc/sysctl.d/.
-------------------------------------
nano /usr/lib/sysctl.d/50-default.conf
nano /usr/lib/sysctl.d/00-system.conf
--------------------------------------

vim /etc/sysctl.conf 
---------------------
#disable ipv6 settins
net.ipv6.conf.all.disable_ipv6 = 1
net.ipv6.conf.default.disable_ipv6 = 1
net.ipv6.conf.lo.disable_ipv6 = 1
---------------------

Применяем:
sysctl -p

sysctl -a - показать текущие значения
sysctl -w net.ipv6.conf.all.disable_ipv6=1 - выключить ipv6
sysctl -w net.ipv6.conf.default.disable_ipv6=1 - выключить ipv6
sysctl -p changes.conf - принять изменения в changes.conf без перезагрузки
sysctl -p - принять изменения в sysctl.conf без перезагрузки

ограничения на всю систему

 
sysctl -a - Смотрим системные ограничения
sysctl fs.file-max - Максимальное количество открытых файлов
sysctl fs.file-max=102400 - Меняем максимальное количества открытых файлов
echo "1024 50000" > /proc/sys/net/ipv4/ip_local_port_range - диапазон портов

cat /etc/sysctl.conf

fs.file-max=102400  - Ввод по умолчанию sysctl.conf
cat /proc/sys/fs/file-nr - Сколько дескрипторов файлов используется

Включение IP Forward

!!! По умолчанию ip forward выключен
!!! Если forward выключен то не будет работать маршрутизация между интерфейсами
cat /proc/sys/net/ipv4/ip_forward - проверяем текущие состояние ip_forward

echo 1 > /proc/sys/net/ipv4/ip_forward - так мы можем включить IP forward

!!! Для постоянного включения необходимо отредактировать файл  /etc/sysctl.conf, найти строку net.ipv4.ip_forward=1 и убрать комментарий с неё
nano /etc/sysctl.conf
---------------------
# Uncomment the next line to enable packet forwarding for IPv4
net.ipv4.ip_forward=1
---------------------
sysctl -p  - выполняем для применения изменений без перезагрузки 
sysctl -f  - выполняем для применения изменений без перезагрузки 

NAT

!!! В организация NAT не должно быть в принципе.
!!! Доступ к интернету должен осуществляется через proxy сервер

NAT:
iptables -t nat -A POSTROUTING -o isp -j MASQUERADE
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
 
forward port:
iptables -t nat -A PREROUTING -p tcp -d 192.168.3.124 --dport 3389 -j DNAT --to 10.70.70.105:3389
iptables -t nat -A PREROUTING -p tcp -d 192.168.3.124 --dport 5090 -j DNAT --to 10.70.70.101:5090

# sysctl net.netfilter.nf_conntrack_max - посмотреть текущий размер таблицы NAT
net.netfilter.nf_conntrack_max = 65536

# sysctl -a | grep conntrack_max - посмотреть текущий размер таблицы NAT
net.netfilter.nf_conntrack_max = 65536
net.ipv4.netfilter.ip_conntrack_max = 65536
net.nf_conntrack_max = 65536

# sysctl net.netfilter.nf_conntrack_count - посмотреть заполненность таблицы
net.netfilter.nf_conntrack_count = 654

отключаем ответы сервера на ping

 
sysctl net.ipv4.icmp_echo_ignore_all 
sysctl -w net.ipv4.icmp_echo_ignore_all=1 - отключаем ответ на ping

чтоб сохранялось при перегрузке
nano /etc/sysctl.conf - проверяем значение
net.ipv4.icmp_echo_ignore_all=1 - выставляем 1 и сохраняем

rp_filter

Принцип фильтрования в rp_filter:
Если ответ на текущий пакет не может уйти через тот же интерфейс (когда
приходит через один интерфейс, а уходит через другой), пакет отфильтровывается.

net.ipv4.conf.all.rp_filter = 1

Выключение rp_filter для всех интерфейсов:
for i in /proc/sys/net/ipv4/conf/*/rp_filter ; do
  echo 0 > $i 
done

tunning network SFP+

!!! Современные дистрибутивы автоматически настраивают оптимальные параметры сетевой карты 

For a host with a 10G NIC, optimized for network paths up to 100ms RTT, and for friendliness to single and parallel stream tools, add this to /etc/sysctl.conf

# allow testing with buffers up to 64MB 
net.core.rmem_max = 67108864 
net.core.wmem_max = 67108864 
# increase Linux autotuning TCP buffer limit to 32MB
net.ipv4.tcp_rmem = 4096 87380 33554432
net.ipv4.tcp_wmem = 4096 65536 33554432
# recommended default congestion control is htcp 
net.ipv4.tcp_congestion_control=htcp
# recommended for hosts with jumbo frames enabled
net.ipv4.tcp_mtu_probing=1
# recommended to enable 'fair queueing'
net.core.default_qdisc = fq


For a host with a 10G NIC optimized for network paths up to 200ms RTT, and for friendliness to single and parallel stream tools, or a 40G NIC up on paths up to 50ms RTT:

# allow testing with buffers up to 128MB
net.core.rmem_max = 134217728 
net.core.wmem_max = 134217728 
# increase Linux autotuning TCP buffer limit to 64MB
net.ipv4.tcp_rmem = 4096 87380 67108864
net.ipv4.tcp_wmem = 4096 65536 67108864
# recommended default congestion control is htcp 
net.ipv4.tcp_congestion_control=htcp
# recommended for hosts with jumbo frames enabled
net.ipv4.tcp_mtu_probing=1
# recommended to enable 'fair queueing'
net.core.default_qdisc = fq
Рубрики
sysctl \ настройки \ ограничения

net_ratelimit: 44 callbacks suppressed \ nf_conntrack: table full, dropping packet

Ссылки:

https://serverfault.com/questions/277009/what-does-net-ratelimit-44-callbacks-suppressed-mean-on-a-linux
https://wiki.mikbill.pro/billing/howto/nf_conntrack

net_ratelimit: 44 callbacks suppressed

sysctl -w net.core.rmem_default='16777216'
sysctl -w net.core.wmem_default='16777216'
sysctl -w net.core.rmem_max='16777216'
sysctl -w net.core.wmem_max='16777216'
sysctl -w net.ipv4.tcp_wmem='1048576 4194304 16777216'
sysctl -w net.ipv4.tcp_rmem='1048576 4194304 16777216'
sysctl -w net.core.netdev_max_backlog='30000'

nf_conntrack: table full, dropping packet

Смотрим текущие настройки:
sysctl -a | grep conntrack_max
-------------------------------
net.ipv4.netfilter.ip_conntrack_max = 65536
net.netfilter.nf_conntrack_max = 65536
net.nf_conntrack_max = 65536
------------------------------

Смело увеличиваем количество:
nano /etc/sysctl.conf
net.ipv4.netfilter.ip_conntrack_max=1548576

И применяем настройки:
sysctl -p

Заполнение таблицы можно проверить командой:
cat /proc/net/nf_conntrack | wc -l

Если и при таких значениях таблица переполняется ставим пакет conntrack:
apt-get install conntrack - для Debian
yum install -y conntrack-tools -для Centos

Рубрики
kali \ virus \ rootkit \ вирусы \ защита sysctl \ настройки \ ограничения

Безопасность \ openssl \ pwgen \ ecryptfs-utils \ secure-delete \ srm \ fail2ban \ ipkungfu \ sysctl \ snort \ dns \ tor \ netstat \ tcpdump \ iptables

Пароль!

 
openssl rand -base64 6 - генерирование пароля
pwgen -Bs 8 1 - генерирование пароля 

Шифрование!

 
apt-get install ecryptfs-utils - установить пакет шифрования
ecryptfs-setup-swap - создать шифрованный swap
ecryptfs-setup-private - создается специальный каталог ./Private
ecryptfs-migrate-home -u vasya - зашифровать домашний каталог пользователя vasya
mount | grep Private - проверить если шифрование ( ответ /home/vasya/.Private on /home/vasya type ecryptfs )
rm -r /home/vasya.* - если все ок не зашифрованную копию данных можно затереть

Delete

 
apt-get install secure-delete - установить программу для безопасного удаления файлов
srm секретный-файл.txt home-video.mpg - удаления файлов безвозвратно
dd if=/dev/zero of=/dev/sdb - затирание внешнего диска sdb

Защита сети!

 
apt-get install fail2ban - установить пакет для защиты от брутфорса ( конфиг /etc/fail2ban, перезапуск сервиса /etc/init.d/fail2ban restart)

apt-get install ipkungfu - установим пакет для конфигурации firewall (для активации /etc/default/ipkungfu и меняем строку IPKFSTART = 0 на IPKFSTART = 1)
Правим конфиг nano /etc/ipkungfu/ipkungfu.conf
# Локальная сеть, если есть — пишем адрес сети вместе с маской, нет — пишем loopback-адрес
LOCAL_NET="127.0.0.1"
# Наша машина не является шлюзом
GATEWAY=0
# Закрываем нужные порты
FORBIDDEN_PORTS="135 137 139"
# Блокируем пинги, 90% киддисов отвалится на этом этапе
BLOCK_PINGS=1
# Дропаем подозрительные пакеты (разного рода флуд)
SUSPECT="DROP"
# Дропаем «неправильные» пакеты (некоторые типы DoS)
KNOWN_BAD="DROP"
# Сканирование портов? В трэш!
PORT_SCAN="DROP"

Дополнительно внесем правки в /etc/sysctl.conf

 
nano /etc/systcl.conf
# Дропаем ICMP-редиректы (против атак типа MITM)
net.ipv4.conf.all.accept_redirects=0
net.ipv6.conf.all.accept_redirects=0
# Включаем механизм TCP syncookies
net.ipv4.tcp_syncookies=1
# Различные твики (защита от спуфинга, увеличение очереди «полуоткрытых» TCP-соединений и так далее)
net.ipv4.tcp_timestamps=0
net.ipv4.conf.all.rp_filter=1
net.ipv4.tcp_max_syn_backlog=1280
kernel.core_uses_pid=1

Активируем изменения:
sysctl -p

Выявляем вторжения!:

 
apt-get install snort - ставим по для выявления вторжений
snort -D - запускаем после смотрим логи snort.

DNS:

 
https://anonymous-proxy-servers.net/wiki/index.php/Censorship-free_DNS_servers - днс сервера без цензуры
nano /etc/resolv.conf
nameserver 37.235.1.174
chattr +i /etc/resolv.conf - файл станет защищен от записи для всех

TOR:

 
apt-get install tor - устанавливаем браузер tor

Исследуем подключения:

 
netstat -na | grep ":порт\ " | wc -l - подсчет количества коннектов на определенный порт
netstat -na | grep ":порт\ " | grep SYN_RCVD | wc -l - подсчет числа «полуоткрытых» TCP-соединений
netstat -na | grep ":порт\ " | sort | uniq -c | sort -nr | less - просмотр списка IP-адресов, с которых идут запросы на подключение
tcpdump -n -i eth0 -s 0 -w output.txt dst port порт and host IP-сервера - анализ подозрительных пакетов с помощью tcpdump
iptables -A INPUT -s IP-атакующего -p tcp --destination-port порт -j DROP - дропаем подключения атакующего
iptables -I INPUT -p tcp --syn --dport порт -m iplimit --iplimit-above 10 -j DROP - ограничиваем максимальное число «полуоткрытых» соединений с одного IP к конкретному порту
iptables -A INPUT -p icmp -j DROP --icmp-type 8 - отключаем ответы на запросы ICMP ECHO

Рубрики
sysctl \ настройки \ ограничения

ограничения user / process

 
cat /etc/security/limits.conf
*   hard    nproc   250 - Ограничения пользовательских процессов
asterisk hard nofile 409600 - Ограничения на открытые файлы приложения

Рубрики
sysctl \ настройки \ ограничения

ограничения открытых файлов shell/script

 
ulimit -a - Смотрим ограничения
ulimit -n 10240 - Меняем ограничение на количество открытых файлов, только shell