Mostrando postagens com marcador TUTORIAL. Mostrar todas as postagens
Mostrando postagens com marcador TUTORIAL. Mostrar todas as postagens
sexta-feira, 27 de fevereiro de 2009
Aumentando a vida útil dos HDs
Recentemente, uma notícia no br-linux alertou sobre a possibilidade do gerenciamento de energia de algumas distribuições GNU/Linux, do Ubuntu em especial, estarem reduzindo a vida útil dos discos rígidos (HDs). Como noticiado em diversos sites da internet [1,2], isto não é um bug do Ubuntu. Na verdade, o Ubuntu apenas segue as recomendações equivocadas fornecidas pelos próprios fabricantes de notebooks e desktops. Neste artigo, o problema é explicado em detalhes e uma solução bastante simples é apresentada. Esta é baseada em um script que necessita ser executado uma única vez e faz todo o trabalho para correção do problema. Além disso, o artigo termina fazendo uma breve discussão sobre o pacote smartmontools que monitora o estado do HD e informa quando este está na eminência de sofrer alguma falha.
Veja o artigo completo no Alex's Weblog
sexta-feira, 6 de fevereiro de 2009
Eu Cavo, Tu Cavas, Ele Cava... Tutorial de DIG
O DIG é um grande canivete suíço para quem está querendo fazer auditorias em um servidor DNS e testar suas configurações. No caso para quem usa o Windows, ele vem para substituir o nslookup. Abaixo seguem algumas dicas e comandos para você testar suas configurações (e os dos outros também) de dns. DIG quer dizer cavar!!! Então vamos lá começar a esburacar a internet!!!
Instalação:
Se você utiliza linux, a maioria das distribuições já trazem o dig instalado, mas por via das dúvidas, você pode usar seu gerenciador de pacotes prediletos e instalar.
Ex:
No Debian, Ubuntu e Derivados
# apt-get install dnsutils
Gentoo
# emerge dnsutils
Mandriva
# urpmi dnsutils
RedHat, Fedora e CentOS
# yum install dnsutils
No Windows:
Também dá para usar o dig no Windows. Para isso, baixe o seguinte programa: http://members.shaw.ca/nicholas.fong/dig/dig-files.zip e descompacte em uma pasta, por exemplo c:\dig
Abaixo, vou listar a instalação no Windows Vista, XP e 2000. Não esqueça que você não pode usar o notepad (bloco de notas) para editar esse arquivo, pois ele vai colocar em formato DOS e o dig não conseguirá ler. Use o NOTEPAD++ para isso. http://sourceforge.net/project/downloading.php?groupname=notepad-plus&filename=npp.5.1.3.Installer.exe&use_mirror=ufpr
Se você usa Windows Vista (Haja Coragem!!)
Crie o arquivo resolv.conf em %systemroot%\System32\Drivers\Etc, onde %systemroot% é a pasta de instalação do Windows.
Ex:
c:\windows\System32\Drivers\Etc\resolv.conf
Dentro do resolv.conf coloque apenas o ip do seu servidor DNS da seguinte forma:
nameserver 192.168.0.1
Teste com o comando dig www.uol.com.br +noall +answer e veja se o resultado é semelhante a este:
www.uol.com.br. 48 IN A 200.221.2.45
www.uol.com.br. 48 IN A 200.98.249.120
Se você usa o Windows XP, Windows 2000 ou 2003 Server
Abra o arquivo que resolv.conf que está na pasta c:\dig e substitua o 198.80.55.1 pelo ip do seu servidor DNS.
Teste com o comando
dig www.uol.com.br +noall +answer
e veja se o resultado é semelhante a este:
www.uol.com.br. 48 IN A 200.221.2.45
www.uol.com.br. 48 IN A 200.98.249.120
Caso não funcione, apague o conteúdo do arquivo, deixe ele em branco.
Teste com o comando
dig www.uol.com.br +noall +answer
e veja se o resultado é semelhante a este:
www.uol.com.br. 48 IN A 200.221.2.45
www.uol.com.br. 48 IN A 200.98.249.120
Caso não funcione
Crie o arquivo resolv.conf em %systemroot%\System32\Drivers\Etc, onde %systemroot% é a pasta de instalação do Windows.
Ex:
c:\windows\System32\Drivers\Etc\resolv.conf
Dentro do resolv.conf coloque apenas o ip do seu servidor DNS da seguinte forma:
nameserver 192.168.0.1
Teste com o comando
dig www.uol.com.br +noall +answer
e veja se o resultado é semelhante a este:
www.uol.com.br. 48 IN A 200.221.2.45 www.uol.com.br. 48 IN A 200.98.249.120
Obs: O Artigo vai trazer uma série de comandos com resultados e explicações. No fim do artigo, vou colocar somente os comandos (para os mais apressadinhos).
Consulta simples:
# dig www.dailson.com.br
O Resultado:
dailson@dailson:~/site/copias$ dig dailson.com.br
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 61275
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 2, ADDITIONAL: 2
;; QUESTION SECTION:
;dailson.com.br. IN A
;; ANSWER SECTION:
dailson.com.br. 486 IN A 208.98.47.3
;; AUTHORITY SECTION:
dailson.com.br. 486 IN NS ns5.dsgx.org.
dailson.com.br. 486 IN NS ns4.dsgx.org.
;; ADDITIONAL SECTION:
ns4.dsgx.org. 21641 IN A 208.98.47.5
ns5.dsgx.org. 21641 IN A 208.98.47.6
;; Query time: 4 msec
;; SERVER: 192.168.20.1#53(192.168.20.1)
;; WHEN: Fri Nov 21 12:22:39 2008
;; MSG SIZE rcvd: 124
# dig dailson.com.br +noall +answer
A Resposta sem mais delongas é:
dailson.com.br. 179 IN A 208.98.47.3
O que podemos fazer o com DIG?
Quero saber, quem são os servidores de nomes do yahoo
# dig yahoo.com
;; QUESTION SECTION:
;yahoo.com. IN A
;; ANSWER SECTION:
yahoo.com. 21558 IN A 68.180.206.184
yahoo.com. 21558 IN A 206.190.60.37
;; AUTHORITY SECTION:
yahoo.com. 558 IN NS ns4.yahoo.com.
yahoo.com. 558 IN NS ns5.yahoo.com.
yahoo.com. 558 IN NS ns6.yahoo.com.
yahoo.com. 558 IN NS ns8.yahoo.com.
yahoo.com. 558 IN NS ns1.yahoo.com.
yahoo.com. 558 IN NS ns2.yahoo.com.
yahoo.com. 558 IN NS ns3.yahoo.com.
;; ADDITIONAL SECTION:
ns1.yahoo.com. 70933 IN A 68.180.131.16
ns2.yahoo.com. 69243 IN A 68.142.255.16
ns3.yahoo.com. 69243 IN A 217.12.4.104
ns5.yahoo.com. 69243 IN A 119.160.247.124
ns6.yahoo.com. 75765 IN A 202.43.223.170
ns8.yahoo.com. 75765 IN A 202.165.104.22
Quero saber quem são os servidores de email do yahoo
# dig yahoo.com MX
;; QUESTION SECTION:
;yahoo.com. IN MX
;; ANSWER SECTION:
yahoo.com. 7198 IN MX 1 g.mx.mail.yahoo.com.
yahoo.com. 7198 IN MX 1 a.mx.mail.yahoo.com.
yahoo.com. 7198 IN MX 1 b.mx.mail.yahoo.com.
yahoo.com. 7198 IN MX 1 c.mx.mail.yahoo.com.
yahoo.com. 7198 IN MX 1 d.mx.mail.yahoo.com.
yahoo.com. 7198 IN MX 1 e.mx.mail.yahoo.com.
yahoo.com. 7198 IN MX 1 f.mx.mail.yahoo.com.
;; AUTHORITY SECTION:
yahoo.com. 488 IN NS ns3.yahoo.com.
yahoo.com. 488 IN NS ns4.yahoo.com.
yahoo.com. 488 IN NS ns5.yahoo.com.
yahoo.com. 488 IN NS ns6.yahoo.com.
yahoo.com. 488 IN NS ns8.yahoo.com.
yahoo.com. 488 IN NS ns1.yahoo.com.
yahoo.com. 488 IN NS ns2.yahoo.com.
;; ADDITIONAL SECTION:
a.mx.mail.yahoo.com. 1798 IN A 67.195.168.31
b.mx.mail.yahoo.com. 1798 IN A 66.196.97.250
c.mx.mail.yahoo.com. 1798 IN A 216.39.53.3
c.mx.mail.yahoo.com. 1798 IN A 216.39.53.2
d.mx.mail.yahoo.com. 1798 IN A 66.196.82.7
e.mx.mail.yahoo.com. 1798 IN A 216.39.53.1
f.mx.mail.yahoo.com. 1798 IN A 209.191.88.247
f.mx.mail.yahoo.com. 1798 IN A 68.142.202.247
g.mx.mail.yahoo.com. 1798 IN A 209.191.118.103
g.mx.mail.yahoo.com. 1798 IN A 206.190.53.191
ns1.yahoo.com. 70863 IN A 68.180.131.16
ns2.yahoo.com. 69173 IN A 68.142.255.16
ns3.yahoo.com. 69173 IN A 217.12.4.104
ns5.yahoo.com. 69173 IN A 119.160.247.124
Para saber quem tem autoridade sobre o domínio yahoo.com (de forma simplificada)
# dig yahoo.com NS +noall +answer
yahoo.com. 32 IN NS ns6.yahoo.com.
yahoo.com. 32 IN NS ns8.yahoo.com.
yahoo.com. 32 IN NS ns1.yahoo.com.
yahoo.com. 32 IN NS ns2.yahoo.com.
yahoo.com. 32 IN NS ns3.yahoo.com.
yahoo.com. 32 IN NS ns4.yahoo.com.
yahoo.com. 32 IN NS ns5.yahoo.com.
Veja que só foi listado os nameservers
Agora só os servidores de email
# dig yahoo.com MX +noall +answer
yahoo.com. 6716 IN MX 1 f.mx.mail.yahoo.com.
yahoo.com. 6716 IN MX 1 g.mx.mail.yahoo.com.
yahoo.com. 6716 IN MX 1 a.mx.mail.yahoo.com.
yahoo.com. 6716 IN MX 1 b.mx.mail.yahoo.com.
yahoo.com. 6716 IN MX 1 c.mx.mail.yahoo.com.
yahoo.com. 6716 IN MX 1 d.mx.mail.yahoo.com.
yahoo.com. 6716 IN MX 1 e.mx.mail.yahoo.com.
Agora uma consulta generalizada, vamos pedir para o servidor listar tudo:
# dig yahoo.com ANY +noall +answer
yahoo.com. 172792 IN NS ns3.yahoo.com.
yahoo.com. 172792 IN NS ns4.yahoo.com.
yahoo.com. 172792 IN NS ns5.yahoo.com.
yahoo.com. 172792 IN NS ns1.yahoo.com.
yahoo.com. 172792 IN NS ns2.yahoo.com.
yahoo.com. 6668 IN MX 1 e.mx.mail.yahoo.com.
yahoo.com. 6668 IN MX 1 f.mx.mail.yahoo.com.
yahoo.com. 6668 IN MX 1 g.mx.mail.yahoo.com.
yahoo.com. 6668 IN MX 1 a.mx.mail.yahoo.com.
yahoo.com. 6668 IN MX 1 b.mx.mail.yahoo.com.
yahoo.com. 6668 IN MX 1 c.mx.mail.yahoo.com.
yahoo.com. 6668 IN MX 1 d.mx.mail.yahoo.com.
yahoo.com. 20958 IN A 206.190.60.37
yahoo.com. 20958 IN A 68.180.206.184
Ai você me diz que quer listar não só os NS (Name Server), A (Address) e servidores de email MX (Mail eXchange). Mas gostaria de ver toda a base de endereços do yahoo... Bom... isso só é possível se o administrador cochilou na configuração do DNS e deixou aberto. Mas você pode começar a tentar, e ver que tem alguns servidores ai que permitem isso.
Na verdade, para consultar, você tem que tentar fazer um XFER, uma transferência de zona, e se passar por um servidor DNS secundário.
No yahoo não funciona. O comando é o seguinte...
# dig yahoo.com AXFR
; <<>> DiG 9.4.1-P1.1 <<>> yahoo.com AXFR
;; global options: printcmd
; Transfer failed.
ou ainda você pode tentar se passar pelo próprio yahoo.com, dizendo que é o próprio servidor secundário, dessa forma;
# dig -t AXFR yahoo.com @ns2.yahoo.com
# dig -t AXFR yahoo.com @ns3.yahoo.com
# dig -t AXFR yahoo.com @ns4.yahoo.com
# dig -t AXFR yahoo.com @ns5.yahoo.com
eja que ele não permitiu, mas achei um que vacilou e deixou toda a base
Teste você mesmo:
# dig -t axfr inter.net @ns02.eusc.inter.net
Mais um de bonus para vc ;)
# dig @luit.iitg.ernet.in iitg.ernet.in axfr
Listando os Servidores que já tem endereços IPV6 na sua base.
# dig yahoo.com AAAA
;; QUESTION SECTION:
;yahoo.com. IN AAAA
;; AUTHORITY SECTION:
yahoo.com. 600 IN SOA ns1.yahoo.com. hostmaster.yahoo-inc.com. 2008112104 3600 300 1814400 600
;; Query time: 328 msec
;; SERVER: 192.168.20.1#53(192.168.20.1)
;; WHEN: Fri Nov 21 13:52:55 2008
;; MSG SIZE rcvd: 88
Veja que não apareceu a sessão ANSWER (Resposta), ou seja o yahoo ainda não tem registros IPV6 abertos, e pesquisei em vários outros provedores como gmail.
Fui achar registros AAAA nos orgãos oficiais como iana e isc.
# dig iana.org AAAA
;; ANSWER SECTION:
iana.org. 600 IN AAAA 2620:0:2d0:1::193
# dig isc.org AAAA
;; ANSWER SECTION:
isc.org. 3600 IN AAAA 2001:4f8:0:2::d
De acordo com as páginas de manual a opção +multiline você obtem as respostas dos Registros SOA de modo detlhado, semelhante a maneira que você escreve os arquivos do bind, listando o serial, a atualização (refresh), a nova tentantiva de acesso (retry), a expiração registro e o tempo de vida da tabela (minimum)
# dig +nocmd dsgx.org any +multiline
;; ANSWER SECTION:
dsgx.org. 17600 IN A 208.98.47.2
dsgx.org. 300 IN MX 10 mail.dsgx.org.
dsgx.org. 300 IN SOA ns. root.dsgx.org. (
998 ; serial
10800 ; refresh (3 hours)
120 ; retry (2 minutes)
259200 ; expire (3 days)
86400 ; minimum (1 day)
)
Outro Exemplo:
# dig +nocmd og.edu any +multiline
;; AUTHORITY SECTION:
edu. 10711 IN SOA L3.NSTLD.COM. NSTLD.VERISIGN-GRS.COM. (
2008112100 ; serial
1800 ; refresh (30 minutes)
900 ; retry (15 minutes)
604800 ; expire (1 week)
86400 ; minimum (1 day)
)
Fazendo um Traceroute de DNS.
Essa é um ótimo comando. Ele exibe toda a rota que o DNS fez para conseguir o IP do nome desejado, semelhante ao comando traceroute.
Vejamos um exemplo:
# dig www.uol.com.br +trace
# dig www.uol.com.br +trace
; <<>> DiG 9.4.1-P1.1 <<>> www.uol.com.br +trace
;; global options: printcmd
. 341189 IN NS j.root-servers.net.
. 341189 IN NS b.root-servers.net.
. 341189 IN NS h.root-servers.net.
. 341189 IN NS m.root-servers.net.
. 341189 IN NS l.root-servers.net.
. 341189 IN NS f.root-servers.net.
. 341189 IN NS k.root-servers.net.
. 341189 IN NS g.root-servers.net.
. 341189 IN NS d.root-servers.net.
. 341189 IN NS e.root-servers.net.
. 341189 IN NS c.root-servers.net.
. 341189 IN NS i.root-servers.net.
. 341189 IN NS a.root-servers.net.
;; Received 500 bytes from 192.168.20.1#53(192.168.20.1) in 5 ms
br. 172800 IN NS C.DNS.br.
br. 172800 IN NS A.DNS.br.
br. 172800 IN NS D.DNS.br.
br. 172800 IN NS B.DNS.br.
br. 172800 IN NS F.DNS.br.
br. 172800 IN NS E.DNS.br.
;; Received 284 bytes from 192.33.4.12#53(c.root-servers.net) in 312 ms
uol.com.br. 86400 IN NS thomas.uol.com.br.
uol.com.br. 86400 IN NS eliot.uol.com.br.
uol.com.br. 86400 IN NS charles.uol.com.br.
uol.com.br. 86400 IN NS borges.uol.com.br.
;; Received 180 bytes from 200.219.159.10#53(F.DNS.br) in 518 ms
www.uol.com.br. 300 IN A 200.98.249.120
www.uol.com.br. 300 IN A 200.221.2.45
uol.com.br. 3600 IN NS borges.uol.com.br.
uol.com.br. 3600 IN NS eliot.uol.com.br.
;; Received 137 bytes from 200.98.255.99#53(charles.uol.com.br) in 199 ms
Veja que a rota começou pelos servidores raizes, que repassou para os servidores do registro.br e depois foi repassado aos servidores do UOL. Faça vários testes, você verá que realmente o TCP/IP é um protocolo e tanto!
Descobrindo as propriedades do SOA de um Domínio.
Este comando exibe as propriedades de quem tem autoridade sobre um dominio (SOA).
# dig uol.com.br +nssearch
# dig uol.com.br +nssearch
SOA eliot.uol.com.br. root.uol.com.br. 2009010601 7200 3600 432000 3600 from server eliot.uol.com.br in 210 ms.
SOA eliot.uol.com.br. root.uol.com.br. 2009010601 7200 3600 432000 3600 from server borges.uol.com.br in 175 ms.
Descobrindo se seu servidor DNS está vulnerável.
Para saber se seu servidor DNS está vulnerável, execute o seguinte comando:
# dig +short @SeuServidorDNS porttest.dns-oarc.net TXT
Você pode testar, no seu próprio servidor DNS, desta forma:
# dig +short @127.0.0.1 porttest.dns-oarc.net TXT
porttest.y.x.w.v.u.t.s.r.q.p.o.n.m.l.k.j.i.h.g.f.e.d.c.b.a.pt.dns-oarc.net.
"200.xxx.xx.xx is POOR: 26 queries in 5.0 seconds from 1 ports with std dev 0"
Veja que o resultado do servidor DNS é POOR, ou seja, muito ruim! E seu servidor DNS está vulnerável a ataques.
Porém se o resultado for como este abaixo:
porttest.y.x.w.v.u.t.s.r.q.p.o.n.m.l.k.j.i.h.g.f.e.d.c.b.a.pt.dns-oarc.net.
"200.XXX.XXX.XXX is GREAT: 32 queries in 57.7 seconds from 32 ports with std dev 5625″
Fique tranquilo, você está protegido, pelo menos por enquanto...
Resumo dos Comandos Utilizados no tutorial:
Consulta completa:
# dig www.dailson.com.br
Consulta simplificada:
# dig dailson.com.br +noall +answer
Consulta aos servidores de Nomes do Yahoo
# dig yahoo.com
Quero saber quem são os servidores de email do yahoo
# dig yahoo.com MX
Para saber quem tem autoridade sobre o domínio yahoo.com (de forma simplificada)
# dig yahoo.com NS +noall +answer
Agora só os servidores de email
# dig yahoo.com MX +noall +answer
Agora uma consulta generalizada, vamos pedir para o servidor listar tudo:
# dig yahoo.com ANY +noall +answer
# dig yahoo.com AXFR
# dig -t AXFR yahoo.com @ns2.yahoo.com
# dig -t AXFR yahoo.com @ns3.yahoo.com
# dig -t AXFR yahoo.com @ns4.yahoo.com
# dig -t AXFR yahoo.com @ns5.yahoo.com
Transferindo Zona:
# dig -t axfr inter.net @ns02.eusc.inter.net
# dig @luit.iitg.ernet.in iitg.ernet.in axfr
Listando os Servidores que já tem endereços IPV6 na sua base.
# dig yahoo.com AAAA
# dig iana.org AAAA
# dig isc.org AAAA
Trazendo o resultado no formato Bind
# dig +nocmd dsgx.org any +multiline
# dig +nocmd og.edu any +multiline
Fazendo um Traceroute de DNS.
# dig www.uol.com.br +trace
Descobrindo as propriedades do SOA de um Domínio.
# dig uol.com.br +nssearch
Referencias:
http://hostlibrary.com/HowtocheckyourDNSrecordswithdig
http://www.madboa.com/geek/dig/
http://members.shaw.ca/nicholas.fong/dig/
http://serghei.net/windows/dig/
http://articles.techrepublic.com.com/5100-10878_11-5032892.html
Marcadores:
bind,
bind9,
dig,
howto dig,
howto nslookup,
nslookup,
test dns,
testar dns,
TUTORIAL,
tutorial dig
terça-feira, 30 de dezembro de 2008
Migração do Debian Etch para o Debian Lenny
O objetivo maior deste artigo é mostrar como um usuário do Debian pode migrar de uma versão para outra, superando os problemas que possam ser encontrados. Serão utilizados como base o Debian Etch 4.0 (versão estável nesta data - 04 de dezembro de 2008) e o Debian Lenny (versão de teste congelada e já quase virando estável).
Você encontra todos os detalhes no Wiki do meu amigo, Eriberto Mota.
sexta-feira, 5 de dezembro de 2008
Como saber que distribuição Linux você está usando??? - II A Missão
Por isso é que sempre digo, que a comunidade faz a força!!!
Escrevi o seguinte artigo por causa da dúvida de um colega e logo no primeiro comentário, o meu amigo Jorge Pereira mostra que além dos meus métodos arcaicos, existe um comando que resolve o meu problema. É o comando lsb_release.
No Ubuntu ele já vem instalado por padrão, porém no Debian, tive que fazer a instalação manualmente, através do apt-get.
Só para não passar em branco, o LSB - Linux Standard Base é a adoção de uma padronização que a maioria das distribuições Linux estão tomando. Para que toda distribuição Linux tenha arquivos, comandos e diretórios no mesmo local e de sintaxe igual.
Para instalar no Debian, faça:
# apt-get install lsb-release
Só uma observação: A instalação deste programa não quer dizer que você está instalando o padrão LSB, você está apenas instalando um utilitário LSB. ;-)
Depois faça:
lsb_release -a para saber que distribuição você está utilizando.
Veja o resultado no Ubuntu:
lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description: Ubuntu 8.04.1
Release: 8.04
Codename Hardy
No Debian:
lsb_release -a
No LSB modules are available.
Distributor ID: Debian
Description: Debian GNU/Linux 4.0 (etch)
Release: 4.0
Codename Etch
Agradeço a Jorge pela força!
Vida Longa ao SL!
Como saber que distribuição Linux você está usando???
Essa dúvida veio de um colega de trabalho que me perguntou. Qual comando para descobrir que Linux estou usando?
Bom, não há um comando para isso, pelo menos eu não conheço, porém dá para descobrir.
A primeira tentativa é mostrar o arquivo issue ou issue.net que fica em /etc. O que tem dentro deste arquivo, é exbido na tela de login do console. Lembram daquele pinguim bem grande que ficava na tela de login do conectiva?? Pois bem, hoje geralmente eles trazem o nome da distribuição. Vejam o conteúdo deste arquivo no ubuntu
# cat /etc/issue
Ubuntu 7.10 \n \l
Onde:
Ubuntu 7.10 -> Nome da Distruibuição e Versão
\n -> nome da máquina
\l -> terminal de login (tty1,...)
# cat /etc/issue.net
Ubuntu 7.10
Testei isso no Debian
# cat /etc/issue
Debian GNU/Linux 4.0 \n \l
No CentOS
# cat /etc/issue
CentOS release 5.2 (Final)
Kernel \r on an \m
# cat /etc/issue.net
CentOS release 5.2 (Final)
Kernel \r on an \m
Toda distribuição (pelo menos todas que mexi) tem um arquivo em /etc chmando algumacoisa_version ou algumacoisa-release.Kernel \r on an \m
Se você não sabe qual arquivo é, você pode procurá-lo com o comando ls desta forma:
# ls /etc/*release # ls /etc/*version
A saída vai ser o arquivo que contém a versão da sua distribuição.
Por exemplo: no Debian se chama:
/etc/debian_version
Conteúdo: 4.0
No Ubuntu, também é debian_version
Conteúdo: lenny/sid
No Gentoo é gentoo-release
Conteúdo: Gentoo Base System Release 1.12.11.1
No CentOS, é o redhat-release
Conteúdo: CentOS release 5.2 (Final)
Como desativar o BEEP do PC
Sabe aquele beep irritante do console do linux quando você tecla backspace ou tab para completar o comando?
As vezes dou aula em sala que tem 25 máquinas. Imagine os alunos aprendendo linux e cada um errando um tab por segundo...
Pois é, seus problemas se acabaram ;)
digite no terminal:
setterm -bfreq 0
e o beep vai para o espaço.
Só que isso só funciona para console corrente. Para fazer fucionar sempre, coloque este comando ou no .bashrc do seu diretório home ou em /etc/bash.bashrc
Outras dicas para desativar o beep estão em:
http://www.dicas-l.com.br/dicas-l/20080327.php
http://www.dicas-l.com.br/dicas-l/20080404.php
http://www.dicas-l.com.br/dicas-l/20080524.php
Dica:
Se quiser fazer uma sinfonia, teste
setterm -bfreq 100
setterm -bfreq 200
setterm -bfreq 500
setterm -bfreq 1000
...
As vezes dou aula em sala que tem 25 máquinas. Imagine os alunos aprendendo linux e cada um errando um tab por segundo...
Pois é, seus problemas se acabaram ;)
digite no terminal:
setterm -bfreq 0
e o beep vai para o espaço.
Só que isso só funciona para console corrente. Para fazer fucionar sempre, coloque este comando ou no .bashrc do seu diretório home ou em /etc/bash.bashrc
Outras dicas para desativar o beep estão em:
http://www.dicas-l.com.br/dicas-l/20080327.php
http://www.dicas-l.com.br/dicas-l/20080404.php
http://www.dicas-l.com.br/dicas-l/20080524.php
Dica:
Se quiser fazer uma sinfonia, teste
setterm -bfreq 100
setterm -bfreq 200
setterm -bfreq 500
setterm -bfreq 1000
...
quinta-feira, 20 de novembro de 2008
Controlando a taxa de download e upload de qualquer programa com o Trickle
Você pode controlar a taxa de download e upload de um programa que não possui esse controle interno através do trickle. Trickle em inglês quer dizer gotejar ou escorrer de modo devagar. É um conta gotas de conexão de rede.
Dependendo da sua distribuição linux, use o comando para instalar, mas em geral siga os passos abaixo:
Debian e afins
# apt-get install trickle
Fedora e Afins
# yum install trickle
ou ainda
# apt-get install trickle
# Gentoo, Librix...
emerge trickle
# Mandriva
# urpmi trickle
As opções do comando são as seguintes:
-s: Roda em modo standalone, sem precisar de um daemon
-d: Taxa de download em KBps (KiloBytes)
-u: Taxa de Upload em KBps
Exemplos:
Você quer limitar o uso de banda quando navega na internet com o firefox:
# trickle -s -d 10 -u 5 firefox
Quer baixar uma imagem do ubuntu com o wget mas sem detonar a banda do seu trabalho:
# trickle -s -d 15 -u 5 wget http://mirror.globo.com/ubuntu/releases/intrepid/ubuntu-8.10-desktop-i386.iso Iso limitará o download a 15KBps
Você deseja fazer uma atualização geral do seu sitema com o apt-get. Para isso tem duas formas.
Ou você usa o trickle:
# trickle -s -d 10 -u 5 apt-get upgrade # trickle -s -d 10 -u 5 apt-get dist-upgrade
Ou você usa o próprio controle de banda do apt-get, desta forma:
Abra o arquivo /etc/apt.conf (se não tiver este arquivo escreva em: /etc/apt/apt.conf.d/70debconf)
// // Acquire { http { Dl-Limit "x"; // x Kb/sec maximum download rate } } // //
O Desenvolvedor do Triclke é o Marius Aamodt Eriksen - marius@monkey.org e a página do programa é http://monkey.org/~marius/pages/?page=trickle
sexta-feira, 22 de agosto de 2008
Curso de Ubuntu Oficial da Canonical Traduzido para o Português
Curso bastante didático, com muitas figuras, abordando os principais tópicos do desktop ubuntu 8.04 e seus aplicativos mais comuns: efeitos no desktop, office, multimídia e muito mais.
Este trabalho é uma tradução do curso Ubuntu Desktop Training escrito pela Canonical Ltd. e pela comunidade Ubuntu Training.
Os tópicos abordados são:
- Capítulo 1 - Apresentação
- Capítulo 2 - Explorando o Desktop Ubuntu
- Capítulo 3 - Usando a Internet
- Capítulo 4 - Usando o OpenOffice
- Capítulo 5 - O Ubuntu e os Jogos
- Capítulo 6 - Personalizando o Desktop e Aplicativos
- Capítulo 7 - Fazendo o Máximo com Imagens e Fotos
- Capítulo 8 - Executando Músicas e Vídeos
- Capítulo 9 - Ajuda e Suporte do Ubuntu
- Capítulo 10 - Particionamento e Inicialização
- Apêndice A - Instalando Drivers das Placas NVIDIA ou ATI
- Apêndice B - Compiz Fusion e o Cubo para Iniciantes
terça-feira, 5 de agosto de 2008
Backup Incremental de Servidores e Estações Windows em Servidores Linux com o RSYNC
Backup de Servidores e Estações Windows com o RSYNC.
Este Artigo está publicado no VivaoLinux em
http://www.vivaolinux.com.br/artigo/Utilizando-o-RSYNC-para-fazer-backups-de-servidores-e-estacoes-Windows
1. Introdução
Quem utiliza o RSYNC para fazer backups entre máquinas Linux, sabe como é fácil manter backups centralizados e atualizados de forma fácil, eficiente e segura. E ainda mais se sua unidade de fita for em um servidor linux (como é o meu caso), você pode deixar seus scripts de backup rodando para reunir todos os dados importantes em uma única máquina para depois fazer o backup em fita magnética.
Antigamente (ou atualmente dependendo do Administrador da Rede) quando queríamos fazer backups entre servidores remotos e centralizá-los, geralmente utilizávamos o FTP, que através de alguns comandos é possível fazer a conexão, login e senha automático e ainda mandar todos os arquivos para serem feitos backups em um servidor.
O Grande problema ai é que o FTP manda a senha em texto plano pela rede e seus arquivos podem ser capturados durante a transferência.
O Rsync, como o nome sugere, é um programa que sincroniza remotamente os dados entre duas máquinas. Por ser baseado no antigo rcp (remote copy), o software herdou as propriedades de criptografia do protocolo SSH, o que torna sua transmissão de dados mais segura que o FTP.
Além das propriedades de segurança, o rsync utiliza o protocolo remote-update, o que aumenta assustadoramente sua velocidade e diminui a quantidade de dados transferidos, pois são trocados entre os servidores somente as diferenças entre dois grupos de arquivos.
Se alteramos uma dúzia de arquivos numa porção de centenas, ao executar um rsync do seu desktop para o servidor, somente os arquivos alterados serão enviados por upload e você ainda não corre o risco de algum espertinho utilizando um sniffer na rede capturar sua senha de FTP em texto plano.
Resumindo, existem pelo menos quatro situações onde o rsync pode te ajudar:
* copiando (ou sincronizando) arquivos entre dois diretórios locais;
* copiando (ou sincronizando) arquivos de sua máquina local para um servidor remoto;
* copiando (ou sincronizando) arquivos de um servidor remoto para sua máquina local;
* listando os arquivos de um diretório no servidor remoto (como um "remote ls").
Só uma curiosidade, o Rsync é feito pelo Andrew Tridgell, o mesmo autor do SAMBA.
Veja em: http://samba.anu.edu.au/rsync/
2. Como usar o RSYNC e SSH no Windows????
Vocẽ deve estar pensando em instalar o CYGWIN (http://www.cygwin.com/) para começar a o ssh e rsync não é? ESQUEÇA! Deixe o CYGWIN pra lá, existe um aplicativo chamando cwRsync que instala apenas o necessário para sua máquina Windows se comunicar com qualquer servidor Linux na hora, feito caldo de cana! E ainda é possível fazer um servidor, ou seja, o Windows ser um servidor Rsync para sincronização nas duas vias: Windows -> Linux e Linux -> Windows. Mas isto é objeto para outro artigo.
Uma dica, se você quiser basta copiar o diretório c:\Arquivos de Programas\cwRsync para qualquer estação que tem o mesmo efeito de usar o executável da instalação.
Bom, no Linux, já está tudo pronto, não precisa fazer nada (basicamente), pois a maioria das distribuições já trazem o ssh e rsync instalados por padrão, caso não tenha na sua distribuição, instale com o gerenciador de pacotes da sua preferência, ou baixe o código fonte e compile!
Rsync:
http://samba.anu.edu.au/rsync/
SSH:
http://www.openssh.com/
3 - A idéia!
O principal para mim é fazer os backups dos arquivos importantes do usuário sem que ele perceba que todos os seus dados estão sendo guardados de forma segura independente da vontade dele.
Por exemplo, você quer guardar os documentos da empresa ou ainda os emails corporativos.
Se você deixar esta responsabilidade nas mãos do usuário... bom ... você já sabe...
Mas que tal deixar uma tarefa agendada que faz isso diariamente... ????
4 - Obtendo e Instalando o cwRsync.
Você pode obter o cwRsync http://sourceforge.net/project/showfiles.php?group_id=69227&package_id=68081&release_id=615606
Basta baixar o primeiro arquivo: cwRsync_2.1.4_Installer.zip
Instale cwRsync_2.1.4_Installer.zip. confirmando todas as opções.
Pronto! Foi criado na pasta C:\Arquivos de Programas um diretório chamando cwRsync.
Lá contem os binários do ssh e rsync e um arquivo de exemplo que é auto explicativo, porém vamos a alguns exemplos.
4 - Configurando o Arquivo .bat ou .cmd para fazer a Sincronização.
O Funcionamento é simples, mas devem existir no cabeçalho do arquivo, a declaração de algumas variáveis, então deixa sempre o cabeçalho do arquivo desta forma:
@ECHO OFF
SETLOCAL
SET CWRSYNCHOME=%PROGRAMFILES%\CWRSYNC
SET CYGWIN=nontsec
SET HOME=%HOMEDRIVE%%HOMEPATH%
SET CWOLDPATH=%PATH%
SET PATH=%CWRSYNCHOME%\BIN;%PATH%
E logo abaixo destas linhas, pode começar a escrever as linhas que vão copiar seus diretórios e/ou arquivos para um servidor remoto.
5 - Exemplos
Em primeiro lugar, precisamos convencionar que:
C:\ para o rsync é /
C:\Arquivos de Programas para o Rsync é /"Arquivos de Programas"
C:\Arquivos de Programas\Microsoft Office para o Rsync é /"Arquivos de Programas/"Microsoft Office"
Opções:
--recursive ou -r = Cópia Recursiva, ou seja todos os arquivos e subdiretórios abaixo do diretório informado
-a = modo arquivo
-v = Modo detalhado (Verbose)
Então vamos aos exemplos:
Obs: Lembrando que todas as linhas abaixo são inteiras com enter apenas no final
Para o exemplo usaremos o servidor 192.168.0.1
Usuário do Servidor: root
Local: Um HD de Backup montado em /media/hd_backup
1 - Fazer Backup dos Emails do Outlook do Usuário Dailson
rsync -av /"Documents and Settings"/dailson/"Configurações Locais"/"Dados de aplicativos"/Microsoft/Outlook/outlook.pst root@192.168.10.202:/media/backup
2 - Fazer o Backup da Pasta C:\Sistema Empresa:
rsync -av --recursive /"Sistema Empresa" root@192.168.0.1:/media/hd_backup
3 - Guardar a Pasta Meus Documentos do Usuário Dailson:
rsync -av --recursive /"Documents and Settings"/dailson/"Meus documentos" root@192.168.0.1:/media/hd_backup
4 - Guardar a Pasta HOME inteira do Usuário Dailson:
rsync -av --recursive /"Documents and Settings"/dailson root@192.168.0.1:/media/hd_backup
5 - Fazer backup da Pasta do Banco de Dados da Empresa: C:\Banco de Dados
rsync -av --recursive /"Banco de Dados" root@192.168.0.1:/media/hd_backup
Obs1: Lembrando que todas as linhas abaixo são inteiras com enter apenas no final
Então um script backup.bat completo com os exemplos acima ficaria desta forma:
@ECHO OFF
REM *********************************************************
REM Script de Backup
REM Autor: Dailson Fernandes
REM Data: 01/08/2008
REM Função: Faz o backup das pastas importantes do usuário
REM *********************************************************
SETLOCAL
SET CWRSYNCHOME=%PROGRAMFILES%\CWRSYNC
SET CYGWIN=nontsec
SET HOME=%HOMEDRIVE%%HOMEPATH%
SET CWOLDPATH=%PATH%
SET PATH=%CWRSYNCHOME%\BIN;%PATH%
rsync -av /"Documents and Settings"/dailson/"Configurações Locais"/"Dados de aplicativos"/Microsoft/Outlook/outlook.pst root@192.168.10.202:/media/backup
rsync -av --recursive /"Sistema Empresa" root@192.168.0.1:/media/hd_backup
rsync -av --recursive /"Documents and Settings"/dailson/"Meus documentos" root@192.168.0.1:/media/hd_backup
rsync -av --recursive /"Documents and Settings"/dailson root@192.168.0.1:/media/hd_backup
rsync -av --recursive /"Banco de Dados" root@192.168.0.1:/media/hd_backup
6 - Opções que você deve saber
1 - Mantendo a Imagem do Backup idêntica a origem
Um backup feito com rsync vai ser feito de forma incremental. Porém se o usuário renomear um arquivo, apagar ou mover da origem (Por exemplo da pasta Meus Documentos) o rsync irá copiá-lo novamente. E irá ficar um fantasma no destino, ou seja. Se o usuário apagar alguns arquivo, eles continuaram no backup e o efeito colateral disso é que o backup irá crescer sem parar.
A idéia é fazer o seguinte, quando o usuário apagar um arquivo, o arquivo deve ser apagado do backup também.
A opção do rsync que faz isso é
--delete
Então a linha Correta para o backup da pasta meus documentos do exemplo anterior seria:
rsync -av --recursive --delete /"Documents and Settings"/dailson/"Meus documentos" root@192.168.0.1:/media/hd_backup
2 - Evitando backup de alguns arquivos.
Você não deseja detonar seu espaço em disco com as músicas e filmes do seu usuário não é? Você pode dizer ao rsync para evitar alguns tipos de arquivos, bastando para isso usar a seguinte opção:
--exclude="O que se quer evitar"
Exemplo:
Vou evitar que vá para o backup os seguintes arquivos:
Arquivos de música (MP3, OGG, WAV, WMA...)
Arquivos de Filme (AVI, MPEG, MPG, FLV, MP4, WMV, AMV ...)
Programas e arquivos temporários (EXE, COM, TMP)
Fotos e imagens (JPG, JPEG, BMP ...)
Basta você separar com espaço e colocar quantas excessões quiser. E ainda pode utilizar coringas.
Por exemplo:
--exclude=*.jpg --exclude=*.avi --exclude=*.mp3 ...
O Nosso exemplo da pasta Meus Documentos já com estas opções tratadas neste tópico ficariam deste jeito:
rsync -av --recursive --delete -e "ssh -p 16117" --exclude=*.tmp --exclude=*.*~ --exclude=*.jpg --exclude=*.avi --exclude=*.mp3 --exclude=*.mp4 --exclude=*.wav --exclude=*.flv --exclude=*.wma --exclude=*.mpeg --exclude=*.mpg --exclude=*.wmv --exclude=*.exe --exclude=*.amv --exclude=*.com --delete /"Documents and Settings"/dailson/"Meus documentos" root@192.168.0.1:/media/hd_backup
Neste caso, o Script completo ficaria desta forma:
Obs: Lembrando que todas as linhas abaixo são inteiras com enter apenas no final
Grave ele na raiz do C:\ e chame de backup.bat
@ECHO OFF
REM *********************************************************
REM Script de Backup
REM Autor: Dailson Fernandes
REM Data: 01/08/2008
REM Função: Faz o backup das pastas importantes do usuário
REM *********************************************************
SETLOCAL
SET CWRSYNCHOME=%PROGRAMFILES%\CWRSYNC
SET CYGWIN=nontsec
SET HOME=%HOMEDRIVE%%HOMEPATH%
SET CWOLDPATH=%PATH%
SET PATH=%CWRSYNCHOME%\BIN;%PATH%
rsync -av /"Documents and Settings"/dailson/"Configurações Locais"/"Dados de aplicativos"/Microsoft/Outlook/outlook.pst root@192.168.10.202:/media/backup
rsync -av --recursive --delete --exclude=*.tmp --exclude=*.*~ --exclude=*.jpg --exclude=*.avi --exclude=*.mp3 --exclude=*.mp4 --exclude=*.wav --exclude=*.flv --exclude=*.wma --exclude=*.mpeg --exclude=*.mpg --exclude=*.wmv --exclude=*.exe --exclude=*.amv --exclude=*.com /"Sistema Empresa" root@192.168.0.1:/media/hd_backup
rsync -av --recursive --delete --exclude=*.tmp --exclude=*.*~ --exclude=*.jpg --exclude=*.avi --exclude=*.mp3 --exclude=*.mp4 --exclude=*.wav --exclude=*.flv --exclude=*.wma --exclude=*.mpeg --exclude=*.mpg --exclude=*.wmv --exclude=*.exe --exclude=*.amv --exclude=*.com /"Documents and Settings"/dailson/"Meus documentos" root@192.168.0.1:/media/hd_backup
rsync -av --recursive --delete --exclude=*.tmp --exclude=*.*~ --exclude=*.jpg --exclude=*.avi --exclude=*.mp3 --exclude=*.mp4 --exclude=*.wav --exclude=*.flv --exclude=*.wma --exclude=*.mpeg --exclude=*.mpg --exclude=*.wmv --exclude=*.exe --exclude=*.amv --exclude=*.com /"Documents and Settings"/dailson root@192.168.0.1:/media/hd_backup
rsync -av --recursive --delete --exclude=*.tmp --exclude=*.*~ --exclude=*.jpg --exclude=*.avi --exclude=*.mp3 --exclude=*.mp4 --exclude=*.wav --exclude=*.flv --exclude=*.wma --exclude=*.mpeg --exclude=*.mpg --exclude=*.wmv --exclude=*.exe --exclude=*.amv --exclude=*.com /"Banco de Dados" root@192.168.0.1:/media/hd_backup
7 - Simplificando o Script
Ao invés de ficar passando as opções em todas as linhas de comando, podemos simplificar o script colocando todas elas no início como uma variável.
Desta forma:
set opcoes=-av --recursive --delete --exclude=*.tmp --exclude=*.*~ --exclude=*.jpg --exclude=*.avi --exclude=*.mp3 --exclude=*.mp4 --exclude=*.wav --exclude=*.flv --exclude=*.wma --exclude=*.mpeg --exclude=*.mpg --exclude=*.wmv --exclude=*.exe --exclude=*.amv --exclude=*.com
Então o script ficaria desta forma:
@ECHO OFF
REM *********************************************************
REM Script de Backup
REM Autor: Dailson Fernandes
REM Data: 01/08/2008
REM Função: Faz o backup das pastas importantes do usuário
REM *********************************************************
SETLOCAL
SET CWRSYNCHOME=%PROGRAMFILES%\CWRSYNC
SET CYGWIN=nontsec
SET HOME=%HOMEDRIVE%%HOMEPATH%
SET CWOLDPATH=%PATH%
SET PATH=%CWRSYNCHOME%\BIN;%PATH%
set OPCOES=-av --recursive --delete --exclude=*.tmp --exclude=*.*~ --exclude=*.jpg --exclude=*.avi --exclude=*.mp3 --exclude=*.mp4 --exclude=*.wav --exclude=*.flv --exclude=*.wma --exclude=*.mpeg --exclude=*.mpg --exclude=*.wmv --exclude=*.exe --exclude=*.amv --exclude=*.com
rsync -av /"Documents and Settings"/dailson/"Configurações Locais"/"Dados de aplicativos"/Microsoft/Outlook/outlook.pst root@192.168.10.202:/media/backup
rsync %OPCOES% /"Sistema Empresa" root@192.168.0.1:/media/hd_backup
rsync %OPCOES% /"Documents and Settings"/dailson/"Meus documentos" root@192.168.0.1:/media/hd_backup
rsync %OPCOES% /"Documents and Settings"/dailson root@192.168.0.1:/media/hd_backup
rsync %OPCOES% /"Banco de Dados" root@192.168.0.1:/media/hd_backup
Simplificou bastante!!!
8 - Usando a Tarefa agendada ou o AT do Windows
Bom, já que todo o trabalho está feito, só falta agendar a tarefa para que este script seja executado diariamente, ou de acordo com a sua necessidade.
Mas não custa nada lembrar, que da primeira irá acontecer o seguinte:
1 - Somente da primeira vez que você rodar o script, o rsync (ssh) irá pedir para você aceitar a chave do host no qual você está mandando os dados. Para isso basta digitar yes e pronto. Esta pergunta não irá acontecer novamente.
2 - A primeira cópia é completa e dependendo da quantidade de dados irá demorar um pouco. Porém se imediatamente após a cópia você chamar o script novamente, irá ver que o rsync não vai fazer nada. O Rsync a partir da segunda cópia, só vai copiar os arquivo que foram alterados, criados ou irá deletar do backup o que foi deletado da origem.
3 - Para agendar a tarefa deste script rodar automaticamente diariamente ou a sua escolha vá em tarefas agendadas do windows em Iniciar/Programas/Acessórios/Ferramentas/Tarefas Agendadas. Ou se preferir, use o AT do windows, que é um agendador de tarefas semelhante ao do linux que também roda em linha de comando.
Se quise aprender sobre o AT no Windows, visite a seguinte página:
http://support.microsoft.com/kb/313565/pt-br
9 - Fazendo com que o backup não peça senha
Antes da cópia começar, o login é feito via ssh. Nesta hora o login é passado pela string root@192.168.0.1:/media/hd_backup, porém imediatamente depois é solicitada a senha.
Então este incomodo é gerado, ou seja, toda vez que a tarefa agendada iniciar o script de backup, a senha será solicitada. E se o usuário não tiver na frente do computador? Ou se esse backup for feito de madrugada?
Para resolver este problema, basta gerar as chaves pública e privada e fazer com que o cwRsync comece o backup sem intervenção humanda.
1 - Gerando as chaves
No servidor linux, gere as chaves públicas e privadas da seguinte forma:
No usuário que você irá fazer a conexão sem senha (vou utilizar o root como exemplo)
Digite no terminal:
ssh-keygen
Quando perguntado para entrar com uma "passphrase", apenas tecle "Enter" duas vezes para que fique em branco, caso contrário esta frase precisará ser digitada posteriormente.
A saída do comando é esta:
Generating public/private rsa key pair.
Enter file in which to save the key
(/root/.ssh/id_rsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in
/root/.ssh/id_rsa.
Your public key has been saved in
/root/.ssh/id_rsa.pub.
The key fingerprint is:
xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx
Pronto foram geradas suas chaves públicas e privada dentro do diretório /root/.ssh
São elas:
/root/.ssh/id_rsa (A privada)
/root/.ssh/id_rsa.pub (A pública)
Agora faça o seguinte:
cat /root/id_rsa.pub >> /root/.ssh/authorized_keys
É importante que a chave pública (id_rsa.pub) seja adicionada (usando o sinal de maior maior ">>") dentro do arquivo "authorized_keys", pois podem haver outros clientes registrados neste mesmo arquivo.
E pegue o arquivo /root/.ssh/id_rsa (a sua chave privada) e copie no seguinte diretório na sua máquina windows:
c:\Documents and Settings\seu_usuario\.ssh
Pronto!
Agora roda novamente o backup.bat e veja que o backup é feito sem nenhuma interferência.
A chave Privada está em "/root/.ssh/id_rsa" e a Pública em "/root/.ssh/id_rsa.pub".
10 - Conclusões e Créditos
Este Artigo está publicado no VivaoLinux em
http://www.vivaolinux.com.br/artigo/Utilizando-o-RSYNC-para-fazer-backups-de-servidores-e-estacoes-Windows
Bom. Estou compartilhando a solução que achei em meu trabalho de fazer backups de Servidores e Estações Windows de forma segura e íntegra.
Utilizo esta forma a alguns anos sem quaisquer tipos de problemas.
Existem muito mais opções que podem ser utilizadas com rsync. Para isso consulte o manual. Ele é muito bom e explicativo.
Se você tiver no linux, digite man rsync ou consulte ele na web em http://www.samba.org/ftp/rsync/rsync.html
A Introdução foi retirada do artigo de Fábio Bebert de Paula em http://www.vivaolinux.com.br/artigo/Transferindo-arquivos-com-o-rsync/
Geração de Chaves:
http://www.vivaolinux.com.br/artigo/Conexoes-SSH-sem-senha-facil-e-descomplicado/
E Lembrem-se ...
Flames > /dev/null!!
quarta-feira, 30 de julho de 2008
Dica: Ubuntu atualizado Diariamente
Se você for baixar o Ubuntu para instalar em seu micro e for pegar o que está nos espelhos e site da Canonical, você terá que se deparar com mais de 300MB de atualização.
Ao invés disso, pode pegar uma imagem de instalação totalmente atualizada.
O Próprio pessoal da Canonical faz isso.
Basta acessar http://cdimage.ubuntu.com/hardy/daily-live/current/
E Baixar o Ubuntu que é feito diariamente.
Clique em PC (Intel x86) desktop CD para baixar a imagem para PC 32 bits.
Clique em 64-bit PC (AMD64) desktop CD para baixar imagem para PC 64 bits.
quinta-feira, 17 de julho de 2008
Personalizando o HLBR - IPS Invisível
INTRODUÇÃO:
O HLBR é um projeto brasileiro destinado à segurança em redes de computadores. O HLBR é um IPS (Intrusion Prevention System) bastante eficiente e versátil, podendo ser usado até mesmo como bridge para honeypots e honeynets. Como não usa a pilha TCP/IP do sistema operacional, ele é "invisível" a outras máquinas na rede e atacantes, pois não possui número de IP.
Para você entender do que vamo tratar aqui, primeiramente você deve conhecer o Projeto HLBR e as definições de IPS e IDS.
Aqui também serão tratados artifícios de gerar regras, análise de regras pré-existentes e arquivos de configuração.
Todo este conhecimento, você adquire no artigo anterior do nosso blog que pode ser acessado aqui: http://www.dailson.com.br/2008/07/tutorial-de-instalao-do-hlbr-verso.html ou VivaoLinux que você acessa através deste link http://www.vivaolinux.com.br/artigos/verArtigo.php?codigo=8511
A Versão 1.5-RC2 do HLBR vem com 144 Regras pre-definidas, porém se você apenas instalar e não ativar alguns tipos de regras nem todas irão para a execução.
Existem um conjunto de 4 arquivos que trazem regras que devem ser analisadas pelo Admininistrador antes de coloca-las em produção.
Isto é muito importante, porque por definição, o IPS - Intrusion Prevent System está para bloquear e não para lhe avisar do que pode está acontecendo de errado, ou seja, o IPS não pode se dar ao luxo de ter falso-positivo. As regras não podem barrar o acessos legítmos, se isso acontecer, o seu serviço/site fica fora do ar e na agonia de tentar resolver, você fica procurando problemas no serviço/servidor e não encontra nada, porém o IPS tá barrando o acesso antes que ele chegue no destino.
AS REGRAS A SEREM ANALISADAS.
O Arquivo /etc/hlbr/hlbr.rules indica que regras ele deve carregar na detecção de ataques.
A Sintaxe é a seguinte:
<include localização/arquivo_de_regra.rules>
Exemplo:
<include rules/cisco.rules>
A linha acima esta dizendo, que a partir do diretorio que estou (/etc/hlbr) tem o diretorio rules e dentro dele esta o arquivo cisco.rules que pode ter uma ou mais regras que serão carregadas na memória.
O Arquivo padrão hlbr.rules é o seguinte:
<include rules/awstats.rules>
<include rules/bufferoverflow1.rules>
<include rules/bufferoverflow2.rules>
<include rules/bufferoverflow3.rules>
<include rules/cisco.rules>
<include rules/codered-nimda.rules>
<include rules/coppermine.rules>
<include rules/dnsattacks.rules>
<include rules/joomla.rules>
<include rules/mailvirus.rules>
<include rules/passwd.rules>
<include rules/shell.rules>
<include rules/spam.rules>
<include rules/webattacks.rules>
# As regras dos arquivos abaixo deverao ser analisadas antes de serem
# utilizadas. Isso porque elas poderao interromper parte do trafego legitimo
# da rede.
# The rules of the files below must be analysed before being used. That is
# because they are able to interrupt part of the legitimate network traffic.
#
#<include rules/http.rules>
#<include rules/php.rules>
#<include rules/sql-xss.rules>
#<include rules/www.rules>
Note que há um aviso que as seguintes regras devem ser analisadas
#<include rules/http.rules>
#<include rules/php.rules>
#<include rules/sql-xss.rules>
#<include rules/www.rules>
Não vamos aqui comentar todas as regras, mas vamos analisar algum caso antes de ativa-las.
ANALISANDO O www.rules
O o arquivo /etc/hlbr/rules/www.rules traz regras que se ativadas sem a sua devida atenção poderá colocar todos os teus serviços www fora do ar.
Veja a primeira regra:
<rule>
ip dst(www)
tcp dst(80)
tcp nocase(.asp)
message=(www-1) .asp request
action=action1
</rule>
<rule> .... </rule>
São as TAGS que definem uma regra
ip dst (www)
o alvo desta regra são todos os servidores declarados no arquivo /etc/hlbr/hlbr.conf na seção www
tcp dst(80)
Especificando a porta destino do serviço web que será monitorada
tcp nocase(.asp)
Especifica um conteudo, dentro de um trafego TCP. O content considera a caixa do caractere (diferencia caracteres maiusculos e minusculos).
Espacos serao considerados como caracteres. Sequencias de bytes em
hexadecimal poderao ser inseridas entre caracteres "pipe".
Então se for solicitada qualquer string .asp ou seja, páginas de um servidor ASP a seguinte ação será tomada
action=action1
No arquivo /etc/hlbr/hlbr.conf está definido que a ação action1 é para negar pacotes. Isso quer dizer que se você tem páginas em asp e liberar esta regra, todas as suas páginas estarão inatingíveis a partir de agora.
Caso vocẽ não tenha servidores asp, esta regra pode ser liberada sem problemas e evita que invasores fiquem fazendo testes para tentar descobrir a linguagem de páginas utilizada em alguns servidores.
Pela explicação acima, veja que você consegue entender as outras regras:
<rule>
ip dst(www)
tcp dst(80)
tcp nocase(.php)
message=(www-2) .php request
action=action1
</rule>
A Regra acima bloqueia acesso a páginas em PHP
<rule>
ip dst(www)
tcp dst(80)
tcp nocase(.shtml)
message=(www-3) .shtml request
action=action1
</rule>
A Regra acima bloqueia acesso a páginas em SHTML
<rule>
ip dst(www)
tcp dst(80)
tcp nocase(.xml)
message=(www-4) .xml request
action=action1
</rule>
A Regra acima bloqueia acesso a páginas em XML
<rule>
ip dst(www)
tcp dst(80)
tcp nocase(.pl)
message=(www-5) .pl request
action=action1
</rule>
A Regra acima bloqueia acesso a páginas em PERL.
<rule>
ip dst(www)
tcp dst(80)
tcp nocase(/cgi-bin/)
message=(www-6) cgi request
action=action1
</rule>
<rule>
ip dst(www)
tcp dst(80)
tcp nocase(.cgi)
message=(www-7) cgi request
action=action1
</rule>
As Regras acima bloqueia acesso a execução de CGI-BIN
O ARQUIVO http.rules
Trazem regras que podem bloquear alguns métodos HTTP como o POST, DELETE, TRACE, OPTIONS entre outros.
Não vamos entrar nos méritos dos métodos, porém se você quiser proibir estes métodos, pode liberar a seguinte linha no arquivo /etc/hlbr.rules
#<include rules/http.rules>
E analisar cada uma das regras que estão no arquivo http.rules
Vejam elas:
# For your security SEARCH and CONNECT methods must be blocked.
<rule>
ip dst(www)
tcp dst(80)
tcp regex(^SEARCH )
message=(http-1-re) buffer overflow with search
action=action1
</rule>
<rule>
ip dst(www)
tcp dst(80)
tcp regex(^CONNECT )
message=(http-2-re) open proxy search
action=action1
</rule>
# Uncomment the following rule if you want to block POST.
#<rule>
#ip dst(www)
#tcp dst(80)
#tcp regex(^POST )
#message=(http-3) POST method
#action=action1
#</rule>
Veja aqui que regra de POST é comentada por padrão, porque negá-la pode fazer teu serviço WWW não funcionar.
# Comment the following rule if you don't want to block PUT. By the way, do you need PUT?
<rule>
ip dst(www)
tcp dst(80)
tcp regex(^PUT )
message=(http-4-re) PUT method
action=action1
</rule>
# Uncomment the following rule if you want to block OPTIONS.
#<rule>
#ip dst(www)
#tcp dst(80)
#tcp regex(^OPTIONS )
#message=(http-5-re) OPTIONS method
#action=action1
#</rule>
# Comment the following rule if you don't want to block TRACE. By the way, do you need TRACE?
<rule>
ip dst(www)
tcp dst(80)
tcp regex(^TRACE )
message=(http-6-re) TRACE method
action=action1
</rule>
# Comment the following rule if you don't want to block DELETE. By the way, do you need DELETE?
<rule>
ip dst(www)
tcp dst(80)
tcp regex(^DELETE )
message=(http-7-re) DELETE method
action=action1
</rule>
COMO COMEÇAR A ESCREVER REGRAS PARA O HLBR?
Este é um passo que requer atenção, pesquisa e alguns testes.
Em primeiro lugar você deve ler o README que vem no diretorio do HLBR.
Lá existem dicas preciosas de como você começá-las a construi-la. Lá também você consulta os parâmetros possíveis e as ações que o HLBR pode tomar.
Em segundo lugar, ler LOGs, lá você vai encontrar o que estão tentando fazer com seus servidores, quais são os erros comuns e os strings que estão sendo "injetadas" nos seu servidor.
Neste passo aconselho a instalação de programas que auxiliam na leitura de logs como o LOGWATCH, SWATCH e AWSTATS.
Um bom exemplo é aqui na empresa. Constatei vários acessos a uma dll em meu servidor. Esta dll é a owssvr.dll e vi que é um ataque as expressões do frontpage.
Ao longo do artigo, vou ensinar a escrever algumas regras inéditas. Esta regra, será uma delas.
Em terceiro lugar, é bom você conhecer um pouco de expressões regulares, não é obrigatório, porém importante.
Expressões Regulares define um padrão a ser usado para procurar ou substituir palavras ou grupos de palavras. É um meio preciso de se fazer buscas de determinadas porções de texto.
Por exemplo, se o conjunto de palavras for {asa, carro, jardim, ovos, terra} e a expressão regular buscar por um padrão rr, obterá as palavras carro e terra.
Existem vários caracteres especiais chamados metacaracteres nas Expressões Regulares para fazer uma busca avançada de palavras dentro de uma frase. (Fonte: wikipedia)
Por exemplo:
http://www.vivaolinux.com.br/../../
Se o servidor do vivaolinux tivesse esta vulnerabilidade eu conseguiria ver a raiz do disco do servidor (caso a páginas dele esteja hospeadada em /var/www)
Ou ainda posso tentar ver os arquivos de senha do servidor:
http://www.vivaolinux.com.br/../../etc/passwd
http://www.vivaolinux.com.br/../../etc/shadow
Com o HLBR, basta eu ter a seguinte regra:
<rule>
ip dst(www)
tcp dst(80)
http regex(\.+(/|\\)+)
message=(webattacks-1-re) directory change attempt (unicode,asc,plain)
action=action1
</rule>
Veja a expressão regular:
http regex(\.+(/|\\)+)
Ou seja, se na URL vier . (ponto) seguido de barras sejam elas normais (/) ou invertidas (\) o hlbr toma a ação action1 que é bloquear e colocar em log.
Quem quiser enveredar ou se especializar em Expressõres Regulares, aconselho o site do Aurelio Marinho Jargas: http://aurelio.net/er
ESCREVENDO REGRAS PRA VALER:
Na comunidade, lancei algumas regras contra IP SPOOFING, que é a técnica que o invasor esconde seu IP para que apareça errado nos logs.
Isto pode ser feito no seu firewall, mas como é um ataque conhecido, eu deixo no meu HLBR aqui no trabalho.
Como o HLBR não traz estas regras por padrão, é necessário nós fazermos dois passos:
Primeiro:
Cadastrar o arquivo de regras no /etc/hlbr/hlrb.rules
<include rules/spoof.rules>
Segundo:
Criar o arquivo /etc/hlbr/rules/spoof.rules com o seguinte conteúdo:
Ou se você preferir, baixe este arquivo de regras aqui.
Depois salvar o arquivo e reiniciar o HLBR para ter as regras em execução.
Note que qualquer conexão vindo da WAN com ip de rede local serão bloqueadas.
ESCREVENDO UMA REGRA CONTRA ATAQUES A EXTENSÕES DO FRONTPAGE
Como citei no tópico "Como começar a escrever regras para o HLBR?" Vi que haviam tentativas de acesso a uma DLL inexistente em meu servidor WEB. Com pesquisas na Internet vi que a DLL owssvr.dll é uma extensão do frontpage e um conhecido ataque a servidores IIS da Microsoft.
Nos logs apareciam assim:
Para barar este tipo de ataque, basta você escrever a seguinte regra:
<rule>
ip dst(www)
tcp dst(80)
http content(/owssvr.dll)
message=(webattacks-17) frontpage extensions attack
action=action1
</rule>
Se você deseja fazer o download desta regra clique aqui
Ela deve ser colocada no arquivo /etc/hlbr/rules/webattacks.rules. Como lá já existem 16 regras, ai você complementa com a 17.
Reinicia o HLBR
Deixa o log em visualização com o tail -f /var/log/hlbr/hlbr.log
E tenta fazer algo do tipo:
www.seuservidor.com.br/owssvr.dll e veja o HLBR pegando este ataque.
Mas veja o seguinte, no próprio arquivo webattack.rules tem a seguinte regra:
<rule>
ip dst(www)
tcp dst(80)
tcp content(/_vti_bin/)
message=(webattacks-12) fp call attempt
action=action1
</rule>
Que já bloqueia qualquer tipo de acesso ao diretório _vti_bin onde fica a dll. Já bloqueando o seguinte ataque:
Porém não bloqueando este:
"GET /owssvr.dll HTTP/1.1"
"GET /owssvr.dll HTTP/1.1"
Fazendo necessária a inclusão desta regra.
Bônus: Escrevendo uma regra contra SQL-INJECTIONS
Na regra abaixo, eu consigo bloquear técnicas como SQL INJECTION, onde o atacante pode tentar acessar o banco de dados SQL da nossa aplicação e mandar comandos maliciosos para apagar ou consultar senhas e usuários.
Esse palavrão ai todo está proibindo comandos SQL via protocolo HTTP e portanto protegendo nosso servidor contra SQL INJECTIONS. Esta regra contempla todos os comandos e opções além de técnicas de escondê-las.
Então a regra poderia ser colocada no arquivo /etc/hlbr/rules/sql-xss.rules e deve ficar assim:
Se você deseja fazer o download desta regra clique aqui
CONCLUSÃO:
O HLBR é um projeto promissor, e o grande coração dele são as regras e personalizações. Para isso convidamos a toda comunidade a portar regras de outros projetos, ataques conhecidos e casos particulares que acontecem em cada servidor.
No próximo artigo, vou apresentar novas regras e como porta-las através de scritps.
Um grande abraço a todos e lembrem-se...
FLAMES > /dev/null !!!
Para você entender do que vamo tratar aqui, primeiramente você deve conhecer o Projeto HLBR e as definições de IPS e IDS.
Aqui também serão tratados artifícios de gerar regras, análise de regras pré-existentes e arquivos de configuração.
Todo este conhecimento, você adquire no artigo anterior do nosso blog que pode ser acessado aqui: http://www.dailson.com.br/2008/07/tutorial-de-instalao-do-hlbr-verso.html ou VivaoLinux que você acessa através deste link http://www.vivaolinux.com.br/artigos/verArtigo.php?codigo=8511
A Versão 1.5-RC2 do HLBR vem com 144 Regras pre-definidas, porém se você apenas instalar e não ativar alguns tipos de regras nem todas irão para a execução.
Existem um conjunto de 4 arquivos que trazem regras que devem ser analisadas pelo Admininistrador antes de coloca-las em produção.
Isto é muito importante, porque por definição, o IPS - Intrusion Prevent System está para bloquear e não para lhe avisar do que pode está acontecendo de errado, ou seja, o IPS não pode se dar ao luxo de ter falso-positivo. As regras não podem barrar o acessos legítmos, se isso acontecer, o seu serviço/site fica fora do ar e na agonia de tentar resolver, você fica procurando problemas no serviço/servidor e não encontra nada, porém o IPS tá barrando o acesso antes que ele chegue no destino.
AS REGRAS A SEREM ANALISADAS.
O Arquivo /etc/hlbr/hlbr.rules indica que regras ele deve carregar na detecção de ataques.
A Sintaxe é a seguinte:
<include localização/arquivo_de_regra.rules>
Exemplo:
<include rules/cisco.rules>
A linha acima esta dizendo, que a partir do diretorio que estou (/etc/hlbr) tem o diretorio rules e dentro dele esta o arquivo cisco.rules que pode ter uma ou mais regras que serão carregadas na memória.
O Arquivo padrão hlbr.rules é o seguinte:
<include rules/awstats.rules>
<include rules/bufferoverflow1.rules>
<include rules/bufferoverflow2.rules>
<include rules/bufferoverflow3.rules>
<include rules/cisco.rules>
<include rules/codered-nimda.rules>
<include rules/coppermine.rules>
<include rules/dnsattacks.rules>
<include rules/joomla.rules>
<include rules/mailvirus.rules>
<include rules/passwd.rules>
<include rules/shell.rules>
<include rules/spam.rules>
<include rules/webattacks.rules>
# As regras dos arquivos abaixo deverao ser analisadas antes de serem
# utilizadas. Isso porque elas poderao interromper parte do trafego legitimo
# da rede.
# The rules of the files below must be analysed before being used. That is
# because they are able to interrupt part of the legitimate network traffic.
#
#<include rules/http.rules>
#<include rules/php.rules>
#<include rules/sql-xss.rules>
#<include rules/www.rules>
Note que há um aviso que as seguintes regras devem ser analisadas
#<include rules/http.rules>
#<include rules/php.rules>
#<include rules/sql-xss.rules>
#<include rules/www.rules>
Não vamos aqui comentar todas as regras, mas vamos analisar algum caso antes de ativa-las.
ANALISANDO O www.rules
O o arquivo /etc/hlbr/rules/www.rules traz regras que se ativadas sem a sua devida atenção poderá colocar todos os teus serviços www fora do ar.
Veja a primeira regra:
<rule>
ip dst(www)
tcp dst(80)
tcp nocase(.asp)
message=(www-1) .asp request
action=action1
</rule>
<rule> .... </rule>
São as TAGS que definem uma regra
ip dst (www)
o alvo desta regra são todos os servidores declarados no arquivo /etc/hlbr/hlbr.conf na seção www
tcp dst(80)
Especificando a porta destino do serviço web que será monitorada
tcp nocase(.asp)
Especifica um conteudo, dentro de um trafego TCP. O content considera a caixa do caractere (diferencia caracteres maiusculos e minusculos).
Espacos serao considerados como caracteres. Sequencias de bytes em
hexadecimal poderao ser inseridas entre caracteres "pipe".
Então se for solicitada qualquer string .asp ou seja, páginas de um servidor ASP a seguinte ação será tomada
action=action1
No arquivo /etc/hlbr/hlbr.conf está definido que a ação action1 é para negar pacotes. Isso quer dizer que se você tem páginas em asp e liberar esta regra, todas as suas páginas estarão inatingíveis a partir de agora.
Caso vocẽ não tenha servidores asp, esta regra pode ser liberada sem problemas e evita que invasores fiquem fazendo testes para tentar descobrir a linguagem de páginas utilizada em alguns servidores.
Pela explicação acima, veja que você consegue entender as outras regras:
<rule>
ip dst(www)
tcp dst(80)
tcp nocase(.php)
message=(www-2) .php request
action=action1
</rule>
A Regra acima bloqueia acesso a páginas em PHP
<rule>
ip dst(www)
tcp dst(80)
tcp nocase(.shtml)
message=(www-3) .shtml request
action=action1
</rule>
A Regra acima bloqueia acesso a páginas em SHTML
<rule>
ip dst(www)
tcp dst(80)
tcp nocase(.xml)
message=(www-4) .xml request
action=action1
</rule>
A Regra acima bloqueia acesso a páginas em XML
<rule>
ip dst(www)
tcp dst(80)
tcp nocase(.pl)
message=(www-5) .pl request
action=action1
</rule>
A Regra acima bloqueia acesso a páginas em PERL.
<rule>
ip dst(www)
tcp dst(80)
tcp nocase(/cgi-bin/)
message=(www-6) cgi request
action=action1
</rule>
<rule>
ip dst(www)
tcp dst(80)
tcp nocase(.cgi)
message=(www-7) cgi request
action=action1
</rule>
As Regras acima bloqueia acesso a execução de CGI-BIN
O ARQUIVO http.rules
Trazem regras que podem bloquear alguns métodos HTTP como o POST, DELETE, TRACE, OPTIONS entre outros.
Não vamos entrar nos méritos dos métodos, porém se você quiser proibir estes métodos, pode liberar a seguinte linha no arquivo /etc/hlbr.rules
#<include rules/http.rules>
E analisar cada uma das regras que estão no arquivo http.rules
Vejam elas:
# For your security SEARCH and CONNECT methods must be blocked.
<rule>
ip dst(www)
tcp dst(80)
tcp regex(^SEARCH )
message=(http-1-re) buffer overflow with search
action=action1
</rule>
<rule>
ip dst(www)
tcp dst(80)
tcp regex(^CONNECT )
message=(http-2-re) open proxy search
action=action1
</rule>
# Uncomment the following rule if you want to block POST.
#<rule>
#ip dst(www)
#tcp dst(80)
#tcp regex(^POST )
#message=(http-3) POST method
#action=action1
#</rule>
Veja aqui que regra de POST é comentada por padrão, porque negá-la pode fazer teu serviço WWW não funcionar.
# Comment the following rule if you don't want to block PUT. By the way, do you need PUT?
<rule>
ip dst(www)
tcp dst(80)
tcp regex(^PUT )
message=(http-4-re) PUT method
action=action1
</rule>
# Uncomment the following rule if you want to block OPTIONS.
#<rule>
#ip dst(www)
#tcp dst(80)
#tcp regex(^OPTIONS )
#message=(http-5-re) OPTIONS method
#action=action1
#</rule>
# Comment the following rule if you don't want to block TRACE. By the way, do you need TRACE?
<rule>
ip dst(www)
tcp dst(80)
tcp regex(^TRACE )
message=(http-6-re) TRACE method
action=action1
</rule>
# Comment the following rule if you don't want to block DELETE. By the way, do you need DELETE?
<rule>
ip dst(www)
tcp dst(80)
tcp regex(^DELETE )
message=(http-7-re) DELETE method
action=action1
</rule>
COMO COMEÇAR A ESCREVER REGRAS PARA O HLBR?
Este é um passo que requer atenção, pesquisa e alguns testes.
Em primeiro lugar você deve ler o README que vem no diretorio do HLBR.
Lá existem dicas preciosas de como você começá-las a construi-la. Lá também você consulta os parâmetros possíveis e as ações que o HLBR pode tomar.
Em segundo lugar, ler LOGs, lá você vai encontrar o que estão tentando fazer com seus servidores, quais são os erros comuns e os strings que estão sendo "injetadas" nos seu servidor.
Neste passo aconselho a instalação de programas que auxiliam na leitura de logs como o LOGWATCH, SWATCH e AWSTATS.
Um bom exemplo é aqui na empresa. Constatei vários acessos a uma dll em meu servidor. Esta dll é a owssvr.dll e vi que é um ataque as expressões do frontpage.
Ao longo do artigo, vou ensinar a escrever algumas regras inéditas. Esta regra, será uma delas.
Em terceiro lugar, é bom você conhecer um pouco de expressões regulares, não é obrigatório, porém importante.
Expressões Regulares define um padrão a ser usado para procurar ou substituir palavras ou grupos de palavras. É um meio preciso de se fazer buscas de determinadas porções de texto.
Por exemplo, se o conjunto de palavras for {asa, carro, jardim, ovos, terra} e a expressão regular buscar por um padrão rr, obterá as palavras carro e terra.
Existem vários caracteres especiais chamados metacaracteres nas Expressões Regulares para fazer uma busca avançada de palavras dentro de uma frase. (Fonte: wikipedia)
Por exemplo:
Existe um ataque básico a um servidor HTTP que pode ser visto neste vídeo: http://ufpr.dl.sourceforge.net/sourceforge/hlbr/http_attack_sample.avi que é a tentativa do atacante passear no hd do servidor, tentando descer na árvore de diretórios chamando os caracteres ../
Exemplo:http://www.vivaolinux.com.br/../../
Se o servidor do vivaolinux tivesse esta vulnerabilidade eu conseguiria ver a raiz do disco do servidor (caso a páginas dele esteja hospeadada em /var/www)
Ou ainda posso tentar ver os arquivos de senha do servidor:
http://www.vivaolinux.com.br/../../etc/passwd
http://www.vivaolinux.com.br/../../etc/shadow
Com o HLBR, basta eu ter a seguinte regra:
<rule>
ip dst(www)
tcp dst(80)
http regex(\.+(/|\\)+)
message=(webattacks-1-re) directory change attempt (unicode,asc,plain)
action=action1
</rule>
Veja a expressão regular:
http regex(\.+(/|\\)+)
Ou seja, se na URL vier . (ponto) seguido de barras sejam elas normais (/) ou invertidas (\) o hlbr toma a ação action1 que é bloquear e colocar em log.
Quem quiser enveredar ou se especializar em Expressõres Regulares, aconselho o site do Aurelio Marinho Jargas: http://aurelio.net/er
ESCREVENDO REGRAS PRA VALER:
Na comunidade, lancei algumas regras contra IP SPOOFING, que é a técnica que o invasor esconde seu IP para que apareça errado nos logs.
Isto pode ser feito no seu firewall, mas como é um ataque conhecido, eu deixo no meu HLBR aqui no trabalho.
Como o HLBR não traz estas regras por padrão, é necessário nós fazermos dois passos:
Primeiro:
Cadastrar o arquivo de regras no /etc/hlbr/hlrb.rules
<include rules/spoof.rules>
Segundo:
Criar o arquivo /etc/hlbr/rules/spoof.rules com o seguinte conteúdo:
# name: spoof.rules
# created by: Dailson Fernandes - http://www.dailson.com.br
# date: 15 Dec 07
# update: none
# version: 1.0
# target: block ips spoofed
<rule>
ip dst(servers)
ip src(10.0.0.0/8)
message=(spoof-1) Ip spoof Network 10.0.0.0/8
action=action1
</rule>
<rule>
ip dst(servers)
ip src(172.16.0.0-172.31.255.255)
message=(spoof-2) Ip spoof Network 172.16.0.0-172.31.255.255
action=action1
</rule>
<rule>
ip dst(servers)
ip src(192.168.0.0-192.168.255.255)
message=(spoof-3) Ip spoof Network 192.168.0.0-192.168.255.255
action=action1
</rule>
# created by: Dailson Fernandes - http://www.dailson.com.br
# date: 15 Dec 07
# update: none
# version: 1.0
# target: block ips spoofed
<rule>
ip dst(servers)
ip src(10.0.0.0/8)
message=(spoof-1) Ip spoof Network 10.0.0.0/8
action=action1
</rule>
<rule>
ip dst(servers)
ip src(172.16.0.0-172.31.255.255)
message=(spoof-2) Ip spoof Network 172.16.0.0-172.31.255.255
action=action1
</rule>
<rule>
ip dst(servers)
ip src(192.168.0.0-192.168.255.255)
message=(spoof-3) Ip spoof Network 192.168.0.0-192.168.255.255
action=action1
</rule>
Ou se você preferir, baixe este arquivo de regras aqui.
Depois salvar o arquivo e reiniciar o HLBR para ter as regras em execução.
Note que qualquer conexão vindo da WAN com ip de rede local serão bloqueadas.
ESCREVENDO UMA REGRA CONTRA ATAQUES A EXTENSÕES DO FRONTPAGE
Como citei no tópico "Como começar a escrever regras para o HLBR?" Vi que haviam tentativas de acesso a uma DLL inexistente em meu servidor WEB. Com pesquisas na Internet vi que a DLL owssvr.dll é uma extensão do frontpage e um conhecido ataque a servidores IIS da Microsoft.
Nos logs apareciam assim:
"GET /_vti_bin/owssvr.dll?UL=1&ACT=4&BUILD=4518&STRMVER=4&CAPREQ=0 HTTP/1.1"
"GET /_vti_bin/owssvr.dll?UL=1&ACT=4&BUILD=4518&STRMVER=4&CAPREQ=0 HTTP/1.1"
"GET /owssvr.dll HTTP/1.1"
"GET /owssvr.dll HTTP/1.1"
"GET /_vti_bin/owssvr.dll?UL=1&ACT=4&BUILD=6551&STRMVER=4&CAPREQ=0 HTTP/1.1"
"GET /_vti_bin/owssvr.dll?UL=1&ACT=4&BUILD=4518&STRMVER=4&CAPREQ=0 HTTP/1.1"
"GET /owssvr.dll HTTP/1.1"
"GET /owssvr.dll HTTP/1.1"
"GET /_vti_bin/owssvr.dll?UL=1&ACT=4&BUILD=6551&STRMVER=4&CAPREQ=0 HTTP/1.1"
Para barar este tipo de ataque, basta você escrever a seguinte regra:
<rule>
ip dst(www)
tcp dst(80)
http content(/owssvr.dll)
message=(webattacks-17) frontpage extensions attack
action=action1
</rule>
Se você deseja fazer o download desta regra clique aqui
Ela deve ser colocada no arquivo /etc/hlbr/rules/webattacks.rules. Como lá já existem 16 regras, ai você complementa com a 17.
Reinicia o HLBR
Deixa o log em visualização com o tail -f /var/log/hlbr/hlbr.log
E tenta fazer algo do tipo:
www.seuservidor.com.br/owssvr.dll e veja o HLBR pegando este ataque.
Mas veja o seguinte, no próprio arquivo webattack.rules tem a seguinte regra:
<rule>
ip dst(www)
tcp dst(80)
tcp content(/_vti_bin/)
message=(webattacks-12) fp call attempt
action=action1
</rule>
Que já bloqueia qualquer tipo de acesso ao diretório _vti_bin onde fica a dll. Já bloqueando o seguinte ataque:
"GET /_vti_bin/owssvr.dll?UL=1&ACT=4&BUILD=4518&STRMVER=4&CAPREQ=0 HTTP/1.1"
"GET /_vti_bin/owssvr.dll?UL=1&ACT=4&BUILD=4518&STRMVER=4&CAPREQ=0 HTTP/1.1"
"GET /_vti_bin/owssvr.dll?UL=1&ACT=4&BUILD=4518&STRMVER=4&CAPREQ=0 HTTP/1.1"
Porém não bloqueando este:
"GET /owssvr.dll HTTP/1.1"
"GET /owssvr.dll HTTP/1.1"
Fazendo necessária a inclusão desta regra.
Bônus: Escrevendo uma regra contra SQL-INJECTIONS
Na regra abaixo, eu consigo bloquear técnicas como SQL INJECTION, onde o atacante pode tentar acessar o banco de dados SQL da nossa aplicação e mandar comandos maliciosos para apagar ou consultar senhas e usuários.
(?:^\s*[;>"]\s*(?:UNION|SELECT|CREATE|RENAME|TRUNCATE|LOAD|ALTER|DELETE|UPDATE|INSERT|DESC))|(?:(?:SELECT|CREATE|RENAME|TRUNCATE|LOAD|ALTER|DELETE|UPDATE|INSERT|DESC)\s+(?:CONCAT|CHAR|CONCAT|LOAD_FILE|0x)\s?\(?)|(?:END\s*\);)|("\s+REGEXP\W)
Esse palavrão ai todo está proibindo comandos SQL via protocolo HTTP e portanto protegendo nosso servidor contra SQL INJECTIONS. Esta regra contempla todos os comandos e opções além de técnicas de escondê-las.
Então a regra poderia ser colocada no arquivo /etc/hlbr/rules/sql-xss.rules e deve ficar assim:
<rule>
ip dst(www)
tcp dst(80)
regex((?:^\s*[;>"]\s*(?:UNION|SELECT|CREATE|RENAME|TRUNCATE|LOAD|ALTER|DELETE|UPDATE|INSERT|DESC))|(?:(?:SELECT|CREATE|RENAME|TRUNCATE|LOAD|ALTER|DELETE|UPDATE|INSERT|DESC)\s+(?:CONCAT|CHAR|CONCAT|LOAD_FILE|0x)\s?\(?)|(?:END\s*\);)|("\s+REGEXP\W))
message=(sql-xss-5) Detects concatenated basic SQL injection and SQLLFI attempts
action=action1
</rule>
ip dst(www)
tcp dst(80)
regex((?:^\s*[;>"]\s*(?:UNION|SELECT|CREATE|RENAME|TRUNCATE|LOAD|ALTER|DELETE|UPDATE|INSERT|DESC))|(?:(?:SELECT|CREATE|RENAME|TRUNCATE|LOAD|ALTER|DELETE|UPDATE|INSERT|DESC)\s+(?:CONCAT|CHAR|CONCAT|LOAD_FILE|0x)\s?\(?)|(?:END\s*\);)|("\s+REGEXP\W))
message=(sql-xss-5) Detects concatenated basic SQL injection and SQLLFI attempts
action=action1
</rule>
Se você deseja fazer o download desta regra clique aqui
CONCLUSÃO:
O HLBR é um projeto promissor, e o grande coração dele são as regras e personalizações. Para isso convidamos a toda comunidade a portar regras de outros projetos, ataques conhecidos e casos particulares que acontecem em cada servidor.
No próximo artigo, vou apresentar novas regras e como porta-las através de scritps.
Um grande abraço a todos e lembrem-se...
FLAMES > /dev/null !!!
Assinar:
Postagens (Atom)