Estou montando um laboratório de hardening para testar alguns conceitos e ferramentas (eu já havia comentado sobre isso há alguns posts). Tive alguns problemas com os repositórios existentes para o CentOS 6.2, distribuição e versão GNU/Linux que venho utilizando para isso.

Há dezenas ou centenas de pacotes que não estão disponíveis nos principais repositórios do CentOS. Mas, como para todo problema há uma equação que apresentará como resultado uma solução, eis que encontrei os seguintes repositórios:

 http://packages.sw.be/rpmforge-release/rpmforge-release-0.5.2-2.el6.rf.x86_64.rpm

ftp://rpmfind.net/linux/epel/6/x86_64/epel-release-6-7.noarch.rpm

Sendo este último de fud….

http://www6.atomicorp.com/channels/atomic/centos/6/x86_64/RPMS/atomic-release-1.0-14.el6.art.noarch.rpm

(Vale lembrar que estou trabalhando com uma distribuição 64bits, por isso do /6/x86_64)

A instalação destes caras é bem simples, rpm -Uhv e o path apresentado acima, mas não se esqueçam que o seu servidor Linux precisa ter acesso à internet.

E por que eu falei que o repositório do Atomic é fod..? Simples, ele tem uma série de pacotes de segurança/hardening para CentOS e todos as dependências necessárias. Exemplo disso foi a hora em que eu tive que instalar o php-suhosin com o seguinte comando: “yum install -y php-suhosin”.

Graças ao repositório do Atomic, o yum foi capaz de buscar a imensa lista de dependências. Vejam só:

Resolving Dependencies
–> Running transaction check
—> Package php-suhosin.x86_64 0:0.9.32.1-2.el6.art will be installed
–> Processing Dependency: php >= 5.3.6 for package: php-suhosin-0.9.32.1-2.el6.art.x86_64
–> Running transaction check
—> Package php.x86_64 0:5.3.3-3.el6_1.3 will be updated
–> Processing Dependency: php = 5.3.3-3.el6_1.3 for package: php-devel-5.3.3-3.el6_1.3.x86_64
—> Package php.x86_64 0:5.3.8-2.el6.art will be an update
–> Processing Dependency: php-common(x86-64) = 5.3.8-2.el6.art for package: php-5.3.8-2.el6.art.x86_64
–> Processing Dependency: php-cli(x86-64) = 5.3.8-2.el6.art for package: php-5.3.8-2.el6.art.x86_64
–> Running transaction check
—> Package php-cli.x86_64 0:5.3.3-3.el6_1.3 will be updated
—> Package php-cli.x86_64 0:5.3.8-2.el6.art will be an update
—> Package php-common.x86_64 0:5.3.3-3.el6_1.3 will be updated
–> Processing Dependency: php-common = 5.3.3-3.el6_1.3 for package: php-ldap-5.3.3-3.el6_1.3.x86_64
–> Processing Dependency: php-common = 5.3.3-3.el6_1.3 for package: php-imap-5.3.3-3.el6_1.3.x86_64
–> Processing Dependency: php-common = 5.3.3-3.el6_1.3 for package: php-pdo-5.3.3-3.el6_1.3.x86_64
–> Processing Dependency: php-common = 5.3.3-3.el6_1.3 for package: php-snmp-5.3.3-3.el6_1.3.x86_64
–> Processing Dependency: php-common = 5.3.3-3.el6_1.3 for package: php-xml-5.3.3-3.el6_1.3.x86_64
–> Processing Dependency: php-common = 5.3.3-3.el6_1.3 for package: php-gd-5.3.3-3.el6_1.3.x86_64
–> Processing Dependency: php-common = 5.3.3-3.el6_1.3 for package: php-mbstring-5.3.3-3.el6_1.3.x86_64
–> Processing Dependency: php-common = 5.3.3-3.el6_1.3 for package: php-mysql-5.3.3-3.el6_1.3.x86_64
—> Package php-common.x86_64 0:5.3.8-2.el6.art will be an update
—> Package php-devel.x86_64 0:5.3.3-3.el6_1.3 will be updated
—> Package php-devel.x86_64 0:5.3.8-2.el6.art will be an update
–> Running transaction check
—> Package php-gd.x86_64 0:5.3.3-3.el6_1.3 will be updated
—> Package php-gd.x86_64 0:5.3.8-2.el6.art will be an update
–> Processing Dependency: libt1.so.5()(64bit) for package: php-gd-5.3.8-2.el6.art.x86_64
—> Package php-imap.x86_64 0:5.3.3-3.el6_1.3 will be updated
—> Package php-imap.x86_64 0:5.3.8-2.el6.art will be an update
—> Package php-ldap.x86_64 0:5.3.3-3.el6_1.3 will be updated
—> Package php-ldap.x86_64 0:5.3.8-2.el6.art will be an update
—> Package php-mbstring.x86_64 0:5.3.3-3.el6_1.3 will be updated
—> Package php-mbstring.x86_64 0:5.3.8-2.el6.art will be an update
—> Package php-mysql.x86_64 0:5.3.3-3.el6_1.3 will be updated
—> Package php-mysql.x86_64 0:5.3.8-2.el6.art will be an update
–> Processing Dependency: libmysqlclient.so.18(libmysqlclient_18)(64bit) for package: php-mysql-5.3.8-2.el6.art.x86_64
–> Processing Dependency: libmysqlclient.so.18(libmysqlclient_16)(64bit) for package: php-mysql-5.3.8-2.el6.art.x86_64
–> Processing Dependency: libmysqlclient.so.18()(64bit) for package: php-mysql-5.3.8-2.el6.art.x86_64
—> Package php-pdo.x86_64 0:5.3.3-3.el6_1.3 will be updated
—> Package php-pdo.x86_64 0:5.3.8-2.el6.art will be an update
—> Package php-snmp.x86_64 0:5.3.3-3.el6_1.3 will be updated
—> Package php-snmp.x86_64 0:5.3.8-2.el6.art will be an update
—> Package php-xml.x86_64 0:5.3.3-3.el6_1.3 will be updated
—> Package php-xml.x86_64 0:5.3.8-2.el6.art will be an update
–> Running transaction check
—> Package mysql-libs.x86_64 0:5.1.52-1.el6_0.1 will be updated
–> Processing Dependency: libmysqlclient.so.16()(64bit) for package: 2:postfix-2.6.6-2.2.el6_1.x86_64
–> Processing Dependency: libmysqlclient.so.16(libmysqlclient_16)(64bit) for package: 2:postfix-2.6.6-2.2.el6_1.x86_64
—> Package mysql-libs.x86_64 0:5.5.19-1.el6.art will be an update
—> Package t1lib.x86_64 0:5.1.2-6.el6 will be installed
–> Running transaction check
—> Package mysqlclient16.x86_64 0:5.1.59-1.el6.art will be installed
–> Finished Dependency Resolution

Dica importante: Caso você esteja trabalhando com outra distribuição ou versão Linux, você poderá rodar o seguinte comando: wget -q -O – http://www.atomicorp.com/installers/atomic | sh  para que o script automic possa instalar o repositório correto no seu server. 🙂

O que eu achei fod… no repositório do Atomic foi o fato de eu ter encontrado simplesmente todos os produtos de segurança que precisava para fazer um hardening legalzinho no CentOS; mas a explicação para isso é bem simples: o Atomic está se tornando uma distribuição especializada em hardening de servidores Linux.

Atualização: Fiz alguns testes com o ASL, que adquiri há 4 dias, e posso dizer que ele é um conjunto de produtos e configurações focados em segurança. Só tive problema na hora de utilizar o kernel com hardening que ele disponibiliza. A VM simplesmente não sobe com este kernel 🙁 – Estou analisando o problema e até abri um chamado junto à Atomic.

Além das regras da TrusteWave para o Mod_security,  eu utilizo as da Atomic, que são atualizadas quase que diariamente. Um ponto importante: este repositório da Atomic já possui a última versão do mod_security. 🙂

Aviso para galera que irá ao HackingDay: você subir uma VM com o Atomic Secured Linux para o pessoal ficar brincando. Não fique de fora dessa. 🙂