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
#=================================================================================================