Bloquear acesso a outra rede [RESOLVIDO]

1. Bloquear acesso a outra rede [RESOLVIDO]

Gustavo Henrique
gustavohsr

(usa Debian)

Enviado em 24/01/2011 - 20:28h

Olá a todos!

Minha estrutura:

# GATEWAY - DEBIAN
eth0 - 192.168.192.1 - Rede Interna
eth1 - 200.200.200.200 - Internet
eth2 - 10.10.10.1 - Ligada diretamente a um roteador Wireless com IP 10.10.10.2

Apesar de bloquear a comunicação entre as interfaces ETH0 e ETH2 com a seguinte regra:

$IPT -A FORWARD -i eth0 -o eth2 -j DROP
$IPT -A FORWARD -i eth2 -o eth0 -j DROP

AINDA ASSIM, consigo acessar do meu PC (192.168.192.100) o webserver do Router Wireless (10.10.10.2).

Sinceramente, já verifiquei todo o meu script e não percebi nada ainda...

Segue meu FIREWALL:

#!/bin/bash
#
# Shell Script - Firewall
# =======================
# Autor:- CESAR AUGUSTUS SILVA
# Email:- cesaraugustussilva@linuxmail.org
#

# IP da Rede
NETWORK=192.168.100.0/24
NETWORK_2=10.10.10.0/24

# Interface da Rede Local - LAN
ILAN=eth0
ILAN_2=eth2

# Interface da Rede Externa - Internet
INET=eth1

IPT=/sbin/iptables
if [ ! -x $IPT ]; then
if [ -e $IPT ]; then
echo "O programa 'iptables' está sem permissão de execução"
else
echo "O programa 'iptables' não está instalado atualmente. Você pode instalá-lo digitando:"
echo "sudo apt-get install iptables"
fi
exit 0
fi


CLEAN_RULES () {

# Removendo regras
$IPT -F
$IPT -t nat -F
$IPT -t mangle -F

# Apagando chains
$IPT -X
$IPT -t nat -X
$IPT -t mangle -X

# Zerando contadores
$IPT -Z
$IPT -t nat -Z
$IPT -t mangle -Z
}

REDIRECT () {

# Redirecionamento
$IPT -t nat -A PREROUTING -i $ILAN -p tcp --dport 80 -j REDIRECT --to-port 3128
$IPT -t nat -A PREROUTING -i $ILAN_2 -p tcp --dport 80 -j REDIRECT --to-port 3128
}

SHARE_INTERNET () {

#Mascaramento
$IPT -t nat -A POSTROUTING -o $INET -s $NETWORK -j MASQUERADE
$IPT -t nat -A POSTROUTING -o $INET -s $NETWORK_2 -j MASQUERADE

# Ativando o redirecionamento de pacotes
echo 1 > /proc/sys/net/ipv4/ip_forward
}


SECURITY () {

# Proteção para SYN Flood
echo 1 > /proc/sys/net/ipv4/tcp_syncookies

# Rejeitar requisição de ICMP Echo destinado a Broadcasts e Multicasts
echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_broadcasts

# Ignorar Mensagens Falsas de icmp_error_responses
echo 1 > /proc/sys/net/ipv4/icmp_ignore_bogus_error_responses

for i in /proc/sys/net/ipv4/conf/*; do

# Não Redirecionar Mensagens ICMP
echo 0 > $i/accept_redirects

# Proteção a Ataques IP Spoofing
echo 0 > $i/accept_source_route

# O kernel decide se envia resposta pelo mesmo endereço ou não.
echo 1 > $i/arp_filter

# Permitir que Pacotes Forjados sejam logados pelo próprio kernel
echo 1 > $i/log_martians

# Verificar Endereço de Origem do Pacote (Proteção a Ataques IP Spoofing)
echo 1 > $i/rp_filter
done
}



LOG () {

$IPT -A INPUT -i $INET -p tcp --dport 135 -j DROP
$IPT -A INPUT -p tcp -m multiport ! --dports 0:1056 -j DROP
$IPT -A INPUT -p udp -j DROP
$IPT -A INPUT -p icmp -j DROP
$IPT -A INPUT -m limit --limit 3/m --limit-burst 3 -j LOG --log-prefix "LOG-FW: "

}


SERVER_RULES () {

# Apache - Servidor Web
#$IPT -A INPUT -p tcp -m multiport --dports 80,443 -j ACCEPT

# Apache TomCat - Servidor Web
#$IPT -A INPUT -p tcp --dport 8080 -j ACCEPT

# Bind9 - Servidor DNS
$IPT -A INPUT -p udp --dport 53 -j ACCEPT

# DanGuardian - Servidor Proxy
#$IPT -A INPUT -i $ILAN -p tcp --dport 8080 -j ACCEPT

# DHCP - Servidor DHCP
$IPT -A INPUT -i $ILAN -p udp --sport 68 --dport 67 -j ACCEPT
$IPT -A INPUT -i $ILAN_2 -p udp --sport 68 --dport 67 -j ACCEPT

# IPP - Protocolo de Impressão na Internet
#$IPT -A INPUT -i $ILAN -p tcp --dport 631 -j ACCEPT
#$IPT -A INPUT -i $ILAN -p udp -m multiport --dports 138,631 -j ACCEPT

# NFS - Servidor NFS
#$IPT -A INPUT -p tcp -m multiport --dports 111,2049,51049 -j ACCEPT
#$IPT -A INPUT -p udp -m multiport --dports 111,49176 -j ACCEPT

# ProFTP - Servidor FTP
#$IPT -A INPUT -i $ILAN -p tcp --dport 21 -j ACCEPT
#$IPT -A INPUT -i $ILAN -p tcp -m multiport --dports 49152:49162 -j ACCEPT

# Postfix - Servidor de E-mail
#$IPT -A INPUT -i $ILAN -p tcp -m multiport --dports 25,110 -j ACCEPT
#$IPT -A INPUT -i $ILAN -p tcp -m multiport --dports 465,995 -j ACCEPT

# PostgreSQL - Servidor Postgresql
#$IPT -A INPUT -i $ILAN -p tcp --dport 5432 -j ACCEPT

# Samba - Serviços de Diretório da Microsoft
#$IPT -A INPUT -i $ILAN -p tcp -m multiport --dports 445,139 -j ACCEPT
#$IPT -A INPUT -i $ILAN -p udp -m multiport --dports 137,138 -j ACCEPT

# Squid - Servidor Proxy
$IPT -A INPUT -i $ILAN -p tcp --dport 3128 -j ACCEPT
$IPT -A INPUT -i $ILAN_2 -p tcp --dport 3128 -j ACCEPT

# SSH - Servidor SSH
$IPT -A INPUT -p tcp --dport 2222 -m state --state NEW -m recent --update --seconds 300 --hitcount 20 -j DROP
$IPT -A INPUT -p tcp --dport 2222 -m state --state NEW -m recent --set
$IPT -A INPUT -p tcp --dport 2222 -j ACCEPT

# TFTP/uDHCP - Servidor LTSP
#$IPT -A INPUT -i $ILAN -p udp --dport 69 -j ACCEPT
#$IPT -A INPUT -i $ILAN -p tcp --dport 2000 -j ACCEPT
#$IPT -A INPUT -i $ILAN -p udp --dport 514 -j ACCEPT

# VNC - Servidor de Acesso Remoto
#$IPT -A INPUT -p tcp --dport 5900 -j ACCEPT

# Webmin - Gerenciador Web de Servidor
#$IPT -A INPUT -i $ILAN -p tcp --dport 10000 -j ACCEPT

}



SERVICE_RULES () {

# DNS - Serviço de Nomes de Dominios
$IPT -A FORWARD -o $INET -p tcp -m multiport --dports 53,5353 -j ACCEPT
$IPT -A FORWARD -o $INET -p udp -m multiport --dports 53,5353 -j ACCEPT

# FTP - Protocolo de Transferência de Arquivo
#$IPT -A FORWARD -o $INET -p tcp --dport 21 -j ACCEPT

# HTTP - Protocolo de Transferência de Hypertext
#IPT -A FORWARD -o $INET -p tcp -m multiport --dports 80,8080 -j ACCEPT

# HTTPS - Protocolo de Transferência de Hypertext Seguro
$IPT -A FORWARD -o $INET -p tcp --dport 443 -j ACCEPT

# MSNMS - Serviço de Mensageiro de Rede da Microsoft
$IPT -A FORWARD -o $INET -p tcp -m multiport --dports 1863,7001 -j ACCEPT
$IPT -A FORWARD -o $INET -p udp --dport 7001 -j ACCEPT

# NTP - Protocolo para sincronização dos relógios
$IPT -A FORWARD -o $INET -p udp --dport 123 -j ACCEPT

# Ping
$IPT -A INPUT -i $ILAN -p icmp --icmp-type 8 -j ACCEPT
$IPT -A INPUT -i $ILAN_2 -p icmp --icmp-type 8 -j ACCEPT
$IPT -A FORWARD -o $INET -p icmp --icmp-type 8 -j ACCEPT

# POP3 - Protocolo de Correio
#$IPT -A FORWARD -o $INET -p tcp --dport 110 -j ACCEPT

# POP3S - Protocolo de Correio Seguro
#$IPT -A FORWARD -o $INET -p tcp --dport 995 -j ACCEPT

# SSDP - Protocolo para Descoberta de Serviços Simples
#$IPT -A INPUT -i $ILAN -p udp --dport 1900 -j ACCEPT

# SSH - Shell Seguro
$IPT -A FORWARD -o $INET -p tcp --dport 2222 -j ACCEPT

# SMTP - Protocolo Simples para Transferência de Correio
#$IPT -A FORWARD -o $INET -p tcp --dport 25 -j ACCEPT

# SSMTP - Protocolo Simples para Transferência de Correio Seguro
#$IPT -A FORWARD -o $INET -p tcp --dport 465 -j ACCEPT

# TELNET
#$IPT -A FORWARD -o $ILAN --dport 23 -j ACCEPT

# VNC - Computação em Rede Virtual
#$IPT -A FORWARD -o $ILAN -p tcp --dport 5900 -j ACCEPT

# XMPP - Protocolo de Presença e Mensagens Extensiva
#$IPT -A FORWARD -o $INET -p tcp --dport 5222 -j ACCEPT

# WIRELESS - Aceita trafego entre a rede Wireless e com fio
$IPT -A FORWARD -i $ILAN -o $ILAN_2 -j DROP
$IPT -A FORWARD -i $ILAN_2 -o $ILAN -j DROP
$IPT -A FORWARD -s $NETWORK -d $NETWORK_2 -j DROP
$IPT -A FORWARD -s $NETWORK_2 -d $NETWORK -j DROP

# Libera a porta 554 e rádio UOL para Windows media player e gxine 0.5.1
#iptables -A FORWARD -s 192.168.100.0/24 -p tcp --dport 554 -j ACCEPT
#iptables -A FORWARD -d 192.168.100.0/24 -p udp --sport 554 -j ACCEPT
#iptables -t nat -I PREROUTING -d app.radio.musica.uol.com.br -j ACCEPT
#iptables -t nat -I PREROUTING -d radio.musica.uol.com.br -j ACCEPT


}


ENABLE_FW () {

# Removendo regras, apagando chains e zerando contadores
CLEAN_RULES

# Política
$IPT -P INPUT DROP
$IPT -P OUTPUT ACCEPT
$IPT -P FORWARD DROP

# Adicionando redirecionamentos
REDIRECT

# Compartilhando a Internet
SHARE_INTERNET

# Atribuindo segurança
SECURITY

# Adicionando regras p/ Servidores
SERVER_RULES

# Adicionando regras p/ Serviços
SERVICE_RULES

#ANTI_TROJAN
ANTI_TROJAN

# Manter Conexões Estabelecidas
$IPT -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
$IPT -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT

# Liberando o Tráfego na Interface loopback
$IPT -A INPUT -i lo -j ACCEPT

# LOGs
LOG

#PSAD
$IPT -A INPUT -j LOG
$IPT -A FORWARD -j LOG
}



DISABLE_FW () {

# Removendo regras, apagando chains e zerando contadores
CLEAN_RULES

# Política
$IPT -P INPUT ACCEPT
$IPT -P OUTPUT ACCEPT
$IPT -P FORWARD ACCEPT

# Adicionando redirecionamentos
REDIRECT

# Compartilhando a Internet
SHARE_INTERNET
}



MODULES () {

MOD[0]="iptable_filter"
MOD[1]="iptable_nat"
MOD[2]="iptable_mangle"
MOD[3]="ipt_LOG"
MOD[4]="ipt_REDIRECT"
MOD[5]="ipt_MASQUERADE"

for N in $(seq 0 5); do
if [ -z "$(lsmod | grep ${MOD[$N]})" ]; then
/sbin/modprobe ${MOD[$N]}
fi
done

}

EXEC () {

if [ $(whoami) == "root" ]; then
MODULES
$1
RET=0
else
echo "You're not a user root: Operation not permitted"
RET=1
fi
}

. /lib/lsb/init-functions

case "$1" in

start)
log_daemon_msg "Starting Firewall iptables"
EXEC ENABLE_FW
;;
stop)
log_daemon_msg "Stopping Firewall iptables"
EXEC DISABLE_FW
;;
restart|reload)
log_action_begin_msg "Reloading Firewall configuration..."
echo "Reloading Firewall configuration rules."
EXEC ENABLE_FW
;;
*)
log_success_msg "Usage: $0 {start|stop|restart|reload}"
esac

log_end_msg $RET

exit $RET


  


2. Bloquear acesso a outra rede

Erlan Fernando Salvador
erlanfernando

(usa Debian)

Enviado em 25/01/2011 - 00:01h

Ola...
Dê uma olha nesta regra:
$IPT -t nat -A PREROUTING -i $ILAN -p tcp --dport 80 -j REDIRECT --to-port 3128
$IPT -t nat -A PREROUTING -i $ILAN_2 -p tcp --dport 80 -j REDIRECT --to-port 3128

Você disse que está bloqueando o trafego entre as duas interfaces, com os comando abaixo, certo:
$IPT -A FORWARD -i eth0 -o eth2 -j DROP
$IPT -A FORWARD -i eth2 -o eth0 -j DROP

Se perceber vc só esta bloqueando a comunicação entre as interfaces pelo FORWARD, Porem o seu trafego http(porta 80) não esta passando pelo FORWARD e sim pelo seu proxy, que é a primeira regra de seu script, onde vc redireciona o trafego da porta 80 (http) p/ 3128 (squid), portanto o trafego http não esta atravessando(FORWARD) o firewall e sim esta entrando(INPUT) pelo firewall através do squid e saindo(OUTPUT).


3. Re: Bloquear acesso a outra rede [RESOLVIDO]

Gustavo Henrique
gustavohsr

(usa Debian)

Enviado em 25/01/2011 - 13:57h

erlanfernando, você tinha toda razão... não tinha me atentado para esta regra "PREROUTING" que é executada bem antes de tudo.

Conforme vc falou, fiz uma regra bloqueando a saída para esta rede e está ok:

$IPT -I OUTPUT -o $ILAN_2 -p tcp -m multiport --dports 80,443 -j DROP

Valeu mesmo, te agradeço pela valiosa ajuda!

att,
Gustavo


4. Re: Bloquear acesso a outra rede [RESOLVIDO]

Gustavo Henrique
gustavohsr

(usa Debian)

Enviado em 25/01/2011 - 18:54h

Então pessoal, alguém aí tem uma idéia?


5. Re: Bloquear acesso a outra rede [RESOLVIDO]

Erlan Fernando Salvador
erlanfernando

(usa Debian)

Enviado em 26/01/2011 - 21:21h

Ok, estamos aí.....
Abraços.






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts