quinta-feira, 25 de outubro de 2018

Firejail, Sandbox fácil no PCLinuxOS


Proteção dos ambientes no Linux é uma das características mais notáveis do sistema operacional.
Uma das técnicas mais conhecidas é o Chroot, ambiente virtual  criado para executar aplicações de forma segura.
Porém o Chroot é bastante complicado de configurar, o seu uso não é tão fácil assim.
Mas digamos que você necessite de características como as que o Chroot pode oferecer, como uma solução de segurança para o seu desktop.
Como fazer? Ter todo o trabalho de configurar o Chroot para situações corriqueiras?

Na verdade existe já uma solução para esse problema de segurança no Linux, que chama-se Firejail.

O que faz o Firejail ?

Firejail usa a implementação dos namespaces e sec-comp-bpf no Linux para criar um isolamento entre as aplicações, o sistema de arquivos e os recursos que o sistema operacional oferece aos programas, criando um sandbox que efetivamente isola as aplicações do sistema operacional.
Ele permite que um processo e todos os seus descendentes tenham sua própria visão particular dos recursos do kernel compartilhados globalmente, como a pilha de rede, a tabela de processos e a tabela de montagem.

Escrito em C praticamente sem dependências, o software é executado em qualquer computador Linux com uma versão do kernel 3.x ou mais recente. O sandbox é leve, o overhead  é baixo. Não há arquivos de configuração complicados para editar, nenhuma conexão de soquete aberta, nenhum daemon sendo executado em segundo plano. Todos os recursos de segurança são implementados diretamente no kernel do Linux e estão disponíveis em qualquer computador Linux. O programa é lançado sob licença GPL v2.

Para entendermos como funciona temos que analisar o que são os namespaces e o que é  sec-comp-bpf.


Namespaces

Muito se fala em containers, na verdade, é uma das tecnologias quentes da atualidade, pois permite a criação de máquinas virtuais extremamente simples. O objetivo abstrato dos contêineres é, na verdade, fornecer a um grupo de processos  a ilusão de que eles são os únicos processos no sistema. Quando implementado, esse recurso tem o potencial de realizar muitos benefícios práticos, como a virtualização leve e o ponto de verificação / restauração.
Para dar aos processos em um contêiner a ilusão de que não há outros processos no sistema, vários recursos do sistema global devem ser envolvidos em abstrações que fazem parecer que cada contêiner tem sua própria instância de recursos. Isso foi conseguido com a adição de "namespaces" para vários recursos globais. Cada namespace fornece uma visão isolada de um recurso global específico para o conjunto de processos que são membros desse namespace. Os  namespaces começaram a ser implementados no kernel 2.6.23 e chegaram à sua maturidade no kernel série 3.8
Atualmente, o Linux implementa seis tipos diferentes de namespaces: pid, user, uts, ipc, mnt e net.
Assim, cada um destes   namespaces atua de forma a criar uma embalagem, onde uma aplicação possa ser encapsulada e ter a ilusão que somente ela possui todos os recursos do sistema.
Não irei me deter muito sobre cada um deles, já que não é o escopo deste texto, e sim, discorrer sobre o Firejail. Caso haja interesse em se aprofundar nos  namespaces, sugiro a leitura deste artigo aqui: https://lwn.net/Articles/531114/

Seccomp-bpf

Seccomp-bpf significa secure computing mode(modo de computação seguro). É uma ferramenta de simulação de sandbox simples, mas eficaz, introduzida no kernel Linux 3.5. Ele permite que o usuário conecte um filtro de chamada do sistema(syscall) a um processo e a todos os seus descendentes, reduzindo assim a superfície de ataque do kernel. Os filtros Seccomp são expressos no formato Berkeley Packet Filter (BPF).

Recursos


    •     Linux namespaces: A principal tecnologia por trás do FireJail é o Linux Namespaces. Usamos essa tecnologia de visualização leve como o primeiro passo para isolar o aplicativo.
    •     Filesystem container: Criamos os contêineres de aplicativos automaticamente quando iniciamos o sandbox e os destruímos quando fechamos a caixa de proteção.
    •     Security filters: Os seguintes filtros de segurança estão atualmente implementados – seccomp-bpf, protocol, noroot user namespace, Linux capabilities, X11 sandboxing
    •     Networking support: O Firejail pode anexar uma nova interface de rede TCP / IP ao sandbox, com placas de rede virtuais, tabela de roteamento e firewall próprios.
    •     Security profiles: Localizados no diretório /etc/firejail, os arquivos de perfil descrevem o contêiner do sistema de arquivos, os filtros de segurança e a configuração da rede.
    •     Resource allocation: Permite alocar recursos como tempo de CPU, memória do sistema e largura de banda de rede, usando grupos de controle do Linux e limites do Linux.
    •     Universal packaging formats: O Firejail suporta o formato de empacotamento AppImage nativamente. Basta adicionar a opção de linha de comando –appimage e o pacote é montado e executado dentro da sandbox. O Firejail também suporta pacotes do Ubuntu Snap usando um perfil de segurança regular.
    •     Sandbox auditing: O recurso de auditoria permite que o usuário aponte lacunas nos perfis de segurança. A implementação substitui o programa a ser sandboxed com um programa de teste. Nós distribuímos um programa de auditoria genérico, mas o usuário também pode usar programas personalizados.
    •     Statistics and monitoring: O Firejail fornece um grande número de opções para rastrear todos os aspectos dos aplicativos no sandbox. Isso inclui o monitoramento do uso da CPU / memória / largura de banda, rastreamento de chamadas do sistema, monitoramento de exec e eventos bifurcados e o registro de acessos a arquivos e diretórios na lista negra.
    •     Graphical user interface: Um aplicativo GUI, Firetools, está disponível como um pacote de software separado.


Instalação

Para instala-lo no PCLinuxOS, num terminal, como root, digite apt-get install firejail firetools, ou no Synaptic.

Uso

Para executar um aplicativo usando as proteções padrão do firejail para esse aplicativo (o perfil padrão), execute o seguinte:

$ firejail

Para usar o Firejail com um profile específico (o Firejail possui profiles para mais de 400 aplicativos no Linux):

firejail –profile=filename.profile.

Fora os profiles que já vem com o programa, você pode criar seus próprios profiles e guardá-los em /.config/firejail
 Os profiles guardados nesta pasta tem precedência aos profiles que vêm com o programa.

Se você quiser usar todos os seus programas com o Firejail, basta digitar, como root, # firecfg
Isso cria links simbólicos em /usr/local/bin apontando para /usr/bin/firejail, para todos os programas para os quais o firejail possui perfis padrão.

Abaixo segue o profile genérico do Firejail:

################################

# Generic GUI application profile

################################

include /etc/firejail/disable-mgmt.inc

include /etc/firejail/disable-secret.inc

include /etc/firejail/disable-common.inc

blacklist ${HOME}/.pki/nssdb

blacklist ${HOME}/.lastpass

blacklist ${HOME}/.keepassx

blacklist ${HOME}/.password-store

caps.drop all

seccomp

protocol unix,inet,inet6

netfilter

noroot

Digamos, por exemplo, que você queria impedir que o aplicativo acessasse o diretório de documentos do usuário. Para fazer isso, você adicionaria o seguinte ao perfil recém-criado:

blacklist ${HOME}/Documents

Assim, o programa que rodar com este profile não poderá acessar a pasta /Documents em sua /home.
Você pode tornar pastas específicas como somente leitura, assim:
read-only ${HOME}/Documents

As possibilidades de configuração com os profiles são muito vastas, tendo-se uma granularidade bastante grande. Para se aprofundar nos comandos de configuração dos profiles, você pode acessar esta Wiki aqui: https://wiki.archlinux.org/index.php/Firejail , que é bastante completa.

Usando Firetools

Vamos dar uma olhada em como funciona a GUI FireJail, Firetools. A partir de uma janela de terminal, emita o comando firetools e inicie a ferramenta. Você deve ver duas coisas: A janela Firetools e um indicador para o aplicativo em execução na bandeja do sistema.

Aplicativos pré-configurados no Firetools
 
Você encontrará alguns aplicativos já incluídos no Firetools. Para iniciar um, você pode clicar duas vezes no inicializador de aplicativos ou clicar com o botão direito do mouse no inicializador e selecionar Executar. O Firetools inclui um monitor que você pode executar para ver quais aplicativos estão sendo executados em uma firejail. Para abrir isso, desimpeça o Firetool, clique com o botão direito do mouse em qualquer local da GUI e selecione Ferramentas. Quando o monitor é aberto, você verá todos os aplicativos sandboxed listados. 


Aplicativos rodando no sandbox do Firejail


Pensamentos Finais

Ora, para quê usaríamos o Firejail no PCLinuxOS ?
Bem, alguns cenários de uso me vêm a cabeça. O Firejail pode fortalecer a segurança de diversos aplicativos, sejam de desktop ou aplicativos de um pequeno servidor, quem sabe, para pequenos negócios ou escolas, escritórios e administração.

Criar máquinas quiosque, e, limitar o acesso do usuário, não permitir que ele saia da /home e fique xeretando o sistema.

E, principalmente, criar uma camada de segurança com aplicativos embalados em formato appimage, que estão se tornando muito populares, e, podem se tornar vetores para infecção e propagação de malwares.

Referências:


sexta-feira, 21 de setembro de 2018

Usando o Virtual Box para jogar, com Directx, fácil.


Bem, é possível usar o Virtual Box para jogar. Não que seja comum, geralmente se escolhe o Vmware player para jogar. Porém, os avanços do Virtual Box não podem ser ignorados: Sendo corretamente configurado, o Virtual Box pode ter um desempenho muito bom, rivalizando em certos casos com o Vmware player.
E, o Virtual Box tem uma vantagem: pode trabalhar com kernels recentes do Linux, enquanto o Vmware player não (não é compatível com kernels 4.14 e superiores).

Mas, como configurar o Virtual Box para jogar com efeitos 3D e com o DirectX ?
Na verdade, o DirectX a ser usado é o 9C, de 2010, que é suportado pelo Virtual Box. O DirectX 10 e 11 não são suportados.

Então, como fazer ? Fácil, só seguir a receita de bolo.

Bem, para começar, é necessário entender alguns conceitos.

Interfaces de para-virtualização


A partir da versão 5.0 do VirtualBox houve a introdução do suporte para para-virtualização, trazendo maior precisão de desempenho e tempo para os sistemas operacionais convidados suportados (Hyper-V no Windows e KVM no Linux). O suporte agora está incluído para a API do driver NDIS6, que é usada por padrão no Windows, começando com o Vista. Além disso, o VirtualBox tem um novo back-end de áudio para melhor suporte.

Mas, o que essas interfaces de para-virtualização (Hyper-V e KVM) significam ?

Hyper-V é a interface de para-virtualização do Windows Server. Com essa interface ativada, melhora a velocidade de execução de guests Windows em hosts Linux.

KVM é a interface de para virtualização do kernel Linux. Com essa interface ativada, melhora a velocidade de execução de guests Linux em hosts Windows.

Ou seja, não ative a interface Hyper-V se você estiver emulando um guest Linux num host Linux. Mas, se estiver emulando um guest Windows, é essa interface que você deverá ativar.

As instruções, passo a passo.


Instale a versão mais recente do Virtual Box no PCLinuxOS (5.2.18), faça a instalação normal, pelo script GetVirtualBox.

A interface Hyper-V é reconhecida pelo Windows 7 e acima. No WindowsXP pode funcionar, mas, o 7 é mais suportado atualmente.

Se você já tiver uma máquina virtual, remova os guest additions.



Depois de removidos os guest additions, desligue a máquina virtual.
Agora, vá nas configurações e na seção sistema, aba Aceleração, configure como a figura abaixo



Interface Hyper-V, habilitar VT-x / AMD-V.

O próximo passo é configurar a placa de vídeo para o guest Windows. Faça como a figura abaixo



Com 256 MB (o máximo que o VB suporta no momento).

Depois de feitas essas configurações, ligue a máquina virtual e pressione F8, para entrar no modo de segurança.






Depois da máquina ter inicializado, na barra de dispositivos do Virtual Box, clique em “inserir disco de adicionais de convidado” e comece a instalação dos guest additions




Durante a instalação, marque as caixas [ ] Direct3D Support (Experimental) e [ ] Start Menu Entries.

Agora, observe a figura abaixo e proceda de acordo




Quando ele perguntar se gostaria de instalar o suporte a Direct3D básico, clique em NÃO.

A seguir, o instalador vai apresentar a seguinte mensagem


Apenas clique em Ok e prossiga a instalação.

Se tudo correu bem, agora você poderá instalar o DirectX9C e desfrutar bons jogos com aceleração na máquina virtual Windows que você possui.

Eu consegui jogar Need For Speed III sem problemas, com o Modern Patch aplicado, com som, os filmes do jogo e músicas, sem maiores problemas, numa VM Windows XP.
Há relatos que League Of Legends também roda com bom desempenho em máquina virtual nesse caso, poupando as dores e partos do WINE. Programas como AutoCAD e Photoshop podem rodar muito bem com a aceleração 2D e 3D ativadas previamente, claro, dependendo da quantidade de memória de vídeo, núcleos de CPU e RAM alocadas para a máquina virtual.

Mas, observe: Se você tiver um computador antigo (Core2Duo e afins), não rode o Windows 7 na máquina virtual. O desempenho é muito ruim. Prefira o Windows XP, que foi onde fiz os testes e tudo rodou bem. Se tiver máquina mais potente, tanto em termos de processadores, memória e vídeo, então, poderá usar sistemas Windows mais pesados.

Ok ?

Espero que tenham apreciado, e, bons jogos nas suas máquinas virtuais Windows, dentro do seu PCLinuxOS!

Até o próximo mês!

Sds,

quarta-feira, 22 de agosto de 2018

Reconhecimento de voz fácil no PCLinuxOS!

 
Reconhecimento de voz é um dos aspectos mais interessantes da computação. Grandes avanços foram alcançados nos últimos anos.

E, estes avanços foram repassadas à computação pessoal. Ou seja, o que se conseguiu com pesquisa e Tecnologia de reconhecimento de voz, chegou aos usuários domésticos.

O reconhecimento de voz é uma característica que pode ser usada para melhoria de acessibilidade, ou mesmo, quando se está cansado de digitar textos muito grandes.

Sim poder descansar as mãos depois de digitar muitos textos é algo extremamente confortável.

E, os usuários de outros sistemas operacionais podem desfrutar de reconhecimento de voz facilmente. No Windows há o Dragon naturally speaking.

No Mac, Dictanote e WordQ SpeakQ. Mas e no Linux?

No Linux nós temos diversos mecanismos de reconhecimento de voz.

No entanto, geralmente eles são extremamente complicados de fazer funcionar.

Geralmente, são Soluções quê precisam do pocketsphinx, que é um engine de reconhecimento de voz e de text-to-speech.

Mas, nada temam, pois a tecnologia de reconhecimento de voz avançou muito, graças ao Google (agora Alphabet Company), e, podemos nós, usuários do PCLinuxOS, aproveitar essas benesses do maior sistema de buscas da internet.

A Infraestrutura de reconhecimento de voz da Google na nuvem, Google cloud voice API

O Google  abriu sua nova Cloud Speech API - anunciada no evento NEXT em São Francisco - para uma prévia limitada para desenvolvedores em 2016.

Essa tecnologia de reconhecimento de fala foi desenvolvida e já é usada por vários produtos do Google há algum tempo, como o mecanismo de pesquisa do Google, no qual existe a opção de fazer pesquisa por voz.

A capacidade de converter voz em texto é baseada em redes neurais profundas, algoritmos de aprendizado de máquina de última geração recentemente demonstraram ser particularmente eficazes para a detecção de padrões em sinais de áudio e vídeo. A rede neural é atualizada conforme novas amostras de fala são coletadas pelo Google, para que novos termos sejam aprendidos e a precisão do reconhecimento continue aumentando. Essa tecnologia da Google é o que está por trás do Ok Google, no Android, no Google Chrome e no assistente virtual da Google, Google Assistant.
Com sua tecnologia de reconhecimento de voz na nuvem, a Google pretende rivalizar com a Nuance, fabricante do antigo Dragon Dictate do Windows (agora  Dragon naturally speaking).

Reconhecimento de voz na nuvem

Os recursos de voz para texto são usados em vários casos, incluindo assistentes inteligentes controlados por voz em dispositivos móveis, automação residencial, transcrição de áudio e classificação automática de chamadas telefônicas.

Agora que essa tecnologia estará acessível como um serviço em nuvem para desenvolvedores, permitirá que qualquer aplicativo integre reconhecimento de fala em texto, representando uma valiosa alternativa à tecnologia Nuance comum (usada pela Siri da Apple e pela S-Voice da Samsung, por exemplo) e desafiando outras soluções, como o Speech to text do IBM Watson e o Microsoft Bing Speech API.

Agora, como nos beneficiar do Google Cloud Voice Recognition ?


É possível desfrutar das vantagens que a Google integra aos seus produtos, pois diversos sites oferecem o serviço de reconhecimento de voz, através da Google cloud voice API.
Para aproveitar esses serviços, você vai precisar de uma conexão com a internet, um microfone ligado ao seu computador e usar o navegador Google Chrome. A seguir, a análise destes serviços.






https://speechnotes.co
O Speechnotes é um poderoso bloco de anotações on-line habilitado para fala, projetado para capacitar suas ideias através da implementação de um design limpo e eficiente, para que você possa se concentrar em seus pensamentos.
O pessoal do site se esforça para fornecer a melhor ferramenta de ditado on-line, envolvendo tecnologia de reconhecimento de fala de ponta para os resultados mais precisos que a tecnologia pode alcançar hoje, além de incorporar ferramentas internas (automáticas ou manuais) para aumentar a eficiência, produtividade e conforto dos usuários.
Funciona totalmente online no seu navegador Chrome. Sem download, sem instalação e sem necessidade de registro, você pode começar a trabalhar imediatamente.

Minha avaliação: Suporta Português Brasileiro e mais de 40 idiomas, salva para o Google drive, e, se você assinar o serviço da empresa, pode acessar seus documentos de qualquer máquina logada em sua conta. Já usei e o reconhecimento de voz é rápido e preciso. Funciona no Google Chrome e com celulares também.








https://www.speechtexter.com/
O SpeechTexter é um conversor profissional de fala online para texto, destinado a simplificar e acelerar o seu trabalho.
A empresa deseja fornecer a melhor experiência de transcrição on-line usando uma tecnologia inovadora de reconhecimento de fala com resultados de alta precisão. Esta tecnologia é suportada apenas pelo navegador do Google Chrome para computadores. Outros navegadores ainda não implementaram reconhecimento de fala. Nenhum registro é necessário, então você pode começar a trabalhar imediatamente.

Minha avaliação: Suporta Português Brasileiro e mais de 40 idiomas, salva como TXT, imprime ou copia para a área de transferência (clipboard). Não tem inscrição, ou seja, só pode ser usado em uma máquina por vez. Nos meus testes, foi um pouco mais lento do que o Speechnotes.








https://www.textfromtospeech.com
Este utilitário é um leitor de voz / fala para texto. O que isso significa? Isso significa que você pode simplesmente ditar um texto e ele será escrito sem levantar um dedo.

Tem os seguintes recursos:
    • Grátis e online
    • Nenhum download, instalação ou registro. Multiplataforma
    • Suporta apenas 7 idiomas (e Português Brasileiro não é um deles)
    • Você pode pausar ou parar o ditado (ele salva a posição da última palavra)
    • Reconhece comandos de voz para inserir pontuação: por exemplo, diga “Vírgula” e digite ","
    • Capitalização inteligente
    • Você pode salvar, copiar, imprimir ou enviar o texto ditado.
     
      Minha avaliação: Como não suporta Português Brasileiro, não o testei. Mas, parece ser o serviço com menos recursos, dentre os avaliados.



       



https://dictation.io/
O dictation.io  pode reconhecer e transcrever idiomas populares, incluindo inglês, espanhol, francês, italiano, português, e muito mais. A lista completa de idiomas suportados pode ser conferida aqui: https://dictation.io/languages

Você pode adicionar novos parágrafos, sinais de pontuação, smileys e outros caracteres especiais usando comandos de voz simples. Por exemplo, diga "Nova linha" para mover o cursor para a próxima lista ou diga "Rosto Sorridente" para inserir :-) smiley. Possui uma lista de comandos suportados.

Minha avaliação: Permite realizar diversas ações com o texto que foi reconhecido: Copiar para o clipboard, salvar como .TXT, mandar como Tweet, enviar por e-mail, imprimir ou exportar como PDF, ou fazer o computador ditar o  texto que você ditou anteriormente. Em termos de velocidade, se assemelha ao  Speechnotes.

Assim, há até mais opções do que estas quatro analisadas, mas, requereriam mais tempo de pesquisa para suas análises. O que importa é que, se você precisar ditar textos extensos, o PCLinuxOS pode ajudar a realizar a tarefa. Reconhecimento de voz, o Linux não é mais um cidadão de segunda classe.

Ok ?

Espero que tenham gostado, e, este texto foi produzido com o auxílio do Speechnotes e, editado no Libre Office depois.

Aproveitem essas novas capacidades, e, até mês que vem!