Lançado CentOS 5.5

Está disponível para download a quinta atualização da serié CentOS 5, que foi lançado recentemente. CentOS é uma distribuição Linux para uso comercial, tem sua base na distro Red Hat. Sua atualizações são fornecidas ao público gratuitamente via Upstream OS Provider (UOP). Na prática o CentOS possui os mesmos papcotes do RedHat, apenas faz a remoção das marcas e artes gráficas originais. Dentre as novidades nesta distro, podemos citar:

freeradius2
gpxe (x86_64 only)
gsl
postgresql84
python-dmidecode
samba3x
tunctl
xz

Você pode fazer o download do CentOS por:
Toorent:
CD
Link 01
Link 02

DVD:
Link 01
Link 02

LiveCD:
Link 01
Link 02

Http:
Link 01

Caso você deseje fazer o update de sua distro, basta rodar:

yum update -y

Após a conclusão do comando, verifique se realmente o SO foi atualizado:

rpm -q centos-release

Links:
Announce
Wiki
Release Notes

Posted in CentOS | Tagged | Leave a comment

Windows Fail #01

Bem pessoal, pra quebrar um pouco a monotonia ireri começar hoje a postar algumas imagens da série ruindows fail classic. E como primeira imagem, segue um flagrante enquanto esperava atendimento em uma agência da caixa.

Posted in Fail | Tagged , , | Leave a comment

Falhas de segurança no DNS – Bind

Ao configurar um novo servidor, muitos administradores se preocupam com muitos detalhes nas configurações de segurança. Mas algumas vezes coisas simples acabam passando de forma despercebidas, como é o caso do servidor de DNS. Estima-se que no mundo todo, 60% dos servidores de DNS são mal configurados. Neste post irei demonstrar duas falhas na configuração do servidor de DNS Bind.

A primeira falha que iremos averiguar, está ligada ao AXFR. Que é usado na transferência da base de dados entre servidores de DNS master, secundário ou mestre. Caso haja a falha na segurança é possível visualizar toda a base de dado de DNS de um domínio com a seguinte sintaxe:

dig HOSTNAME -t axfr @NAMESERVER

Se isso está ocorrendo em seu servidor, você pode corrigir editando o arquivo de configuração /etc/named.conf:

Options {
recursion no;
allow-transfer { none; };
(...)

A seguir iremos ver uma falha bastante usada no estudo/viabilidade de invasões a servidores, onde é possível visualizar qual SO e versão do Bind. O comando em questão é este:

dig -t txt -c chaos VERSION.BIND @NAMESERVER

A resposta do comando pode ser algo como:

;; ANSWER SECTION:
VERSION.BIND.        0    CH    TXT    "9.6.1-P3-RedHat-9.6.1-15.P3.el5"

Para fechar esta brecha, edite novamene o arquivo de configuração do Bind e adicione:

Options {
version "no version";
(...)

Lembrando que você pode colocar o texto que quiser, vai depender de sua criatividade.

É sso aew pessoal, até a próxima!

Posted in Segurança | Tagged , , , | Leave a comment

Alterando plano de fundo do Gnome

Bem pessoal.. Alterar o papel de parede (background) do Gnome pela interface gráfica todos sabem, ou devem saber. Mas aqui vai uma dica que usei para fazer uma brincadeira com um colega. Acessei a máquina remotamente (via ssh) e alterei o papael de parede por linha de comando (bash), legal foi ver a cara de surpresa dele.. rsrs.. Mas vamos à dica:

Verifique qual o caminho do atual papel de parede:

gconftool-2 --get /desktop/gnome/background/picture_filename

Alterando o papel de parede:

gconftool-2 -t string -s /desktop/gnome/background/picture_filename CAMINHO-DA-IMAGEM

Pronto! =D

Posted in Comandos | Tagged , , | Leave a comment

Realizando downgrade do Rails

Toda migração de servidor é um pouca traumática, ainda mais pra quem usa RoR (Ruby On Rails), essa semana me deparei com um erro na aplicação de um cliente que funcionava normalmente no antigo servidor. O erro era o seguinte:

/usr/lib/ruby/gems/1.8/gems/activesupport-2.3.5/lib/active_support/dependencies.rb:443:in `load_missing_constant’: uninitialized constant ApplicationControlle
r (NameError)
from /usr/lib/ruby/gems/1.8/gems/activesupport-2.3.5/lib/active_support/dependencies.rb:80:in `const_missing’
from /usr/lib/ruby/gems/1.8/gems/activesupport-2.3.5/lib/active_support/dependencies.rb:92:in `const_missing’
from /home/etiqueta/SiteEtiquetas/app/controllers/ajax_controller.rb:1
from /usr/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:31:in `gem_original_require’
from /usr/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:31:in `require’
from /usr/lib/ruby/gems/1.8/gems/activesupport-2.3.5/lib/active_support/dependencies.rb:158:in `require’
from /usr/lib/ruby/gems/1.8/gems/activesupport-2.3.5/lib/active_support/dependencies.rb:265:in `require_or_load’
from /usr/lib/ruby/gems/1.8/gems/activesupport-2.3.5/lib/active_support/dependencies.rb:224:in `depend_on’
from /usr/lib/ruby/gems/1.8/gems/activesupport-2.3.5/lib/active_support/dependencies.rb:136:in `require_dependency’
from /usr/lib/ruby/gems/1.8/gems/rails-2.3.5/lib/initializer.rb:414:in `load_application_classes’
from /usr/lib/ruby/gems/1.8/gems/rails-2.3.5/lib/initializer.rb:413:in `each’
from /usr/lib/ruby/gems/1.8/gems/rails-2.3.5/lib/initializer.rb:413:in `load_application_classes’
from /usr/lib/ruby/gems/1.8/gems/rails-2.3.5/lib/initializer.rb:411:in `each’
from /usr/lib/ruby/gems/1.8/gems/rails-2.3.5/lib/initializer.rb:411:in `load_application_classes’
from /usr/lib/ruby/gems/1.8/gems/rails-2.3.5/lib/initializer.rb:197:in `process’
from /usr/lib/ruby/gems/1.8/gems/rails-2.3.5/lib/initializer.rb:113:in `send’
from /usr/lib/ruby/gems/1.8/gems/rails-2.3.5/lib/initializer.rb:113:in `run’
from /home/etiqueta/SiteEtiquetas/config/environment.rb:15
from /usr/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:31:in `gem_original_require’
from /usr/lib/ruby/site_ruby/1.8/rubygems/custom_require.rb:31:in `require’
from /usr/lib/ruby/gems/1.8/gems/mongrel-1.1.5/bin/../lib/mongrel/rails.rb:147:in `rails’
from /usr/lib/ruby/gems/1.8/gems/mongrel-1.1.5/bin/mongrel_rails:113:in `cloaker_’
from /usr/lib/ruby/gems/1.8/gems/mongrel-1.1.5/bin/../lib/mongrel/configurator.rb:149:in `call’
from /usr/lib/ruby/gems/1.8/gems/mongrel-1.1.5/bin/../lib/mongrel/configurator.rb:149:in `listener’
from /usr/lib/ruby/gems/1.8/gems/mongrel-1.1.5/bin/mongrel_rails:99:in `cloaker_’
from /usr/lib/ruby/gems/1.8/gems/mongrel-1.1.5/bin/../lib/mongrel/configurator.rb:50:in `call’
from /usr/lib/ruby/gems/1.8/gems/mongrel-1.1.5/bin/../lib/mongrel/configurator.rb:50:in `initialize’
from /usr/lib/ruby/gems/1.8/gems/mongrel-1.1.5/bin/mongrel_rails:84:in `new’
from /usr/lib/ruby/gems/1.8/gems/mongrel-1.1.5/bin/mongrel_rails:84:in `run’
from /usr/lib/ruby/gems/1.8/gems/mongrel-1.1.5/bin/../lib/mongrel/command.rb:212:in `run’
from /usr/lib/ruby/gems/1.8/gems/mongrel-1.1.5/bin/mongrel_rails:281
from /usr/bin/mongrel_rails:19:in `load’
from /usr/bin/mongrel_rails:19

Depois de gastar algumas horas em busca da solução consegui descobrir o problema.. Era a bendita versão do rails v2.3.5, sendo necessário realizar o downgrade para a v2.2.2. Para começar, descubra qual versão do rails está rodando no servidor:

rails --version

Remova a versão atual:

gem uninstall -v=x.x.x rails

E instale a versão desejada:

gem install -v=2.2.2 rails

Isso deve resolver seu problema…

Posted in cPanel | Tagged , , | Leave a comment

Incrementando comandos com Exim

Hoje descobri que meu co-worker exclui os e-mails da fila do exim direto do sistema de arquivos, sem passar pelo banco do exim. E isso causou algumas discrepâncias na hora de realizar qualquer tarefa no exim. Alguns erros como:

Line mismatch: 4d 1O7Zux-0006ga-4K

Failed to open input file for 1O7a4J-0007KN-3O-D: No such file or directory

Spool data file for 1O7a4J-0007KN-3O does not exist
Continuing, to ensure all files removed
Message 1O7a4J-0007KN-3O has been removed or did not exist

Para corrigir foi necessário conseguir uma forma de pegar o ID de cada mensagem e excluir manualmente. Para isso, basta executar:

exim -bp | awk '{print $2}' | egrep '......-......-..' |  xargs -n1 exim -Mrm

Explicando:
exim -bp: Exibe todas as mensagens na fila de e-mail;
awk ‘{print $2}’: Seleciona a coluna com o ID das mensagens;
egrep ‘……-……-..’: Filtra as linhas de por mensagem;
xargs -n1: Joga o resultado do comando um por um como parâmetro para o próximo comando;
exim -Mrm: Enfim, remove a mensagem sem retornar erro ao remetente;

Com base nisso podemos construir outros scripts, de acordo com o cabeçalho. No exemplo abaixo, filtramos a fila de acordo com o remetente, e dizemos ao exim para força a entrega destas mensagens:

#!/bin/bash
 
# Loop para pegar o ID de todas as mensagens na fila
for i in "$(exim -bp | awk '{print $3}' | egrep '......-......-..')"
do
     # Condição que verifica o remetende de uma mensagem
     if [ "$(exim -Mvh $i | grep '^-auth_id' | grep '@mkt.baladain.com.br$')" ]
     then
          # Forca a entrega de um e-mail espcifico
          exim -M $i;
     fi
done

Agora só usar a imaginação! =P

Posted in Comandos | Tagged , | 1 Comment

Instalando yum no RedHat 4

Sinceramente não gosto muito do up2date do redhat, pelo menos comigo a maioria das vezes dava problema. Então resolvi instalar o yum para sanar alguns problemas que estava tento para instalar alguns pacotes. Para ter menos dor de cabeça, optei não por compilar na maneta, mas instalar os pacotes rpm’s. Este pacotes podem ser encontrados facilmente no DAG. Instale as dependências:
- python-elementtree;
- python-sqlite;
- python-urlgrabber;
- sqlite;
- sqlite-devel;
- yum;

Baixe os pacotes de acordo com a arquitetura de sua máquin (32 bits / 64 bits). Para organizar melhor, crie um diretório para fazer o download de todos estes arquivos e instale os pacotes:

mkdir /opt/yum
rpm -ivh *.rpm

Agora edite o arquivo /etc/yum.conf de configuraçao e deixe da seguinte forma:

[main]
cachedir=/var/cache/yum
debuglevel=2
logfile=/var/log/yum.log
pkgpolicy=newest
distroverpkg=redhat-release
tolerant=1
exactarch=1
 
[base]
name=CentOS-$releasever – Base
baseurl=http://mirror.centos.org/centos/4/os/i386/
gpgcheck=1
 
[updates]
name=Red Hat Linux $releasever – Updates
baseurl=http://mirror.centos.org/centos/4/updates/i386/
gpgcheck=1

Importe a chave de segurança:

wget http://mirror.centos.org/centos/RPM-GPG-KEY-CentOS-4
rpm --import RPM-GPG-KEY-CentOS-4

Pronto!  Teste o funcionamento:

yum update
Posted in Linux | Tagged , | Leave a comment

Permitindo acesso remoto no MySQL

Olá pessoas,
Hoje vou mostrar um procedimento bem fácil mas que para quem não está familiarizado com comandos SQL pode confudir um pouco. Bem, para permitir um usuário conectar-se a um banco de dados remotamente, acesse o console do MySQL e execute os seguintes comandos:

USE mysql;
GRANT ALL privileges ON BANCO.* TO USUARIO@'%' IDENTIFIED BY 'SENHA' WITH GRANT OPTION;
FLUSH privileges;

O % garante que qualquer IP possa conectar-se ao banco, mas se preferir você também pode configurar um IP específico.

Posted in MySQL | Tagged , | Leave a comment

Ratelimit database not available

Trabalhar em suporte de empresa de hospedagem é sempre uma novidade, hoje foi a vez de aprender como resolver um errinho chato do exim. Não sei como, mas aparentemente os arquivos de consulta do ratelimit do exim foram corrompidos. Retornando a seguinte mensagem nos logs de erro:

Warning: ACL “warn” statement skipped: condition test deferred: ratelimit database not available

Pesquisando um pouco na net, foi fácil descobrir a solução.
Páre o MTA exim:

/etc/init.d/exim stop

Acesse o diretório:

cd /var/spool/exim/

Renomeie o diretório:

mv db db.old

Agora é só subir o exim e tentar novamente. =D

/etc/init.d/exim start
Posted in cPanel | Tagged , | Leave a comment

Unexpected condition from IMAP server, closed or corrupt connection to IMAP

Todo dia é dia de aprender coisa nova, e dessa vez me deparei com um erro gigantesco que nunca havia visto:

Unexpected condition from IMAP server, closed or corrupt connection to IMAP. Possible mailbox corruption.

Infelizmente, desta vez, o google não pode me ajudar em muita coisa. Mas de acordo com a lógica fui verificar a mailbox do cliente em:

/home/LOGIN/mail/DOMINIO/USER/

Aparentemente normal, e agora? Restaurar backup? Talvez, mas olhando mais de perto a disposição estrutural dos diretórios acabei encontrando um falha:

/home/LOGIN/mail/DOMINIO/USER/cur/cur/

Como podem perceber, o diretório “cur” estava duplicado. Foi só remover o diretório e fazer um rsync para o diretório principal e problema resolvido. Mais um usuário feliz!

Posted in Dicas, cPanel | Tagged , , | Leave a comment