Nautilus: atalho para abrir terminal

Dica rápida: como criar um atalho no Nautilus para abrir um terminal no diretório ativo.

Edite o arquivo ~/.config/nautilus/accels e configure a seguinte linha:

(gtk_accel_path "<Actions>/ExtensionsMenuGroup/TerminalNautilus:OpenFolderLocal" "F12")

Esta configuração funcionou para a versão 3.14 do Nautilus (Debian Jessie / 8.x).

Fui,

Marião

Console-kit: para que serve e como removê-lo

O console-kit-daemon gerencia consoles de login no modo gráfico, como o gdm. Se o servidor não possui o modo gráfico instalado, o console-kit-daemon não é necessário. Além disso, segundo o próprio site do projeto (https://www.freedesktop.org/wiki/Software/ConsoleKit/), o ConsoleKit não está mais sendo ativamente mantido. O foco foi transferido para o systemd.

Para remover o pacote consoleKit:

aptitude remove consolekit

Dependendo da instalação, pode ser necessário remover também o pacote dbus-x11:

aptitude remove dbus-x11

Bind9 desabilitar consulta IPv6

Hoje tive um probleminha em minha rede pessoal doméstica: resolvi habilitar um serviço de DNS no meu computador pessoal. O motivo foi simples: não costumo confiar nos serviços de DNS das operadoras, pois já vi, no passado, muitos DNSs com falhas incríveis de configuração e susceptíveis a ataques de cache poisoning (envenenamento de cache).

No Debian 8.x, instalei o Bind9 que, por padrão, já vem pré-configurado em modo cache, que era bem o que eu precisava. O problema é que ele vem configurado para efetuar consultas AAAA (IPv6), e minha rede doméstica conta apenas com IPv4, assim como meu provedor ainda fornece link em IPv4.

Agora, vamos à saga:

Primeiro, eu não quis desabilitar o IPv6 na minha interface de rede, pelo simples fato de que pretendo efetuar alguns testes futuramente.

Então, comecei por desabilitar o IPv6 no Bind: então editei o arquivo /etc/bind/named.conf.options e alterei o parâmetro:

listen-on-v6 { any; };

Para:

listen-on-v6 { none; };

Aproveitando, adicionei os seguintes parâmetros neste mesmo arquivo:

version "Not available";
filter-aaaa-on-v4 yes;

O primeiro parâmetro, na verdade, não tem nenhuma relação com IPv6, mas é apenas um parâmetro de segurança que impede que a versão do Bind seja consultada pelos seus clientes.

Por padrão, no Debian, parâmetros de inicialização do Bind podem ser adicionados no arquivo /etc/default/bind9. Assim, eu editei este arquivo e adicionei a opção -4 ao parâmetro OPTIONS, que ficou assim:

OPTIONS="-4 -u bind"

Reiniciei o serviço, mas para minha surpresa, não funcionou. continuei a ver as seguintes mensagens de log em /var/log/messages:

2016-08-28T12:40:09.332992-03:00 joshua named[10172]: error (network
   unreachable) resolving 'ns-1878.awsdns-42.co.uk/A/IN':
   2a01:618:400::1#53

O que significa que o Bind ainda está fazendo consultas em IPv6. O efeito colateral disso é que a resolução de nomes fica extremamente lenta e, muitas vezes, ocorrem timeouts.

Depois de algumas pesquisas, acabei encontrando uma solução. Não a considero das melhores, porque acredito que o fato do arquivo /etc/default/bind9 existir ainda na distribuição me faz acreditar que ele deveria ser honrado pelo iniciador do serviço bind. No entanto, o Debian 8.x utiliza o systemd como gerenciador de serviços e, por algum motivo, ele não utiliza os arquivos em /etc/default. Ainda não sei se este comportamento é normal ou é um bug, de qualquer forma, me fez perder bastante tempo na busca por uma solução.

Consegui resolver o problema da seguinte forma:

Primeiro, copiei o arquivo de configuração do serviço bind para o diretório de configuração do systemd:

cp /lib/systemd/system/bind9.service /etc/systemd/system/

Depois, editei o arquivo /systemd/system/bind9.service e alterei o parâmetro ExecStart adicionando a opção -4, conforme a seguir:

ExecStart=/usr/sbin/named -f -u bind -4

Depois, solicitei ao systemd que recarregasse sua configuração e reinicie o bind:

systemctl daemon-reload
systemctl restart bind9.service

Depois disso, o Bind resolveu desistir de tentar resolver registros AAAA.

Ainda não sei se haverá algum efeito colateral quando ocorrer alguma atualização do Bind nas atualizações do sistema. Mas, na teoria, não devem ocorrer, porque os arquivos em /etc contém justamente as configurações que poder ser personalizadas pelo usuário (administardor, na verdade) e o gerenciador de pacotes APT normalmente não altera estes arquivos com novas versões sem a autorização do usuário.

Por enquanto, é isso.

Windows Server 2012R2 e a porta 80

Recentemente me deparei com uma instalação do Windows Server 2012 R2 na qual um colega de trabalho estava tendo dificuldades. A dificuldade foi a seguinte: ele instalou o Apache, mas não conseguia fazê-lo executar o serviço.

Observando o sistema, vi a porta 80 ativa, mesmo com o Apache não estando em execução. A primeira coisa que me veio à mente foi que o IIS poderia estar instalado e em execução, mas não: ele nem estava instalado.

Depois de algumas pesquisas, já que não sou expert em Windows, acabei descobrindo que o Windows habilita um serviço na porta 80.

Para poder utilizar o Apache (ou outro servidor web), é necessário desabilitar o serviço interno do Windows na posta 80, que pode ser feito da seguinte forma:

net stop http
sc config http start= disabled

Muita atenção ao formato do comando.

Sds.

Python3.5.1 e PySide2 no Debian Jessie

Pessoal, atualizei meu artigo sobre a instalação do Python3 no Debian Jessie. Desta vez, cobri a instalação do Python-3.5.1 e PySide2, que agora suporta Python3.5.x e utiliza a biblioteca Qt5 (contra Qt4 da versão anterior).

O artigo está no meu site de dicas de Python: PythonDocs.

Se preferir acessar diretamente o artigo: Python3: Instalação no Debian 8.x (Jessie).

DDOS: Práticas de Mitigação

O CERT.BR publicou um excelente artigo com recomendações para a mitigação de ataques de negação de serviço distribuído (DDoS): Recomendações para Melhorar o Cenário de Ataques Distribuídos de Negação de Serviço (DDoS).

Para saber o básico sobre ataques DDoS, dê uma olhada no excelente artigo publicado pelo Team Cymru: DDoS Basics.

Erro na atualização da lista de pacotes do APT (i386 no amd64)

O Google anunciou já há algum tempo que não suportaria mais a versão 32-bit do seu navegador Google Chrome para Linux, mantendo apenas a versão 64-bit.

Bem, se você ainda usa a versão 32-bit do sistema operacional linux, sugiro que repense sua situação e avalie a possibilidade de instalar uma versão 64-bit.

De qualquer forma, mesmo para aqueles que já utilizam a versão 64-bit do sistema operacional do pinguim, a finalização do suporte à versão 32-bit do Chrome (e de outras aplicações) pode acabar gerando um erro na atualização do sistema. O erro é o seguinte (para o caso do Google Chrome):

sudo aptitude update
[sudo] password for mario:

Get: 1 http://ftp.br.debian.org jessie-updates InRelease [142 kB]
Get: 2 http://ftp.br.debian.org jessie-backports InRelease [166 kB]
...
W: Failed to fetch http://dl.google.com/linux/chrome/deb/dists/stable/Release:
Unable to find expected entry 'main/binary-i386/Packages' in Release file
(Wrong sources.list entry or malformed file)
E: Some index files failed to download. They have been ignored, or
old ones used instead.
E: Couldn't rebuild package cache

Este problema ocorrerá se o Linux estiver configurado para suportar aplicações 32-bit também:

sudo dpkg --print-architecture
amd64

mario@vctntb021 ~$ sudo dpkg --print-foreign-architectures
i386

Observe que, apesar da arquitetura principal do sistema ser amd64, também foi adicionado o suporte à arquitetura i386 (32-bit). Normalmente este suporte tem que ser feito manualmente, e se faz necessário quando deseja-se executar aplicações 32-bit no sistema operacional 64-bit.

Para resolver, basta fixar a arquitetura no arquivo de configuração do APT. Por exemplo, no caso do Chrome, editei o arquivo /etc/apt/sources.list.d/google-chrome.list e adicionar o parâmetro [arch=amd64], conforme ilustrado a seguir:

deb [arch=amd64] http://dl.google.com/linux/chrome/deb/ stable main

Na próxima atualização da lista de pacotes, o sistema não solicitará apenas a lista de pacotes 64-bit do Google Chrome.

Sds,

Marião

Como usar ferramentas de console com o TOR

Se você está lendo este artigo, então você já deve ter usado (ou ouvido falar) da rede TOR (The Onion Router).

A rede TOR é formada por um grupo de servidores operados por voluntários, cuja ideia é oferecer o anonimato de seus usuários durante o acesso à Internet.

Na rede TOR, as conexões dos usuários são realizadas através de uma série de túneis virtuais ao invés de efetuarem uma conexão direta de seu computador com o servidor final. Teoricamente, esta técnica permite aos usuários da rede TOR compartilhar informações através de uma rede pública (a Internet) de forma anônima.

Apesar de parecer ótima esta ideia (e é), ainda assim fique atento: apesar de usar criptografia internamente, a rede TOR não oferece privacidade fim-a-fim. Isto porque o tráfego só é cifrado entre os servidores da rede TOR. Funciona mais ou menos assim: seu navegador, por exemplo, envia uma solicitação de conexão para um site qualquer. Como ele está configurado para usar o proxy SOCKS, a solicitação de conexão é enviada para o proxy, que a encaminha para um dos servidores da rede TOR. Este servidor estabelece um túnel cifrado através de vários outros servidores da rede TOR, sendo que, no último servidor do túnel, os dados são decifrados e finalmente enviados para o destino final. Observe que, neste processo, o servidor final recebe os dados decifrados, isto é, da mesma forma como eles saíram do seu computador. Então, o uso da rede TOR não livra as pessoas do uso de protocolos que garantam a privacidade, como, por exemplo o HTTPS.

Mas então, para que serve a rede TOR? Bem, de uma forma simplificada, o objetivo da rede TOR é garantir o acesso anônimo na Internet, ou seja, o servidor de destino não saberá o endereço IP real do cliente. A privacidade dos dados só é garantida enquanto eles trafegam entre os servidores da rede TOR, pois são cifrados. No entanto, a rede TOR não tem como proteger seus dados até a entrega ao servidor de destino simplesmente porque o destino final não é um nó da rede TOR.

Além disso, o uso de comunicação P2P, como torents, não deve ser usada na rede TOR. Os nós de saída da rede TOR são configurados para bloquear o tráfego redes de compartilhamento de arquivos e, além disso, os protocolos P2P normalmente enviam o endereço IP do seu computador para o destino, acabando com o anonimato oferecido pela rede TOR.

Então, fica a dica: mesmo usando a rede TOR, nunca dispense o uso de protocolos seguros, como o HTTPS e VPNs, proteja seus dados com criptografia antes de enviá-los para o servidor de destino e jamais utilize protocolos P2P pensando que a rede TOR irá garantir o seu anonimato.

Lembre-se: a rede TOR não protege seus dados, apenas proporciona anonimato.

Deixando os detalhes técnicos para uma outra oportunidade, vamos ao que interessa.

Para os testes, utilizei a distribuição Linux Debian Jessie (8.3).

Para instalar o TOR:

sudo aptitude install tor

Depois de instalado, próprio instalador já inicia o serviço. Neste caso, o serviço TOR instalado funciona como um proxy SOCKS. Na configuração padrão, o serviço espera conexões na porta 9050/TCP. Cabe aqui uma dica: a rede TOR só opera com o protocolo TCP, ou seja, ela não funciona com o protocolo UDP.

Se seu objetivo é apenas navegar pela Internet, então basta configurar o proxy SOCKS no seu navegador, apontando para o servidor 127.0.0.1:9050.

Para o propósito deste artigo, no entanto, o objetivo é utilizar a rede TOR em aplicativos de linha de comando, independente de terem ou não suporte ao proxy SOCKS.

Então, entram em cena as ferramentas torify e o torsocks, que fazem parte do pacote TOR. O uso delas é extremamente simples: basta executar uma dela passando na linha de comando o comando que você deseja executar através da rede TOR.

Para testar o acesso à Internet vamos fazer o seguinte: vamos obter o IP de acesso à Internet usando a ferramenta cURL em duas etapas: com e sem o uso da rede TOR.

Existe um site chamado ifconfig.me que retorna o endereço IP de acesso internet, o que torna a verificação do endereço de acesso muito simples.

Como primeiro teste, vamos obter o endereço IP sem o uso da TOR:

curl ifconfig.me
201.0.164.131

Agora, vamos repetir o teste usando a ferramenta torify:

torify curl ifconfig.me
193.90.12.90

Da mesma forma, podemos usar o torsocks:

torsocks curl ifconfig.me
193.90.12.90

O torify parece ser igual ao torsocks, no entanto, há várias diferenças. Ambos são o que costumamos chamar wrappers, que são uma espécia de encapsuladores de comandos. No entanto, o torsocks é mais completo e permite o uso de alguns parâmetros específicos. No final das contas, quando o torify é executado, ele executa o torsocks.

Para entender melhor como estas ferramentas funcionam, consulte aa páginas de manual:

man torify
man torsocks

Lembre-se apenas do seguinte: o acesso à Internet via rede TOR é mais lento, pois além da criptografia utilizada, a comunicação segue através de vários túneis virtuais e pode viajar o mundo antes de chegar ao seu destino (a maioria dos servidores da rede TOR parece estar na Europa). Além disso, o tráfego na rede TOR tem aumentado consideravelmente e, com isso, o tempo de resposta tende naturalmente a aumentar.

Um detalhe interessante: a rede TOR cuida de alterar o caminho de acesso à Internet a cada 10 minutos automaticamente. Resta saber se um download demorado será prejudicado.

Por hoje é só.

Visualizando ideogramas emoji no Debian

Recentemente percebi que meus navegadores Firefox e Google Chrome em Linux não mostravam os ideogramas (smileys) Emoji presentes no site http://br-linux.org. Fui pesquisar um pouco e descobri uma forma de solucionar este problema: basta instalar o pacote de fontes ttf-ancient-fonts, depois reiniciar os navegadores e voi-lá:

sudo aptitude install ttf-ancient-fonts

Em outras distribuições, pode ser necessário instalar outros pacotes, possivelmente relacionado à fonte Symbola. Por exemplo, no openSuse, instale o pacote gdouros-symbola-fonts.

Sds,

Marião

Gnome: adicionar templates de documentos no Nautilus

Dica rápida: no Nautilus (Gnome), quando cicamos com o botão direito numa área vazia da tela, nos é apresentado um menu suspenso com várias opções de ação. Uma destas opções é a de criação de um novo documento, como, por exemplo, um docuemnto em formato texto.

Pois bem, é possível criar templates de documentos que apareçam neste menu suspenso e, o melhor, quando selecionarmos o tipo de documento desejado, o Nautilus irá criar o arquivo basseado no template que definido. Para uq isto seja possível, crie no seu diretório home (/home/usuario), o diretório Templates (observe que a primeira letra tem que ser maiúscula). Depois disso, crie seus templates de documento. No nome do arquivo criado no diretório Templates aparecerá no menu suspenso, no item Novo documento, sem a extensão.

Por exemplo, eu criei dois templates: um para documentos em formato texto, e outro para documentos no formato RestructuredText. Veja o exemplo:

cd Templates
ls -l
total 4
-rw-r--r-- 1 mario mario 276 Sep  8 09:36 ReStructuredText.rst
-rw-r--r-- 1 mario mario   0 Sep  8 08:51 TextDocument.txt

Observe que o arquivo TextDocument.txt é um arquivo vazio. Pois é isto mesmo que eu quero: quando eu selecionar a opção Novo Documento/TextDocument no Nautilus, eu quero que ele crie um arquivo vazio.

Por outro lado, quando eu selecionar a opnção Novo Documento/ReStructuredText do menu, quero que o Nautilus crie um arquivo com a extensão rst com o mesmo conteúdo do arquivo ReStructuredText.rst contido no diretório Templates. Como exemplo, veja o conteúdo do arquivo ReStructuredText.rst que eu criei no diretório Templates:

=====
TITLE
=====

:Autor: Mario Luiz Bernardinelli <mariolb@gmail.com>
:Versão: 0.1

.. contents::
    Conteúdo

.. section-numbering::


.. footer::

    .. class:: header-table

        +----------+-------------------+-----------------+
        |          | .. class:: center |.. class:: right |
        |          |                   |                 |
        | XXXXX    | XXXXXXXX          | ###Page###      |
        +----------+-------------------+-----------------+


Chapter Level 1
===============

Chapter Level 2
---------------

Chapter Level 3
~~~~~~~~~~~~~~~

Chapter Level 4
^^^^^^^^^^^^^^^