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/
