sexta-feira, 26 de novembro de 2010
Setar Data /Hora Linux
# date -s "03/27/2007 11:19"
(mês/dia/ano)
Fazer o hardware receber a hora setada no sistema:
# hwclock -w
quinta-feira, 29 de julho de 2010
Monitorando Squid em Tempo Real
Dei uma procurada na Internet e me deparei com o SQStat. O que ele faz? Bem… Trata-se de um script desenvolvido em PHP que mostra em uma página todos os acessos que estão acontecendo em tempo real e também permite que você configure um tempo para atualização automática desta página.
Sei que existem outras soluções, como o iptraf e o tcptrack, porém, o SQStat mostra o resultado de uma forma muito mais agradável e amigável.
Vou partir da idéia que você já tenha o Proxy (o Squid no caso) e um webserver (o apache, no caso) instalado.
A instalação dele é muito simples. O primeiro paço é baixar o arquivo com o comando abaixo:
# wget -c http://downloads.aprendendolinux.com/programas/sqstat-1.20.tar.gz
(O comando acima baixa um pacote traduzido por mim para Putuguês do Brasil)
Ou com o comando:
# wget -c http://samm.kiev.ua/sqstat/sqstat-1.20.tar.gz
(O comando acima baixa o pacote do site oficial, porém em Inglês)
Agora, vamos descompacta-lo:
# tar -zxvf sqstat-1.20.tar.gz
Vamos agora mover a pasta para o WebServer:
# mv sqstat /var/www/
Vamos agora entrar no diretório do WebServer onde você moveu o pasta:
# cd /var/www/sqstat/
O próximo passo é renomear o arquivo config.inc.php.defaults para config.inc.php:
# mv config.inc.php.defaults config.inc.php
Usando o seu editor predileto, edite o arquivo config.inc.php e configure-o como eu vou mostrar abaixo:
Em “$squidhost[0]=” coloque 192.168.254.1 (ip do servidor onde você instalou o SQStat);
Em “$squidport[0]=” coloque a porta onde o Squid está escutando no servidor;
Em “$resolveip[0]=” coloque true para que o SQStat resolva os nomes das maquinas;
Em “$group_by[0]=” você pode colocar “host” se não utilizar autenticação no Squid, o que mostrará os IPs dos clientes;
Você também pode colocar “nome-de-usuario” se utilizar autenticação, assim todas as conexões mostradas na página serão agrupadas por nome de usuário ao invés de IPs.
Para que isso tudo funcione, é necessário também adicionar algumas linhas ao arquivo de configuração do Squid. Novamente com o seu editor predileto, edite o arquivo /etc/squid/squid.conf e adicione as linhas que demonstrarei abaixo:
acl manager proto cache_object
acl webserver src 192.168.254.1/255.255.255.255
http_access allow manager webserver
http_access deny manager
Obs1.: Na linha “acl webserver …”, substitua “192.168.254.1″ pelo IP do servidor onde você instalou o SQStat;
Obs2.: Essas linhas deve ficar em cima de todas as acls do Squid.
Reinicie o Squid.
# /etc/init.d/squid restart
Pronto! O SQStat já está instalado e configurado. Para acessá-lo abra seu navegador e digite:
http://ip-do-servidor/sqstat/sqstat.php
quinta-feira, 15 de julho de 2010
Squid Autenticado em Base AD
Olá, vou apresentar neste tópico todas as etapas de configuração do Squid para que seja possível a autenticação de usuários do Active Directory de forma simplificado para o usuário, sem a necessidade de toda vez que abrir o navegador seja necessário informar usuário e senha.
Este artigo é baseado nas seguintes fontes:
http://www.vivaolinux.com.br/artigo/Squid-autenticando-em-base-Active-Directory/
http://wiki.squid-cache.org/ConfigExamples/Authenticate/WindowsActiveDirectory
http://www.vivaolinux.com.br/topico/Perguntas-Frequentes/SQUID-LENTO-AUTH-AD-VIA-NTLM
Para esta explicação, segue as versões utilizadas:
CentOS 5.0 2.6.18-128.1.6.el5
Squid 2.6.STABLE21
Samba 3.0.33 Release 3.7.el5
Vou apresentar esta implantação em 3 partes, nesta primeira fase iremos abordar o Linux conseguindo autenticar utilizando Kerberos, que é o padrão que a Microsoft utiliza ao gerar o token de autenticação no Active Directory, existe o formato simplificado chamado de ntlm, que é menos seguro e foi sendo substituido desde as versões do Windows 2000, largamente utilizado na era WinNT.
Vamos lá:
Editando o arquivo /etc/krb5.conf:
[logging]
default = FILE:/var/log/krb5libs.log
kdc = FILE:/var/log/krb5kdc.log
admin_server = FILE:/var/log/kadmind.log
[libdefaults]
default_realm = DOMINIO.LOCAL
[realms]
DOMINIO.LOCAL = {
kdc = domaincontroller.dominio.local
admin_server = domaincontroller.dominio.local
kpasswd_server = domaincontroller.dominio.local
default_domain = dominio.local
}
[domain_realm]
.dominio.local = DOMINIO.LOCAL
[appdefaults]
pam = {
debug = false
ticket_lifetime = 36000
renew_lifetime = 36000
forwardable = true
krb4_convert = false
}
Com estas configurações acima (adequando as nomenclaturas de acordo com o seu ambiente), o kerberos estará pronto para "entender" o domínio do AD.
No arquivo /etc/hosts.conf corrija e insira algumas informações:
# Do not remove the following line, or various programs
# that require network functionality will fail.
127.0.0.1 localhost.localdomain localhost
192.168.0.20 proxy.dominio.local proxy
::1 localhost6.localdomain6 localhost6
Novamente faça a adequação necessária dos nomes e ip conforme o seu ambiente
Segunda parte -
Agora faremos a configuração do Samba para que o nosso servidor Linux entre como uma "estação windows" cadastrada no domínio do AD.
Abaixo o arquivo smb.conf personalizado para que seja possível a conexão do Squid ao Active Directory:
Local do arquivo:
/etc/samba/smb.conf
[global]
workgroup = [DOMÍNIO_NO_FORMATO_NETBIOS]
server string = Proxy Server
netbios name = [NOME_NETBIOS_SERVIDOR_PROXY]
log level = 3
log file = /var/log/samba/%m.log
max log size = 50
socket options = TCP_NODELAY SO_RCVBUF=8192 SO_SNDBUF=8192
security = ads
realm = [NOME_DOMÍNIO_NO_FORMATO_DNS]
encrypt passwords = yes
ldap ssl = no
password server = [NOME_SERVIDOR_DC_AD]
idmap uid = 10000-20000
idmap gid = 10000-20000
winbind use default domain = yes
preferred master = no
dns proxy = no
Após configurar o arquivo acima, sincronize a hora do servidor linux com o servidor active directory:
ntpdate -4 [IP_DC_AD]
No arquivo /etc/resolv.conf deverá estar indicado os ips dos servidores DNS do AD. Digite o seguintes comandos para associar o servidor linux ao AD como membro do domínio:
Inicie o samba e o winbind:
service smb restart
service winbind restart
e depois:
#kinit administrator@DOMAIN.LOCAL.
#net ads join -U administrator@DOMAIN.LOCAL.
Substitua DOMAIN.LOCAL por suas configurações
Para verificar se tudo ocorreu como esperado:
#wbinfo -t <-- testa a conexão com o AD e retorna a seguinte mensagem em caso de sucesso: checking the trust secret via RPC calls succeeded
#wbinfo -u <-- retorna a lista de usuários do AD
Terceira Parte -
Agora vamos finalizar as configurações no arquivo do squid.conf, afim de completarmos a integração da autenticação squid juntamente ao active directory:
No arquivo /etc/squid/squid.conf:
O primeiro passo é ativar o processo de autenticação no squid:
auth_param ntlm program /usr/bin/ntlm_auth --helper-protocol=squid-2.5-ntlmssp
auth_param ntlm children 30
o segundo criar algumas acl's para efetivar o processo de autenticação:
acl AuthorizedUsers proxy_auth REQUIRED
http_access allow all AuthorizedUsers
Com isso, basta você configurar o proxy em seu navegador, estar logado no domínio onde o seu servidor proxy está associado e pronto! Você vai observar que no log vai aparecer algumas mensagens de TCP_DENIED/407, isso é normal e tem haver com a tentativa de autenticação NTLM - vide informações em: http://wiki.squid-cache.org/ConfigExamples/Authenticate/WindowsActiveDirectory
Aprimorando suas regras:
Para criar uma acl específica para um usuário ou grupo, utiliza uma acl buscando informações de um comando externo:
external_acl_type ldap_group ttl=300 children=200 %LOGIN /usr/lib/squid/wbinfo_group.pl
Ela retornará os grupos de um determinado usuário autenticado, basta criar uma acl para selecionar o grupo:
acl TIN1 external ldap_group -i proxytin1
onde o grupo no active directory estará como "proxytin1"
Ai você pode criar uma acl para um determinado site:
acl sitesTIC1 url_regex orkut.com
E bloquear logo abaixo:
http_access deny sitesTIC1 TIN1
Agora teste tudo.
Obs: Realizei testes em varios windows o unico que não funciona e 2008R2.
Configurando SQUID
Configurando seu squid
Limpando o Cache do Squid
Abaixo explicação de como limpar o cache do squid 2.6.
abra o terminal e pare o serviço do squid
# /etc/init.d/squid stop
ou
# service squid stop
em seguida
acesse o diretório onde esta o cache e de o comando de exclusão total
# cd /var/spool/squid/
# rm -rf *
Agora reconstrua os diretórios
# squid -z
Inicie novamente os serviços
# /etc/init.d/squid start
ou
# service squid start
e pronto seu cache esta limpo e operando novamente.
terça-feira, 13 de julho de 2010
Controle de banda com HTB (Controlando Upload e Download) + Squid
_____________________________________________________________________
Interferência do Squid no funcionamento do QOS.
Quando se usa o squid e o qos ao mesmo tempo, o controle da velocidade do upload não funciona, os usuários conseguem fazer upload a toda velocidade. Entretanto, o controle do download funciona, mesmo quando os arquivos já estão no cache.
Porque isso acontece?
1 - O nosso QOS só é capaz de controlar o tráfego que é ENVIADO por uma determinada placa de rede.
3 - O download é controlado pelo tráfego que é enviado na placa INTERNA. Todo que SAI do linux pela placa interna (destinado aos usuários) é considerado download.
4 - Sem o squid, o trafego entre essas duas placas é praticamente um-pra-um, tudo que entra de um lado, sai do outro, e vice-versa.
5 - O squid funciona exatamente NO MEIO das duas placas, interferindo na comunicacao normal que o linux faria entre elas.
Sem o squid:
Com o squid:
Quando você usa o squid, todo o tráfego do http pertence ao próprio squid. E o squid usa o ip do proprio Linux (onde ele está instalado).
E como se o Linux estivesse fazendo todos os downloads e uploads do http sozinho, sem os usuários da lan.
Assim o linux NÃO SABE a qual usuário pertence um determinado tráfego, passa a ser TUDO do Squid. Principalmente porque o squid pode guardar esses dados no cache e pode entregá-lo para mais de um usuário interno. (afinal, essa é a razão do squid existir).
Mas então, porque o download é limitado?
Quando o squid envia dados para um cliente que está na LAN, o qos detecta um trafego de saida na placa de rede interna e ele tem como saber para qual ip interno esses pacotes serão entregues. Dessa forma, o tráfego é enquadrado em uma classe e a velocidade é limitada de acordo com a banda estabelecida para essa classe. MESMO QUE ESSES DADOS ESTEJAM VINDO DO CACHE.
Na verdade, o linux não sabe se o squid pegou o dado no cache, ou foi buscar na internet. Como o qos atua na saida da placa interna, tudo que passar por alí será limitado, independente de onde veio. "
No caso o texto generaliza qualquer QOS.
_______________________________________________________________________
ATENÇÃO: O PACOTE DO HTB-TOOLS E O ARQUIVO BITOPS.H ENCONTRAM-SE ANEXADOS.
1. INTRODUÇÃO
2. O QUE É HTB?
O HTB (Hierarchical Token Bucket) é um recurso nativo do kernel GNU/Linux utilizado no controle do tráfego de um link físico de acesso a Internet em uma rede de computadores.
3. OS PRÉ-REQUISITOS PARA USAR O HTB E HTB-TOOLS NO FEDORA 9
A distribuição FEDORA 9 com o kernel Linux versão 2.6.18 ou superior deve estar corretamente instalada porque os módulos do HTB já estarão inclusos no kernel.
4. A INSTALAÇÃO DO HTB E DO HTB-TOOLS NO FEDORA 9
Confirmado que o seu kernel é pertencente a versão 2.6.18 ou superior, iremos agora começar todo o procedimento para a instalação e configuração do HTB-Tools.
1º passo
Realizar a instalação dos pacotes os quais o HTB Tools possui dependência. Os pacotes são: Make, Flex, Gcc e o Dialog. Em seu terminal, digite o seguinte comando, sendo usuário root:
[root@servidor] yum install make flex gcc dialog
2º passo
Agora iremos levantar o seguintes módulos necessários. Em seu terminal, digite o seguinte comando, sendo usuário root:
[root@servidor] modprobe sch_htb
[root@servidor]modprobe sch_sfq
[root@servidor]modprobe cls_u32
3º passo
Crie o diretório man8 (na instalação será copiado um arquivo de manual para esta
pasta). E caso não seja criado, apresentará erro na instalação do pacote HTB-Tools.
[root@servidor] mkdir /usr/local/man/man8
4º passo
Agora, realize o download do arquivo htb_tools-0.3.0a.tar.gz. Feito o download, descompactamos o pacote:
[root@servidor] tar –zxvf htb_tools-0.3.0a.tar.gz
Entre no diretório HTB-TOOLS-0.3.0a.
[root@servidor] cd HTB-TOOLS-0.3.0a
Dentro do diretório HTB-TOOLS-0.3.0a, crie um diretório dentro do subdiretório /include. O diretório criado terá o nome de asm (/include/asm):
[root@servidor] mkdir /include/asm
Após criar o diretório /include/asm, copie o arquivo bitops.h (o arquivo está disponibilizado junto com o artigo) para dentro dele.
Feito isto, o HTB-Tools já se encontra todo configurado e pronto para a sua instalação.
Volte para a raiz do diretório HTB-TOOLS-0.3.a e execute os seguintes comandos:
[root@servidor /HTB-TOOLS-0.3.0a] make && make full
Isto irá instalar os binários q_parser, q_show, q_checkcfg, htb, htbgen no diretório
/sbin , o script rc.htb irá para o diretório de scripts que for indicado, os dois arquivos de
configuração padrão eth0-qos.cfg para upload and eth1-qos.cfg para download irão
para a pasta /etc/htb e também instalará o q_show.php e o gerador de configurações
wHTB-tools.
Pronto, o HTB-TOOLS está funcionando em conjunto com o HTB.
5. CONFIGURANDO O HTB-TOOLS NO FEDORA 9
É bastante trivial a configuração do HTB-Tools. Imaginando que o tráfego da rede interna tenha que passar da interface de rede eth0 (placa onde está sua rede interna, isto é, conectada no swicth) para sair pela eth1 (placa rede conectada com o roteador), então, basta alterar o eth0-qos.cfg padrão (isto para o eth0, é claro) conforme a necessidade da rede. Digamos que se deseja que o tráfego da rede de uma empresa 192.168.1.0/24 (rede_1) tenha exclusividade de 512Kbps no máximo e 480Kbps garantidos nos dias de pico. Sabendo que a banda máxima que a rede pode atingir é de 5Mbps, então, o arquivo eth0-qos.cfg ficaria assim:
class Rede_Empresa {
bandwidth 5000;
limit 5000;
burst 0;
priority 1;
client rede_1 {
bandwidth 480;
limit 512;
burst 0;
priority 1;
dst {
192.168.1.0/24;
};
};
client rede_geral {
bandwidth 8;
limit 5000;
burst 0;
priority 2;
dst {
0.0.0.0/24;
};
};
};
class default {
bandwidth 8;
};
Um diferencial que o HTB possui em relação as demais ferramentas de controle de tráfego é que você pode determinar qual a banda mínima garantida que o usuário irá ter e qual o limite máximo que ele usará caso haja disponibilidade no link. Feito esta configuração, basta executar o seguinte comando para que as regras de controle de banda entrem em vigor:
[root@servidor] htb eth0 start
Está feito o controle de banda desta empresa, dando exclusividade de 512Kbps para a rede 1, assim também, limitando a banda da rede para 4520Kbps. Entende-se que, tudo o que não estiver declarado como a rede_1, faz parte da classe default e não da classe Rede_Empresa. Há outras variantes para a configuração do HTB-TOOLS. No caso acima citado, fizemos o controle do download (dst = destination). Para controlar o upload utiliza-se src (source) no lugar do dst. Pode ser usado o IP de um host, no lugar de usar o IP da rede, apenas citando o ip seguido da máscara. (Ex.: 192.168.1.35/24
Se quiser controlar uma porta específica, basta incluir o número da porta logo após o IP da rede/host. (Ex.ara a porta 80 ==> 192.168.1.0/24 80). Outros controles que podem ser usado na administração usando o HTB com HTBTOOLS é:
# htb
ou
# htb { help | version }
Onde:
interface - a interface de rede que você deseja controlar
start - aplica as propriedades do arquivo de configuração na interface
stop - apaga as regras aplicadas a interface específica
stats - mostra, em tempo real, a estatística de tráfego para a interface
generate - apenas cria o script para aplicar as regras
help - mostra algumas informações úteis
version - mostra a versão e informações de direitos autorais
AGORA O MELHOR DE TODOS, VOCÊ PODE SIMPLIFICAR TUDO ISSO, UTILIZANDO A INTERFACE GRÁFICA DO HTB-TOOLS. VÁ NO DIRETÓRIO DO HTB-TOOLS.
[root@servidor] cd HTB-TOOLS-0.3.0a
Agora basta digitar:
[root@servidor] ./setup
Arquivos: bitops
Htb_Tools
_____________________________________________________________________
Outros Exemplos de Configurações
###############
# eth1-qos.cfg #
################
# for how to configure and use see docs/HowTo/
class REDE_Interna {
bandwidth 256; (VELOCIDADE MINIMA GARANTIDA PARA O CLIENTE DESTA INTERFACE)
limit 333; (VELOCIDADE MAXIMA DO LINK)
burst 2;
priority 1;
client ALAN { (o nome client e obrigatorio sem espaços)
bandwidth 25; (VELOCIDADE MINIMA GARANTIDA DO CLIENTE)
limit 256; (VELOCIDADE MAXIMA DO CLIENTE)
burst 2;
priority 4; (PRIORIDADE DA BANDA PARA O CLIENTE)
upload 75; (VELOCIDADE DO UPLOAD DO CLIENTE)
dst {
192.168.0.2/24; (IP DO CLIENTE / OU REDE)
};
};
};
class default { bandwidth 8; };