The OpenNET Project / Index page

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




Версия для распечатки Пред. тема | След. тема
Новые ответы [ Отслеживать ]
DIR-300 IPTABLES фильтрация пакетов по IP и/или порту, !*! shurc, 01-Янв-20, 15:50  [смотреть все]
Всем доброго времени суток!

Исходные данные:
- Роутер 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

  • DIR-300 IPTABLES фильтрация пакетов по IP и/или порту, !*! Аноним, 20:40 , 01-Янв-20 (1)
    > - в таблице FILTER->FORWARD есть какие-то пакеты (видно на скрине), но это не совсем то, т.к., когда я подключаюсь к камерам наблюдения, то трафик на самом деле 0,5Мб/сек, а в журнале FORWARD записалось каких-то 300 байт и на этом все

    Потому что остальные пакеты попали под -m state --state ESTABLISHED,RELATED и были ACCEPT'нуты ранее, а остались только запросы на установку соединения (TCP SYN). ACCEPT означает прекращение обработки пакета в данной цепочке и передачу его далее.

    > - но, включая системный журнал на своем роутере на вкладке Security->Firewall->Log Management

    я спокойно вижу как эти все пакеты проходят и идут по назначению, а вот как их мне перехватить (в каком месте, какой командой) я не знаю
    Если там логируются вообще все пакеты, рекомендую это отключить, а логировать только нужное (нарисовать правило iptables с -j LOG).

    Для записи — logread -f и awk с обработкой вывода в помощь. Не рекомендую организовывать периодическую запись на встроенную флешку роутера, она от этого быстро сдохнет.

    • DIR-300 IPTABLES фильтрация пакетов по IP и/или порту, !*! shurc, 00:06 , 04-Янв-20 (2)
      Спасибо большое!
      Учел рекомендации. Вставил правила перед правилом с "-state ESTABLISHED,RELATED" и все считается и логируется!

      > Для записи — logread -f и awk с обработкой вывода в помощь.

      Можете написать хотя бы один пример, как с помощью awk мне вывести команду в отдельный файл?

      p.s.
      Пока что решил собирать лог удаленно https://papertrailapp.com/, а то в роутере флешки никакой нет

      Ну и еще можно ln -s /tmp/var/log/messages /tmp/www/log.html
      и потом конекчусь к модему каждые N минут с удаленного сервака и забираю лог на текущий момент

      • DIR-300 IPTABLES фильтрация пакетов по IP и/или порту, !*! Аноним, 08:22 , 04-Янв-20 (3)
        > Вставил правила перед правилом с "-state ESTABLISHED,RELATED" и все считается и логируется!

        А соответствующие ему пакеты точно представляют интерес? Чтобы выяснить, кто и когда заходил на TCP-сервер, достаточно SYN-пакетов. Остальные нужны только если надо знать сколько он висел и сколько данных передал.

        > Можете написать хотя бы один пример, как с помощью awk мне вывести
        > команду в отдельный файл?

        Команду в файл лучше выводить не awk'ом, а с помощью шелла:
        exec команда > файл
        Шелл при этом свяжет дескриптор вывода с файлом и завершится, передав управление команде. Чтобы шелл не завершался, убрать "exec". Awk понадобится для парсинга вывода по полям и его обработки программой (на нём можно реализовать алгоритм лимитирования вывода, как — не подскажу).




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

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