ловить логи iptables из контейнера в хост - PullRequest
0 голосов
/ 13 ноября 2018

Я пытаюсь поймать логи, сгенерированные 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.
...