edgarrodriguesde
(usa Suse)
Enviado em 25/03/2014 - 09:22h
Bom dia sousacarlos, me desculpe na falta de informações. Meu cenário é o seguinte
Minha rede interna hoje de range 172.16.8.0/255.255.248.0, possui um firewall e gateway já funcionando.
O gateway é o 172.16.8.1 e nele já roda um squid autenticado.
Preciso criar uma rede para acesso somente a internet Wirelles. Para isso criei um servidor rodando OpenSuse com duas placas de rede: Rede interna na eth0: 172.16.8.82 e Rede externa na eth1: 192.168.50.0/255.255.255.0.
Nesta máquina instalei o squid e adicionei um script de inicialização para o iptables. A entrega de endereços DHCP está sendo gerenciada pelo accesspoint.
Segue Script Firewall:
#!/bin/sh
#Internet
INET_IP="172.16.8.82"
INET_IFACE="eth0"
INET_BROADCAST="172.16.8.255"
# LAN
WL_IP="192.168.50.1"
WL_IP_RANGE="192.168.50.0/24"
WL_IFACE="eth1"
# localhost
LO_IFACE="lo"
LO_IP="127.0.0.1"
# Pacotes TCP - Entrando
TCP_IN="domain,3128"
# Pacotes UDP - Portas RPC
UDP_RPC="135:139"
TCP_RPC="135:139"
# Pacotes UDP - Entrando e Saindo
UDP_INOUT="domain"
#IPT="/usr/sbin/iptables"
IPT="/sbin/iptables"
/sbin/depmod -a
/sbin/modprobe ip_tables
/sbin/modprobe ip_conntrack
/sbin/modprobe iptable_filter
/sbin/modprobe iptable_mangle
/sbin/modprobe iptable_nat
/sbin/modprobe ipt_LOG
/sbin/modprobe ipt_limit
/sbin/modprobe ipt_state
/sbin/modprobe ipt_REJECT
/sbin/modprobe ip_conntrack_ftp
/sbin/modprobe ip_conntrack_irc
/sbin/modprobe ip_nat_ftp
/sbin/modprobe ip_nat_irc
# Limpeza e Exclusao de regras e chains
$IPT -F
$IPT -X
$IPT -t nat -F
$IPT -t nat -X
$IPT -t mangle -F
$IPT -t mangle -X
$IPT -t filter -F
$IPT -t filter -X
# Ativacao do redirecionamento de pacotes
echo "1" > /proc/sys/net/ipv4/ip_forward
# Protecao contra IP Spoofing
for i in /proc/sys/net/ipv4/conf/*/rp_filter;
do echo 1 >$i
done
# Numero maximo de conexoes simultaneas
echo "512" > /proc/sys/net/ipv4/ip_conntrack_max
$IPT -N LOG_DROP
$IPT -A LOG_DROP -j LOG --log-prefix "Firewall: "
$IPT -A LOG_DROP -j DROP
# Inspecao em pacotes TCP (malformados, mal-intencionados)
$IPT -N pct_tcp_mformados
# Protecao contra IP Spoofing - Sequence Number Prediction
$IPT -A pct_tcp_mformados -p tcp --tcp-flags SYN,ACK SYN,ACK \
-m state --state NEW -j REJECT \
--reject-with tcp-reset
# Tentativa de uma nova conexao numa conexao ja estabelecida
#$IPT -A pct_tcp_mformados -p tcp ! --syn -m state --state NEW -j LOG \
# --log-prefix "Pct Novo - sem SYN "
$IPT -A pct_tcp_mformados -p tcp ! --syn -m state --state NEW -j DROP
# Chain INPUT
$IPT -P INPUT DROP
$IPT -A INPUT -p tcp -i $INET_IFACE -m state --state ESTABLISHED,RELATED -j ACCEPT
#$IPT -A INPUT -p tcp -i $INET_IFACE -m state --state ! ESTABLISHED,RELATED \
# -j LOG --log-prefix "Tentativa de Invasao"
# Excessos de broadcasts nas portas RPC
$IPT -A INPUT -p tcp --dport $TCP_RPC -j DROP
$IPT -A INPUT -p udp --dport $UDP_RPC -j DROP
$IPT -A INPUT -p tcp -j pct_tcp_mformados
#$IPT -A INPUT -p tcp -i $INET_IFACE --syn -m multiport --dports $TCP_IN -j ACCEPT
#$IPT -A INPUT -p tcp -i $LAN_IFACE --syn -m multiport --dports $TCP_IN -j ACCEPT
$IPT -A INPUT -p tcp -i $INET_IFACE --syn --dport ssh -j ACCEPT
$IPT -A INPUT -p tcp -i $WL_IFACE -s $WL_IP_RANGE -j ACCEPT
$IPT -A INPUT -p all -s $LO_IP -j ACCEPT
# Bloquear Ataques DoS na chain INPUT
$IPT -A INPUT -p icmp -i $INET_IFACE -m limit --limit 1/s -j ACCEPT
$IPT -A INPUT -p udp --dport 53 -j ACCEPT
$IPT -A INPUT -p udp --sport 53 -j ACCEPT
$IPT -A INPUT -p tcp --dport 80 -j ACCEPT
$IPT -A INPUT -p tcp --dport 443 -j ACCEPT
$IPT -A INPUT -p tcp -d 0/0 -s 0/0 --dport 5666 -j ACCEPT # Porta NRPE - Nagios
# Criar LOG e DROPar tudo que nao foi estabelecido
#$IPT -A INPUT -j LOG_DROP
# Chain FORWARD
$IPT -P FORWARD DROP
$IPT -A FORWARD -p tcp -m state --state ESTABLISHED,RELATED -j ACCEPT
$IPT -A FORWARD -p tcp -j pct_tcp_mformados
$IPT -A FORWARD -p tcp -s $WL_IP_RANGE -d 172.16.8.1 -j ACCEPT
$IPT -A FORWARD -p udp -s $WL_IP_RANGE -d 172.16.8.1 -j ACCEPT
$IPT -A FORWARD -p tcp -s $WL_IP_RANGE -d 172.16.8.47 -j ACCEPT
$IPT -A FORWARD -p tcp -s $WL_IP_RANGE -d 172.16.8.47 -j ACCEPT
$IPT -A FORWARD -p tcp -s $WL_IP_RANGE -d 172.16.8.43 --dport 8082 -j ACCEPT
$IPT -A FORWARD -p tcp -s $WL_IP_RANGE -d webmail.uniaoatacado.com.br --dport 8080 -j ACCEPT
$IPT -A FORWARD -p tcp -s $WL_IP_RANGE -d 172.16.8.0/21 -j ACCEPT #DROP
$IPT -A FORWARD -p udp -s $WL_IP_RANGE -d 172.16.8.0/21 -j ACCEPT #DROP
$IPT -A FORWARD -p tcp -s $WL_IP_RANGE -d 0/0 -j ACCEPT
$IPT -A FORWARD -p udp -s $WL_IP_RANGE -d 0/0 -j ACCEPT
# Libera acesso VPN
$IPT -A INPUT -p TCP --dport 1723 -j ACCEPT
$IPT -A OUTPUT -p TCP --dport 1723 -j ACCEPT
$IPT -A FORWARD -p TCP -m multiport --dport 1723,1701 -j ACCEPT
$IPT -A FORWARD -p UDP -m multiport --dport 1723,1701 -j ACCEPT
$IPT -A INPUT -p 47 -j ACCEPT
$IPT -A OUTPUT -p 47 -j ACCEPT
$IPT -A FORWARD -p 47 -j ACCEPT
# Enxergar a rede 172.16.<F3>
$IPT -A FORWARD -i eth1 -s 192.168.50.0/24 -d 172.16.8.0/21 -j ACCEPT
$IPT -A INPUT -p tcp --dport 2084 -j ACCEPT
# Bloquear Ataques DoS na chain FORWARD
$IPT -A FORWARD -p icmp -i $INET_IFACE -m limit --limit 1/s -j ACCEPT
$IPT -A FORWARD -p icmp -i $WL_IFACE -m limit --limit 1/s -j ACCEPT
$IPT -P OUTPUT ACCEPT
# Criar LOG e DROPar tudo que nao foi estabelecido
#$IPT -A FORWARD -j LOG_DROP
# Nat Table
$IPT -t nat -P PREROUTING ACCEPT
$IPT -t nat -A PREROUTING -i $WL_IFACE -p tcp --dport 80 -j REDIRECT --to-port 3128
$IPT -t nat -P POSTROUTING ACCEPT
$IPT -t nat -A POSTROUTING -o $INET_IFACE -j SNAT --to-source $INET_IP
# Mangle Table
$IPT -t mangle -P PREROUTING ACCEPT
$IPT -t mangle -P OUTPUT ACCEPT
Seque Squid.conf :
http_port 3128 transparent
visible_hostname WORK
acl all src 0.0.0.0/0.0.0.0
acl manager proto cache_object
acl localhost src 127.0.0.1/255.255.255.255
acl SSL_ports port 443 563
acl safe_ports port 21 22 23 80 443 563 210 280 480 901 1025-65535
acl purge method PURGE
acl CONNECT method CONNECT
http_access allow manager localhost
http_access deny manager
http_access allow purge localhost
http_access deny purge
http_access deny !Safe_ports
http_access deny CONNECT !SSL_ports
acl redelocal src 192.168.50.0/24
http_access allow localhost
http_access allow redelocal
http_access deny all
Com estas configurações não esta redirecionando a porta 80 para a 3128. Quando coloco manualmente o proxy no navegador funciona. O que pode ser?