Всем доброго времени суток!Исходные данные:
- Роутер 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/k6CCYj7Dec 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
> - в таблице 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 с обработкой вывода в помощь. Не рекомендую организовывать периодическую запись на встроенную флешку роутера, она от этого быстро сдохнет.
Спасибо большое!
Учел рекомендации. Вставил правила перед правилом с "-state ESTABLISHED,RELATED" и все считается и логируется!> Для записи — logread -f и awk с обработкой вывода в помощь.
Можете написать хотя бы один пример, как с помощью awk мне вывести команду в отдельный файл?
p.s.
Пока что решил собирать лог удаленно https://papertrailapp.com/, а то в роутере флешки никакой нетНу и еще можно ln -s /tmp/var/log/messages /tmp/www/log.html
и потом конекчусь к модему каждые N минут с удаленного сервака и забираю лог на текущий момент
> Вставил правила перед правилом с "-state ESTABLISHED,RELATED" и все считается и логируется!А соответствующие ему пакеты точно представляют интерес? Чтобы выяснить, кто и когда заходил на TCP-сервер, достаточно SYN-пакетов. Остальные нужны только если надо знать сколько он висел и сколько данных передал.
> Можете написать хотя бы один пример, как с помощью awk мне вывести
> команду в отдельный файл?Команду в файл лучше выводить не awk'ом, а с помощью шелла:
exec команда > файл
Шелл при этом свяжет дескриптор вывода с файлом и завершится, передав управление команде. Чтобы шелл не завершался, убрать "exec". Awk понадобится для парсинга вывода по полям и его обработки программой (на нём можно реализовать алгоритм лимитирования вывода, как — не подскажу).