Em construção!

Objetivo

Abordar aspectos que ajudam a melhorar a segurança do wordpress.

Wordpress

Focando nos ajustes e configurações da interface web.

Versão Wordpress

Busque sempre utilizara última versão disponível do Wordpress.

Não tenha medo de atualizar, vale mais a pena ajustar seu tema - se houver alguma mudança - do que correr um risco de segurança.

A versão do site do projeto é mundialmente testada por milhares de desenvolvedores, atualize sempre para as versões mais novas, mesmo que sejam minor versions (3.2.1 pra 3.2.2 ou major versions (3.1 para 3.2).

Ao fazer isto você vai sempre estar contando com inúmeras correções (bugfix) e melhorias.

Veja por exemplo o que a versão 3.2 trouxe de novo - http://codex.wordpress.org/Version_3.2

E veja como são importantes atualizações - http://codex.wordpress.org/Version_3.1.4

Versões Plugins

Prefira sempre plugins com bastante documentação, boa aprovação e aceitação dos usuários com vários reviews.

Mantenha seus plugins atualizados e se possível, em caso de sites com grande movimento, peça para seu desenvolvedor avaliar cada plugin buscando falhas que posdem ser exploradas como XSS e SQL Injections.

Infelizmente os desenvolvedores de plugins também não se preocupam com escalabilidade, alguns plugins podem deixar seu site lento e pesado por não terem sido projetos para grandes tráficos, portanto, merecem avaliação cuidadosa e testes de carga com apoio da sua equipe de infraestrutura (devops).

Senhas

Utilize senhas fortes com letras (maiusculas e minúsculas), números e símbolos.

Suas senas devem ter pelo menos 8 caracteres.

Use um gerador automático de senhas - isso evita que você construa senhas com percepções pessoais.

Exemplos de senhas fortes:

q7w=1@fzctzd;d

dO<u$5aI.euv3p

=jil~J9R0JmG/x

Senhas fortes 'pronunciáveis':

nal-og-vak-hid

wuc-koj-vod-pi

Você precisa guardar essas senhas de forma segura, afinal são complicadas e difíceis de gravar, para isto recomendo os softwares abaixo para armazenar suas senhas:

  • 1password (mac)
  • keepassx (linux)
  • keepass (windows)

Use estas senhas inclusive para o acesso o banco de dados, uma senha forte ali é essencial.

Usuários

Admin

Em caso de um ataque de força bruta o primeiro usuário que vão tentar é o ADMIN, usuário padrão de administração do wordpress, portanto meu amigo, remova as credenciais deste usuário, crie um usuário com outro NOME e especifique privilégios de ADMIN, logue-se com esse novo usuário e logo depois remova o usuário ADMIN.

Pessoal

Crie os usuários que vão trabalhar e alimentar o site.

Evite criar usuários com nomes simples Guto, Paulo, José, Carol pois esses são os primeiros que o pessoal vai tentar 'forçar' a autenticação.

Crie apelidos para seus usuários e defina, não se preocupe você pode definir o Nome Real do usuário em outro campo do cadastro.

Não permita que seus usuários vejam o nome de quem publicou no seu tema.

Filed under destaque, opinião, pensamentos livres by gutocarvalho on julho 10, 2011 at 9:04

Se fizer isso nos eu tema, você estará dando a informação necessária para que alguém execute um 'brute foce' em seu blog.

Por último, desabilite o registro de usuários, cadastre manualmente é mais seguro.

Acesso Remoto

Prefira sempre SFTP ou SSH ao acesso FTP quando for enviar arquivos para seu servidor, se possível desabilite a conta FTP em seu sistema.

SysAdmin

Essa área é focada para ajustes no servidor WEB (Apache2/Nginx/etc…) e no sistema de arquivos.

Listagem de Arquivos

Por padrão o wordpress não trata a listagem de arquivos, deixando algumas brechas que permite que alguém aponte direto para seu diretório de imagens e veja todos os seus arquivos.

Para tratar isso devemos desabilitar o INDEXES via .htaccess no diretório em questão.

Insira a linha no fina .htacess do diretório root do seu wordpress.

# END Url Rewrite section

Options -Indexes
DirectoryIndex index.html index.php /wordpress/index.php  

# BEGIN WordPress

Tem que ser inserido entre essas linhas acima.

Informações do sistema

Versão

Omitir versão do wordpress é importante, se o atacante sabe a versão ele pode procurar por exploits vigentes que podem te afetar caso ainda não tenha sido atualizado.

Recomendamos utilizar um plugin para omitir essa informação.

Robots

Evite que os robos varram e indexem diretórios administrativos de seu site.

Edite o arquivo robots.txt da raiz e insira a linha abaixo:

Disallow: /wp-*

http://codex.wordpress.org/Search_Engine_Optimization_for_WordPress

Diretórios e Arquivos

arquivo: wp-login.php

Assim temos mais uma camada de segurança antes de liberar acesso ao arquivo de autenticação do wordpress, dificultamos um pouco mais para o atacante.

<Files wp-login.php>
Satisfy Any
AuthType Digest
AuthName "Auth Level One"
AuthDigestDomain /wp-admin/
AuthUserFile /var/www/wordpress/.htpasswda3
Require valid-user
</Files>

criando o arquivo e setando senha para o primeiro usuário

htpasswd -cm /var/www/wordpress/.htpasswd user

criando o segundo usuário

htpasswd -m /var/www/wordpress/.htpasswd user

diretório: wp-admin

Pede autenticação para tudo que não for arquivos estáticos neste diretório.

AuthType Digest
AuthName "Auth Level One"
AuthDigestDomain /wp-admin/
AuthUserFile /var/www/wordpress/.htpasswda3
Require valid-user
<FilesMatch "\.(ico|pdf|flv|jpg|jpeg|mp3|mpg|mp4|mov|wav|wmv|png|gif|swf|css|js)$">
Allow from All
</FilesMatch>
<FilesMatch "(async-upload|admin-ajax)\.php$">
<IfModule mod_security.c>
SecFilterEngine Off
</IfModule>
Allow from All
</FilesMatch>
dica importante

Você pode subir o arquivo wp-admin.php um nível - fora do root wordpress - para aumentar a segurança, funciona.

diretório: wp-content

Restrinja acesso direto a arquivos PHP, apenas arquivos de mídia serão permitidos e carregados.

Adicione ao .htaccess do root do folder

RewriteCond %{THE_REQUEST} ^[A-Z]{3,9}\ /wordpress/wp-content/.*$ [NC]
RewriteCond %{REQUEST_FILENAME} !^.+(flexible-upload-wp25js|media)\.php$
RewriteCond %{REQUEST_FILENAME} ^.+\.(php|html|htm|txt)$
RewriteRule .* - [F,NS,L]

Isso pode quebrar alguns plugins, porém você pode tratar a excessão plugin a plugin no htaccess.

Cuidando do Banco

Quando o wordpress é instalado por padrão, ele cria tabelas com o prefixo wp-*

Usar essa tabelas facilita a vida do atacante pois ele conhece quais são as tabelas de usuário, posts, etc, assim ele pode tentar fazer injections e alterar os dados destas.

Para dificultar a vida do atacante podemos mudar o prefixo das tabelas para qualquercoisa-* por exemplo, isso pode ser feito durante a instalação.

Se seu wordpress já estiver instalado, vamos indicar alguns plugins que a fazer esta mudança.

Permissões de arquivos

É importante definir corretamente as permissões de arquivos do seu wordpress

Nunca use 777 para diretórios e arquivos, faça o correto.

Use sempre a permissão 755 (RWX,R–,R–) para diretórios e 644 (RW-,R–,R–) para arquivos.

Ajustando permissões de arquivos

find /var/www/wordpress -type f -exec chmod 664 {} \;

Ajustando permissões de diretórios

find /var/www/wordpress -type d -exec chmod 775 {} \;

Mais informações no codex:

http://codex.wordpress.org/Changing_File_Permissions

Bloqueio de ips no admin

Se possível limite no apache2 os IPS que podem acessar o WP-ADMIN, isso diminui bastante a chance dos atacantes pois apenas alguns IPs conseguirão entrar neste diretório.

Order Deny,Allow
Allow from ww.xx.yy.zz
Deny from all

Cookies Encriptados

Um cookie HTTP é um pedaço de informação em modo texto armazenado no navegador do usuário. O cookie pode ser utilizado para guardar informações acerca da autenticação, guardar as preferencias do usuário, preferências de carrinhos de compra em sites de e-commerce ou outras informações, praticamente qualquer coisa pode ser armazenada em um cookie, inclusive informações sensíveis.

Atacantes podem tentar interceptar cookies através de sniffers, e com isso obter informações acerca de sua autenticação. Isso é chamado de Cookie Hijacking e para evitá-los basta acessar o endereço abaixo:

https://api.wordpress.org/secret-key/1.1/salt/

Copiar a saída e colocar em nosso wp-config.php

define('AUTH_KEY',         '5@a+1ZA8aP[yb _yL6M&mk65g0PAW%?#>S=G%A!.>l%||Lg-VD+;ZB*ZxnefuW:L');
define('SECURE_AUTH_KEY',  'iuxsg+ENbHYJ9Ut-,a1`G3fsEAPG|6HE-eD@B;foCW(h +)$HolP~p[.sYWkaYvr');
define('LOGGED_IN_KEY',    'CC?(TpO&O|`|Me-2oY[WDyr:PE-Y{UjkYK?2IOKMSF~n[8chw7HIop!;AE=Oy`mj');
define('NONCE_KEY',        'tzB-!L{(.$0Km`U@~PlkS+a(04)V_+F YUy A*E8~$F|(L$/5W~x|kFSV+w)mJ-g');
define('AUTH_SALT',        '@N!`lVz-9IP2FDt0%Eyy6dJaV!^pPI8= U7aSjo:.`yB[)bCkt]Ok4za?S S`W*[');
define('SECURE_AUTH_SALT', 'jl=}pRQG#*41@+#InPk-:=-JCWBbl1W7BfQG0|5C&>(|p|(0>xzMT7}B91)psvza');
define('LOGGED_IN_SALT',   'jH$+Y99[~;-3Fr.%h/z&@XZ2)KQ#4yu-TSiLQl--ux(+ekC`3_tt_3T3$J=~HX|t');
define('NONCE_SALT',       'AXIk6?5z]`s,Y}n.^a^- YglT:t1enJB+T4xPGrs$~rylF^yga7xj;0*!;T!O_rc');

Esse é um exemplo randômico de saída, cada acesso vai gerar uma saída diferente.

Com isso a parte sensível dos cookies do wordpress passa a ser criptograda, dificultando a vida dos atacantes.

Acesso seguro

site principal

Se houver condições de usar HTTPS no site principal - prefira sempre um certificao válido, isso aumenta sensivelmente a segurança e privacidade dos dados, principalmente se você for acessar o site e publicar a partir de locais públicos.

http://en.support.wordpress.com/https/

site administrativo

Essencial rodar essa área do site em modo seguro, dá para isolar apenas o admin via SSL, deixando o HOME em HTTP puro.

O Wordpress tem alguns parâmetros que podem forçar o LOGIN em SSL, basta inserir no wp-config.php

define('FORCE_SSL_ADMIN', true); 

http://codex.wordpress.org/Administration_Over_SSL

Backup

Faça Backup diariamente dos arquivos estáticos e dinâmicos do Wordpress.

tar jcvf /var/backups/wordpress-`date +%Y%m%d`.war.tar.bzw /var/www/wordpress

Faça Backup diariamente e do banco.

mysqldump -U usuário -p nomedobanco > /var/backups/wordpress-database`date +%Y%m%d`.war.sql

Você pode agendar estas tarefas no CRON.

Plugins Wordpress

Segurança

Akismet

Este plugin lhe permite controlar SPAM no seus comentários e track-backs, evitando vandalismos em seu site.

É um dos plugins de segurança mais eficientes.

http://akismet.com/

Bad Behavior

Utilizar plugin Bad Behavior para bloquear IPS maliciosos e comportamentos suspeitos.

Este plugin analisa toda o início das requisições HTTP, caso um bot seja detectado ele rejeita o acesso.

Ele avalia IPS sujos e outros comportamentos diminuindo as chances de vandalismo em seu site.

http://bad-behavior.ioerror.us/documentation/benefits/

Login Lockdown

Utilizar plugin Login Lockdown para evitar força bruta no login.

Você define quantos erros cada tentativa de login pode ter, de quanto em quanto tempo a pessoa pode tentar se logar após um erro e o tempo de bloqueio caso a regra definida seja infringida.

Você pode inibir as mensagens de erro de login, isso é interessante para evitar que o atacante saiba se o usuário é válido.

Você pode visualizar os IPS bloqueados e liberar o IP se for um falso positivo.

http://www.bad-neighborhood.com/login-lockdown.html

Ask Apache Password Protect

Este plugin protege os diretórios e arquivos do seu wordpress. Fora isto ele também analisa e inibe alguns comportamentos maliciosos.

Abaixo os principais pontos em que ele atua:

  • Protege o diretório wp-content
  • Protege o diretório wp-include
  • Protege o diretório wp-admin com segunda camada de autenticação
  • Protege o arquivo wp-login.php com segunda camada de autenticação
  • Inibe a listagem de arquivos nos diretórios do WP (indexes apache)

Fora isto ele tem métodos de proteção contra SPAM, Hijacking, XSS dentre outros.

É um plugin muito completo.

http://wordpress.org/extend/plugins/askapache-password-protect/

Secure Wordpress

Recursos do plugin:

  • Desativa o retorno de mensagens de erro no login (possibilitam saber se o usuário existe)
  • Esconde versão do Wordpress nos cabeçalhos
  • Esconde versões do Wordpress no dashboard para usuários “não admins”
  • Esconde versões do Wordpress nos Stylesheets do frontend (visão do usuário)
  • Criar arquivos index.php em 'plugins' e 'themes' para evitar listagem de diretórios
  • Remove alertas de update do wordpress para “não admins”
  • Remove alertas de atualização de plguins para “não admins”
  • Protege o wordpress contra URL's maliciosas
  • Tem suporte a auditoria do websitedefender.com
    • Detecção de Malware presente em seu website
    • Auditoria do website buscando problemas de segurança
      • Evita que você seja bloqueado (blocklist) pelo google
      • Mantém o conteúdo do seu website seguro
      • Envia alertas sobre comportamentos suspeitos


      Security Scan

Este plugin avalia seu ambiente e lhe sugere melhorias.

Através dele você pode inclusive mudar o prefixo de suas tabelas no baco de wp-* para algumacoisa-* , dificultando a vida do atacante.

Ele oferece os seguintes recursos:

  • Gerador de senhas fortes
  • Avalia, alerta e permite ajustar permissões de arquivos inseguras
  • Avalia, alerta e permite desativar o retorno de erros em tentativas de login
  • Avalia, alerta e permite ajustar a segurança de sua base de dados
    • Permite o backup de sua base de dados
    • Permite trocar o prefixo de suas tabelas
  • Verifica se a versão do WP no sistema está oculto
  • Verifica se a versão do WP nas META TAGS está oculto
  • Verifica se o usuário ADMIN existe e tem privilégios de ADMIN
  • Verifica se o WP está atualizado
  • Verifica se os diretórios estão protegidos por arquivos .htaccess

http://wordpress.org/extend/plugins/wp-security-scan/

AntiVirus

Uma forma simples de verificar os arquivos do wordpress e temas

  • Pronto para rodar no wordpress 3
  • Detecta backdoor no sub-sistema permalink
  • Verifica os arquivos do wordpress atrás de código malicioso
  • Verifica os arquivos do seu tema atrás de código malicioso
  • Tem suporte a whitelist para excluir arquivos da checagem
  • Tem suporte a agendamento para executar a verificação diariamente.

http://wpantivirus.com/

WPDB-Manager

Utilizar plugin WPDB-Manager para cuidar do seu banco de dados.

Ele te permite administrador o banco com os seguintes recursos:

  • backup diario
  • otimização da base
  • reparo de base e tabelas corrompidas

    Referências

http://codex.wordpress.org/Hardening_WordPress



wordpress_aumentando_a_seguranca_de_seu_site.txt · Last modified: 2011/07/13 00:16 by gutocarvalho
CC Attribution-Share Alike 4.0 International
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0