Озадачился собрать и попробовать всякие 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
Read the rest of this entry »