Um primeiro método seria liberar o acesso a consultas dns e acesso web para toda a rede interna.
#!/bin/bash
# A criação de variáveis de ambiente irá facilitar a troca de alguns parâmetros no firewall.
INT_NET=192.168.0.0/24
INT_IF=eth1
EXT_IF=eth0
iptables -F
iptables -X
iptables -t nat -F
iptables -t nat -X
iptables -P INPUT DROP
iptables -P FORWARD DROP
iptables -A INPUT -m state --state ESTABLISH,RELATED -j ACCEPT
iptables -A INPUT -i lo -j ACCEPT
iptables -A INPUT -p udp --dport 137:139 -j DROP
iptables -A INPUT -p tcp --dport 22 -m state --state NEW -j ACCEPT
# Aceita todos os pacotes que estiverem sendo repassados, independente das interfaces, desde
# que sejam pacotes na qual as conexões já estejam estabelecidas ou relacionadas.
iptables -A FORWARD -m state --state ESTABLISH,RELATED -j ACCEPT
# Aceita repassar os pacotes que tenham como origem a rede interna, estejam entrando na
# interface interna e saindo na interface externa, protocolo sendo UDP com destino a porta
# 53(DNS) e o estado da conexão seja uma nova conexão.
iptables -A FORWARD -s $INT_NET -i $INT_IF -o $EXT_IF -p udp --dport 53 -m state --state NEW -j ACCEPT
# Aceita repassar os pacotes que tenham como origem a rede interna, estejam entrando na
# interface interna e saindo na interface externa, protocolo sendo tcp com destino as portas
# 80(http) e 443(https) e o estado da conexão seja uma nova conexão.
# Note que foi usado o módulo multiport, pois colocamos como destino mais de uma porta.
iptables -A FORWARD -s $INT_NET -i $INT_IF -o $EXT_IF -p tcp -m multiport --dports 80,443 -m state --state NEW -j ACCEPT
iptables -A INPUT -m limit --limit 1/s -j LOG --log-level debug --log-prefix "[FW:INPUT] "
iptables -A FORWARD -m limit --limit 1/s -j LOG --log-level debug --log-prefix "[FW:FORWARD] "
iptables -t nat -A POSTROUTING -o $EXT_IF -j MASQUERADE
# A criação de variáveis de ambiente irá facilitar a troca de alguns parâmetros no firewall.
INT_NET=192.168.0.0/24
INT_IF=eth1
EXT_IF=eth0
iptables -F
iptables -X
iptables -t nat -F
iptables -t nat -X
iptables -P INPUT DROP
iptables -P FORWARD DROP
iptables -A INPUT -m state --state ESTABLISH,RELATED -j ACCEPT
iptables -A INPUT -i lo -j ACCEPT
iptables -A INPUT -p udp --dport 137:139 -j DROP
iptables -A INPUT -p tcp --dport 22 -m state --state NEW -j ACCEPT
# Aceita todos os pacotes que estiverem sendo repassados, independente das interfaces, desde
# que sejam pacotes na qual as conexões já estejam estabelecidas ou relacionadas.
iptables -A FORWARD -m state --state ESTABLISH,RELATED -j ACCEPT
# Aceita repassar os pacotes que tenham como origem a rede interna, estejam entrando na
# interface interna e saindo na interface externa, protocolo sendo UDP com destino a porta
# 53(DNS) e o estado da conexão seja uma nova conexão.
iptables -A FORWARD -s $INT_NET -i $INT_IF -o $EXT_IF -p udp --dport 53 -m state --state NEW -j ACCEPT
# Aceita repassar os pacotes que tenham como origem a rede interna, estejam entrando na
# interface interna e saindo na interface externa, protocolo sendo tcp com destino as portas
# 80(http) e 443(https) e o estado da conexão seja uma nova conexão.
# Note que foi usado o módulo multiport, pois colocamos como destino mais de uma porta.
iptables -A FORWARD -s $INT_NET -i $INT_IF -o $EXT_IF -p tcp -m multiport --dports 80,443 -m state --state NEW -j ACCEPT
iptables -A INPUT -m limit --limit 1/s -j LOG --log-level debug --log-prefix "[FW:INPUT] "
iptables -A FORWARD -m limit --limit 1/s -j LOG --log-level debug --log-prefix "[FW:FORWARD] "
iptables -t nat -A POSTROUTING -o $EXT_IF -j MASQUERADE
Para acesso ftp o controle da conexão deve ser alterado devido ao modo como o o ftp trabalha.
O FTP é um protocolo que dificulta muito a vida de quem implementa regras de filtragem no IPTABLES. O motivo é a forma que o FTP estabelece suas conexões, pois muitas vezes é impossível mapear quais portas serão feitas as conexões.
O Connection Tracking é um módulo do Linux utilizado para acompanhar estas conexões "ajudando" o IPTABLES a saber que um determinado pacote é relacionado a uma conexão já existente.
#!/bin/bash
INT_NET=192.168.0.0/24
INT_IF=eth1
EXT_IF=eth0
iptables -F
iptables -X
iptables -t nat -F
iptables -t nat -X
iptables -P INPUT DROP
iptables -P FORWARD DROP
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A INPUT -i lo -j ACCEPT
iptables -A INPUT -p udp --dport 137:139 -j DROP
iptables -A INPUT -p tcp --dport 22 -m state --state NEW -j ACCEPT
# Liberação de acesso ao cache de DNS para a rede interna.
iptables -A INPUT -p udp --dport 53 -s $INT_NET -i $INT_IF -m state --state NEW -j ACCEPT
iptables -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT
#-------------------------------------------------
# Liberação de acessos via FTP para a rede interna
#
# Primeiramente carregue o módulo de Connection Tracking do FTP
modprobe ip_conntrack_ftp
modprobe ip_nat_ftp
# Libere o acesso a porta 21
iptables -A FORWARD -s $INT_NET -i $INT_IF -o $EXT_IF -p tcp -m multiport --dports 21,80,443 -m state --state NEW -j ACCEPT
iptables -A FORWARD -s $INT_NET -i $INT_IF -o $EXT_IF -p udp --dport 53 -m state --state NEW -j ACCEPT
iptables -A INPUT -m limit --limit 1/s -j LOG --log-level debug --log-prefix "[FW:INPUT] "
iptables -A FORWARD -m limit --limit 1/s -j LOG --log-level debug --log-prefix "[FW:FORWARD] "
iptables -t nat -A POSTROUTING -o $EXT_IF -j MASQUERADE
INT_NET=192.168.0.0/24
INT_IF=eth1
EXT_IF=eth0
iptables -F
iptables -X
iptables -t nat -F
iptables -t nat -X
iptables -P INPUT DROP
iptables -P FORWARD DROP
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A INPUT -i lo -j ACCEPT
iptables -A INPUT -p udp --dport 137:139 -j DROP
iptables -A INPUT -p tcp --dport 22 -m state --state NEW -j ACCEPT
# Liberação de acesso ao cache de DNS para a rede interna.
iptables -A INPUT -p udp --dport 53 -s $INT_NET -i $INT_IF -m state --state NEW -j ACCEPT
iptables -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT
#-------------------------------------------------
# Liberação de acessos via FTP para a rede interna
#
# Primeiramente carregue o módulo de Connection Tracking do FTP
modprobe ip_conntrack_ftp
modprobe ip_nat_ftp
# Libere o acesso a porta 21
iptables -A FORWARD -s $INT_NET -i $INT_IF -o $EXT_IF -p tcp -m multiport --dports 21,80,443 -m state --state NEW -j ACCEPT
iptables -A FORWARD -s $INT_NET -i $INT_IF -o $EXT_IF -p udp --dport 53 -m state --state NEW -j ACCEPT
iptables -A INPUT -m limit --limit 1/s -j LOG --log-level debug --log-prefix "[FW:INPUT] "
iptables -A FORWARD -m limit --limit 1/s -j LOG --log-level debug --log-prefix "[FW:FORWARD] "
iptables -t nat -A POSTROUTING -o $EXT_IF -j MASQUERADE
Nenhum comentário:
Postar um comentário