The OpenNET Project / Index page

[ новости /+++ | форум | wiki | теги | ]

форумы  помощь  поиск  регистрация  вход/выход  слежка  RSS
"FreeBSD 11 - Ipfw: Cannot allocate dynamic state..."
Вариант для распечатки  
Пред. тема | След. тема 
Форум Информационная безопасность (BSD ipfw, ipf, ip-filter)
Изначальное сообщение [ Отслеживать ]

"FreeBSD 11 - Ipfw: Cannot allocate dynamic state..."  +/
Сообщение от Allan Stark (ok) on 24-Дек-16, 23:07 
Здравствуйте.

Есть сервер:
FreeBSD ... 11.0-RELEASE-p1 FreeBSD 11.0-RELEASE-p1 #0 r306420: Thu Sep 29 01:43:23 UTC 2016 root@releng2.nyi.freebsd.org:/usr/obj/usr/src/sys/GENERIC amd64
Xeon E5-2690, 4GB RAM, SSD RAID 1

На сервере крутится apache24 + php56 + mysql57
Несколько сайтов, один из которых - простенький интернет-магазин под OpenCart.
Суммарная посещаемость всех сайтов - >100000 страниц, ~10000 уникальных в сутки.

Раз в несколько дней, в основном на выходных происходит "Ipfw: Cannot allocate dynamic state, consider increasing net.inet.ip.fw.dyn_max" с вполне понятными последствиями.

Содержимое net.inet.ip.fw.:

net.inet.ip.fw.dyn_keep_states: 0
net.inet.ip.fw.dyn_keepalive: 1
net.inet.ip.fw.dyn_short_lifetime: 5
net.inet.ip.fw.dyn_udp_lifetime: 10
net.inet.ip.fw.dyn_rst_lifetime: 1
net.inet.ip.fw.dyn_fin_lifetime: 1
net.inet.ip.fw.dyn_syn_lifetime: 20
net.inet.ip.fw.dyn_ack_lifetime: 300
net.inet.ip.fw.dyn_max: 16384
net.inet.ip.fw.dyn_count: 615
net.inet.ip.fw.curr_dyn_buckets: 256
net.inet.ip.fw.dyn_buckets: 256
net.inet.ip.fw.enable: 1
net.inet.ip.fw.static_count: 22
net.inet.ip.fw.default_to_accept: 0
net.inet.ip.fw.tables_sets: 0
net.inet.ip.fw.tables_max: 128
net.inet.ip.fw.default_rule: 65535
net.inet.ip.fw.verbose_limit: 0
net.inet.ip.fw.verbose: 1
net.inet.ip.fw.autoinc_step: 100
net.inet.ip.fw.one_pass: 1


Настройки ipfw из rc.conf и ipfw.rules


# FIREWALL
firewall_enable="YES"
firewall_type="client"
firewall_logging="YES"
firewall_script="/etc/ipfw.rules"

#!/bin/sh

INTERNET_ADAPTER="em0"

THIS_HOST=...
ADM_HOST=...
DNS_SERVER=...
ISP_GATE=...
OFFICE=...
SERVER_VPN=...
A_HOME=...

KS="keep-state"

ipfw -q -f flush

ipfw -q add 00100 check-state

ipfw -q add 00200 allow all from any to any via lo0

ipfw -q add 00300 deny all from any to any frag
ipfw -q add 00400 deny tcp from any to any established

# Allow SSH
ipfw -q add 00444 allow tcp from $ADM_HOST to $THIS_HOST 11149 in $KS
ipfw -q add 00445 allow tcp from $A_HOME to $THIS_HOST 11149 in $KS

# Allow DNS
ipfw -q add 00500 allow tcp from $THIS_HOST to ${DNS_SERVER} 53 out via $INTERNET_ADAPTER setup $KS
ipfw -q add 00510 allow udp from $THIS_HOST to ${DNS_SERVER} 53 out via $INTERNET_ADAPTER $KS

# Allow PING
ipfw -q add 00900 allow icmp from any to any $KS

# Allow NTP
ipfw -q add 01000 allow tcp from $THIS_HOST to any 123 out via $INTERNET_ADAPTER $KS

# Allow FTP Client
ipfw -q add 01100 allow tcp from $THIS_HOST to any 21 out via $INTERNET_ADAPTER $KS
ipfw -q add 01110 allow tcp from $THIS_HOST to any 1024-65535 out via $INTERNET_ADAPTER $KS

# Allow FTP Server
ipfw -q add 01120 allow tcp from any to $THIS_HOST 21 in via $INTERNET_ADAPTER $KS
ipfw -q add 01130 allow tcp from any to $THIS_HOST 1024-3305 in via $INTERNET_ADAPTER $KS
ipfw -q add 01150 allow tcp from any to $THIS_HOST 3307-65535 in via $INTERNET_ADAPTER $KS

# Allow HTTP & HTTPS
ipfw -q add 01200 allow tcp from any to ${THIS_HOST} 80 in via $INTERNET_ADAPTER $KS
ipfw -q add 01210 allow udp from any to ${THIS_HOST} 80 in via $INTERNET_ADAPTER $KS
ipfw -q add 01220 allow tcp from any to ${THIS_HOST} 443 in via $INTERNET_ADAPTER $KS
ipfw -q add 01230 allow udp from any to ${THIS_HOST} 443 in via $INTERNET_ADAPTER $KS

# Allow HTTP & HTTPS from WebServer
ipfw -q add 01240 allow tcp from ${THIS_HOST} to any 80 out via $INTERNET_ADAPTER $KS
ipfw -q add 01250 allow tcp from ${THIS_HOST} to any 443 out via $INTERNET_ADAPTER $KS

# Allow MySQL
ipfw -q add 01300 allow tcp from $OFFICE to ${THIS_HOST} 3306 in via $INTERNET_ADAPTER $KS

# Allow SMTP
ipfw -q add 01400 allow log tcp from $THIS_HOST to any 25 out via $INTERNET_ADAPTER $KS

# LOG All BLOCKING
#ipfw -q add 65534 deny log ip from any to any


Большинство "просроченных" динамических правил естественно по правилу 1200 (входной HTTP).
Вопрос.
Как поступать в таком случае?
1. Где-то косяк в правилах файерволла?
2. Увеличить net.inet.ip.fw.dyn_max или уменьшить net.inet.ip.fw.dyn_ack_lifetime?

Ответить | Правка | Cообщить модератору

Оглавление

Сообщения по теме [Сортировка по ответам | RSS]

2. "FreeBSD 11 - Ipfw: Cannot allocate dynamic state..."  +/
Сообщение от universite (ok) on 25-Дек-16, 23:46 
Перепишите правила ipfw раз не понимаете логику keep-state.
Увеличение net.inet.ip.fw.dyn_max  решит проблему на какой-то срок.


Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

3. "FreeBSD 11 - Ipfw: Cannot allocate dynamic state..."  +/
Сообщение от Allan Stark (ok) on 26-Дек-16, 11:57 
> Перепишите правила ipfw раз не понимаете логику keep-state.
> Увеличение net.inet.ip.fw.dyn_max  решит проблему на какой-то срок.

Да, наверно стоит убрать keep-state с правил доступа к веб-серверу и переписать их.

Ответить | Правка | ^ к родителю #2 | Наверх | Cообщить модератору


Архив | Удалить

Рекомендовать для помещения в FAQ | Индекс форумов | Темы | Пред. тема | След. тема




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру