Временное назначение 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