nftables는 syslog에 쓰지 않습니다.

nftables는 syslog에 쓰지 않습니다.

LXC 컨테이너에서 Debian 10 실행:

# apt-get -y install nftables
# nft --version
nftables v0.7 (Scrooge McDuck)
# nft flush ruleset
# nft add table inet filter
# nft add chain inet filter input
# nft add rule inet filter input log
# nft list ruleset
table inet filter { 
    chain input {
        log
    }
}

그런 다음 으로 이동하여 /var/log/syslog네트워크 트래픽을 생성하고... 에서 메시지가 표시되지 않습니다.nftables조금도.

나는 또한 다음과 같이 규칙을 정의하려고 시도했지만 실패했습니다.

nft add rule inet filter input log prefix \"FINDME \" counter

추가 테스트:

# logger test && tail -1 /var/log/syslog
Aug 18 20:39:53 my-server root: test
# echo "test2" | systemd-cat && tail -1 /var/log/syslog
Aug 18 20:40:52 my-server cat[1907]: test2
# uname -v
 #1 SMP PVE 5.4.34-2 (Thu, 07 May 2020 10:02:02 +0200)

왜?nftables나한테 편지 안 써시스템 로그?

보너스 질문: 일치가 발생할 때 작업을 트리거할 수 있는 방법이 있습니까? 예를 들어 차단된 IP를 데이터베이스에 저장합니다.

답변1

글쎄요... @anx의 단서 덕분에 분명히 알아냈어요넷필터데이터를 보내는 데 약간의 어려움이 있습니다.rsyslog.

이는 아마도 호스트가 자체 커널이 없는 LXC 컨테이너라는 사실과 관련이 있을 것입니다.cgroup하이퍼바이저에서... (버프, 어두운 영역에 들어가고 있어요)... 음... 어쨌든.

어쨌든 누군가 비슷한 문제가 발생하면 다음으로 데이터를 보내 로그를 얻을 수 있었습니다.ulogd. 기본 예제를 작동시키는 단계는 다음과 같습니다.

# apt-get -y install nftables ulogd2
# nft flush ruleset
# nft add table inet filter
# nft add chain inet filter input '{ type filter hook input priority 0 ; }'
# nft add rule inet filter input log prefix "FINDME" group 0 accept
# nft list ruleset
table inet filter {
    chain input {
        type filter hook input priority 0; policy accept;
        log prefix "FINDME" group 0 accept
    }
}
# tail -f /var/log/ulog/syslogemu.log

답변2

매우 비슷한 문제에 직면했습니다. nftables가 네트워크 네임스페이스 내에서 실행될 때 로그를 기록하지 못했습니다. Julen의 솔루션이 저에게 효과적이지 않았습니다.

컨테이너를 실행하지 않으므로 다음을 사용하여 문제를 해결할 수 있습니다.

echo 1 >/proc/sys/net/netfilter/nf_log_all_netns

자세한 내용은: https://blog.raymond.burkholder.net/index.php?/archives/787-nftables-network-namespace-logging.html

관련 정보