Я пытаюсь поймать логи, сгенерированные iptables, работающими внутри контейнера.
Поскольку поддержка LOG отключена для контейнера (см. здесь ), я пытаюсь установить правила журнала iptables на хосте.
Я тестирую его с помощью правила (на хосте), которое перехватывает сканирование SYN из NMap (* 1) .
Таким образом, идея состоит в том, чтобы установить правила iptables на хосте для регистрации сканирований, выполненных в контейнере (с именем c_victim
), который использует виртуальный мостовой интерфейс br-a1b2c3
(* 2) .
Я пробовал разные правила, похожие на:
# iptables -I FORWARD -m physdev --physdev-out veth144i0 --physdev-is-bridged -j LOG --log-prefix "[fw::test]"
где veth144i0
- это виртуальный интерфейс Ethernet, связанный с br-a1b2c3
(* 3) . Я получил это правило от здесь .
Ни одно из правил, которые я пробовал создавать сгенерированные журналы на моем хосте после проверки с помощью:
$ journalctl -b | grep "\[fw.*\]"
Любые идеи о том, как установить правило iptables в (* 1) для контейнера ??
(* 1) : просто чтобы убедиться, что правило работает, я проверил его на своем хосте:
# iptables -I INPUT -p tcp -m multiport --dports 23,79 --tcp-flags ALL SYN -m limit --limit 3/m --limit-burst 5 -j LOG --log-prefix "[fw::syn-scan] "
затем отсканировал хост из контейнера с помощью:
root@887952fed115# nmap -sS 192.168.0.14
, а затем проверил журналы с помощью:
$ journalctl -b | grep "\[fw.*\]"
где журналы сканирования отображаются нормально.
(* 2) : Я знаю это, потому что я проверил, используя комбинацию этих команд:
$ docker container inspect c_victim | grep NetworkID
$ docker network ls
$ ifconfig -a
(* 3) : Я проверил это, просмотрев символические ссылки:
ls -l /sys/devices/virtual/net/veth*/master
В качестве предварительных проверок я также устанавливаю правила (в хосте всегда):
# iptables -I FORWARD -i br-a1b2c3 -j LOG --log-prefix "[fw::test-in]"
# iptables -I FORWARD -o br-a1b2c3 -j LOG --log-prefix "[fw::test-out]"
чтобы увидеть, что происходит, и вот что я получаю:
- журналы не генерируются, если я сканирую контейнер с хоста.
- только первый генерирует журналы в моем журнале , если Я сканирую хост из контейнера
c_victim
.