VMWare ESXi 4.1

A pouco tempo tive que começar a mexer com virtualização de servidores com a ferramenta VMWare, então como todo bom começo de aprendizado fiz alguns testes e tive alguns problema até chegar a solução ideal para o que eu estava precisando.

Cenário:

Equipamento: Optiplex 760, 4GB Memória, HD 500GB

Software: VMWare ESXi 4.1

Funções: Servidor de Impressão, Servidor de Replicação do AD, futuramente Servidor Debian (Squid + Iptables)

Após a instalação do VMWare com apenas 1 placa de rede, surgiu a necessidade de colocar mais placas para poder acrescentar o servidor Debian com função de Firewall e Proxy, porém quando foi colocada a placa adicional (que é compatível pela lista de compatibilidade da VMWare) o servidor deu problema na única placa que tinha funcionando, então não teve jeito, foi necessário entrar no Linux que roda o VMWare e mexer na placa de rede diretamente pelo arquivo.

Primeiro, para acessar o Linux (customizado) que roda por de baixo do VMWare ESXi 4.1 deve-se pressionar as teclas de atalho ALT+F1, fazendo isso você verá um terminal igual ao do GNU, sendo assim basta apenas procurar os arquivos para editar, nessa versão de Linux não existe o VIM, então vamos pelo VI.

O problema aconteceu depois que as minhas placas adicionais foram colocadas, então percebi que a única placa que ainda deveria estar funcionando não estava mais, olhando as telas de administração de placas de rede pelo console de administração do VMWare era possível verificar que o status dela ficava sempre como disconnected, então verifiquei que a placa não estava mais configurada com AUTO na negociação de velocidade, ela tinha alterado para 1000Mbps, então começou o problema, pois não tem como alterar pela console de administração essa configuração da placa.

ESXi (4.1) 1 – Tabela de apresentação das placas de rede

Já logado no console do Linux que roda por baixo do VMWare basta digitar o comando esxcfg-nics -a vmnic0 (no meu caso só tinha esse vmnic).

Depois de reiniciado o servidor a placa voltou a negociar a velocidade e o problema foi resolvido.

Abaixo segue o link de um site onde tem vários comandos que podem ser utilizados no console Linux do VMWare ESXi 4.1 (os comandos são diferentes da versão 3).

http://vmware-land.com/esxcfg-help.html

Qualquer dúvida enviar e-mail para: ricardo.nobregasantos@gmail.com

Anúncios

SQUID + AUTENTICAÇÃO NCSA_AUTH

Cenário: Servidor Linux Debian 5 (Firewall + Proxy c/ cache)

Depois de muito tempo sem instalar o SQUID + NCSA_AUTH, hoje precisei fazer as presas uma instalação para utilização de um novo link com um novo servidor.

Começei instalando o ótimo S.O Debian 5 e configurando as interfaces de rede com os devidos endereços IP (não vou entrar em detalhes desse processo neste post).

Depois de terminada a parte mais “simples”, começei a instação dos programas necessários para colocar o servidor “no ar”, primeiro verifiquei todas as atualizações disponíveis dos repositórios que uso, atualizei todos os programas e parti para o meu maior problema, configurar o SQUID + IPTABLES + NCSA_AUTH.

Abaixo está um arquivo squid.conf comentado e ja com autenticação ncsa_auth, alguns arquivos foram criados para o controle de acesso a determinados sites ou bloqueio por palavra, é possível criar esses arquivos em brando, dentro do diretório /etc/squid e acrescentar as informações conforme sua necessidade.

#etc/squid/squid.conf
# Este é o principal arquivo de configuração do Squid.
# Esta versão incluída no Kurumin inclui apenas as opções mais usadas,
# comentadas de forma a facilitar a configuração.
#Se quiser ver o arquivo original incluído no pacote, leia o arquivo /etc/squid.conf.debian
# Comentários por Carlos E. Morimoto

visible_hostname XXX (ALTERAR O NOME XXX PARA O NOME DO SEU SERVIDOR)

# Porta:
# Esta é a porta tcp onde o squid ficará ativo. O padrão é a porta 3128

http_port (ip do servidor):8080 (pode colocar apenas o numero da porta ou  ip:porta
http_port 127.0.0.1:8080 (utilizar a mesma porta)

hierarchy_stoplist cgi-bin ?
acl QUERY urlpath_regex cgi-bin \?
no_cache deny QUERY

# >> Configuração do cache de páginas e arquivos <<
# O squid armazena as páginas e arquivos já acessados, para agilizar o acesso.
# Ao ativar o proxy transparente no ícone mágico, o cache passar a
# armazenar também todos os downloads feitos pelos clientes, via
# http, ftp e também através do apt-get, que também usa http.
# >> Quantidade de memória RAM dedicada ao cache <<
# Se estiver usando um servidor com muita RAM, você pode aumentar isso
# para até mais ou menos um terço da memória RAM total.

cache_mem 512 MB

#LOCAL PADRAO PARA PAGINAS DE ERROS E ETC
error_directory /usr/share/squid/errors/Portuguese (mensagens de erro em Portugues)

#direcionando todos que se enquadrem na ACL proibidos e Bloqueados para uma pagina especifica
deny_info BLOQUEADA proibidos (página personalizada de erro, criada dentro do caminho /usr/share/squid/errors/Portuguese)

# O tamanho máximo dos arquivos que serão guardados no cache feito
# na memória RAM. O resto vai para o cache feito no HD.
# O cache na memória é muito mais rápido, mas como a quantidade de
# RAM é muito limitada, melhor deixa-la disponível para páginas web,
# figuras e arquivos pequenos em geral.

maximum_object_size_in_memory 256 KB

# >> Tamanho máximo e mínimo para arquivos serem armazenados no cache <<
# por default, o máximo são downloads de 16 MB e o mínimo é zero, o que
# faz com que mesmo imagens e arquivos pequenos sejam armazenados
# no cache. Sempre é mais rápido ler a partir do cache do que baixar de novo da web.
# Se você faz download de arquivos grandes e deseja que eles fiquem
# armazenados no cache, aumente o valor da opção maximum_object_size
# Isto é especialmente útil para quem precisa baixar muitos arquivos
# através do apt-get ou Windows update em muitos micros da rede.

maximum_object_size 128 MB
minimum_object_size 0 KB

# Percentagem de uso do cache que fará o squid começar a descartar os
# arquivos mais antigos. Por padrão isso começa a acontecer quando o cache está 90% cheio.

cache_swap_low 80
cache_swap_high 90

# >> Cache em disco <<
# Esta opção é composta por quatro valores. O primeiro, (/var/spool/squid)
# Indica a pasta onde o squid armazena os arquivos do cache. Você pode
# querer alterar para uma pasta em uma partição separada por exemplo.
# O “512” indica a quantidade de espaço no HD (em MB) que será usada para
# o cache. Aumente o valor se você tem muito espaço no HD do servidor e
# quer que o squid guarde os downloads por muito tempo.
# Finalmente, os números 16 256 indicam a quantidade de subpastas que
# serão criadas dentro do diretório. Por padrão temos 16 pastas com 256 subpastas cada uma.

#cache_dir ufs /var/spool/squid 512 16 256
cache_dir ufs /var/spool/squid 1536 16 256

# Arquivo onde são guardados os logs de acesso do Squid.

cache_access_log /var/log/squid/access.log

# O e-mail que o Squid envia como senha ao acessar um servidor
# FTP anonimo:

ftp_user ids-proxy@empresa11.com.br

# >> Padrão de atualização do cache <<
# Estas três linhas precisam sempre ser usadas em conjunto. Ou seja,
# você podde alterá-las, mas sempre as três precisam estar presentes
# no arquivo. Eliminando um, o squid ignora as outras duas e usa o default.
# Os números indicam o tempo (em minutos) quando o squid irá verificar
# se um ítem do cache (uma página por exemplo) foi atualizado, para cada um dos três protocolos.
# O primeiro número (o 15) indica que o squid verificará se todas as
# páginas e arquivos com mais de 15 minutos foram atualizados. Ele
# só verifica checando o tamanho do arquivo, o que é rápido. Se o
# arquivo não mudou, então ele continua mandando o que não está no cache para o cliente.
# O terceiro número (o 2280, equivalente a dois dias) indica o tempo
# máximo, depois disso o objeto é sempre verificado.

refresh_pattern ^ftp:  15 20% 2280
refresh_pattern ^gopher: 15 0% 2280
refresh_pattern .  15 20% 4320

# >> Controle de acesso <<
# Aqui vai vão as regras de quem acessa ou não o proxy. Por default
# o proxy vem configurado de uma forma liberal, para facilitar o uso.
# É recomendável que você ative o firewall do Kurumin e o configure
# para permitir apenas acessos a partir da rede local.

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 443 563 23000
acl Safe_ports port 80 # http
acl Safe_ports port 21  # ftp
acl Safe_ports port 443 563 # https, snews
acl Safe_ports port 70  # gopher
acl Safe_ports port 210  # wais
acl Safe_ports port 1025-65535 # unregistered ports
acl Safe_ports port 280  # http-mgmt
acl Safe_ports port 488  # gss-http
acl Safe_ports port 591  # filemaker
acl Safe_ports port 777  # multiling http
acl Safe_ports port 901  # SWAT
acl safe_ports port 23000 # SISCOMEX – WEB
acl safe_ports port 8999 #SERPRO
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
http_access allow localhost

auth_param basic children 5
auth_param basic realm PROXY-NETUNO: SEU ACESSO ESTA SENDO MONITORADO.
auth_param basic credentialsttl 2 hours
auth_param basic program /usr/lib/squid/ncsa_auth /etc/squid/squid_passwd (nesta linha, está sendo habilitada a autenticação no modo ncsa_auth e apontanto qual será o caminho do arquivo de senhas dos usuários do squid)
acl autenticados proxy_auth REQUIRED (colocando como autenticação requerida, para solicitar usuário e senha para liberar o acesso a internet)

#############################LIBERACAO PARA ADMINS POR USUARIO################### FUNCIONANDO
acl adm proxy_auth “/etc/squid/admins” (arquivo criado para cadastrar os usuários administrador, esses usuários não tem controle de acesso, qualquer site está liberado)
http_access allow adm

#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ACESSO AS PAGINAS DE JOGOS SOMENTE NO HORÁRIO DE ALMOÇO
#acl url_lazer url_regex -i “/etc/squid/url_lazer”
#acl hora time 11:20-13:00
#http_access allow url_lazer hora
#http_access deny url_lazer

############################ACESSO SOMENTE AOS SITES LIBERADOS PARA ALGUNS USUARIOS###########
acl acesso_bloqueado proxy_auth “/etc/squid/usr_bloqueado” (usuários apenas com acesso a alguns sites, ex. bancos e e-mail da empresa)
acl url_liberado url_regex -i “/etc/squid/url_liberado” (aqui serão determinados os endereços das url´s que os usuários acima terão acesso)

http_access allow url_liberado
http_access deny acesso_bloqueado !url_liberado
http_access allow acesso_bloqueado
#######
##AREA DE TESTE
acl ip_serpro dst 161.148.40.200
http_access allow ip_serpro
acl ip_serpro1 dst 200.198.230.15
http_access allow ip_serpro1
acl ip_serpro2 dst 200.198.230.30
http_access allow ip_serpro2
acl ip_serpro3 dst 200.198.194.27
http_access allow ip_serpro3

#————————————————————————————————————-
#————————————————————————————————————-

http_access deny CONNECT !SSL_ports
#acl para bloquear downloads de extencoes perigosas
#acl list urlpath_regex -i “/etc/squid/lista”
#http_access deny list

#————————————————————————————————————-
#————————————————————————————————————-

#################A acl “proibidos” é usada para fazer bloqueio de sites (baseado no domínio)##

acl bloqueados url_regex -i “/etc/squid/bloqueados” (colocar neste arquivo os dominios que serão bloqueados para acesso)
http_access deny bloqueados

# A acl “proibidos” é usada para fazer bloqueio baseado em dominios
acl proibidos dstdom_regex “/etc/squid/proibidos” (colocar as palavras não serão aceitas no endereço da url)
http_access deny proibidos
####################################################################
# >> Bloqueio com base no horário <<
# Esta regra faz com que o proxy recuse conexões feitas dentro de determinados
# horários. Você pode combinar várias das regras abaixo para bloquear todos
# os horários em que você não quer que o proxy seja usado:

#acl madrugada time 00:00-06:00
#http_access deny madrugada

#acl manha time 06:00-12:00
#http_access deny manha

#acl almoco time 12:00-14:00
#http_access deny almoco

#acl tarde time 14:00-19:00
#http_access deny tarde

#acl noite time 19:00-24:00
#http_access deny noite

#####################################################################
# >> Proxy com autenticação <<
# Se você quer habilitar o uso de login e senha para acessar através
# do proxy, siga os seguintes pasos:
# 1- Instale o pacote apache-utils (apt-get install apache-utils)
# 2- Crie o arquivo que será usado: touch /etc/squid/squid_passwd
# 3- Cadastre os logins usando o comando:
# htpasswd /etc/squid/squid_passwd kurumin (onde o “kurumin” é o usuário que está sendo adicionado).
# Depois de terminar de cadastrar os usuários, descomente as três linhas
# abaixo e reinicie o squid com o comando “service squid restart”.
# Quando os usuários tentarem acessar será aberto uma tela pedindo login.

#LIBERANDO ACESSO APOS AUTENTICACAO
http_access allow autenticados (se o usuário for autenticado e a página solicitada não entrar nas regras acima, aqui será feita a liberação do acesso)

# >> Controle de acesso <<
# Aqui você pode ativar a configuração do Squid que o deixará explicitamente
# disponível apenas para a faixa de endereços da sua rede local, recusando
# acessos provenientes de outras redes, mesmo que o firewall esteja desabilitado.
# Configure a linha abaixo com a faixa de endereços IP e a máscara de
# sub-rede (o 24 equivale à mascara 255.255.255.0) da sua rede local e deixe
# também a linha http_access deny all (mais abaixo) descomentada.

acl redelocal src (ip da rede local)/24
http_access allow redelocal

# Ao ativar qualquer uma das regras de controle de acesso, você deve
# descomentar tampém a linha abaixo, que vai recusar as conexões que
# não sejam aceitas nas regras acima. Ao alterar a configuração, comente ou apague
# a linha “http_access allow all”, que permite que todo mundo utilize o proxy.

http_access deny all (caso não encontre nenhuma regra válida, bloqueia o acesso)
#http_access allow all

# >> Proxy Transparente <<
# As linhas abaixo, combinadas com uma regra de firewall adicionada pela opção
# no ícone mágico fazem o squid se comportar como um proxy transparente.
# Leia o capítulo 6 do livro do Kurumin para mais detalhes.

#httpd_accel_host virtual
#httpd_accel_port 80
#httpd_accel_with_proxy on
#httpd_accel_uses_host_header on

# Para habilitar o proxy transparente, você deve descomentar as 4 linhas acima e
# adicionar a regra do firewall que redireciona o tráfego da porta 80 do servidor
# para a porta 3128 do squid.
# Isto é feito colocando os seguintes comandos no arquivo /etc/rc.d/rc.local:
#substitua o $placalocal pela placa da rede local, ex eth0
#substitua o $placainternet pela placa ligada na internet, ex eth1 ou ppp0
# modprobe iptable_nat
#echo 1 > /proc/sys/net/ipv4/ip_forward # iptables -t nat -A PREROUTING -i $placalocal -p tcp –dport 80 -j REDIRECT –to-port $porta # iptables -t nat -A POSTROUTING -o $placainternet -j MASQUERADE

Para o funcionamento perfeito do arquivo .conf, é necessário tirar todos os comentários colocados em vermelho no texto do .conf

Não pode esquecer de liberar no IPTABLES a porta para entrada dos pacotes vindos da rede interna, nesse caso a porta é 8080, mas fica a seu critério a alteração.

Qualquer dúvida/sugestão, deixar um cometário:

LOG – SARG

Problema Raiz

Com a crescente melhora nos links de comunicação e com o aumento dos serviços on-line de comunicação, P2P, Redes Sociais, Webmail, etc…, precisei aumentar o controle para melhorar o uso dos recursos de telecomunicação disponibilizados pela organização para execução dos trabalhos.

Fizemos campanhas de conscientização sobre o uso da internet, nada adiantou o que me deixou com um problema muito grande a ser resolvido da melhor maneira possível (para a empresa é claro).

Procurando por soluções para armazenamento de LOG e controle de acesso a internet, verifiquei que a dupla SQUID+SARG dariam conta do recado de maneira eficiente. Abaixo uma breve descrição do ambiente onde está funcionando harmoniosamente (ou quase) essa solução.

Ambiente

2-Servidores

2-Links de 1.2 Mbps

No meu caso utilizei a distribuição Debian Etch 4.0, com todas as atualizações de segurança e com os seguintes serviços habilitados.

  • KDE
  • SQUID
  • IPTABLES
  • ETHERAPE

Tenho, além disso, um servidor Windows 2003 SP2 rodando DHCP, IIS, TS, Servidor de Impressão e Arquivos, DNS e AD.

Claro que o cenário não é o mais recomendado para a configuração de todos os serviços descritos, mas é isso que tenho de recurso.

Objetivo

Criar LOG de acesso a sites da internet, como já estava utilizando o SQUID como proxy, verifiquei quais as opções. Entre elas encontrei o SARG, falando com amigos e depois fazendo cursos, resolvi colocar o SARG pra funcionar, de que forma:

  • Criar LOG de tudo que foi acessado por DIA / SEMANA / MÊS
  • Criar ranking dos sites mais acessados
  • Usuários que mais acessaram

Apenas com a habilitação do SARG já se consegue saber qual o volume trafegado por usuário em que período e também em qual site, isso já me bastaria se eu não precisasse com frequência bloquear usuários, devido acesso a sites inapropriados.

Para que seja possível criar os dados por DIA / SEMANA / MÊS, você deve ter umas 1.000 opções, então não vou dizer faça igual pois caso seu ambiente seja diferente é possível que com algumas adaptações seja mais pratico para alcançar seus objetivos.

Abaixo coloco como referencia todas as informações necessárias para estudo de como montar LOG´s com o SARG.

Primeiro:

Crie no seu Linux um diretório para armazenar os arquivos que serão gerados pelo SARG.

Crie dois arquivos para armazenar as informações do LOG semanal e mensal (para o diário não precisa), dentro do diretório criado anteriormente.

Crie três script´s com o nome que você achar melhor (Sugestão: SARG_DIARIO.sh , SARG_SEMANAL.sh, SARG_MENSAL.sh), eles serão responsáveis por gerar os relatórios do SARG sem que você precise ficar rodando comandos na mão.

Segundo:

Abaixo imagem com o conteúdo do script DIARIO.


Explicação: Todas as linhas que começam com # são comentários, a linha 4 “pega” o conteúdo do access.log gerado durante os acessos à internet e faz um “append ¹ “ no final do arquivo já existente SQUID_MENSAL.log , a linha 7 faz a mesma coisa que a 4 porém armazena os LOG´s de apenas uma semana.

Na linha 10 finalmente é gerado o relatório de acesso diário do SARG dentro do diretório /var/www/squid-reports/Daily/ quando acessar a tela de relatórios do SARG é possível solicitar se os relatórios serão apresentados por Dia / Semana / Mês.

Depois veremos como os arquivos SQUID_SEMANAL E SQUID_MENSAL são zerados ao final de cada período.

¹ Append: Termo usado para explicar quando o conteúdo será acrescentado a um arquivo já existente, sem apagar os dados já contidos no arquivo.

Abaixo imagem com o conteúdo do script SEMANAL.


Neste script é possível identificar na linha 2 os relatórios do SARG sendo gerados dentro do diretório /var/www/squid-reports/Weekly, depois de gerar os relatórios, executamos um comando para que o arquivo SQUID_Semanal.log volte a ser zerado, começando a armazenar os LOG´s da próxima semana.


Abaixo imagem com o conteúdo do script MENSAL.


Neste script é possível identificar na linha 2 os relatórios do SARG sendo gerados dentro do diretório /var/www/squid-reports/Montly, depois de gerar os relatórios, executamos um comando para que o arquivo SQUID_Mensal.log volte a ser zerado, começando a armazenar os LOG´s da próxima semana.


Terceiro:

Colocar agendamento do /etc/cron.tab

Colocarei aqui apenas as linhas referentes ao agendamento do SARG.


Resultado

Seguindo passo a passo o procedimento acima, acredito que não ocorram problemas e todos os relatórios poderão ser visualizados no próprio servidor Linux ou de outra máquina qualquer, até mesmo pela internet, mas não vou entrar nesse assunto agora, já que o foco desde post são apenas os Log´s do SARG.

Caso não tenha ficado claro alguma parte desse post, pode mandar mensagem para ricardo.nobregasantos@gmail.com

Obrigado pela visita !

SSH – UM SERVIÇO D+

O SSH é um serviço muito útil e pode ser instalado facilmente em servidores Debian.

Para instalar o serviço, basta você abrir o Terminal com o usuário root (super usuário) e digitar o seguinte comando: aptitude install ssh

Terminada a instalação, agora iniciaremos a configuração do arquivo sshd_config, neste arquivo existem alguns parâmetros muito importantes, sendo um deles o principal para a segurança do serviço SSH.

Numerei as linhas do arquivo para ficar melhor a explicação.

Na linha 5 deve ser colocada a porta em que o serviço de SSH irá “escutar”, por esta porta que será feita toda a comunicação (é importante lembrar de liberar essa porta no seu Firewall caso ainda não tenha feito)

Na linha 9 deve ser colocado o endereço da placa de rede do seu servidor Linux que comunica com a sua rede interna.

Na linha 10 deve ser colocado o endereço externo do seu servidor, endereço responsável por comunicar com a internet.

Agora o parâmetro mais importante, que mencionei acima é o da linha 30 PermitRootLogin no, o valor desse parâmetro pode ser Yes ou no, mas recomendo fortemente que ele sempre seja no, a não ser que por algum motivo muito especial (não vejo nenhum) você precise logar direto com o root do servidor Linux, coisa que pode ser feita facilmente pelo comando “su –” no prompt de comando.

    

 
 

Se você quiser se aprofundar no assunto de SSH, segue o link de um material muito bom e usado como referencia por quase todos os administradores Linux. http://focalinux.cipsga.org.br/guia/avancado/ch-s-ssh.html

 
 

RESUMO: Este primeiro post foi apenas para mostrar o básico de SSH, tentarei colocar no próximo post mais detalhes e explicar melhor os arquivos de configuração dos serviços, o próximo post será sobre SQUID.