Protegendo seu PC com GNU/Linux [Parte 3/4: Intermediário]
Esta é a 3ª parte 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ª Parte e a 2ª Parte deste Guia além dos artigos “Mitos sobre Linux“.
Eita prezados, enfim… Estamos chegando a conclusão deste guia, esta é a penúltima parte deste tutorial. Obrigado à todos que acompanharam a série até esta etapa. Mas, vamos ao conteúdo.
Índice
Malwares para GNU/Linux
Malware é a abreviação de software mal-intencionado. Qualquer programa ou arquivo cujo propósito seja danificar ou interromper um sistema de computador ou rede é um malware.
De uma forma geral, para um malware espalhar-se entre sistemas e para causar danos, o programa ou arquivo precisa ser executado. Embora haja alguns com possibilidade de autoexecução, este ainda é um conceito geral. Desta forma, diferente de outros sistemas, o GNU/Linux foi desenvolvido de forma que seus usuários não estejam executando sob a conta “root”.
Mesmo em sistemas rodando com o SUDO, que permite ao usuário temporariamente adquirir poderes de root, para que seja executado o usuário precisa digitar ou solicitar estas permissões, ou seja, os programas e arquivos não possuem a liberdade de executarem sem permissão explícita.
Sem a habilidade de executar programa neste estado de login, o malware não consegue instalar-se ou propagar-se através de um sistema GNU/Linux devido às permissões do usuário. O recurso de segurança de permissões do usuário está integrado no GNU/Linux e é uma ferramentas mais efetivas contra a propagação do malware. (Jeffrey Orloff, IBM Developer Works, 2008).
Mesmo o Sistema GNU/Linux sendo projetado com um maior nível de segurança, ainda há vários outros motivos para se preocupar com os malwares. Portanto, executar varreduras ativamente para verificar se há malware ajuda a evitar a sua propagação.
Por exemplo, devido as configurações e níveis de acesso diferentes, o malware executável criado para Windows não executará em um computador GNU/Linux, a menos que o usuário utilize softwares de emulação como o WINE. Porém, em si tratando deste software específico, a infecção não passará do diretório do usuário. Mesmo assim, ainda é algo para com que se preocupar.
O malware pode ser construído para atacar vulnerabilidades específicas que são independentes de plataforma. Por exemplo, há diversos programas maliciosos que exploram brechas em navegadores (Chrome, Firefox, etc), leitores de PDF, softwares para escritório (como LibreOffice, OpenOffice, etc), e clientes de e-mail (Thunderbird, etc).
Outro exemplo é proveniente do malware para várias plataformas que é codificado para responder diferentemente, dependendo do sistema operacional do host. Se o malware detectar o Windows, ele ataca como tal. Se o Red Hat for detectado, diferentes comandos são executados, assim por diante. (Jeffrey Orloff, IBM Developer Works, 2008).
Protegendo contra malware
Além de exploração em falhas específicas de softwares que rodam em diversas plataformas, há malwares que são projetados especificamente para o GNU/Linux, embora menos comum mas não improvável. Isto ocorre principalmente em Servidores que rodam esta plataforma, estes são os maiores alvos dos ataques.
1 – Proteção contra rootkits
Há muito tempo, os rootkits têm sido o calcanhar de Aquiles dos administradores do GNU/Linux. Eles fazem parte da mesma família de software que os cavalos de tróia. Um método rootkit é um conjunto de ferramentas que possibilita que um hacker tenha acesso à conta root (de administrador) em seu computador. Estes pacotes de malware têm diferentes nomes, tais como tOrn e ARK, mas o resultado final é o mesmo: seu computador ou rede não fica mais sob seu controle.
Utilizaremos nesta seção o rkhunter, a fim de lutar contra rootkits e outras possíveis explorações. Este software é bastante útil para varrer seu PC e verificar arquivos suspeitos que podem ter sido instalados por um atacante para obter controle do seu computador.
O rkhunter está disponível em várias distribuições como o Ubuntu, Debian, Linux Mint, Fedora, Mageia, CentOS, Red Hat e seus derivados.
1.1 – Instalando o rkhunter
Instalação no Debian, Ubuntu, Linux Mint e derivados
Digite o comando abaixo (não é necessário estar logado como root, caso o sudo esteja instalado).
1 |
sudo apt-get install rkhunter |
Instalação no RHEL, CentOS e derivados
Em distribuição RHEL-based, o rkhunter encontra-se no repositório EPEL. Portanto, é necessário instalá-lo primeiro:
1 |
sudo yum install epel-release |
Se o comando acima não surtir efeito e/ou não houver pacote disponível, vamos baixar e instalar manualmente com Wget e RPM:
CentOS e RHEL 5.x
1 2 3 |
wget https://dl.fedoraproject.org/pub/epel/epel-release-latest-5.noarch.rpm sudo rpm -Uvh epel-release-5*.rpm sudo yum install -y rkhunter |
CentOS e RHEL 6.x
1 2 3 |
wget https://dl.fedoraproject.org/pub/epel/epel-release-latest-6.noarch.rpm sudo rpm -Uvh epel-release-6*.rpm sudo yum install -y rkhunter |
CentOS e RHEL 7.x
1 2 3 |
wget https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm sudo rpm -Uvh epel-release-7*.rpm sudo yum install -y rkhunter |
1.2 – Trabalhando com o RKHunter
Assim que o rkhunter tiver sido instalado com êxito, você poderá executá-lo para verificar várias explorações em seu desktop. Execute:
1 |
sudo rkhunter --check |
Se o rkhunter estiver executando apropriadamente, você começa a visualizar uma lista de diretórios com a palavra OK ou Aviso (Warning) próxima a eles. Quando iniciado, o rkhunter executa vários tipos de varreduras. Após a conclusão de uma varredura, você começa a próxima pressionando Enter.
Os diferentes tipos de varreduras são:
- Diretórios;
- Exploração do desktop;
- Portas que são comumente utilizadas para acesso à porta dos fundos;
- Arquivos de inicialização, grupos e contas, arquivos de configuração do sistema e o sistema de arquivos;
- Aplicações.
Após todas as varreduras serem concluídas, o rkhunter fornece um relatório e cria um arquivo de log com os resultados.
Assim como qualquer outro software, é preciso mantê-lo sempre atualizado regularmente de forma que ele possa detectar as vulnerabilidades e explorações mais recentes:
1 |
sudo rkhunter --update |
1.3 – Instalando o CHKRootkit
Para uma proteção um tanto mais abrangente, você pode instalar o chkrootkit e executá-lo junto com o rkhunter.
A maioria dos softwares antivírus não executa apropriadamente junto com um programa antivírus de outra empresa, mas os caçadores de rootkit executarão simbioticamente com outro, como é o caso do chkrootkit.
Instalação no Debian, Ubuntu, Linux Mint e derivados
Para instalar, basta executar o comando abaixo:
1 |
sudo apt-get install chkrootkit |
Instalação no RHEL, CentOS e derivados
Como o chkrootkit é um software construído em linguagem C, será necessário a instalação das bibliotecas e compiladores essenciais. Em seguida, o download da versão recente do software.
1 2 3 |
sudo yum update sudo yum install -y wget gcc-c++ glibc-static wget -c ftp://ftp.pangeia.com.br/pub/seg/pac/chkrootkit.tar.gz |
Após download do pacote, vamos descompactar e instalar:
1 2 3 4 5 6 |
tar -xzf chkrootkit.tar.gz sudo mkdir /usr/local/chkrootkit sudo mv chkrootkit-*/* /usr/local/chkrootkit sudo cd /usr/local/chkrootkit sudo make sense sudo ln -s /usr/local/chkrootkit/chkrootkit /bin/chkrootkit |
1.4 – Trabalhando com o CHKRootkit
Após a instalação, para executá-lo digite em seu terminal:
1 |
sudo chkrootkit |
Assim como o rkhunter, se o chkrootkit descobrir algo fora do normal, você será informado do possível problema. Nenhum destes programas realmente exclui arquivos do seu computador. Se você for alertado a algo por qualquer um dos programas, pesquise a exploração ou vulnerabilidade que foi relatada e certifique-se não trata-se de um falso-positivo. Em seguida, determine as etapas necessárias para eliminar a ameaça.
Algumas vezes, você só precisa atualizar o sistema operacional ou outro software. Outras vezes, pode ser necessário localizar um programa falso e eliminá-lo (purgá-lo) do sistema.
2 – Instalando antivírus
Embora não seja um costume ouvirmos sobre um PC com Linux infectado por vírus, não quer dizer que isso não acontece.
Usar o Linux não o torna imune a vírus.
Uma das soluções mais conhecidas pelos usuários do GNU/Linux é o ClamAV. É um antivírus de código aberto que está em constante desenvolvimento. O programa é instalado para o repositório principal (Debian, Ubuntu e derivados).
Há uma solução semelhante para sistemas Windows, o ClamWin: uma solução antivírus gratuita e de código aberto (FOSS) para Windows que serve como front-end para o agente de varredura de código aberto ClamAV.
2.1 – Instalando e atualizando o ClamAV (e ClamTK)
Você poderá instalar o software normal para execução em terminal (ClamAV) ou a versão com interface gráfica – GUI (ClamTK, vide imagem abaixo).
Após instalar o ClamAV, é possível especificar se deseja executá-lo manualmente ou continuamente ao conectá-lo a um daemon.
Instalação no Debian, Ubuntu, Linux Mint e derivados
1 |
sudo apt-get install clamav clamtk |
Instalação do ClamAV no RHEL, CentOS e derivados
Em distribuição RHEL-based, o clamav encontra-se no repositório EPEL. Portanto, é necessário instalá-lo primeiro:
1 |
sudo yum install epel-release |
Se o comando acima não surtir efeito e/ou não houver pacote disponível, realize o processo para download e instalação manual, indicado anteriormente (neste artigo) para CentOS e RHEL 5.x, 6.x e 7.x, procedimento informado na instalação do rkhunter.
1 2 3 |
sudo yum -y install clamav clamd sudo systemctl start clamd@scan sudo systemctl enable clamd@scan |
Instalação do ClamTK (GUI para ClamAV) no RHEL, CentOS e derivados
Para instalar o ClamTK, será preciso fazer um download do repositório. Os arquivos binários (ou source) podem ser encontrados em: https://dave-theunsub.github.io/clamtk/
1 2 |
wget -c https://bitbucket.org/davem_/clamtk-gtk3/downloads/clamtk-6.01-1.el7.noarch.rpm sudo yum localinstall clamtk-6.01-1.el7.noarch.rpm |
Atualizando o ClamAV
Logo após instalar o ClamAV, geralmente é necessário atualizá-lo, ou seja, atualizar as definições de vírus. As definições de vírus são padrões de código que são exclusivos a diferentes programas de malware. Scanners antivírus comparam os conteúdos dos seus arquivos com os padrões de código em um banco de dados de definições de vírus.
Para atualizar execute:
1 |
sudo freshclam |
O comando freshclam não causa nenhuma atualização automática subsequente em suas definições de vírus. A cada vez que desejar obter as definições mais recentes, deve executar o comando novamente. Após realizar a atualização inicial, você poderá julgar conveniente utilizar o argumento -v no comando para primeiro verificar se suas definições estão ou não atualizadas:
1 |
sudo freshclam -v |
Agora que você atualizou suas definições de vírus, está pronto para iniciar o ClamAV. Para executar uma varredura manual da sua pasta inicial, acesse o prompt do terminal e insira clamscan. Quando o comando clamscan for concluído, você visualizará um relatório de quantos diretórios e arquivos foram varridos e quantos arquivos infectados foram localizados.
1 |
sudo clamscan |
Se uma correspondência for localizada, o programa alertará que há um arquivo infectado em seu computador e impede que o código em tal arquivo seja executado.
2.2 – Outras soluções de antivírus
Vale lembrar que é sempre bom pesquisar a melhor solução que se adeque a sua situação. Assim sendo, segue abaixo alguns links de outras soluções de antivírus que podem atender aos requisitos de seu sistema ou ambiente.
Quando se trata de um bom antivírus, livre nem sempre significa melhor. A melhor dica é testar e pesquisar sempre.
Quick links: 7 melhores antivírus para Linux
Utilizando um Firewall
Seguindo as etapas de prevenção e proteção, o que deve manter em execução para filtro de todo o tráfego é o Firewall. Por padrão, a maioria das distribuições já possuem uma tabela de regras e filtros de tráfego (o IPTables) e outras distros já implementam inclusive um Firewall básico por linha de comandos o UFW.
Verifique se está com o UFW instalado e ativo em sua distribuição:
1 |
sudo ufw status |
Caso esteja instalado, mas não ativo, então execute:
1 |
sudo ufw enable |
Porém, se ainda não estiver instalado, basta executar (Debian, Ubuntu e derivados):
1 |
sudo apt-get install ufw gufw |
Verifique o processo de instalação para sua distribuição.
Na instalação, as configurações padrão para este firewall possibilitam todo o tráfego de entrada e saída por padrão. Para fazer um uso efetivo do firewall, você precisa criar regras para bloquear acessos indevidos tanto de entrada quanto de saída.
Embora o UFW seja bastante simples de configurar, ele é um software firewall também poderoso, e pode ser operado via linha de comando e através de uma interface gráfica.
Distribuições como o Ubuntu já trazem o UFW instalado por padrão com a função de trabalhar via linha de comando, outras como o Linux Mint trazem o UFW com a sua interface, o GUFW, por padrão.
Nas distros que essa interface não é oferecida, você pode instalar facilmente pela loja do seu sistema, ou através do comando de instalação informado anteriormente.
Usar o GUFW é muito simples, basta ler as informações que ele te entrega. Se você não quiser pensar muito, apenas ative ele nas configurações padrão.
Conclusão
Percebemos com esta etapa que mesmo sistemas aparentemente “invulneráveis” são também alvos constantes de ataques. Tanto o CHKRoot quanto o RKHunter não excluem de fato nenhum arquivo, porém alertam sobre os riscos nestes e que podem (ou não) estar infectados ou serem utilizados em ataques. Após a varredura é sempre bom que pesquise a exploração ou vulnerabilidade que foi relatada e certifique-se de que o que foi localizado não é um positivo falso.
Com a utilização do Firewall, você poderá acompanhar o registro do tráfego de tudo que foi liberado ou bloqueado e verificar se houve (ou está tendo) alguma tentativa de acesso indevido.
Dica: não adianta instalar estes softwares e confiar que tudo estará OK. É necessário estar sempre acompanhando e validando os relatórios apresentados e, em seguida, determine as ações necessárias para mitigar a ameaça.
Saiba que muitas das vezes, você só irá precisar atualizar o sistema operacional ou outro software. Outras vezes, pode ser necessário localizar um programa falso e purgá-lo (removê-lo) do seu sistema.
Espero que tenha aproveita as etapas repassadas neste guia. Vale lembrar que você não precisa aplicar todas as soluções aqui apresentadas. Avalie sempre seu ambiente e sistemas e aplique sempre e melhor solução pra você.
Viu algum erro ou gostaria de adicionar alguma sugestão a essa ou outra matéria? Colabore, clique aqui.
Fontes
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, Security+, SIEM Netwitness, SIEM SNYPR Securonix e Proficiência em Soluções de Vulnerability Management da Tenable.
Nice post.
Nice article. Thank you for sharing.