Acesso WEB interno

Iniciado por lucascatani, 22 de Maio de 2012, 11:11

tópico anterior - próximo tópico

zekkerj

Não é o squid.

É a máquina onde o squid roda.

Quando o acesso não passa pelo squid, a máquina bate no IP público, é redirecionada (PREROUTING) e encaminhada (FORWARD) para o destino, e você precisa fazer SNAT/MASQUERADE (POSTROUTING) pra que a resposta volte ao firewall, e os NATs sejam desfeitos.

Quando o acesso passa pelo squid, vc só precisa fazer o redirecionamento (PREROUTING), e o pacote vai sair direto pra máquina de destino (OUTPUT). Ao retornar, o NAT deve ser desfeito automaticamente. No máximo vc tem que liberar o recebimento de conexões abertas (ESTABLISHED/RELATED), na cadeia INPUT.
Pesquise antes de perguntar, sua dúvida pode já ter sido respondida.
Não respondo dúvidas por MP, coloque sua dúvida no fórum onde ela pode ser pesquisada pelos seus colegas!
Não venha ao fórum apenas para perguntar. Se você sabe a resposta de um problema, porque não ajudar seu colega? ;D

lucascatani

Citação de: zekkerj online 29 de Maio de 2012, 19:48
Não é o squid.

É a máquina onde o squid roda.

Quando o acesso não passa pelo squid, a máquina bate no IP público, é redirecionada (PREROUTING) e encaminhada (FORWARD) para o destino, e você precisa fazer SNAT/MASQUERADE (POSTROUTING) pra que a resposta volte ao firewall, e os NATs sejam desfeitos.

Quando o acesso passa pelo squid, vc só precisa fazer o redirecionamento (PREROUTING), e o pacote vai sair direto pra máquina de destino (OUTPUT). Ao retornar, o NAT deve ser desfeito automaticamente. No máximo vc tem que liberar o recebimento de conexões abertas (ESTABLISHED/RELATED), na cadeia INPUT.

Neste caso o firewall e o squid são a mesma máquina.. agora me perdi mais ainda..

zekkerj

É que o teu firewall tá complexo demais, pro nível de experiência que vc tem agora. Cai numa situação dessas, vc não consegue identificar o problema.
Pesquise antes de perguntar, sua dúvida pode já ter sido respondida.
Não respondo dúvidas por MP, coloque sua dúvida no fórum onde ela pode ser pesquisada pelos seus colegas!
Não venha ao fórum apenas para perguntar. Se você sabe a resposta de um problema, porque não ajudar seu colega? ;D

lucascatani

Citação de: zekkerj online 29 de Maio de 2012, 20:58
É que o teu firewall tá complexo demais, pro nível de experiência que vc tem agora. Cai numa situação dessas, vc não consegue identificar o problema.

Pois é..tem razão.. mas tenho q resolver.. Vou postar meu firewall aqui, se puder me quebrar esse galho. Firewall e squid na mesma máquina. Fora do squid funciona. Com squid não. Uso o WPAD para definir o proxy.


#!/bin/bash

INTERNET="eth0"
REDELOCAL="eth1"

modprobe ip_tables
modprobe iptable_nat

# Politica padrao
iptables -P INPUT DROP
iptables -P OUTPUT ACCEPT
iptables -P FORWARD DROP


# LOG
iptables -A INPUT -j LOG --log-prefix INPUT
iptables -A OUTPUT -j LOG --log-prefix OUTPUT
iptables -A FORWARD -j LOG --log-prefix FORWARD

# Politicas
iptables -A OUTPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A INPUT -i lo -j ACCEPT
iptables -A OUTPUT -o lo -j ACCEPT

# Redirecionando webgiz
# Redirecionando o WEB para internet
iptables -t nat -A PREROUTING -d 189.11.189.11 -p tcp -m tcp --dport 8181 -j DNAT --to-destination 192.168.0.214:8181
# Redirecionando WEB Interno
iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -d 192.168.0.214 -j MASQUERADE

###################### FORWARD ##############################

# Liberando o DNS
iptables -A FORWARD -i $REDELOCAL -o $INTERNET -p udp -m multiport --dports 53,5353 -j ACCEPT

# Liberando o ssh
iptables -A FORWARD -i $REDELOCAL -o $INTERNET -p tcp --dport 22 -j ACCEPT

# Liberando o Squid
iptables -A FORWARD -i $REDELOCAL -o $INTERNET -p tcp --dport 3128 -j ACCEPT

# Liberando POP E SMTP - SSL Também
iptables -A FORWARD -i $REDELOCAL -o $INTERNET -p tcp -m multiport --dports 25,110,465,995,587 -j ACCEPT

# Liberando o FTP
iptables -A FORWARD -i $REDELOCAL -o $INTERNET -p tcp --dport 21 -j ACCEPT

# Liberando Samba
iptables -A FORWARD -i $REDELOCAL -o $INTERNET -p tcp -m multiport --dports 139,445 -j ACCEPT
iptables -A FORWARD -i $REDELOCAL -o $INTERNET -p udp -m multiport --dports 137,138 -j ACCEPT

# Liberando o LDAP
iptables -A FORWARD -i $REDELOCAL -o $INTERNET -p tcp --dport 389 -j ACCEPT
iptables -A FORWARD -i $REDELOCAL -o $INTERNET -p udp --dport 389 -j ACCEPT

# Liberando o Apache
iptables -A FORWARD -i $INTERNET -o $REDELOCAL -p tcp --dport 8181 -j ACCEPT


iptables -A FORWARD -i $REDELOCAL -o $INTERNET -p tcp --dport 3306 -j ACCEPT

# Liberando SNMP
iptables -A FORWARD -i $REDELOCAL -p udp --dport 161 -j ACCEPT

# Liberando o msn
iptables -A FORWARD -i $REDELOCAL -p tcp --dport 1863 -j ACCEPT

###################### INPUT ################################
# Liberando Samba
iptables -A INPUT -i $REDELOCAL -p tcp -m multiport --dports 139,445 -j ACCEPT
iptables -A INPUT -i $REDELOCAL -p udp -m multiport --dports 137,138 -j ACCEPT

# Liberando ssh
iptables -A INPUT -i $REDELOCAL -p tcp --dport 22 -j ACCEPT

# Liberando o Squid
iptables -A INPUT -i $REDELOCAL -p tcp --dport 3128 -j ACCEPT

# Liberando o Apache
iptables -A INPUT -i $REDELOCAL -p tcp --dport 80 -j ACCEPT

# Liberando o DNS
iptables -A INPUT -i $REDELOCAL -p tcp --dport 53 -j ACCEPT
iptables -A INPUT -i $REDELOCAL -p udp --dport 53 -j ACCEPT

# Liberando o DHCP
iptables -A INPUT -i $REDELOCAL -p udp --dport 67 -j ACCEPT


###################### OUTPUT ################################

# Liberando o Squid
iptables -A OUTPUT -p tcp --dport 3128 -j ACCEPT

# Liberando o Dns - Necessario para o Squid
iptables -A OUTPUT -p udp -m multiport --dports 53,5353 -j ACCEPT
iptables -A OUTPUT -p tcp -m multiport --dports 53,5353 -j ACCEPT

# Liberando o Samba
iptables -A OUTPUT -p tcp -m multiport --dports 139,445 -j ACCEPT
iptables -A OUTPUT -p udp -m multiport --dports 137,138 -j ACCEPT

# Liberando o RNDC
iptables -A OUTPUT -p tcp --dport 953 -j ACCEPT

# Liberando o Apache
iptables -A OUTPUT -p tcp --dport 80 -j ACCEPT

# Liberando o DHCP
iptables -A OUTPUT -p udp --dport 68 -j ACCEPT
iptables -A OUTPUT -p udp --dport 67 -j ACCEPT

# Compartilhando a internet com a REDELOCAL
iptables -t nat -A POSTROUTING -o $INTERNET -j MASQUERADE
echo 1 > /proc/sys/net/ipv4/ip_forward

################### Protegendo contra ataques ###############

# Syn Cookyes
echo "1" > /proc/sys/net/ipv4/tcp_syncookies

# ICMP Broadcasts
# echo "1" > /proc/sys/net/ipv4/icmp_echo_ignore_all

# Mensagens falsas de icmp_error responses
echo "1" > /proc/sys/net/ipv4/icmp_ignore_bogus_error_responses

# Anti-spoofings
iptables -A INPUT -j DROP -s 10.0.0.0/8 -i $INTERNET
iptables -A INPUT -j DROP -s 127.0.0.0/8 -i $INTERNET
iptables -A INPUT -j DROP -s 172.16.0.0/12 -i $INTERNET
iptables -A INPUT -j DROP -s 192.168.1.0/16 -i $INTERNET

# Syn Flood via modulo limit
# iptables -A FORWARD -p tcp --syn -m limit --limit 100/s -j ACCEPT


zekkerj

Citar# LOG
iptables -A INPUT -j LOG --log-prefix INPUT
iptables -A OUTPUT -j LOG --log-prefix OUTPUT
iptables -A FORWARD -j LOG --log-prefix FORWARD
Cara, não faz isso não... você está logando simplesmente TUDO que passa pela tua máquina. Isso vai gastar CPU desesperadamente, vai gastar disco desesperadamente, e não vai te servir pra absolutamente nada.

Quer fazer log? Faça só dos pacotes descartados, e coloque um limite no que loga, no máximo 10 pacotes/segundo.

Também observei que vc não liberou conexões pra porta do servidor web na cadeia OUTPUT, só na cadeia FORWARD.
Pesquise antes de perguntar, sua dúvida pode já ter sido respondida.
Não respondo dúvidas por MP, coloque sua dúvida no fórum onde ela pode ser pesquisada pelos seus colegas!
Não venha ao fórum apenas para perguntar. Se você sabe a resposta de um problema, porque não ajudar seu colega? ;D

lucascatani

#50
Citação de: zekkerj online 29 de Maio de 2012, 22:40
Citar# LOG
iptables -A INPUT -j LOG --log-prefix INPUT
iptables -A OUTPUT -j LOG --log-prefix OUTPUT
iptables -A FORWARD -j LOG --log-prefix FORWARD
Cara, não faz isso não... você está logando simplesmente TUDO que passa pela tua máquina. Isso vai gastar CPU desesperadamente, vai gastar disco desesperadamente, e não vai te servir pra absolutamente nada.

Quer fazer log? Faça só dos pacotes descartados, e coloque um limite no que loga, no máximo 10 pacotes/segundo.

Também observei que vc não liberou conexões pra porta do servidor web na cadeia OUTPUT, só na cadeia FORWARD.

Minha poliítica de OUTPUT é ACCEPT... tirei as regras de LOG. Próxima dica :-)

lucascatani

TEnho um dns interno, se der para fazer por dns, não me importo