Liberar acesso interno a empresa

1. Liberar acesso interno a empresa

Leonardo
leonardufb

(usa Slackware)

Enviado em 28/02/2012 - 08:16h

Bom dia pessoal, estou com uma bronquinha e gostaria da ajuda de vcs. Estava tendo problemas com a internet na empresa onde, estava lento em alguns momentos devido o uso descontrolado por alguns usuários que tinham aplicativos como kazaa, emule, bitorrent, etc. esses programas sugadores de conexão.

Daí, resolvi dar uma analisada melhor em meu script firewall, pois, reparei que apesar de está com a política FORWARD como DROP, não estava legal. No entanto após alguns melhorias, cheguei onde, queria, ou seja, só estão funcionando as portas que determinei, porém, na empresa tenho alguns serviços como Openfire, Serviço de câmeras, etc, que devem ser acessados de fora da rede, e até são quando os usuários que acessam estão fora dela, no entanto quando esses mesmos usuários estão dentro da empresa, não conseguem ter acesso aos respectivos serviços.

Meu firewall, está bloqueando conexões externas direcionadas a ele vindo dele. Acho que é isso que está ocorrendo, já tentei resolver de diversas formas, mas, não encontro a solução.

Desde já agradeço a atenção.

Segue o meu código, para que possam criticar e dar sugestões:

#!/bin/bash

# VARIAVEIS ========================================================================================
Wan=eth0
Lan=eth1
IpInterno=192.168.100.1
RedeInterna=192.168.100.0/24
IpExterno=xxx.xxx.xxx.xxx
RedeExterna=xxx.xxx.xxx.xxx/xx
#===================================================================================================

# Ok_or_error & Fire_start =========================================================================
NORMAL="\33[0m"
GOOD="\33[32;1m"
BAD="\33[31;1m"

ok_or_error() {
if [ "$?" = "0" ]; then
tput hpa 60
echo -ne "$GOOD[OK]"
else
tput hpa 60
echo -ne "$BAD[ERR]"
fi
echo -ne "$NORMAL\n"
}

fire_start() {

/sbin/depmod -A
/sbin/modprobe ip_conntrack
/sbin/modprobe ip_conntrack_ftp
/sbin/modprobe ip_nat_ftp
/sbin/modprobe iptable_nat
/sbin/modprobe ip_nat_ftp
#===================================================================================================

echo
echo "================================================================"
echo " | :: Setando as regras do Firewall :: | "
echo "================================================================"

echo
echo -n " REGRAS DEFAULTS"
echo
echo
#
# Regras Padroes das Chains ------------------------------------------------------------------------
echo -n "Alterar politica padrao"
iptables -F
iptables -X
iptables -Z
iptables -t nat -F
iptables -t filter -F
iptables -P INPUT DROP
iptables -P FORWARD DROP
iptables -P OUTPUT ACCEPT
ok_or_error
#---------------------------------------------------------------------------------------------------

# Alterar as flags ---------------------------------------------------------------------------------
echo
echo -n " FLAGS"
echo
echo

# IP_forward ---------------------------------------------------------------------------------------
echo -n "Setando ip_forward: OFF"
echo "0" > /proc/sys/net/ipv4/ip_forward
ok_or_error
#---------------------------------------------------------------------------------------------------

# Secure_Redirects ---------------------------------------------------------------------------------
echo -n "Setting Secure_Redirects: ON"
echo "1" > /proc/sys/net/ipv4/conf/all/secure_redirects
ok_or_error
#---------------------------------------------------------------------------------------------------

# Ip_dynaddr ---------------------------------------------------------------------------------------
echo -n "Setting Ip_dynaddr: ON"
echo "1" > /proc/sys/net/ipv4/ip_dynaddr
ok_or_error
#---------------------------------------------------------------------------------------------------

# Anti Spoofing ------------------------------------------------------------------------------------
echo -n "Setting anti-spoofing protection: ON"
for spoofing in /proc/sys/net/ipv4/conf/*/rp_filter; do
echo "1" > $spoofing
done
ok_or_error
#---------------------------------------------------------------------------------------------------

# Anti-Redirects -----------------------------------------------------------------------------------
echo -n "Setting anti-redirects: ON"
echo "1" > /proc/sys/net/ipv4/conf/all/accept_redirects
ok_or_error
#---------------------------------------------------------------------------------------------------

# Anti source route --------------------------------------------------------------------------------
echo -n "Setting anti-source_route: ON"
echo "1" > /proc/sys/net/ipv4/conf/all/accept_source_route
ok_or_error
#---------------------------------------------------------------------------------------------------

# Anti bugus response ------------------------------------------------------------------------------
echo -n "Setting anti-bugus_response: ON"
echo "1" > /proc/sys/net/ipv4/icmp_ignore_bogus_error_responses
ok_or_error
#---------------------------------------------------------------------------------------------------

# Anti Synflood protection -------------------------------------------------------------------------
echo -n "Setting anti-synflood protection: ON"
echo "1" > /proc/sys/net/ipv4/tcp_syncookies
ok_or_error
#---------------------------------------------------------------------------------------------------

# Tcp_ecn ------------------------------------------------------------------------------------------
echo -n "Setting tcp_ecn protection: OFF"
echo "0" > /proc/sys/net/ipv4/tcp_ecn
ok_or_error
#---------------------------------------------------------------------------------------------------

# Ping ignore --------------------------------------------------------------------------------------
echo -n "Bloquear Ping: ON"
echo "1" > /proc/sys/net/ipv4/icmp_echo_ignore_all
ok_or_error

# Ping ignore broadcast ----------------------------------------------------------------------------
echo -n "Bloquear Ping - Broadcast: ON"
echo "1" > /proc/sys/net/ipv4/icmp_echo_ignore_broadcasts
ok_or_error


#===================================================================================================

echo
echo -n " ABRIR/FECHAR PORTAS NECESSARIAS"
echo
echo


# Chain INPUT -------------------------------------------------------------------------------------
echo -n "Chain INPUT"
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
ok_or_error
#---------------------------------------------------------------------------------------------------

# Chain FORWARD ------------------------------------------------------------------------------------
echo -n "Chain FORWARD"
iptables -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT
ok_or_error
#---------------------------------------------------------------------------------------------------

# IP Masquerading (NAT) ----------------------------------------------------------------------------
echo -n "Efetuar mascaramento de Ip"
iptables -t nat -A POSTROUTING -s $RedeInterna -o $Wan -j MASQUERADE
ok_or_error
#---------------------------------------------------------------------------------------------------

# INPUT --------------------------------------------------------------------------------------------
#
echo -n "Liberar interface Loopback"
iptables -A INPUT -i lo -j ACCEPT
ok_or_error

# Bloquear scanners(nmap)
echo -n "Bloquear scanners(nmap)"
iptables -A INPUT -p tcp --tcp-flags ALL FIN,URG,PSH -j DROP
ok_or_error

# Liberar porta ssh para rede interna
echo -n "Bloquear porta SSH"
iptables -A INPUT -s 192.168.100.73 -i $Lan -p tcp --dport 22 -j ACCEPT
ok_or_error

# Liberar porta DNS para rede interna
echo -n "Liberar porta DNS para a Rede interna"
iptables -A INPUT -p udp -s $RedeInterna --dport 53 -j ACCEPT
iptables -A INPUT -p tcp -s $RedeInterna --dport 53 -j ACCEPT
ok_or_error

# Liberar porta do Squid
echo -n "Liberar porta Squid"
iptables -A INPUT -p tcp -s $RedeInterna --dport 3128 -j ACCEPT
ok_or_error

# Liberar a porta do messenger para MSN-Proxy
echo -n "Liberar porta Msn-Proxy"
iptables -A INPUT -p tcp -i $Lan --dport 1863 -j ACCEPT
iptables -A INPUT -p tcp -s $RedeInterna --dport 20000:30000 -j ACCEPT
ok_or_error

# Liberar NTP
echo -n "Liberar porta NTP"
iptables -A INPUT -p udp -s $RedeInterna --dport 123 -j ACCEPT
ok_or_error

#
#---------------------------------------------------------------------------------------------------

# FORWARD ------------------------------------------------------------------------------------------
echo -n "Evitar Ping"
iptables -A FORWARD -p icmp --icmp-type echo-request -m limit --limit 1/s -j ACCEPT
ok_or_error

echo -n "Bloquear Ping"
iptables -A FORWARD -p icmp --icmp-type echo-request -j DROP
ok_or_error

echo -n "Evitar o DoS"
iptables -A FORWARD -p tcp --syn -m limit --limit 1/s -j ACCEPT
ok_or_error

echo -n "Bloquear Scanners (nmap)"
iptables -A FORWARD -p tcp --tcp-flags SYN,ACK,FIN,RST RST -m limit --limit 1/s -j ACCEPT
ok_or_error

echo -n "Limitar o Log"
iptables -A FORWARD -m limit -j LOG
ok_or_error

echo -n "Liberar POP"
iptables -A FORWARD -i $Lan -o $Wan -p tcp --dport 110 -j ACCEPT
ok_or_error

echo -n "Liberar SMTP"
iptables -A FORWARD -i $Lan -o $Wan -p tcp --dport 25 -j ACCEPT
ok_or_error

echo -n "Liberar SSL"
iptables -A FORWARD -i $Lan -o $Wan -p tcp --dport 443 -j ACCEPT
ok_or_error

echo -n "Liberar IMAP"
iptables -A FORWARD -i $Lan -o $Wan -p tcp --dport 143 -j ACCEPT
ok_or_error

echo -n "Liberar E-MAIL SEGURO"
iptables -A FORWARD -i $Lan -o $Wan -p tcp --dport 587 -j ACCEPT
ok_or_error

echo -n "Liberar DIEF"
iptables -A FORWARD -i $Lan -o $Wan -p tcp --dport 8017 -j ACCEPT
ok_or_error

# Liberar acesso para o CAT
echo -n "Liberar CAT"
iptables -A FORWARD -s $RedeInterna -d 200.152.32.148 -p tcp --dport 5017 -j ACCEPT
iptables -A FORWARD -s 200.152.32.148 -d $RedeInterna -p tcp --dport 5017 -j ACCEPT
ok_or_error

# REDIRECIONAMENTO DE PORTAS =======================================================================
echo
echo -n " REDIRECIONAMENTO DE PORTAS"
echo
echo

# Acesso externo Protheus --------------------------------------------------------------------------
# Redirecionar Usuario1
echo -n "Acesso Usuario1"
iptables -t nat -A PREROUTING -p tcp -d $IpExterno --dport 9010 -j DNAT --to-dest 192.168.100.9:9000
ok_or_error

# Redirecionar Usuario2
echo -n "Acesso Usuario2"
iptables -t nat -A PREROUTING -p tcp --dport 9011 -j DNAT --to-dest 192.168.100.9:9000
ok_or_error

# Redirecionar Usuario3
echo -n "Acesso Usuario3"
iptables -t nat -A PREROUTING -p tcp -d $IpExterno --dport 9012 -j DNAT --to-dest 192.168.100.9:9000
ok_or_error

# Redirecionar Usuario4
echo -n "Acesso Usuario4"
iptables -t nat -A PREROUTING -p tcp -d $IpExterno --dport 9013 -j DNAT --to-dest 192.168.100.9:9000
ok_or_error

echo -n "Acesso Usuario5"
iptables -t nat -A PREROUTING -p tcp -d $IpExterno --dport 9015 -j DNAT --to-dest 192.168.100.9:9020
ok_or_error

# Redirecionar Usuario6
echo -n "Acesso Usuario6"
iptables -t nat -A PREROUTING -p tcp -d $IpExterno --dport 9014 -j DNAT --to-dest 192.168.100.9:9000
ok_or_error

#echo -n "Teste"
#iptables -t nat -A PREROUTING -p tcp -m mac --mac-source 00:23:15:A5:84:BC -d 0/0 --dport 80 -j ACCEPT
#iptables -t nat -A PREROUTING -p tcp -m mac --mac-source 00:23:15:A5:84:BC -d 0/0 -j DROP
#ok_or_error

# Redirecionar portas Servidores de cameras --------------------------------------------------------
echo -n "Redirecionar 81, 3551, 3651, 4551, 5551 --> 192.168.100.61"
iptables -t nat -A PREROUTING -p tcp -d $IpExterno -m multiport --dport 81,3551,3651,4551,5511,5551,6551,8861 -j DNAT --to-dest 192.168.100.61
ok_or_error

echo -n "Redirecionar 82, 3552, 3652, 4552, 5552 --> 192.168.100.62"
iptables -t nat -A PREROUTING -p tcp -d $IpExterno -m multiport --dport 82,3552,3652,4552,5512,5552,6552,8862 -j DNAT --to-dest 192.168.100.62
ok_or_error

echo -n "Redirecionar 83, 3553, 3653, 4553, 5553 --> 192.168.100.83"
iptables -t nat -A PREROUTING -p tcp -d $IpExterno -m multiport --dport 83,3553,3653,4553,5513,5553,6553,8863 -j DNAT --to-dest 192.168.100.83
ok_or_error

echo -n "Liberar passagem 81,3550,etc --> 192.168.100.61:*.62"
iptables -A FORWARD -p tcp -m multiport --dport 81,3551,3651,4551,5511,5551,6551,8861 -j ACCEPT
iptables -A FORWARD -p tcp -m multiport --dport 82,3552,3652,4552,5512,5552,6552,8862 -j ACCEPT
iptables -A FORWARD -p tcp -m multiport --dport 83,3553,3653,4553,5513,5553,6553,8863 -j ACCEPT
ok_or_error
#----------------------------------------------------------------------------------------------------

# Redirecionar TerminalServer
TerminalServer=192.168.100.10
echo -n "Redirecionar Terminal Server 3350 --> $TerminalServer"
iptables -t nat -A PREROUTING -p tcp -d $IpExterno --dport 3350 -j DNAT --to-dest $TerminalServer:3389
ok_or_error

# Redirecionar Vnc
#Destino=192.168.100.54
#echo -n "Redirecionar Vnc 5800,5900 --> $Destino"
#iptables -t nat -A PREROUTING -p tcp -d $IpExterno --dport 5800 -j DNAT --to-dest $Destino
#iptables -t nat -A PREROUTING -p tcp -d $IpExterno --dport 5900 -j DNAT --to-dest $Destino
#ok_or_error

# Redirecionar OpenFire
echo -n "Redirecionar Openfire 5522,7777 --> 192.168.100.8"
iptables -t nat -A PREROUTING -p tcp -d $IpExterno --dport 5522 -j DNAT --to-dest 192.168.100.8:5222
ok_or_error

# Redirecionar FTP
echo -n "Redirecionar 21 --> 192.168.100.8"
iptables -t nat -A PREROUTING -p tcp -d $IpExterno --dport 21 -j DNAT --to-dest 192.168.100.8
ok_or_error

# Redirecionar HTTP
echo -n "Redirecionar 80 --> 192.168.100.8"
iptables -t nat -A PREROUTING -p tcp -m tcp -d $IpExterno --dport 80 -j DNAT --to-dest 192.168.100.8
ok_or_error

# Redirecionar a porta 1863 para o Msn-Proxy
echo -n "Redirecionar 192.168.100.1:1863 --> 1863"
iptables -t nat -A PREROUTING -i $Lan -p tcp --dport 1863 -j REDIRECT --to-port 1863
ok_or_error

# Bloqueio de acesso ao messenger por fora
echo -n "Bloquear messenger pela porta 80"
iptables -t nat -A PREROUTING -p tcp --dport 80 -m string --algo bm --string "x-msn-messenger" -j DROP
ok_or_error

# Ativar o proxy transparente e libera acesso ao site da CAIXA
echo -n "Redirecionar 192.168.100.1:80 --> 3128"
iptables -t nat -A PREROUTING -s $RedeInterna -p tcp -d ! 200.201.0.0/16 --dport 80 -j REDIRECT --to-port 3128
#iptables -t nat -A PREROUTING -s $RedeInterna -p tcp --dport 80 -j REDIRECT --to-port 3128
ok_or_error

# Bloquear demais portas ---------------------------------------------------------------------------
echo -n "Bloquear demais portas"
iptables -A FORWARD -p tcp --sport 0:65535 -j DROP
iptables -A FORWARD -p tcp --dport 0:65535 -j DROP
iptables -A FORWARD -p udp --sport 0:65535 -j DROP
iptables -A FORWARD -p udp --dport 0:65535 -j DROP
ok_or_error

# Ativando o ip_forward ----------------------------------------------------------------------------
echo -n "Setando ip_forward: ON"
echo "1" > /proc/sys/net/ipv4/ip_forward
ok_or_error

# PRIORIDADE DE PACOTES ===========================================================================
echo
echo -n " PRIORIDADE DE PACOTES"
echo
echo

# Alterando prioridades de pacotes importantes
echo -n "Prioridade na porta 25,80,110,443,587"
iptables -t mangle -A PREROUTING -i eth1 -p tcp -m multiport --sport 25,80,110,443,587 -j TOS --set-tos 16
ok_or_error

#===================================================================================================


echo "================================================================"
echo " <<<--->>> Firewall Ativo! <<<--->>> "
echo "================================================================"


# Fire_Stop & Fire_restart --------------------------------------------------------------------------
}

fire_stop() {
echo "Parando o Firewall..."
/usr/sbin/iptables -F
/usr/sbin/iptables -X
/usr/sbin/iptables -Z
/usr/sbin/iptables -t nat -F
/usr/sbin/iptables -t filter -F
/usr/sbin/iptables -P INPUT DROP
/usr/sbin/iptables -P FORWARD DROP
/usr/sbin/iptables -P OUTPUT DROP
ok_or_error
}


fire_restart() {
fire_stop
sleep 1
fire_start
}

case "$1" in
'start')
fire_start
;;
'stop')
fire_stop
;;
'restart')
fire_restart
;;
*)
echo "usage $0 start|stop|restart"
esac
#=================================================================================================


  


2. Ainda não

Leonardo
leonardufb

(usa Slackware)

Enviado em 07/03/2012 - 20:04h

Pessoal, ainda não consegui resolver esse problema que me pertuda, já pesquisei e testei de diversas formas, com FORWARD e com PREROUTING, mas, o firewall continua bloqueando as maq da rede a propria rede.


3. Re: Liberar acesso interno a empresa

leonardo Souza
lejoso

(usa Debian)

Enviado em 07/03/2012 - 20:41h

Quais ip/mascara de origem e destino? Qual a porta de acesso?


4. Resp

Leonardo
leonardufb

(usa Slackware)

Enviado em 07/03/2012 - 20:46h

O IP de destino é $IpExterno e o Ip de origem é igual ao $IpExterno QUANDO esse usuário através de Notebook estiver DENTRO da empresa.

Quanto as portas, seriam várias, as que dão acesso a serviços de cameras, Messenger Interno(Openfire), etc.Ex: 81, 3551, 3651, 4551, 5551.

A bronca é que o iptables esta bloqueando o acesso desse usuario quando o mesmo esta dentro da empresa, quando ele se encontra fora da empresa não tem bronca nenhuma.

E vlw pela ajuda.


5. Complementando...

Leonardo
leonardufb

(usa Slackware)

Enviado em 12/03/2012 - 10:58h

Já testei inserindo a regra:

iptables -A FORWARD -s $RedeInterna -d $IpExterno -j ACCEPT

e

iptables -A FORWARD -p tcp -d $IpExterno --dport 9013 -j ACCEPT


Mas, também não deu.


6. Internamente

André Canhadas
andrecanhadas

(usa Debian)

Enviado em 12/03/2012 - 11:23h

Internamente deve acessar pelo IP Interno das maquinas:
ex:
192.168.0.10:5539




7. Complementando...

Leonardo
leonardufb

(usa Slackware)

Enviado em 12/03/2012 - 11:38h

O negócio brother, é que alguns são notebooks, e acessam tanto dentro quanto fora da empresa.


8. DNS

André Canhadas
andrecanhadas

(usa Debian)

Enviado em 12/03/2012 - 11:45h

leonardufb escreveu:

O negócio brother, é que alguns são notebooks, e acessam tanto dentro quanto fora da empresa.


Sim externamente eles acessam pelo seu IP externo e funciona, só que internamente eles não irão conseguir acessar pelo IP externo.
Tente:
eth0=Rede local
189.xx.xxx=IP externo
192.168.0.4:5539=IP Camera:porta

iptables -t nat -A PREROUTING -i eth0 -p tcp -m tcp -d 189.xxx.xx.xxx--dport 5539 -j DNAT --to-destination 192.168.0.4:5539




9. DNS

André Canhadas
andrecanhadas

(usa Debian)

Enviado em 12/03/2012 - 11:55h

Outra solução seria usar um DNS para resolver os endereços externamente e internamente.

Ex externamente:
camera.seudominio.com.br # Se não tiver um pode usar o no-ip(http://www.no-ip.com/) ira direcionar para seu ip externo

EX internamente:
Configurado esse mesmo dominio na sua rede local para direcionar para a maquina da rede local onde fica a camera.


10. Complementando...

Leonardo
leonardufb

(usa Slackware)

Enviado em 12/03/2012 - 11:56h

Vlw por esta me ajudando brother,

Veja só fiz como indicou, mas, também não deu certo, será que devo colocar em alguma linha no meu script, pois, estou colocando no momento logo abaixo da regra PREROUTING.


11. Raciocinio

André Canhadas
andrecanhadas

(usa Debian)

Enviado em 12/03/2012 - 12:13h

Quando vc tenta acessar o IP externo internamente ele sai da sua rede vai até o gateway do provedor e volta para seu firewall e se perde.

Já tentei coisa parecida e tb não consegui nem achei alguem que tenha conseguido então a solução mais limpa seria usar DNS.

Ou internamente deve acessar pelo seu ip interno onde esta a camera


12. Complementando...

Leonardo
leonardufb

(usa Slackware)

Enviado em 12/03/2012 - 12:37h

Blz...

Vou papirar mais um pouco, se encontrar alguma coisa, posto aqui a solução, do contrário vou ver então a dica do DNS,



01 02



Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts