Como obter o URL do referenciador do Syslog

0

Eu tenho dois urls one.example.com e two.example.com, existe uma maneira no syslog conf de capturar qual URL foi usada para atingir o servidor?

Eu preciso modificar um banco de dados com base nessas informações.

Atualizar

Eu tenho um dispositivo que tem o busybox e o syslogd instalados. Eu sou capaz de definir um endereço no dispositivo para o syslog, por exemplo 1.1.1.1:514. Mas eu não sou capaz de fazer mais no dispositivo do que isso.

Eu tenho, por exemplo, 100 dispositivos, 50 são do tipo A e 50 são do tipo B. O problema é que ao usar 1.1.1.1:514 em cada dispositivo como o endereço do servidor syslog, ao receber as informações do dispositivo no servidor syslog remoto Eu não consigo diferenciar se o dispositivo é do tipo A ou tipo B.

Eu tenho a seguinte solução em mente, embora possa haver outra maneira de conseguir isso. Se eu criar dois subdomínios e apontá-los para o mesmo endereço, ou seja, typea.example.com e typeb.example.com, então, em teoria, em dispositivos com um tipo AI, o endereço do syslog remoto será definido como typea.example.com:514 e para o tipo B, typeb.example.com:514. Ambos os subdomínios apontarão para 1.1.1.1, portanto, as informações do syslog agora estão sendo recebidas pelos dispositivos do Tipo A e pelos dispositivos do Tipo B.

Eu preciso agora descobrir como no syslog.conf no servidor remoto, descobrir se a informação foi recebida por um dispositivo usando typea.example.com ou typeb.example.com.

O servidor não tem o apache instalado, etc, no entanto, no PHP, por exemplo, podemos usar $_SERVER e normalmente eu seria capaz de recuperar essas informações, $_SERVER['HTTP_HOST'] . Existe alguma maneira de fazer isso no syslog.conf no servidor syslog remoto.

Como mencionado, esta é uma solução que tenho em mente e pode não ser a única. Syslog é novo para mim e atualmente estou envolvendo minha cabeça em torno disso. Pelo que entendi em vez de variáveis ou parâmetros, o syslog usa macros. Nenhuma das macros fornecidas parece me dar a informação que eu preciso.

Eu sei que também posso definir o syslog dizendo

syslogd -R 1.1.1.1:514

Existe de qualquer maneira aqui eu posso incluir mais informações, por exemplo:

syslogd -R 1.1.1.1:514 type=a

Em seguida, posso dizer que use $TYPE para obter o valor ou, como alternativa, adicionar um cabeçalho personalizado ao syslog.

Como você provavelmente pode dizer que estou quebrando meu cérebro para soluções e batendo paredes de tijolos. Qualquer solução ou documentação que me aponte na direção correta seria muito apreciada.

O ponto final seria mencionar também estou olhando para redirecionar as informações do syslog para um script PHP ou um C (eu vou dizer script, mas eu sei que estou errado), a fim de examinar as informações lá e, em seguida, inserir no DB.

Simplesmente preciso de uma maneira de diferenciar pelo tipo A ou tipo B. Espero que isso resolva as coisas e não sejam apenas as divagações de um homem louco.

    
por The Humble Rat 15.06.2015 / 12:17

2 respostas

1

A maneira mais simples de realizar o que você deseja, dadas as restrições descritas na postagem original e outros comentários, bem como as limitações inerentes envolvidas, é executar duas instâncias do servidor syslog na máquina syslog principal.

Execute-os em duas portas diferentes (por exemplo, 30001 e 30002) e peça que gravem seus registros em dois arquivos diferentes. Aponte os clientes "tipo A" na porta 30001 no servidor, que registra as entradas em um arquivo typeA e aponta os clientes "tipo B" na porta 30002 no servidor syslog que registra as entradas em um arquivo typeB.

As portas escolhidas acima são arbitrárias, mas não entram em conflito com outros serviços existentes. Ele também o separa do syslog normal no servidor para que sua saída não seja misturada com mensagens dessa máquina.

Isso pressupõe que você esteja executando uma distribuição linux completa no servidor que possui um syslogd completo que pode ler suas configurações a partir de um arquivo de configuração (em vez do syslogd limitado embutido no busybox, como nos clientes). Você também precisa garantir que as portas apropriadas estejam abertas se um firewall estiver em uso no servidor. Os detalhes exatos de como fazer isso no servidor dependem da variante do syslog no servidor e no sistema operacional do servidor.

    
por 17.06.2015 / 18:08
1

O servidor syslogd remoto deve indicar um nome de host (ou endereço IP) como o próximo campo imediatamente após a data e a hora. Aqui está uma entrada de amostra em um arquivo syslog. O nome do host / ip da máquina enviando a entrada neste caso é "pizza"

Jun 16 15:45:01 pizza auth.info sshd[26861]: Failed password for user from 123.45.67.89 port 59903 ssh2

Mesmo que você esteja passando -R 1.1.1.1:514 para cada um dos clientes, esse é o endereço para o qual todos estão enviando. Cada um dos dispositivos do cliente deve ter seu próprio endereço IP ... caso contrário, eles não poderão existir na mesma rede. Esse endereço exclusivo deve ser registrado nas entradas do syslog remoto. Você deve ser capaz de deduzir qual é qual.

    
por 16.06.2015 / 23:01

Tags