Nat+forward+Squid

1. Nat+forward+Squid

Suri Mukeba
kwami

(usa Debian)

Enviado em 25/05/2018 - 19:16h

Oi Linuxeiros,

Depois de já ter tentado de tudo (uff) para fazer com que a a rede A se comunicasse com a B, placas no mesmo servidor, não deu certo. Li de tudo, fiz de tudo, desde:
habilitar o fwd com /*/*/ip_fwd=1
chains de fwd de uma rede para outra
chains de pre e postrouting
Nada funcionou, inclusive seguindo passos de vídeos onde no vídeo funcionava e eu imitando na prática não funcionou, até parece bruxaria pessoal (rsrs).
Então optei uma uma solução que até aqui ia bem, o squid. Encaminhei as entradas 80 para a porta 3128 que responde pela placa de rede interna. Até aí tudo bem. O GRANDE PROBLEMA agora é o seguinte:

Certos programas de uma das estações (e ainda por cima a principal),não passam pelo squid. O próprio apt mesmo depois de configurar os Aquires no apt.conf, o export no /etc/profile e o resto no enviroment, downloads com o curl e Wget não funcionam, dá erro de resolução de nomes. pelo que pude notar, a conexão desses programas ao exterior fica requisitando na porta 3128 do servidor externo (rapid7.release:3128). Logo, é claro que por lá a porta deve ser a 21 ftp (penso eu).
O metasploit-framework também não sai da LAN


Solução galera???


  


2. Re: Nat+forward+Squid

Buckminster
Buckminster

(usa Debian)

Enviado em 25/05/2018 - 20:39h

1 - Tem DHCP nesse servidor?

2 - Se estiver usando o Iptables, posta aqui o arquivo.

3 - Erro de resolução de nomes geralmente é DNS.


3. Re: Nat+forward+Squid

Suri Mukeba
kwami

(usa Debian)

Enviado em 25/05/2018 - 22:18h

Buckminster escreveu:

1 - Tem DHCP nesse servidor?

2 - Se estiver usando o Iptables, posta aqui o arquivo.

3 - Erro de resolução de nomes geralmente é DNS.


Oi Buckminster,
1 - R: Tem DHCP sim.
3 - R: Mas isso não constituiria problema pois, se ao sair da LAN ele usa a máscara da WAN (com o "endereço" da -t nat) logo chega ao roteador WAN do provedor de internet e o mesmo é um servidor DNS também. Logo, resolução de nomes não seria o x da questão (penso eu).

2 - R:#!/bin/bash

### BEGIN INIT INFO
# Provides: firewall
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: Firewall
# Description: Enable service provided by daemon.
### END INIT INFO


#--------------------
# FIREWALL IPTABLES #
#--------------------


# CARREGANDO MODULOS NO KERNEL
modprobe ip_conntrack_ftp
modprobe ip_conntrack
modprobe ip_nat_ftp
modprobe ip_tables
modprobe ipt_MARK
modprobe ipt_MASQUERADE
modprobe ipt_REJECT
modprobe ipt_TCPMSS
modprobe ipt_TOS
modprobe ipt_limit
modprobe ipt_mac
modprobe ipt_multiport
modprobe ipt_owner
modprobe ipt_LOG
modprobe ipt_REDIRECT
modprobe ipt_state
modprobe iptable_nat
modprobe iptable_mangle
modprobe iptable_filter


# VARIAVEIS DE REDE
ifinternet=eno1
iflocal=enp3s2
lan=192.168.10.0/24
wan=192.168.1.0/24
wan_gw=192.168.1.1


# CASE PARA INICIAR FIREWALL
IniciarFirewall () {
# LIMPANDO REGRAS
iptables -F
iptables -F -t filter
iptables -F -t mangle
iptables -F -t nat
iptables -Z
#Ativa comutação entre interfaces
echo 1 > /proc/sys/net/ipv4/ip_forward
#firewall - regras padrão
iptables -P INPUT DROP
iptables -P FORWARD DROP
iptables -P OUTPUT ACCEPT
#Filter
#Drop Invalid
iptables -A INPUT -m state --state INVALID -j LOG --log-prefix "Firewall - Drop INVALID"
iptables -A INPUT -m state --state INVALID -j DROP
#Accept Valid
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
#Libera Serviços que estarao ativos no server
#SSH
iptables -A INPUT -p tcp --dport 22 -m state --state NEW --syn -j ACCEPT
# Squid
#Abrindo a porta do Squid(3128)
iptables -A INPUT -p tcp --dport 3128 -j ACCEPT
# redirecionando requisições de todas as portas aceites para o squid
iptables -t nat -A PREROUTING -i $ifinternet -p tcp -m multiport --dport 80,21,22,443,110,8080 -j REDIRECT --to-port 3128
iptables -A INPUT -i $iflocal -p tcp --dport 80 -m state --state NEW --syn -j ACCEPT #em dúvida, parece que não é necessário
# Samba
iptables -A INPUT -p udp --dport 137 -j ACCEPT
iptables -A INPUT -p udp --dport 138 -j ACCEPT
iptables -A INPUT -p tcp --dport 139 -j ACCEPT
#Libera interface de loopback
iptables -A INPUT -i lo -j ACCEPT
#Libera ping - Local
iptables -A INPUT -p icmp --icmp-type echo-request -i $iflocal -j ACCEPT
#Loga restante
iptables -A INPUT ! -i lo -j LOG --log-prefix "Firewall - Drop INPUT "
#Forward
#Drop invalid
iptables -A FORWARD -m state --state INVALID -j LOG --log-prefix "Firewall - INVALID Forward "
iptables -A FORWARD -m state --state INVALID -j DROP
#Accept Valid
iptables -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT
#Localnet - Spoofed
iptables -A FORWARD -i $iflocal ! -s $lan -j LOG --log-prefix "Firewlal - Drop Spoofed Forward "
iptables -A FORWARD -i $iflocal ! -s $lan -j DROP
#Localnet
iptables -A FORWARD -i $ifinternet -s $lan -j ACCEPT
iptables -A FORWARD -i $ifinternet -d $lan -j ACCEPT
#Log
iptables -A FORWARD ! -i lo -j LOG --log-prefix "Firewall - Drop Forward "
#Output
#Drop invalid
iptables -A OUTPUT -m state --state INVALID -j LOG --log-prefix "Drop Output - INVALID "
iptables -A OUTPUT -m state --state INVALID -j DROP

}


# CASE PARA PARAR O FIREWALL
PararFirewall () {


# LIMPANDO REGRAS
iptables -F
iptables -F -t filter
iptables -F -t mangle
iptables -F -t nat
iptables -Z


# POLITICA PADRAO COMO ACCEPT
iptables -P INPUT ACCEPT
iptables -P OUTPUT ACCEPT
iptables -P FORWARD ACCEPT


#----------------
# REGRAS DE NAT E FORWARD ENTRE AS PLACAS#
#----------------
# Comutação de pacotes
iptables -A FORWARD -d $wan -s $lan -j ACCEPT
iptables -A FORWARD -s $lan -d $wan -j ACCEPT
# Hosts que não passam pelo proxy
#iptables -t nat -N NOREDIRECT
#iptables -A FORWARD -i $iflocal -s 192.168.10.100 -j ACCEPT
#iptables -t nat -A PREROUTING -i $iflocal -s 192.168.10.100 -j NOREDIRECT
#iptables -t nat -A NOREDIRECT -j ACCEPT



#Masquerading
iptables -t nat -A POSTROUTING -o $ifinternet -j MASQUERADE

}


case $1 in

start) echo "FIREWALL INICIADO.......[OK]"
IniciarFirewall
;;

stop) echo "FIREWALL PARADO..........[OK]"
PararFirewall
;;

restart) echo "FIREWALL REINICIADO...[OK]"
PararFirewall
IniciarFirewall
;;

esac

#---------------
# FIM FIREWALL #
#---------------





4. Re: Nat+forward+Squid

Suri Mukeba
kwami

(usa Debian)

Enviado em 26/05/2018 - 22:58h

Depois de muitas análises cheguei a seguinte conclusão:

O Wget e o Curl fazem a requisição pela porta do squid (3128) obviamente que o ISP não tem esta porta aberta, logo não há conexão. A solução que quero tentar é a seguinte:
Activar no postrouting o redirecionamento de portas. Ou seja, a placa interna manda para a placa externa a requisição na porta 3128. Por sua vez a placa externa redireciona para o roteador na porta 80 ou 8080 (porta que estão abertas no roteador)

Alguém tem alguma noção de como fazer isso??


5. Re: Nat+forward+Squid

Buckminster
Buckminster

(usa Debian)

Enviado em 31/05/2018 - 00:07h

Não sei quais as duas redes que tu comunicar, mas tente as regras abaixo na seguinte posição:

#Localnet - Spoofed
iptables -A FORWARD -i $iflocal ! -s $lan -j LOG --log-prefix "Firewlal - Drop Spoofed Forward "
iptables -A FORWARD -i $iflocal ! -s $lan -j DROP
#Comunicação entre redes
iptables -A FORWARD -p ALL -s $REDEA -d $REDEB -j ACCEPT <<< acrescente
iptables -A FORWARD -p ALL -s $REDEB -d $REDEA -j ACCEPT <<< acrescente

Substitua redea e redeb pelas tuas redes:
# VARIAVEIS DE REDE
ifinternet=eno1
iflocal=enp3s2
lan=192.168.10.0/24
wan=192.168.1.0/24
wan_gw=192.168.1.1

Wget com Squid:
https://www.cyberciti.biz/faq/how-do-i-make-wget-work-with-squid/

Curl com Squid:
https://www.systutorials.com/241494/how-to-make-curl-request-pass-the-squid-proxy/






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts