Como configurar Firewall, SSH, Terminal no seu servidor Ubuntu Linux » Pinceladas da Web - Aprenda HTML5, CSS3, Javascript e mais.
Como configurar Firewall, SSH, Terminal no seu servidor Ubuntu Linux
Você está com um projeto novo ou existente e acabou de comprar uma máquina. Nela irá o seu banco de dados ou o seu servidor web e com certeza você possui código fonte e dados sigilosos e importantes para o seu negócio nesta máquina. É muito importante proteger esses dados. Embora seja caro contratar um especialista em segurança para cuidar da sua máquina, existem coisas que você pode fazer que vão aumentar drasticamente a segurança dos seus dados.
Eu preciso de conhecimentos avançados?
Não. Se você já faz o básico (entrar numa máquina, instalar servidor e banco de dados) você já sabe o suficiente para seguir este tutorial. Serve para devs front-end, designers, freelas e todo mundo.
Se você acessa máquinas remotas já usa SSH, através do PuTTY, WinSCP ou outro equivalente. Usuários de Mac ou Linux podem acessar a máquina direto pelo terminal.
Pronto, você já está dentro da sua máquina. Agora você precisa fazer as seguintes coisas para evitar ser atacado com facilidade:
Trocar a senha de root;
Criar o(s) seu(s) usuário(s);
Colocar o(s) seu(s) usuário(s) como sudoers e;
Trocar a porta de conexão ssh;
Vamos cobrir cada passo.
Troca de senha de root
Quando você instala uma máquina, ela vem com uma senha padrão, ou uma senha que você definiu no momento da instalação. É ALTAMENTE RECOMENDÁVEL que a senha do root tenha letras minúsculas, maiúsculas, números e símbolos. Caso a sua máquina veio sem senha ou com uma senha que você não definiu, troque-a assim:
Criar o(s) seu(s) usuário(s)
O usuário root é muito poderoso, e só deve ser usado em último caso. O ideal é você ter os seus usuários com permissões definidas, assim se um atacante invadir a sua máquina com o seu usuário, ele não conseguirá fazer tudo que o root pode fazer.
Crie seus usuários assim:
/usr/sbin/adduser seu_usuario
Colocar o(s) seu(s) usuário(s) como sudoers
Sudoers são usuários que podem usar o comando sudo e fazer coisas que um usuário comum não pode, mas sem ter que acessar como root. Para adicionar o seu usuário novo na lista de sudoers, faça:
/usr/sbin/usermod -a -G wheel seu_usuario
Testando as mudanças até agora
É uma boa testar agora o que já foi feito para não termos problemas mais para a frente.
SEM FECHAR A SESSÃO ATUAL, conecte ao servidor usando o usuário e senha que você acabou de criar:
ssh seu_usuario@seu_ip
Se você conseguir se conectar está tudo bem e podemos continuar. Em caso de erro, revise bem o tutorial até agora.
Trocar a porta de conexão ssh
Esse é um passo muito importante, pois todas as ferramentas e técnicas de invasão assumem que as pessoas são preguiçosas e não mexem em nada. Elas assumem que o ssh vai estar ligado na porta padrão, que vai poder se conectar com o usuário root e tudo mais. Trocando esses padrões já ganhamos um nível de segurança imenso.
Entre no arquivo de configuração:
Lá dentro existem várias coisas, você não precisa entender tudo o que se passa lá, o importante são as linhas abaixo:
Se elas já existirem, troque pelo conteúdo acima. Se não, adicione ao final do arquivo. Troque XXXX pela porta de sua preferência, algo como 3456 ou 1890. O importante é você lembrar qual é a porta e não liberar essa informação para terceiros. E na linha do AllowUsers você lista os usuários que podem acessar a sua máquina, aumentando ainda mais as checagens.
Repare no PermitRootLogin. Ele está como no por que a idéia é você se conectar com o seu usuário do dia a dia, e se necessário fazer sudo e mudar para root DEPOIS de conectado.
Salve o arquivo, e reinicie o serviço de ssh:
Com isso você não vai mais conseguir entrar na máquina sem saber em qual porta o acesso está liberado.
SEM FECHAR A SESSÃO ATUAL, conecte usando as novas configurações:
ssh -p XXXX seu_usuario@seu_ip
Já fizemos bastante coisas e a máquina já não está mais tão vulnerável a ataques assim, mas temos que configurar o firewall, que é essencial.
O output padrão é algo assim:
Se o output for algo parecido com isso acima, você está com um sério problema. A sua máquina está totalmente desprotegida e um hacker determinado só não invade a sua máquina por que não quer.
Vamos arrumar isso!
Editando um arquivo de regras
Neste arquivo nós vamos colocar o conteúdo abaixo:
-A INPUT -p tcp -m state --state NEW --dport XXXX -j ACCEPT
Essas regras trabalham com o conceito de whitelisting: Permite o que a gente precisa e nega todo o resto.
O importante na hora de editar esse arquivo é liberar as portas que você vai usar de fora. Por exemplo: Se você colocar um banco de dados mysql e precisa acessá-lo via MysqlClient, duplique a linha abaixo:
-A INPUT -p tcp –dport 80 -j ACCEPT
Trocando 80 pelo ip de acesso do seu banco. Troque também XXXX pela porta que você escolheu para fazer ssh, afinal se ela estiver bloqueada você não conseguirá acessar a própria máquina.
Configurando a máquina para carregar o seu arquivo de regras no boot
Essas regras vão funcionar até a hora que a sua máquina for desligada. Para carregar as regras toda vez que a máquina ligar, crie o seguinte arquivo:
Salve o arquivo, e transforme-o num executável com o seguinte comando:
Podemos dar reload nas regras de firewall com o seguinte comando:
Agora o output vai ser bem diferente e você estará protegido!
Esse tutorial pretende te proteger de hackers principiantes, trolls e pessoas má intencionadas mas com pouco conhecimento em segurança.
Se alguém estiver realmente interessado em obter seus dados ele pode contratar uma empresa de segurança para invadir a sua máquina usando técnicas que podem nem ser conhecidas pelo mercado, quanto menos corrigidas.
Isso sem falar que em tempos de NSA, o governo pode simplesmente invadir fisicamente o seu data center e levar uma cópia de tudo.
Por isso vale o bom senso, e manter sempre as versões dos seus softwares atualizadas (Linux, Apache, MySQL, Framework Web). Se você não estiver usando as últimas versões desses softwares, fazer tudo que está nesse artigo não adiantará de muita coisa.
Ubuntu Maverick Setup – part 1
É formado em ciências da computação. Atua como programador desde 2005, já trabalhou na Itália com suporte, Java, Ruby, Linux e bancos SQL(MySQL, Postgres e Oracle)
Instalando Apache, PHP, MySQL e Phpmyadmin, configurando a pasta de publicação e ativando o mod_rewrite no Ubuntu Este artigo é ideal para quem está começando ou querendo começar a usar linux para desenvolvimento web, vou mostrar como configurar o apache para rodar em sua pasta pessoal e …
Instalar Ubuntu em uma máquina virtual no Windows O sistema operacional Linux para um novo usuário pode ser um pouco assustador. Windows é tão simples não, funciona tão bem. A solução para aqueles curiosos que queiram testar o …
Flash Player 10 e o fim do problema de transparência no Linux Como a alum tempo atrás me tornei usuário de Linux, logo percepi o problema que existia com o plugin do Flash, onde, se você passar o parâmetro wmode="transparent" em sua …
Bem vindo ao mundo open-source Como disse a algum tempo atrás, um dia eu iria migrar para o Linux, bem, esse dia chegou, faz mais ou menos uns 10 dias que já estou utilizando o …
Comentários Muito bacana!
Já configurei o firewall aqui, realmente estava precisando.
13 de janeiro de 2014 @ 09:32 Responder Pingback: Instalar Ubuntu em uma máquina virtual no Windows » Pinceladas da Web - HTML5 Hard Coding and Bullet Proof CSS
muito importante saber isso…
por Valdir —
26 de fevereiro de 2014 @ 18:20 Responder não sei se tem uma maneira que seja mais segura, mas para vc alterar o arquivo: /etc/ssh/sshd_config