syslog에 대한 iptables 로깅을 사용자 정의할 수 있습니까?

syslog에 대한 iptables 로깅을 사용자 정의할 수 있습니까?

iptables에서 까지 다음과 같은 로그 항목이 있다고 가정해 보겠습니다 syslog.

Nov  3 12:04:12 mypc kernel: [  296.274134] Packet: IN=enp0s9 OUT=enp0s8 MAC=08:00:27:2f:77:23:08:00:27:86:42:0e:08:00 SRC=192.168.2.20 DST=192.168.1.11 LEN=284 TOS=0x00 PREC=0x00 TTL=63 ID=61089 DF PROTO=TCP SPT=80 DPT=1335 WINDOW=32160 RES=0x00 ACK PSH URGP=0

여기서 " Packet:"는 규칙으로 정의한 사용자 정의 로그 접두사입니다 iptables.... -j LOG --log-prefix "Packet: "

질문: IN=enp0s9 <...> ACK PSH URGP=0(전체 문자열을 의미합니다) 수정할 수 있습니까? 아니면 해체할 수 없는 전체 "메시지"입니까?

간단히 말해서 항목이 다음과 같기를 원합니다.

Nov  3 12:04:12 Packet: SRC=192.168.2.20 DST=192.168.1.11 LEN=284

추가 정보가 없습니다. 이것을 시스템 로그용 사용자 정의 템플릿으로 사용하고 싶습니다. 가능합니까? 안타깝게도 아직은 확실하지 않습니다시스템 로그 문서

답변1

당신은 그것을 사용할 수 있습니다부동산 대체품.

귀하 rsyslog.conf또는 유사한 줄을 새 메시지에 대해 원하는 형식의 템플릿으로 정의하고 입력 줄을 일치시킬 때 작업에 사용합니다. 예를 들어,

$template myedit,"Packet: %msg:R,ERE,1,FIELD:Packet: .*?(SRC=.*LEN=[0-9]+).*--end%\n"
if ($msg contains "Packet: ") then {
  action(type="omfile" file="/var/log/myedit.log" template="myedit")
}

템플릿 표현 템플릿 변수 myedit는 정규식(R) 일치, 확장(ERE), 그룹 캡처 1(1) msg(또는 일치하는 항목이 없는 경우 원래 필드 유지)로 대체된 속성을 포함하는 문자열입니다. 실제 정규 표현식은 이 Packet: .*?(SRC=.*LEN=[0-9]+).*부분입니다. 이는 --end시퀀스의 필수 부분입니다 %...:R,...--end%. 전체 메시지를 이 템플릿으로 대체할 것이므로 마지막 개행 문자를 추가하세요.

다음 줄은 편집하려는 줄과 결과가 배치되는 위치에 대한 일반적인 Rainer 스크립트 테스트입니다.

관련 정보