LINUX.ORG.RU

nf_conntrack table full - iptables помогите

 ,


2

2

Всех с наступившим.

Проблема - в логи постоянно падает nf_conntrack table full. Увеличивал net.ipv4.netfilter.ip_conntrack_max до миллионных значений, но все равно забивается и опять ошибка в логи. Возможно ли это из-за того что у меня топорно написаны правила iptables? Шапку создал iptables-persistent, а все A INPUT я сам прописал.

*nat
:PREROUTING ACCEPT [14844953:854574188]
:INPUT ACCEPT [14817325:853139376]
:OUTPUT ACCEPT [4791916:288265361]
:POSTROUTING ACCEPT [4791916:288265361]
COMMIT
*mangle
:PREROUTING ACCEPT [211044859:258825462768]
:INPUT ACCEPT [211044859:258825462768]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [173551186:193987297344]
:POSTROUTING ACCEPT [173551186:193987297344]
COMMIT
*raw
:PREROUTING ACCEPT [211044859:258825462768]
:OUTPUT ACCEPT [173551186:193987297344]
COMMIT
*filter
:INPUT ACCEPT [41014:17243465]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [55481:251087923]

-A INPUT -p tcp -m tcp --dport 80 -m string --string "GET /w00tw00t.at.ISC.SANS." --algo bm --to 70 -j DROP
-A INPUT -s xx.xx.xx.xx/32 -p tcp -m tcp --dport 21 -j ACCEPT
-A INPUT -s xx.xx.xx.xx/32 -p tcp -m tcp --dport 21 -j ACCEPT
-A INPUT -s xx.xx.xx.xx/24 -p tcp -m tcp --dport 21 -j ACCEPT
-A INPUT -s xx.xx.xx.xx/24 -p tcp -m tcp --dport 21 -j ACCEPT
-A INPUT -s xx.xx.xx.xx/32 -p tcp -m tcp --dport 21 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 21 -j DROP
-A INPUT -s xx.xx.xx.xx/32 -p tcp -m tcp --dport 80 -j ACCEPT
-A INPUT -s xx.xx.xx.xx/32 -p tcp -m tcp --dport 80 -j ACCEPT
-A INPUT -s xx.xx.xx.xx/32 -p tcp -m tcp --dport 80 -j ACCEPT
-A INPUT -s xx.xx.xx.xx/32 -p tcp -m tcp --dport 80 -j ACCEPT
-A INPUT -s xx.xx.xx.xx/32 -p tcp -m tcp --dport 80 -j ACCEPT
-A INPUT -s xx.xx.xx.xx/32 -p tcp -m tcp --dport 80 -j ACCEPT
-A INPUT -s xx.xx.xx.xx/32 -p tcp -m tcp --dport 80 -j ACCEPT
-A INPUT -s xx.xx.xx.xx/32 -p tcp -m tcp --dport 80 -j ACCEPT
-A INPUT -s xx.xx.xx.xx/32 -p tcp -m tcp --dport 80 -j ACCEPT
-A INPUT -s xx.xx.xx.xx/32 -p tcp -m tcp --dport 80 -j ACCEPT
-A INPUT -s xx.xx.xx.xx/32 -p tcp -m tcp --dport 80 -j ACCEPT
-A INPUT -s xx.xx.xx.xx/32 -p tcp -m tcp --dport 80 -j ACCEPT
-A INPUT -s xx.xx.xx.xx/32 -p tcp -m tcp --dport 80 -j ACCEPT
-A INPUT -s xx.xx.xx.xx/24 -p tcp -m tcp --dport 80 -j ACCEPT
-A INPUT -s xx.xx.xx.xx/24 -p tcp -m tcp --dport 80 -j ACCEPT
-A INPUT -s xx.xx.xx.xx/32 -p tcp -m tcp --dport 22 -j ACCEPT
-A INPUT -s xx.xx.xx.xx/32 -p tcp -m tcp --dport 22 -j ACCEPT
-A INPUT -s xx.xx.xx.xx/32 -p tcp -m tcp --dport 22 -j ACCEPT
-A INPUT -s xx.xx.xx.xx/32 -p tcp -m tcp --dport 22 -j ACCEPT
-A INPUT -s xx.xx.xx.xx/32 -p tcp -m tcp --dport 22 -j ACCEPT
-A INPUT -p tcp -m tcp --dport 22 -j DROP
-A INPUT -s xx.xx.xx.xx/32 -p tcp -m tcp --dport 80 -j DROP
-A INPUT -s xx.xx.xx.xx/32 -p tcp -m tcp --dport 80 -j DROP
-A INPUT -s xx.xx.xx.xx/32 -p tcp -m tcp --dport 80 -j DROP
-A INPUT -s xx.xx.xx.xx/32 -p tcp -m tcp --dport 3306 -j ACCEPT
-A INPUT -s xx.xx.xx.xx/32 -p tcp -m tcp --dport 3306 -j ACCEPT
-A INPUT -s xx.xx.xx.xx/32 -p tcp -m tcp --dport 3306 -j ACCEPT
-A INPUT -d xx.xx.xx.xx -p tcp -m tcp --dport 3306 -j DROP
-A INPUT -d xx.xx.xx.xx -p tcp -m tcp --dport 3306 -j DROP

COMMIT

Ответ на: комментарий от dGhost
net.netfilter.nf_conntrack_max = 1548576
net.netfilter.nf_conntrack_count = 134135
net.ipv4.netfilter.ip_conntrack_max = 1548576
net.ipv4.netfilter.ip_conntrack_count = 134134
net.nf_conntrack_max = 1548576
rst630 ()
Ответ на: комментарий от dGhost

сервер под трафиком на 80 порту - крутится высокопосещаемый сайт. Не лигитимный трафик не замечаю - все как обычно.

rst630 ()

Стесняюсь спросить ну если у вас политика

:INPUT ACCEPT [41014:17243465]

то зачем все эти правила вида

-A INPUT -s xx.xx.xx.xx/32 -p tcp -m tcp --dport 80 -j ACCEPT

политика их и так разрешает.

last_unit ()
Ответ на: комментарий от rst630

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

last_unit ()

Либо я что-то не понимаю, либо ты темнишь. iptables-save это конечно хорошо, но не факт что показывает текущее состояние. Ты уверен что привёл вывод команды, а не содержимое конфига ( вроде /etc/sysconfig/iptables ) ?

Попробуй выгрузить модуль через modrobe -rv $module ( сначала смотри зависимости через lsmod | grep -i nf_conn )

router ★★★★★ ()
Последнее исправление: router (всего исправлений: 1)
Ответ на: комментарий от router

привет rules.v4 из etc, но что это меняет? Вот iptables -L:

Chain INPUT (policy ACCEPT)
target     prot opt source               destination
DROP       tcp  --  anywhere             anywhere             tcp dpt:http STRING match  "GET /w00tw00t.at.ISC.SANS." ALGO name bm TO 70
ACCEPT     tcp  --  xx.xx.xx.xx    anywhere             tcp dpt:ftp
ACCEPT     tcp  --  xx.xx.xx.xx         anywhere             tcp dpt:ftp
ACCEPT     tcp  --  xx.xx.xx.xx  anywhere             tcp dpt:ftp
ACCEPT     tcp  --  xx.xx.xx.xx  anywhere             tcp dpt:ftp
ACCEPT     tcp  --  xx.xx.xx.xx         anywhere             tcp dpt:ftp
ACCEPT     tcp  --  xx.xx.xx.xx         anywhere             tcp dpt:ftp
ACCEPT     tcp  --  xx.xx.xx.xx         anywhere             tcp dpt:ftp
ACCEPT     tcp  --  xx.xx.xx.xx         anywhere             tcp dpt:ftp
ACCEPT     tcp  --  xx.xx.xx.xx        anywhere             tcp dpt:ftp
ACCEPT     tcp  --  xx.xx.xx.xx  anywhere             tcp dpt:ftp
ACCEPT     tcp  --  xx.xx.xx.xx  anywhere             tcp dpt:ftp
DROP       tcp  --  anywhere             anywhere             tcp dpt:ftp
ACCEPT     tcp  --  xx.xx.xx.xx    anywhere             tcp dpt:ssh
ACCEPT     tcp  --  xx.xx.xx.xx  anywhere             tcp dpt:ssh
ACCEPT     tcp  --  xx.xx.xx.xx  anywhere             tcp dpt:ssh
ACCEPT     tcp  --  xx.xx.xx.xx        anywhere             tcp dpt:ssh
ACCEPT     tcp  --  xx.xx.xx.xx         anywhere             tcp dpt:ssh
DROP       tcp  --  anywhere             anywhere             tcp dpt:ssh
DROP       tcp  --  xx.xx.xx.xx  anywhere             tcp dpt:http
DROP       tcp  --  xx.xx.xx.xx  anywhere             tcp dpt:http
DROP       tcp  --  xx.xx.xx.xx  anywhere             tcp dpt:http
ACCEPT     tcp  --  xx.xx.xx.xx  anywhere             tcp dpt:mysql
ACCEPT     tcp  --  xx.xx.xx.xx  anywhere             tcp dpt:mysql
ACCEPT     tcp  --  xx.xx.xx.xx         anywhere             tcp dpt:mysql
ACCEPT     tcp  --  xx.xx.xx.xx   anywhere             tcp dpt:mysql
ACCEPT     tcp  --  xx.xx.xx.xx   anywhere             tcp dpt:mysql
ACCEPT     tcp  --  xx.xx.xx.xx     anywhere             tcp dpt:mysql
DROP       tcp  --  anywhere             localhost.localdomain  tcp dpt:mysql

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination
rst630 ()
Ответ на: комментарий от rst630

не забывайте ставить ближе к началу правила типа

-m state --state INVALID -j DROP
-m state --state NEW -p tcp ! --syn -j DROP

это уменьшает число левых коннектов в nf_conntrack

С другой стороны, у вас нет правил проверяющих состояние соединения и/или NAT и nf_conntrack в таком случае можно отключить совсем.

А вот правило

-A INPUT -p tcp -m tcp --dport 80 -m string --string "GET /w00tw00t.at.ISC.SANS." --algo bm --to 70 -j DROP
это скрытый DoS для вашего сервера. Дропнув этот сегмент вы получаете незакрытое соединение. IMHO лучше сказать REJECT вместо дроп - он будет адекватно отработан nf_conntrack.

vel ★★★★★ ()
Ответ на: комментарий от vel

подскажите как вообще отключить conntrack? Видимо он мне вообще не нужен раз я не использую правила на основе состояний соединения? На данный момент снизил net.netfilter.nf_conntrack_tcp_timeout_established до 120 сек, было аж на 5 суток, пока не понял к чему это приведет, но таблица переполняться перестала.

rst630 ()
Ответ на: комментарий от last_unit

там где DROP там не хосты а anywhere, так что всем остальным должно дропать.

rst630 ()
Ответ на: комментарий от rst630

в iptables таблицу raw, добавь для 80го NOTRACK в оба чейна

anonymous ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.