Preparando do Ubuntu Server para receber o servidor

 
Introdução:

Para preparar o sistema para se tornar um servidor é preciso reforçar suas defesas. Algumas das medidas serão tomadas agora, outras, após a instalação do Apache.

Desabilitando o AppArmor:

O AppArmor é uma extensão de segurança similar ao SELinux, que deve prover segurança estendida.


O problema do AppArmor é que ele às vezes causa problemas. É possível perder um bom tempo debugando o sistema porque um dos serviços instalados não está funcionando a contento, apenas para descobrir que é o AppArmor encrecando. É por essa razão que muita gente o desabilita.


De todo modo, se você for instalar o painel de controle ISPConfig (talvez venha a ser coberto em um tutorial futuro), o AppArmor tem que estar desabilitado.


No Terminal (Ctrl+Alt+T), rode os seguintes comandos, um por vez:

  sudo service apparmor stop 
sudo update-rc.d -f apparmor remove
sudo apt-get remove apparmor apparmor-utils

Restringindo configurações de rede no kernel:

O arquivo systcl é utilizado para modificar parâmetros do kernel do Linux em uso, e é possível fazê-lo para deixar suas configurações de rede ainda mais restritas, assim como prevenir ataques externos, como (D)DoS.


Nota: para mais detalhes sobre o systcl cheque o manual mantido pelo Ubuntu.


Abra o arquivo /etc/sysctl.conf para edição. No Terminal, digite:


sudo nano /etc/sysctl.conf


Note que todas as linhas estão comentadas. Para alterá-lo, inclua o seguinte conteúdo no final:


  net.ipv4.conf.default.rp_filter = 1 
net.ipv4.conf.all.rp_filter = 1 net.ipv4.icmp_echo_ignore_broadcasts = 1
net.ipv4.tcp_syncookies = 1
net.ipv4.tcp_max_syn_backlog = 2048
net.ipv4.tcp_synack_retries = 2
net.ipv4.tcp_syn_retries = 5
net.ipv4.ip_forward = 0
net.ipv4.icmp_echo_ignore_all = 1 net.ipv4.conf.all.accept_redirects = 0 net.ipv6.conf.all.accept_redirects = 0 net.ipv4.conf.default.accept_redirects = 0 net.ipv6.conf.default.accept_redirects = 0 net.ipv4.conf.all.send_redirects = 0 net.ipv4.conf.default.send_redirects = 0 net.ipv4.conf.all.accept_source_route = 0 net.ipv6.conf.all.accept_source_route = 0 net.ipv4.conf.default.accept_source_route = 0 net.ipv6.conf.default.accept_source_route = 0 net.ipv4.conf.all.log_martians = 1 net.ipv4.icmp_ignore_bogus_error_responses = 1 net.ipv6.conf.default.router_solicitations = 0 net.ipv6.conf.default.accept_ra_rtr_pref = 0 net.ipv6.conf.default.accept_ra_pinfo = 0 net.ipv6.conf.default.accept_ra_defrtr = 0


Salve a edição e saia do Nano com a seguinte sequência de teclas: Ctrl+X, Y (ou S, se seu sistema estiver em português) e Enter. Em seguida, recarregue o sysctl com o comando:


sudo sysctl -p

Prevenindo o spoofing do IP:

IP Spoofing é um ataque que consiste em mascarar (spoof) pacotes IP utilizando endereços de remetentes falsificados (fonte: Wikipedia). Para prevenir-se de tal prática, é necessário editar o arquivo /etc/host.conf. Para tanto, abra-o no Nano com o seguinte comando:


sudo nano /etc/host.conf


Altere o seguinte texto:


  order hosts,bind 
multi on


para que figure da seguinte forma:

  order bind,hosts 
nospoof on

 

 

Protegendo a memória compartilhada

Por padrão, /run/shm é montado para leitura e gravação e com permissão para executar programas. Nos últimos anos, muitas listas de discussão de segurança identificaram diversos exploits, nos quais /run/shm é usado em ataques.


Para a maior parte dos computadores pessoais e servidores, é aconselhável montar a memória compartilhada apenas para leitura, da seguinte forma. No Terminal, rode o seguinte comando para abrir o arquivo fstab para edição no Nano:


sudo nano /etc/fstab


Adicione a seguinte linha no final do arquivo:


  none /run/shm tmpfs defaults,ro 0 0 


Acontece que alguns serviços não funcionam se o “/run/shm” estiver montado apenas para leitura, como o Google Chrome. Nesse caso, é melhor permitir a escrita, apenas eliminando a permissão para execução, a linha a ser adicionada, nesse caso, é:

  none /run/shm tmpfs rw,noexec,nosuid,nodev 0 0 

Se sua instalação apenas for usada como servidor, pode utilizar a primeira opção. Se seu servidor também for usado como desktop, o que é desaconselhável, opte pela segunda opção, ou comece pela primeira e, se alguns serviços começarem a não funcionar, mude para a segunda.

Negando acesso ao programa “su” a usuários não administradores:

Além de sua conta pessoal, criada na instalação, o Ubuntu vem com uma conta de convidado (Guest), para que você possa emprestar seu computador a um amigo. “su” é um programa que um usuário execute programas em um computador como se fosse outro usuário, o que é muito útil quando usado corretamente, mas que pode ser utilizado de forma abusiva e mal intencionada.


É possível negar acesso ao programa “su” à conta de convidado, aumentando a segurança do sistema, rodando o comando abaixo no Terminal:


sudo dpkg-statoverride --update --add root sudo 4750 /bin/su


Esse comando é essencial para quem utiliza a versão desktop do sistema como servidor. O Ubuntu Server não vem com conta de convidado, o que dispensaria o comando, mas como ele impede que qualquer outro usuário além do que está rodando o comando possa usar o “su”, vale a pena...


Protegendo o diretório home:

Por padrão, seu diretório home pode ser acessado por qualquer outro usuário do sistema, inclusive ao usuário logado na conta de convidado.


Para acabar com essa vulnerabilidade, basta mudar as permissões de acesso ao seu diretório home, para permitir que apenas o dono da conta (você) possa acessá-lo. Para tanto, rode o comando abaixo (nota: altere “username” pelo seu nome de usuário no sistema):


sudo chmod 0700 /home/username


Se você quiser permitir que usuários que façam parte de mesmo grupo que você tenham acesso ao seu diretório home, altere os parâmetros de permissão de 0700 para 0750:


chmod 0750 /home/username


Limitando processos do usuário para prevenir fork bomb:

Fork bomb (também chamado rabbit virus ou wabbit) é um tipo de ataque (D)DoS em que um processo se replica indefinidamente, de modo a sobrecarregar um sistema, eventualmente levando-o a travar (fonte: Wikipedia).


Para prevenir-se de um ataque desta natureza, é preciso editar o arquivo: /etc/security/limits.conf:


sudo nano /etc/security/limits.conf


E adicione a seguinte linha no fim do arquivo:

  * hard nproc 800 

Salve a edição e saia do Nano com a seguinte sequência de teclas: Ctrl+X, Y (ou S, se seu sistema estiver em português) e Enter.