Deploy MRTG

Whatis

O MRTG(Multi Router Traffic Grapher) é uma ferramenta para monitorar a carga de tráfego em conexões de rede. O MRTG cria páginas HTML contendo imagens com uma representação em tempo real(5mins) do tráfego.
O MRTG utiliza o protocolo SNMP(Simple Network Manager Protocol) que está presente na maioria dos dispositivos de rede atualmente como roteadores, switches e obviamente em servidores linux, então é possível monitorar o volume de tráfego que passa nesses dispositivos.

Instalação: SNMP

# yum -y install net-snmp net-snmp-utils

Basicamente as configurações padrão já vão estar ok, porém atente-se de que snmp aberto com a community public para o infinito e além da interwesbis são alvos ativos em potenciais para técnicas de DDoS do tipo Smurf, onde o seu servidor com snmp aberto começa a receber querys de um IP de origem spoofado que aponta para o alvo do atacante, então o seu servidor começa a enviar pacotes para o alvo do atacante achando que foi ele quem solicitou a query.

Porém vamos configurar um novo arquivo de configuração do snmpd porquẽ configurações default são sempre um tiro no pé. o openstack q o diga


$ sudo mv -b /etc/snmp/snmpd.conf /etc/snmp/snmpd.conf.bak
$ vim /etc/snmp/snmpd.conf

Segue exemplo de configuração:


view    systemview    included   .1.3.6.1.2.1.1
view    systemview    included   .1.3.6.1.2.1.25.1.1
access  notConfigGroup ""      any       noauth    exact  systemview none none
com2sec local     localhost        jedi
com2sec mynetwork 10.0.0.0/26      jedi
group MyRWGroup  v2c        local
group MyROGroup  v2c        mynetwork
view all    included  .1                               80
access MyROGroup ""      v2c       noauth    exact     all    none   none
access MyRWGroup ""      v2c       noauth    exact      all    all    all
syslocation Unknown (edit /etc/snmp/snmpd.conf)
syscontact Root  (configure /etc/snmp/snmp.local.conf)
dontLogTCPWrappersConnects yes

Repare que vai ser utilizado a c2v e a comunidade configurada chama “jedi”, configure também a sua rede onde está 10.0.0.0/26

Inicie o serviço e habilite-o:


$ sudo systemctl start snmpd
$ sudo systemctl enable snmpd

Agora vamos realizar um teste para ver se o serviço está OK


[root@cobaia-one conf]# snmpwalk -v2c -c jedi 10.0.0.8  system

Se ele responder está ok.

Agora vamos à instalação do MRTG

Instalação MRTG

Nos sistemas centOS os repositórios já são supridos com o mrtg. Vamos precisar instalar o HTTPD pois o MRTG é acessado via web.


yum install mrtg httpd

Eu vi muitos papers falando para usar o cfgmaker porém minha experiência com ele não foi boa então vou fazer manual.

Vamos configurar o arquivo do mrtg no diretório /etc/mrtg/mrtg.cfg;


$ sudo mv -b /etc/mrtg/mrtg.cfg /etc/mrtg/mrtg.cfg.bak
$ sudo vim /etc/mrtg/mrtg.cfg

Segue exemplo de configuração do arquivo:


HtmlDir: /var/www/mrtg
ImageDir: /var/www/mrtg
LogDir: /var/lib/mrtg
ThreshDir: /var/lib/mrtg
Interval: 5
Target[Cobaia_eth0]: 2:jedi@10.0.0.8:::::2
MaxBytes[Cobaia_eth0]: 1250000
Title[Cobaia_eth0]: Traffic Analysis
PageTop[Cobaia_eth0]: Stats for our Ethernet
RunAsDaemon: yes

Realizado isso temos já estamos prontos pra rodar, só um detalhe, o MRTG precisa ser executado com a variável de ambiente definida coo LANG=C, segue abaixo:


$ sudo env LANG=C /usr/bin/mrtg /etc/mrtg/mrtg.cfg

Como o RunAsDaemon está habilitado, será colocado o serviço como daemon, caso o RunAsDaemon estiver desabilitado, vai executar e parar logo em seguida, é bom caso você esteja com problemas, remover a linha RunAsDaemon e então analisar o output do comando rodnado sem ser daemon, vai te dar uma ideia dos erros encontrados.

Caso vocẽ queira tentar utilizar o cfgmaker, pode utiliza-lo da seguinte forma:


cfgmaker –output /etc/mrtg/mrtg.cfg 

Apesar de quando eu escrevi o paper eu realmente estava tendo problemas com esse utilitário, porém, em alguns casos como servidores com muitas interfaces de rede, é ideal que seja utilizado esse utilitário.

Ok, agora o seguinte, ele opera num acesso web, um dos utilitários para gerar a index é o indexmaker, pode ser utilizado da seguinte forma:


$ sudo indexmaker --output=/var/www/mrtg/index.html /etc/mrtg/mrtg.cfg

Configurando o httpd

Como eu to dando deploy num bag de teste, não em produção, eu não vou configurar um vhost ou altos caralhos assim, então vou fazer o seguinte, vou basicamente jogar o documentroot para o diretório do mrtg e boas, então é basicamente:


$ sudo vim /etc/httpd/conf/httpd.conf +/DocumentRoot # Ai você sai dando 'n' até encontrar a linha DocumentRoot e deixa igual na linha de baixo:
DocumentRoot "/var/www/mrtg"

Depois, mesmo esquema de sempre, lock and loaded, iniciar e habilitar:


$ sudp systemctl start httpd
$ sudp systemctl enable httpd

E então você pode acessar pelo navegador o IPv4 desse mano http://10.0.0.8/ e estará na console do MRTG.
Outra nota é que o MRTG não irá iniciar onboot, muitas pessoas colocam ele num cron a cada 5 minutos, mas eu prefiro deixar como daemon, eu não cheguei a implementar no lab aqui nada como um daemon pra executar onboot porém você pode dar uma olhada ali nas fontes no link do site iceflatline.com, ele fez um que eu não li mas parecia ser veridico.

Obviamente esse paper ta bem merda e vou melhorar ele conforme eu for pesquisando.

Fontes:

https://www.liquidweb.com/kb/how-to-install-and-configure-snmp-on-centos/
https://www.iceflatline.com/2009/08/how-to-install-and-configure-mrtg-on-ubuntu-server/
https://oss.oetiker.ch/mrtg/doc/mrtg-unix-guide.en.html
https://www.usenix.net/legacy/publications/library/proceedings/lisa98/full_papers/oetiker/oetiker.pdf
https://oss.oetiker.ch/mrtg/doc/mrtg-reference.en.html
https://blogwikinerds.wordpress.com/2014/12/13/instalando-o-mrtg/

Leave a comment

This site uses Akismet to reduce spam. Learn how your comment data is processed.