sexta-feira, 26 de novembro de 2010

Setar Data /Hora Linux

Setar a data do sistema:

# 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

Neste Link esta disponível um bom material para iniciar suas configurações no squid, em breve estarei publicando um tutorial de como fazer autenticação em AD da microsoft.

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

O texto abaixo consegui na net e atraves dele consegui compreender o que estava acontecendo com meu proxy pois conseguia limitar download mais upload não funcionava. Eis a Solução HTB, abaixo segue tutorial de como instalar em Fedora.
_____________________________________________________________________

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.
2 - O upload é controlado pelo tráfego que é enviado pela placa EXTERNA. Tudo que SAI do linux pela placa externa (destinado a internet), é considerado upload.
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:
Quando uma requisão chega vinda de um usuário interno o sistema sabe qual é o ip dele, e essa requisição é repassada diretamente para a internet. Sendo assim, o linux sabe DE QUEM É um determinado upload, sabendo o ip do usuário o upload pode ser enquadrado em uma das classes do QOS, e é devidamente limitado pela banda daquela classe.

Com o squid:
O usuário faz uma requisição para o squid. E esse, por sua vez, vai na internet buscar os dados.
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).

Quando o squid faz upload, o trafego que está saindo pela placa de rede da internet é indentificado pelo linux como pertencente ao proprio linux (é o squid que está fazendo esse upload, não o usuário). E, como o qos não tem como identificar o ip do usuário que solicitou aquele tráfego, ele não se enquandra em classe nenhuma.

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.
_______________________________________________________________________



GERENCIAMENTO NO CONTROLE DE BANDA – HTB-Tools



ATENÇÃO: O PACOTE DO HTB-TOOLS E O ARQUIVO BITOPS.H ENCONTRAM-SE ANEXADOS.

1. INTRODUÇÃO
A economia de recursos, equipamentos, serviços, compartilhamento de Internet entre outras vantagens tornam indispensável o uso de redes de computadores em diversas instituições. Porém é preciso dividir o uso dos recursos entre os usuários de forma que todos possam usufruir sem prejudicar os demais. Esse controle pode ser resolvido com o HTB, que impõe o controle na banda e, então, garante uma taxa de conexão de acordo com as necessidades e as prioridades de cada usuário.

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 { start | stop | stats | generate }
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; };