configurando um firewall no seu servidor dedicado com iptables

22 / 01 / 2008   seguranca

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

Nenhum comentário »

Nenhum comentário.

 

Enviar Comentário