Archive for sistema

Ago 11

Aceder remotamente com o Putty

O PuTTy é um cliente de SSH usado para aceder remotamente a servidores através de Shell Seguro (SSH) e também para a construção de “túneis” encriptados entre servidores.

É usado no Windows.

O download pode ser feito aqui –> http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html

No meu caso vou-me conectar ao computador esaof no domínio esaof.edu.pt através do IP 194.210.67.48

Para configurar o putty para aceder remotamente ao servidor, segui estes passos:

  1. Iniciar o Putty através de duplo-clique no seu ícone ou através do menu Iniciar
  2. Clicar em Session. Aqui vão ser indicados os detalhes do servidor de envio ao qual me estou a conectar.
  3. putty_06

  4. Clicar em SSH. Escolher X11 e configurar como indicado na figura.
  5. putty_04

  6. Clicar em SSH. Escolher Tunnels. Neste sítio são indicados os detalhes do servidor ao qual nos queremos ligar. Onde diz “Add new forwarded port” indicamos esses dados e carregamos em “Add
  7. putty_05
  8. Clicar em “Open” para iniciar a sessão SSH. Aparece o alerta de segurança perguntando se queremos confiar neste host. Carregamos em Sim para continuar.
  9. putty_01

  10. Agora o Windows pergunta-nos se queremos desbloquear este programa já que a firewall do Windows por omissão bloqueou o programa. Carregamos em desbloquear e continuamos.
  11. putty_02

  12. E finalmente é-nos pedido o nome de utilizador e a palavra passe.
  13. putty_03

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

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.

Mar 29

Backup bases de dados – II

mysql

De maneira a que o backup das bases de dados fosse feita de uma forma automática e numa base diária foi instalado o script “AutoMySQLBackup”, que usa o comando mysqldump.

Como instalar:

  1. Fazer o download do ficheiro automysqlbackup.sh e colocá-lo na pasta /etc/cron.daily
  2. Editar as seguintes linhas:
    USERNAME=dbuser
    PASSWORD=password
    DBNAMES=”DB1 DB2 DB3″ (as aspas têm que ficar)
  3. Tornar o ficheiro executável: chmod u + rwx
  4. Criar a directoria /backups
  5. E está! Agora o script pode ser chamado através da linha de comandos usando ./automysqlbackup.sh ou então se estiver na pasta /etc/cron.daily ele vai correr de cada vez que cron for activado.

Algumas características deste script:

  • faz o backup de várias bases de dados só com um script;
  • o backup de todas as bases de dados pode ficar num único ficheiro ou em directórios separados para cada base de dados;
  • é feita a compressão automática dos ficheiros de backup para poupar espaço em disco usando a compressão gzip ou bzip2;
  • é possível fazero backup de servidores mysql remotos para um servidor central;
  • corre automaticamente usando o cronou pode ser chamado manualmente;
  • pode fazer o envio por email do registo de backup para um endereço especificado em vez de enviar para o root;
  • pode também fazer o envio dos ficheiros resultantes do backup para o email especificado;
  • pode-se especificar o tamanho máximo do ficheiro de backup a enviar por email;
  • pode-se escolher em que dia da semana correm os backups semanais;
  • diariamente são criados backups em /backups/daily mas nunca ficam mais de 7 armazenados;
  • semanalmente são criados backups em /backups/weekly mas nunca ficam mais de 5 armazenados;
  • mensalmente é criado um backup em /backups/monthly mas nunca fica lá mais do que 1 pelo que se deve fazer a gravação dos ficheiros para outro meio.

Mais info