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)

segunda-feira, 10 de outubro de 2011

Tweaks para usar Ubuntu com um SSD

  1. Montar volumes usando o noatime e usar o TRIM
  2. Montar o /tmp em RAM
  3. Mudar o scheduler de disco
  4. Diminuir o swappiness
  5. Mudar a cache do FireFox para /tmp

1. Usar noatime e TRIM
Por defeito os sistemas de ficheiros em linux guardam a data/hora em que o ficheiro foi pela última vez acedido. Isto pode causar muitas operações de escrita, o que é mau num SSD.
Adicionalmente, o comando TRIM é específico do SSD. Marca uma célua ou bloco de célula como "não usadas", poupando operações de escrita para apagar os dados.
Para usar o noatime e o TRIM acrescentar as opções noatime e discard às opções do sistema de ficheiros no ficheiro /etc/fstab
2. Montar /tmp em RAM
Com o sacrifício de alguns MiB de RAM ganha-se em desempenho e poupa-se o SSD.
Acrescentar (ou editar) esta linha a /etc/fstab
tmpfs /tmp tmpfs defaults,noatime,mode=1777 0 0
3. Mudar scheduler de disco
O scheduler por default não é o mais eficaz com SSD, está otimizado para discos rígidos.
Para mudar para o scheduler noop, acrescentar (ou editar) esta linha:
block/sda/queue/scheduler = noop
ao ficheiro /etc/sysfs.conf
Atenção, o sda identifica a drive de SSD, se estiver em /dev/sdb, por exemplo, deve usar-se sdb.
(não verificado, não tenho a certeza se funciona)
4. Diminuir swapiness
Para diminuir a utilização do ficheiro de swap.
Acrescentar (ou editar) a linha:
vm.swapiness=1
no ficheiro /etc/sysctl.conf
Não é conveniente definir o swapiness como 0.
5. Mudar cache do FireFox para /tmp
Abrir o about:config, procurar o parâmetro browser.cache.disk.parent_directory e mudar o valor para /tmp
Referências
http://tombuntu.com/index.php/2008/09/04/four-tweaks-for-using-linux-with-solid-state-drives/
http://www.zdnet.com/blog/perlow/geek-sheet-a-tweakers-guide-to-solid-state-drives-ssds-and-linux/9190
http://www.teamjuchems.com/?p=1103
http://blog.mypapit.net/2011/01/how-to-change-linux-io-scheduler-during-runtime.html

sexta-feira, 15 de julho de 2011

Ligar a uma rede wifi com WPA-PSK a partir da consola

Como ligar a uma rede wireless com segurança WPA-PSK usando apenas a consola de comandos em linux.
É preciso além do ifconfig e iwconfig o pacote wpa_supplicant.
Primeiro criamos um ficheiro de configuração do wpa, chamado por exemplo wireless-wpa.conf, com o seguinte conteúdo:

ctrl_interface=/var/run/wpa_supplicant
network={
  ssid="nome-da-rede"
  scan_ssid=1
  key_mgmt=WPA-PSK
  psk="chave de rede"
}

Para facilitar, vamos colocar os comandos num pequeno script bash, que chamaremos wpa-connect.sh, com o seguinte conteúdo:

#!/bin/sh
iface=wlan0
conffile=wireless-wpa.conf



sudo ifconfig $iface down
sudo iwconfig $iface mode Managed
sudo ifconfig $iface up
sudo killall wpa_supplicant
sudo wpa_supplicant -B -Dwext -i $iface -c $conffile -dd
sudo dhclient $iface

Agora basta tornar o script executável com:

chmod u+x wpa-connect.sh

e executá-lo com:

quarta-feira, 25 de maio de 2011

CA e Apache com SSL

Configuração de um servidor como CA e web SSL
Pretende-se com este trabalho configurar um servidor como Autoridade de Certificação (CA) e como servidor web com SSL.
O servidor usado é o ubuntu 10.04 (Lucid Lynx) server. O cliente pode ser qualquer um que permita a utlização de um browser com suporte para SSL. Neste trabalho foi usado o Mozilla Firefox a correr em ubuntu 11.04 (Natty Narwhal).
O servidor precisa que estejam instalados os pacotes openssl e apache2.
Vamos assumir que o servidor funciona no endereço www.redes.pt.
Para este trabalho foi criada uma entrada no ficheiro hosts tanto do servidor como do cliente, para que o endereço www.redes.pt apontasse para o ip do servidor.
Depois de cumpridos estes requisitos é necessário:

  1. Gerar autoridade de certificação
  2. Instalar a autoridade de certificação
    1. no cliente
    2. no servidor
  3. Criar um certificado para o servidor
  4. Configurar o site seguro usando o certificado gerado.

1. Gerar autoridade de certificação
Primeiro é necessário criar um par de chaves de encriptação. Vamos usar o algoritmo 3DES com 4096 bits.
openssl genrsa -des3 -out ca.key 4096
As chaves ficam armazenadas no ficheiro ca.key.
De seguida vamos usar essa chave para criar um certificado autoassinado, isto é, a própria entidade que requere o certificada é a entidade que o assina. O certificadao é do tipo X.509 com uma validade de 365 dias.
openssl req -new -x509 -days 365 -key ca.key -out ca.crt
O certificado fica em ca.crt.
2. Instalar a autoridade de certificação
2.1. Cliente
É necessário enviar o ficheiro ca.crt (através de pen, e-mail, etc) para o cliente.
No Firefox ir a Editar » Preferências » Avançado » Ver certificados » Importar, e importar o certificado.
2.2. Servidor
Copiar o ficheiro ca.crt para /etc/ssl/certs e ca.key para /etc/ssl/private
3. Criar um certificado para o servidor
Primeiro é preciso criar um par de chaves para o servidor web. Vamos criar chaves 3DES com 2048 bits.
openssl genrsa -des3 -out www.redes.pt.key 2048
O nome do servidor foi usado como nome do ficheiro, mas tal não é obrigatório.
Vamos agora fazer um pedido para que a CA assine digitalmente a chave de encriptação.
openssl req -new -key www.redes.pt.key -out www.redes.pt.csr
O requerimento fica em www.redes.pt.csr
Agora a CA vai assinar o pedido, criando o certificado:
openssl x509 -req -days 365 -in www.redes.pt.csr -CA ca.crt -CAkey ca.key -set_serial 01 -out www.redes.pt.crt
O certificado fica em www.redes.pt.crt.
O Common Name (CN) do certificado do servidor TEM de ser www.redes.pt.
Copiamos agora o ficheiro www.redes.pt.crt para /etc/ssl/certs e o ficheiro www.redes.pt.key para /etc/ssl/private
4. Configurar o site seguro usando o certificado
É preciso activar o módulo SSL no Apache, copiando os ficheiros ssl.conf e ssl.load de /etc/apache2/mods-available para /etc/apache2/mods-enabled.
Editamos o ficheiro /etc/apache2/mods-enabled/ssl.conf e criamos um virtualhost, dentro da secção IfModule.../IfModule.
Vamos criar o site www.redes.pt, alojado em /var/www/seguro.
O virtualhost deve conter pelo menos, as seguintes directivas:
VirtualHost exemplo.dominio.topo:443

DocumentRoot “/var/www/seguro”
ServerName www.redes.pt:443
ServerAdmin root@redes.pt
ErrorLog logs/ssl_error_log
TransferLog logs/ssl_access_log
SSLEngine on
SSLCipherSuite
ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP:+eNULL
SSLCertificateFile /etc/ssl/certs/www.redes.pt.crt
SSLCertificateKeyFile /etc/ssl/private/www.redes.pt.key
/VirtualHost
Nota: faltam os sinais "maior" e "menor" nas tags VirtualHost, porque o Blogspot as retira automaticamente.
Outros comandos de interesse

openssl rsa -noout -text -in server.key
Mostra o conteúdo da chave server.key


openssl req -noout -text -in server.csr
Mostra o conteúdo do pedido de certificado server.csr


openssl x509 -noout -text -in ca.crt
Mostra o conteúdo do certificado ca.crt


openssl rsa -in server.key -out server-nopass.key
Retira a password da chave.

sábado, 21 de maio de 2011

Mail do Moodle através do GMail

Para evitar SPAM, muito serviços de e-mail não aceitam mensagens de servidores "desconhecidos".
Portanto, se temos um servidor com Moodle, quando tenta enviar as mensagens (fóruns, mensagens de registo, etc) estas mensagens são rejeitadas pelos servidores de mail do GMail, HotMail, etc.
Para ultrapassar isto, basta definir uma conta de GMail no Moodle, para poder enviar os e-mails através do GMail e não diretamente a partir do servidor.
As instruções seguintes servem para Moodle 1.9.x, versão 1.9.2 ou superior. É possível fazer o mesmo para versões anteriores ou posteriores, mas os passos são diferentes.

Passo 1

É conveniente actualizar o Moodle para a última versão estável do ramo 1.9.

Passo 2

Editar o ficheiro /lib/phpmailer/class.smtp.php e procurar a linha 83, ou como as linhas podem mudar ligeiramente, logo a seguir à linha

function Connect($host,$port=0,$tval=30) {

acrescentar:

$host = 'ssl://' . $host;

Gravar o ficheiro.

Passo 3

Convém agora criar uma conta de GMail para usar especificamente para enviar o e-mail do Moodle.
Na página de configuração do e-mail, em Administração » Servidor » Correio electrónico (http://endereço_do_servidor/admin/settings.php?section=mail) acrescentar os seguintes dados:
  • Servidores de SMTP: smtp.gmail.com:465
  • Nome de utilizador de SMTP: endereço da conta gmail, incluindo a parte @gmail.com
  • Senha de SMTP: a password da conta gmail usada.

Passo 4

Testar para verificar se o e-mail é enviado corretamente.
Notar que as mensagens dos fóruns são enviadas após um tempo de espera (tipicamente 30 minutos) e que normalmente os resumos dos fóruns só são enviados uma vez por dia (tipicamente às 17:00), por isso pode ser necessário esperar algum tempo (~ 24 h) para verificar se as mensagens são realmente enviadas.

Pagina de administração do Moodle não aparece

No Moodle 1.8 e 1.9 acontece um irritante bug, não sei porquê, mas a página de admin fica completamente em branco, sem nenhum conteúdo.
Não consegui descobrir o que causa isto, mas descobri como resolver.
Editar o ficheiro /enrol/internal/enrol.php e comentar as linhas da classe enrolment_plugin (a linha com a definição da classe e a linha com o } ).
E pronto, subitamente já aparece tudo.

terça-feira, 10 de maio de 2011

Windows XP como terminal server

Como usar um modesto Windows XP (SP3) e transformá-lo num servidor de terminais.
O Windows XP tem já instalado um Remote Desktop Server que está artificialmente limitado a servir apenas um utilizador de cada vez. Este patch permite retirar essa limitação e deixa o XP servir vários clientes em simultâneo.
Após instalar o patch é preciso verificar se:
  1. O Fast User Switch está ligado
  2. Os utilizadores pertencem ao grupo Remote Desktop Users
  3. Os utilizadores têm password definida
Para adicionar os utilizadores ao grupo Remote Desktop Users ir a Painel de Controle » Administration Tools » Computer management » Local users and groups » Users

domingo, 13 de março de 2011

Painel de controlo para webserver

Acabo de experimentar alguns painéis de controlo para servidores web, OpenPanel, ispCP Omega, EHCP.
Para os experimentar instalei-os em máquinas virtuais do VirtualBox. Todos tiveram como base o Ubuntu 10.04 (Lucid Lynx) Server.
Já há alguns anos que uso o (excelente) ISPConfig 2 e recentemente passei a usar o ISPConfig 3, mas queria dar uma vista de olhos em outras ofertas open source para webpanels.
ISPConfig 2
Já é antigo, mas continua bastante bom. Aproveitando a licença open source, as instalações que uso do ISPConfig 2 estão "personalizadas" e vão exactamente de encontro ao que precisava na altura em que os instalei. A navegação não é das mais fáceis, mas é bastante eficaz. A interface de administração vem com https de instalação.
ISPConfig 3
Mais moderno e melhor interface, mas o painel de administração não usa https, embora seja possível acrescentar.
OpenPanel
Muito bom aspecto, baseado na interface do MacOS e fácil de instalar e configurar. Foi o que se instalou mais rapidamente e ocupou menos espaço em disco, o que é sinal que não tem todas as funcionalidades dos outros...
É fácil e rápido para criar coisas como por exemplo redirects, mas faltam-lhe algumas características dos outros painéis.
ispCP Omega
Muito completo. É um fork do VHCS (do qual dizem muito bem, mas nunca experimentei). O desenvolvimento do VHCS tem estado parado.
A instalação foi demorada e (aparentemente) bastante completa.
A interface é agradável e fácil de utilizar (usável). Faz distinção entre administradores, revendedores e utilizadores (como o ISPConfig) e tem suporte para emissão de facturas e criação de templates de alojamento.
EHCP
A instalação foi demorada. A interface ainda não está completa... Tem muita potencialidade, mas ainda não está pronto para ser usado num ambiente mais exigente.
Conclusão
Quando se está com pressa e não se precisa de muita complexidade: OpenPanel
Para um serviço com aspecto mais profissional: ispCP Omega
Daqui por uns tempos voltar a visitar o EHCP
ISPConfig 3 continua a ser uma boa opção.