quinta-feira, 16 de fevereiro de 2012

Árvore genealógica do linux

Uma árvore genealógica do linux

domingo, 5 de fevereiro de 2012

GMail como Smarthost do postfix

Usar uma conta de GMail para enviar e-mail a partir de uma máquina com o postfix

Muitas aplicações web dependem do serviço de e-mail para comunicar com os utilizadores (e administrador). Tipicamente um servidor web contém as aplicações necessárias para que acumule a funcionalidade de servidor de e-mail, mas a proliferação de SPAM fez com que se criassem listas de servidores de mail confiáveis e os principais servidores de e-mail (GMail, HotMail, Sapo, etc) não aceitam mensagens de qualquer servidor.
Para ultrapassar esta limitação podemos tentar que o nosso servidor de e-mail seja aceita na restrita lista de servidores confiáveis, mas há alternativas mais simples.
As próprias aplicações (como por exemplo o Moodle ou o Joomla) possuem configurações internas próprias que lhes permitem usar um servidor de e-mail externo, deixando de depender do servidor interno da máquina onde estão alojados.
Mas podemos também configurar a nossa máquina webserver para funcionar como um 'satélite' de um servidor de e-mail externo.

Vamos então configurar o postfix para funcionar como sistema satélite do GMail, usando uma conta de GMail para enviar todo o e-mail do sistema.
Convém utilizar uma conta de GMail apenas para este fim. É necessário frisar que as contas de GMail gratuitas têm um limite de 500 mensagens por dia. As contas pagas ou associadas ao serviço Google Apps for Education não têm esta limitação.

Se o postfix não estiver instalado fazer (em Debian, como root):

apt-get install postfix

Se o postfix já estiver instalado, fazer a reconfiguração com:

dpkg-reconfigure postfix

O postfix faz uma série de questões:
  1. Type of mail configuration: satellite system
  2. System mail name: Nome do domínio
  3. SMTP relay host: smtp.gmail.com
  4. Root and postmaster mail recipient: deixar em branco
  5. Other destinations: deixar em branco
  6. Synchronous updates: é indiferente, não influencia a entrega
  7. Local networks: deixar o pré-definido
  8. Mailbox size: é indiferente, não influencia a entrega
  9. Local address extension: + (é o valor pré-definido)
  10. IP to listen: normalmente basta IPv4
De seguida precisamos editar o ficheiro de configuração do postfix:

sudo nano /etc/postfix/main.cf

E acrescentar as seguintes linhas:

mydomain = exemplo.org
myhostname = server1.exemplo.org
myorigin = $myhostname
# inserir aqui os domínios para os quais vai ser
# esta máquina a gerir o mail

mydestination = localhost, nome_de_dominio

relayhost=smtp.gmail.com:587
smtp_use_tls=yes
smtp_sasl_auth_enable = yes
smtpd_sasl_path = smtpd
smtp_sasl_password_maps = hash:/etc/postfix/sasl_passwd
smtp_sasl_security_options = noanonymous
smtp_sasl_tls_security_options = noanonymous
smtp_sasl_auth_enable = yes

smtp_tls_CAfile = /etc/ssl/certs/ca-certificates.crt
smtp_sasl_security_options = noanonymous
smtp_sasl_tls_security_options = noanonymous

Agora é preciso criar o ficheiro que vai conter os dados de acesso à conta do GMail:

sudo nano /etc/postfix/sasl_passwd

E acrescentamos apenas uma linha:

smtp.gmail.com:587 USERNAME@gmail.com:PASSWORD

É claro que USERNAME e PASSWORD devem ser substituídos pelos valores reais do username e password da conta de GMail.

Este comando compila o ficheiro de texto com a password numa base de dados mais eficiente:

postmap /etc/postfix/sasl_passwd

Para assegurar que apenas o utilizador postfix tem acesso ao ficheiro com a password fazemos:

chmod 600 /etc/postfix/sasl_passwd*
chown postfix.postfix /etc/postfix/sasl_passwd*

E reiniciamos o daemon:

/etc/init.d/postfix restart

A maneira mais fácil de testar a configuração é enviar um e-mail de teste com o sendmail:

sendmail teste@exemplo.org
Mensagem de teste
.

Se tudo correr bem o e-mail é enviado imediatamente.
Se não for enviado o e-mail a análise dos ficheiros /var/log/mail.* pode dar algumas informações importantes

Os aliases definem-se em /etc/aliases
Não esquecer de correr newalias depois de mudar o ficheiro.

Referências
http://braiden.org/?p=15
https://www.zulius.com/how-to/set-up-postfix-with-a-remote-smtp-relay-host/
http://www.delouw.ch/linux/Postfix-Cyrus-Web-cyradm-HOWTO/html/test.html

domingo, 29 de janeiro de 2012

Loopback RJ45

A utilização das máquinas virtuais traz enormes vantagens, principalmente para quem, como eu, gosta de experimentar sistemas operativos :)
Quando usamos um sistema operativo normal, desktop, não há problemas com as configurações de rede, basta por a máquina cliente com a interface de rede em NAT e temos internet instantânea (desde que o computador host esteja ligado à internet, claro).
Mas eu também gosto de fazer experiências com servidores, que implica que a máquina virtual fique disponível na rede para poder ser acedida a partir de outra, nomeadamente da máquina física. Aí levanta-se um problema: precisamos de um switch, mesmo que queiramos aceder a uma máquina virtual que está na nossa máquina física. Para evitar ter que ligar a um switch podemos usar uma ficha RJ45 ligada em loopbak, ou seja, em que as entradas estão diretamente ligadas às saídas.
Experimentei ligar apenas os pinos 1 com 3 (laranja/branco com verde/branco) e 2 com 6 (laranja com verde), mas não funcionou, tive também de ligar o 4 com 7 (azul com castanho/branco) e 5 com 8 (azul/branco com castanho).
E pronto, pude ligar imediatamente à máquina virtual ligada em bridge à placa de rede com fios.

segunda-feira, 23 de janeiro de 2012

Quando é preciso descer ao Windows

Naquelas, felizmente cada vez mais raras, ocasiões em que é necessário descer ao Windows, verifico que este software é bastante útil:

Desktop



Sistema & Utilitários


Segurança


Multimedia


Internet

Notas soltas sobre Joomla

O grande poder do Joomla é a graaaande quantidade de extensões, disponíveis em http://extensions.joomla.org
Algumas extensões úteis:
  • JCE - Um editor HTML bastante poderoso
  • Extplorer - Gestão de ficheiros ao estilo do Explorer
  • ACYMailing Starter - para gerir mailing lists
  • BreezingForms - Para criar formulários
  • Community Builder - Para criar comunidades. Permite criar uma área pessoal para cada utilizador.
  • K2 - Melhora a gestão de conteúdos do Joomla.
  • Sobi2 - Para criar diretórios - por enquanto apenas para Joomla 1.5
  • Virtuemart - e-commerce
  • Joomfish - Permite criar sites multilinguagem
  • DocMac - Gestão do repositório de ficheiros
  • Phoca Maps, Phoca Downloads, Phoca ... - Muitas extensões de qualidade

domingo, 22 de janeiro de 2012

rssh no OpenPanel

O OpenPanel é um competente painel de controlo para servidores web. Permite definir acesso de shell aos utilizadores, o que é ótimo para usar com SFTP e deixar o arcaico e inseguro FTP de lado. Mas seria ainda melhor se fosse possível definir a shell rssh para os utilizadores, pois a rssh só permite mesmo a utilização do SFTP.
Segundo este fórum http://forum.openpanel.com/viewtopic.php?f=9&t=440#p918 faz-se assim:
Instalar o rssh no servidor:
apt-get install rssh
Editar /etc/rssh.conf e descomentar a linha
allowsftp
Editar /etc/shells e acrescentar a linha
/usr/bin/rssh
Editar /var/openpanel/modules/SSH.module/module.xml e acrescentar a linha

<value id="rssh" val="rssh">rssh</value>
à lista das outras shells (~ linha 44)
Reiniciar o OpenPanel com
/etc/init.d/openpanel restart

Segurança básica de um webserver

Algumas configurações simples e rápidas para tornar um servidor web um pouco mais seguro e resistente a ataques.
Assume-se que o servidor é Ubuntu 10.04 (lucid lynx) Server, mas a maior parte das definições funciona sem alterações na maior parte de outras distribuições linux.
Estas definições não asseguram a total segurança do servidor, pois o único computador seguro é o que está desligado (e mesmo assim...) mas aumentam a resistência da máquina a potenciais ataques.
Nenhuma das configurações aqui indicadas deve ser seguida 'cegamente', pois têm influência no funcionamento da máquina. Por isso cada definição é seguida de uma breve (brevíssima) descrição para ajudar na decisão de aplicar ou não essa definição. Para mais informação, o Google é teu amigo.

SSH

Editar o ficheiro de configuração em /etc/ssh/sshd_config e alterar as seguintes definições:
Port 2222
Esta definição muda o porto usado pelo SSH do 22 (padrão) para o 2222. É uma alteração simples, mas exige que nos lembremos de indicar manualmente o porto 2222 quando queremos fazer uma ligação. É também preciso abrir o porto 2222 na firewall e é conveniente fechar o 22.
Protocol 2
Indica que o SSH só aceite ligações com a versão 2 do protocolo, mais segura (é a definição padrão e não se deve alterar).
PermitRootLogin = no
Não permitir ue o utilizador root faça login diretamente.
AllowUsers = user1 user2
Só permite que o user1 e user2 façam login através de SSH. Usar com cuidado, podemos trancar-nos a nós próprios fora do servidor ou causar problemas aos utilizadores (podem por exemplo deixar de poder usar o SFTP).
Reiniciar o serviço com /etc/init.d/ssh restart para tornar as definições ativas.

MySQL

A forma mais eficaz de manter o MySQL seguro é bloquear o acesso ao porto 3306 a partir do exterior.

Bind

A forma 'tradicional' de tornar o bind mais seguro é colocá-lo a correr dentro de uma jail, que o isola do resto do sistema, mas no Ubuntu 10.04 este método NÃO é aconselhado, pois o AppArmor já fornece segurança ao bind e seriam necessárias alterações de configuração para que o bind funcionasse dentro de uma jail com o AppArmor, por isso o melhor é 'não mexer' e deixar o AppArmor tratar do bind.

Apache

Editar o /etc/apache2/apache2.conf:
ServerTokens ProductOnly
ServerSigature off
Estas duas linhas impedem que o Apache forneça informação sobre a versão, que poderia ser usada em ataques dirigidos.
TraceEnable off
O TraceEnable é um método usado para determinar se o Apache está a funcionar. Normalmente não é necessário, por isso deve ser desligado.

PHP

Editar /etc/php5/apache2/php.ini
safe_mode=off
safe_mode_gid=off
Contrariamente ao que parece ter estas duas diretivas ligadas não torna o servidor mais seguro e podem introduzir efeitos indesejados em muitas aplicações, por isso convém colocá-las em off.
display_errors=off
display_startup_errors=off
Estas duas linhas evitam que o PHP mostre mensagens de erro que poderiam revelar informação para ser usada num ataque.
register_globals=off
Evita que se usem variáveis fora do script onde foram definidas.
session.use_cookies=1
session.use_only_cookies=1
session.cookie_http_only=1
Usar cookies para armazenar as variáveis de sessão.
disable_functions=phpinfo, system, proc_open, proc_close, popen, passthru, shell_exec, dl, show_source, highlight_file, pcntl_exec
Desliga estas funções do PHP, que são potencialmete inseguras. Algumas (poucas) aplicações podem deixar de funcionar com algumas destas funções desabilitadas.
error_reporting=E_ALL & ~E_NOTICE
log_errors=on
log_errors_max_len=1024
error_log=/var/log/php5.log
Definições sobre o logs do PHP. Não são exatamente definições de segurança, mas são úteis.
magic_quotes_gpc=off
magic_quotes_runtime=off
magic_quotes_sybase=off
As magic quotes foram uma tentativa de tornar mais seguro o acesso a dados de um formulário, mas trouxeram mais problemas que benefícios. Convém desligar.
expose_php=off
Não informa sobre a versão de PHP.
file_uploads=on
Permitir que os utilizadores enviem ficheiros é um problema de segurança, mas se não permitirmos que os utilizadores enviem ficheiros o servidor será relativamente inútil...
post_max_size=32M
upload_max_filesize=32M
Estas duas definições controlam o tamanho máximo dos ficheiros que os utilizadores podem enviar. Podem ser alteradas para outros valores, mas devem ser iguais.
Reiniciar apache com /etc/init.d/apache2 restart

Pure-ftp

O servidor de FTP pure-ftp é um dos servidores ftp mais usados e mais seguro, mas o protocolo FTP em si é bastante inseguro. O melhor mesmo é NÃO usar o FTP e usar o SFTP com a shell rssh.

Prevenção de intrusões - fail2ban

O fail2ban analisa os registo de login do ssh, apache e outros e se deteta que um determinado IP tentou fazer vários logins com a password errada num curto espaço de tempo, bloqueia esse IP durante alguns minutos. É um método de proteção simples e eficaz. O maior risco que corremos é ser colocados durante alguns minutos em 'quarentena' se nos esquecermos da nossa password.
Para o instalar basta fazer:
apt-get install fail2ban
O serviço fica imediatamente ativo para SSH. Para mudar a configuração é preciso editar /etc/fail2ban/jail.conf.

Anti-rootkit -  rkhunter

Os rootkits são conjuntos de ferramentas usadas pelos hackers para ganhar privilégios de root num sistema. A presença de um rootkit indica que o sistema está comprometido e normalmente a única medida a tomar é formatar o disco. O rkhunter analisa o sistema à procura dos rootkits mais conhecidos. Atenção, não protege contra nem elimina rootkits, apenas deteta alguns rootkits.
Para instalar fazemos:
apt-get install rkhunter.
Antes de usar convém atualizar as definições com:
rkhunter --update
Para analisar o sistema fazemos:
rkhunter --checkall
Convém que ocasionalmente se corra o rkhunter, manualmente.

Auditoria - nikto

O nikto é uma ferramenta de auditoria a servidores web. Funciona melhor se for corrido a partir de outra máquina que não o servidor, para simular um 'ataque externo'.
Instala-se com:
apt-get install nikto
Para o executar fazemos:
nikto -h MAQUINA
Em que MAQUINA é o IP ou hostname da máquina a analisar.