Featured Post

MHWAHAHAHAHA – Parte 2: DNS Poisoning

Não vou falar muito. Algo envenenado é algo fora do padrão, como os carros envenenados, a nível de exemplo. Algo falso, bem, não tem nem o quê falar: é falso. O “ataque” (ou a feature, como muitos diriam) de envenenar/fakear resultados de DNS não é de hoje. Se você conversar com...

Read More

Red Hat 5.4 beta lançado – KVM ao invés do Xen

Posted by Ruy Rocha | Posted in Linux, Virtualization | Posted on 01-07-2009

0

Lançado o beta do Red Hat Enterprise Linux 5.4 hoje, pirmeiro de Julho.

O beta inclui:

  • suporte completo ao KVM (kernel-based virtual machine) hypervisor. O KVM é integrado no kernel do Linux, provendo uma plataforma de virtualização que tem total vantagem sobre estabilidade, fortes características, e habilitação de hardware inerente no Red Hat Enterprise Linux. Uma vasta variedade de sistemas operacionais guest são suportados, e estes sistemas, tanto 32 bits quanto 64 bits, rodam sem qualquer modificação. Discos paravirtualizados e drivers para redes são providos para uma melhor performance de I/O. Todas as ferramentas baseadas na libvirt (como virsh, virt-install e virt-manager suportam o KVM). Ainda, o KVM é suportado em arquiteturas x86_64 que empregam as tecnologias de virtualização Intel-VT ou AMD-V. O Xen continua sendo incluído e totalmente suportado, mas os usuários terão de escolher um hypervisor por vez. Na instalação (via modo gráfico), não é possível selecionar o KVM ainda, entretanto, basta adicionar o grupo @kvm nas instalações via Kickstart.

Esta é a mudança mais óbvia, a inclusão do KVM. A pergunta óbvia é: aonde eles querem chegar?

A aquisição da Qumranet em setembro do ano passado colocou a Red Hat na mesa dos grandes jogadores de Virtualização. Navin Thadani, diretor sênior nos negócios de virtualização, já afirmou que a empresa está desenvolvendo novos produtos e que estes produtos são privados, e que eles não tem ainda uma data geral para a publicação (tornar público) estes produtos. A infraestrutura de virtualização é opensource mas o sistema para administração ainda não, e, até onde parece, eles pretendem abrir os fontes quando lançarem uma versão multi-plataforma. Resta esperar mais uns meses.

  • Share/Save/Bookmark

O mundo está mudando

Posted by Ruy Rocha | Posted in Vida | Posted on 26-06-2009

0

O mundo está mudando e isto não é ruim.

Uma experiência que todos conhecem é a incidência da luz branca no prisma, resultando em cores que compõem o arco-íris. Quando consigo ser realista, e isto não é em todos os momentos da minha vida, encaro as diversas situações que encontro desta forma, como a luz branca que incide no prisma. As cores formadas são os resultados que você pode chegar, diferentes pensamentos, conclusões, e definir se vai ser agradável ou não é apenas uma escolha sua. Tudo varia como você olha e encara as coisas através do prisma: bom ou mau, certo ou errado, eficaz ou ineficaz, proibido ou consentido, tudo isso ainda é uma escolha sua, e vai ser um reflexo da sua bagagem emocional/sexual, espiritual, literária, musical, política, e tudo o mais.

  • Share/Save/Bookmark

Fomos hackeados: contratos, vários dinheiros, uma vida

Posted by Ruy Rocha | Posted in Vida, Virtualization | Posted on 11-06-2009

1

Um pouco de história antes de chegarmos ao mérito (!?) do hacking.

“HyperVM is a multi-plataform, multi-tiered, multi-server, multi-virtualization web based application that will allow you to create and manage different Virtual Machines each based on different technologies across machines and platforms” – colado descaradamente da home do HyperVM.

Sendo um software muito fantástico, o conceito de Virtualização por trás do HyperVM passa longe de ser um monstro, e torna-se uma brincadeira extremamente simples e intuitiva de point and click. Com poucos segundos você levanta um novo ambiente – entenda como nova instalação, “um novo computador” – através de um template de sistema operacional, e pode sair desenvolvendo, testando, enfim, executando qualquer tarefa sem dores de cabeça.

Acompanhado do HyperVM está o Lxadmin, que agora chama-se Kloxo. Este software é um painel de controle completo e de fácil administração que mescla features do cPanel e do Webmin, e consome apenas 15MB de RAM para funcionar.

A parte triste da história começa no dia 7 de Junho.

Recebi um e-mail do meu provedor de servidores afirmando que eles haviam sido hackeados pelo HyperVM e na hora não dei muita importância: nada extremamente sensitivo estava armazenado nos servidores e possuo backup de tudo, fiz a lição de casa.

Buscando um pouco mais de informações, me deparo com várias vulnerabilidades no Kloxo, e também com mais de cem mil web sites apagados e destruídos por um exploit 0day. Até onde vi, este número de 100 mil é superficial, e todo o processo do ataque é intrigante.

A parte mais intrigante e chata da história é que K T Ligesh, fundador da Lxlabs e também criador do HyperVM, foi encontrado na sua casa na manhã de domingo, 08 de Junho, morto. Ele cometeu suicídio, e isso indica que perdemos mais uma mente brilhante.

Não sei que rumos a Lxlabs vai tomar agora, nem o que vai acontecer com o HyperVM. E já existe atualização disponível para o Kloxo.

Quanto a VAServ, continuo com eles: não tive problemas sérios, não perdi nada. Fatalidades e acidentes acontecem.

Fiquei imaginando, e não queria estar na pele dos engenheiros. Já aconteceu algo parecido comigo, e todo dia antes de ir trabalhar eu passava na farmácia e levava 3 tubos de KY, sabendo que o dia ia ser foda. Mas eram poucos clientes, de longe chegariam aos cem mil.

Resumindo:

  • com os serviços fora, vários contratos foram perdidos (não meus!!!)
  • vários dinheiros foram perdidos também. Aqui você pode escolher entre Dolar, Euro, Libra, Real…
  • era possível fazer MUITA coisa com os milhares de servidores, ah, se era..
  • perdemos uma mente brilhante

Moral da história?

  • faça a lição de casa: tenha sempre seu backup em dia
  • veja bem onde coloca seu dinheiro: mesmo que exista uma pouca chance de tudo evaporar, esta chance ainda existe
  • por mais brilhante que seja uma mente, sempre existe espaço para a estupidez
  • Share/Save/Bookmark

ActionController::Caching::Pages fail: no cache, no funciona!

Posted by Ruy Rocha | Posted in Development, Rails | Posted on 04-06-2009

0

Antes de tudo, estou desenvolvendo uma app que renderiza algumas coisas “a quente” nas views, só que isso tá impraticável:

  • Share/Save/Bookmark

Sort a file by second to last value in a line with awk

Posted by Ruy Rocha | Posted in Development, Linux | Posted on 28-05-2009

0

I needed to sort a text file (using sort) with this format:

[rocha@vorheez tmp]$ head -n 1 li.txt
     ID QUANTITY SIZE PRODUCT DESCRIPTION WITH A LOT OF SPACES I                     TYPE             PRICE   SKU

The important value is at second to last column (PRICE) ’cause I’ll check for products with same price. If prod. description has no spaces, everything will be fine: I just need to sort by 7th column.

I’ve found this reading awk man page:

       The variable NF is set to the total number of fields in the input record.
       References to non-existent fields (i.e. fields after $NF) produce the null-string.  However, assigning  to
       a  non-existent  field  (e.g., $(NF+2) = 5) increases the value of NF

After found how to sort last column with AWK, final script is:

[rocha@vorheez tmp]$ head -n 20 li.txt | awk '{ printf $(NF -1);$(NF - 1) = "" ;printf " "$0"\n" }' | sort -n

Awk made my day.

  • Share/Save/Bookmark

ActiveMall: resposta ativa e conteúdo entregue em três redes distintas

Posted by Ruy Rocha | Posted in Development, Ruby | Posted on 27-05-2009

0

Recentemente eu fiz uma visita a uma empresa, e creio que não interesse a localização e tampouco o nome da mesma. Eles possuíam um call center a também uma central de vendas/negócios por telefone. O que me chamou a atenção é que TODAS as atendentes eram lindas. Da olhadela rápida que dei, casaria sete vezes. Se pegasse algumas meninas para agenciar, poderia me aposentar nos próximos dois meses. Meninas lindas, das novas as mais experientes, cheirosas, dotadas de todos os dentes e que falavam muito bem. Algo digno do cara mais afeminado afirmar “ah, se eu fosse homem”! Bah, eram espetaculares, confie em mim!

  • Share/Save/Bookmark

Ubuntu 9.04: I got the Jack!

Posted by Ruy Rocha | Posted in Linux, Ubuntu | Posted on 03-05-2009

0

Acabei de upar meu desktop para a versao 9.04 (a utilizada ate entao era a 8.10). Pelas primeiras impressoes, tudo funcionando bonitinho. Algumas coisas (ir)relevantes que notei e precisei:

  • nao tem nada de muito novo no instalador. O que chamou a atencao foi o lance pra selecionar o timezone e tambem o particionamento: bonitoes, curti!
  • o bootsplash ta bonitao tambem, curti novamente.
  • screen vem instalado por default (realmente nao lembro das outras versoes, mas tudo bem…), e vem com alguns profiles “built-in”: na primeira vez que voce carrega, ele pede pra selecionar um dos profiles, e se quiser alterar depois e’ bem tranquilo (via menu, hotkey F9). Da pra fazer “TUDO” por esse menuzinho feliz :D
  • o vim nao vem instalado por default, mas tudo bem: apt-get neles! (apt-get install vim vim-gnome vim-addon-manager vim-common vim-full vim-gnome vim-gtk vim-gui-common vim-rails vim-ruby vim-runtime vim-tiny exuberant-ctags ncurses-term , kibado descaradamente do Patrick Espake.
  • existe um serio problema com os DNS’s ofereceidos pela Brasil Telecom (que insiste em te redirecionar praquela porcaria de search marketing) e pelo Uol (que nao resolve alguns dominios), e desde que comecei a enfrentar problemas com eles tenho usado um dns proprio. Pra que sempre funcione ele, mesmo quando eu pego IP via DHCP, um supersede domain-name-servers 127.0.0.1; no /etc/dhcp3/dhclient.conf ja resolve;
  • o UFW (unfuckingcomplicated firewall) vem desabilitado por default, e nada que um ufw enable nao resolva;
  • pra deixar tudo louco de bonito, instalar os meta-pacotes mais que defaults: build-essential & ubuntu-restricted-extras!
  • Share/Save/Bookmark

Cotacao do Dolar de um jeito simples e rapido

Posted by Ruy Rocha | Posted in Development, Ruby | Posted on 22-04-2009

0

Fiz uma pequena classe pra pegar a cotacao do dolar e fazer alguns pequenos calculos. Posto aqui os dois metodos principais disto tudo: um deles pega a cotacao de um Webservice e o outro traz o valor com apenas 2 digitos decimais.

def get_quote
  url = 'http://www.webservicex.net/CurrencyConvertor.asmx/ConversionRate?FromCurrency=USD&ToCurrency=BRL'
  xml_data = Net::HTTP.get_response(URI.parse(url)).body

  data = XmlSimple.xml_in(xml_data)
  currency = data['content']
  currency = only_two_digits(currency)
  return currency
end

def only_two_digits(num)
  return num.scan(/[0-9]*?\.[0-9][0-9]/).to_s.to_f
end
  • Share/Save/Bookmark

lighttpd: quando o .htaccess não funciona

Posted by Ruy Rocha | Posted in Development, Linux | Posted on 16-04-2009

2

Em um de meus servidores uso o lighttpd como servidor web. Nunca tinha atentado para o fato de que ele não lê o tão querido .htaccess, e algo que é extremamente usado neste tão querido arquivo é a reescrita de URL, deixando o endereço SEO friendly.

O necessário para ter as coisas funcionando era adicionar o seguinte código no .conf do vhost:

url.rewrite = ("^/(.*.php)" => "/$0",
    "^/(.*)$" => "/index.php/$1")

Agora sim, tudo funcionando como deveria funcionar.

  • Share/Save/Bookmark

Portabilidade & Asterisk: ligacoes para mesma operadora

Posted by Ruy Rocha | Posted in Development, VoIP | Posted on 11-04-2009

2

No fim de 2006 e inicio de 2007 eu ainda estudava muito sobre o Asterisk. Na epoca, foi existia uma interface de celular, uma caixona gigantesca que era acoplada em uma central telefonica Siemens da vida que fazia esta funcao, ate ai tudo bem. Eu tinha um plano empresarial (eu = a empresa, eu nao tenho nada :D ) com muitos minutos e poderia usar a vontade para fazer ligacoes para a mesma operadora, sempre com o intuito de reduzir custos.

Precisei de material que me falasse qual operadora usava qual prefixo, por exemplo, 9669-XXXX era utilizado pela Tim, 9128-XXXX era utilizado pela Vivo, 8809 era utilizado pela Claro e 8431-XXXX era da Brasil Telecom. Isto aqui, no estado do Parana, e em Santa Catarina tambem. Reparem que os dois primeiros digitos dizem qual seria a operadora, e este material pode ser bem encontrado aqui. Ate aqui tudo bem. Se eu tivesse mais interfaces, poderia simplesmente adicionar mais regras especificas e usar as comodidades oferecidas por cada operadora. Bem obvio.

E agora, com a portabilidade? Se o teu numero e’ teu, nao da operadora, como tem sido feito para este tipo de situacao? Nao procurei nas listas, logs de irc, nem em nenhum lugar, mas nao faco ideia de como os caras de hoje estao se virando com isto. Ou sera que isto e’ obsoleto e minha preocupacao (!?) infundada!? Vai saber!!!

  • Share/Save/Bookmark

CentOS 5.3: missing instant messenger and installing wrong architecture

Posted by Ruy Rocha | Posted in CentOS, Linux | Posted on 01-04-2009

0

I booted into my CentOS 5.3 fresh install and Instant Messenger (pidgin) was missing. That’s ok, let we install it:

[root@gamble ~]# yum install pidgin
Loaded plugins: fastestmirror
Determining fastest mirrors
 * base: centos.pop.com.br
 * updates: chi-10g-1-mirror.fastsoft.net
 * addons: centos.pop.com.br
 * extras: centos.pop.com.br
base                                                                                                                                  | 1.1 kB     00:00
primary.xml.gz                                                                                                                        | 1.1 MB     00:03
base                                                           3272/3272
updates                                                                                                                               |  951 B     00:00
primary.xml.gz                                                                                                                        |  50 kB     00:01
updates                                                        106/106
addons                                                                                                                                |  951 B     00:00
primary.xml.gz                                                                                                                        |  157 B     00:00
extras                                                                                                                                |  951 B     00:00
primary.xml.gz                                                                                                                        |  91 kB     00:00
extras                                                         265/265
Setting up Install Process
Parsing package install arguments
Resolving Dependencies
--> Running transaction check
---> Package pidgin.x86_64 0:2.5.2-6.el5 set to be updated
--> Processing Dependency: libpurple = 2.5.2-6.el5 for package: pidgin
--> Processing Dependency: libgtkspell.so.0()(64bit) for package: pidgin
--> Processing Dependency: libpurple.so.0()(64bit) for package: pidgin
---> Package pidgin.i386 0:2.5.2-6.el5 set to be updated
--> Processing Dependency: libgtkspell.so.0 for package: pidgin
--> Processing Dependency: libpurple.so.0 for package: pidgin
--> Running transaction check
---> Package gtkspell.i386 0:2.0.11-2.1 set to be updated
---> Package libpurple.x86_64 0:2.5.2-6.el5 set to be updated
--> Processing Dependency: cyrus-sasl-md5 for package: libpurple
--> Processing Dependency: libsilcclient-1.0.so.1()(64bit) for package: libpurple
--> Processing Dependency: libsilc-1.0.so.2()(64bit) for package: libpurple
--> Processing Dependency: libmeanwhile.so.1()(64bit) for package: libpurple
---> Package gtkspell.x86_64 0:2.0.11-2.1 set to be updated
---> Package libpurple.i386 0:2.5.2-6.el5 set to be updated
--> Processing Dependency: libmeanwhile.so.1 for package: libpurple
--> Processing Dependency: libsilcclient-1.0.so.1 for package: libpurple
--> Processing Dependency: libsilc-1.0.so.2 for package: libpurple
--> Running transaction check
---> Package libsilc.i386 0:1.0.2-2.fc6 set to be updated
---> Package meanwhile.i386 0:1.0.2-5.el5 set to be updated
---> Package libsilc.x86_64 0:1.0.2-2.fc6 set to be updated
---> Package meanwhile.x86_64 0:1.0.2-5.el5 set to be updated
---> Package cyrus-sasl-md5.x86_64 0:2.1.22-4 set to be updated
--> Finished Dependency Resolution

Dependencies Resolved

=============================================================================================================================================================
 Package                                   Arch                              Version                                   Repository                       Size
=============================================================================================================================================================
Installing:
 pidgin                                    i386                              2.5.2-6.el5                               base                            1.3 M
 pidgin                                    x86_64                            2.5.2-6.el5                               base                            1.3 M
Installing for dependencies:
 cyrus-sasl-md5                            x86_64                            2.1.22-4                                  base                             46 k
 gtkspell                                  i386                              2.0.11-2.1                                base                             30 k
 gtkspell                                  x86_64                            2.0.11-2.1                                base                             29 k
 libpurple                                 x86_64                            2.5.2-6.el5                               base                            7.2 M
 libpurple                                 i386                              2.5.2-6.el5                               base                            7.2 M
 libsilc                                   x86_64                            1.0.2-2.fc6                               base                            398 k
 libsilc                                   i386                              1.0.2-2.fc6                               base                            412 k
 meanwhile                                 x86_64                            1.0.2-5.el5                               base                            109 k
 meanwhile                                 i386                              1.0.2-5.el5                               base                            108 k

Transaction Summary
=============================================================================================================================================================
Install     11 Package(s)
Update       0 Package(s)
Remove       0 Package(s)         

Total download size: 18 M
Is this ok [y/N]:

How could it ask me if this is ok!? No, it’s not ok! I don’t want to install .x86 version since I’m using x86_64. This is not my arch.
I’ve used Ubuntu at Desktop from September/October…and forgot about multilib_policy in yum.conf. This directive tells yum to install the best matches for packages. Pasting directly from yum.conf’s man page:

       multilib_policy
              Can be set to ’all’ or ’best’. All means install all possible arches for any package you want to install. Therefore yum install
              foo  will  install  foo.i386  and foo.x86_64 on x86_64, if it is available. Best means install the best arch for this platform,
              only.

After set it in yum.conf, I can install the right package arch:

[root@gamble ~]# yum install pidgin
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
 * base: centos.pop.com.br
 * updates: chi-10g-1-mirror.fastsoft.net
 * addons: centos.pop.com.br
 * extras: centos.pop.com.br
base                                                                                                                                  | 1.1 kB     00:00
updates                                                                                                                               |  951 B     00:00
addons                                                                                                                                |  951 B     00:00
extras                                                                                                                                |  951 B     00:00
Setting up Install Process
Parsing package install arguments
Resolving Dependencies
--> Running transaction check
---> Package pidgin.x86_64 0:2.5.2-6.el5 set to be updated
--> Processing Dependency: libpurple = 2.5.2-6.el5 for package: pidgin
--> Processing Dependency: libgtkspell.so.0()(64bit) for package: pidgin
--> Processing Dependency: libpurple.so.0()(64bit) for package: pidgin
--> Running transaction check
---> Package libpurple.x86_64 0:2.5.2-6.el5 set to be updated
--> Processing Dependency: cyrus-sasl-md5 for package: libpurple
--> Processing Dependency: libsilcclient-1.0.so.1()(64bit) for package: libpurple
--> Processing Dependency: libsilc-1.0.so.2()(64bit) for package: libpurple
--> Processing Dependency: libmeanwhile.so.1()(64bit) for package: libpurple
---> Package gtkspell.x86_64 0:2.0.11-2.1 set to be updated
--> Running transaction check
---> Package cyrus-sasl-md5.x86_64 0:2.1.22-4 set to be updated
---> Package meanwhile.x86_64 0:1.0.2-5.el5 set to be updated
---> Package libsilc.x86_64 0:1.0.2-2.fc6 set to be updated
--> Finished Dependency Resolution

Dependencies Resolved

=============================================================================================================================================================
 Package                                   Arch                              Version                                   Repository                       Size
=============================================================================================================================================================
Installing:
 pidgin                                    x86_64                            2.5.2-6.el5                               base                            1.3 M
Installing for dependencies:
 cyrus-sasl-md5                            x86_64                            2.1.22-4                                  base                             46 k
 gtkspell                                  x86_64                            2.0.11-2.1                                base                             29 k
 libpurple                                 x86_64                            2.5.2-6.el5                               base                            7.2 M
 libsilc                                   x86_64                            1.0.2-2.fc6                               base                            398 k
 meanwhile                                 x86_64                            1.0.2-5.el5                               base                            109 k

Transaction Summary
=============================================================================================================================================================
Install      6 Package(s)
Update       0 Package(s)
Remove       0 Package(s)         

Total download size: 9.1 M
Is this ok [y/N]:

Yeah! It’s ok, that’s ok! :D

  • Share/Save/Bookmark

Lançado o CentOS 5.3!!!

Posted by Ruy Rocha | Posted in CentOS, Linux | Posted on 01-04-2009

0

Bom, acabei de ver que saiu a nova versão do CentOS, a 5.3, pouco mais de 2 meses após o lançamento da mesma versão do RHEL.

Acabei de verificar também que os mirrors locais da Oi não estão atualizados e que o POP já possui a nova versão (resta saber se está completo… problemas).

Neste exato momento, um wget está acabando de baixar o boot.iso. Vou criar uma máquina virtual agora e fazer a instalação. Depois comento como ficou… ou não! :D

  • Share/Save/Bookmark

Cloud Evil OS – The Cloud Computing Operating System

Posted by Ruy Rocha | Posted in Linux | Posted on 31-03-2009

0

I’m proud to announce Cloud Evil OS: the cloud computing operating system. (I had some time while waiting for CentOS 5.3 and get this thing done.)

It is based on Tiny Core Linux and eyeOS, and the distro is about 40MB. The unique pre-requisites are:

- any desktop with at least 256MB of RAM. It works with at least 64MB but is too slow;

- ability to obtain network address via DHCP;

- internet connection;

You can see it live here:

  • Share/Save/Bookmark