O proxy é transparente?
Veja esse firewall, simples e funcional, uso aqui.
#!/bin/bash
echo "Produzido por Arthur Bernardes (17)99199-1157"
echo "Declarando variáveis"
# Interface da Internet
ifinternet="eth0"
# IP da Internet
ip_internet="192.168.1.2"
# Interface da rede local
iflocal="eth1"
# IP da Rede Local
rede_local="10.0.0.0/23"
# Portas à serem liberadas
portas_liberadas="21,23,25,53,110,143,22,80,443,3128,3306,3389,5432,5900,9091"
echo "Variáveis declaradas"
#### Função "start" ####
iniciar(){
echo "Carregando módulos"
modprobe ip_tables
modprobe iptable_mangle
modprobe iptable_nat
echo "Módulos carregados"
echo "Limpando regras"
iptables -F
iptables -t nat -F
iptables -t mangle -F
iptables -X
iptables -t nat -X
iptables -t mangle -X
iptables -Z
iptables -t nat -Z
iptables -t mangle -Z
echo "Regras limpas"
echo "Definindo política padrão"
iptables -P INPUT DROP
iptables -P OUTPUT ACCEPT
iptables -P FORWARD DROP
echo "Política padrão definida"
echo 1 > /proc/sys/net/ipv4/ip_forward
iptables -t nat -A POSTROUTING -o $ifinternet -j MASQUERADE
echo 1 > /proc/sys/net/ipv4/conf/default/rp_filter
echo "Internet compartilhada"
echo "Manter conexões establecidas"
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT
echo "Negando pacotes inválidos"
iptables -A INPUT -m state --state INVALID -j DROP
iptables -A FORWARD -m state --state INVALID -j DROP
echo "Liberando portas"
iptables -A INPUT -m multiport -p tcp --dport $portas_liberadas -j ACCEPT
iptables -A FORWARD -m multiport -p tcp --dport $portas_liberadas -j ACCEPT
iptables -A OUTPUT -m multiport -p tcp --dport $portas_liberadas -j ACCEPT
iptables -A INPUT -m multiport -p udp --dport $portas_liberadas -j ACCEPT
iptables -A FORWARD -m multiport -p udp --dport $portas_liberadas -j ACCEPT
iptables -A OUTPUT -m multiport -p udp --dport $portas_liberadas -j ACCEPT
echo "Liberando tráfego"
iptables -A INPUT -i lo -j ACCEPT
iptables -A INPUT -i $iflocal -j ACCEPT
iptables -A FORWARD -i lo -j ACCEPT
iptables -A FORWARD -i $iflocal -j ACCEPT
echo "Tráfego liberado"
echo "Redirecionando tráfego para proxy transparente"
iptables -t nat -A PREROUTING -i $iflocal -p tcp --dport 80 -j REDIRECT --to-port 3128
iptables -t nat -A PREROUTING -i $iflocal -p udp --dport 80 -j REDIRECT --to-port 3128
echo "Tráfego redirecionado para proxy transparente"
}
parar(){
iptables -F
iptables -t nat -F
iptables -t mangle -F
iptables -X
iptables -t nat -X
iptables -t mangle -X
iptables -Z
iptables -t nat -Z
iptables -t mangle -Z
}
status(){
iptables -L -v -n
}
case "$1" in
"start") iniciar ;;
"stop") parar ;;
"restart") parar; iniciar ;;
"status") status;;
*) echo "Use os parâmetros start ou stop"
esac
Adapte de acordo à sua rede.
O script é salvo em /etc/init.d, dê permissão de execução com sudo chmod +x /etc/init.d/firewall e pode iniciar, reiniciar ou parar o firewall com o comando sudo service firewall action, onde "action" é a ação desejada (start, stop, restart, status), para carregar durante a inicialização, execute sudo update-rc.d firewall defaults, espero ter ajudado.