LINUX.ORG.RU
ФорумAdmin

ПОМОГИТЕ: IPTABLES фильтрация пакетов по IP и/или порту

 , , , ,


0

1

Всем доброго времени суток!

Исходные данные:

  • Роутер DIR300 с установленной mini-linux dd-wrt на борту, в качестве брандмауреа используются iptables
  • роутер подключен к интернет и имеет постоянный внешний IP 185.xx.xx.204 через WAN порт (интерфейс в таблицах: vlan2)
  • на роутере настроен проброс портов на локальный адрес […tcp dpt:44789 to:192.168.0.10:44789]
  • к роутеру подключен DVR с камерами наблюдения (через ethernet-кабель), DVR имеет постоянный внутрисетевой IP: 192.168.0.10, доступ к камерам осуществляется через порт 44789
  • вот на этом роутере я хочу фильтровать пакеты, которые поступают на порт 44789 с внешней сети

Задачи:

  1. записать в журнал когда и с какого IP были попытки доступа на соответствующий порт 44789
  2. чтобы не засорять журнла, нужно записывать не более 5 значений за 5 минут
  3. отфильтровать пакеты. Т.е. с некоторых IP - разрешить доступ на этот порт, а с некоторых - запретить, а остальные просто наблюдать и записывать в журнал

Проблема:

  1. не могу записать в журнал данные о входящих пакетах на соответствующий порт, т.к. не вижу их в таблице FILTER
  2. не могу отфильтровать пакеты по IP адресу, т.к. не вижу их в таблице FILTER

ПРИМЕЧАНИЯ:

  • все работает отлично - доступ к камерам имеется, захожу с любого внешнего IP и могу достучаться к DVR на порт 44789 без проблем, нареканий нет
  • не могу понять на каком этапе и в какой таблице фильтруются пакеты, идущие на этот порт 44789
  • в таблице FILTER->FORWARD есть какие-то пакеты (видно на скрине), но это не совсем то, т.к., когда я подключаюсь к камерам наблюдения, то трафик на самом деле 0,5Мб/сек, а в журнале FORWARD записалось каких-то 300 байт и на этом все
  • но, включая системный журнал на своем роутере на вкладке Security->Firewall->Log Management я спокойно вижу как эти все пакеты проходят и идут по назначению, а вот как их мне перехватить (в каком месте, какой командой) я не знаю

Доп. информация

  • прилагаю текстовый вариант журнала (Security->Firewall->Log Management)
  • прилагаю скрин настроек фаервола
  • прилагаю скрин записи с iptables -t nat
  • прилагаю скрин записи с iptables -t filter https://ibb.co/pfPQgL3 https://ibb.co/vHRmt10 https://ibb.co/k6CCYj7

Dec 31 19:43:22 DD-WRT kern.warn kernel: ACCEPT IN=vlan2 OUT=br0 MAC=00:00:11:22:33:44:55:66:77:88:99:00:08:00:45:00:00:3c SRC=46.211.104.95 DST=192.168.0.10 LEN=60 TOS=0x00 PREC=0x00 TTL=55 ID=46808 DF PROTO=TCP SPT=26573 DPT=44789 SEQ=325854005 ACK=0 WINDOW=12330 RES Dec 31 19:44:35 DD-WRT kern.warn kernel: ACCEPT IN=vlan2 OUT=br0 MAC=00:00:11:22:33:44:55:66:77:88:99:00:08:00:45:00:00:3c SRC=46.211.104.95 DST=192.168.0.10 LEN=60 TOS=0x00 PREC=0x00 TTL=55 ID=14803 DF PROTO=TCP SPT=26608 DPT=44789 SEQ=2304214882 ACK=0 WINDOW=12330 RE Dec 31 19:44:37 DD-WRT kern.warn kernel: ACCEPT IN=vlan2 OUT=br0 MAC=00:00:11:22:33:44:55:66:77:88:99:00:08:00:45:00:00:3c SRC=46.211.104.95 DST=192.168.0.10 LEN=60 TOS=0x00 PREC=0x00 TTL=56 ID=5039 DF PROTO=TCP SPT=26392 DPT=44789 SEQ=2309467354 ACK=0 WINDOW=12330 RES Dec 31 19:44:37 DD-WRT kern.warn kernel: ACCEPT IN=vlan2 OUT=br0 MAC=00:00:11:22:33:44:55:66:77:88:99:00:08:00:45:00:00:3c SRC=46.211.104.95 DST=192.168.0.10 LEN=60 TOS=0x00 PREC=0x00 TTL=55 ID=28136 DF PROTO=TCP SPT=26540 DPT=44789 SEQ=113758866 ACK=0 WINDOW=12330 RES Dec 31 19:44:37 DD-WRT kern.warn kernel: ACCEPT IN=vlan2 OUT=br0 MAC=00:00:11:22:33:44:55:66:77:88:99:00:08:00:45:00:00:3c SRC=46.211.104.95 DST=192.168.0.10 LEN=60 TOS=0x00 PREC=0x00 TTL=56 ID=38542 DF PROTO=TCP SPT=26532 DPT=44789 SEQ=3616876810 ACK=0 WINDOW=12330 RE Dec 31 19:44:37 DD-WRT kern.warn kernel: ACCEPT IN=vlan2 OUT=br0 MAC=00:00:11:22:33:44:55:66:77:88:99:00:08:00:45:00:00:3c SRC=46.211.104.95 DST=192.168.0.10 LEN=60 TOS=0x00 PREC=0x00 TTL=55 ID=35479 DF PROTO=TCP SPT=26584 DPT=44789 SEQ=3456775451 ACK=0 WINDOW=12330 RE


Через таблицу nat проходит только первый пакет соединения, остальные идут мимо. Задача nat сделать соотв. записи в таблице conntrack, по которым и происходит изменение src/dst адресов пакета, поэтому остальным пакетам соединения в этой таблице делать нечего.

Что касается ваших правил фильтрации/логгирования, то перед ними стоит правило ″state ESTABLISHED″, так что через ваши правила, аналогично, проходит только первый пакет. Меняёте порядок правил.

mky ★★★★★ ()

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

У тебя этот порт натится внтурь на камеру. Она filter не будет проходить. Только форвард в цепочке нат. Но чтобы залоггировать и т.д. надо правило до правила NAT воткнуть. То есть придётся весь файрволл на иптаблесах держать и родную управлялку отключить ( это не точно, но мне так кажется).

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

Странно, у меня на 5.2.14 ядро не знает про nat/FORWARD. И на картинках по запросу «iptables flow» (например, https://clck.ru/Lf334) ничего такого нет.

nat/FORWARD должна выполняться до трансляции адресов или после?

В любом случае, можно воспользоваться https://backreference.org/2010/06/11/iptables-debugging/ и найти все таблицы, через которые проходит трафик и выбрать наиболее удобное место для фильтрации.

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

Разобрался с ситуацией. В filter/FORWARD пакеты попадают, но действительно уже с меткой ESTABLISHED. Так что вставил правило перед правилом, которое считает ESTABLISHED и все получилось

shurc ()