Muitas pessoas questionam a segurança do CMS Joomla, por desconhecerem que a maioria dos ataques bem sucedidos, ocorrem a nível de servidor.
Obviamente algumas ações são necessárias para potencializar a segurança do CMS e destaco:
1) utilizar sempre a última versão stable;
2) encapsular o diretório de administração (/administrator);
3) diretórios devem ter permissão 755;
4) arquivos dever possuir permissão 644;e
5) nunca use templates comerciais, pirateados.
Abaixo listo as boas práticas para montagem de um servidor web seguro, voltado a aplicações PHP, particularmente Joomla, baseado em tecnologia Linux-Apache-MySQL-PHP.
aptitude install apache2 apache2-mpm-prefork apache2-utils apache2.2-commonbinutils build-essential ca-certificates curl dbconfig-common defoma
dpkg-dev fontconfig-config gawk javascript-common libapache2-mod-php5libapr1 libaprutil1 libc6-dev libcurl3 libdbd-mysql-perl libdbi-perl libexpat1
libfontconfig1 libfreetype6 libgd2-xpm libgmp3c2 libgomp1 libhtml-templateperl libio-multiplex-perl libjpeg62 libjs-jquery libmpfr1ldbl libmysqlclient15off
libnet-cidr-perl libnet-daemon-perl libnet-server-perl libnet-snmp-perl libplrpc-perl libpng12-0 libpq5 libssh2-1 libstdc++6-4.3-dev libt1-5
libtalloc1 libterm-readkey-perl libtimedate-perl libwbclient0 libxpm4 munin-node mysql-server mysql-common openssl openssl-blacklist php5 php5-
common php5-gd php5-mysql php5-suhosin psmisc ssl-cert ttf-dejavu ttf-dejavu-core ttf-dejavu-extra wwwconfig-common libwww-perl htop sudo
Edite os seguintes parâmetros do arquivo |/etc/apache2/conf.d/security|
(*) Nos arquivos de configuração em |/etc/apache2/sites-available/| edite a diretiva <Document />* deixando da seguinte forma:
<Document />
Order Deny,Allow
Deny from All
Options FollowSymLinks
AllowOverride None
</Document>
Habilite o *server-status* para adquirir estatísticas do Apache2
Crie o arquivo *server-status* em |/etc/apache2/conf.d/| com o seguinte conteúdo:
SetHandler server-status
Deny from all
Allow from localhost
Adicione a seguinte linha no final do arquivo |/etc/apache2/apache2.conf|
ExtendedStatus On
Habilite o módulo *info*
a2enmod info
Habilite o SSL
Para habilitar o SSL acesse http://blog.alexos.com.br/?p=371
As configurações de tunning do Apache2 estão totalmente ligadas a quantidade de recursos (CPU, memória e banda) disponíveis:
Por exemplo para um servidor QuadCore com 8 GB e um link de 5Mb é recomendado a seguinte configuração:
StartServers 5
MinSpareServers 5
MaxSpareServers 10
ServerLimit 1000
MaxClients 1000
MaxRequestsPerChild 0
Descrição de cada diretiva
* StartServers (Recomendado deixar o valor padrão)
Configura o número de processos filhos criados na inicialização - http://httpd.apache.org/docs/2.0/mod/mpm_common.html#startservers
* MinSpareServers (Recomendado deixar o valor padrão)
Número minimo de processos que não manipulam requisições - http://httpd.apache.org/docs/2.0/mod/prefork.html#minspareservers
* MaxSpareServers (Recomendado deixar o valor padrão)
Número máximo de processos que não manipulam requisições - http://httpd.apache.org/docs/2.0/mod/prefork.html#maxspareservers
* ServerLimit (Deve ser igual ou superior ao MaxClients)
Valor máximo da diretiva MaxClients - http://httpd.apache.org/docs/2.0/mod/mpm_common.html#serverlimit
* MaxClients (Varia de acordo com os recursos disponíveis)
Número máximo de conexões simultâneas - http://httpd.apache.org/docs/2.0/mod/mpm_common.html#maxclients
* MaxRequestsPerChild (0 siginifica ilmitado)
Limite de requesições que um processo filho poderá manipular - http://httpd.apache.org/docs/2.0/mod/mpm_common.html#maxrequestsperchild
(*) Dica Importante: Para testes de benchmark do Apache2 é recomendado o uso do AB (Apache Benchmark)
Execute o seguinte comando e siga os passos recomendados:
/usr/bin/mysql_secure_installation
Para o tunning é recomendado o uso do MySQL Performance Tuning Primer Script.
(*) Dica Importante: O uso desta ferrramenta é recomendado após 48 horas de uso do banco permitindo que o script detecte os valores corretos para o tunning do banco. Este script validará os parâmetros do arquivo *my.cnf* e criará um novo arquivo com as alterações recomendadas.
Para ampliar a segurança do PHP é recomendado o uso do Suhosin. O Debian o implementa por padrão.
Além do suhosin é necessário desabilitar os seguintes parâmetros do arquivo |/etc/php5/apache2/php.ini|:
allow_url_fopen = Off (*)
display_errors = Off
magic_quotes_gpc = Off (**)
(*) é obrigatória a sua habilitação para a atualização automática do Joomla, porém é potencialmente perigosa.
(**) é obrigatória a sua habiltação para o funcionamento do Joomla! 3.0 Alpha
Segurança e Manutenção do S.O.
Para manter o sistema operacional e os aplicativos atualizados recomendo o uso do Cron-apt.
Para monitorar a performance do servidor e dos serviços recomendo o uso do Munin , aqui você encontra como instalar e configurar o Munin.
Agora vamos apresentar a configuração do Munin para monitorar o Apache.
Com o`` server-status`` funcionando habilite os plugins do Apache:
Feito isso é necessário editar o arquivo |/etc/munin/plugin-conf.d/munin-node| e informar o usuário com permissão de acesso as informações do apache. No caso do Debian este usuário é o *wwwdata*.
vim /etc/munin/plugin-conf.d/munin-node
[apache2]
user www-data
E para finalizar implemente uma camada a mais de segurança. Recomendo fortemente o uso do Ossec Hids e de um pequeno script de firewall.
Aprenda a instalar e configurar o Ossec Hids.
(*) Durante a instalação do Ossec opte pela instalação *local* ao invés do *server*, assim a instalação será standalone.
Crie um arquivo |/etc/init.d/firewall.sh| com o seguinte conteúdo:
Download do script - Adcione esse script na inicialização do sistema
Após a conclusão de todos estes passos use as seguintes ferramentas para scanear o servidor e validar todo o trabalho
* W3af
* Nikto - Tutorial de utilização do Nikto
* Netsparker
By accepting you will be accessing a service provided by a third-party external to https://magazine.joomla.org/
Comments