Segurança em seu Linux
A cada dia novas técnicas de invasão são desenvolvidas e os especialistas na área de segurança de redes têm a incumbência de resolvê-los. Mas não só um especialista na área de segurança deve se preocupar, um usuário comum, como você, também.
Parte 2: Segurança básica com iptables
Parto do suposto que você tem apenas uma placa de rede, que deve ser a eth0 ou uma conexão discada ou ADSL, que no caso será ppp0.
Independente disso, vou usar como exemplo uma placa de rede com o nome yyy0. Para funcionar em seu computador, apenas modifique yyy0 pela sua placa.
Precisamos entender que o bloqueio tem que ser feito do que vem de fora, para o nosso computador, então utilizaremos a chain INPUT (consultado para dados que chegam a máquina) e FORWARD (consultado para dados que são redirecionados para outra interface de rede ou outra máquina).
Vamos zerar as regras, apagando todas as existentes. Digite o seguinte em seu terminal GNU/Linux:
# iptables -F
Isso apagará todas as regras existentes na tabela FILTER.
Vamos definir uma política de segurança, onde o "perigo" existe nas portas de SSH, telnet e FTP. Vamos desconsiderar MSN, P2P e outras.
Portas: 22 (SSH), 23 (telnet), 21 (ftp)
Essas portas são as mais exploradas. Por padrão quase todas as portas que você utiliza são abertas, como nós zeramos as regras da tabela FILTER, vamos bloquear as que queremos, como por exemplo, a porta 22:
# iptables -I INPUT -d SEU-IP -p tcp --dport 22 -j DROP
Bem, o que o comando a cima fez? Ele inseriu no topo das regras, com a opção -I, sabendo que o iptables trabalha de forma que ele executa as regras de cima para baixo.
Para ver quais regras existem e qual a sequência delas, executando a primeira, segunda, terceira e assim por diante, até que as regras acabem, digite:
# iptables -L --line-numbers
Voltando a explicação da regra, após inserir no topo com a opção -I, utilizei o chain INPUT, que diz que os dados vem de fora pra dentro, de fora para a nossa máquina. A opção -d quer dizer DESTINO, ou seja, junto com os parâmetros -p, --dport e -j DROP, estou dizendo que de fora para dentro, com destino a minha máquina no protocolo TCP/IP na porta 22 (porta do SSH) o alvo seja "DROPADO", não aceite os dados.
Vamos fazer o mesmo para a porta 21 (FTP) e 23 (telnet):
# iptables -I INPUT -d SEU-IP -p tcp --dport 21 -j DROP
# iptables -I INPUT -d SEU-IP -p tcp --dport 23 -j DROP
Bem, a segurança depende de você, então você vai definir o que bloquear. Se você acha que P2P é um problema, bloqueie, se você acha que outras portas estão dando "brecha" para que alguém consiga acesso a sua máquina, também bloqueie! Mas cuidado, não faça nada sem saber, pois depois você terá trabalho para descobrir o que fez e como resolver.
Bem, após definir todas as regras que você quer, revise-as usando:
# iptables -L --line-numbers
Por exemplo, se alguém dá um port scan para ver quais portas estão abertas no seu computador, o Snort já considera isso uma ameaça e junto com o software Guardian bloqueia o IP de quem fez esse port scan, não dando permissão alguma, assim ele não dará outro port scan, nem um ssh, nem nada do tipo, pois ele não terá nenhum acesso a sua máquina.
Você pode instalar o Snort seguindo minha dica: Instalando o Snort no Debian
Independente disso, vou usar como exemplo uma placa de rede com o nome yyy0. Para funcionar em seu computador, apenas modifique yyy0 pela sua placa.
Precisamos entender que o bloqueio tem que ser feito do que vem de fora, para o nosso computador, então utilizaremos a chain INPUT (consultado para dados que chegam a máquina) e FORWARD (consultado para dados que são redirecionados para outra interface de rede ou outra máquina).
Vamos zerar as regras, apagando todas as existentes. Digite o seguinte em seu terminal GNU/Linux:
# iptables -F
Isso apagará todas as regras existentes na tabela FILTER.
Vamos definir uma política de segurança, onde o "perigo" existe nas portas de SSH, telnet e FTP. Vamos desconsiderar MSN, P2P e outras.
Portas: 22 (SSH), 23 (telnet), 21 (ftp)
Essas portas são as mais exploradas. Por padrão quase todas as portas que você utiliza são abertas, como nós zeramos as regras da tabela FILTER, vamos bloquear as que queremos, como por exemplo, a porta 22:
# iptables -I INPUT -d SEU-IP -p tcp --dport 22 -j DROP
Bem, o que o comando a cima fez? Ele inseriu no topo das regras, com a opção -I, sabendo que o iptables trabalha de forma que ele executa as regras de cima para baixo.
Para ver quais regras existem e qual a sequência delas, executando a primeira, segunda, terceira e assim por diante, até que as regras acabem, digite:
# iptables -L --line-numbers
Voltando a explicação da regra, após inserir no topo com a opção -I, utilizei o chain INPUT, que diz que os dados vem de fora pra dentro, de fora para a nossa máquina. A opção -d quer dizer DESTINO, ou seja, junto com os parâmetros -p, --dport e -j DROP, estou dizendo que de fora para dentro, com destino a minha máquina no protocolo TCP/IP na porta 22 (porta do SSH) o alvo seja "DROPADO", não aceite os dados.
Vamos fazer o mesmo para a porta 21 (FTP) e 23 (telnet):
# iptables -I INPUT -d SEU-IP -p tcp --dport 21 -j DROP
# iptables -I INPUT -d SEU-IP -p tcp --dport 23 -j DROP
Bem, a segurança depende de você, então você vai definir o que bloquear. Se você acha que P2P é um problema, bloqueie, se você acha que outras portas estão dando "brecha" para que alguém consiga acesso a sua máquina, também bloqueie! Mas cuidado, não faça nada sem saber, pois depois você terá trabalho para descobrir o que fez e como resolver.
Bem, após definir todas as regras que você quer, revise-as usando:
# iptables -L --line-numbers
Conclusão
Com iptables e o GRUB protegido, seu computador agora está "um pouco" mais seguro. Uma outra forma de garantir segurança para o seu computador ou servidor é utilizar um sniffer, como o Snort, para "filtrar" e tomar uma ação (Snort + Guardian).Por exemplo, se alguém dá um port scan para ver quais portas estão abertas no seu computador, o Snort já considera isso uma ameaça e junto com o software Guardian bloqueia o IP de quem fez esse port scan, não dando permissão alguma, assim ele não dará outro port scan, nem um ssh, nem nada do tipo, pois ele não terá nenhum acesso a sua máquina.
Você pode instalar o Snort seguindo minha dica: Instalando o Snort no Debian
Tenho observado que muitos usuários migram para o linux porque alguém disse em determinado momento coisas do tipo:
- Linux é seguro, usa ele que nunca mais vc vai ter problema pra abrir e-mails, links, porque afinal nao "pega" virus,
Linux é MAIS seguro ? Sim sem duvida sua arquitetura proporcionou um improvement de segurança muito legal e obviamente um usuário que nao hospede um serviço de e-mail, dns, ftp, www no proprio host e deixe ele ligado 24/horas dia não terá muito a se preocupar.
Porém, olhem só a experiencia que eu fiz com um amigo meu. Ele é um linuxer adepto, daquele tipo que da raiva, "Linux é seguro, linux é [*****], windows sucks, microsoft sucks". Todo mundo conhece um assim ... :D
Estava falando com ele pelo skype por esses dias e durante uma dessas "bla bla bla linux ownz uber l33t" dele eu falei:
_ Então se é assim ... abre esse link aqui Champz ...
Passei a ele um link com um Java Applet que ao ser executado gera um .sh no /tmp e se executa. Esse em especial baixou uma backdoor reverse connect que me deu um bash$ na maquina do bonitinho.
Nem preciso dizer que ele NÃO EXITOU NEM 1 SEGUNDO EM ABRIR O LINK! Porque? Voces ja sabem porque... talves maioria aqui fizesse a mesma coisa :) afinal linux nao tem virus, nao tem perigo abrir um link ... :D
Parabens pelo Artigo Leonardo, é bom os usuários começarem a acreditar que segurança != paranóia :)
[]s