Quase toda semana nos deparamos na mídia mainstream com notícias de invasões, vazamentos de informações sensíveis, sabotagens, malwares, ransonwares e isso é a ponta de um iceberg, visto que o grosso da ciberguerra ocorre nos subterrâneos das empresas e órgãos de Estado pelo mundo afora e ninguém fica sabendo.
Acha que apenas usar
Linux o manterá "seguro"? Óbvio, que não!
Em 2017, foram vazados para o Wikileaks documentos da CIA, NSA e DHS descrevendo com detalhes ferramentas de invasão, vigilância e sabotagem específicas para alvos Linux e seus serviços. Vejam algumas delas no link abaixo:
Duas delas que me chamaram a atenção foram
Gyrfalcon e
OutlawCountry, que são focadas em alvos Linux, especialmente o OpenSSH e me estimularam a escrever essa matéria.
No caso
Snowdenfiles, a que só tivemos um breve vislumbre do conluio que empresas de mídia social têm com agências de inteligência de Estado. Facebook, Microsoft, Apple e Google são mencionadas, mas o que ninguém mencionou é a relação promíscua desses órgãos de inteligência com outras empresas do segmento Open Source, como RedHat, Novell, Ubuntu, Amazon e é óbvio, os fabricantes de hardware.
A única forma de você ter certeza de que a sua distribuição não está comprometida por algum rootkit "de fábrica" é compilando seu código fonte, o que tornaria absolutamente inviável a aplicação prática de qualquer distribuição. Já experimentaram compilar uma libc ou instalar o Gentoo "from scratch"?
Eu, por curiosidade e algumas necessidades bem específicas já o fiz, e mesmo com um hardware parrudo é uma jornada longa e cansativa que inviabiliza qualquer projeto e serve apenas para fins didáticos. Então, o que fazemos? Recorremos aos pacotes pré-compilados, via seus gerenciadores de pacotes como o APT (Debian like), RPM (RH), PKGTOOLS (Slackware), APK (Alpine) entre outros. Ou ainda, podemos recorrer aos inimigos de nossos inimigos, e é esse o tema desse artigo.
Astralinux
O
Astralinux é uma distribuição Linux russa baseada em Debian. O Astra não é uma distribuição qualquer, ela foi desenvolvida pela empresa russa RusBITech que já era uma fornecedora das forças de defesa e inteligência russas, para atender às necessidades de segurança desses órgãos, bem como o mercado financeiro russo em sistemas operacionais seguros. Ela está em conformidade com o GOST, que é o equivalente russo do NIST. Para quem queria uma conexão
SSH "non-NIST", vou falar sobre isso mais adiante e vamos implementar umas coisas legais com a mão na massa.
A instalação do Astralinux é idêntica à do Debian e por isso não a abordarei em profundidade, por haver material mais do que suficiente sobre o tema.
A versão Common Edition que é gratuita pode ser baixada em:
http://mirror.yandex-Astra
Há duas modalidades dessa imagem ISO, uma para instalação em disco e a
live que pode ser gravada em um chaveiro USB.
Existe a Special Edition, que é a versão paga e oferece uma série de benefícios além do suporte, como acesso a repositórios com pacotes certificados. Infelizmente, ainda não consegui uma imagem para testar e o Astra não é uma distro de balcão que você pode comprar. É voltada para o mercado B2B.
Não posso afirmar com certeza, mas uma coisa que percebi no portal da RusBITech, é que não é algo muito simples adquirir a versão Special fora da Mãe Rússia. Não estou a par da legislação russa sobre exportação de software com ênfase em segurança e defesa, mas certamente eles devem impor restrições de algum tipo, tais como acordo de confidencialidade etc.
Além das forças armadas da Federação Russa e suas formidáveis agências de inteligência (FSB, SVR e GRU) a RusBITech tem clientes de peso que usam o Astralinux em ambiente de missão crítica, tais como ROSATOM e CNNC, ambas empresas geradoras nucleares russa e chinesa, respectivamente, e outros menos "perigosos" como Kaspersky e Huawei. Por aí já dá para ter uma ideia do cuidado com o qual essa formidável distribuição foi concebida.
Agora vamos brincar antes que se encham da leitura.
Conexão SSH GOST (non-Nist)
As versões pré compiladas do OpenSSH ocidentais não dispõem de cifras
non-Nist. Caso queiramos adicionar mais cifras, temos que mexer no código fonte do OpenSSH e de várias bibliotecas que funcionam juntamente com ele. Não é algo simples de fazer e requer um conhecimento profundo em programação
C. O OpenSSH e suas libs de apoio do Astra já estão em conformidade com o GOST russo.
Em seu Astra edite o arquivo:
/etc/ssh/sshd_config
Acrescente as seguintes linhas:
Ciphers grasshopper-ctr
MACs hmac-gost2012-256-etm
RekeyLimit 16 1s
Agora, em uma outra máquina também rodando o Astra, conecte-se ao servidor. Use a opção
-vvv para visualizar as mensagens de debug.
# ssh -vvv root@ip.do.serv.astra
Sua saída deverá ser parecida com a da figura abaixo.
Observações
O parâmetro
RekeyLimit 16 1s é uma função de rotação de chave. Ela está implementada e compilada também nas compilações ocidentais do OpenSSH. Essa regra diz o seguinte para o servidor (ou cliente, pois pode ser configurada em qualquer uma das aplicações):
RekeyLimit default none - É o padrão do SSH ou SSHd. Se a linha não estiver presente ou comentada, o SSH não irá rotacionar a cifra.
RekeyLimit 16 1s - Configurado dessa forma, o RekeyLimit instrui o servidor ou cliente, a rotacionarem a cifra a cada 16 bytes trafegados pela conexão OU a cada um segundo. As unidades de tamanho podem usar a notação legível
K pala kilobytes,
M para megabytes, ou
G para gigabytes e o mesmo para o tempo,
s para segundos,
m para minutos,
h para horas e
d para dias. O melhor valor irá depender da cifra usada e da qualidade de sua conexão. Em nosso exemplo foram adotados os valores mínimos permitidos, 16 bytes e 1 segundo.
Notas finais
A figura acima mostra o único detalhe da instalação que difere do Debian.
Hardened Kernel é uma compilação do Kernel feita pela RusBITech onde módulos críticos são compilados como built-in para evitar que sejam descarregados e outros espúrios tomem seu lugar, como está mencionado na documentação do Gyrfalcon da NSA.
Também postei esse artigo no
LinkedIn.
Se gostou do artigo, dê aquele like de lampadinha para aumentar o alcance e me ajudar a arrumar outro emprego, porque está osso! Mas se gostou muito, me contrate.