segunda-feira, 26 de outubro de 2015

TTYREC grava o que é digitado no terminal

O ttyrec é um pacote livre utilizado para gravar tudo que for feito no terminal como se fosse um arquivo de vídeo.

Objetivo
Explicar a instalação e o funcionamento do ttyrec para uso corporativo ou pessoal, fazendo com que tudo que for digitado no teclado seja capturado e enviado por e-mail, mantendo um histórico de cada usuário.
Ferramentas
Neste projeto iremos utilizar uma máquina virtual Debian 6 Squeeze com acesso a Internet. Caso tenha dificuldade de configurar uma máquina virtual, acesso o tutorial de criação de máquinas virtuais aqui no Mundo TI Brasil.
Configurando
Primeiro de tudo teremos que fazer login como superusuário (root) no Shell. Por questões de compatibilidade com este tutorial, recomendo executar os 2 comandos seguintes antes de realizar a instalação do pacote ttyrec.
# apt-get update
# apt-get upgrade
Após executar os 2 comando informados acima, execute o seguinte comando:
# apt-get install ttyrec
A figura a baixo exibe como proceder. Observe que toda instalação e configuração serão feitas como root.
ttyrec01
Agora iremos realizar um teste para saber se esta tudo funcionando. Neste teste iremos apenas executar os comandos dfls -l pwd, seguido do comando clear.
Para fazer com que o ttyrec funcione, execute:
ttyrec
Após digitar o comando acima e pressionar <enter>. O comando acima funciona como start. A partir daí tudo que for digitado será gravado.
Digite os seguintes comandos:
# ls -l
# pwd
# df
#clear
Para finalizar a gravação, execute o seguinte comando:
# exit
Ao executar o comando acima, note que nada mudou exceto que foi criado um arquivo na posição atual onde você se encontra chamado de:ttyrecord. Este arquivo contém todos os comandos digitados acima.
ttyrec02
O comando exit executado no final funciona como stop por padrão ele cria o arquivo com as permissões de leitura para todos, sendo que somente o dono do arquivo possui permissão de gravação.
Agora iremos rodar a gravação. Para realizar esta etapa, execute o seguinte comando:
ttyplay ttyrecord
Depois de alguns instantes, você veria tudo que foi feito.
Agora preste atenção na imagem a seguir. Realizei um teste onde irei criar arquivos e adicionar algum conteúdo dentro deles.
ttyrec03
Analisando o 1º quadro, criei uma diretório chamado erick e um arquivo chamado martinez.
No 2º quadro, iniciamos a gravação e executamos alguns comandos e ao final foi executado o comando exit.
No 3º quadro, foi inicializado a gravação. Note que em momento algum, ele sobrescreve o arquivo original ou exibe uma mensagem de que já existe um arquivo com o nome.
O exemplo acima serviu para mostrar que não existe problema em executar o comando ttyplay.
Opções do comando ttyrec
Podemos utilizar algumas opções do comando, tais como:
-a
Anexar a saída para o arquivo ou ttyrecord, ao invés de substituí-lo.
-u
Com esta opção, ttyrec chama automaticamente uudecode e salva sua saída quando os dados uuencoded aparecer na sessão. Ele permitirá que você transfira arquivos de host remoto. Você pode chamar ttyrec com esta opção, acesse o host remoto e invocar uuencode com ele para o arquivo que você deseja transferir.
-e comando
Especificar um comando a ser monitorado. Por exemplo, podemos informar que queremos gravar somente a execução do comando rm.
Exemplo:
# ttyrec -e rm
-n
Mostram na tela todos os comandos executados. Não há interatividade, apenas mostra tudo que foi feito.
Exemplo:
ttyplay -n ttyrecord
-s
Determinar a velocidade de reprodução do ttyrecord. Por padrão ele utiliza o valor 1, variando de 1 (mais lento) até 10 (rápido).
Exemplo:
ttyplay -s2 ttyrecord
Se desejarmos manipular a velocidade de reprodução, poderemos utilizar as seguintes letras:
  • S à Diminui a velocidade de reprodução.
  • F à Aumenta a velocidade de reprodução.
Criando um histórico de acesso
Após o entendimento do ttyrec e ttyplay, vamos criar um diretório e dentro dele irá conter os arquivos de gravação, para mantermos um histórico de ações de cada usuário.
Como padrão de extensão irei utilizar o final .tty nos arquivos criados, assim saberemos que os arquivos de log dele, por exemplo: erick-08:50-09-05-2013.tty.
Para criar um histórico de acesso, execute as seguintes linhas:
Primeiro, iremos criar o diretório ttyrec dentro de /var/log/
mkdir -m 777 /var/log/ttyrec
Agora iremos editar o arquivo /etc/profile, o qual será responsável por chamar o ttyrec, independente do usuário que for logar no sistema.
vim /etc/profile
Entre em modo de edição (aperte a letra i do teclado) e na última linha do arquivo adicione as seguintes linhas da imagem 4 e salve as alterações (Aperte uma vez o ESC do teclado e em seguida ).
ttyrec04
Estamos definindo nas linhas acima que quando o usuário log no sistema seja iniciado a gravação do que ele fizer e claro estou utilizando o comando date com as opções %H,%M,%d,%m%Y para criar um log de data.
Ao final, teremos um arquivo contendo o nome do usuário, a hora e minuto em que ele iniciou e a data. A imagem 5 mostra como irá ficar o formato do arquivo.
ttyrec05
Toda vez que o usuário logar, será criado um novo arquivo de gravação. A imagem 6 mostra que o usuário root realizou logon no mesmo dia, mas em hora diferente e que o usuário erick também fez login no sistema.
ttyrec06
Lembrando que para reproduzir a gravação, basta executar o comando ttyplay seguido do arquivo que deseja ver.
Agora a parte boa. Caso não estejamos na empresa, como teremos acesso a esses arquivos? Via SSH? Via FTP? Mas pare e pense, teremos que efetuar login para ter acesso a esses arquivos, então porque não configuramos para que de tempo em tempo ele envie um relatório para o nosso e-mail.
A próxima etapa deste tutorial será para configurar o crontab (Agendador de tarefas do Linux), para que seja enviado um e-mail ao final do dia com os logs de acesso de todos os usuários. Para isso acesse o seguinte link, onde irá explicar como você deve fazer para configurar o e-mail:
www.mundotibrasil.com.br/solucao-para-envio-de-email-de-forma-simples
Sendo que iremos realizar algumas alterações do tipo:
Adicionar as seguintes linhas dentro do arquivo de configuração do ssmtp (/etc/ssmtp/ssmtp.conf):
AuthUser=seuemail@gmail.com
AuthPass=suasenha
Conforme imagem 7.
 ttyrec07
Teremos que instalar o mpack (pacote adicional para que possamos enviar anexo) Caso não esteja instalado, execute a seguinte linha para quer você possa instalar.
apt-get install mpack
Após a instalação vamos realizar um teste de envio de e-mail com anexo, logo execute os seguintes comandos:
# echo “Funcionou o anexo” > teste.txt
mpack -s “Teste de envio de email” -a teste.txt martinezlinux@gmail.com
Claro que coloque seu e-mail. A opção -a serve para informar que será adicionado um anexo e o -s é o Assunto do e-mail.
Caso não funcione, verifique novamente todos os passos.
Criando um script para automatizar o envio das gravações
Nesta parte do tutorial, você irá criar um script e agendar no cron para que sejam enviados todos os dias as gravações. Claro que você pode configurar o envio de acordo com sua necessidade, como por exemplo: semana, mensal, trimestral, etc.
Primeiro, criar um arquivo dentro de /root/script/.
mkdir /root/script
vim /root/script/envgrav.sh
chmod +x /root/script/envgrav.sh
Segundo, dentro do script terá que conter as seguintes linhas:
ttyrec08
Na imagem 8, foram criados 4 variáveis, onde:
  • NOME à O nome que terá o arquivo após ser compactado.
  • LOG à Localização de onde estão os registros gravados.
  • EMAIL à Endereço de e-mail que irá receber as gravações.
  • ASS à Campo referente ao assunto.
Visão geral:
Após definir as variáveis, iremos compactar utilizando o comando tar depois disso será enviado o e-mail com o arquivo em anexo e em seguida deletar este arquivo compactado e os logs já cadastrados.
Caso deseje manter os históricos, basta comentar as linhas do rm.
Agora para automatizar isso tudo que fizemos, iremos utilizar o agendamento do Linux.
Primeiro, vamos editar o crontab:
vim /etc/crontab
Dentro do arquivo, você irá definir a hora que será executada o script envgrav.sh, seguindo a seguinte lógica:
ttyrec09
Minuto – Hora – Dia do Mês – Mês – Dia da semana – usuário – localização do script
Quando tiver *, significa que será feito sempre.
No exemplo acima, esta definido que as 23:59 de todos os dias referente a todos os meses durante as sextas feiras será executo o script.
Após realizar a edição salve o documento e por segurança reinicie o cron.
Execute o seguinte comando:
# service cron restart
Pronto, agora só ficar aguardando os logs.

TTYREC - Gravando Sessões do Terminal Linux

ttyrec é um software que permite gravar tudo que for feito no terminal do Linux.

Com ele é possível gravar a saída TTY de um programa em modo de texto, juntamente com a data e hora e, em seguida, exibi-lo como se fosse um vídeo. É muito útil para realizar auditorias em servidores Linux.

Este breve tutorial tem como objetivo demonstrar a instalação e a utilização do software em um ambiente rodando Debian 7, mas nada impede de ser instalado em outras distribuições.

Mais informações podem ser encontradas em:

PROCEDIMENTOS

Primeiramente, faça o login no servidor e como root rode os seguintes comandos:

# apt-get update
# apt-get install ttyrec

Feito isso o software já estará instalado e pronto para uso. Veja algumas das opções que podem ser utilizadas para gravar:

A opção "-a" permite anexar a saída para o arquivo ou ttyrecord, ao invés de substituí-lo.

Exemplo:

# ttyrec -a arquivo.rec

A opção "-u" chama automaticamente uudecode e salva sua saída quando os dados uuencoded aparecerem na sessão. Ele permitirá que você transfira arquivos de hosts remotos. Você pode chamar o ttyrec com esta opção, acessar o host remoto e invocar uuencode com ele para o arquivo que você deseja transferir.

Exemplo:

# ttyrec -u arquivo.rec

A opção "-e" é utilizada para que você possa monitorar a saída de um comando. Pode-se gravar apenas a execução do comando find.

Exemplo:

# ttyrec -e find

Para reproduzir as gravações utilizaremos o ttyplay. A opção "-n" mostra na tela a saída de todos os comandos que foram executados, parecidos com o comando history.

Exemplo:

# ttyplay -n arquivo.rec

A opção "-s" determina a velocidade de reprodução. Varia de 1 (velocidade normal) a 10 (rápido).

Exemplo:

# ttyplay -s 5 arquivo.rec

No comando acima o vídeo será reproduzido 5 vezes mais rápido que o normal.

Obs.: as opções citadas acima foram retiradas do manual do ttyrec, para mais acesse no seu terminal:

$ man ttyrec

SCRIPT

Criando um script para gravar todas as sessões do terminal, assim que um usuário logar no servidor

Primeiro iremos criar o diretório onde ficarão os arquivos do ttyrec. Eu, por exemplo, costumo usar o caminho /sis-bkp/audit/ttyrec, porém você pode modificar da forma que achar necessário.

# mkdir -m 777 -p /sis-bkp/audit/ttyrec

O comando acima cria todos os diretórios (opção "-p") e ainda seta a permissão 777 para o diretório ttyrec (opção "-m 777") para que todos os usuários do sistema consigam escrever no mesmo.

Para finalizar, precisaremos editar o arquivo /etc/profile, que será responsável por chamar o utilitário ttyrec para gravar as sessões de quaisquer usuários que se conectarem no servidor.

Primeiro, faça um backup do arquivo original para restaurar caso haja problemas:

# cp /etc/profile /etc/profile.bkp

Depois, com um editor de sua preferência, eu utilizei o Vim:

# vim /etc/profile

No final do arquivo, salte uma linha e inclua:

# Gravar sessões do terminal
if [ `id -u` ];
then
LOG="/sis-bkp/audit/ttyrec/log-${LOGNAME}-"`date +%d-%m-%Y_%H:%M`".rec"
ttyrec -u $LOG
fi
# Fim gravar sessões do terminal

Salve o arquivo e estará pronto. Toda vez que um usuário logar no sistema, será gerado um arquivo com extensão ".rec" dentro de /sis-bkp/audit/ttyrec com o seguinte formato "log-usuário-data_hora.rec".

Obs.: caso o seu servidor permita acesso via SSH para o usuário root, remova para que não haja confusão de quem logou no mesmo. Deixe apenas que usuários comuns possam logar via SSH, pois assim o log será gerado com o nome do usuário. 

quarta-feira, 9 de setembro de 2015

Criando VPN site-to-site, conectando diversas filiais a matriz com openVPN

Nosso cenário

Apresento uma solução de VPN para conectar diversas filiais a matriz, utilizando openVPN com chaves estáticas, biblioteca lzo para compressão e utilização do MRTG para monitorar o tráfego de cada filial.

Nesse cenário temos a matriz com IP fixo e as filiais com IPs dinâmicos. Mas nada impede de se utilizar IP dinâmico na matriz, você pode criar um DNS dinâmico.

Seguem as configurações utilizadas:

Distribuição usada: CentOS-5.5

Matriz:
  • IP externo matriz= 200.200.200.200
  • Rede interna matriz = 192.168.1.0/24

Filial1 (chamaremos de Espírito Santo):
  • Rede interna = 192.168.2.0/24

Filial2 (chamaremos de Rio de Janeiro):
  • Rede interna = 192.168.3.0/24

Filial3 (chamaremos de Minas Gerais):
  • Rede interna = 192.168.4.0/24

Versão openVPN: 2.1.2

Versão lançada em 15/08/2010, o changelog você pode ver aqui: http://www.openvpn.net/index.php/open-source/documentation/change-log/71-21-change-log.html

Efetue o download em:
Versão lzo: 2.0.3

Efetue o download em:

Instalação

Após efetuar o download da biblioteca lzo e dos sources do openVPN, vamos compilar e instalar (esse procedimento será idêntico na matriz e em todas as filiais).

Primeiro verifique se o pacote openSSL está instalado conforme o exemplo:

# rpm -q openssl
openssl-0.9.8e-12.el5_4.6

Se não estiver, execute o comando:

# yum install openssl

1. LZO

Entre no diretório onde você baixou os sources e descompacte o arquivo:

# tar zxvf lzo-2.03.tar.gz

Vamos compilar sem nenhuma configuração específica:

# ./configure
# make check
(para testar a biblioteca de compressão)
# make
# make install


2. openVPN

Entre no diretório onde você baixou os sources e descompacte o arquivo:

# tar zxvf openvpn-2.1.2.tar.gz

Por padrão irá utilizar o diretório /usr/local com basedir, altere se houver necessidade.

# ./configure
# make
# make install


Vamos ver se o openVPN foi instalado:

# type openvpn
openvpn is /usr/local/sbin/openvpn

Feito isso, vamos efetuar as configurações.

Configuração MATRIZ

Vamos configurar a VPN na nossa matriz, que irá receber todas as filiais.

Crie o diretório openvpn-matriz em /etc para criar a configuração para cada filial :

# mkdir /etc/openvpn-matriz
# chown openvpn.openvpn /etc/openvpn-matriz

(se sua instalação não criou esse usuário e grupo crie)

Vamos criar o diretório que irá armazenar os logs:

# mkdir /var/log/openvpn
# chown openvpn.openvpn /var/log/openvpn

Começamos o primeiro arquivo com configuração para a filial1 (Espírito Santo):

# vi matriz-espiritosanto.conf

Esse é conteúdo da configuração para esta filial:

## FABIO S. SCHMIDT - fabio@improve.inf.br
## INTERFACE VPN PARA CONEXAO DA MATRIZ COM A FILIAL ESPIRITO SANTO

## REDE LOCAL MATRIZ: 192.168.1.
## REDE LOCAL ESPIRITO SANTO: 192.168.2.

# Interface para a conexao, identificar para cada filail
# Ex.: tun0, tun1, tun2

dev tun0

# 10.0.0.2 IP que sera estabelicido para a matriz na vpn
# 10.0.0.1 IP que sera estabelecido para a filial1 na vpn
ifconfig 10.0.0.2 10.0.0.1

# Diretorio que contem as chaves e configuracoes
cd /etc/openvpn-matriz

# Indica qual chave utilizar para esta conexao
secret key-filial1

#Cada tunel deve utilizar uma porta diferente
port 5001

# Usuario e grupo que executam o daemon Openvpn
user openvpn
group openvpn

#Utilizar a biblioteca de compressao de dados
comp-lzo

#256-bit AES
#Se nao for setado o openvpn usa por padrao Blowfish, 128 bits
cipher AES-256-CBC

#Ativar rotas automaticamente
up /etc/openvpn-matriz/rotas-espiritosanto.up

#Envia um ping para a outra ponta para manter a conexao em firewalls statefull
ping 15

#Nivel de log
verb 4

#Manter o tunel ativo e chave em caso de perda de conexao
persist-tun
persist-key

#Escreve um pequeno status sobre a conexao, reescrito a cada minuto
status /var/log/openvpn/status-filial1.log

#Vamos utilizar um arquivo para o log da conexao de cada filial
log-append /var/log/openvpn/filial1.log

Criaremos agora a configuração para a filial2 (Rio de Janeiro):

# vi matriz-riodejaneiro.conf

## FABIO S. SCHMIDT - fabio@improve.inf.br
## INTERFACE VPN PARA CONEXAO DA MATRIZ COM A FILIAL RIO DE JANEIRO

## REDE LOCAL MATRIZ: 192.168.1.
## REDE LOCAL RIO DE JANEIRO: 192.168.3.

# Interface para a conexao, identificar para cada filail
# Ex.: tun0, tun1, tun2

dev tun1

# 10.2.0.2 IP que sera estabelicido para a matriz na vpn
# 10.2.0.1 IP que sera estabelecido para a filial2 na vpn
ifconfig 10.1.0.2 10.1.0.1

# Diretorio que contem as chaves e configuracoes
cd /etc/openvpn-matriz

# Indica qual chave utilizar para esta conexao
secret key-filial2

#Cada tunel deve utilizar uma porta diferente
port 5002

# Usuario e grupo que executam o daemon Openvpn
user openvpn
group openvpn

#Utilizar a biblioteca de compressao de dados
comp-lzo

#256-bit version of AES (Advanced Encryption Standard)
#Se nao for setado o openvpn usa por padrao Blowfish, 128 bits
cipher AES-256-CBC

#Ativar rotas automaticamente
up /etc/openvpn-matriz/rotas-riodejaneiro.up

#Envia um ping para a outra ponta para manter a conexao em firewalls statefull
ping 15

#Nivel de log
verb 3

#Manter o tunel ativo e chave em caso de perda de conexao
persist-tun
persist-key

#Escreve um pequeno status sobre a conexao, reescrito a cada minuto
status /var/log/openvpn/status-filial2.log

#Vamos utilizar um arquivo para o log da conexao de cada filial
log-append /var/log/openvpn/filial2.log

Criaremos agora a configuração para a filial3 (Minas gerais):

# vi matriz-riodejaneiro.conf

## FABIO S. SCHMIDT - fabio@improve.inf.br
## INTERFACE VPN PARA CONEXAO DA MATRIZ COM A FILIAL MINAS GERAIS

## REDE LOCAL MATRIZ: 192.168.1.
## REDE LOCAL MINAS GERAIS: 192.168.3.

# Interface para a conexao, identificar para cada filail
# Ex.: tun0, tun1, tun2

dev tun2

# 10.1.0.2 IP que sera estabelicido para a matriz na vpn
# 10.1.0.1 IP que sera estabelecido para a filial2 na vpn
ifconfig 10.2.0.2 10.2.0.1

# Diretorio que contem as chaves e configuracoes
cd /etc/openvpn-matriz

# Indica qual chave utilizar para esta conexao
secret key-filial3

#Cada tunel deve utilizar uma porta diferente
port 5003

# Usuario e grupo que executam o daemon Openvpn
user openvpn
group openvpn

#Utilizar a biblioteca de compressao de dados
comp-lzo

#256-bit version of AES (Advanced Encryption Standard)
#Se nao for setado o openvpn usa por padrao Blowfish, 128 bits
cipher AES-256-CBC

#Ativar rotas automaticamente
up /etc/openvpn-matriz/rotas-minasgerais.up

#Envia um ping para a outra ponta para manter a conexao em firewalls statefull
ping 15

#Nivel de log
verb 4

#Manter o tunel ativo e chave em caso de perda de conexao
persist-tun
persist-key

#Escreve um pequeno status sobre a conexao, reescrito a cada minuto
status /var/log/openvpn/status-filial3.log

#Vamos utilizar um arquivo para o log da conexao de cada filial
log-append /var/log/openvpn/filial3.log

Vamos gerar as chaves de criptografia de cada filial:

# openvpn --genkey --secret /etc/openvpn-matriz/key-filial1
# openvpn --genkey --secret /etc/openvpn-matriz/key-filial2
# openvpn --genkey --secret /etc/openvpn-matriz/key-filial3


Sete o usuário e grupo openvpn como proprietário dos 3 aquivos das chaves, e sete a permissão para 400.

Você pode ter visto que adicionamos o comando "up /etc/openvpn-matriz/rotas-NOMEDAFILIAL.up" para criar as rotas para cada filial, segue o conteudo de cada um (obviamente o usuario openvpn deve ter permissão para execução):

# more rotas-espiritosanto.up

#!/bin/bash
route add -net 192.168.2.0 netmask 255.255.255.0 gw 10.0.0.1

# more rotas-riodejaneiro.up

#!/bin/bash
route add -net 192.168.3.0 netmask 255.255.255.0 gw 10.1.0.1

# more rotas-minasgerais.up

#!/bin/bash
route add -net 192.168.4.0 netmask 255.255.255.0 gw 10.2.0.1

Estes são os comandos para inicializar as conexões (você pode criar um script para inicializar):

# openvpn --config /etc/openvpn-matriz/matriz-espiritosanto.conf --script-security 3 system -daemon &
# openvpn --config /etc/openvpn-matriz/matriz-minasgerais.conf --script-security 3 system -daemon &
# openvpn --config /etc/openvpn-matriz/matriz-riodejaneiro.conf --script-security 3 system -daemon &


Assim que você inicializar, cada conexão irar gerar o seus arquivos de log e status no diretório que configuramos: /var/log/openvpn

Configuração FILIAIS

Nas filiais, após seguir os passos de instalação, vamos criar o diretório /etc/opevpn-filial que irá conter o arquivo para conexão com a matriz.

# mkdir /etc/openvpn-filial
# chown openvpn.openvpn /etc/openvpn-filial

(se a instalação não criou esse usuário e grupo crie)

Vamos criar o diretório para os logs:

# mkdir /var/log/openvpn
# chown openvpn.openvpn /var/log/openvpn


Copie para este diretório de cada filial a sua respectiva chave:
  • key-filial1 - Espírito Santo
  • key-filial2 - Rio de Janeiro
  • key-filial3 - Minas gerais

No diretório criado, vamos criar o arquivo matriz.conf.

Vamos ao exemplo com Espírito Santo (Filial1), está bem comentado para facilitar a criação das configurações das outras filiais:

## FABIO S. SCHMIDT - fabio@improve.inf.br
## INTERFACE VPN PARA CONEXAO DA FILIAL XXXX COM A MATRIZ

## REDE LOCAL MATRIZ: 192.168.1.
## REDE LOCAL ESPIRITO SANTO: 192.168.2.

#Endereço do servidor Matriz
#remote IP

remote 200.200.200.200

# Interface para a conexao
# Ex.: tun0, tun1, tun2
#Em cada filial so havera uma interface tun, pode setar todas como tun0
dev tun0

# Aqui é o inverso da MATRIZ
ifconfig 10.0.0.1 10.0.0.2

# Diretorio que contem as chaves e configuracoes
cd /etc/openvpn-filial

# Indica qual chave utilizar para esta conexao
secret key-filial1

#protocolo
proto udp
#Cada tunel deve utilizar uma porta diferente
#Coloque a porta conforme a configuracao de cada filial na matriz
port 5001

# Usuario e grupo que executam o daemon Openvpn
user openvpn
group openvpn

#Utilizar a biblioteca de compressao de dados
comp-lzo

#256-bit version of AES (Advanced Encryption Standard)
#Se nao for setado o openvpn usa por padrao Blowfish, 128 bits
cipher AES-256-CBC

#Ativar rotas automaticamente
up /etc/openvpn-filial/rotas-matriz.up

#Envia um ping para a outra ponta para mantera a conexao em firewalls statefull
ping 15

#Nivel de log
verb 4

#Manter o tunel ativo e chave em caso de perda de conexao
persist-tun
persist-key

#Escreve um pequeno status sobre a conexao, reescrito a cada minuto
status /var/log/openvpn/status-matriz.log

#Nao vamos enviar as mensagens para o syslog
log-append /var/log/openvpn/matriz.log

Como você pode ver, setamos o comando "/etc/openvpn-matriz/rotas-matriz.up" que irá levantar as rotas para a rede da matriz, como o exemplo:

(Filial1)

#!/bin/bash
route add -net 192.168.1.0 netmask 255.255.255.0 gw 10.0.0.2

Lembrando que 192.168.1.0/24 é a rede local na Matriz e 10.0.0.2 o IP da VPN setado para a matriz para a conexão da Filial1.

Este é o script para inicializar a VPN em cada filial:

openvpn --config /etc/openvpn-filial/matriz.conf --script-security 3 system -daemon &

Feito isso, nossa vpn está pronta para funcionar em cada filial, não vou entrar em detalhes de liberação de portas no firewall, pois pode ser encontrada muita documentação sobre isso aqui no VOL.

Já estou preparando um artigo para vocês monitorarem o tráfego na vpn de cada filial com MRTG.

Qualquer dúvida ou contribuição por favor deixe seu comentário, e visite meu blog: fonte:
http://www.vivaolinux.com.br/artigo/Criando-VPN-sitetosite-conectando-diversas-filiais-a-matriz-com-openVPN

sexta-feira, 21 de agosto de 2015

Instalando o Zabbix Server e Zabbix Agent no Raspberry Pi





Instalando o Zabbix Server e Zabbix Agent no Raspberry Pi
Olá pessoal!
Na Byte Livre nós utilizamos sempre o que há de mais novo em tecnologia, para isso realizamos incontáveis testes (em novos produtos e novas ferramentas) antes de colocar algo em produção.
Um dos testes que estamos fazendo e que estamos tendo um grande resultado é a utilização do Raspberry Pi (no caso o modelo B+) como servidor Zabbix.
Pela limitação de hardware do nosso amigo, essa solução não é aconselhável para grandes redes, porém em pequenas redes com até 5 servidores sendo monitorados, ele está se saindo muito bem!
Mas você deve estar se perguntando: Porque não virtualizar uma máquina para isso? Não é mais fácil usar então um desktop para essa função?
Sim! Você pode virtualizar uma máquina para isso e pode também utilizar um computador que esteja parado para essa função. Porém o Raspberry Pi tem algumas vantagens que no final das contas decide essa disputa:
 Preço: por 200 reais você consegue comprar um Raspberry Pi novinho!
 Comodidade: o Raspberry Pi não ocupa espaço (parece que não, mas para algumas empresas isso é extremamente importante).
 Fácil manutenção: o Raspberry Pi utiliza um cartão SD para o armazenamento dos arquivos, sendo assim, é muito simples criar um backup completo de todo o sistema operacional e repor esse backup acaba sendo mais rápido ainda.
 Baixo consumo de energia: no preço que estamos pagando a energia, nem preciso dizer que esse fator importa, e MUITO!
 Porta GPIO: para mim, essa é a principal vantagem. Com a porta GPIO você pode agregar mais funções ao seu Raspberry Pi além de servidor Zabbix. Não vou entrar afundo aqui pois teremos artigos futuros para isso!
Convencido de que o Raspberry Pi como servidor Zabbix é uma opção interessante, vamos colocar a mão na massa agora!
Como não é o escopo deste artigo descrever os primeiros passos com o Raspberry Pi, para seguir adiante é necessário que você esteja com ele em funcionamento. No nosso exemplo, estamos utilizando o Raspbian como distribuição Linux.
Vale lembrar que iremos utilizar o MySQL (MariaDB) como Banco de Dados pois o SQLite3 ainda não possui um suporte oficial para o Zabbix Server. Utilize um cartão SD de pelo menos 8Gb.
Vamos lá!
Atualize o sistema:
# apt-get update
# apt-get upgrade
Instale os pacotes necessários para a instalação do Zabbix Server e Zabbix Agent:
# apt-get install build-essential snmp libiksemel-dev vim libssh2-1-dev libssh2-1 libopenipmi-dev libsnmp-dev wget libcurl4-gnutls-dev fping libxml2 libxml2-dev curl libcurl3-gnutls libcurl4-gnutls-dev sudo apache2 php5 libapache2-mod-php5 php5-gd php-net-socket php5-ldap php5-curl php5-mysql mysql-server mysql-client libmysqld-dev
Baixe a última versão do Zabbix (na época deste artigo: 2.4.6)
# wget http://ufpr.dl.sourceforge.net/project/zabbix/ZABBIX%20Latest%20Stable/2.4.6/zabbix-2.4.6.tar.gz
Descompacte o arquivo baixado:
# tar -zxvf zabbix-2.4.6.tar.gz
Acesse a pasta criada:
# cd zabbix-2.4.6/
Configure a instalação:
# ./configure --enable-server --enable-agent --with-mysql --with-net-snmp --with-jabber=/usr --with-libcurl --with-libxml2 --with-openipmi
Instale:
# make install
Adicione o usuário  zabbix:
# adduser zabbix
Reinicie o MySQL:
/etc/init.d/mysqld restart
Acesse o MySQL:
mysql -u root -p
Crie o banco de dados do zabbix:
mysql> create database zabbix character set utf8;
Dê permissão para o usuário zabbix:
mysql> grant all privileges on zabbix.* to zabbix@'localhost' identified by 'senha';
Saia do mysql:
mysql> exit
Importe os SQL’s do zabbix para o banco de dados:
cat database/mysql/schema.sql | mysql -u zabbix -p zabbix
cat database/mysql/images.sql | mysql -u zabbix -p zabbix
cat database/mysql/data.sql | mysql -u zabbix -p zabbix
Edite o arquivo de configuração do zabbix-server:
# nano /usr/local/etc/zabbix_server.conf
DBHost=localhost
DBName=zabbix
DBUser=zabbix
DBPassword=senha
Copie os arquivos de inicialização do Zabbix Server e do Zabbix Agent:
# cp misc/init.d/debian/zabbix-server /etc/init.d/
# cp misc/init.d/debian/zabbix-agent /etc/init.d/
Dê permissão para os arquivos:
# chmod 775 /etc/init.d/zabbix-server
# chmod 775 /etc/init.d/zabbix-agent
Coloque os scripts na inicialização do sistema:
# update-rc.d zabbix-server defaults
# update-rc.d zabbix-agent defaults
Crie a pasta para o zabbix-web:
# mkdir /var/www/zabbix
Copie os arquivos do zabbix-web para a pasta zabbix:
# cp -a frontends/php/* /var/www/zabbix/
Dê as devidas propriedades a pasta zabbix:
# chown -R www-data:www-data /var/www/zabbix
Inicie os serviços:
# /etc/init.d/zabbix-server start
# /etc/init.d/zabbix-agent start

Altere as configurações do PHP para optimizar a performance do Zabbix:
# nano /etc/php5/apache2/php.ini
max_execution_time = 300
max_input_time = 600
post_max_size = 16M 
date.timezone = America/Sao_Paulo
Reinicie o apache2:
# /etc/init.d/apache2 restart
Acesse o endereço: http://ip_do_server/zabbix
Complete a configuração conforme as imagens:



Zabbix Server no Raspberry Pi
Zabbix Server no Raspberry Pi
Zabbix Server no Raspberry Pi
Zabbix Server no Raspberry Pi
Zabbix Server no Raspberry Pi
Zabbix Server no Raspberry Pi
Zabbix Server no Raspberry Pi
Zabbix Server no Raspberry Pi
Zabbix Server no Raspberry Pi
Zabbix Server no Raspberry Pi
Zabbix Server no Raspberry Pi
Zabbix Server no Raspberry Pi
Zabbix Server no Raspberry Pi
Zabbix Server no Raspberry Pi
Zabbix Server no Raspberry Pi
Zabbix Server no Raspberry Pi

Desta maneira o seu Raspberry Pi funciona agora como um poderoso servidor Zabbix!
Nos próximos artigos, iremos utilizar as portas GPIO do Raspberry Pi em conjunto com o Zabbix!
Caso você tenha se interessado por este artigo, você provavelmente irá se interessar pelo nosso Curso de Zabbix (básico e intermediário) com OCS Inventory e pelo nosso Curso de Zabbix Avançado!
fonte: http://bytelivre.net/blog/instalando-o-zabbix-server-e-zabbix-agent-no-raspberry-pi/