terça-feira, 30 de dezembro de 2014

Monitorando Rede com Zabbix no Debian 7

Introdução / Pré-Instalação / Configuração


Introdução

Neste tutorial, abordarei uma ferramenta muito interessante que testo por alguns meses, mas já posso dizer que é uma das melhores ferramentas para monitoramento de redes, seja ela pequena ou grande.

Criado para monitorar disponibilidade e desempenho de redes, ele é capaz de monitorar e coletar muita coisa. Podemos monitorar, por exemplo, recursos de hardware (velocidade do cooler, temperatura do processador, temperatura do HD, etc), recursos lógicos (Processamento, memória utilizada, IO dos discos, partições, trafego de rede, etc) ambientes (temperatura e umidade do seu CPD ou de outros locais).

Enfim, tudo o que você consegue monitorar por IPMI, SNMP, Simple Check, entre outras maneiras de monitoramento de Servidores, Sensores, Switchs, Roteadores, No-Breaks, enfim, muita coisa pode ser monitorado pelo nosso amigo Zabbix. Digo amigo, porque esse 'cara' é muito útil para nós, profissionais de TI.

Então, você me pergunta: Jeferson, para que vou querer monitorar minha rede? Por que?

Respondo: por vários motivos! Imagine você sem ferramenta nenhuma de monitoramento? Como é que você vai provar e convencer o seu gerente/diretor que você precisa de um upgrade do seu servidor porque o 'coitadinho' não está aguentando mais processar o volume de dados da sua empresa?

Como é que você vai convencer o seu gerente/diretor que você precisa aumentar a sua banda, porque o seu link atual não está mais dando conta do volume de trafego que tem em sua empresa?

Talvez essa não seja solução garantida, mas com gráficos de monitoramento, pode acreditar que fica muito mais fácil. Estes são uns dos exemplos, pois você poderia utilizar, por exemplo, para saber quando alguma coisa está errada em sua rede, um switch/roteador desligado, um servidor reiniciando sozinho, um broadcast muito alto na sua rede, enfim, você consegue monitorar tudo isso, ajudando e muito no tempo de resolução de um problema, deixando a sua infra-estrutura o mais disponível possível.

Então, vamos à instalação dessa ferramenta maravilhosa!

Neste tutorial estou usando o Debian 7 como servidor/cliente. Caso tenha preferencia por outra distribuição, verifique e adapte os comandos.

Pré-Instalação

Antes de começar a instalação do Zabbix, precisamos antes atender a alguns pré-requisitos para a instalação, como compilador, Java, MySQL, PHP, Apache e algumas bibliotecas.

Para instalarmos os pacotes necessários, vamos utilizar os seguintes comandos:

# echo "deb http://ftp.br.debian.org/debian stable main" >> /etc/apt/sources.list
# apt-get update

# apt-get install -y --force-yes make flex gcc gpp apache2 php5 php5-mysql libapache2-mod-php5 php5-gd php-net-socket libpq5 libpq-dev snmp libiksemel-dev libcurl4-gnutls-dev vim libssh2-1-dev libssh2-1 libopenipmi-dev libsnmp-dev mysql-server-5.5 mysql-client wget libmysqld-dev curl fping openjdk-6-jdk


Obs: na instalação do MySQL, será solicitada a senha do root.

Pronto, depois de instalarmos as dependências para a instalação do Zabbix, vamos criar os diretórios onde ficarão os arquivos.

# mkdir -pv /etc/zabbix/install
# cd /etc/zabbix/install


Já dentro do diretório, vamos baixar e descompactar o pacote do Zabbix:

# wget http://sourceforge.net/projects/zabbix/files/ZABBIX%20Latest%20Stable/2.0.8/zabbix-2.0.8.tar.gz
# tar -xzvf zabbix-2.0.8.tar.gz

Pronto, agora vamos às configurações.

Configuração

O que devemos fazer agora, é criar e configurar a base do MySQL que será usada pelo Zabbix, criar um usuário para o Zabbix no Unix e configurar o Apache/PHP.

# mysql –u root –p

 mysql> create database zabbix character set utf8;
 mysql> GRANT ALL PRIVILEGES ON zabbix.* TO zabbix@localhost IDENTIFIED BY 'password' WITH GRANT OPTION;
 mysql> quit;

Obs: em password, coloque a senha da base de dados para o usuário zabbix que não terá ligação com o usuário do Unix.

# useradd -s /bin/false zabbix

Vamos agora alterar algumas configurações do Apache/PHP, editando o seguinte arquivo:

# pico /etc/php5/apache2/php.ini

date.timezone = "America/Brasilia"
max_execution_time = 300
max_input_time = 300
post_max_size = 16M

Como alteramos as configurações do Apache/PHP, vamos reinicia-lo:

# /etc/init.d/apache2 restart

Instalação


 Vamos começar, realmente, a instalação do Zabbix. O primeiro passo é popular a base de dados que criamos anteriormente:

# cat /etc/zabbix/install/zabbix-2.0.8/database/mysql/schema.sql | mysql -u zabbix -p<password> zabbix
# cat /etc/zabbix/install/zabbix-2.0.8/database/mysql/images.sql | mysql -u zabbix -p<password> zabbix
# cat /etc/zabbix/install/zabbix-2.0.8/database/mysql/data.sql | mysql -u zabbix -p<password> zabbix 


Depois de popular o banco de dados, vamos configurar o pacote para a instalação. Para isso, navegue até o deretório "/etc/zabbix/install/zabbix-2.0.8/":

# ./configure --prefix=/etc/zabbix --enable-server --enable-agent --enable-java --with-mysql --with-net-snmp --with-jabber --with-libcurl=/usr/bin/curl-config --with-ssh2 --with-openipmi

Onde:
  • --prefix=/etc/zabbix → Indicando o diretório dos arquivos de instalação.
  • --enable-server → Habilitando o servidor Zabbix.
  • --enable-agent → Habilitando o agente Zabbix.
  • --enable-java → Habilitando o Java.
  • --with-mysql → Indicando qual será a nossa base de dados, no nosso caso o MySQL.
  • --with-net-snmp → Habilitando o monitoramento SNMP.
  • --with-jabber → Habilitando o envio de mensagens via Jabber.
  • --with-libcurl=/usr/bin/curl-config → Habilitando a biblioteca Curl e indicando o seu diretório.
  • --with-ssh2 → Habilitando o modulo SSH2 para comandos remotos e monitoramento via SSH.
  • --with-openipmi → Habilitando o monitoramento IPMI.

Obs: caso queira verificar todos os módulos disponíveis no Zabbix, execute o comando

$ ./configure --help

Depois de configurarmos o pacote, vamos compilar e instalar:

# make; make install

Vamos editar o arquivo "/etc/services", adicionando as portas necessárias para comunicação do Zabbix:

# pico /etc/services

zabbix-agent    10050/tcp #Zabbix Agent
zabbix-agent    10050/udp #Zabbix Agent
zabbix-trapper  10051/tcp #Zabbix Trapper
zabbix-trapper  10051/udp #Zabbix Trapper

Obs: como é possível reparar neste arquivo, as portas estão em ordem, adicione as linhas acima nesta ordem. Lembrando que, em alguns casos, a linha é adicionada automaticamente, então, tente localiza-las antes de inserir manualmente.

Agora, vamos criar alguns links para ficar mais fácil a localização dos arquivos de configuração, tanto do cliente, como do servidor Zabbix:

# ln -s /etc/zabbix/etc/zabbix_agentd.conf /etc/zabbix
# ln -s /etc/zabbix/etc/zabbix_server.conf /etc/zabbix


Vamos editar o arquivo "/etc/zabbix/zabbix_agentd.conf", alterando os seguintes valores:

# pico /etc/zabbix/zabbix_agentd.conf

PidFile=/tmp/zabbix_agentd.pid
LogFile=/tmp/zabbix_agentd.log
LogFileSize=2
DebugLevel=3
EnableRemoteCommands=1
LogRemoteCommands=1
Server=127.0.0.1
ListenPort=10050
Hostname=Informe_o_nome_do_seu_servidor

Depois, vamos alterar as configurações do arquivo "/etc/zabbix/zabbix_agentd.conf", que é a configuração do servidor Zabbix:

# pico /etc/zabbix/zabbix_server.conf

ListenPort=10051
LogFile=/tmp/zabbix_server.log
LogFileSize=2
PidFile=/tmp/zabbix_server.pid
DBHost=localhost
DBName=zabbix
DBUser=zabbix
DBPassword=senha do zabbix para acessar o banco de dados
StartIPMIPollers=1
StartDiscoverers=5
FpingLocation=/usr/sbin/fping

Obs: certifique-se que o caminho do fping da sua instalação é realmente igual ao do nosso exemplo com o comando whereis fping, para que não haja problemas posteriormente.

Vamos configurar agora, a parte dos frontends:

# mkdir /var/www/zabbix
# cp -R /etc/zabbix/install/zabbix-2.0.8/frontends/php/* /var/www/zabbix/
# chown -R www-data:www-data /var/www/zabbix/
# /etc/init.d/apache2 restart


Agora, precisamos criar os scripts de start-stop-restart, tanto do servidor, quanto do cliente Zabbix:

# pico /etc/init.d/zabbix_agentd

#!/bin/sh
#
# Zabbix agent start/stop script.
#
# Written by Alexei Vladishev <alexei.vladishev@zabbix.com>.

NAME=zabbix_agentd
PATH=/bin:/usr/bin:/sbin:/usr/sbin:/home/zabbix/bin
DAEMON=/etc/zabbix/sbin/${NAME}
DESC="Zabbix agent daemon"
PID=/tmp/$NAME.pid
test -f $DAEMON || exit 0
set -e
case "$1" in
  start)
        echo "Starting $DESC: $NAME"
        start-stop-daemon --oknodo --start --pidfile $PID \
                 --exec $DAEMON
        ;;
  stop)
        echo "Stopping $DESC: $NAME"
        start-stop-daemon --oknodo --stop  --pidfile $PID \
                --exec $DAEMON
        ;;
  restart|force-reload)
        #
        #       If the "reload" option is implemented, move the "force-reload"
        #       option to the "reload" entry above. If not, "force-reload" is
        #       just the same as "restart".
        #
#       echo -n "Restarting $DESC: zabbix_agent"

        $0 stop
        $0 start
#       start-stop-daemon --stop --quiet --pidfile \
#               /tmp/$NAME.pid --user zabbix --exec $DAEMON
#       sleep 1
#       start-stop-daemon --start --quiet --pidfile \
#               /tmp/$NAME.pid --user zabbix --exec $DAEMON
#       echo "$NAME."

        ;;
  *)
        N=/etc/init.d/$NAME
        # echo "Usage: $N {start|stop|restart|force-reload}" >&2
        echo "Usage: $N {start|stop|restart|force-reload}" >&2
        exit 1
        ;;
esac
exit 0

# pico /etc/init.d/zabbix_server

#!/bin/sh
#
# Zabbix daemon start/stop script.
#
# Written by Alexei Vladishev <alexei.vladishev@zabbix.com>.

NAME=zabbix_server
PATH=/bin:/usr/bin:/sbin:/usr/sbin:/home/zabbix/bin
DAEMON=/etc/zabbix/sbin/${NAME}
DESC="Zabbix server daemon"
PID=/tmp/$NAME.pid
test -f $DAEMON || exit 0
set -e
case "$1" in
  start)
        echo "Starting $DESC: $NAME"
        start-stop-daemon --oknodo --start --pidfile $PID \
                --exec $DAEMON
        ;;
  stop)
        echo "Stopping $DESC: $NAME"
        start-stop-daemon --oknodo --stop --pidfile $PID \
                --exec $DAEMON
        ;;
  restart|force-reload)
        #
        #       If the "reload" option is implemented, move the "force-reload"
        #       option to the "reload" entry above. If not, "force-reload" is 10
        #       just the same as "restart".
        #
#       echo -n "Restarting $DESC: zabbix_server"

        $0 stop
        $0 start
#       start-stop-daemon --stop --quiet --pidfile \
#               /tmp/$NAME.pid --user zabbix --exec $DAEMON
#       sleep 1
#       start-stop-daemon --start --quiet --pidfile \
#               /tmp/$NAME.pid --user zabbix --exec $DAEMON
#       echo "$NAME."

        ;;
  *)
        N=/etc/init.d/$NAME
        # echo "Usage: $N {start|stop|restart|force-reload}" >&2
        echo "Usage: $N {start|stop|restart|force-reload}" >&2
        exit 1
        ;;
esac
exit 0

Vamos dar permissão aos scripts e iniciar o agente e o servidor Zabbix:

# chmod +x /etc/init.d/zabbix_server /etc/init.d/zabbix_agentd
# /etc/init.d/zabbix-server start
# /etc/init.d/zabbix-agentd start


Vamos configurar a inicialização do sistema para que os serviços sejam devidamente iniciados junto com o sistema:

# update-rc.d -f zabbix_server defaults
# update-rc.d -f zabbix_agentd defaults


Pronto, já fizemos todas as configurações necessárias no Unix. Vamos agora à parte gráfica do negócio, para isso, devemos acessar o endereço:

http://ip_do_servidor/zabbix

Uma janela semelhante a essa será exibida. Clique em: Next

Verifique todas as dependências e se estiver tudo Ok, clique em: Next
Preencha os campos para conexão com o banco de dados, clique em Test connection para testar a conexão e, se estiver Ok, clique em: Next

Deixe padrão o nome do host e a porta, e em Name, insira o nome do seu servidor e clique em: Next

Confira os dados inseridos e clique em: Next

Pronto, o Zabbix já está configurado. Logo após clicar em Finish, será exibida a tela de login.

Por padrão:
  • Usuário: admin
  • Senha: zabbix
Linux: Monitorando Rede com Zabbix no Debian 7   Linux: Monitorando Rede com Zabbix no Debian 7
Por padrão, o monitoramento via agente no servidor Zabbix é desabilitado.

Para habilita-lo, vá em Configuration e depois em Host, logo você visualizará o servidor. E em Status, estará como Not monitored, basta clicar em cima que o status ficará como Monitored

Instalação e Configuração Clientes Linux e Windows


Cliente Linux

Antes de configurarmos o cliente, devemos criar os diretórios que irão alocar os arquivos de instalação:

# mkdir -pv /etc/zabbix/install
# cd /etc/zabbix/install


Já dentro do diretório, vamos baixar e descompactar o pacote do Zabbix:
# wget http://sourceforge.net/projects/zabbix/files/ZABBIX%20Latest%20Stable/2.0.8/zabbix-2.0.8.tar.gz
# tar -xzvf zabbix-2.0.8.tar.gz
# cd zabbix-2.0.8/


O próximo passo, seria a compilação dos módulos que vamos instalar, mas antes, vamos instalar o gcc e o make:

# apt-get update
# apt-get install –y gcc make


Depois de instalado o gcc e o make, vamos compilar nossa instalação:

# ./configure --prefix=/etc/zabbix --enable-agent --enable-static

Onde:
  • --prefix=/etc/zabbix → Indicando o diretório dos arquivos de instalação.
  • --enable-agent → Habilitando o agente Zabbix.
  • --enable-static → Criando links estáticos para os binários.

Depois de compilado, vamos instalar:

# make; make install

Vamos agora, depois de instalado, criar alguns links para facilitar o acesso ao arquivo de configuração do agente:

# ln -s /etc/zabbix/etc/zabbix_agentd.conf /etc/zabbix/

Agora, vamos configurar o script de gerenciamento (start / stop / ... /):

# pico /etc/init.d/zabbix_agentd

#!/bin/sh
#
# Zabbix agent start/stop script.
#

NAME=zabbix_agentd
PATH=/bin:/usr/bin:/sbin:/usr/sbin:/home/zabbix/bin
DAEMON=/etc/zabbix/sbin/${NAME}
DESC="Zabbix agent daemon"
PID=/tmp/$NAME.pid
test -f $DAEMON || exit 0
set -e
case "$1" in
  start)
        echo "Starting $DESC: $NAME"
        start-stop-daemon --oknodo --start --pidfile $PID \
                 --exec $DAEMON
        ;;
  stop)
        echo "Stopping $DESC: $NAME"
        start-stop-daemon --oknodo --stop  --pidfile $PID \
                --exec $DAEMON
        ;;
  restart|force-reload)
        #
        #       If the "reload" option is implemented, move the "force-reload"
        #       option to the "reload" entry above. If not, "force-reload" is
        #       just the same as "restart".
        #
#       echo -n "Restarting $DESC: zabbix_agent"

        $0 stop
        $0 start
#       start-stop-daemon --stop --quiet --pidfile \
#               /tmp/$NAME.pid --user zabbix --exec $DAEMON
#       sleep 1
#       start-stop-daemon --start --quiet --pidfile \
#               /tmp/$NAME.pid --user zabbix --exec $DAEMON
#       echo "$NAME."

        ;;
  *)
        N=/etc/init.d/$NAME
        # echo "Usage: $N {start|stop|restart|force-reload}" >&2
        echo "Usage: $N {start|stop|restart|force-reload}" >&2
        exit 1
        ;;
esac
exit 0

Vamos aplicar permissão de execução ao script:

# chmod +x /etc/init.d/zabbix_agentd

Vamos alterar algumas configurações para que o agente funcione corretamente:

# pico /etc/zabbix/ zabbix_agentd.conf

PidFile=/tmp/zabbix_agentd.pid
LogFile=/tmp/zabbix_agentd.log
LogFileSize=1
EnableRemoteCommands=1
LogRemoteCommands=1
Server=IP_SERVIDOR_ZABBIX
ListenPort=10050
StartAgents=3
#ServerActive=127.0.0.1
Hostname=NOME_CLIENTE

Obs: note que em Server, você deve colocar o IP do seu servidor Zabbix, deve também comentar a linha ServerActive, e em Hostname, você deve colocar o nome do seu cliente, do mesmo jeito que aparece no shell.

Antes de iniciarmos o nosso agente, vamos criar um usuário no sistema para o Zabbix:

# useradd -s /bin/false zabbix

Agora vamos, finalmente, iniciar nosso agente:

# /etc/init.d/zabbix_agente start

Se tudo estiver OK, o agente será iniciado. Vamos configura-lo para iniciar junto com o sistema:

# update-rc.d -f zabbix_agentd defaults

Pronto, o nosso agente está configurado no nosso cliente. Basta configurar no console de administração do Zabbix para iniciar o monitoramento.

Obs: lembrando que caso haja um Firewall rodando no cliente, é necessário abrir as portas 10050/10051 UDP e 10050/10051 TCP, para que o servidor consiga comunicar-se com o agente.

Cliente Windows

Para configurarmos o agente no Windows, devemos primeiramente criar um diretório chamado ZABBIX em "C:", depois, devemos coletar alguns arquivos que estão no pacote que baixamos, tanto para instalação do servidor, quanto para a instalação do cliente Linux.

Depois de descompactado, entre no diretório bin, dentro deste diretório há duas pastas (win32 e win64). Verifique a arquitetura do seu Sistema Operacional e copie todo o conteúdo da pasta correspondente para a pasta ZABBIX que criamos anteriormente.

Você pode usar o Filezilla, por exemplo, para transferir do Linux para o Windows ou baixar o pacote diretamente no Windows pelo link para download do pacote Zabbix, usando o 7-zip ou Winrar para descompactar.

Depois de todos os arquivos transferidos, devemos criar o nosso arquivo de configuração com o nome "zabbix_agentd.conf" que deverá ter o seguinte conteúdo:

# This is a config file for Zabbix Agent (Windows)
# To get more information about Zabbix, go to http://www.zabbix.com

############ GENERAL PARAMETERS #################


LogFile=c:\ZABBIX\zabbix_agentd.log
DebugLevel=3
Server=IP_SERVER
StartAgents=5
Hostname=HOSTNAME_CLIENTE

############ ADVANCED PARAMETERS #################

Timeout=3

Obs: em IP_SERVER, coloque o que IP do seu servidor Zabbix e em HOSTNAME_CLIENTE, coloque o nome do cliente que está sendo configurado.

Agora, vamos abrir o prompt de comando como administrador, e navegar até o diretório "C:\ZABBIX" que criamos anteriormente. Para isso, digite o seguinte comando:

C:\Windows\System32> cd C:\ZABBIX

Obs: note que o prefixo "C:\Windows\System32>", é somente para indicar que estamos dentro do Prompt de comando do Windows.

Depois vamos criar o serviço:

C:\ZABBIX> zabbix_agentd.exe -i -c zabbix_agentd.conf

Agora vamos iniciar o serviço:

C:\ZABBIX> zabbix_agentd.exe -s -c zabbix_agentd.conf

Pronto, o nosso agente está configurado no nosso cliente. Basta configurar no console de administração do Zabbix para iniciar o monitoramento.

Obs: assim como no GNU/Linux, caso haja um Firewall rodando, deve-se abrir as portas 10050/10051 UDP e 10050/10051 TCP, para que o servidor Zabbix consiga comunicar-se com o agente.
 

Criando um Host no Console de Administração


Depois de configurarmos corretamente os agentes, vamos criar os Hosts no console de administração do Zabbix, para que seja iniciado o monitoramento.

No console de administração, posicione o mouse sobre Configuration e clique em Hosts, já na janela de configuração de Hosts, clique em Create Host e você verá uma janela semelhante a essa:
Linux: Monitorando Rede com Zabbix no Debian 7

Preencha todos os dados conforme sua necessidade. Depois de preenchido, devemos definir o que será monitorado, para isso, é utilizado os templates.

Para definirmos um template ao nosso Host, clique no guia Templates e depois clique em Add. Selecione o template desejado, clique em Select e depois em Save, para finalizar a configuração do Host.

Há vários outros parâmetros que podem ser configurados, mas para somente iniciarmos o monitoramento, o que fizemos já é o suficiente.

Concluindo

Com os passos acima, você já terá um servidor Zabbix operacional em sua rede, podendo monitorar tudo que possua IP.

Em próximas oportunidades, postarei a instalação de clientes em Slackware, CentOS e se houver oportunidade e demanda, posso postar a instalações do Zabbix/Cliente em outras distribuições, além de configuração de SNMP nos Switchs, Roteadores e outros Devices para monitara-los também.

Obrigado pela atenção.


Para baixar o tutorial em PDF, clique aqui.

Testado no Debian 7 / Zabbix 2.0.8 para Servidor | Linux Debian 7, Ubuntu Server, Windows Server 2003, 2008 e 7 para Cliente.

fonte:

Envio de e-mail criptografado pelo Zabbix usando Postix


Introdução


Prezados colaboradores,

Em primeiro lugar gostaria de dizer que estou muito feliz por contribuir com o meu primeiro artigo. Sempre quis contribuir, mas toda vez que descobria algo novo, alguém já o tinha descoberto antes ou já tinha contribuído com algo similar. Desta vez, acredito que minha contribuição será no mínimo inovadora.

Recentemente instalei e configurei o ZABBIX 2.4 no ambiente que trabalho. Desde a versão antiga que trabalhara, versão 2.0, verifiquei que o ZABBIX, mesmo na sua versão mais recente, só envia alertas utilizado o protocolo SMTP (porta 25). O problema é que foi determinado pela CGI no Brasil o bloqueio da porta 25 (SMTP) pelos provedores de internet, e mesmo desconsiderando essa decisão, os grandes provedores de e-mails não mais utilizam esse protocolo, passando utilizar o SMTPS portas 587 ou 465 para envio de e-mails por medidas de segurança e redução de SPAM (Gmail, Hotmail, Yahoo).

Desta forma não temos como fugir, tivemos que fazer a alteração de todos os nossos serviços que utilizavam a porta 25 para a porta 587, porém há aplicativos como o ZABBIX que não possui suporte para isso, pois não se trata simplesmente de alterar a porta. O SMTPS exige autenticação e trabalha com parâmetros diferentes do SMTP, por isso é necessário que a aplicação tenha suporte.

Busquei várias alternativas na internet, mas nenhuma solução funcionou. Existem diversos tutorias do ZABBIX utilizando SendEmail para enviar e-mails, mas não consegui fazê-lo funcionar de jeito nenhum. Até consegui fazê-lo funcionar, mas de uma forma bem rústica. O alerta enviava apenas "SERVIDOR COM PROBLEMA", mas isso não basta. Tenho vários servidores, preciso saber qual deles deu problema e qual o tipo de problema. Então comecei a levantar soluções.

Hipótese 1

Armazenar as variáveis das TRIGGERs do ZABBIX em um arquivo e encaminhar em anexo via SendEmail.

Pareceu a solução mais eficaz no momento, mas não imagino como capturar as variáveis das TRIGGERs do ZABBIX, tentei de diversas formas mas sem sucesso.

Hipótese 2

Alterar o código fonte do ZABBIX para incluir a função de encaminhar e-mails via SMTPS.

Pelo pouco que entendi analisando o código do ZABBIX, ele armazena tudo que é configuração no banco de dados MYSQL, e conforme as funções vão sendo chamadas ele vai montando a informação fazendo consultas nas tabelas do banco e combinando com as variáveis PHP. É um código bem complexo para mim, se eu tivesse muito familiaridade com PHP, talvez seria mais fácil, mas mesmo assim eu levaria muito tempo para entender o código, além disso, alterar o código fonte de uma aplicação tão componenizada como essa é sempre um grande risco de interferir em alguma outra função.

Hipótese 3

Configurar um servidor POSTFIX escutando a porta 25 e que redirecione e-mails para a porta 587. Sem dúvidas a solução mais eficiente que pensei. Tão óbvia, que não sei porque pensei nas outras duas soluções primeiros. As outras duas soluções resolveriam apenas o problema no ZABBIX, já esta terceira solução resolverá o problema de todas as aplicação que não possuem suporte ao SMTPS.
 

Cenário


É interessante explicar o cenário da minha rede para que entendam como configurei o serviço e possam adaptá-lo a realidade de vocês. Tenho um servidor dedicado rodando o sistema operacional VMWARE ESXI 5.5, e o ZABBIX e o POSTFIX estão instalados cada um em uma máquina virtual diferente:

ZABBIX (MÁQUINA VIRTUAL):
  • HD: 5GB
  • S.O: Debian 7.0 (Wheezy)
  • ETH0 10.1.1.1/24 (INTERNO)
  • ETH1 192.168.1.1/24 (INTERNET)

POSTFIX (MÁQUINA VIRTUAL):
  • Processador: 4 Núcleos
  • HD: 5GB
  • S.O: Debian 7.0 (Wheezy)
  • ETH0 10.1.1.2/24 (INTERNO)
  • ETH1 192.168.1.2/24 (INTERNET)

No meu caso as duas máquinas estão atrás de um firewall com conexão a internet. O POSTFIX precisa, obviamente, de conexão a internet para se conectar ao servidor SMTPS, a não ser que vocês tenham um servidor interno que escute a porta 587. No meu ambiente o ZABBIX está conectado à internet porque monitoro alguns serviços na nuvem, além dos meu servidores internos.

Incialmente configurei o POSTFIX no mesmo servidor do ZABBIX, mas o redirecionamento não funcionava de jeito nenhum e analisando os LOGs percebi que o servidor recusava conexões do localhost. Pesquisei um pouco e vi relatos que realmente não é recomendável fazer redirecionamentos usando o locahost, por isso decidi criar dois servidores separados, e depois disso não tive problemas de pacotes rejeitados.

Porém, pelo o que pesquisei, não chegaram a falar que não funciona, mas disseram que se precisa alterar algumas coisas e fazer testes. Portanto, recomendo que separem os servidores, mas fica um desafio para quem quiser configurar os dois serviços no mesmo servidor.

Instalação do POSTFIX


Não vou abordar a instalação e configuraçao do ZABBIX porque foge o objetivo desse artigo cujo objetivo é resolver o problema de envio de e-mails via SMTPS. Caso não tenha o ZABBIX instalado, recomendo a instalação da versão 2.4 no DEBIAN 7.

Instalação do POSTFIX:

# apt-get install postfix mailutils libsasl2-2 ca-certificates libsasl2-modules

Após a instalação aparecerá um WIZARD pedindo algumas configurações. Esse WIZARD é responsável pela criação do arquivo abaixo. Portanto, pode preencher as informações aleatoriamente, pois o que valerá será a configuração conforme exemplo abaixo.

Não se esqueça de substituir os parâmetros entre aspas pelos IPs e Hostnames do seu servidor ZABBIX e POSTFIX respectivamente. A configuração está definida para usar o GMAIL. Se desejar utilizar outro provedor, terá que alterar os parâmetros obviamente. Recomendo dar uma lida nas configurações do main.cf para ter uma noção.

# vi /etc/postifix/main.cf

#See /usr/share/postfix/main.cf.dist for a commented, more complete version
#Debian specific: Specifying a file name will cause the first
#line of that file to be used as the name. The Debian default
#is /etc/mailname.
#myorigin = /etc/mailname
smtpd_banner = $myhostname ESMTP $mail_name (Debian/GNU)
biff = no

#appending .domain is the MUA's job.
#append_dot_mydomain = no
#Uncomment the next line to generate "delayed mail" warnings
#delay_warning_time = 4h
readme_directory = no

#TLS parameters
smtpd_tls_cert_file=/etc/ssl/certs/ssl-cert-snakeoil.pem
smtpd_tls_key_file=/etc/ssl/private/ssl-cert-snakeoil.key
smtpd_use_tls=yes
smtpd_tls_session_cache_database = btree:${data_directory}/smtpd_scache
smtp_tls_session_cache_database = btree:${data_directory}/smtp_scache

#See /usr/share/doc/postfix/TLS_README.gz in the postfix-doc package for
#information on enabling SSL in the smtp client.
myhostname = "HOSTNAME POSTFIX"
alias_maps = hash:/etc/aliases
alias_database = hash:/etc/aliases
mydestination = HOSTNAME POSTFIX, localhost.localdomain,"IP DO ZABBIX", localhost

#gmail
relayhost =
mynetworks ="IP DO ZABBIX" [::ffff:127.0.0.0]/104 [::1]/128
mailbox_command = procmail -a "$EXTENSION"
mailbox_size_limit = 0
recipient_delimiter = +
inet_interfaces = all
relayhost = [smtp.gmail.com]:587
smtp_sasl_auth_enable = yes
smtp_sasl_password_maps = hash:/etc/postfix/sasl_passwd
smtp_sasl_security_options =
smtp_tls_CAfile = /etc/postfix/cacert.pem
smtp_use_tls = yes
 

Configuração da senha e certificados


Senha a configuração da senha e certificados, é indispensável para o funcionamento do POSTFIX:

# vi /etc/postfix/sasl_passwd

Adicione a linha abaixo:

[smtp.gmail.com]:587 seuemail@gmail.com:SENHA

Obs.: troque a SENHA pela senha da conta do e-mail.

Salve o arquivo e altere as permissões:

# chmod 400 /etc/postfix/sasl_passwd

Em seguida execute:

# postmap /etc/postfix/sasl_passwd
# cat /etc/ssl/certs/Thawte_Premium_Server_CA.pem | tee -a /etc/postfix/cacert.pem
# /etc/init.d/postfix reload


Testando o funcionamento

O comando abaixo testa a configuração, logicamente, deve-se substituir o e-mail final pelo e-mail que receberá o teste. Caso o teste esteja OK, deve-se configurar os serviços para utilizar o SMTP com o IP do servidor POSTFIX, porta 25, e o e-mail de destino:

# echo "Test mail from postfix" | mail -s "Test Postfix" you@example.com

Caso o teste acima tenha sucessso, configure o serviço de e-mail no ZABBIX e simule o acionamento de uma TRIGGER. Lembrando que o servidor SMTP vai ser o IP do POSTFIX.

Espero que este tutorial seja útil. Apesar de ser algo simples, não achei nenhuma solução similar na internet que funcione tão bem.

Fonte:

segunda-feira, 15 de dezembro de 2014

Servidor NTP - Configuração e ajuste de data e hora

Ajustes e configurações

Introdução

Olá, pessoal.

Vou mostrar como ajustar a data e hora do servidor, configurar e manter um servidor de NTP (Network Time Prrotocol).

Manter o sistema com horário correto é uma tarefa muito importante, sem o horário correto, fica difícil agendar tarefas a serem executadas, verificar logs e controlar eventos por horário.

E ainda existe o problema do fuso horário, um sistema com a hora errada pode gerar problemas, por exemplo, se for um servidor de e-mails, pois fica muito difícil de dizer exatamente o horário que a mensagem foi enviada. Se for um servidor com Squid, que existe liberação de acesso por horário, isso acaba dificultando o acesso dos colaboradores por causa da diferença que pode existir de horário.

Vamos analisar as formas de ajustar o horário do servidor com dois comandos "básicos", esses comandos são o date e hwclock.

O comando date é utilizado para mostrar ou ajustar a data e hora do sistema.

Para visualizar a hora:

# date

Agora, vamos usar esse comando para acertar a data do sistema:

# date mmddHHMMYYYY

Exemplo: 28 de Fevereiro de 2013, às 11:30:

# date 022811302013

Outra forma rápida para atualizar, é usar o comando dessa forma:

# date -s "02/28/2013 11:30"

Se quiser alterar apenas a hora, pode usar o mesmo comando, colocando só a hora desejada:

# date -s " 11:30"

Para mudar a data:

# date -s " 02/28/2013"

Obs.: ao mudar somente a data, é alterado o horário para 00:00.

Agora, vamos analisar o comando hwclock. Ele usa um recurso muito interessante, que é ajustar a hora do sistema utilizando o recurso RTC (Real Time Clock). Ele ajusta o horário da BIOS, esse relógio continua funcionando, mesmo quando o computador está desligado, por isso é importante sempre verificar a bateria que fica na placa mãe; quando ela está com pouca carga, é normal o horário ficar descontrolado ao desligar o computador.

Para visualizar hora da BIOS:

# hwclock

Para ajustar o horário da BIOS e atualizar o horário do sistema:

# hwclock -w
Ou:
# hwclock --systohc

Para ajustar o sistema baseado no horário da BIOS:

# hwclock -s
Ou:
# hwclock --hctosys

Agora, se o relógio da BIOS está incorreto, basta usar o seguinte comando:

# hwclock --set --data="mm/dd/yy hh:mm:ss"

Obs.: sempre verifique as configurações de timezone, ou seja, o fuso horário em que o computador está configurado. Essa configuração pode ser efetuada utilizando os comandos:

No Debian (Ubuntu, Linux Mint) e derivados.

# dpkg- reconfigure tzdata

No CentOS (Fedora, SUSE) e derivados:

# system-config-date

Configuração de servidor NTP

Um pouco da história:

O NTP (Network Time Protocol - protocolo de sincronização de horários), foi desenvolvido para possibilitar que qualquer computador ligado à internet possa ajustar a sua data e hora automaticamente, utilizando um servidor de hora preciso.

O servidor de NTP é um serviço, em que sua camada de aplicação utiliza o protocolo UDP na camada de transporte e sua porta é a 123, por isso, é importante manter essa porta liberada para conseguir comunicação e realizar a sincronização de horários.

O NTP foi criado em 1985, é um dos protocolos mais antigos e ainda utilizados na internet!

A hierarquia e organização do NTP

A hierarquia do NTP é dividida em vários níveis, o conjunto deles é denominado "strata" e cada um deles corresponde a um "stratum". A raiz desse sistema é o denominado "stratum 0" e que corresponde aos relógios nucleares espalhados pelo mundo; aos quais estão conectados os servidores de "stratum 1", ou seja, são eles que fazem o processamento da informação recebida do "stratum 0".

Conectados aos "stratum 1" há o "stratum 2" que, em geral, estão conectados a mais de um servidor de "stratum 1" e determinam de fato qual é a hora padrão com base nos dados recebidos dos "stratum 1" utilizando o algoritmo do NTP.

Os "stratum 2" respondem ao "stratum 3", que respondem ao "stratum 4" e assim por diante até atingir, no máximo, 16 níveis.

A menos que esteja montando um servidor para um servidor para ser um stratum 1, 2 ou 3, nunca devemos utilizar os servidores stratum 1 e 2 para sincronizar o nosso servidor, se for necessário, deve ser usado um servidor stratum 3.

Dessa forma, o acesso aos servidores mais baixos ficam para as máquinas que realmente precisam acessá-los. Vamos continuar com a configuração dos servidores e clientes.

Ajuste manual do horário

Vamos verificar qual é a localização geográfica no CentOS:

# cat/etc/sysconfig/clock

No Debian:

# cat/etc/timezone

Se for constatado que existe fuso horários incorretos, faça a correção com os seguintes comandos:

No Debian e derivados:

# fpkg-reconfigure tzdata

No CentOS, SUSE e derivados:

# rm -rf /etc/localtime
# cd /usr/share/zoneinfo/America
# ln Sao_Paulo /etc/localtime

Ou:

# system-config-data

Depois dos ajustes, vamos verificar a data e hora do sistema e da BIOS:

# date
# hwclock

Configurando o cliente NTP

No Debian e derivados, vamos usar o seguinte comando para instalar o cliente NTP:

# apt-get install ntpdate

No CentOS, o comando ntpdate já vem instalado com o pacote ntp.

Para realizar a sincronização das máquinas da rede que são clientes NTP, use o seguinte comando:

# ntpdate (ip_do_servidor_ntp_rede)

No Debian, caso não tenha um servidor NTP na rede, podemos simplesmente reiniciar o daemon do ntpdate:

# ntpdate - debian

Agora que já foi mostrado como ajustar a hora do sistema e da BIOS, vamos criar a estrutura de servidores e clientes de NTP. Para configurar o servidor NTP, vamos verificar se o pacote ntp está instalado.

No CentOS:

# rpm -q ntp

Se não estiver instalado, vamos usar o seguinte comando para instalar:

# yum install ntp

Vamos agora ao arquivo de configuração do NTP:

# vim /etc/ntp.conf

Vamos precisar dos endereços de servidores oficiais NTP, para isso, vamos acessar o site:

Essa página do projeto NTP tem uma lista de servidores públicos, que é mantido pelo projeto NTP.br.

No arquivo de configuração, devemos localizar a linha de configuração com a qual sincronizaremos a nossa máquina.

# Please consider joining the pool (http://www.pool.ntp.org/join.html).
server 0.centos.pool.ntp.org iburst prefer
server 1.centos.pool.ntp.org iburst
server 2.centos.pool.ntp.org iburst
server 3.centos.pool.ntp.org iburst

Nesse caso, é aconselhável utilizar mais de um servidor. No meu caso, estou utilizando 4 servidores.

Os parâmetros adicionais iburst fazem com que sejam enviados oito pacotes, ao invés de apenas um durante a sincronização inicial. E o parâmetro prefer, faz com que a resposta de um servidor preferido seja descartada se ela diferir muito das respostas dos demais servidores, caso contrário, será utilizado sem qualquer consideração para outras respostas.

Vamos adicionar a linha, especificando quais hosts poderão realizar sincronização com a nossa máquina:

restrict 127.0.0.1
restrict 10.0.0.0 mask 255.255.255.0
disable auth

A primeira restrição está liberando requisições vindas do localhost e a segunda da nossa rede. Foi desabilitada a autenticação por chaves também.

Vamos determinar se a sincronização está funcionando corretamente. Para isso, vamos alterar a hora do sistema e depois iniciar o serviço de NTP:

# date 03050511008
# /etc/init.d/ntpd stop
# /etc/init.d/ntpd start

Agora, verifique a hora do sistema e veja se funcionou:

# date

Vamos configurar o cliente no Debian e sincronizar com o servidor:

# apt-get install ntp

Adicionar a lista de servidores e comentar os demais:

# vim /etc/ntp.conf

#Na linha 15, adicione o servidor e comente os outros.

server  10.0.0.100 iburst prefer

Vamos realizar o mesmo teste:

# date 03050511008
# /etc/init.d/ntpd stop
# /etc/init.d/ntpd start
# date

Pronto!

Conclusão

Servidor NTP e clientes configurados.

Espero que esse artigo ajude a quem precise configurar e manter um servidor de data e hora.



Configurando servidores DHCP, BIND, Squid, Sarg, Samba e algumas regras IPtables

Removendo ambiente gráfico / Configurações

Depois de instalado o Debian 7, remova parte gráfica para entrar somente no console. Abrir o terminal - entrar como root com o comando:$ su

Colocar a senha do root. E agora remover a parte gráfica:
# update-rc.d -f gdm3 remove

Ainda ficaram 5 segundos no GRUB para remover. Vamos alterar o arquivo:
# etc/default/grub

Localizar a linha: 
GRUB_TIMEOUT=5

Mudar para: 
GRUB_TIMEOUT=0

Depois dê um 
Ctrl+o e Ctrl+x, e pronto.# reboot #Para reiniciar e testar. 

Configurando APT corretamente

Arrumando o APT para baixar pacotes da internet.

Vamos editar o arquivo 
/etc/apt/sources.list. Para isso, vamos com os comandos:# cd /etc/apt
# nano sources.list

Vá até o final do arquivo e digite: 
deb http://ftp.debian.org/debian/ wheezy-updates main contrib non-free
deb-src http://ftp.debian.org/debian/ wheezy-updates main contrib non-free
deb http://ftp.br.debian.org/debian stable main contrib non-free
deb-src http://ftp.br.debian.org/debian stable main contrib non-free
deb http://security.debian.org/ wheezy/updates main contrib non-free
deb-src http://security.debian.org/ wheezy/updates main contrib non-free
deb http://dl.google.com/linux/deb stable main

Depois dê um 
Ctrl+oCtrl+x e pronto.
Agora é só atualizar a lista de pacotes, com:
# apt-get update

Agora estamos prontos para começar a instalar os pacotes e fazer as configurações. 

Personalização da tela de login do Debian (opcional)

Vamos personalizar a tela do terminal:# apt-get install linuxlogo

Mostrar o logo atual:
# linux_logo

Ver outros para alteração:
# linux_logo -L n

Lembre-se que "n" varia de 1~24, escolha o mais legal.

E altere o arquivo 
/etc/linux_logo.conf, mudando o "-L 14".

Agora, vamos colocá-lo no terminal:
# cd /etc/
# mv issue issue.bkp
# mv issue.linuxlogo issue

Dê um reboot.
E confira as mudanças. 

Setando as interfaces de rede

Vamos primeiro em:# cd /etc/network/
# nano interfaces

Vamos acrescentar a linha: 
#THE SECONDARY NETWORK INTERFACE
Auto eth1
Iface eth1 inet static
Address 192COLOQUESEUIP
Netmask 255SuaMáscara
Broadcast 192Seubroadcast255

Depois dê um 
Ctrl+oCtrl+x e pronto.

Ou, podemos utilizar o comando:
# ifconfig eth0 192.168.1.1 netmask 255.255.255.0

Agora com o comando:
# ifconfig

Verá todas as interfaces: eth0, eth1 e loopback.
Poderá detalhar como:
# ifconfig eth0
Ou:
# ifconfig eth1 


Instalando e configurando o servidor DHCP

Trecho adaptado de:

Publicado por 
Leonardo Damasceno em 22/10/2009.# apt-get -y install dhcp3-server

Após o download completo do software, vá ao diretório 
/etc/dhcp:# cd /etc/dhcp
# nano dhcpd.conf 
ddns-update-style none;
default-lease-time 600;
max-lease-time 7200;
authoritative;

subnet 192.168.100.0 netmask 255.255.255.0 {
   range 192.168.100.10 192.168.100.200;
   option routers 192.168.100.1;
   option domain-name-servers 200.235.120.200,200.235.120.220,8.8.8.8,8.8.4.4;
   option broadcast-address 192.168.0.255;
}

# nano /etc/default/isc-dhcp-server

Onde tiver INTERFACES="", coloque sua placa de rede (no meu caso, utilizei a eth1): 
INTERFACES="eth1"

Salve e saia do nano.

Agora, reinicie o serviço:
# service isc-dhcp-server restart

Após o reinício, confira a configuração adicionando um cliente Windows XP para obter endereço de IP via DHCP que dará certo. 

Instalando o DNS (BIND 9)

Adaptado de (retirado alguns comentários e ajustado para configuração em máquina virtual):

Publicado por Luis 
Viscardo Saqueto.

O primeiro passo, é baixar e instalar o BIND 9:
# apt-get install bind9

Para verificar se o BIND está rodando, digite:
$ ps -aux | grep named

Caso não esteja rodando ainda, digite:
# /etc/init.d/bind9 start 

Configurando o named.conf

Agora, vamos aos arquivos de configuração. Todos os arquivos se encontram no diretório /etc/bind.

Primeiro, você deve editar o arquivo named.conf.default-zone, onde estão todas as zonas que no caso são os endereços de sites pela qual a máquina vai responder.

Você deverá incluir a seguinte linha no arquivo named.conf
zone "seusite.com.br" {
      type master;
      file "/etc/bind/db.seusite.com.br";
};

zone "2.0.10.in-addr.arpa" {
type master;
file "/etc/bind/db.2.0.10";
};

O próximo passo será criar o arquivo db.seusite.com.br

Criando o arquivo db.seusite.com.br

Aqui ficarão as configurações do seu endereço.

Antes de excutar, sabe o nome do seu Debian?
# hostname

;
IN significa internet

;Arquivo
que representa a zona "seusite.com.br"

;

$TTL
  604800

@
  IN   SOA   seusite.com.br. NOMEDOSEUDEBIAN.seusite.com.br. (

       2004111700
  ; Serial

         604800
     ; Refresh

       86400
     ; Retry

       2419200
     ; Expire

         604800
)    ; Negative Cache TTL

;

@
  IN   NS   NOMEDOSEUDEBIAN

@
             IN      MX      10      seusite.com.br.


NOMEDOSEUDEBIAN
       IN      A        ipdasuamaquina10.0.2.15

www
           IN      CNAME    NOMEDOSEUDEBIAN

ftp
           IN      CNAME    NOMEDOSEUDEBIAN


//
agora é so você adicionar os outros registros desejados

//
exemplo:

//ssh
IN CNAME nomedamaquina


Agora o arquivo db.seuipdainterfaceEth0
$TTL 604800
@  IN  SOA  NomeBedian.seusite.com.br. admin.NomeBedian.seusite.com.br. (
1
604800
86400
2419200
604800  )

@   IN   NS NomeBedian.seusite.com.br.
10  IN  PTR NomeBedian.seusite.com.br

Feito isso, Ctrl+o e Ctrl+x


Restante da configuração do BIND 9

Mudando resolv.conf:# cd /etc
# nano resolv.conf

Deverá ficar assim: 
nameserver 127.0.0.1
nameserver 8.8.8.8
nameserver 8.8.4.4
nameserver seuipdaEth0

Mudando arquivo hosts:
# nano hosts

Deverá ficar assim: 
127.0.0.1   localhost
192.168.5.254   NOMEDOSEUDEBIAN.seusite.com NOMEDOSEUDEBIAN


Testando o servidor

Para checar as configurações, digite:# named-checkconf

Para checar as zonas, digite:
# named-chekzone db.seusite.com.br

Para reiniciar, digite:
# /etc/init.d/bind9 restart

Para testar se está tudo funcionando, use o 
nslookup:$ nslookup www.seusite.com.br 
www.seusite.com.br        canonical name = NomedoDebian.seusite.com.br.
Address: seuipdaEth0


Instalando e configurando o Apache

Atualizando o repositório:# apt-get update

Instalando pacote Apache 2:
# apt-get install apache2

Acessando a pasta onde está o Apache:
# cd /etc/apache2

Startando o servidor:
# service apache2 restart 

Testando

Vá no cliente e digite o IP do servidor ou o nome configurado no DNS. Deve aparecer: It's Work!.

Se apareceu, deu tudo certo e seu Apache foi instalado corretamente.

* Importante: se não apareceu "It's Work!", tente acessar outro site da internet como Google ou Yahoo!, pode ser que suas regras do Firewall ainda não foram definidas e a navegação está bloqueada.

Caso esteja e você não consegue acessar nada, digite os comandos no terminal para limpar as regras e liberar tudo, depois fecharemos as portas necessárias:
# iptables -F INPUT
# iptables -F OUTPUT
# iptables -F FORWARD
# iptables -t nat -F
# iptables -t mangle -F 

Instalando e configurando proxy (Squid)

Trecho adaptado de:

Instalando o Squid:
# apt-get install squid

Para que os clientes possam navegar na internet, é necessário configurar o Squid para possibilitar esse acesso. Devemos configurar o arquivo 
squid.conf dentro da pasta /etc/squid:# mv /etc/squid/squid.conf /etc/squid/squid.conf.original
# nano /etc/squid/squid.conf

Adicione o conteúdo abaixo para configuração do Squid: 
http_port 3128 transparent

visible_hostname Firewall

# Proxy transparent com autenticacao não funciona
error_directory /usr/share/squid/errors/Portuguese/
cache_mem 64 MB
maximum_object_size_in_memory 64 KB
maximum_object_size 512 MB
minimum_object_size 0 KB
cache_swap_low 50
cache_swap_high 70
cache_dir ufs /var/spool/squid 2048 16 256
cache_access_log /var/log/squid/access.log
#cache_store_log /var/log/squid/store.log
#cache_swap_log /var/log/squid/cache_swap.log
refresh_pattern ^ftp: 15 20% 2280
refresh_pattern ^gopher: 15 0% 2280
refresh_pattern . 15 20% 2280
acl all src 0.0.0.0/0.0.0.0
acl manager proto cache_object
acl localhost src 127.0.0.1/255.255.255.255
acl SSL_ports port 22 995 993 465
acl Safe_ports port 21 80 138 139 443 563 70 210 280 488 59 777 901 1025-65535
acl purge method PURGE
acl CONNECT method CONNECT
http_access allow manager localhost
http_access deny manager
http_access allow purge localhost
http_access deny purge
http_access deny !Safe_ports
http_access deny CONNECT !SSL_ports
# Validação da rede local
acl redelocal src 192.168.0.0/24

# Bloqueio de sites por domínio
acl sites url_regex -i "/etc/squid/bloqueados/sites"
http_access deny sites
acl adulto url_regex -i "/etc/squid/bloqueados/adulto"
http_access deny adulto

http_access allow localhost
http_access allow redelocal
http_access deny all

Digite 
Ctrl+o e Ctrl+x.

Com o arquivo do Squid configurado, criar os arquivos citados acima:
$ mkdir bloqueados
$ cd bloqueados
$ nano sites

Adicionar a URL dos sites, exemplo:
  • http://www.facebook.com
  • http://www.uol.com.br

$ nano adulto

Adicionar a URL dos sites adultos, exemplo:
  • http://www.siteadulto.com.br

Precisamos iniciar o serviço com os comandos abaixo:

Finalizando serviço do Squid:
# /etc/init.d/squid stop

Iniciando serviço do Squid:
# /etc/init.d/squid start

Caso não exiba nenhum alerta, o Squid está configurado de maneira correta. Caso retorne algum erro, verifique o arquivo do configuração do Squid. 

Iniciando as regras do Firewall

Criando as regras para iniciar junto com o Debian. Para isso, devemos criar um arquivo de nome fw.sh dentro da pasta do /etc/squid:# nano /etc/squid/fw.sh 
echo Inicializando regras do firewall
# LIMPA REGRAS DO FIREWALL
iptables -F INPUT
iptables -F OUTPUT
iptables -F FORWARD
iptables -t nat -F
iptables -t mangle -F
modprobe ip_tables
modprobe iptables_nat

echo "1" > /proc/sys/net/ipv4/ip_forward

# ATIVA O MODO DE MASQUERADE
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE

# FORÇA A NAVEGACAO PELA PORTA 3128
iptables -t nat -A PREROUTING -s 192.168.0.1/24 -p tcp --dport 80 -j REDIRECT --to-port 3128
iptables -t nat -A PREROUTING -s 192.168.0.1/24 -p ucp --dport 80 -j REDIRECT --to-port 3128

#teste com a porta 443 https
iptables -t nat -A PREROUTING -s 192.168.0.1/24 -p tcp --dport 443 -j REDIRECT --to-port 3128
iptables -t nat -A PREROUTING -s 192.168.0.1/24 -p ucp --dport 443 -j REDIRECT --to-port 3128

Salve o arquivo e saia.

Agora, adicione o arquivo para execução automática dentro do arquivo 
rc.local:# vim /etc/rc.local

Adicione a linha abaixo antes da linha "exit 0": 
sh /etc/squid/fw.sh

Com isso, o Firewall carregará as regras na inicialização automaticamente. 

Instalando e configurando o Sarg (relatório do Squid)

Instale:# apt-get install sarg -y --force-yes

Configurando: abra o arquivo 
sarg.conf dentro da pasta /etc/sarg e altere as linhas abaixo:

Linhas originais: 
#output_dir /var/www/html/squid-reports
output_dir /var/lib/sarg

Após serem alteradas: 
output_dir /var/www/squid-reports
#output_dir /var/lib/sarg

Após esse procedimento, o Sarg terá sido instalado com sucesso. Para testar rode o comando abaixo e veja o resultado:
# sarg -g e

Para adicionar o script para gerar relatórios diários, siga os passos abaixo:
# vim /etc/squid/relatorio.sh

Adicione as linhas abaixo: 
clear
DATA=`date +%d/%m/%Y`
sarg -g e -d $DATA'-'$DATA

Salve e feche o arquivo de relatório.

Digite o comando abaixo:
# crontab -e

Adicione a linha abaixo: 
00 23 * * * /etc/squid/relatorio.sh

A partir desse momento, serão gerados relatórios todos os dias às 23:00 Hrs.

Agora, vamos forçar a criação de relatórios pelo Sarg:
# sarg -g e

Se tudo ocorreu bem, no diretório já estarão os arquivos. Dê o comando:
# cd /var/www
# ls

Verifique se existe o diretório 
squid-reports.

Se sim, funcionou corretamente e já pode ser acessado pelo browser das estações entrando no IP do servidor Debian: 
http://192.168.0.1/squid-reports.

Se chegou até aqui e tudo funcionou, o trabalho está quase completo 

Reiniciando sistema

Após conclusão de todos os passos, devemos reiniciar o Linux, se tudo ocorrer bem, seu Firewall estará pronto para ser instalado em uma rede.

Reinicie o sistema com o comando abaixo:
# reboot 

Instalando e configurando o servidor Samba (arquivos)

Adaptado de (com algumas alterações para máquina virtual):

Publicado por 
Caio Norder em 29/11/2007.

Instalar:
# apt-get upadate
# apt-get install samba

Configurando o Samba:
# cd /etc/samba/
# mv smb.conf smb.conf2
# nano smb.conf 
workgroup = Interna
server string = %h server Debian
dns proxy = no
interfaces = lo eth0 eth1
bind interfaces only = true
log file = /var/log/samba/log.%m
max log size = 1000
syslog = 0
panic action = /usr/share/samba/panic-action %d
security = share
encrypt passwords = true
passdb backend = tdbsam
obey pam restrictions = yes
guest account = nobody
invalid users = root
passwd program = /usr/bin/passwd %u

[Servidor]
comment = Servidor de Arquivos
path = /home/servidor
browseable = yes
read only = no
guest ok = yes

Agora crie a pasta e o usuário servidor:
# mkdir /home/servidor
# cd /home/
# chmod 777 servidor/
# adduser usuario

A partir daí, para criar o usuário no Samba:
# smbpasswd -a usuario

E para excluir:
# smbpasswd -x usuario

O usuário precisará fazer login ao acessar. E por fim:
# /etc/init.d/samba restart 

Fonte
http://www.vivaolinux.com.br/artigo/Configurando-servidores-DHCP-BIND-Squid-Sarg-Samba-e-algumas-regras-IPtables