Differences

This shows you the differences between two versions of the page.

Link to this comparison view

instalacao_e_configuracao_do_syslog-ng_com_mysql_no_debian_squeeze_pt_br [2017/09/05 12:18] (current)
Line 1: Line 1:
 +====== Instalação e Configuração do Syslog-ng com MySQL no Debian Squeeze ======
  
 +
 +E ai galera, aqui eu vou abordar a instalação e a configuração do Syslog-ng trabalhando integrado com o MySQL e com o gerenciador Web para ficar melhor de monitoramos os logs, a ideia aqui é termos um local centralizado para acompanharmos os logs, com isso vamos configurar todos os clientes para enviarem os logs para este servidor.
 +
 +Prepare o seu sistema com o seguinte script http://​wiki.douglasqsantos.com.br/​doku.php/​confinicialsqueeze_en para que não falte nenhum pacote ou configuração.
 +
 +**O que vou utilizar:**
 +
 +  - **Nome Servidor:** syslog-ng
 +   - **Ip LAN:** 10.101.0.25/​24 ​
 +  - **Nome do Cliente: ** debian
 +   - **Ip LAN:** 10.101.0.26/​24
 +
 +Vamos primeiro fazer um update dos repositórios e mandar fazer um upgrade do sistema.
 +<sxh bash>
 +aptitude update && aptitude dist-upgrade -y
 +</​sxh>​
 +
 +Agora vamos mandar instalar as dependências
 +<sxh bash>
 +aptitude install mysql-server mysql-client apache2 php5 php5-mysql php5-imap syslog-ng -y
 +aptitude install php5-gd php5-mcrypt php5-json php5-xmlrpc php5-dev php5-common libapache2-mod-php5 php-pear -y
 +aptitude install libdbd-mysql libdbd-mysql-perl msttcorefonts php5-gd -y
 +</​sxh>​
 +
 +Agora vamos obter o phpsyslog
 +<sxh bash>
 +cd /usr/src
 +wget -c http://​wiki.douglasqsantos.com.br/​Downloads/​monitoring/​php-syslog-ng-2.9.8a.tgz
 +</​sxh>​
 +
 +Agora vamos descompactar ele
 +<sxh bash>
 +tar -xvf php-syslog-ng-2.9.8a.tgz ​
 +</​sxh>​
 +
 +Agora vamos copiar os arquivos do gerenciador web para a raiz do apache
 +<sxh bash>
 +cp -Rfa php-syslog-ng/​html /​var/​www/​phpsyslog
 +</​sxh>​
 +
 +Agora precisamos fazer alguns ajustes no arquivo de controle do php
 +<sxh bash>
 +vi /​etc/​php5/​apache2/​php.ini ​
 +[...]
 +magic_quotes_gpc = On 
 +[...]
 +display_errors = On 
 +[...]
 +session.save_path = "/​tmp"​
 +[...]
 +max_execution_time = 60 
 +</​sxh>​
 +
 +Agora vamos acertar as permissões do phpsyslog
 +<sxh bash>
 +chown -R www-data:​www-data /var/www/*
 +</​sxh>​
 +
 +Agora vamos remover um arquivo de configuração vazio que vem com o phpsyslog
 +<sxh bash>
 +rm -rf /​var/​www/​phpsyslog/​config/​config.php
 +</​sxh>​
 +
 +Agora vamos reiniciar o nosso apache
 +<sxh bash>
 +/​etc/​init.d/​apache2 restart
 +</​sxh>​
 +
 +Agora vamos acessar http://​ip_servidor/​phpsyslog
 +
 +  - Aqui na primeira tela precisamos ter todos os parâmetros na cor verde caso esteja tudo ok selecione Next
 +  - Aqui na próxima tela precisamos aceitar a licença **I understand that this software is released under the GNU/GPL License** e selecionar Next
 +  - Aqui na próxima tela precisamos informar:
 +    - A senha do root do MySQL e confirmar ela.
 +    - Em Syslog User Name vamos informar syslog
 +    - Depois precisamos informar a senha para este usuário e confirmar ela
 +    - Agora em Syslog Admin Name vamos informar syslog
 +    - Depois precisamos informar a senha para este usuário e confirmar ela
 +    - Agora vamos desmarcar Install Sample Data
 +    - Caso não monitore algum dispositivo Cisco podemos desmarcar também Install CEMDB Data
 +    - Agora selecione Next
 +  - Depois de selecionar Next vamos ter um aviso sobre o banco de dados selecione OK.
 +  - Na próxima tela podemos informar um nome de site para o phpsyslog no meu caso phpsyslog.douglasqsantos.com.br e selecione Next
 +  - Na próxima tela informe o seu email em your e-mail e informe uma senha em admin password está vai ser a senha de acesso ao painel e selecione Next
 +  - Caso esteja utilizando dispositivos Cisco na próxima tela selecione Install CEMDB caso contrário terminamos a instalação agora vamos fazer alguns ajustes.
 +
 +Agora vamos jogar o phpsyslog para a raiz do apache
 +<sxh bash>
 +rm -rf /​var/​www/​index.html
 +cd /var/www
 +mv /​var/​www/​phpsyslog/​* .
 +</​sxh>​
 +Vamos remover o diretório de instalação do phpsyslog
 +<sxh bash>
 +rm -rf /​var/​www/​install/​
 +</​sxh>​
 +
 +Agora vamos fazer alguns ajustes no syslog-ng, primeiro vamos parar ele
 +<sxh bash>
 +/​etc/​init.d/​syslog-ng stop
 +</​sxh>​
 +
 +Vamos fazer um backup do arquivo de configuração
 +<sxh bash>
 +cp -Rfa /​etc/​syslog-ng/​syslog-ng.conf{,​bkp}
 +</​sxh>​
 +
 +Agora vamos ajustar o syslog-ng.conf
 +<sxh bash>
 +vim /​etc/​syslog-ng/​syslog-ng.conf
 +@version: 3.1
 +#
 +# Syslog-ng configuration file, compatible with default Debian syslogd
 +# installation. Originally written by anonymous (I can't find his name)
 +# Revised, and rewrited by me (SZALAY Attila <​sasa@debian.org>​)
 +
 +# First, set some global options.
 +options { long_hostnames(off);​ flush_lines(0);​ use_dns(no);​ use_fqdn(no);​
 +    owner("​root"​);​ group("​adm"​);​ perm(0640); stats_freq(0);​
 +    bad_hostname("​^gconfd$"​);​
 +};
 +
 +########################​
 +# Sources
 +########################​
 +# This is the default behavior of sysklogd package
 +# Logs may come from unix stream, but not from another machine.
 +#
 +source s_src { unix-dgram("/​dev/​log"​);​ internal();
 +             ​file("/​proc/​kmsg"​ program_override("​kernel"​));​
 +
 +udp(
 +  ip(0.0.0.0)
 +  port(514)
 +);
 +tcp(
 +  ip(0.0.0.0)
 +  port(514)
 +);
 +};
 +
 +# If you wish to get logs from remote machine you should uncomment
 +# this and comment the above source line.
 +#
 +#source s_net { tcp(ip(127.0.0.1) port(1000) authentication(required) encrypt(allow));​ };
 +
 +########################​
 +# Destinations
 +########################​
 +# First some standard logfile
 +#
 +destination d_mysql {
 + ​sql(type(mysql)
 + ​host("​localhost"​) username("​syslog"​) password("​senha"​)
 + ​database("​syslog"​)
 + ​table("​logs"​)
 + ​columns("​host",​ "​facility",​ "​priority",​ "​level",​ "​tag",​ "​datetime",​ "​program",​ "​msg"​)
 + ​values("​$HOST_FROM",​ "​$FACILITY",​ "​$PRIORITY",​ "​$LEVEL",​ "​$TAG",​ "​$YEAR-$MONTH-$DAY $HOUR:​$MIN:​$SEC",​ "​$PROGRAM",​ "​$MSG"​)
 + ​indexes("​host",​ "​facility",​ "​priority",​ "​datetime",​ "​program"​));​
 +
 +};
 +destination d_auth { file("/​var/​log/​auth.log"​);​ };
 +destination d_cron { file("/​var/​log/​cron.log"​);​ };
 +destination d_daemon { file("/​var/​log/​daemon.log"​);​ };
 +destination d_kern { file("/​var/​log/​kern.log"​);​ };
 +destination d_lpr { file("/​var/​log/​lpr.log"​);​ };
 +destination d_mail { file("/​var/​log/​mail.log"​);​ };
 +destination d_syslog { file("/​var/​log/​syslog"​);​ };
 +destination d_user { file("/​var/​log/​user.log"​);​ };
 +destination d_uucp { file("/​var/​log/​uucp.log"​);​ };
 +
 +# This files are the log come from the mail subsystem.
 +#
 +destination d_mailinfo { file("/​var/​log/​mail/​mail.info"​);​ };
 +destination d_mailwarn { file("/​var/​log/​mail/​mail.warn"​);​ };
 +destination d_mailerr { file("/​var/​log/​mail/​mail.err"​);​ };
 +
 +# Logging for INN news system
 +#
 +destination d_newscrit { file("/​var/​log/​news/​news.crit"​);​ };
 +destination d_newserr { file("/​var/​log/​news/​news.err"​);​ };
 +destination d_newsnotice { file("/​var/​log/​news/​news.notice"​);​ };
 +
 +# Some `catch-all'​ logfiles.
 +#
 +destination d_debug { file("/​var/​log/​debug"​);​ };
 +destination d_error { file("/​var/​log/​error"​);​ };
 +destination d_messages { file("/​var/​log/​messages"​);​ };
 +
 +# The root's console.
 +#
 +destination d_console { usertty("​root"​);​ };
 +
 +# Virtual console.
 +#
 +destination d_console_all { file("/​dev/​tty10"​);​ };
 +
 +# The named pipe /​dev/​xconsole is for the nsole' utility. ​ To use it,
 +# you must invoke nsole' with the -file' option:
 +#
 +#    $ xconsole -file /​dev/​xconsole [...]
 +#
 +destination d_xconsole { pipe("/​dev/​xconsole"​);​ };
 +
 +# Send the messages to an other host
 +#
 +#​destination d_net { tcp("​127.0.0.1"​ port(1000) authentication(on) encrypt(on) log_fifo_size(1000));​ };
 +
 +# Debian only
 +destination d_ppp { file("/​var/​log/​ppp.log"​);​ };
 +
 +########################​
 +# Filters
 +########################​
 +# Here's come the filter options. With this rules, we can set which 
 +# message go where.
 +
 +filter f_dbg { level(debug);​ };
 +filter f_info { level(info);​ };
 +filter f_notice { level(notice);​ };
 +filter f_warn { level(warn);​ };
 +filter f_err { level(err); };
 +filter f_crit { level(crit .. emerg); };
 +
 +filter f_debug { level(debug) and not facility(auth,​ authpriv, news, mail); };
 +filter f_error { level(err .. emerg) ; };
 +filter f_messages { level(info,​notice,​warn) and 
 +                    not facility(auth,​authpriv,​cron,​daemon,​mail,​news);​ };
 +
 +filter f_auth { facility(auth,​ authpriv) and not filter(f_debug);​ };
 +filter f_cron { facility(cron) and not filter(f_debug);​ };
 +filter f_daemon { facility(daemon) and not filter(f_debug);​ };
 +filter f_kern { facility(kern) and not filter(f_debug);​ };
 +filter f_lpr { facility(lpr) and not filter(f_debug);​ };
 +filter f_local { facility(local0,​ local1, local3, local4, local5,
 +                        local6, local7) and not filter(f_debug);​ };
 +filter f_mail { facility(mail) and not filter(f_debug);​ };
 +filter f_news { facility(news) and not filter(f_debug);​ };
 +filter f_syslog3 { not facility(auth,​ authpriv, mail) and not filter(f_debug);​ };
 +filter f_user { facility(user) and not filter(f_debug);​ };
 +filter f_uucp { facility(uucp) and not filter(f_debug);​ };
 +
 +filter f_cnews { level(notice,​ err, crit) and facility(news);​ };
 +filter f_cother { level(debug,​ info, notice, warn) or facility(daemon,​ mail); };
 +
 +filter f_ppp { facility(local2) and not filter(f_debug);​ };
 +filter f_console { level(warn .. emerg); };
 +
 +########################​
 +# Log paths
 +########################​
 +log { source(s_src);​ destination(d_mysql);​ };
 +log { source(s_src);​ filter(f_auth);​ destination(d_auth);​ };
 +log { source(s_src);​ filter(f_cron);​ destination(d_cron);​ };
 +log { source(s_src);​ filter(f_daemon);​ destination(d_daemon);​ };
 +log { source(s_src);​ filter(f_kern);​ destination(d_kern);​ };
 +log { source(s_src);​ filter(f_lpr);​ destination(d_lpr);​ };
 +log { source(s_src);​ filter(f_syslog3);​ destination(d_syslog);​ };
 +log { source(s_src);​ filter(f_user);​ destination(d_user);​ };
 +log { source(s_src);​ filter(f_uucp);​ destination(d_uucp);​ };
 +
 +log { source(s_src);​ filter(f_mail);​ destination(d_mail);​ };
 +#log { source(s_src);​ filter(f_mail);​ filter(f_info);​ destination(d_mailinfo);​ };
 +#log { source(s_src);​ filter(f_mail);​ filter(f_warn);​ destination(d_mailwarn);​ };
 +#log { source(s_src);​ filter(f_mail);​ filter(f_err);​ destination(d_mailerr);​ };
 +
 +log { source(s_src);​ filter(f_news);​ filter(f_crit);​ destination(d_newscrit);​ };
 +log { source(s_src);​ filter(f_news);​ filter(f_err);​ destination(d_newserr);​ };
 +log { source(s_src);​ filter(f_news);​ filter(f_notice);​ destination(d_newsnotice);​ };
 +#log { source(s_src);​ filter(f_cnews);​ destination(d_console_all);​ };
 +#log { source(s_src);​ filter(f_cother);​ destination(d_console_all);​ };
 +
 +#log { source(s_src);​ filter(f_ppp);​ destination(d_ppp);​ };
 +
 +log { source(s_src);​ filter(f_debug);​ destination(d_debug);​ };
 +log { source(s_src);​ filter(f_error);​ destination(d_error);​ };
 +log { source(s_src);​ filter(f_messages);​ destination(d_messages);​ };
 +
 +log { source(s_src);​ filter(f_console);​ destination(d_console_all);​
 +            destination(d_xconsole);​ };
 +log { source(s_src);​ filter(f_crit);​ destination(d_console);​ };
 +
 +# All messages send to a remote site
 +#
 +#log { source(s_src);​ destination(d_net);​ };
 +</​sxh>​
 +
 +Agora vamos fazer um ajuste no mysql
 +<sxh sql>
 +mysql -u root -p
 +GRANT ALL PRIVILEGES ON syslog.* TO syslog@localhost IDENTIFIED BY '​senha';​
 +FLUSH PRIVILEGES;
 +quit;
 +</​sxh>​
 +
 +Agora vamos reiniciar o serviço do syslog-ng
 +<sxh bash>
 +/​etc/​init.d/​syslog-ng restart
 +</​sxh>​
 +
 +Agora vamos configurar o virtualhost para o nosso phpsyslog
 +<sxh apache>
 +vim /​etc/​apache2/​sites-available/​phpsyslog
 +<​VirtualHost *:80>
 + ​ServerName phpsyslog.douglasqsantos.com.br
 + ​ServerAlias phpsyslog
 + 
 + ​DocumentRoot "/​var/​www/"​
 + <​Directory "/​var/​www/">​
 + ​Options -Indexes +FollowSymLinks +MultiViews
 + ​AllowOverride All
 + Order allow,deny
 + allow from all
 + </​Directory>​
 + 
 + ​ErrorLog ${APACHE_LOG_DIR}/​phpsyslog.douglasqsantos.com.br-error.log
 + ​CustomLog ${APACHE_LOG_DIR}/​phpsyslog.douglasqsantos.com.br-access.log common
 + 
 + ​ServerSignature Off
 + 
 + ​LogLevel info
 +</​VirtualHost>​
 +</​sxh>​
 +
 +Agora vamos desativar o virtualhost default do apache e vamos ativar o virtualhost do phpsyslog
 +<sxh bash>
 +a2dissite default
 +a2ensite phpsyslog
 +</​sxh>​
 +
 +Agora vamos obter os arquivos do phpsyslog com algumas correções
 +<sxh bash>
 +cd /usr/src
 +wget -c http://​wiki.douglasqsantos.com.br/​Downloads/​monitoring/​php-syslog-patch.tar.gz
 +</​sxh>​
 +
 +Agora vamos descompactar os arquivos
 +<sxh bash>
 +tar -xzvf php-syslog-patch.tar.gz
 +</​sxh>​
 +
 +Agora vamos fazer backup dos arquivos que nós vamos modificar
 +<sxh bash>
 +cp -Rfa /​var/​www/​logout.php{,​.bkp}
 +cp -Rfa /​var/​www/​includes/​version.php{,​.bkp}
 +cp -Rfa /​var/​www/​config/​config.php{,​.bkp}
 +cp -Rfa /​var/​www/​includes/​jpgraph/​jpgraph.php{,​.bkp}
 +</​sxh>​
 +
 +Agora vamos substituir os arquivos
 +<sxh bash>
 +cp -Rfa logout.php /var/www/
 +cp -Rfa version.php /​var/​www/​includes/​
 +cp -Rfa config.php /​var/​www/​config/​
 +cp -Rfa jpgraph.php /​var/​www/​includes/​jpgraph/​
 +</​sxh>​
 +
 +Agora vamos ajustar somente as senhas do arquivo de configuração
 +<sxh php>
 +vim /​var/​www/​config/​config.php
 +[...]
 +define('​DBUSER',​ '​syslog'​);​
 +define('​DBUSERPW',​ '​senha'​);​
 +define('​DBADMIN',​ '​syslog'​);​
 +define('​DBADMINPW',​ '​senha'​);​
 +define('​DBNAME',​ '​syslog'​);​
 +define('​DBHOST',​ '​localhost'​);​
 +[...]
 +</​sxh>​
 +
 +Agora vamos ajustar as permissões dos arquivos
 +<sxh bash>
 +chown -R www-data:​www-data /var/www
 +</​sxh>​
 +
 +Agora podemos reiniciar o nosso apache
 +<sxh bash>
 +/​etc/​init.d/​apache2 restart
 +</​sxh>​
 +
 +Agora já podemos acessar http://​phpsyslog.douglasqsantos.com.br ou http://​ip_servidor
 +  - Usuário: admin
 +  - Senha: senha que foi definida junto ao email do admin na instalação do phpsyslog
 +
 +====== Configuração do Cliente ======
 +
 +Agora vamos ajustar um cliente Debian para enviar os logs para o nosso servidor
 +<sxh bash>
 +vim /​etc/​rsyslog.conf
 +[...]
 +#Inserir no final do arquivo
 +*.*     ​@10.101.0.25
 +#caso queira enviar somente alguns tipos de logs podemos fazer da seguinte forma
 +#​*.=emerg;​*.=warn;​*.=err;​*.=alert ​  ​@10.101.0.25
 +</​sxh>​
 +
 +Agora vamos reiniciar o rsyslog do cliente
 +<sxh bash>
 +/​etc/​init.d/​rsyslog restart
 +</​sxh>​
 +
 +Agora vamos consultar os logs enviados pelo cliente para o servidor ​
 +
 +No servidor vamos visualizar os logs
 +<sxh bash>
 +tail -f /​var/​log/​syslog ​
 +Oct 26 12:10:53 syslog-ng mysqld: Begin safemalloc memory dump:
 +Oct 26 12:10:53 syslog-ng mysqld: ​
 +Oct 26 12:10:53 syslog-ng mysqld: End safemalloc memory dump.
 +Oct 26 12:17:01 syslog-ng /​USR/​SBIN/​CRON[5362]:​ (root) CMD (   cd / && run-parts --report /​etc/​cron.hourly)
 +Oct 26 12:20:01 syslog-ng /​USR/​SBIN/​CRON[5419]:​ (root) CMD (test -x /​usr/​lib/​atsar/​atsa1 && /​usr/​lib/​atsar/​atsa1)
 +Oct 26 12:30:01 syslog-ng /​USR/​SBIN/​CRON[5461]:​ (root) CMD (test -x /​usr/​lib/​atsar/​atsa1 && /​usr/​lib/​atsar/​atsa1)
 +Oct 26 12:31:08 syslog-ng syslog-ng[3007]:​ Termination requested via signal, terminating;​
 +Oct 26 12:31:08 syslog-ng syslog-ng[3007]:​ syslog-ng shutting down; version='​3.1.3'​
 +Oct 26 12:42:54 syslog-ng syslog-ng[5705]:​ syslog-ng starting up; version='​3.1.3'​
 +Oct 26 12:50:01 syslog-ng /​USR/​SBIN/​CRON[5922]:​ (root) CMD (test -x /​usr/​lib/​atsar/​atsa1 && /​usr/​lib/​atsar/​atsa1)
 +Oct 26 12:57:41 10.101.0.26 kernel: imklog 4.6.4, log source = /proc/kmsg started.
 +Oct 26 12:57:41 10.101.0.26 rsyslogd: [origin software="​rsyslogd"​ swVersion="​4.6.4"​ x-pid="​1156"​ x-info="​http://​www.rsyslog.com"​] (re)start
 +</​sxh>​
 +
 +Notem que as ultimas entradas de logs são do endereço ip 10.101.0.26 que é o nosso cliente, agora já temos a configuração do servidor e do cliente.
 +
 +Agora precisamos ir ajustando de acordo com as nossas necessidades.
 +
 +====== Referências ======
 +
 +  - http://​www.balabit.com/​sites/​default/​files/​syslog-ng-v2.0-guide-admin-en.pdf