пятница, 20 ноября 2009 г.

Сетевые параметры ядра в sysctl.conf

Включает/выключает reverse path filter ("проверка обратного адреса" -- хотя это слишком вольный перевод термина, но мне он кажется наиболее близким по смыслу. прим. перев.) для заданного интерфейса. Смысл этой переменной достаточно прост -- все что поступает к нам проходит проверку на соответствие исходящего адреса с нашей таблицей маршрутизации и такая проверка считается успешной, если принятый пакет предполагает передачу ответа через тот же самый интерфейс. (отвечает на те запросы которые идут на данный физический интерфейс, если в 0 то отвечает на все что знает на всех интерфейсах)
net.ipv4.conf.default.rp_filter=1 (0 не безопасно - нет верификации маршрута пакета)
net.ipv4.conf.all.rp_filter=1
net.ipv4.conf.lo.rp_filter=1
Переменная управляет приемом ICMP-сообщений о переадресации. Сообщения ICMP Redirect ... используются для уведомления маршрутизаторов или хостов о существовании лучшего маршрута движения пакетов к заданному хосту, который (маршрут) может быть быстрее или менее загружен.
net.ipv4.conf.default.accept_redirects = 0 (1 небезопасно)
net.ipv4.conf.all.accept_redirects = 0
net.ipv4.conf.lo.accept_redirects = 0
Включает/выключает выдачу ICMP Redirect ... другим хостам. Эта опция обязательно должна быть включена, если хост выступает в роли маршрутизатора любого рода. Как правило ICMP-сообщения о переадресации отправляются в том случае, когда необходимо сообщить хосту о том, что он должен вступить в контакт с другим сервером.
net.ipv4.conf.default.send_redirects = 0
net.ipv4.conf.all.send_redirects = 0
net.ipv4.conf.lo.send_redirects = 0
Включает/выключает режим безопасной переадресации. Если переменная выключена, то будут приниматься любые сообщения ICMP Redirect ... от любого хоста из любого места. Если переменная включена, то сообщения о переадресации будут восприниматься только от тех шлюзов (gateways), которые имеются в списке шлюзов по-умолчанию. С помощью этой опции можно избежать большинства ложных переадресаций, которые могут быть использованы для перехвата трафика.
net.ipv4.conf.default.secure_redirects = 0 (1 небезопасно)
net.ipv4.conf.all.secure_redirects = 0
net.ipv4.conf.lo.secure_redirects = 0
Вырубить маршрутизация от источника (часто используется для спуфинга)
net.ipv4.conf.default.accept_source_route = 0  (1 не безопасно - нет верификации маршрута пакета)
net.ipv4.conf.all.accept_source_route = 0
net.ipv4.conf.lo.accept_source_route = 0
Переменная разрешает/запрещает форвардинг пакетов с исходящими адресами 0.b.c.d
net.ipv4.conf.default.bootp_relay = 0
net.ipv4.conf.all.bootp_relay = 0
net.ipv4.conf.lo.bootp_relay = 0
Выключение проксирование arp-запросов для заданного интерфейса. ARP-прокси позволяет маршрутизатору отвечать на ARP запросы в одну сеть, в то время как запрашиваемый хост находится в другой сети
net.ipv4.conf.default.proxy_arp = 0
net.ipv4.conf.all.proxy_arp = 0
net.ipv4.conf.lo.proxy_arp = 0
Переменная включает/выключает функцию журналирования всех пакетов, которые содержат неправильные (невозможные) адреса (так называемые martians -- "марсианские" пакеты). Под невозможными адресами, в данном случае, следует понимать такие адреса, которые отсутствуют в таблице маршрутизации.
net.ipv4.conf.default.log_martians = 0
net.ipv4.conf.all.log_martians = 0
net.ipv4.conf.lo.log_martians = 0
Эта переменная очень близка по смыслу к icmp_echo_ignore_all, только в данном случае будут игнорироваться ICMP сообщения, отправленные на широковещательный или групповой адрес. Вполне очевидно, почему полезно включить этот параметр -- защита от smurf атак
net.ipv4.icmp_echo_ignore_broadcasts = 1
Отдельные маршрутизаторы, вопреки стандартам, описанным в RFC 1122, отправляют фиктивные ответы в широковещательном диапазоне. Обычно эти ошибки заносятся в системный журнал. Если вы не желаете регистрировать их, то включите этот параметр и тем самым сбережете некоторый объем дискового пространства в своей системе.
net.ipv4.icmp_ignore_bogus_error_responses = 1
Разрешает/запрещает передачу так называемых syncookies вызывающему хосту в случае переполнения очереди SYN-пакетов для заданного сокета. Когда в систему поступает слишком много запросов на соединение, то очередь может переполниться и тогда запускается передача syncookies в ответ на каждый SYN-запрос.
Эта переменная используется для предотвращения syn-flood атак
net.ipv4.tcp_syncookies=1
# Включение форвардинга
echo 1 > /proc/sys/net/ipv4/ip_forward или net.ipv4.ip_forward = 1 (в файле /etc/sysctl.conf)
# Включение форвардинга для VPN
echo 1 > /proc/sys/net/ipv4/ip_dynaddr или net.ipv4.ip_dynaddr = 0 (в файле /etc/sysctl.conf)
# Увеличение размера очередей
echo 32000000 > /proc/sys/net/ipv4/netfilter/ip_conntrack_max или net.ipv4.ip_conntrack_max = 32000000 (в файле /etc/sysctl.conf)
# Время ожидания до закрытия соединения
echo 14400 > /proc/sys/net/ipv4/netfilter/ip_conntrack_tcp_timeout_established или net.ipv4.netfilter.ip_conntrack_tcp_timeout_established = 14400 (в файле /etc/sysctl.conf)
# Время ожидания до посылки FIN пакета
echo 60 > /proc/sys/net/ipv4/netfilter/ip_conntrack_tcp_timeout_fin_wait или net.ipv4.netfilter.ip_conntrack_tcp_timeout_fin_wait = 60 (в файле /etc/sysctl.conf)
# Время ожидания до посылки SYN пакета
echo 10 > /proc/sys/net/ipv4/netfilter/ip_conntrack_tcp_timeout_syn_sent или net.ipv4.netfilter.ip_conntrack_tcp_timeout_syn_sent = 10 (в файле /etc/sysctl.conf)
# Увеличиваем размер backlog очереди
echo 1280 > /proc/sys/net/ipv4/tcp_max_syn_backlog или net.ipv4.tcp_max_syn_backlog = 1280 (в файле /etc/sysctl.conf)
# Число начальных SYN и SYNACK пересылок для TCP соединения
echo 4 > /proc/sys/net/ipv4/tcp_synack_retries или net.ipv4.tcp_synack_retries = 4 (в файле /etc/sysctl.conf) (можно и 2 для безопасности)
echo 4 > /proc/sys/net/ipv4/tcp_syn_retries или net.ipv4.tcp_syn_retries = 4 (в файле /etc/sysctl.conf)
#Какие порты использовать в качестве локальных TCP и UDP портов
echo "16384 61000" > /proc/sys/net/ipv4/ip_local_port_range или net.ipv4.ip_local_port_range = 16384 61000 (можно 2000 65000) (в файле /etc/sysctl.conf)
# Сколько секунд ожидать приема FIN до полного закрытия сокета
echo 30 > /proc/sys/net/ipv4/tcp_fin_timeout или net.ipv4.tcp_fin_timeout = 30 (в файле /etc/sysctl.conf)
# Как часто посылать сообщение о поддержании keep alive соединения
echo 1800 > /proc/sys/net/ipv4/tcp_keepalive_time или net.ipv4.tcp_keepalive_time = 1800 (в файле /etc/sysctl.conf)
# Сколько пакетов проверки keepalive посылать, прежде чем соединение будет закрыто
echo 2 > /proc/sys/net/ipv4/tcp_keepalive_probes или net.ipv4.tcp_keepalive_probes = 2 (в файле /etc/sysctl.conf)
# Зaпрещаем TCP window scaling (разрешаем елси nginx сервер = 1)
echo 0 > /proc/sys/net/ipv4/tcp_window_scaling или net.ipv4.tcp_window_scaling = 0 (в файле /etc/sysctl.conf)
# Запрещаем selective acknowledgements, RFC2018
echo 0 > /proc/sys/net/ipv4/tcp_sack или net.ipv4.tcp_sack = 0 (в файле /etc/sysctl.conf)
# Запрещаем TCP timestamps, RFC1323
echo 0 > /proc/sys/net/ipv4/tcp_timestamps или net.ipv4.tcp_timestamps = 0 (в файле /etc/sysctl.conf)
# Уличиваем размер буфера для приема и отправки данных через сокеты
echo 1048576 > /proc/sys/net/core/rmem_max или net.core.rmem_max = 1048576 (можно 8388608) (в файле /etc/sysctl.conf)
echo 1048576 > /proc/sys/net/core/rmem_default или net.core.rmem_default = 1048576 (в файле /etc/sysctl.conf)
echo 1048576 > /proc/sys/net/core/wmem_max или net.core.wmem_max = 1048576 (можно 8388608) (в файле /etc/sysctl.conf)
echo 1048576 > /proc/sys/net/core/wmem_default или net.core.wmem_default = 1048576 (в файле /etc/sysctl.conf)
# Через какое время убивать соединеие закрытое на нашей стороне
echo 1 > /proc/sys/net/ipv4/tcp_orphan_retries или net.ipv4.tcp_orphan_retries = 1 (в файле /etc/sysctl.conf)
# Включаем ExecShield
kernel.exec-shield = 1
kernel.randomize_va_space = 1
# Увеличиваем максимальный размер TCP-буферов
net.ipv4.tcp_rmem = 4096 87380 8388608
net.ipv4.tcp_wmem = 4096 87380 8388608
net.core.netdev_max_backlog =  5000


Проверка переменных в sysctl.conf
sudo sysctl -a
sudo sysctl -a | grep ^net\.

применить изменения в /etc/sysctl.conf sysctl -p

Комментариев нет:

Отправить комментарий