Protegendo seu PC com GNU/Linux [Parte 4/4: Intermediário]

Esta é a Etapa Final do Guia de Segurança para GNU/Linux. Para obter o máximo deste tutorial, siga as etapas fornecidas para cada tarefa com um computador executando GNU/Linux ou uma máquina virtual com GNU/Linux como o sistema operacional. Como matéria complementar, é importante que tenha lido a 1ª Parte2ª Parte e 3ª Parte deste guia, além dos artigos “Mitos sobre Linux“.

Nossa  até que enfim terminei este guia, levou alguns meses e um bom tempo rsrsrs. Isso porque tive que conciliar tempo, estudo e trabalho. Mas agora, consegui enfim entregar mais uma etapa deste guia. Espero que aproveitem bem.


Cuidado com as configurações de acesso remoto (SSH)

Se você usa o SSH para acesso remoto, por exemplo, existem algumas etapas simples para reduzir os riscos de ataques. O mais fácil é usar uma porta diferente da porta padrão 22 (e de preferência abaixo de 1024 ). 

Você também pode evitar fazer login remotamente como root com PermitRootLogin no ou PermitRootLogin prohibit-password no arquivo de configuração SSH.


Desative serviços de rede que você não precisa

Semelhante a etapa de verificação da necessidade para acesso remoto e suas configurações, também é bastante recomendável analisar os serviços de redes que estão executando no momento e verificar a necessidade de estarem ativos, ou se ao menos você realmente necessita deles.

Nesta etapa é altamente aconselhável que você conheça todos os serviços que de fato necessita. Assim, irá evitar desativar algum software essencial ao seu trabalho e/ou sistema.

Alguns daemons, por exemplo, escutam em portas externas. Analise-os e desligue esses serviços se não for necessário ou se não os estiver usando. Isso também pode melhorar os tempos de inicialização. 

Para verificar os serviços de rede, use este comando: 

Comando: netstat -lt

Podemos melhorar um pouco mais a lista, exibindo nomes e PID dos processos:

Comando: netstat -ltup

Criptografia

Muitas das distribuições linux disponíveis, oferecem criptografia da pasta home (diretório do usuário) ou até mesmo do sistema por completo. Geralmente este recurso aparece logo ao instalar o sistema operacional. Ainda assim, você também pode armazenar alguns arquivos importantes com uma ferramenta como o VeraCryptpara quem prefere não criptografar o disco todo.

Deixo abaixo um link para o Blog do Edivaldo Brito, com um tutorial bastante prático de como instalar esta ferramenta VeraCrypt em suas distribuições com Linux.

Criptografando dispositivos de mídia removível (Debian, RHEL, CentOS, Ubuntu e derivados)

Em distribuições Debian (e suas derivadas) geralmente também é possível utilizar o utilitário de discos para criptografar algum disco específico (inteiro) como pen-drive ou HD Externo.

Em distribuições Debian e suas derivadas, basta buscar pelo utilitário “Discos” via Dash ou no menu “Aplicativos” de sua interface gráfica.

Em seu Dash, pesquise por “Discos” ou “Disk”.

Com o utilitário aberto, procure por sua unidade (HD Externo, Pen-drive, etc) no lado esquerdo da janela. Ao selecionar o dispositivo que deseja criptografar, na área da direita, irá surgir algumas informações e recursos disponíveis para configuração de sua unidade.

Clique no ícone de configuração (Opções adicionais de partição) e escolha “formatar partição”. Lembre-se que este procedimento irá excluir todos os dados armazenados no dispositivo. Portanto, caso necessário, faça uma cópia de seus arquivos para alguma pasta em outro local, a fim de evitar perda de informações.

Clique em “Opções adicionais de partição”

Na janela “Formatar volume”, no campo “Tipo” selecione “Criptografado, compatível com sistemas Linux”. Informe a senha para descriptografar em “Frase secreta” e em seguida repita a mesma senha em “Confirmar frase secreta”.

Janela “Formatar volume”

Vale lembrar que este dispositivo, só poderá ser lido em distribuições com sistemas Linux. Além disso, procure senhas que você possa lembrar, pois se esquecê-la, não poderá reverter o processo e perderá todos os seus arquivos.


Protegendo o Bootloader

Um grande fato é que a maior parte das distros Linux utilizam o GRUB como gerenciador de boot (bootloader) padrão, e esta solução também pode fornecer recursos úteis.

No Debian, Ubuntu e seus derivados, por exemplo, está disponível o acesso ao modo de recuperação do GRUB, o que também permite o acesso ao sistema como root sem saber a senha.

Isso mesmo, através do GRUB conseguimos editar o boot pressionando a tecla [e] e alterar alguns parâmetros para editar a senha do super usuário root ou qualquer outro usuário.

O grande risco de deixar o GRUB vulnerável (editável) é que muitos recursos poderiam ser usados, por exemplo, é possível mudar credenciais, criar novos usuários, criar e habilitar backdoors, etc.

Se ainda não compreendeu, basta simplificar assim: GRUB desprotegido é o mesmo que liberar acesso completo root ao seu PC.

Uma outra forma de manter bloqueado o acesso não autorizado ao seu sistema, quando o GRUB estiver desprotegido, é criptografando o disco inteiro (o que deverá ser feito durante o processo de formatação e instalação do sistema). Mas, considerando que não tenha feito isto, vamos ao procedimento de colocar uma senha em seu bootloader.

1 – Configurando o GRUB com Senha (Debian, Ubuntu e derivados)

Execute o comando abaixo para criar a senha que será usada, certifique-se que esteja logado no terminal com o usuário root, ou utilize o comando “sudo” antes dos comandos abaixo:

O comando terá uma saída semelhante a imagem abaixo:

Comando: grub-mkpasswd-pbkdf2

Selecione e copie todo o conteúdo restante após “PBKDF2 hash of your password is”. Neste exemplo, o será o conteúdo “grub.pbkdf2.sha512………..”.

Copiando resultado do comando grub-mkpasswd-pbkdf2

Com as linhas copiadas, agora vamos editar o arquivo de configuração do GRUB. Você pode abrir com seu editor preferido (no meu caso, utilizei o VIM):

Com o arquivo aberto, adicione o conteúdo abaixo no final dele:

Substitua SEUUSUÁRIO por algum de sua preferência. O usuário pode ser qualquer um que quiser, ou seja, não precisa ser algum que já exista. Porém, é aconselhável utilizar “nomes” de usuários que você saiba que já existam, assim será mais fácil lembrar (caso venha a esquecê-los). Neste caso irei colocar o admin.

Depois, substitua AQUIAHASHGERADA pelo conteúdo copiado após a execução do primeiro comando, algo semelhante à grub.pbkdf2.sha512.xxxxx. Observer o resultado final:

Arquivo /etc/grub.d/40_custom

Agora vamos reconfigurar o GRUB com as nossas alterações e depois reiniciar para conferir o resultado:

Atualização dos arquivos de configuração do GRUB
Boot do sistema com SENHA no GRUB

Observe que logo no início, durante o boot do sistema, uma senha será SEMPRE solicitada.

Este processo pode ser muito bom, mas também é exaustivo, haja vista que você já tem uma senha na hora de iniciar a área de trabalho. Portanto, se assim preferir, você pode filtrar a proteção do GRUB e restringir a senha apenas para edições e alterações do bootloader, durante seu carregamento.

2 – Configurando o GRUB2 com Senha (RHEL, CentOS e derivados)

Em ambientes Red-hat-based, podemos executar alguns passos bem semelhantes ao método de configuração em Debian-based, porém há um comando que torna este procedimento mais simples. Certifique-se que esteja logado no terminal com o usuário root, ou utilize o comando “sudo” antes dos comandos abaixo:

Agora vamos editar o nome do usuário que será solicitado quando for realizado o boot do sistema ou edição de alguma entrada do GRUB. O nome do usuário padrão é root. Mas, o usuário pode ser qualquer um que quiser, ou seja, não precisa ser algum que já exista. É aconselhável utilizar “nomes” de usuários que você saiba que já existam, assim será mais fácil lembrar (caso venha a esquecê-los). Neste caso irei colocar o admin.

Caso deseje manter o usuário padrão (root), então pule este comando. Caso positivo execute o comando abaixo e substitua “admin” pelo nome de sua preferência:

O comando acima procura no arquivo “/etc/grub.d/01_users” todas as ocorrências da palavra “root” e substitui pela palavra “admin”.

Por fim, vamos validar as mudanças atualizando os arquivos de configuração do GRUB.

Nas máquinas baseadas em BIOS, execute o comando abaixo:

Em máquinas baseadas em UEFI, execute o seguinte comando como root:

Como minha máquina é baseada em BIOS irei executar o primeiro comando para reconfigurar o GRUB2. O resultado será algo semelhante a imagem abaixo:

Atualizando configurações do GRUB2 no CentOS

3 – Restringindo a senha apenas para edição do GRUB

Para restringir o uso da senha apenas em caso de tentativa de edição, uso do modo de recuperação ou modo avançado do GRUB, iremos acrescentar o parâmetro “–unrestricted” em algumas linhas específicas do arquivo “/etc/grub.d/10_linux“.

Alternativamente, se preferir, ao invés de usar o comando SED para substituir alguns trechos específicos, você também pode abrir o arquivo com seu editor preferido e buscar pelas linhas que iniciarem com “echo “menuentry“, algo parecido com o trecho abaixo:

No referido trecho, acrescente “–unrestricted” antes de “${CLASS}”.

Por fim atualize o GRUB e reinicie o sistema para conferir o resultado.

Em distribuições Debian, Ubuntu e derivados execute:

Em distribuições RHEL, CentOS, Fedora e derivados, execute conforme o modelo de firmware indicado abaixo.

Nas máquinas baseadas em BIOS, execute o comando abaixo:

Em máquinas baseadas em UEFI, execute o seguinte comando como root:

Após reiniciar o PC, irá perceber que o GRUB não solicitou mais senha durante o boot do sistema. Porém, se alguém tentar editar alguma informação do bootloader, a senha será solicitada. Faça você mesmo o teste e confira o resultado.

4 – Desativando a senha do GRUB (Debian, Ubuntu e derivados)

Caso você queira reverter o procedimento e deixar o GRUB sem senha mesmo, basta excluir as linhas do arquivo de configuração (/etc/grub.d/40_custom), limpar o parâmetro “–unrestricted” (/etc/grub.d/10_linux) e em seguida executar os comandos para atualizar as configurações do GRUB.

5 – Desativando a senha do GRUB2 (RHEL, CentOS e derivados)

Caso você queira reverter o procedimento e deixar o GRUB2 sem senha mesmo, basta excluir o arquivo “/boot/grub2/user.cfg” (ou movê-lo), limpar o parâmetro “–unrestricted” (/etc/grub.d/10_linux) e em seguida executar os comandos para atualizar as configurações do GRUB2 e reiniciar a máquina.

Vamos aos comandos:

Nas máquinas baseadas em BIOS, execute o comando abaixo:

Em máquinas baseadas em UEFI, execute o seguinte comando como root:


Conclusão

Esta série de tutoriais, apresentou à você os conceitos básicos de segurança no GNU/Linux e mostra como proteger ou fortalecer seu PC contra ataques, tratando de diretrizes com um conjunto básico de regras de segurança fundamentais para um bom uso do sistema.

Ele fornece exemplos passo a passo de como:

  • Proteger seu desktop contra ataques de malwares;
  • Utilizar um firewall para manter ataques afastados;
  • Fazer backup de arquivos importantes;
  • Instalar atualizações em seu sistema operacional e outro software;
  • Formas de criptografia (partição e disco);
  • Ficar atento aos serviços de redes, incluindo acesso remoto;
  • Proteger com senha o bootloader.

É claro que não podemos parar por aqui, ainda há muitos conceitos não abordados e que com certeza tornariam ainda mais seguros seu sistema operacional. Porém, analisado o dia a dia de um usuário, verifiquei que essas etapas abordados, são em sua maioria essenciais e básicas, além de bastante práticas para serem implementadas.

Não abordamos conceitos como AppArmor ou SELinux, que iriam proteger ainda mais contra acessos e modificações não autorizadas. Mas, devido ao nível de configuração e atenção em suas etapas, esses temas ficarão para artigos futuros 😉 .

Enfim, se você acompanhou este guia completo em todas as quatro etapas, espero que tenha aproveitado bem, na dúvida, é só entrar em contato ou sugerir dicas e modificações. 🙂


Viu algum erro ou gostaria de adicionar alguma sugestão a essa ou outra matéria? Colabore, clique aqui.


Fontes

Andre H O Santos

Pentester, Especialista em Segurança de Redes e Testes de Invasão, Programador, Consultor e Professor de T.I.. Geek Inveterado, Apaixonado por Segurança da Informação e Louco por GNU/Linux. Dedica grande parte do seu tempo para criar soluções que ajudem dezenas de milhares de pessoas com dicas e artigos em Tecnologia e Segurança da Informação. Possui algumas Certificações em Ethical Hacking, Cabling System, Linux e Administração de Redes.

Você pode gostar...

Deixe uma resposta

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *

doze + um =