quinta-feira, dezembro 12, 2013

Ubuntu VirtualBox - No ALTGR key

No Ubuntu instalado no Virtualbox, reparei que a tecla altgr não funciona em tty modo texto.


Para resolver temos de remapear as teclas do teclado no Ubuntu. Usamos para isso o editor Xmodmap.

Fazer:

$cat > ~/.Xmodmap
keycode 108 = Mode_switch
(CTRL+D)
$xmodmap ~/.Xmodmap

sexta-feira, novembro 22, 2013

Segurança informática

Realizou-se no dia 21 de Novembro no auditório do ISEP uma Palestra sobre segurança informática com Vincent Naessens que é docente da Universidade KU Leuven (Bélgica).

O tema era muito abrangente e tenho pena que nas três horas de palestra, não se tenha detalhado o suficiente. Os temas abordados foram:

  1. Authentication technologies
  2. Security on mobile platforms
  3. Cryptographic protocols
Discutiram-se formas de ataque a um sistema nomeadamente:
  • Social engeneering
  • Dictionary attack
  • Spoofing/phishing
  • Sniffing
  • Brute force attack
Não existe forma definitiva de resolver estes problemas, mas existem formas de atenuar ou prevenir:
  • Single sign-on
  • Computer generated password
  • One-time passwords
  • Biometry
  • Multi factor authentication



terça-feira, novembro 19, 2013

Openstack

Openstack é um software para cloud e corre em arquitetura hardware x86 e ARM. Não exige software nem hardware proprietários e assim, podemos correr na nossa infra-estrutura existente.

Openstack está sobre o modo de licenciamento Apache Licence 2.0 e surgiu em 2010.

Cloud ou "nuvem" é desenvolvida sobre tecnologias existentes tais como virtualização e clustering para virtualizar hardware, software, armazenamento e recursos de rede para as tornar unidades flexíveis que podem ser alocadas consoante a exigência. É uma forma mais eficiente na utilização do hardware e mais fácil de escalar consoante a exigência de recursos.

Existem básicamente três modelos de serviços:

Saas : Software as a service
Pass: Plataform as a service
Iass: Infrastructure as a service.

Saas é a disponibilização de aplicações software alojadas centralmente e acedidas por software cliente. Os dados são típicamente mantidos num servidor acessível por qualquer computador ligado à rede. Obedecendo mais ou menos ao antigo modelo cliente-servidor, a maior diferença passa pelo acesso do cliente, efetuado maioritariamente via web-browser. A desvantagem passa, por isso mesmo, pela utilização do protocolo HTTP que nunca foi desenhado para desempenhar tarefas demasiado complexas. A popularidade do Saas tem vindo a subir porque propicia um modelo de baixo custo de suporte para os software developer / vendors, permite-lhes ainda um maior controlo e sobretudo um modelo de negócio baseado em subscrição de serviço. Os clientes também acabam por ganhar devido à pouca necessidade de preocupação com instalações e manutenção de hardware e software.

Pass é uma opção para quem queira maior controlo sobre os seus dados ou centro de dados mas não queira as preocupações da administração de sistemas ou redes. Exemplo disto é o espaço de alojamento web numa cloud gerida por ISP, onde o ISP se preocupa com o hardware, sistemas operativos, redes, balanceamento de carga, backups e etc, e o cliente apenas preocupa-se com a gestão e desenvolvimento do seu software que funcionará em cima deste datacenter configurado.

Iass é obviamente a solução completa. Básicamente o cliente gere um servidor fisico (virtual) onde este é responsável por toda a configuração redes e software da infraestrutura.

Testei, faz algum tempo, o Openstack numa das suas versões iniciais, e devo dizer que a coisa não é para iniciantes (click->next).



Os componentes "core" são Compute, Networking e Storage.

Compute: Componente responsável por aprovisionar grandes redes de máquinas virtuais. Suporta vários hypervisors tais KVM, QEMU, LXC e XenServer. É uma ferramenta que controla a rede, o CPU, o armazenamento, a memória, a criação, controlo e remoção de instancias de máquinas virtuais.

Storage: Armazenamento por objectos e blocos para ser usado em aplicações e servidores. Escalabilidade e redundancia usando clusters de servidores. O Openstack assegura a distribuição e replicação através de diferentes dispositivos no caso de object storage.

Networking: Gestão de redes e IP através de API.

Openstack foi desenhado para gerir grandes datacenters e petabytes de dados. Está incluído nas mais diversas distribuições Linux e pode ser instalado como qualquer outro software.

http://www.openstack.org/software/start/

quinta-feira, novembro 14, 2013

Virtual Private Network

Virtual private network é uma ligação encriptada entre dois ou mais dispositivos sobre a rede pública. É possível que se possa dizer que uma VPN não tem necessariamente de ser encriptada, mas isso seria apenas considerado um túnel.

Site-to-site VPN
É uma ligação entre dois sites e encripta toda a informação entre 2 ou mais subnets. Existem 2 subtipos:
Policy based - Encripta e encapsula determinado trafego de acordo com determinada policy (ACL) A policy determina que apenas algum ou determinado trafego é colocado na VPN.

Routed based - Todo o trafego é enviado pela VPN baseado em routeamentos dinâmicos ou estáticos.

Dynamic Multipoint VPN
Não é um protocolo mas sim uma técnica que usa diferentes protocolos. Um ou mais routers centrais são necessários, mas os routers remotos podem ter IPs dinâmicos. Os routers usam NHRP combinado com um protocolo dinamicos de routing para descobrir os peers e subnets remotas. A VPN é um tunel mGRE (Multiple Endpoints GRE) encriptado. Desta forma, o trafego entre routers remotos, não necessita de vir ao router central, pode ser direto entre os routers remotos.

Client VPN
Uma ligação Client VPN é uma ligação encriptada de um dispositivo a um router. Faz com que o dispositivo remoto se assemelhe a um membro de uma subnet local por trás de um router VPN. O trafego do dispositivo é enviado pelo tunel (normalmente um portatil). Necessita de software cliente instalado no dispositivo.

SSLVPN
Es te tipo de VPN funciona como um cliente VPN. A diferente é que o cliente remoto não necessita de software pre-configurado. Em vez disso o browser funciona como software. O trafego é envido atraves de um tunel sobre SSL ou TLS para o router SSLVPN.

Protocolos VPN

PPTP (usam GRE que pode ser usado sozinho): Point-to-point Tunneling Protocol é um protocolo VPN ue confia em város mecanismos de autenticação para providenciar segurança (MS-CHAP2 mais comum).

Pros
Built-in client em quase todas as plataformas
Fácil configuação
Rápido

Cons
Não é seguro (MSCHAP2 é vulnerável e é comumente utilizada)
Comprometida pela NSA

L2TP e L2TP/IPsec: Layer2 Tunnel Protocol é um protocolo VPN que por si só não providencia nenhuma encriptação ou confidencialidade no trafego que passa por ele. Por essa razão é implementado com IPSEC. Funciona na porta 500 UDP e logo fica mais dificil de configurar sendo por vezes bloqueado em firewalls NAT.

Sistema móvel de telemetria para automóveis

Sistema móvel de telemetria para automóveis foi o tema da minha tese para a obtenção do mestrado no ISEP. Pretende-se com este sistema melhorar a disponibilidade de um sistema de navegação na obtenção de vellocidade e deslocamento através da integração de dois sistemas de navegação distintos (INS / GNSS) recorrendo também aos sensores existentes nos dispositivos móveis.

O objecto final da análise e desenvolvimento foi uma aplicação para Android.
O algoritmo para o INS (Inertial Navigation System) apresenta a seguinte estrutura:


O sistema debitou resultados muito interessantes que poderão trazer uma luz para o que pode vir a acontecer num futuro muito próximo na utilização de sensores MEMS de baixo custo, com características de erro muito típicas.
Outra característica interessante foi a utilização do filtro complementar em detrimento do típico filtro de kalman na obtenção das estivativas de orientação e posição. A complexidade do filtro de kalman obriga a definição de modelos muito elaborados e conjuga com isso a elevada capacidade computacional que exige para a obtenção das estimativas. Com o filtro complementar, a complexidade é diminuta para além de ser computacionalmente leve.

sábado, fevereiro 02, 2013

Delegates c#

Por vezes esqueço a verdadeira razão ou vantagem no uso de delegates em C#.

Delegate é um recurso da linguagem C# que permite que se faça referência a um método. São também referenciados como apontadores de funções.

Sendo os delegates classes, estes são instanciados também, mas os parâmetros são nomes de uma função.

Assinatura do delegate:

Delegate int ExemploDeDelegate(string nome, bool b);

Considerando um método:


private int TesteFuncao(string str, bool bln)
{...}

ExemploDeDelegate exdel = new ExemploDeDelegate(TesteFuncao);

Desta forma o exdel refere-se ao método TesteFuncao();

Para isso existem 3 fases:
Declaração;
Instanciação;
Invocação;


using System;
namespace TesteDelegate
{
    // Declaração
    public delegate void TesteDelegate();
    class ExDelegate
    {
        public static void TesteFuncao()
        {
            Console.WriteLine("Chamaram-me?");
        }
        public static void Main()
        {
            // Instanciação
            TesteDelegate testeDelegate = new TesteDelegate(TesteFuncao);
            // Invocação
            testeDelegate();
            Console.ReadKey();
        }
    }
}