LINUX.ORG.RU
решено ФорумAdmin

запись лога iptables

 


1

1

Добрый вечер

ipset --exist create blacklist_permanent  hash:ip
iptables -v -A FORWARD -p tcp -m set --match-set blacklist_permanent src -j DROP
iptables -v -A INPUT -p tcp -m set --match-set blacklist_permanent src -j DROP

iptables -v -N CONNRATE
iptables -v -A CONNRATE -j LOG --log-prefix "Iptables: REASON=ConnRate "
iptables -v -A CONNRATE -j DROP

iptables -v -A FORWARD -p tcp -m state --state NEW -m hashlimit --match multiport --dports 3389 \
      --hashlimit-name CONN_RATE --hashlimit-mode srcip --hashlimit-above 1/m --hashlimit-burst 10 -j CONNRATE

Есть процесс, который анализирует лог и добавляет адреса в ipset.
Почему, если адрес уже есть в ipset, он все равно логируется? Я полагал, что сработает первое правило и остальные обрабатываться не будут.


Есть процесс, который анализирует лог и добавляет адреса в ipset.

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

И вообще, добавлять адреса в сет можно напрямую из iptables, дополнительный процесс тут не нужен.

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

На момент проверки адрес точно уже в сете и при этом я вижу как появляются новые логи связанные с ним.
Дополнительный процесс нужен для добавления в разные сеты (с разными таймаутами).

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

Я полагал, что сработает первое правило и остальные обрабатываться не будут.

Так и есть, в случае -j DROP обрабатывается только первое подходящее правило. Тогда возможно, что в правилах еще где-то есть вхождения в цепочку CONNRATE

Deleted ()

Пусть процесс, который добавляет адрес в сет, перед добавлением записывает весь сет в файл, с указанием времени. Тогда точно будет видно, есть адрес в сете или нет.

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

Да я его вижу через ipset -L
Я сначала в логах увидел записи, что они идут, потом полез проверил, адрес в блек-листе.

Правила везде первыми в списке стоят:

root@gw:~# iptables -L -n -v --line-numbers
Chain INPUT (policy ACCEPT 752 packets, 50583 bytes)
num   pkts bytes target     prot opt in     out     source               destination
1        0     0 DROP       tcp  --  eth1   *       0.0.0.0/0            0.0.0.0/0            match-set blacklist_permanent src
2        0     0 DROP       tcp  --  eth1   *       0.0.0.0/0            0.0.0.0/0            match-set blacklist_86400 src
3        0     0 DROP       tcp  --  eth1   *       0.0.0.0/0            0.0.0.0/0            match-set blacklist_3600 src
4        0     0 DROP       tcp  --  eth1   *       0.0.0.0/0            0.0.0.0/0            match-set blacklist_300 src

...........
Chain FORWARD (policy ACCEPT 7748 packets, 842K bytes)
num   pkts bytes target     prot opt in     out     source               destination
1        0     0 DROP       tcp  --  eth1   *       0.0.0.0/0            0.0.0.0/0            match-set blacklist_permanent src
2        0     0 DROP       tcp  --  eth1   *       0.0.0.0/0            0.0.0.0/0            match-set blacklist_86400 src
3        0     0 DROP       tcp  --  eth1   *       0.0.0.0/0            0.0.0.0/0            match-set blacklist_3600 src
4        0     0 DROP       tcp  --  eth1   *       0.0.0.0/0            0.0.0.0/0            match-set blacklist_300 src
....
15      98  5028 CONNRATE   tcp  --  *      *       0.0.0.0/0            0.0.0.0/0            state NEW limit: above 1/min burst 10 mode srcip multiport dports 3389



Траф приходит с GRE туннеля и транслируется на внутренний интерфейс.
Но правило 15 его же ловит, но почему он до него вообще доходит.

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

а нафига 4 сета (с разными таймаутами) ?

Просто добавляешь адреса с параметром «timeout NNN» и все.

А «timeout 0» это перманент.

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

Это от недостатка знаний. Переделаю конечно, спасибо :)

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