#!/bin/bash
### BEGIN INIT INFO
# Provides:          firewall
# Required-Start:    $all
# Required-Stop:
# Default-Start:     2 3 4 5
# Default-Stop:
# Short-Description: Run /etc/init.d/firewall if it exist
### END INIT INFO


IFEXT="eth1"
IFINT="eth0"
REDEINT="192.168.10.0/255.255.255.0"

#Modulos de FTP para listar os arquivos
/sbin/modprobe ip_conntrack_ftp
/sbin/modprobe ip_nat_ftp



if [ "$1" == "stop" ]; then
        iptables -F
        iptables -Z
        iptables -X
        iptables -t nat -F
 	iptables -t nat -Z
 	iptables -t nat -X
        iptables -P INPUT ACCEPT
        iptables -P FORWARD ACCEPT
        iptables -P OUTPUT ACCEPT
        exit
fi

##########################################################################
#                            LIMPANDO REGRAS                             #
##########################################################################
iptables -F
iptables -Z
iptables -X
iptables -t nat -F
iptables -t nat -Z
iptables -t nat -X
iptables -P INPUT ACCEPT
iptables -P FORWARD ACCEPT
iptables -P OUTPUT ACCEPT

##########################################################################
#HABILITANDO ACESSO SSH                                                  #
##########################################################################
iptables -A INPUT -p TCP --dport 1046 -j ACCEPT
iptables -A INPUT -p TCP --dport 22 -j ACCEPT

##########################################################################
#LIBERANDO A CHAIN INPUT PARA O LOCALHOST E REDE LOCAL                   #
##########################################################################
iptables -A INPUT -p ALL -s 127.0.0.1 -i lo -j ACCEPT

##########################################################################
#MANTENDO CONEXOES ATIVAS                                                #
##########################################################################
iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT

##########################################################################
#LIBERANDO ALGUNS ACESSOS POR PING                                       #
##########################################################################
iptables -A INPUT -p icmp --icmp-type 8 -j ACCEPT
iptables -A INPUT -p icmp --icmp-type 0 -j ACCEPT
#iptables -A INPUT -p icmp -s $REDEINT -d 0/0 -j ACCEPT

##########################################################################
#DESCARTANDO PACOTES FRAGMENTADOS                                        #
##########################################################################
iptables -A INPUT -i $IFEXT -f -j DROP
#iptables -A INPUT -i $IFEXT1 -f -j DROP
#iptables -A INPUT -i $IFINT -f -j DROP

##########################################################################
#BLOQUEANDO ATAQUES DO TIPO SPOOF DE IP PARA INTERFACES EXTERNAS         #
##########################################################################
iptables -A INPUT -i $IFEXT -s 10.0.0.0/8 -j DROP
iptables -A INPUT -i $IFEXT -s 172.16.0.0/12 -j DROP
iptables -A INPUT -i $IFEXT -s 192.168.0.0/16 -j DROP
iptables -A INPUT -i $IFEXT -s 224.0.0.0/4 -j DROP
iptables -A INPUT -i $IFEXT -s 240.0.0.0/5 -j DROP
iptables -A INPUT -i $IFEXT -s 192.168.25.0/16 -j DROP

##########################################################################
#DESCARTANDO PACOTES INVALIDOS                                           #
##########################################################################
iptables -A FORWARD -m state --state INVALID -j DROP

##########################################################################
#HABILITANDO O ROTEAMENTO DE PACOTES                                     #
##########################################################################
echo "1" > /proc/sys/net/ipv4/ip_forward
echo "0" > /proc/sys/net/ipv4/icmp_echo_ignore_broadcasts

##########################################################################
#LIBERANDO ACESSO A DNS DE FORA                                          #
##########################################################################
iptables -A FORWARD -p udp --dport 53 -j ACCEPT

##########################################################################
#LIBERANDO PING                                                          #
##########################################################################
iptables -A FORWARD -p icmp -j ACCEPT

##########################################################################
#LIBERA ACESSO SMTP E POP                                                #
##########################################################################
iptables -A FORWARD -p tcp --dport 25 -j ACCEPT
iptables -A FORWARD -p tcp --dport 110 -j ACCEPT

##########################################################################
#FAZENDO O MASCARAMENTO DE ENDERECOS IP NAO NAT                          #
##########################################################################
iptables -t nat -A POSTROUTING -o $IFEXT -j MASQUERADE

##########################################################################
#PROXY TRANSPARENTE                                                      #
##########################################################################
iptables -I INPUT -p tcp --dport 8080 -j DROP
iptables -I INPUT -i eth0 -p tcp -s $REDEINT --dport 8080 -j ACCEPT
iptables -I INPUT -p tcp --dport 3128 -j DROP
iptables -I INPUT -i eth0 -p tcp -s $REDEINT --dport 3128 -j ACCEPT

#Quando for desabilitar o Proxy apenas desabilite a regra abaixo.
##iptables -t nat -A PREROUTING -i $IFINT -s $REDEINT -p tcp --dport 80 -j REDIRECT --to-port 8080

##########################################################################
#Bloqueio dos ips dos servidores do FACEBOOK                             #
##########################################################################
#Liberando ips para o facebook HTTPS/HTTP (Lembrar de liberar no squid tambem se necessario)
##for i in $(cat /etc/squid3/listas/ip-facebook-liberado); do
##iptables -A FORWARD -p tcp -s $i -j ACCEPT
##iptables -A FORWARD -p tcp -d $i -j ACCEPT
#iptables -A FORWARD -p tcp -s $i --dport 443 -j DROP
#iptables -A FORWARD -p tcp -d $i --dport 443 -j DROP
##done

#bloqueio do site do facebook HTTPS/HTTP
##for i in $(cat /etc/squid3/listas/facebook); do
##iptables -A FORWARD -p tcp -s $i -j DROP
##iptables -A FORWARD -p tcp -d $i -j DROP
##done

#bloqueio do site do Youtube HTTPS/HTTP
#for i in $(cat /etc/squid3/listas/youtube); do
#iptables -A FORWARD -p tcp -s $i -j DROP
#iptables -A FORWARD -p tcp -d $i -j DROP
#done

#iptables -I FORWARD -m string --algo bm --string "youtube.com" -j DROP


#################################
#REDIRECIONAMENTOS DE SERVIDORES#
#################################

#Redirecionamento para maquinas em manutenção
#iptables -t nat -A PREROUTING -i $IFEXT -p tcp --dport 3308 -j DNAT --to-destination 192.168.10.8:3389

#Servidor 3 Tufao Onclick
iptables -t nat -A PREROUTING -i $IFEXT -p tcp --dport 3303 -j DNAT --to-destination 192.168.10.3:3389

#Servidor 5 de arquivos
iptables -t nat -A PREROUTING -i $IFEXT -p tcp --dport 3305 -j DNAT --to-destination 192.168.10.5:3389

#Servidor 7 Telefonia/Ponto/PDC (Dell) 
iptables -t nat -A PREROUTING -i $IFEXT -p tcp --dport 3307 -j DNAT --to-destination 192.168.10.7:3389

#Maquina to TI Walesca
#iptables -t nat -A PREROUTING -i $IFEXT -p tcp --dport 3300 -j DNAT --to-destination 192.168.10.236:3300

#MY CLoUD WD HD
#iptables -t nat -A PREROUTING -i $IFEXT -p tcp --dport 3309 -j DNAT --to-destination 192.168.10.157:8083
#Servidor 3 ip novo
#iptables -t nat -A PREROUTING -i $IFEXT -p tcp --dport 3364 -j DNAT --to-destination 192.168.10.164:3389 

##########################################################################
#REDIRECIONAMENTOS  DVR                                                  #
##########################################################################
iptables -t nat -A PREROUTING -i $IFEXT -p tcp --dport 3130 -j DNAT --to-destination 192.168.10.202:3130
iptables -t nat -A PREROUTING -i $IFEXT -p tcp --dport 37777 -j DNAT --to-destination 192.168.10.202:37777
#iptables -t nat -A PREROUTING -i $IFEXT -p tcp --dport 34567 -j DNAT --to-destination 192.168.10.6:34567


#iptables -t nat -A PREROUTING -i $IFINT -s $REDEINT -p tcp --dport 443 -j REDIRECT --to-port 8080
#iptables -t nat -A PREROUTING -s 192.168.10.0/255.255.255.0 -p tcp --dport 443 -j REDIRECT --to-port 8080
#iptables -t nat -A PREROUTING -i $IFINT1 -s $REDEINT1 -d 64.233.171.85 -p tcp --dport 443 -j REDIRECT --to-port 8080
#iptables -A INPUT -i $IFEXT -p tcp --dport 8080 -s ! 192.168.10.0 -j DROP



##########################################################################
#EXEMPLOS                                                                #
##########################################################################





##########################################################################
#REDIRECIONAMENTOS                                                       #
##########################################################################
#Horario de acesso
#iptables -A FORWARD -p tcp -m multiport --sports 3303,3389 -m time --timestart 18:00 --timestop 08:00 -j DROP

#iptables -A INPUT -p tcp -m multiport --sports 1046 -m time --timestart 23:00 --timestop 08:00 -j DROP
#iptables -A INPUT -i eth1 -p tcp -s $REDEINT --dport 1046 -j ACCEPT

#Bloqueio web
#iptables -t filter -A FORWARD -p tcp --dport 443 -m string --algo bm --string "facebook.com" -m time --timestart 01:30 --timestop 23:45 -j DROP
#iptables -t filter -I FORWARD -p tcp -d $i --dport 443 -m string --algo bm --string "facebook.com" -m time --timestart 07:30 --timestop 18:45 -j DROP



##########################################################################
#BLOQUEIO TEMPORARIO                                                     #
##########################################################################
#BLOQUEIO GERAL TEMPORARIO
#for i in $(cat /etc/ips_bloqueados); do
#iptables -I FORWARD -s $i -j DROP
#iptables -I FORWARD -d $i -j DROP
#iptables -I INPUT -s $i -j DROP
#iptables -I INPUT -d $i -j DROP
#iptables -I OUTPUT -s $i -j DROP
#iptables -I OUTPUT -d $i -j DROP
#done


#iptables -A FORWARD -i $IFINT -m string --algo bm --string "facebook.com" -j DROP
#iptables -A FORWARD -i $IFEXT -m string --algo bm --string "facebook.com" -j DROP

#iptables -A FORWARD -i $IFEXT -d 192.168.1.0/24 -m string --algo bm --string "facebook.com" -j DROP

#iptables -t filter -I FORWARD -p tcp --dport 443 -m string --algo bm --string "facebook.com"  -j DROP

##########################################################################
#BLOQUEIO DO SKYPE                                                       #
##########################################################################
#iptables -A FORWARD -p tcp -s 192.168.10.85 -j DROP
##iptables -A FORWARD -p TCP -s 192.168.10.85  --dport 1046 -j ACCEPT
#iptables -A FORWARD -p TCP --dport 21 -j ACCEPT

#iptables -A FORWARD -p TCP -s 192.168.10.85 -j DROP
#iptables -A FORWARD -p TCP -d 192.168.10.85 -j DROP
#iptables -A FORWARD -p TCP -s 192.168.10.85 --dport 1046 -j ACCEPT
#iptables -A FORWARD -p TCP -s 192.168.10.85 --dport 9000 -j ACCEPT
#iptables -A FORWARD -p TCP -s 192.168.10.85 --dport 9001 -j ACCEPT
#iptables -A FORWARD -p TCP -s 192.168.10.85 --dport 3306 -j ACCEPT
#iptables -A FORWARD -p TCP -s 192.168.10.85 --dport 1863 -j ACCEPT
#iptables -A FORWARD -p UDP -s 192.168.10.85 --dport 1863 -j ACCEPT
#iptables -A FORWARD -p TCP -s 192.168.10.85 -d 111.221.77.140 -j ACCEPT
#iptables -A FORWARD -p TCP -s 192.168.10.85 -d 131.253.61.96 -j ACCEPT
#iptables -A FORWARD -p TCP -s 192.168.10.85 -d 91.190.218.17 -j ACCEPT
#iptables -A FORWARD -p TCP -s 192.168.10.85 --dport 80 -j ACCEPT
#iptables -A FORWARD -p TCP -d 192.168.10.85 --dport 80 -j ACCEPT
#iptables -A FORWARD -p TCP -s 192.168.10.85 --dport 8080 -j ACCEPT
#iptables -A FORWARD -p TCP -d 192.168.10.85 --dport 8080 -j ACCEPT
#iptables -A FORWARD -p TCP -d 192.168.10.85 --dport 53 -j ACCEPT
#iptables -A FORWARD -p TCP -s 192.168.10.85 --dport 53 -j ACCEPT
#iptables -A FORWARD -p TCP -d 192.168.10.85 --dport 443 -j ACCEPT
#iptables -A FORWARD -p TCP -s 192.168.10.85 --dport 443 -j ACCEPT

#iptables -A FORWARD -p TCP --dport 443 -j ACCEPT
#iptables -A INPUT -p tcp --destination-port 80 -j ACCEPT

##########################################################################
#DIVERSOS                                                                #
##########################################################################


# Redirecionamento 
#__________________________________________________________________________________________
#########iptables -t nat -A PREROUTING -d 187.39.19.33 -p TCP --dport 3050 -j DNAT --to 192.168.0.3
#iptables -t nat -A PREROUTING -i $IFEXT -p tcp --dport 3305 -j DNAT --to-destination 192.168.10.4:3389
#iptables -t nat -A PREROUTING -i $IFEXT0 -p TCP --dport 1 -j DNAT --to 192.168.0.5



#Liberando acesso IP


#VPN
#iptables -A FORWARD -i eth0 -o ppp+ -m state --state NEW -p gre -j ACCEPT
#iptables -A FORWARD -i ppp+ -o eth0 -m state --state NEW -p gre -j ACCEPT
#

#iptables -t nat -A POSTROUTING -p tcp -s 192.168.10.3 --dport 47 -j MASQUERADE
#iptables -t nat -A POSTROUTING -p tcp -s 192.168.10.3 --dport 1723 -j MASQUERADE

#iptables -t nat -A PREROUTING -i $IFEXT -m multiport -p tcp --port 1723,47 -j DNAT --to-destination 192.168.10.3:1723
#iptables -A FORWARD -m multiport -p tcp --port 1723,47 -j ACCEPT

#iptables -t nat -A PREROUTING -p tcp --dport 47 -j DNAT --to 192.168.10.3:47
#iptables -t nat -A PREROUTING -p tcp --dport 1723 -j DNAT --to 192.168.10.3:1723
#iptables -t nat -A PREROUTING -p tcp --dport 127 -j DNAT --to 192.168.10.3:127

#iptables -t nat -A POSTROUTING -d 187.39.17.190 -p tcp --dport 6000 -j SNAT --to-source 192.168.10.3

#iptables -t nat -A PREROUTING -i $IFEXT -p tcp -s 177.34.238.7 -j DNAT --to 192.168.10.3
#iptables -t nat -A PREROUTING -i $IFEXT -p tcp --dport 47 -j DNAT --to 192.168.10.3

#iptables -t nat -A PREROUTING -i $IFEXT -p udp --dport 1723 -j DNAT --to 192.168.10.3
#iptables -t nat -A PREROUTING -i $IFEXT -p udp --dport 47 -j DNAT --to 192.168.10.3

#iptables -t nat -A PREROUTING -d 187.39.17.190 -p tcp --dport 1723 -j DNAT --to 192.168.10.3
#iptables -t nat -A PREROUTING -d 187.39.17.190 -p tcp --dport 47 -j DNAT --to 192.168.10.3


#MSN
#for i in $(cat /etc/ips_msn_liberados); do
#iptables -I FORWARD -s $i -p TCP --dport 1863 -j ACCEPT
#iptables -I FORWARD -s $i -p TCP -d 207.46.0.0/16  -j ACCEPT
#iptables -I FORWARD -s $i -p TCP -d 207.46.106.0/16  -j ACCEPT
#iptables -I OUTPUT -s $i -p TCP --dport 1863 -j ACCEPT
                                
#iptables -I FORWARD -s $i -p TCP --dport 1863 -j ACCEPT
#iptables -I FORWARD -s $i -p TCP -d 207.46.0.0/16  -j ACCEPT
#iptables -I FORWARD -s $i -p TCP -d 207.46.106.0/16  -j ACCEPT
#iptables -I OUTPUT -s $i -p TCP --dport 1863 -j ACCEPT
#done
                                                                
#iptables -I FORWARD -p TCP --dport 1863 -j ACCEPT
#iptables -I FORWARD -p UDP --dport 1863 -j ACCEPT
