Segurança > Protegendo o tmp em servidores Linux contra malwares

Proteger o diretório /tmp do Linux contra malware é um importante item para qualquer baseline de segurança. Descubra como usar noexec, nosuid e nodev para prevenir execução de códigos maliciosos e escalação de privilégios.

252 Views
Tempo de Leitura: 3.17 minutos

Em ataques do tipo RFI (Remote File Inclusion), atores (hackers) incluem arquivos nos servidores Linux em busca de encriptar dados, escalar privilégios ou realizar ataques horizontais contra a infraestrutura da empresa.

A porta de entrada quase sempre é vulnerabilidade no código e/ou ausência de barreiras como WAF (Web Application Firewall).

Independente da situação, existe um ponto em comum na maioria dos ataques à servidores Linux: o diretório /tmp. Por ele ser uma “área de troca de arquivos” dentro do sistema Linux, possui permissão de leitura e escrita para todos usuários com shell configurado.

Veremos a seguir como configurar noexec, nosuid e nodev para proteger o sistema contra a maioria das tentativas execução de malwares a partir do /tmp.

Como funciona o noexec

O noexec é um parâmetro de montagem de partições do Linux. Ao utilizarmos no /etc/fstab, determinamos que o ponto de montagem não possuirá permissão de execução, mantendo permissão de leitura e de escrita.

A configuração é bem simples. basta incluir as propriedades no mountpoint logo após o “defaults” conforme exemplo abaixo:

tmpfs /tmp tmpfs defaults,noexec,nosuid,nodev 0 0

Toda alteração no /etc/fstab demanda execução do comando systemctl deamon-reload.

Para verificar se o noexec foi aplicado ao mount point, basta rodar o comando mount | grep tmp

Testando o ajuste:

# verificando o usuário que estou utilizando:
user@ubuntu-arm-01:~$ whoami
user

# criando o arquivo executavel:
user@ubuntu-arm-01:~$ echo 'echo "Ok, eu tenho permissao"' > /tmp/exploit

# aplicando permissao de execucao:
user@ubuntu-arm-01:~$ chmod +x /tmp/exploit

# conferindo permissoes:
user@ubuntu-arm-01:~$ ls -l /tmp/meu_codigo.sh 
-rwxrwxr-x 1 kafka kafka 30 Oct  2 14:11 /tmp/exploit

# executando o arquivo executavel:
user@ubuntu-arm-01:~$ /tmp/exploit
-bash: /tmp/exploit: Permission denied

O noexec é uma camada de proteção parcial que bloqueia a maioria dos ataques automatizados, mas não é 100% à prova de falhas.

Observe que o noexec não impede a gravação do malware no /tmp. Ele apenas impede a execução de malwares binários, mas não impede a disseminação do malware para outros endpoints e não é 100% funcional contra scripts em Shell, Python, Perl e outros.

Ele funciona como uma proteção extra e faz parte das boas práticas de hardening de segurança.

Como funciona o nosuid

O SUID (Set User ID) é bit adicional de permissão que pode ser utilizado em ataques de escalonamento de privilégios. Arquivos com esse bit configurado (rws) são executados com a permissão do owner do arquivo independente do usuário que está executando ele.

Por exemplo:

-rwsr-x--- 1 root root     30 Oct  2 14:11 exploit

Neste exemplo, arquivo tem permissão total para o owner, que neste caso é o usuário root. Com o SUID configurado, qualquer usuário com permissão de execução executará o arquivo com os privilégios do owner (root).

Por isso é muito importante utilizar nosuid no /etc/fstab.

Como funciona o nodev

O nodev determina que o /tmp não poderá conter arquivos de dispositivos. Tudo no Linux é arquivo, e os dispositivos são tratados como Device Node (arquivos de hardware) no diretório /dev do FHS (Filesystem Hierarchy Standard). A presença de arquivos de dispositivo no /tmp significa tentativa de manipular configurações de hardwares, e muito provavelmente será de discos para elevar privilégios.

Podemos criar Device Nodes no /tmp com o comando mknod, e ao fazê-lo podemos usar propriedades de discos existentes, herdando as configurações do disco utilizado como alvo. Toda operação realizada nesse novo “disco” serão persistidas no disco real.

Por isso incluímos nodev no /tmp para que o ponto de montagem considere device nodes como arquivos simples que não conseguem manipular os discos existentes.

Resumo

Esses são só 3 recursos de segurança para prevenir execuções arbitrárias de malwares em mount points. A segurança começa em evitar que o ator tenha acesso ao sistema.

1 - 0

Thank You For Your Vote!

Sorry You have Already Voted!

Rolar para cima