Como você permite que o syslogd aceite conexões de entrada no Snow Leopard de registradores remotos?

10

Como faço para que o syslogd aceite conexões de entrada de hosts remotos no Snow Leopard?

Gostaria de centralizar o registro em log de modo que vários dispositivos e sistemas enviem logs para o syslogd do Snow Leopard, que normalmente fica no UDP 514. No entanto, não consigo fazer com que eles sejam aceitos com êxito por um bom syslogd. Eu tcpdumped na caixa Snow Leopard para verificar que os pacotes estão sendo jorrados para a porta 514 - eles são. Eu verifiquei que o syslogd está escutando em 514 - não é.

Googling me disse que, em versões mais antigas do OSX (você não adora o modo como as coisas mudam tão rapidamente no OSX), basta adicionar um sinalizador ao daemon syslogd para permitir o uso remoto; Um fez isso em com.apple.syslogd.plist. No entanto, o daemon syslogd não tem sinalizadores (pelo menos na sua página de manual) que sugere qualquer coisa remota.

Qual é a solução para isso?

Pergunta secundária, menos importante, mas relevante: o que é 'newsyslog'? Eu vejo um arquivo plist mas ele não está rodando (aparentemente).

Obrigado

    
por Emmel 16.04.2010 / 07:08

3 respostas

4

Eu não tentei isso, mas eu olhei no plist para o syslogd (/System/Library/LaunchDaemons/com.apple.syslogd.plist) e veja esta parte comentada:

<!--
        Un-comment the following lines to enable the network syslog protocol listener.
-->
<!--
        <key>NetworkListener</key>
        <dict>
                <key>SockServiceName</key>
                <string>syslog</string>
                <key>SockType</key>
                <string>dgram</string>
        </dict>
-->

Remova os comentários e recarregue o serviço:

$ sudo launchctl unload /System/Library/LaunchDaemons/com.apple.syslogd.plist
$ sudo launchctl load /System/Library/LaunchDaemons/com.apple.syslogd.plist

e provavelmente você está no caminho.

Responda à sua pergunta secundária - newsyslog é semelhante a logrotate com frequência encontrado em sistemas linux. man newsyslog (ou on-line ) informa mais.

Como instalado com o Snow Leopard, ele é executado a cada 30 minutos por launchd por esse bit em sua plist:

<key>StartCalendarInterval</key>
<dict>
    <key>Minute</key>
    <integer>30</integer>
</dict>
    
por 27.04.2010 / 20:51
11

Observe que, se você estiver tentando fazer isso em uma máquina Snow Leopard Servidor (pelo menos com 10.6.4), verá que não há seção comentada em /System/Library/LaunchDaemons/com.apple.syslogd.plist (e que o arquivo plist é armazenado em um formato binário).

No entanto, copiar e colar a chave que Doug cita acima fará o truque, embora primeiro você precise converter o formato do arquivo para texto dessa forma:

sudo plutil -convert xml1 /System/Library/LaunchDaemons/com.apple.syslogd.plist

... e você provavelmente deve convertê-lo novamente (as conversões ocorrem in situ):

sudo plutil -convert binary1 /System/Library/LaunchDaemons/com.apple.syslogd.plist

... depois recarregue o daemon launchd segundo as instruções de Doug.

Depois, o arquivo plist completo deve ser o seguinte:

    <?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    <key>EnableTransactions</key>
    <true/>
    <key>HopefullyExitsLast</key>
    <true/>
    <key>Label</key>
    <string>com.apple.syslogd</string>
    <key>MachServices</key>
    <dict>
        <key>com.apple.system.logger</key>
        <true/>
    </dict>
    <key>OnDemand</key>
    <false/>
    <key>ProgramArguments</key>
    <array>
        <string>/usr/sbin/syslogd</string>
    </array>
    <key>Sockets</key>
    <dict>
        <key>AppleSystemLogger</key>
        <dict>
            <key>SockPathMode</key>
            <integer>438</integer>
            <key>SockPathName</key>
            <string>/var/run/asl_input</string>
        </dict>
        <key>BSDSystemLogger</key>
        <dict>
            <key>SockPathMode</key>
            <integer>438</integer>
            <key>SockPathName</key>
            <string>/var/run/syslog</string>
            <key>SockType</key>
            <string>dgram</string>
        </dict>
        <key>NetworkListener</key>
        <dict>
            <key>SockServiceName</key>
            <string>syslog</string>
            <key>SockType</key>
            <string>dgram</string>
        </dict>
    </dict>
</dict>
</plist>

Mais uma observação: se, como eu, você quiser enviar as saídas do syslog de suas estações base AirPort (e / ou Time Capsules) para seu servidor, elas usarão a facilidade 0, que não pode ser alterada . Isso significa que eles serão automaticamente registrados em /var/log/appfirewall.log devido à seguinte entrada padrão em /etc/syslog.conf:

local0.*                                               /var/log/appfirewall.log

Na versão Server do sistema operacional, você pode alterar com segurança o nome do arquivo para, por exemplo, AirPort.log depois de ter emitido o seguinte comando:

sudo touch /var/log/AirPort.log

... já que o Firewall de Aplicativos da Apple (socketfilterfw) está desativado por padrão (e deve permanecer desligado em um servidor - o ipfw é tudo que você realmente quer). Não tenho certeza se é possível reconfigurar o socketfilterfw para usar um recurso de syslog diferente.

    
por 19.08.2010 / 10:53
5

Outro método para ativar o acesso de rede ao syslogd no Snow Leopard é usando o programa de linha de comando PlistBuddy,

sudo /usr/libexec/PlistBuddy /System/Library/LaunchDaemons/com.apple.syslogd.plist
add :Sockets:NetworkListener dict
add :Sockets:NetworkListener:SockServiceName string syslog
add :Sockets:NetworkListener:SockType string dgram
save
quit

E, em seguida, reinicie o daemon,

sudo launchctl unload com.apple.syslogd.plist 
sudo launchctl load com.apple.syslogd.plist 

Você pode usar o lsof para verificar se o syslogd agora está escutando na porta syslog padrão, 514,

$ sudo lsof -i:514
COMMAND   PID USER   FD   TYPE     DEVICE SIZE/OFF NODE NAME
launchd     1 root   44u  IPv6 0x0e459370      0t0  UDP *:syslog
launchd     1 root   56u  IPv4 0x0f7a9ef0      0t0  UDP *:syslog
syslogd 24319 root    5u  IPv6 0x0e459370      0t0  UDP *:syslog
syslogd 24319 root    6u  IPv4 0x0f7a9ef0      0t0  UDP *:syslog
    
por 23.06.2011 / 18:25