Configuração de um servidor seguro usando iptables e redirecionamento de proxy com Squid.
Objetivos:
- Noções sobre firewall;
- Como utilizar o firewall iptables;
- Como instalar e configurar o proxy Squid;
Firewall
O Firewall é um programa que tem como objetivo proteger a máquina contra acessos e tráfegos indesejáveis, proteger serviços que esteja rodando e bloquear a passagem de pacotes que não se queiram receber.
Iptables
É um firewall a nível de pacote e funciona baseado no endereço/porta de origem/destino do pacote. Funciona através da comparação de regras para saber se um pacote tem ou não permissão para passar.
Características:
- Trabalha com a especificação de portas/endereços de origem/destino;
- Suporte a protocolos TCP/UDP/ICMP;
- Suporte a interfaces de origem/destino;
- Manipula serviços de proxy na rede;
- Tratamento de tráfego divido em chains;
- Muito rápido, estável e seguro;
- Permite enviar alertas personalizados ao syslog;
- Suporte a SNAT e DNAT
- Permite especificar prioridade para determinados tipos de pacotes.
Regras:
São comandos passados ao iptables para que ele realize uma determinada ação de acordo com o endereço/porta de origem/destino, interface de origem/destino. Exemplo:
# iptables -A INPUT -s 192.168.2.1 -j DROP
As opções passadas ao iptables para manipular as regras são sempre em maiúsculas.
Opções:
1) Adicionado regras (-A):
# iptables -A INPUT -s 127.0.0.1 -j DROP
2) Listando regras (-L):
Opções principais : -v, -n
# iptables -L INPUT
Chain INPUT (policy ACCEPT)
Target prot opt source destination
DROP all -- anywhere localhost
3) Apagando regras (-D):
# iptables -D INPUT 1
# iptables -D INPUT -s 127.0.0.1 -j DROP
4) Inserindo uma regra (-I):
# iptables -I INPUT 1 -s 192.168.2.1 -d 127.0.0.1 -j ACCEPT
5) Substituindo uma regra (-R):
# iptables -R INPUT 2 -d 127.0.0.1 -p icmp -j DROP
Exemplo de regras:
Limpando todas as regras:
# iptables -F
Bloqueia o tráfego vindo da rede 200.200.200.*:
# iptables -A INPUT -s 200.200.200.0/24 -j DROP
Bloqueia conexões com o destino 192.128.2.5:
# iptables -A OUTPUT -d 192.168.2.5 -j DROP
Bloqueia o tráfego da máquina www.dominio.com.br a rede 200.251.159.3:
# iptables -A INPUT -s www.dominio.com.br -d 200.251.159.3 -j DROP
Bloqueia o acesso externo ao serviço de SMTP:
# iptables -A INPUT -p tcp -dport 25 -j DROP
Exemplo de um firewall:
Regras para uma intranet onde o administrador rejeitou todos os tipos de serviços exceto o www e a porta 1521 (Oracle) para sua rede interna.
#!/bin/sh
iptables -F
iptables -P INPUT DROP
iptables -t nat -F
iptables -P FORWARD LOG
iptables -P FORWARD DROP
iptables -A INPUT -p tcp --dport 80 -s 200.251.159.8 -i eth0 -j ACCEPT
iptables -A INPUT -p tcp --dport 80 -s 200.251.159.47 -i eth0 -j ACCEPT
iptables -A INPUT -p tcp --dport 80 -s 192.168.0.0/255.255.0.0 -i eth1 -j ACCEPT
iptables -A INPUT -p tcp --dport 4711 -s 200.251.159.49 -i eth0 -j ACCEPT
iptables -A INPUT -p tcp --dport 4711 -s 200.251.159.5 -i eth0 -j ACCEPT
iptables -A INPUT -p tcp -s 200.251.159.15 -i eth0 -j ACCEPT
iptables -A FORWARD -p tcp --dport 1521 -s 0/0 -d 0/0 -i eth0 -j LOG
iptables -A FORWARD -p tcp --dport 1521 -s 0/0 -d 0/0 -i eth0 -j ACCEPT
iptables -A INPUT -p tcp -s 200.251.159.6 -i eth0 -j ACCEPT