Mar 10

Backups

A realização dos backups não deve nunca ser descurada num servidor. Neste caso deve haver backups das bases de dados e dos ficheiros.

Para fazer o backup das bases de dados foi instalado o script AutoMySqlBackup.

As instruções estão em: http://www.debianadmin.com/mysql-database-backup-using-automysqlbackup.html

O download pode ser feito em: http://sourceforge.net/projects/automysqlbackup/

A instalação é muito simples:

  1. Faz-se o download  do automysqlbackup.sh e coloca-se em  /etc/cron.daily
  2. Tem que se editar pelo menos as seguintes linhas:
    • USERNAME=dbuser (este utilizador tem que ter previlégios para fazer SELECT nas bases de dados)
    • PASSWORD=password DBNAMES=”DB1 DB2 DB3″ (tem que se manter as aspas ” ” caso contrário não funciona)
    • PATH=/usr/local/bin:/usr/bin:/bin:/usr/local/mysql/bin:/opt/lampp/bin (esta última paste é muito importante pois indica onde está a instalação do mysql e do mysqldump; sem isto não funciona)
  3. Tornar o ficheiro executável:chmod u+rwx
  4. Criar o directório /backups
  5. E já está.

Para fazer o backup dos ficheiros, ou seja, das pastas importantes que são a htdocs e moodledata, criei um script com o seguinte conteúdo:

#!/bin/bash
DATA=`date +%Y-%m-%d`
cd /backups/htdocs
tar -zcvf htdocs-"$DATA".tar.gz /opt/lampp/htdocs/
cd /backups/moodledata
tar -zcvf moodledata-"$DATA".tar.gz /opt/lampp/moodledata/

Dei ao ficheiro com este conteúdo o nome backup_folder.sh e guardei-o no directório /etc/cron.weekly. Este ficheiro cria o pacote comprimido das pastas htdocs e moodledata e guara-os em /backups/htdocs e /backups/moodledata respectivamente. Para além disso o nome do backup tem a data em que este foi criado.

Para correr o script manualmente, escreve-se na linha de comandos

sh nome_do_script.sh

Fev 02

FireStats

firestats_trac.jpg

O FireStats é um plugin para Wordpress que permite que se saiba algumas informações sobre os visitantes do nosso blog. Assim mesmo que não se seja administrador do blog, mas apenas autor, pode-se recolher informações.

Na página oficial pode-se, para além de uma demonstração, ficar a saber como instalar,fazer o download do plugin, etc.

Alguns dos blogs aqui alojados já são monitorizados pelo Google Analytics. No entanto este plugin é bastante prático já que as estatísticas ficam acessíveis no próprio painel da administração do blog.

Comparando o Google Analytics com o FireStats pode-se dizer que os dois usam maneiras diferentes de contabilizar os acessos. O FireStats contabiliza cada acesso, cada visualização, independente se a pagina abriu por completo ou não, e considera tudo e mais qualquer coisa como acessos. Já o analytics é mais restrito e rigoroso. Como o código é instalado no rodapé do blog, contabiliza apenas as páginas que abriram a 100%, e tem um sistema de algoritmos diferentes do FireStats. É pois natural uma certa discrepância entre os dois.

firestats_1.png firestats_2.png

Out 03

Servidor de correio Postfix + google apps

mail.png

Desde que mudámos o alojamento das nossas páginas web para um servidor próprio que não conseguíamos enviar correio.

O problema devia-se ao facto do domínio para o qual o servidor está configurado ser o mesmo domínio das contas de correio. Assim o servidor, na prática, enviava o correio para ele próprio e este não chegava ao destino.

Torna-se, pois, necessário indicar ao servidor SMTP qual o servidor correcto para o envio das mensagens.

A solução foi encontrada neste site:http://blog.twinklesprings.com/2008/03/27/remote-mail-delivery-for-google-apps-and-postfix-mail-server/

Agora já recebo mensagens do sistema a avisar o registo de novos utilizadores, cópias de segurança efectuadas, etc, e os utilizadores também já recebem email de confirmação, entre outros.

Basicamente tem que se acrescentar estas linhas no ficheiro transport

esaof.edu.pt relay:ASPMX.L.GOOGLE.com
# This sends mail to Gmail
gmail.com smtp:[smtp.gmail.com]:587

Jun 07

Instalação do Denyhosts

denyhosts

O DenyHosts é um script escrito em Python que analisa o ficheiro de mensagens de registo do servidor sshd para determinar que hosts estão a tentar entrar no nosso sistema, ou seja, previne ataques de forca bruta monitorizando as tentativas de login inválidas e bloqueando o endereço IP de origem dos ataques. Também determina quais são as contas de utilizador que são alvo dessas tentativas de entrada. É registada a frequência das tentativas de ataque a partir de cada host. Sempre que é detectada uma tentativa repetida por parte de um host, é feita uma actualização do ficheiro /etc/hosts.deny por forma a prevenir ataques futuros realizados a partir desse host. O administrador pode receber um relatório por email.

O Fail2ban é um programa semelhante a este.

Uma análise do ficheiro messages (excerto na figura abaixo) permite detectar várias tentativas de login não autorizado. Logo é de considerar a instalação de um sistema que previna este tipo de situações. A opção caiu sobre o DenyHosts.

imagem24

Para instalar segui este guia:

http://www.howtoforge.com/preventing_ssh_dictionary_attacks_with_denyhosts

Sendo o meu sistema o Suse, verifiquei que já tinha o Python instalado. Apenas precisei de instalar o Python-devel e para isso recorri ao Yast.

Na criação do ficheiro de configuração (denyhosts.cfg) os valores correctos para OpenSuse de SECURE_LOG e LOCK_FILE são:

SECURE_LOG = “/var/log/messages”
LOCK_FILE = “/var/lock/subsys/denyhosts”

Na criação do ficheiro de daemon (daemon-control) os valores correctos para OpenSuse de DENYHOSTS_BIN, DENYHOSTS_LOCK, DENYHOSTS_CFG são:

DENYHOSTS_BIN = “/usr/local/bin/denyhosts.py”
DENYHOSTS_LOCK = “/var/run/denyhosts.pid”
DENYHOSTS_CFG = “/usr/share/denyhosts/denyhosts.cfg”

Seguindo o guia até ao fim, temos tudo instalado e configurado!

Podemos ver os registos de ocorrências em /var/log/denyhosts.

No ficheiro /etc/hosts.deny podemos ver os endereços IP que foram detectados a tentar forçar a entrada no nosso sistema.

No ficheiro /etc/hosts.allow podemos indicar os IPs que não queremos que sejam bloqueados.

Jun 01

Instalação de filtro anti spam — Akismet

spam.jpgEstava a adiar a instalação de um plugin para este tipo de situação, mas está visto que o spam veio para ficar e mesmo nos comentários dos artigos dos blogs apresenta-se como uma praga. Assim é preciso tomar medidas que atenuem este problema.

Uma pesquisa na Internet levou-me ao Akismet, descrito como um inteligente sistema de bloqueio de spams e que verifica se o comentário é spam ou não através do serviço web do Akismet.

Como instalar?

  • A primeira etapa passa pela realização do download deste software. Basta carregar no botão abaixo.

akismet.png

  • Descompactar o ficheiro akismet.zip
  • Enviar a pasta resultante para o servidor onde está o blog e colocá-la em wp-content/plugins/
  • Fazer login no blog como administrador e no menu extensões fazer a activação do Akismet.

imagem19.png

 

 

  • Falta ainda um último passo para que o Akismet funcione: é necessário configurá-lo e para isso temos que indicar a chave API do wordpress

imagem20.png

Como obter uma chave API do wordpress?

Antes de mais nada é necessário estar registado no site do wordpress. Vai-se à página de registo e escolhe-se um nome de utilizador, uma palavra passe e indica-se um endereço de email válido (vai ser necessário para efectuar a confirmação). Escolhe-se Gimme a blog! mesmo que não haja intenção de usar nenhum blog alojado no wordpress.

wp.png

  • Depois de clicar em “Next” é enviado um email para o endereço previamente indicado.
  • No email recebido existe um link que permite activar o blog e após isto recebe-se novo email com todos os dados para aceder ao blog.
  • Faz-se login e escolhe-se o nosso blog. Somos levados para a página de administração. Em My Account escolher Edit profile. É lá que está a informação da chave API.

 

Mais leituras:

87% dos comentários são spams – Não deixe seu blog chegar a esse ponto