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.

quinta-feira, 29 de dezembro de 2011

Instalar pfSense

Instalar pfSense
1. Obter o ISO
http://pfsense.loquefaltaba.com/downloads/pfSense-2.0.1-RELEASE-i386.iso.gz
2. Gravar o ISO num CD (ou pen de arranque)
3. Instalar
Há a opção de instalar automaticamente, o que evita a maior parte das perguntas das versões anteriores.
O pfSense é muito mais interessante quando se usam duas ou mais interfaces e rede. Para identificar a interface WAN (outside) e a LAN (inside) pode usar-s o método automático, que consiste em começar com todos os cabos DESLIGADOS e ir ligando o cabo respetivo à medida que o pfSense pede.
A interface web fica acessível em http://<ip_da_interface_LAN> com o username admin e password pfsense.

  1. Mudar a password do admin em System » User manager.
  2. Alterar o protocolo de acesso de HTTP para HTTPS, em System » Advanced » Admin Access.
  3. Em System » General Setup adicionar os servidores de DNS da rede, por exemplo os do OpenDNS: 208.67.220.220 e 208.67.222.222.

domingo, 18 de dezembro de 2011

Asterisk em Ubuntu 10.04 (lucid)
Instalar e configurar um servidor Asterisk numa máquina a correr Ubuntu 10.04 server (lucid lynx)

1. Instalar o Ubuntu
Fazer uma instalação básica do Ubuntu server, atualizar e reiniciar

2. Instalar o Asterisk


sudo apt-get install asterisk

Instala uma lista relativamente longa de pacotes.

3. Configurar o Asterisk
Editar /etc/asterisk/sip.conf e descomentar a linha:


videosupport = yes


Acrescentar no fim (para 4 utilizadores):


[user1]
type=friend
secret=password ;password
qualify=yes
nat=no
host=dynamic
context=internal ; nome do domínio



[user2]
type=friend
secret=password ;password
qualify=yes
nat=no
host=dynamic
context=internal ; nome do domínio


[user3]
type=friend
secret=password ;password
qualify=yes
nat=no
host=dynamic
context=internal ; nome do domínio


[user4]
type=friend
secret=password ;password
qualify=yes
nat=no
host=dynamic
context=internal ; nome do domínio



Editar /etc/astrisk/extensions.conf e acrescentar no fim:


[internal]
exten => user1,1,Dial(SIP/user1)
exten => user2,1,Dial(SIP/user2)

exten => user3,1,Dial(SIP/user3)
exten => user4,1,Dial(SIP/user4)

3.1. Configurar extensões

Para associar a extensão 101 ao user1 e a 102 ao user2, etc, editar o ficheiro /etc/asterisk/extensions.conf e acrescentar no final:


exten => 101,1,Dial(SIP/user1)
exten => 102,1,Dial(SIP/user2)
exten => 103,1,Dial(SIP/user3)
exten => 104,1,Dial(SIP/user4)

Para que se a extensão 101 rejeitar ou não atender uma chamada, essa chamada seja transferida para o user 2 acrescentar:


exten => 101,2,Dial(SIP/user2)


Reiniciar Asterisk

3.2. Configurar music on hold
Esta configuração foi tirada do livro "Asterisk: The future of telephony".
Obter uma música, por exemplo:

wget http://upload.wikimedia.org/wikipedia/commons/6/62/Pachelbel%27s_Canon.ogg

Converter para Wave, 8kHz, mono

sox Pachelbel\'s_Canon.ogg -r 8000 -c 1 moh1.wav

Criar a diretoria para armazenar os ficheiros e mover para lá a música:

mkdir /var/lib/asterisk/mohwav
mv moh1.wav /var/lib/asterisk/mohwav

Editar /etc/asterisk/musiconhold.conf e alterar as seguintes linhas:

[default]
mode=files
directory=/var/lib/asterisk/mohwav
random=yes

O random=yes é redundante com um único ficheiro, mas se adicionarmos mais ficheiros à diretoria já está configurado o random.

3.3. Configurar um servidor VoIP externo
Para associar uma extensão a um servidor VoIP externo, neste caso o Voipcheap, é preciso editar os ficheiros sip.conf e extensinos.conf.
No sip.conf criar as seguintes linhas:

[voipcheap]
type=peer
host=sip.voipcheap.com
username=nome_de_utilizador
fromuser=nome_de_utilizador
secret=password_do_utilizador
context=incoming_calls
dtmfmode=rfc2833
disallow=all
allow=gsm
allow=ulaw
insecure=invite

No extensions.conf, para associar a extensão 123 ao número de telefone 987654321 acrescentar:

exten => 123,1,Dial(SIP/987654321@voipcheap)