내 iptables에는 삭제된 패킷을 기록하는 규칙이 있습니다.
-A INPUT -i eth0 -j LOG --log-prefix "FW: " --log-level 7
-A INPUT -i eth0 -j DROP
그리고 에는 /etc/rsyslog.conf
이러한 로그를 전용 파일로 보내는 또 다른 규칙이 있습니다 /var/log/firewall.log
.
:msg, contains, "FW: " -/var/log/firewall.log
& ~
로그 나 다른 로그 파일이 & ~
넘치지 않도록 로그를 즉시 삭제합니다 .syslog
dmesg
이는 방화벽 로그( /var/log/dmesg
명령의 출력은 아님 dmesg
) 로 가득 차 있다는 점을 제외하면 잘 작동합니다 .
이러한 로그가 에 표시되지 않도록 하는 방법이 있습니까 dmesg
?
답변1
NFLOG
다음 대신 대상을 사용할 수 있습니다 LOG
.
NFLOG
This target provides logging of matching packets. When this target is set for a
rule, the Linux kernel will pass the packet to the loaded logging backend to log the
packet. This is usually used in combination with nfnetlink_log as logging backend,
which will multicast the packet through a netlink socket to the specified multicast
group. One or more userspace processes may subscribe to the group to receive the
packets. Like LOG, this is a non-terminating target, i.e. rule traversal continues
at the next rule.
필요한 것은 nfnetlink_log
유능한 로깅 프로그램뿐입니다. 메시지는 그곳으로 이동하고 사용자 공간 프로세스는 패킷을 기록할지 여부를 결정합니다.
시도해 볼 수 있는 또 다른 방법은 LOG
규칙을 특정 임계값으로 제한하는 것입니다.
-A INPUT -i eth0 -m limit --limit 10/minutes -j LOG --log-prefix "FW: " --log-level 7
-A INPUT -i eth0 -j DROP
이는 평균적으로 분당 10개의 패킷을 기록합니다. 물론 필요에 따라 조정할 수도 있습니다.
답변2
다음 명령을 사용하여 로그 수준을 7로 설정한 경우:
-A INPUT -i eth0 -j LOG --log-prefix "FW: " --log-level 7
그런 다음 레벨 임계값을 dmesg에 전달하여 이러한 메시지를 간단히 필터링할 수 있습니다.
dmesg --level=err,warn
답변3
iptables에서 사용하는 로그 수준과 관련이 있을 수 있습니다. rsyslog 문서에서 알 수 있듯이 로그 수준은 다음과 같습니다. "우선 순위는 오름차순으로 다음 키워드 중 하나입니다: debug, info, 통지, 경고, 경고(경고와 동일), err, 오류(err과 동일), 치명타, 경보, 비상, 패닉( 비상과 동일)." 이름(예: 'notice')을 사용하여 iptables에서 로그 수준을 지정하는 것은 어떻습니까? 이제는 그것이 전혀 문제가 아니라고 생각하기 때문에 확인하지 않고 게시하는 것이 나에게 도움이 됩니다. 위에 설명된 것과 유사한 구성표를 구현했는데 동일한 문제가 발생합니다. 내 centos 7 커널은 v3.10.0이고 v3.5 이후로는 커널 로깅이 /dev/kmsg를 사용하여 수행되는 것으로 보이며 dmesg가 어떻게든 거기에서 입력을 얻는 것으로 가정합니다.
답변4
왜 신경쓰나요? dmesg
는 최근 커널 메시지를 인쇄하는 저수준 도구이며 커널에 삭제된 패킷을 기록하도록 요청했습니다.
다른 커널 메시지와 별도의 로그 파일에 iptables 메시지를 기록하도록 시스템의 syslog 시스템을 구성하고 dmesg
.