Configurando o syslogd para aceitar conexões remotas no OS X Mountain Lion e atribuir-lhes uma categoria

5

De outro thread aqui no Stack Exchange, descobri que é muito fácil ativar o syslogd no Lion ou no Mountain Lion para aceitar conexões de entrada.

cd /System/Library/LaunchDaemons
sudo /usr/libexec/PlistBuddy -c "add :Sockets:NetworkListener dict" com.apple.syslogd.plist
sudo /usr/libexec/PlistBuddy -c "add :Sockets:NetworkListener:SockServiceName string syslog" com.apple.syslogd.plist
sudo /usr/libexec/PlistBuddy -c "add :Sockets:NetworkListener:SockType string dgram" com.apple.syslogd.plist
sudo launchctl unload com.apple.syslogd.plist
sudo launchctl load com.apple.syslogd.plist

O problema que tenho, no entanto, é que quando meu roteador envia mensagens para o syslogd, elas aparecem no console do OS X como vindas de Unknown - por exemplo:

5/3/13 9:19:40.000 AM Unknown[-1]: [WAN-IN-6-A]IN=eth2 OUT=eth0 SRC=141.133.142.260 DST=10.0.00.10 LEN=64 TOS=0x00 PREC=0x00 TTL=53 ID=30298 DF PROTO=TCP SPT=60553 DPT=443 WINDOW=65535 RES=0x00 SYN URGP=0 

Considerando que uma mensagem de log da máquina local especifica um remetente:     5/3/13 7: 38: 20.155 AM kdc [67]: Referência do LKDC para o nome real do domínio LKDC

A execução do tcpdump no host de log remoto mostra que as mensagens estão sendo enviadas com mais informações do que é mostrado no Console:

    router.example.com.38236 > server.example.com.syslog: SYSLOG, length: 258
Facility kernel (0), Severity warning (4)
Msg: May  3 09:12:39 router kernel: [WAN-LOCAL-default-D]IN=eth2 OUT= MAC=dc:ca:fe:ba:be:17:00:21:a0:ce:66:d9:07:00 SRC=86.86.123.381 DST=130.168.365.128 LEN=60 TOS=0x00 PREC=0x00 TTL=39 ID=26555 DF PROTO=TCP SPT=46635 DPT=62615 WINDOW=5840 RES=0x00 SYN URGP=0 

09: 12: 45.557613 IP (tos 0x0, ttl 64, id 0, offset 0, sinalizadores [DF], proto UDP (17), comprimento 286)

Alguém pode me indicar como configurar o syslog no servidor do OS X Mountain Lion para reconhecer o remetente nas mensagens de log recebidas e categorizá-las adequadamente?

    
por Kai Howells 03.05.2013 / 01:33

1 resposta

1

Acho que é tarde demais para o OP, mas posso relatar minha experiência recente com o OS X 10.10 Yosemite.

Parece que você NÃO pode configurar o syslogd no OS X para diretamente reconhecer o remetente. Na verdade, depois que as mensagens de log foram recebidas no ASL (Apple System Log), a única maneira de reconhecê-las é porque elas possuem algumas chaves sem sentido: PID é 0xFFFFFFFF + 1, GID e UID são 0xFFFFFFFF + 2. É claro que essa anomalia permite que você indiretamente reconheça as mensagens UDP, para que você possa simplesmente pegar aquelas com essas chaves. Mas você ainda não será capaz de separar as mensagens de log provenientes de duas origens UDP diferentes.

Podemos fazer algo para as mensagens antes de entrarem no ASL? Eu não encontrei nenhuma maneira, e eu não acho que existe uma possibilidade, porque o modo de depuração no syslogd / ASL mostra que a análise da mensagem já é feita por uma função ASL.

Observe que fiz meus testes usando um roteador DD-WRT (que é um Linux) como a origem do syslog UDP, e não tentei verificar diretamente o conteúdo dos pacotes UDP; então pode ser que o problema esteja no DD-WRT enviando pacotes malformados. ... embora eu duvide disso.

Além disso, eu diria que o syslogd / ASL do OS X é bastante complicado e cheio de bugs (já enviei um relatório de bug). Então, eu recomendaria para passá-los e tente syslog-ng. Esse será meu próximo passo.

Caso você ainda queira tentar com o syslogd do OS X, eu escrevi sobre toda a configuração em meu blog , incluindo como despejar todas as mensagens recebidas em UDP em seu próprio arquivo de log auto-rotacionado.

    
por 05.03.2015 / 00:05