В большинстве дистрибутивов Linux файл sysctl.conf находится в /etc/sysctl.conf, а в Arch Linux и Manjaro Linux необходимо создать новый файл в /etc/sysctl.d/99-sysctl.conf.
Для изучения всех параметров системы Linux с помощью параметров sysctl откройте терминал и введите sysctl -a, а чтобы отфильтровать определенные ключевые слова, введите
1 | sysctl -a | grep "keyword" |
Настройка и укрепление Netfilter!
Поместите nf_conntrack в /etc/modules-load.d/conntrack.conf для загрузки параметров при загрузке.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 | net.netfilter.nf_conntrack_acct=0 net.netfilter.nf_conntrack_checksum=0 net.netfilter.nf_conntrack_events=1 net.netfilter.nf_conntrack_tcp_loose=0 net.netfilter.nf_conntrack_helper=0 net.netfilter.nf_conntrack_timestamp=0 net.netfilter.nf_conntrack_tcp_be_liberal=0 net.netfilter.nf_conntrack_max=16384 net.netfilter.nf_conntrack_buckets=65536 net.netfilter.nf_conntrack_tcp_max_retrans=3 net.netfilter.nf_conntrack_generic_timeout=120 net.netfilter.nf_conntrack_tcp_timeout_unacknowledged=30 net.netfilter.nf_conntrack_tcp_timeout_time_wait=1 net.netfilter.nf_conntrack_tcp_timeout_close_wait=15 net.netfilter.nf_conntrack_tcp_timeout_close=5 net.netfilter.nf_conntrack_tcp_timeout_last_ack=15 net.netfilter.nf_conntrack_tcp_timeout_fin_wait=15 net.netfilter.nf_conntrack_tcp_timeout_syn_recv=15 net.netfilter.nf_conntrack_tcp_timeout_syn_sent=15 net.netfilter.nf_conntrack_tcp_timeout_established=7440 net.netfilter.nf_conntrack_sctp_timeout_established=7440 net.netfilter.nf_conntrack_icmp_timeout=1 net.netfilter.nf_conntrack_icmpv6_timeout=1 net.netfilter.nf_conntrack_udp_timeout=15 net.netfilter.nf_conntrack_udp_timeout_stream=30 |
Включите TCP BBR Congestion Control для увеличения пропускной способности и уменьшения задержки.
Посмотрите, что поддерживается ядром с помощью: cat /proc/sys/net/ipv4/tcp_available_congestion_control
1 2 | net.ipv4.tcp_congestion_control=bbr net.core.default_qdisc=fq |
Включите явное уведомление о перегрузке (ECN), если оба узла поддерживают его. Установите ECN=0, если возникают проблемы. ECN=1 на клиентах для входящих и исходящих соединений. ECN=2 на маршрутизаторе только для входящих соединений.
1 | net.ipv4.tcp_ecn=1 |
Повышение производительности планировщика задач ядра.
1 | kernel.sched_energy_aware=1 |
Отзывчивость устройства
1 2 3 4 5 | kernel.sched_latency_ns=18000000 kernel.sched_min_granularity_ns=1000000 kernel.sched_wakeup_granularity_ns=2000000 kernel.sched_child_runs_first=1 kernel.sched_tunable_scaling=1 |
Отключите магический ключ SysRq.
1 | kernel.sysrq=0 |
Отключить kernel panic.
1 2 | kernel.panic=0 kernel.panic_on_oops=0 |
Отключите MultiPath TCP для защиты от уязвимостей.
1 | net.mptcp.enabled=0 |
Отключить дочерние сокеты для наследования индекса главного устройства L3.
1 2 3 | net.ipv4.raw_l3mdev_accept=0 net.ipv4.tcp_l3mdev_accept=0 net.ipv4.udp_l3mdev_accept=0 |
Включите масштабирование окон TCP для оптимальной производительности.
1 | net.ipv4.tcp_window_scaling=1 |
Не уменьшайте окно до половины размера, если включено масштабирование окна TCP.
1 | net.ipv4.tcp_workaround_signed_windows=0 |
Включите MESA Intel Performance (не комментировать для intel).
1 | dev.i915.perf_stream_paranoid=0 |
Нет процессов, отслеживаемых с помощью ptrace.
1 | kernel.yama.ptrace_scope=3 |
Запретить пользователю создавать симлинки и хардлинки, которые ему не принадлежат.
1 2 3 4 | fs.protected_hardlinks=1 fs.protected_symlinks=1 fs.protected_fifos=1 fs.protected_regular=1 |
Отключить отладку процессов, отслеживаемых с помощью ptrace.
1 | kernel.ftrace_enabled=0 |
Отключите nexthop для повышения производительности.
1 | net.ipv4.nexthop_compat_mode=0 |
Отключите непривилегированный BPF для предотвращения атак по боковым каналам.
1 | kernel.unprivileged_bpf_disabled=1 |
Предотвращение атак распыления BPF_JIT.
1 2 3 | net.core.bpf_jit_enable=0 net.core.bpf_jit_harden=2 net.core.bpf_jit_kallsyms=0 |
Включите пространства имен непривилегированных пользователей для Exodus Wallet, Brave и Skype (не комментируйте, если используете одно из этих приложений).
1 | kernel.unprivileged_userns_clone=1 |
Предотвращение получения полезной информации для злоумышленника, чтобы использовать уязвимости ядра.
1 | kernel.dmesg_restrict=1 |
Предотвращение использования ядра для динамического разрешения адресов/символов.
1 | kernel.kptr_restrict=1 |
Отключить отладку сторожевого таймера NMI для экономии энергии.
1 | kernel.nmi_watchdog=0 |
Увеличьте размер дескрипторов файлов и кэша inode.
1 | fs.file-max=395955 |
Меньше своппинга для повышения производительности.
1 2 3 4 5 6 | vm.swappiness=10 vm.dirty_ratio=10 vm.dirty_background_ratio=5 vm.dirty_writeback_centisecs=6000 vm.vfs_cache_pressure=10 vm.min_free_kbytes=65536 |
Отмените vm.laptop_mode для мобильных устройств для экономии энергии и батареи!
1 | vm.laptop_mode=5 |
Уничтожение процессов, которые используют слишком много памяти, когда она заканчивается.
1 | vm.oom_kill_allocating_task=1 |
Включите защиту ExecShield и увеличьте размер случайного пула.
1 2 | kernel.randomize_va_space=2 kernel.random.poolsize=4096 |
Отключите IGMP-отчеты для локальных многоадресных групп соединения в диапазоне 224.0.0.x.
1 | net.ipv4.igmp_link_local_mcast_reports=0 |
Отключить шифрование IPSEC.
1 2 3 4 5 6 7 8 9 | net.ipv4.conf.<вставьте сюда имя вашего сетевого адаптера с помощью ip link или ifconfig>.disable_xfrm=1 net.ipv4.conf.default.disable_xfrm=1 net.ipv4.conf.all.disable_xfrm=1 net.ipv4.conf.<вставьте сюда имя вашего сетевого адаптера с ip-ссылкой или ifconfig>.disable_policy=1 net.ipv4.conf.default.disable_policy=1 net.ipv4.conf.all.disable_policy=1 net.ipv6.conf.<вставьте сюда имя вашего сетевого адаптера с ip-ссылкой или ifconfig>.disable_policy=1 net.ipv6.conf.default.disable_policy=1 net.ipv6.conf.all.disable_policy=1 |
Отключить поток ARP.
1 2 3 4 5 6 | net.ipv4.conf.<вставьте сюда имя вашего сетевого адаптера с помощью ip link или ifconfig>.arp_ignore=1 net.ipv4.conf.default.arp_ignore=1 net.ipv4.conf.all.arp_ignore=1 net.ipv4.conf.<вставьте сюда имя вашего сетевого адаптера с помощью ip link или ifconfig>.arp_announce=2 net.ipv4.conf.default.arp_announce=2 net.ipv4.conf.all.arp_announce=2 |
Отключить ARP-прокси.
1 2 3 4 5 6 | net.ipv4.conf.<вставьте сюда имя вашего сетевого адаптера с помощью ip link или ifconfig>.proxy_arp=0 net.ipv4.conf.<вставьте здесь имя вашего сетевого адаптера с ip ссылкой или ifconfig>.proxy_arp_pvlan=0 net.ipv4.conf.default.proxy_arp=0 net.ipv4.conf.default.proxy_arp_pvlan=0 net.ipv4.conf.all.proxy_arp=0 net.ipv4.conf.all.proxy_arp_pvlan=0 |
Отбрасывайте Gratuitous ARP фреймы для предотвращения ARP отравления.
1 2 3 | net.ipv4.conf.<вставьте сюда имя вашего сетевого адаптера с помощью ip link или ifconfig>.drop_gratuitous_arp=1 net.ipv4.conf.default.drop_gratuitous_arp=1 net.ipv4.conf.all.drop_gratuitous_arp=1 |
Отключите обнаружение MTU для защиты от уязвимостей.
Если включено в режиме 1 и получен ICMP с требованием фрагментации получен, PMTU для этого назначения будет установлен на min_pmtu. Вам необходимо поднять min_pmtu до наименьшего значения интерфейсного MTU в вашей системе вручную, если вы хотите избежать локально генерируемых фрагментов.
В режиме 2 входящие сообщения Path MTU Discovery будут отбрасываться. Исходящие кадры обрабатываются так же, как и в режиме 1, неявно устанавливая IP_PMTUDISC_DONT на каждом созданном сокете.
Режим 3 - это режим жесткого обнаружения pmtu. Ядро будет принимать ошибки, требующие фрагментации, только если основной протокол может проверить их помимо обычного поиска сокета текущими протоколами, для которых будут учитываться события pmtu, являются TCP, SCTP и DCCP, поскольку они проверяют, например, порядковый номер или ассоциацию. Этот режим не должен быть включен глобально, а предназначен только для обеспечения безопасности, например, серверов имен в пространствах имен, где TCP path mtu должен по-прежнему работать, но path информация MTU других протоколов должна быть отброшена.
Если включить этот режим глобально, он может нарушить работу других протоколов.
1 2 3 | net.ipv4.ip_no_pmtu_disc=2 net.ipv4.ip_forward_use_pmtu=0 net.ipv4.tcp_mtu_probing=0 |
Отключите syncookies, поскольку они могут быть подделаны.
1 2 3 4 | net.ipv4.tcp_syncookies=0 net.ipv4.tcp_max_syn_backlog=2048 net.ipv4.tcp_synack_retries=2 net.ipv4.tcp_syn_retries=3 |
Отключите пересылку пакетов (включите только для маршрутизатора/брандмауэра/NAT!)
1 | net.ipv4.ip_forward=0 |
Отключить маршрутизацию IP-источников.
1 2 3 4 5 6 | net.ipv4.conf.<вставьте сюда имя вашего сетевого адаптера с помощью ip link или ifconfig>.accept_source_route=0 net.ipv4.conf.default.accept_source_route=0 net.ipv4.conf.all.accept_source_route=0 net.ipv6.conf.<вставьте сюда имя вашего сетевого адаптера с помощью ip link или ifconfig>.accept_source_route=0 net.ipv6.conf.default.accept_source_route=0 net.ipv6.conf.all.accept_source_route=0 |
Включите защиту от спуфинга IP для проверки маршрута источника.
1 2 3 | net.ipv4.conf.<вставьте сюда имя вашего сетевого адаптера с помощью ip link или ifconfig>.rp_filter=1 net.ipv4.conf.default.rp_filter=1 net.ipv4.conf.all.rp_filter=1 |
Отключить прием ICMP перенаправлений.
1 2 3 4 5 6 7 8 9 10 11 12 | net.ipv4.conf.<вставьте сюда имя вашего сетевого адаптера с помощью ip link или ifconfig>.accept_redirects=0 net.ipv4.conf.default.accept_redirects=0 net.ipv4.conf.all.accept_redirects=0 net.ipv6.conf.<вставьте сюда имя вашего сетевого адаптера с помощью ip link или ifconfig>.accept_redirects=0 net.ipv6.conf.default.accept_redirects=0 net.ipv6.conf.all.accept_redirects=0 net.ipv4.conf.<вставьте сюда имя вашего сетевого адаптера с помощью ip link или ifconfig>.secure_redirects=0 net.ipv4.conf.default.secure_redirects=0 net.ipv4.conf.all.secure_redirects=0 net.ipv4.conf.<вставьте сюда имя вашего сетевого адаптера с помощью ip link или ifconfig>.send_redirects=0 net.ipv4.conf.default.send_redirects=0 net.ipv4.conf.all.send_redirects=0 |
Размер окна TCP по умолчанию только для новых соединений или существующих соединений, которые простаивали.
1 | net.ipv4.tcp_slow_start_after_idle=0 |
Уменьшение времени для таймаута TCP FIN.
1 | net.ipv4.tcp_fin_timeout=15 |
Уменьшите сетевую задержку во время начального TCP SYN отправителя.
1 | net.ipv4.tcp_fastopen=3 |
Отключить SACK против уязвимостей сети TCP.
1 2 3 | net.ipv4.tcp_fack=0 net.ipv4.tcp_sack=0 net.ipv4.tcp_dsack=0 |
Отключите TCP Timestamps против уязвимостей безопасности временных меток. TCP Timestamps может удаленно вычислять время работы системы, время загрузки и часы хоста с точностью до миллисекунды.
1 | net.ipv4.tcp_timestamps=0 |
Отключить ответы ICMP Echo Ping.
1 2 | net.ipv4.icmp_echo_ignore_all=1 net.ipv6.icmp.echo_ignore_all=1 |
Ограничить максимальную скорость отправки ICMP-пакетов.
1 2 | net.ipv4.icmp_ratelimit=1 net.ipv6.icmp.ratelimit=1 |
Ограничение маски коэффициентов для ICMP.
1 | net.ipv4.icmp_ratemask=88089 |
Запретить широковещательные запросы ICMP.
1 | net.ipv4.icmp_echo_ignore_broadcasts=1 |
Отключить ответы ICMP на ложные ошибки.
1 | net.ipv4.icmp_ignore_bogus_error_responses=1 |
Отключить IPv4 и IPv6 anycast и multicast.
1 2 3 4 5 6 7 8 | net.ipv4.conf.<вставьте сюда имя вашего сетевого адаптера с помощью ip link или ifconfig>.drop_unicast_in_l2_multicast=1 net.ipv4.conf.default.drop_unicast_in_l2_multicast=1 net.ipv4.conf.all.drop_unicast_in_l2_multicast=1 net.ipv6.icmp.echo_ignore_anycast=1 net.ipv6.icmp.echo_ignore_multicast=1 net.ipv6.conf.<вставьте сюда имя вашего сетевого адаптера с помощью ip link или ifconfig>.drop_unicast_in_l2_multicast=1 net.ipv6.conf.default.drop_unicast_in_l2_multicast=1 net.ipv6.conf.all.drop_unicast_in_l2_multicast=1 |
Отключите IPv6 для обеспечения конфиденциальности и безопасности!
1 2 3 | net.ipv6.conf.<вставьте сюда имя вашего сетевого адаптера с помощью ip link или ifconfig>.disable_ipv6=1 net.ipv6.conf.default.disable_ipv6=1 net.ipv6.conf.all.disable_ipv6=1 |
Включите расширение конфиденциальности IPv6.
1 2 3 | net.ipv6.conf.<вставьте сюда имя вашего сетевого адаптера с помощью ip link или ifconfig>.use_tempaddr=2 net.ipv6.conf.default.use_tempaddr=2 net.ipv6.conf.all.use_tempaddr=2 |
Отключить незапрошенный NA IPv6.
1 2 3 | net.ipv6.conf.<вставьте сюда имя вашего сетевого адаптера с помощью ip link или ifconfig>.drop_unsolicited_na=1 net.ipv6.conf.default.drop_unsolicited_na=1 net.ipv6.conf.all.drop_unsolicited_na=1 |
Количество запросов маршрутизаторов IPv6.
1 2 3 | net.ipv6.conf.<вставьте сюда имя вашего сетевого адаптера с помощью ip link или ifconfig>.router_solicitations=0 net.ipv6.conf.default.router_solicitations=0 net.ipv6.conf.all.router_solicitations=0 |
Отключите предпочтение маршрутизаторов IPv6 в RA.
1 2 3 | net.ipv6.conf.<укажите здесь имя вашего сетевого адаптера с помощью ip link или ifconfig>.accept_ra_rtr_pref=0 net.ipv6.conf.default.accept_ra_rtr_pref=0 net.ipv6.conf.all.accept_ra_rtr_pref=0 |
Отключите IPv6 Learn Prefix Information in Router Advertisements.
1 2 3 | net.ipv6.conf.<вставьте сюда имя вашего сетевого адаптера с помощью ip link или ifconfig>.accept_ra_pinfo=0 net.ipv6.conf.default.accept_ra_pinfo=0 net.ipv6.conf.all.accept_ra_pinfo=0 |
Отключите IPv6 Router Advertisement.
1 2 3 | net.ipv6.conf.<вставьте сюда имя вашего сетевого адаптера с помощью ip link или ifconfig>.accept_ra_defrtr=0 net.ipv6.conf.default.accept_ra_defrtr=0 net.ipv6.conf.all.accept_ra_defrtr=0 |
Отключите автоматические объявления маршрутизатора IPv6 для назначения глобального одноадресного адреса интерфейсу.
1 2 3 | net.ipv6.conf.<укажите здесь имя вашего сетевого адаптера с помощью ip link или ifconfig>.autoconf=0 net.ipv6.conf.default.autoconf=0 net.ipv6.conf.all.autoconf=0 |
Отключить IPv6 DAD и приглашения соседних соединений.
1 2 3 4 5 6 7 8 9 | net.ipv6.conf.<вставьте сюда имя вашего сетевого адаптера с помощью ip link или ifconfig>.accept_dad=0 net.ipv6.conf.default.accept_dad=0 net.ipv6.conf.all.accept_dad=0 net.ipv6.conf.<вставьте сюда имя вашего сетевого адаптера с ip link или ifconfig>.dad_transmits=0 net.ipv6.conf.default.dad_transmits=0 net.ipv6.conf.all.dad_transmits=0 net.ipv6.conf.<вставьте сюда имя вашего сетевого адаптера с помощью ip link или ifconfig>.enhanced_dad=0 net.ipv6.conf.default.enhanced_dad=0 net.ipv6.conf.all.enhanced_dad=0 |
Максимальное количество одноадресных адресов IPv6, назначенных каждому интерфейсу.
1 2 3 | net.ipv6.conf.<вставьте сюда имя вашего сетевого адаптера с помощью ip link или ifconfig>.max_addresses=1 net.ipv6.conf.default.max_addresses=1 net.ipv6.conf.all.max_addresses=1 |
Разрешенный диапазон локальных портов
1 | net.ipv4.ip_local_port_range=10000 65535 |
Защита от атаки TCP Time-Wait.
1 | net.ipv4.tcp_rfc1337=1 |
Смягчение атаки TCP.
1 | net.ipv4.tcp_challenge_ack_limit=999999999 |
Уменьшение времени поддержания соединений.
1 2 3 | net.ipv4.tcp_keepalive_time=60 net.ipv4.tcp_keepalive_probes=10 net.ipv4.tcp_keepalive_intvl=6 |
Увеличьте размер пула ведер ожидания времени TCP против DOS-атак.
1 2 | net.ipv4.tcp_max_tw_buckets=2000000 net.ipv4.tcp_tw_reuse=1 |
Включите FRTO для оптимизации для беспроводных хостов (wifi).
1 2 | net.ipv4.tcp_frto=2 net.ipv4.tcp_frto_response=2 |
Включить низкую задержку.
1 | net.ipv4.tcp_low_latency=1 |
Не кэшировать ssthresh от предыдущего соединения.
1 2 | net.ipv4.tcp_no_metrics_save=1 net.ipv4.tcp_moderate_rcvbuf=1 |
Увеличить количество входящих соединений.
1 | net.core.somaxconn=8192 |
Увеличьте количество входящих соединений для бэклога.
1 | net.core.netdev_max_backlog=16384 |
Увеличьте максимальный объем буферов памяти.
1 | net.core.optmem_max=65536 |
Увеличьте буферную память TCP и UDP для улучшения производительности сети.
1 2 3 4 5 6 7 8 9 10 | net.core.rmem_default=1048576 net.core.rmem_max=16777216 net.core.wmem_default=1048576 net.core.wmem_max=16777216 net.ipv4.udp_rmem_min=8192 net.ipv4.udp_wmem_min=8192 net.ipv4.tcp_wmem=4096 65536 16777216 net.ipv4.tcp_rmem=4096 1048576 2097152 net.ipv4.tcp_mem=4096 65536 1048576 net.ipv4.udp_mem=4096 65536 1048576 |