Настройка freebsd 10

Временное назначение ip адреса.

Честно говоря я не знаю для чего может пригодиться временное назначение сетевых настроек. Разве что допустим у вас какой-нибудь сервер который предназначен только для вашей локальной сети и вы вдруг решили быстренько обновить ПО через интернет на этом сервере, чтобы не ходить к шлюзу не раздавать интернет на нужный IP адрес итд.  Вы можете обойтись парой команд.

Например, мы знаем что на 192.168.3.109 точно есть доступ в интернет, назначаем этот IP адрес нашему интерфейсу, так же нужно указать маску сети(Рис.12):

ifconfig em0 192.168.3.109 netmask 255.255.255.0

или командой с короткой записью маски сети.

ifconfig em0 192.168.3.109/24

Рис.12 — Указание временных настроек для сетевого интерфейса em0.

Интернет может  не появиться, так как не указан шлюз по умолчанию. Прописываем его и пингуем гугловкие восьмёрки.(Рис.13)

route add default 192.168.3.1
ping 8.8.8.8

Рис.13 — Указываем шлюз по умолчанию. Проверяем ping.

Правильно ли мы прописали наш шлюз по умолчанию можно посмотреть в таблице маршрутизации. Она выводится с помощью команды «netstat -rn», Шлюз по умолчанию будет обозначен флагом UG.(Рис.14)

netstat -rn

Рис.14 — Вывод таблицы маршрутизации.

Если вы где-то ошиблись в написании или у вас указан другой шлюз, то можно удалить шлюз по умолчанию.

route del default

На этом временная настройка закончена, помните что после перезагрузки сервера  или отдельно службы networking, все временные настройки исчезнут.

Добавляем маршрут в сеть 192.168.0.0/16 (Маска 255.255.0.0) через основной шлюз(gateway) 192.168.3.1/24

route add 192.168.0.0/16 192.168.3.1

Вариант добавления маршрута с указанием полной маски.

route add -net 192.168.0.0 -netmask 255.255.0.0 192.168.3.1

Запуск приложений

Следующим этапом тюнинга ОС является настройка сети и запуск необходимых приложений в файле /etc/rc.conf.

hostname=»host.domain.com»

# Настраиваем сеть

ifconfig_em0=»inet 172.16.1.5 netmask 255.255.255.0″

ifconfig_em1=»inet 10.16.1.51 netmask 255.255.255.0″

defaultrouter=»172.16.1.1″

# Запуск SSHD при загрузки

sshd_enable=»YES»

# Запрещаем SSHD выполнять запросы к DNS

sshd_flags=»-u0″

# Отключаем использование USB

usbd_enable=»NO»

# Отключаем sendmail

sendmail_enable=NONE

# Запускаем ntpd при старте ОС

ntpd_enable=»YES»

# **Отключаем NFS**

inetd_enable=»NO»

portmap_enable=»NO»

nfs_client_enable=»NO»

nfs_reserved_port_only=»NO»

nfs_server_enable=»NO»

# **Небольшая защита от DDOSа**

tcp_drop_synfin=»YES»

icmp_drop_redirect=»YES»

icmp_log_redirect=»NO»

# Запускаем систему журналирования

syslogd_enable=»YES»

# Указываем syslog сохранять только локальные сообщений

# и не выполняет DNS запросов

syslogd_flags=»-s -n»

# Включить fsck при загрузке

fsck_y_enable=»YES»

# Выполнять во время загрузки ОС

background_fsck=»NO»

# **Сохраняем корки ядра**

dumpdir=»/home»

dumpdev=»AUTO»

# Отключить SNMPD

snmpd_enable=»NO»

# **Настройка фаервола**

firewall_enable=»YES»

firewall_script=»/etc/rc.ipfw»

И напоследок добавим в файл /etc/rc.local скрипты которые нужно выполнить при загрузке.

# по мотивам  этой статьи

/usr/local/startup/cpuset-emigb.sh

проброс нескольких портов

ipfw nat 1 config if ng0 same_ports \redirect_port 192.168.1.3:1234 1234 \redirect_port 192.168.1.4:5678 5678

https://ctopmbi4.wordpress.com/category/freebsd/ipfw/

nat one_pass

После проверки nat -ом. если в нате стоит deny_in и записей  в таблице nat нет. то пакет пойдетдальше по правилами фаера.

Если значение стоит 1.sysctl.conf net.inet.ip.fw.one_pass=1  то пакет будут принят создаться запись в нате и пакет дальше по правилам фаера не пойдет.

ПРАВИЛА

Перечитать правила фаера из скрипта например без потери соединения.

/bin/sh /etc/rc.firewall &

Для просмотра динамических правил  опция -d в ipfw

ipfw использует два вида набора правил: статические и динамические. Статические являются постоянными. Пример:

ipfw add 100 allow tcp from any to me 80ipfw add 200 allow tcp from me 80 to any

посмотреть ipfw show

00020 11936 1263070 allow ip from any to any via lo0

номер правила, кол-во срабатываний, кол-во байт прошедших через правило и самое правило.

Динамические правила создаются условиями keep-state и limit в правилах, причём динамические правила имеют двухстороннюю направленность. ПРИМЕР:

Если мы перепишем предыдущие два правила в «динамическом ключе«, то получим одноправило:

ipfw add 100 allow tcp from any to me 80 keep-state

Т.о. пакет, приходящий на наш сервер на 80 порт создаёт динамическое правило, которое мы увидим при выводе ipfw -d show:

00100    55 555432(144s) STATE tcp x.x.x.x 56789<-> y.y.y.y 80

Здесь, 00100 — номер правила, 55 — количество пакетов, прошедших через это правило, 555432— количество байт, 144s — оставшееся время, после которого (при отсутствии трафика) правило будет удалено, остальное понятно из контекста.

Соответственно, если имеется правило

00050  0  0  check-state

то оно и будет проверять, существует ли правило в динамической таблице, после чего пакет будет обработан динамическим правилом с обновлением счетчиков в нём.

divert

Если check-state стоит до правил с divert’ом, то пакеты, естественно, в этот divert не попадают. Как следствие, динамические правила просто «устаревают«, не дождавшись обновления и «не пропускают» пакеты потому, что через divert они не прошли, а следовательно имеют «неверные» адреса в заголовке пакета.

тем самым мы ограничиваем скорость от всех до ип адреса 192.168.0.119  ВХОДЯЩИЙ  с интерфеса em0

Посмотреть правила PIPE можно коммандой

ipfw pipe show

либо по  номеру пайпа: ipfw pipe 1 show

очереди queue

для работы группы пользователей по ограниченному каналу с равными или разными приоритетами, необходимо пакеты каждого отдельного пользователя ставить в отдельную очередь. Тогда пакеты будут выходить из pipe в соответствии с приоритетами очередей, в которых они находятся.

есть основная мысль, которая описывает разделение пакетов в pipe. 
Если всем пользователям необходимо равномерно распределять поток, то создавать
вручную количество очередей соответствующее количеству пользователей не
нужно. Мы создаем всего одну очередь
ipfw queue 1 config pipe 1 weight 50 queue 20 mask dst-addr 0xffffffff
параметр mask, в котором указываем что для каждого
отдельного destination адреса будет создаваться своя очередь с такими же
параметрами, как у этой.
 Отметим, что ограничение без потерь возможно только в отношении исходящего
 трафика. Стек протоколов TCP/IP не предусматривает возможности заставить
 удаленную сторону слать пакеты медленнее

Параметры применяемые при загрузке

Для правки настроек, которые применяются только при загрузке, нужно внести изменения в файл /boot/loader.conf, после чего выполнить перезагрузку ОС.

kern.ipc.nmbclusters=0

# После исчерпания не возможно выполнить повторную передачи пакетов.

net.inet.tcp.reass.maxsegments=2048

# Для избежания лимита «PV Entry»

vm.pmap.shpgperproc=400

# Позволяет принимать за одно прерывание до 4096 пакетов

hw.em.rxd=4096

# Позволяет передавать за одно прерывание до 4096 пакетов

hw.em.txd=4096

# Минимальная задержка между генерациями прерываний в мкс для приема данных

hw.em.rx_int_delay=100

# Минимальная задержка между генерациями прерываний в мкс для передачу данных

hw.em.tx_int_delay=100

# Максимальная задержка между генерациями прерываний в мкс для приема данных

hw.em.rx_abs_int_delay=1000

# Максимальная задержка между генерациями прерываний в мкс для передачи данных

hw.em.tx_abs_int_delay=1000

dev.em.rx_processing_limit=-1

# **Настройка hostcache**

net.inet.tcp.hostcache.hashsize=4096

net.inet.tcp.hostcache.bucketlimit=100

net.inet.tcp.hostcache.cachelimit=65536

# **Настройка syncache**

net.inet.tcp.syncache.hashsize=1024

net.inet.tcp.syncache.bucketlimit=100

net.inet.tcp.syncache.cachelimit=65536

# Таблица TCP control-block

net.inet.tcp.tcbhashsize=4096

# **Настройка net.isr**

# Очередь netisr

net.isr.defaultqlimit=4096

# Каждая очередь к отдельному ядру

net.isr.bindthreads=1

# Количество потоков netist (равно количеству ядер)

net.isr.maxthreads=8

# Размер очереди исходящий пакетов

net.link.ifqmaxlen=1024

# **Модули**

# Загружаем драйвер AHCI

ahci_load=»YES»

# Асинхронное выполнение IO системных вызовов

aio_load=»YES»

Параметры применяемые “на лету”

Для изменения параметров в уже загруженной ОС необходимо выполнить следующую команду:

## param_name – название параметра, value – значение

Также следует продублировать изменения в файл /etc/sysctl.conf, в противном случае, после перезагрузки, будет применено значение по умолчанию.

security.bsd.see_other_uids=0

# Количество сокетов

kern.ipc.maxsockets=204800

# Mbuf clusters

kern.ipc.nmbclusters=262144

# Запрещает вытеснение Wired памяти в Swap

kern.ipc.shm_use_phys=1

# Размер очереди для приема новых TCP соединений

kern.ipc.somaxconn=4096

# Определяет максимальное число дескрипторов файлов

kern.maxfiles=204800

# Максимальное число файлов на один процесс

kern.maxfilesperproc=200000

# Количество файловых дескрипторов закэшированых в памяти

kern.maxvnodes=256000

# не использовать трафик и прерывания

kern.random.sys.harvest.ethernet=0

# как источник энтропии для random’a

kern.random.sys.harvest.interrupt=0

# Попытаться синхронизировать диски при панике, для избежания

# fsck после перезагрузки

kern.sync_on_panic=1

# Для защиты от SMURF атак (ICMP echo request на broadcast адрес)

net.inet.icmp.bmcastecho=0

# Игнорировать пакеты icmp redirect

net.inet.icmp.drop_redirect=1

# Не отдавать по icmp маску своей подсети

net.inet.icmp.maskrepl=0

# Размер очереди IP-пакетов

# (Необходимо увеличивать если net.inet.ip.intr_queue_drops != 0)

net.inet.ip.intr_queue_maxlen=256

# Количество фрагментированных пакетов в очереди

net.inet.ip.maxfragpackets=1024

# Минимальный порт для исходящих соединений

net.inet.ip.portrange.first=1024

# Максимальный порт для исходящих соединений

net.inet.ip.portrange.last=65535

# Не использовать случайные порты для исх. соединений

net.inet.ip.portrange.randomized=0

# Не реагируем на ICMP редирект

net.inet.ip.redirect=0

# Отключение маршрутизации от источника

net.inet.ip.sourceroute=0

net.inet.ip.accept_sourceroute=0

# Не отвечать на все пакеты полученные на закрытый порт

net.inet.tcp.blackhole=2

# Отбрасывать пакеты с флагами SYN+FIN

net.inet.tcp.drop_synfin=1

# FIN_WAIT_2 state fast recycle

net.inet.tcp.fast_finwait2_recycle=1

# FIN_WAIT_2 таймаут

net.inet.tcp.finwait2_timeout=3000

# Время хранение hostcache

net.inet.tcp.hostcache.expire=1200

# Timeout for establishing syn

net.inet.tcp.keepinit=5000

# Максимально количество TIME_WAIT сокетов

net.inet.tcp.maxtcptw=65536

# Количество времени пребывания соединения в состоянии TIME_WAIT

# (в миллисекундах деленных на 2, 2 x 30000 MSL = 60 секунд)

net.inet.tcp.msl=5000

# Отключить автоподстройку receive буфера

net.inet.tcp.recvbuf_auto=0

# Размер receive буфера

net.inet.tcp.recvspace=65536

# Отключить автоподстройку send буфера

net.inet.tcp.sendbuf_auto=0

# Размер send буфера

net.inet.tcp.sendspace=131072

# Возможность перехода в «TCP SYN cookies» при переполнении syncache

net.inet.tcp.syncookies=1

# Отключаем использование TSO для сетевых карт

net.inet.tcp.tso=0

# Отбрасываются все UDP пакеты, адресованные закрытым портам

net.inet.udp.blackhole=1

# Размер UDP receive буфера

net.inet.udp.recvspace=32768

# Обрабатывать исходящие пакеты непосредственно при попытке отправки

net.isr.direct=1

# Размер исходящей очереди

net.route.netisr_maxqlen=1024

# При большом количестве файлов на сервере

vfs.ufs.dirhash_maxmem=100000000

Настройка SSH сервера

Перво наперво нужно настроить sshd для удаленного подключения. Если сейчас попробовать подключиться к серверу, то ничего не выйдет. Мы увидим окно приветствия, но залогиниться не получится. Это из-за того, что в системе у нас нет ни одного пользователя, кроме root. А этому пользователю по-умолчанию запрещено подключаться через ssh. Соответственно, у нас два пути, либо разрешить подключаться руту, либо добавить других пользователей. Сделаем и то, и другое. Сначала разрешаем пользователю root подключаться по ssh. Для этого редактируем файл /etc/ssh/sshd_config. Пока у нас голая система, воспользуемся для этого редактором ee. Открываем файл на редактирование:

# ee /etc/ssh/sshd_config

Находим строчку PermitRootLogin, раскомментируем ее и ставим напротив yes. По-умолчанию там стоит no.

Здесь же я рекомендую изменить стандартный порт ssh 22 на что-то более экзотическое. Делается это для того, чтобы роботы, которые постоянно сканируют интернет и пытаются залогиниться на серваки, остались не у дел. На 22 порт постоянно кто-то ломится с несуществующими учетками и подбирает пароли. Все это отражается в логах и может мешать. Сменив порт на нестандартный, мы частично избавляемся от этой проблемы. Ищем строчку со словом Port и меняем значение с 22, например, на 11222.

Сохраняем изменения и выходим из редактора. Теперь нам необходимо перезапустить sshd для принятия изменений. Делаем это командой:

# service sshd restart

Демон sshd перезапустится. Можно пробовать подключаться по ssh, должно получиться зайти под root.

Многие считают небезопасным подключаться удаленно под учетной записью рута. Это вопрос неоднозначный, все зависит от конкретной ситуации. Добавим одного пользователя для удаленного подключения. Воспользуемся командой:

# adduser

Заполняем необходимые данные пользователя. Обязательно в качестве добавочной группы укажите wheel. Если пользователя не добавить в эту группу, то он не сможет зайти потом рутом. После добавления пользователя, подключаемся им по ssh. После логина используем команду:

# su -l

Вводим пароль рута и оказываемся в учетной записи root.

Как подключаться и работать решайте для себя сами.

Скрипты

Скрипт инициализации фаервола /etc/rc.ipfw:

WAN=»em0″

LAN=»em1″

OPEN_PORT=»80,443″

IPFW=`which ipfw`

RET=$?

if ; then

echo «IPFW not found.»

exit ${RET}

fi

${IPFW} -f flush

${IPFW} -f table 1 flush

${IPFW} add 100 allow ip from any to any via lo0

${IPFW} add 110 deny ip from any to 127.0.0.0/8

${IPFW} add 120 deny ip from 127.0.0.0/8 to any

${IPFW} add 130 allow ip from any to any via ${LAN}

${IPFW} add 140 deny all from table(1) to me

${IPFW} add 150 deny all from any to any frag

${IPFW} add 160 allow carp from any to any via ${WAN}

${IPFW} add 180 allow tcp from any to any via ${WAN} established

${IPFW} add 200 check-state

${IPFW} add 210 allow tcp from me to any via ${WAN} setup keep-state

${IPFW} add 220 allow udp from me to any via ${WAN} keep-state

${IPFW} add 230 allow tcp from any to me dst-port ${OPEN_PORT} via ${WAN}

${IPFW} add 240 allow icmp from any to any icmptypes 0,8 via ${WAN}

${IPFW} add 65530 deny ip from any to any

exit 0

Скрипт привязывания прерываний очередей сетевых карт к процессорным ядрам /usr/local/startup/cpuset-emigb.sh:

cpus=`sysctl -n kern.smp.cpus`

DRIVER=`pciconf -l | egrep ’em|igb’ | sed -E ‘s/^(+).*/1/’ | head -n 1`

case «$DRIVER» in

em)

echo $DRIVER

i=1

vmstat -ai | egrep «em:x» | sed -E ‘s/^irq(+): (em):(+).*/1 2 3/’ |

while read irq iface queue

do

cpu=$(( $i % $cpus ))

echo «Binding ${iface} queue ${queue} (irq ${irq}) -> CPU${cpu}»

cpuset -l $cpu -x $irq

i=$(( $i + 1 ))

done

;;

igb)

echo $DRIVER

vmstat -ai | sed -E ‘/^irq.*que/!d; s/^irq(+): igb(+):que (+).*/1 2 3/’ |

while read irq iface queue

do

cpu=$(( ($iface+$queue) % $cpus ))

echo «Binding igb${iface} queue ${queue} (irq ${irq}) -> CPU${cpu}»

cpuset -l $cpu -x $irq

done

;;

esac

Установка и настройка dnsmasq

Для нашего роутера на freebsd подойдет любой dns и dhcp сервер. Можно использовать традиционные named и dhcp-server. Но для простоты и удобства, когда не нужен дополнительный функционал, я предпочитаю использовать простой и быстрый в настройке dnsmasq.

Устанавливаем dnsmasq на Freebsd шлюз:

# pkg install dnsmasq

Приводим конфиг к следующему виду:

# mcedit /usr/local/etc/dnsmasq.conf
domain-needed
bogus-priv
interface=hn1
resolv-file=/etc/resolv.conf
dhcp-range=10.20.30.100,10.20.30.200,24h

Добавляем в /etc/rc.conf:

dnsmasq_enable="YES"

Запускаем программу:

# /usr/local/etc/rc.d/dnsmasq start

Все, теперь наш шлюз полностью готов. Настраиваем на клиентах получение настроек по dhcp и проверяем работу интернета.

Информацию о выданных leases dhcp сервера dnsmasq можно посмотреть в файле /var/db/dnsmasq.leases.

Файл /etc/hosts.

Файл /etc/hosts содержит таблицы сопоставления DNS имен с IP адресами. В первую очередь ваш сервер будет обращаться к файлу hosts, а потом уже к DNS-серверу.

Записи 127.0.0.1 добавился автоматически при установке.

Лично для себя я отметил полезным внести в hosts запись этого freebsd (IP адрес локальной сети — имя сервера). Теперь мы можем во всех конфигурационных файлах указывать DNS имя, а не IP адрес, а в случае необходимости за кротчайшее время изменить свой IP адрес поправив hosts и настройки интерфейса в /etc/rc.conf.

Это просто для примера вам этого делать не обязательно.

Приступаю к редактированию(Рис.10):

vi /etc/hosts

Вписываю:

192.168.3.11 freebsd.itdeer.loc

Рис.10 — Содержимое файла hosts.

Проверю попинговав имена из hosts.(Рис.11)

ping localhost
ping freebsd.itdeer.loc

Рис.11 — Пингуем имена из hosts.

Настройка сети через файл конфигурации.

Для настройки статического или динамического IP адреса нам надо отредактировать файл конфигурации сетевых интерфейсов — /etc/rc.conf мы будем редактировать его с помощью текстового редактора vi.(Рис.4) Сразу скажу, для того чтобы редактировать в vi нужно нажать букву «i», а чтобы  сохранить и закрыть документ надо нажать  «Esc» ввести «:wq!» и нажать «Enter».

vi /etc/rc.conf

Рис.4 — vi /etc/rc.conf.

Получение настроек сети по DHCP.

Чтобы назначить получение настроек по DHCP, нужно вписать( или изменить существующую) строчку в файл /etc/rc.conf.(Рис.5)

ifconfig_НАЗВАНИЕ-ИНТЕРФЕЙСА=»DHCP»

ifconfig_em0="DHCP"

Рис.5 — Получение сетевых настроек по DHCP.

Перезапускаем сетевую службу netif.(Рис.6)

/etc/rc.d/netif restart

Рис.6 — Перезапуск сетевой службы FreeBSD.

Смотрим активные сетевые интерфейсы, видим, полученный по DHCP, IP адрес интерфейса em0 — 192.168.3.6(Рис.7)

ifconfig -u

Проверяем выход в интернет пингуем гугловские восьмёрки.

ping 8.8.8.8

Рис.7 — Проверка активных интерфейсов и доступа к сети.

Пинги идут. Всё отлично!

Указание настроек сети вручную.

Чтобы назначить статичный адрес для нашей Freebsd нужно в файл /etc/rc.conf вписать две строки(Рис.8)

ifconfig_НАЗВАНИЕ-ИНТЕРФЕЙСА=»inet IP-АДРЕС-FREEBSD netmask МАСКА-СЕТИ»

defaultrouter=»IP-АДРЕС-ШЛЮЗА»

ifconfig_em0="inet 192.168.3.11 netmask 255.255.255.0"
defaultrouter="192.168.3.1"

Рис.8 — Статичные настройки сетевого интерфейса.

Перезапускаем сетевую службу.

/etc/rc.d/netif restart

Проверяем активные интерфейсы

ifconfig -u

Проверяем выход в интернет пингуем гугловские восьмёрки.

ping 8.8.8.8

Подготовка сервера к настройке шлюза

Подробно вопрос настройки сервера Freebsd 10 я рассмотрел отдельно. Рекомендую ознакомиться с материалом. Здесь я не буду останавливаться на нюансах, а просто приведу команды, которые нам необходимы, без комментариев и подробных пояснений.

Любую настройку я предпочитаю начинать с обновления системы. Выполним его:

# freebsd-update fetch
# freebsd-update install

Теперь установим mc, я привык работать в нем:

# pkg install mc

Включаем синхронизацию времени. Для этого добавляем в /etc/rc.conf

ntpd_enable="YES"

И запускаем демон ntpd:

# service ntpd start

Теперь проверим сетевые настройки. Первый сетевой интерфейс я настроил еще во время установки, поэтому доступ в интернет на сервере уже есть. Вот мой конфиг сети:

hostname="freebsd"
ifconfig_hn0="SYNCDHCP"
ifconfig_hn1="inet 10.20.30.1 netmask 255.255.255.0"
defaultrouter="192.168.1.1"

Не забываем добавить dns сервер в /etc/resolv.conf.

Подготовительный этап завершен. Прежде чем двигаться дальше, я рекомендую проверить все, что было настроено тут, чтобы потом не отвлекаться. Убедитесь, что на самом сервере есть интернет, что он доступен в локальной сети — пингует другие машины и они его. После этого двигайтесь дальше.

Полезные настройки sysctl

Все настройки, описанные ниже, тестировались на FreeBSD 8.4.

Отключение ICMP редиректа

Почему ICMP редирект включен по умолчанию в FreeBSD остается загадкой, так как при его наличии система остается открытой для атак из вне (подробнее ). Для отключения ICMP редиректа нужно добавить в /etc/sysctl.conf 3 строки:

net.inet.ip.redirect=0
net.inet6.ip6.redirect=0
net.inet.icmp.drop_redirect=1

Доступ к просмотру системных процессов

Чтобы обычные пользователи не могли видеть чужие процессы, и соответственно, что запущено на сервере, необходимо переключить установленные по умолчанию параметры security.bsd.see_other_gids и security.bsd.see_other_uids из 1 в 0. Если оставить security.bsd.see_other_gids значение 1, то пользователь сможет видеть процессы группы, в которой он состоит.

Защита от сканирования портов

По умолчанию в FreeBSD параметры net.inet.tcp.blackhole и net.inet.udp.blackhole установлены в ноль, из-за чего при попытке подключиться на порты, которые не прослушиваются приложениями, сообщение о невозможности подключения к этим портам выдается очень быстро. Чтобы усложнить работу сканера портов рекомендуется net.inet.tcp.blackhole установить значение 2, а net.inet.udp.blackhole = 1 (значение 2 для net.inet.udp.blackhole отсутствует за ненадобностью). Значение 1 для net.inet.tcp.blackhole заставляет FreeBSD отклонять все SYN пакеты (пакеты устанавливающие соединение) пришедшие на никем не обслуживаемые порты без отсылки отправителю RST пакетов, значение 2 отбрасывает вообще все, а не только SYN пакеты, на закрытый порт. В случае установки значений net.inet.tcp.blackhole=2 и net.inet.udp.blackhole=1 сканирование портов будет протекать заметно дольше.

Проверить скорость ответа сервера до и после изменения параметра net.inet.tcp.blackhole можно при помощи telnet, подключаясь им на заранее известный, ни кем не обслуживаемый порт: open 192.168.5.5 27. Если используется блокировка неиспользуемых портов в FireWall, не забудьте перед тестом разрешить доступ к тестируемым портам, иначе разницы по скорости может и не быть. Даже если неиспользуемые порты блокируются в FireWall, изменить настройки ядра на более безопасные будет не лишним.

Настройка FireWall ipfw в sysctl

Просмотреть настройки FireWall ipfw можно такой командой: sysctl net.inet.ip.fw. Описание переменных для настройки ipfw — ниже.

Переменная R/W Описание и значения
net.inet.ip.fw.static_count R Кол-во статичных правил установленных для ipfw. Другими словами, здесь указан счетчик количества правил прописанных администратором для ipfw.
net.inet.ip.fw.default_to_accept R Открыт или закрыт FireWall по умолчанию. Т.е. если, например, сбросить все правила (ipfw -f flush) и net.inet.ip.fw.default_to_accept равен единице, то ipfw будет пропускать все соединения, и соответственно, если сервер управляется удаленно, администратор не потеряет доступ к нему. Отредактировать это значение можно пересобрав ядро FreeBSD, добавив в /boot/loader.conf строку net.inet.ip.fw.default_to_accept=1 или отредактировав rc.conf, добавив переменную firewall_type=»open».
net.inet.ip.fw.tables_max W Максимальное кол-во динамических таблиц ipfw, с 7 версии FreeBSD этот параметр можно изменить через sysctl. По умолчанию значение net.inet.ip.fw.tables_max равно 128.
net.inet.ip.fw.default_rule R Номер правила по умолчанию, которое устанавливается переменной net.inet.ip.fw.default_to_accept. Изменить значение можно в /boot/loader.conf. По умолчанию значение net.inet.ip.fw.default_rule = 65535
net.inet.ip.fw.verbose_limit W Максимальное кол-во сообщений, записываемых в лог-файл (/var/log/security), если значение равно нулю — ограничений нет.
net.inet.ip.fw.verbose R .
net.inet.ip.fw.autoinc_step R .
net.inet.ip.fw.one_pass R .
net.inet.ip.fw.dyn_keepalive R .
net.inet.ip.fw.dyn_short_lifetime R .
net.inet.ip.fw.dyn_udp_lifetime R .
net.inet.ip.fw.dyn_rst_lifetime R .
net.inet.ip.fw.dyn_fin_lifetime R .
net.inet.ip.fw.dyn_syn_lifetime R .
net.inet.ip.fw.dyn_ack_lifetime R .
net.inet.ip.fw.dyn_max R .
net.inet.ip.fw.dyn_count R .
net.inet.ip.fw.curr_dyn_buckets R .
net.inet.ip.fw.dyn_buckets R .
net.inet.ip.fw.enable R .

Опубликовано: 2013/08/06

HTML-код ссылки на эту страницу:
<a href=»https://petrenco.com/freebsd.php?txt=178″ target=»_blank»>Настройка FreeBSD при помощи sysctl</a>

10336

Рейтинг
( Пока оценок нет )
Понравилась статья? Поделиться с друзьями:
Мой редактор ОС
Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!: