configurando um firewall no seu servidor dedicado com iptables

22 / 01 / 2008   seguranca* comente esse artigo

Outros artigos da série seguranca de servidor

  1. Protegendo seu servidor dedicado ou semi-dedicado, introdução
  2. Protegendo seu diretório /tmp
  3. Protegendo executáveis
  4. configurando um firewall no seu servidor dedicado com iptables

Há diversas formas de se configurar um firewall, vou começar pela mais básica delas. Básica não por ser a mais fácil, mas porque quase todos os servidores linux fornecidos em datacenter via colocation ou leasing ou aluguel possuem instalados um programa chamado iptables. Sua função é permitir ou derrubar pacotes de dados e evitar comunicação indesejada.

O script abaixo não deve ser utilizado da forma como está, é necessário verificar linha por linha e saber se atende às suas necessidades.
Basicamente libera http,https, pop3, pop3s, ssh, smtp, imap, ftp, mysql e recusa o resto.

Como sempre, utilize por sua conta e risco.

Copie as linhas abaixo, envie para o seu servidor, utilize algum nome obvio como ‘iptables.sh’, torne-se super usuario (’su’ ou ’sudo su’) e rode com:

# sh iptables.sh

se deu tudo certo seu servidor está menos vulnerável. E, sim, eu colocarei uma configuração para APF também, aguardem.

#!/bin/sh
# endereco IP do seu servidor
SERVER_IP=xxx.xxx.xxx.xxx

# se voce tiver uma conexao com IP dedicado, pode adiciona-lo aqui.
ADMIN_IP=yyy.yyy.yyy.yyy

# interface a ser configurado com o firewall
$INTERFACE=eth0
IPTABLES=’/sbin/iptables’
SERVICE=’/sbin/service’

# Configurações padrão (-P), caso não exista uma regra que se aplique
# especificamente &aagrave; a uma situação, tenta utilizar
# a regra mais genérica possível. O padrão utilizado é DROP, ou seja,
# derruba tudo o que não está autorizado.
$IPTABLES -P INPUT ACCEPT
$IPTABLES -P FORWARD DROP
$IPTABLES -P OUTPUT ACCEPT

# Flush (limpa) (-F) todas as regras
$IPTABLES -F INPUT
$IPTABLES -F FORWARD
$IPTABLES -F OUTPUT

# Comunicacao interna ao firewall
$IPTABLES -A INPUT -i $INTERFACE -m state –state ESTABLISHED,RELATED -j ACCEPT

# Derruba todas as conexoes vindas da rede publica que tentam
# se passar por enderecos internos
$IPTABLES -A INPUT -i $INTERFACE -s $SERVER_IP/32 -j DROP
$IPTABLES -A INPUT -i $INTERFACE -s 192.168.0.0/24 -j DROP
$IPTABLES -A INPUT -i $INTERFACE -s 127.0.0.0/8 -j DROP

# Aceita pacotes para o protocolo SMTP (mail)
$IPTABLES -A INPUT -p tcp -s 0/0 -d 127.0.0.0/8 –destination-port smtp –syn -j ACCEPT
$IPTABLES -A INPUT -p tcp -s 0/0 -d $SERVER_IP/32 –destination-port smtp –syn -j ACCEPT
$IPTABLES -A INPUT -p tcp -s 0/0 -d $SERVER_IP/32 –destination-port smtps –syn -j ACCEPT

# Aceita HTTP, HTTPS, POP3, POP3S
$IPTABLES -A INPUT -p tcp -s 0/0 -d 0/0 –destination-port http –syn -j ACCEPT
$IPTABLES -A INPUT -p tcp -s 0/0 -d 0/0 –destination-port https –syn -j ACCEPT
$IPTABLES -A INPUT -p tcp -s 0/0 -d 0/0 –destination-port pop3 –syn -j ACCEPT
$IPTABLES -A INPUT -p tcp -s 0/0 -d 0/0 –destination-port pop3s –syn -j ACCEPT
$IPTABLES -A INPUT -p tcp -s 0/0 -d 0/0 –destination-port poppassd –syn -j ACC EPT

# IMAP
$IPTABLES -A INPUT -p tcp -s 0/0 -d 0/0 –destination-port imap –syn -j ACCEPT
$IPTABLES -A INPUT -p tcp -s 0/0 -d 0/0 –destination-port imaps –syn -j ACCEPT

# ATENCAO, se voce utiliza um painel de controle
# DEVE liberar sua porta aqui. Listei uma liberacao para o Plesk.
# Verifique nos dados fornecidos pelo datacenter qual o seu painel e
# qual(is) a(s) porta(s) utilizadas e LIBERE-AS aqui.
# Se utiliza CPanel há no faq deles uma relacao de todas as portas.

# Plesk
$IPTABLES -A INPUT -p tcp -s 0/0 -d 0/0 –destination-port 8443 –syn -j ACCEPT

# SSH
# Em mundo ideal voce possui um IP fixo em sua casa ou escritorio e deve liberar apenas
# esse IP. Na pratica isso é muito raro, mas se for esse o seu caso, retire o comentario,
# o simbolo de “#”, da linha abaixo. Nao se esqueca de colocar o endereco da sua conexao
# nos parametros do comeco do script.
#$IPTABLES -A INPUT -p tcp -s $ADMIN_IP/32 -d $SERVER_IP/32 –destination-port s sh –syn -j ACCEPT

# DNS
$IPTABLES -A INPUT -p udp -s 0/0 -d 0/0 –destination-port domain -j ACCEPT
$IPTABLES -A INPUT -p tcp -s 0/0 -d 0/0 –destination-port domain -j ACCEPT

# For FTP server, restricted to specific local hosts (and see /etc/xinetd.conf):
# $IPTABLES -A INPUT -p tcp -s 0/0 -d 0/0 –destination-port ftp-data –syn -j A CCEPT
$IPTABLES -A INPUT -p tcp -s 0/0 -d 0/0 –destination-port ftp –syn -j ACCEPT
# Talvez voce precise configurar as portas que seu servico de FTP utiliza. Se não sabe
# do que estou falando, deixe a linha abaixo comentada.
#$IPTABLES -A INPUT -p tcp -s 0/0 -d 0/0 –destination-port 32000:65534 –syn -j ACCEPT

# Otras cositas mas, se nao sabe o que sao, deixe comentadas
# $IPTABLES -A INPUT -p tcp -s 0/0 -d 0/0 –destination-port ipp –syn -j ACCEPT
# $IPTABLES -A INPUT -p tcp -s 0/0 -d 0/0 –destination-port rndc –syn -j ACCEP T
# $IPTABLES -A INPUT -p tcp -s 0/0 -d 0/0 –destination-port sunrpc –syn -j ACC EPT

# MySQL
# ATENCAO, permite que usuarios externos “tentem” se conectar ao seu mysql
$IPTABLES -A INPUT -p tcp -s 0/0 -d 0/0 –destination-port mysql –syn -j ACCEPT

#blocks
# se voce quiser bloquear algum endereco especifico, coloque na linha abaixo
# e retire o comentario
$IPTABLES -A INPUT -s xyz.xyz.xyz.xyz/32 -d 0/0 -p tcp –syn -j DROP

# Se nao estiver em algum dos casos acime, recuse a conexao
$IPTABLES -A INPUT -s 0/0 -d 0/0 -p udp -j DROP
$IPTABLES -A INPUT -s 0/0 -d 0/0 -p tcp –syn -j DROP

# Salva a configuracao
$SERVICE iptables save

# Reinicializa o servico
$SERVICE iptables restart
$SERVICE iptables status

enviado por Marcos V.

Digg It! Digg It! Del.icio.us

Protegendo executáveis

16 / 01 / 2008   seguranca* comente esse artigo

Essa é a segunda parte da série sobre segurança básica em Unix.

Se um invasor utilizar um script para fazer o download de algum código malicioso para dentro do seu servidor, ele precisará, provavelmente, utilizar as ferramentas que já existem instaladas. Portanto a melhor solução é desabilitar essas ferramentas. A maioria são programas que permitem contato com o “mundo exterior”. Não se preocupe se não encontar algum, dificilmente estarão todos instalados.

Antes de mais nada é preciso fazer um “inventário” dos seus arquivos. Como super-usuário, digite o comando abaixo:

updatedb

Se você tiver muitos arquivos isso pode demorar um pouco, não se preocupe.

Em seguida, desabilite os seguintes programas utilizando os comandos abaixo:

chmod 700 /usr/bin/curl
chmod 700 /usr/bin/elinks
chmod 700 /usr/bin/GET
chmod 700 /usr/bin/links
chmod 700 /usr/bin/lwp-download
chmod 700 /usr/bin/lynx
chmod 700 /usr/bin/mc
chmod 700 /usr/bin/rcp
chmod 700 /usr/bin/scp
chmod 700 /usr/bin/wget
chmod 000 /etc/httpd/proxy/
chmod 000 /var/mail/vbox

caso não encontre algum, certifique-se que não existe mesmo. Para procurar o arquivo lynx, por exemplo, digite o seguinte comando.

locate lynx

A resposta será o caminho (path) até o arquivo ou a informação de que não foi encontrado.

Outra técnica conhecida de invasão é enviar um código fonte e compila-lo no seu próprio servidor. Para evitar que isso aconteça, procure pelos compiladores, da familia cc e altere suas permissões:
locate gcc
locate cc
locate gcc++
geralmente estarão no diretório /usr/bin. Altere as permissões com o mesmo comando chmod utilizado acima

chmod 700 /usr/bin/gcc
chmod 700 /usr/bin/cc
e assim por diante.

enviado por Marcos V.

Digg It! Digg It! Del.icio.us

Protegendo seu servidor dedicado ou semi-dedicado, introdução

15 / 01 / 2008   seguranca* 1 comentário

Outros artigos da série seguranca de servidor

  1. Protegendo seu servidor dedicado ou semi-dedicado, introdução
  2. Protegendo seu diretório /tmp
  3. Protegendo executáveis
  4. configurando um firewall no seu servidor dedicado com iptables

Quando um blog, ou um conjuto de blogs, começa a crescer, é comum desejar um servidor dedicado ou semi-dedicado. A maioria dos “semi-dedicados” que vejo por aí são apenas contas comuns com a capacidade de criar vários domínios. Nesse caso (quase) todas as medidas de segurança cabem ao seu provedor de hospedagem. No entanto há algumas contas que são, de fato, servidores virtuais, utilizando algum software como o Virtuozzo da sw-soft ou o Virtual Server da Microsoft.

Se esse é de fato o seu caso, há algumas medidas de segurança que são realmente importantes serem tomadas. Nessa série eu vou comentar, e fornecer um passo-a-passo, das mais relevantes para servidores Unix/Linux.

  1. Protegendo seu diretório /tmp
  2. Alterando permissões de programas “perigosos”
  3. instalando um rootkit
  4. configurando um firewall simples

enviado por Marcos V.

Digg It! Digg It! Del.icio.us