Мы — долго запрягаем, быстро ездим, и сильно тормозим.

FreeBSD
  настройка
  подсчёт трафика
  программы
  почтовые системы
  Шелезяки
  Мелочи
  Файловая система
  WWW
  Security
  немного о безопасности
  VPN (PoPToP)
  PortSentry
  sysctl
  vtund
  ipfwcount
  FreeBSD & DSA
  mpd – легко и просто!
  mpd + freeradius + mysql
  Бронированный FreeBSD
  sshit
  DSL-G804V и FreeBSD 6.2
  portaudit
  OpenVPN
  Bluetooth proximity monitor
  ESET NOD32
  GEOM-ELI
  stunnel для pop3,smtp
  NOD32 mirror
  mpd5 + ipfw-nat
  Openvpn 2 офиса
  Hotspot
  OpenVPN+авторизация
  termlog
  mpd5 + сжатие и шифрование
  ipsec_vpnc
  TOR Сервер
  Snort на FreeBSD
  Arpwatch
  Установка и настройка OpenVPN
  NOD32_mirror_v2
  Fail2ban
  IPSec
  Перенос OpenVPN сервера
  Wpa/WPA2-Radius+EAP-TLS/EAP-PEAP
  nod32 mirror script
  MAC + apache
  system
  Games Servers
  X11
  Programming
Очумелые Ручки
OpenBSD
Cisco


www.lissyara.su —> статьи —> FreeBSD —> Security —> sysctl

Некоторые опции sysctl

Автор: lissyara.


    Озадачился собрать и попробовать всякие sysctl опции ядра, повышающие безопасность машины, и облегчающие её работу при попытках всяких атак и сканировании портов. А может, даже, просто те пункты, которые показались интересными и нужными - причём даже только начав, заметил одну вещщь - почти всё касается работы стека TCP/IP, что и неудивительно, ибо основное применение FreeBSD - это серверы. Порывшись в инете понял - 90% данных это скопированный друг у друга перевод какой-то буржуйской статьи. Собстно поэтому и начал ковыряться - остальные 10% - это далеко немало... Причина крайне проста - это самая недокументированная часть FreeBSD... Наскока я знаю они до сих пор ищут человека в команду, чтоб задокументировал всё это хозяйство. Перевод, я думаю, вообще не скоро появится. Приходится для себя, вот, разбираться и выписывать что-то нужное...
   Поехали:
Следующие два пункта касаются поведения ОС при попытке подключиться на порты, которые не слушаются приложениями. При штатных настройках, в таком случае, система посылает пакет с флагом RST, и закрывет подключение. Удалённый хост получает примерно следующее (если пробовать telnet`ом подключиться):Connection reset by peer.
net.inet.tcp.blackhole=2 - данный пункт указывает, что происходит при получении TCP-пакета на закрытый порт (не слушаемый никакими приложениями)Если стоит "1", то SYN пакеты (пакет, устанавливающий соединение) на закрытый порт будут отклоняться без отсылки отправителю RST пакета (перезагрузка (соединения, не машины :))). При установке в "2", вообще все (а не только SYN) пакеты на закрытый порт отбрасываются без каких-либо действий. Данный пункт позволяет разгрузить ЦП, т.к. обработка пакетов не производится, и интернет-канал сервера - т.к. не надо слать ответных пакетов.
net.inet.udp.blackhole=1 - очень похож на предыдущий пункт, по результату, но для протокола UDP. Ввиду того, что протокол UDP работает без установки соединения, есть только два, а не три варианта установки, когда эта переменная установлена в 1, то отбрасываются все UDP пакеты, адресованые закрытым портам.

  • kern.ipc.somaxconn=1024 - увеличивает размер очереди для сокетов, чем помогает предотвратить SYN-атаку, когда очередь сокета переполняется некорректными попытками соединений. Конечно от мощной атаки это не спасёт, но от слабой и средней - должно помочь. Значение по дефолту - 128.
    Следующие 4 пункта необходимы для невозможности удалённого изменения таблицы маршрутизации на Вашем хосте. Надо заметить, что установив эти пункты как указано, я столкнулся с проблемами в собственной сети - как оказалось между некоторыми подсетями маршрутизация была криво настроена (причём сам же знал, что криво, сам же криво и делал - быстрей, быстрей! - а потом всё недосуг было заняться) - соответственно клиентские компы начали терять некоторые сети. Пришлось сделать всё по-уму :)
  • net.inet.icmp.drop_redirect=1 - уничтожать icmp-датаграммы переадресации
  • net.inet.icmp.log_redirect=1 - записывать в журнал событий icmp-датаграммы с указанием переадресации
  • net.inet.ip.redirect=0 - может ли эта машина посылать дейтаграммы переадресации другим (вот из-за изменения этого пункта у меня сеть и плющщило, но менять его надо, просто надо сразу сетку корректно настраивать)
  • net.inet6.ip6.redirect=0 - предыдущий пункт, но для IPv6 (Кто-то им пользуется? :))
    Пара пунктов отвечающих за работу TCP. Общий смысл такой: ОСь не отвечет на каждый пакет, что он получен или неполучен сразу, а ждёт, пока придёт (или подготовится к отправке) некоторое количество инфы, а потом разом всё это отправляет. Тем самым удаётся разгрузить сеть, т.к. уменьшается общее число пересланных байт (меньше накладных расходов). Очень полезно при интенсивной нагрузке на сеть в одну сторону (HTTP, FTP, & etc). Эти два параметра позволяют установить размер окна приёма и передачи соостветственно. Ограничение по RFC (RFC1323, RFC2018) составляет 64k, но реально можно поставить и больше - тока надо быть уверенным, что и с клиентской стороны подддерживается такое большое окно. Если поставить больше то могут возикнуть проблемы: клиент данные шлёт, а подтверждения не получает, по достижении 64k он думает, что, по неизветстным причинам пропали все пакеты и начинает слать их заново... А Ваш всё ждёт... :))) Дефолтовые значения современных FreeBSD - sendspace=32768 и recvspace=57344. (Насколько я понимаю, у старых было меньше 32k). Пробовал увеличить до 65536 - вроде косяков не заметил...
  • net.inet.tcp.sendspace=65536 - размер `окна` отправки
  • net.inet.tcp.recvspace=65536 - размер `окна` приёма
  • net.link.ether.inet.max_age=1200 - время устаревания записей ARP, в секундах. По истечении этого времени запись удаляется. Тоже помогает против соответствующего типа атаки - когда в таблице ARP создаётся много неверных записей. По дефолту оно 1200 и есть, но возможно, имеет смысл, уменьшить это значение.
  • net.inet.ip.sourceroute=0 и net.inet.ip.accept_sourceroute=0 - При помощи маршрутизации отправителя (это когда в пакете, ещё и маршрут нарисован, по которому его надо дальше передавать) возможно прощупать вашу внутреннюю сеть снаружи (даже если это частная сеть!). Значения по-умолчанию (0) запрещают такое делать. Так что менять не надо.
  • net.inet.icmp.bmcastecho=0 - Установка в этого пункта в `0` (а по-умолчанию он так и стоит) зарубает ICMP-сообщения типов 0 и 8 (эхо-запрос и эхо-ответ) на широковещательном адресе.
  • net.inet.icmp.maskrepl=0 - Также, с помощью icmp можно запросить маску Вашей сети, и узнать её размер (не то, чтобы прям такая ценная инфа, но облегчать работу противника не надо ни в чём.). По умолчанию этот параметр в `0` - что запрещает такие запросы. Не надо его ставить в `1` :)
  • net.inet.tcp.msl=15000 - Есть такая феня, как максимальное время жизни сегмента (Maximum Segment Life - MSL) - максимальное время ожидания ASK в ответ на SYN-ACK или FIN-ACK (миллисекунд). По RFC 753 оно 120 секунд. Но это писалось в 1979 году и многое поменялось. В современных FreeBSD оно равно 30 секунд. Имеет смысл поставить его меньше.
  • net.inet.icmp.icmplim=100 - Для уменьшения урона от атак, при который генерится много ответных пакетов, можно поставить ограничение на количество ICMP тип 3 (адресат недостижим) и TCP RST (перезагрузка соединения). По дефолту оно стоит 200. Мона поставить меньше.
  • security.bsd.see_other_uids=0 и security.bsd.see_other_gids=0 - Для увеличения безопасности машин, на которые есть шелл у других пользователей, можно сделать так, чтобы каждому пользователю показывались только его процессы, а чужие он невидел. На 4.11 такого пункта нет, в 6.0 есть. Пятую ветку надо проверять. По дефолту значение `1` - все всё видят. Если поставить `0` - то только свои процессы.
  • security.bsd.conservative_signals=0 - Запрет посылать сигналы, от непривелигированных процессов, процессам которые сменили свой uid/gid.
  • security.bsd.unprivileged_proc_debug=0 - Непривелигированные процесы могут использовать средства отладки процессов.
  • security.bsd.unprivileged_read_msgbuf=0 - непривелигированные процессы могут читать буфер сообщений ядра (dmesg).
  • security.bsd.hardlink_check_uid=0 - непривелигированные процессы не могут делать жёсткие ссылки на файлы других пользователей.
  • security.bsd.hardlink_check_gid=0  - непривелигированные процессы не могут делать жёсткие ссылки на файлы других групп.
  • vfs.usermount=0 - возможность непривелигированным пользователям монтировать и отмонтировать устройства (при условии соответсвующих прав на устройство и точку монтирования).
  • net.inet.tcp.log_in_vain=0 и net.inet.udp.log_in_vain=0 - Логгирование всех попыток подключения к портам которые никто не слушает (в M$-сетях, чревато большим потоком логов... Да и в инете тоже..)
  • net.inet.tcp.sack.enable=0 - тюнинг сетевой подсистемы - при большой нагрузке на запрсы отвечатеся селективно.

    ======================
       Статья недописана, но по просьбам трудящихся опубликована. Убедительная просьба, до применения чего-либо описанного прочитать примечание к переменной, подумать над дефолтовым значением, и уже после этого что-то менять. Примерно так:
    sysctl -a kern.maxprocperuid
    kern.maxprocperuid: 3680
    sysctl -d kern.maxprocperuid
    kern.maxprocperuid: Maximum processes allowed per userid
    sysctl kern.maxprocperuid=10000
    kern.maxprocperuid: 3680 -> 10000
    

     



    размещено: 2006-02-21,
    последнее обновление: 2007-09-07,
    автор: lissyara

    оценить статью:

    res, 2007-06-13 в 14:04:38

    По поводу параметров security.bsd.see_other_uids=0 и security.bsd.see_other_gids=0:  
    В FreeBSD версии 5 вместо этих параметров был такой:
    kern.ps_showallprocs=0
    В шестой версии такого параметра уже нет. На четвертой не проверял.

    kmb, 2007-09-07 в 9:06:36

    Желтый цвет очень трудно читается и напрягает глаза...

    lissyara, 2007-09-07 в 9:12:34

    поменял на зелёный.
    и он был не жёлтый. Оранжевый...

    kmb, 2007-09-07 в 11:12:06

    Агу, оранжевый) но смысл понятен)
    Теперь лучше...

    VackuM, 2007-10-19 в 12:37:16

    >net.inet.tcp.msl=15000 - Есть такая феня, как максимальное время жизни сегмента (Maximum Segment Life - MSL) - >максимальное время ожидания ASK в ответ на SYN-ACK или
    Мелочь, замените ASK на ACK

    NarkomanLove, 2008-01-05 в 17:09:36

    еще одна полезная переменая
    sysctl hw.syscons.bell=0
    чтобы выключить встроеный спикер.
    а то писк сильно раздражает.

    lтакойд, 2008-01-05 в 17:21:44

    >По поводу параметров security.bsd.see_other_uids=0 и security.bsd.see_other_gids=0:  
    >В FreeBSD версии 5 вместо этих параметров был такой:
    >kern.ps_showallprocs=0
    >В шестой версии такого параметра уже нет. На четвертой не проверял.
    на четврке тоже такой - kern.ps_showallprocs=0

    shutdown now, 2008-01-08 в 14:21:01

    net.inet.tcp.sack.enable=0 - тюнинг сетевой подсистемы - при большой нагрузке на запрсы отвечатеся селективно.

    <- это ты прогнал
    если 1, то включается TCP Selective Acknowledgements (SACK, RFC 2018) позволяющий увеличить производительность системы в ситуации большой потери пакетов, тут подробно http://info.iet.unipi.it/~luigi/sack.html

    Григорй Ситнин, 2008-04-14 в 10:48:54

    В 7.0-RELEASE вот эти переменные уже стоят так, как рекомендовано:

    net.inet.tcp.recvspace
    net.link.ether.inet.max_age
    net.inet.ip.sourceroute
    net.inet.ip.accept_sourceroute
    net.inet.icmp.bmcastecho
    net.inet.icmp.maskrepl
    security.bsd.hardlink_check_uid
    security.bsd.hardlink_check_gid
    vfs.usermount
    net.inet.tcp.log_in_vain
    net.inet.udp.log_in_vain

    Just in case you want to know =)

    Savage, 2009-10-31 в 22:54:55

    ARP entry lifetime устанавливайте не более 200:
    net.link.ether.inet.max_age=200
    Иначе, в те редкие случаи, когда ваш провайдер проводит замену своего маршрутизатора (вашего шлюза в интернет), в кэше bsd arp-запись с маком старого шлюза может висеть 1200 секунд (20 минут)

    TyLLIKAH, 2010-09-04 в 15:09:16

    net.inet.tcp.nolocaltimewait Не висеть в состоянии timewait для локальных соединений.

    .ignore, 2010-10-06 в 4:09:08

    а где ссылка на форум?
    я б туда кинул линки

    мне показался интиресным сайт есть аналоги команд для помойки и домохозяек
    http://www.foureleven.org/pub/rosetta/

    расписано тут но по чуд чуть и все
    FreeBSD kernel parameters description  
    http://www.lslnet.com/linux/edosc/03/linux-03122438.htm

    китайский рулит но гуугл его переводит так что смысл можно понять
    http://yiikoo.spaces.live.com/
    http://www.chinaunix.net/jh/5/1029881.html

    раздер UNIX (в основном FreeBSD) -> Тюнинг
    http://subnets.ru/wrapper.php?p=32

    Oleg, 2011-04-06 в 9:06:41

    net.inet.tcp.blackhole=2
    при установленном параметре, вход по ssh минут 15, запуск top минут 15, доступ на сервер по smb не возможен и т.д. Ставишь net.inet.tcp.blackhole=0 все работает.

    adre, 2012-05-17 в 18:33:06

    Oleg, а что не устраивает? это описано кое где =)

    Vasya, 2013-12-04 в 7:29:57

    Афтар снова олень

    net.inet.tcp.blackhole=2
    НЕт , не было и не будет
    Есть только net.inet.tcp.blackhole=1

    И вообще пора мозги включать, и прочитать про TCP.

    "При установке в "2", вообще все (а не только SYN) пакеты на закрытый порт отбрасываются без каких-либо действий." - ОНи и так отбрасываюся, Сами СОБОЙ!!!!111111

    alex, 2014-02-08 в 12:08:41

    Vasya, man blackhole "согласен" с автором про значение net.inet.tcp.blackhole=2.

    nap, 2014-04-13 в 11:02:52

    мучают мысли про net.link.ether.inet.max_age=1200.
    Свичи по дефолту запоминают ARP entry до 300 секунд.
    После истечения этого времени свич не будет знать где находится хост и будет слать трафик на этот хост во все порты.
    А этот трафик фря слать будет 100% , т.к. у нее время хранения ARP 1200 секунд (Применительно к реальным IP, серые могут истекать раньше в зависимости от настроек NAT).
    Таким образом получаем шторм из входящего трафика во все порты начиная с корневого свича.
    Уменьшение этого параметра на фре также под вопросом, т.к. часто встречается хост, с которым ведется периодический обмен, но при этом arp показывает меньше 900сек остаток времени хранения arp.

    Alex Keda, 2014-04-13 в 19:32:37

    ARP не этого хоста
    других
    --
    всё нормально будет =)

    Дмитрий, 2016-06-02 в 16:07:57

    Обновление по поводу эффекта переменной "net.inet.tcp.recvspace". Только что решал проблему, связанную с попыткой её использования для ограничения потребляемой для сетевых коннектов памяти. Оказалось, что в системах новее FreeBSD 8 (проверял в 9 и 10) её уменьшение от дефолта убивает пропускную способность локального интерфейса lo0.
    http://forum.lissyara.su/viewtopic.php?f=3&t=44107&p=379337
    https://forums.freebsd.org/threads/56466/


    Оставьте свой комментарий:
    Ваше имя:   *
    e-mail:  
    жирный
    наклонный
    подчёркнутый
    ссылка
    цвет
    Нынешний год:   *
     


  • Хостинг HOST-FOOD

    2014-07-27, lissyara
    gmirror

    Удалённое создание софтверного зеркала средствами gmirror, на диске разбитом с использованием gpart. Использование меток дисков для монтирования разделов.
    2013-08-20, zentarim
    Scan+Print server FreeBSD 9

    Настройка сервера печати и сервера сканирования под управлением операционной системы FreebSD 9 для МФУ Canon PIXMA MP540
    2011-11-20, BlackCat
    Разъём на WiFi-карту

    Делаем съёмной несъёмную антену на WiFi-карте путём установки ВЧ-разъёма
    2011-09-14, manefesto
    Настройка git+gitosis

    Настройка системы контроля версия исходного кода в связке git+gitosis+ssh
    подписка

        вверх      
    Статистика сайта
    Сейчас на сайте находится: 38 чел.
    За последние 30 мин было: 220 человек
    За сегодня было
    2962 показов,
    741 уникальных IP
     

      Этот информационный блок появился по той простой причине, что многие считают нормальным, брать чужую информацию не уведомляя автора (что не так страшно), и не оставляя линк на оригинал и автора — что более существенно. Я не против распространения информации — только за. Только условие простое — извольте подписывать автора, и оставлять линк на оригинальную страницу в виде прямой, активной, нескриптовой, незакрытой от индексирования, и не запрещенной для следования роботов ссылки.
      Если соизволите поставить автора в известность — то вообще почёт вам и уважение.

    © lissyara 2006-10-24 08:47 MSK

    Время генерации страницы 0.0396 секунд
    Из них PHP: 25%; SQL: 75%; Число SQL-запросов: 77 шт.
    Исходный размер: 113628; Сжатая: 22106