File "rc.firewall-full.sh"

Full path: /www/wwwroot/fabriciovc.eti.br/downloads/scripts/html_php/iproute/rc.firewall-full.sh
File size: 10.63 KiB (10890 bytes)
MIME-type: text/x-shellscript
Charset: utf-8

Download   Open   Back

#!/bin/bash

##############################################################################
##### Autor: Fabricio Vaccari Constanski                                     #
##### Ultima Atualizacao: 04/05/2007                                         #
##############################################################################

##### DEFININDO VARIAVEIS DE COMANDOS ########################################
IPTABLES=/sbin/iptables
MODPROBE=/sbin/modprobe
PSNI=/proc/sys/net/ipv4

##### DEFININDO VARIAVEIS DE REDE ############################################
# Rede interna da empresa. IP/Mascara
REDEINTERNA=192.168.0.0/24
# Endereco de Loopback
LOOPBACK=127.0.0.0/8
# Placa de rede ligada na rede interna
IFINTERNA=eth1
# Placa de rede ligada na rede externa
IFEXTERNA=eth0
# Placa de rede ligada na DMZ
#IFDMZ=eth2
# Interface de VPN
IFTUN=tun+

##### (DES)HABILITANDO BITS NO KERNEL ########################################
#Habilita repasse de pacotes
echo 1 > $PSNI/ip_forward
#Habilitar protecao contra synflood
echo 1 > $PSNI/tcp_syncookies
#Habilitar verificacao de rota de origem (Protecao p/ IP Spoofing)
for RP in $PSNI/conf/*/rp_filter ; do echo 1 > $RP ; done
#Controle de ICMP
echo 0 > $PSNI/icmp_echo_ignore_all
echo 1 > $PSNI/icmp_echo_ignore_broadcasts

##### CARREGAR MODULOS CONNTRACK #############################################
$MODPROBE ip_conntrack
$MODPROBE ip_conntrack_ftp
$MODPROBE ip_nat_ftp
$MODPROBE ip_conntrack_irc
$MODPROBE ip_nat_irc

##### LIMPANDO TODAS AS REGRAS E CADEIAS ANTERIORES ##########################
$IPTABLES -t filter -F
$IPTABLES -t nat -F
$IPTABLES -t mangle -F
$IPTABLES -t filter -X
$IPTABLES -t nat -X
$IPTABLES -t mangle -X

##### DEFININDO POLITICA PADRAO ACCEPT #######################################
$IPTABLES -P INPUT ACCEPT
$IPTABLES -P FORWARD ACCEPT
$IPTABLES -P OUTPUT ACCEPT

##### LIBERAR SSH ############################################################
PSSH=22000
$IPTABLES -A INPUT -p tcp --dport $PSSH -j ACCEPT
	
case $1 in 
    start)
	##### DEFININDO ENDERECOS IPS DOS SERVIDORES #########################
	# Endereco(s) IP do servidor FTP
	IPEXTFTP=200.183.205.7	
	IPINTFTP=192.168.0.207	
	# Endereco(s) IP do servidor de E-Mail
	IPEXTMAIL=200.183.205.7	
	IPINTMAIL=192.168.0.207	
	# Endereco(s) IP do servidor DNS Primario
	IPEXTDNS1=200.183.205.7	
	IPINTDNS1=192.168.0.207	
	# Endereco(s) IP do servidor DNS Secundario
	IPEXTDNS2=200.183.205.6	
	IPINTDNS2=192.168.0.206	
	# Endereco(s) IP do servidor WWW
	IPEXTWWW=200.183.205.6	
	IPINTWWW=192.168.0.206	
	# Endereco(s) IP do servidor Dados
	IPINTDATA=192.168.0.201	
	# Endereco IP interno do Firewall
	IPINTFW=192.168.0.210
	IPEXTFW=200.183.205.2
	
	##### DEFININDO AS PORTAS DOS SERVICOS ###############################
	PORTAFTP="21"
	PORTASMTP="25"
	PORTADNS="53"
	PORTAHTTP="80"
	PORTAPOP="110"
	PORTANTP="123"
	PORTAIMAP="143"
	PORTAHTTPS="443"
	PORTAOVPN="1194"
	PORTAPROXY="3128"
	PORTASSH=$PSSH

	##### DEFININDO POLITICA PADRAO DROP #################################
	$IPTABLES -P INPUT DROP
	$IPTABLES -P FORWARD DROP
	$IPTABLES -P OUTPUT ACCEPT

	##### LIBERAR LOOPBACK ###############################################
	$IPTABLES -A INPUT -s $LOOPBACK -i lo -j ACCEPT

	##### LIBERAR SERVIDORES #############################################
	$IPTABLES -A FORWARD -s $IPINTWWW -j ACCEPT
	$IPTABLES -A FORWARD -s $IPINTFTP -j ACCEPT
	$IPTABLES -A FORWARD -s $IPINTDNS1 -j ACCEPT
	$IPTABLES -A FORWARD -s $IPINTDNS2 -j ACCEPT
	$IPTABLES -A FORWARD -s $IPINTMAIL -j ACCEPT
	$IPTABLES -A FORWARD -s $IPINTDATA -j ACCEPT

	##### LIBERAR REDE INTERNA COM EXCESSAO DA PORTA 80 ##################
	$IPTABLES -A INPUT -s $REDEINTERNA -j ACCEPT
	$IPTABLES -A FORWARD -p tcp -s $REDEINTERNA --dport ! 80 -j RETURN
	$IPTABLES -A FORWARD -s $REDEINTERNA -j ACCEPT

	##### LIBERAR RETORNOS DE CONEXAO ####################################
	$IPTABLES -A INPUT -p tcp -m state --state ESTABLISHED,RELATED -j ACCEPT
	$IPTABLES -A FORWARD -p tcp -m state --state ESTABLISHED,RELATED -j ACCEPT

	##### BLOQUEAR PACOTES TCP MAL FORMADOS ##############################
	$IPTABLES -A FORWARD -p tcp ! --syn -m state --state NEW -j DROP

	##### LIBERAR FTP ####################################################
	# Liberar INPUT e/ou FORWARD
	$IPTABLES -A FORWARD -p tcp --dport $PORTAFTP -j ACCEPT
	$IPTABLES -A FORWARD -p tcp --sport $PORTAFTP -j ACCEPT
	# Regras para SNAT/DNAT
	$IPTABLES -t nat -A PREROUTING -p tcp -d $IPEXTFTP --dport $PORTAFTP -j DNAT --to $IPINTFTP
	$IPTABLES -t nat -A POSTROUTING -p tcp -s $IPINTFTP --sport $PORTAFTP -j SNAT --to $IPEXTFTP

	##### LIBERAR SMTP ###################################################
	# Liberar INPUT e/ou FORWARD
	$IPTABLES -A FORWARD -p tcp --dport $PORTASMTP -j ACCEPT
	$IPTABLES -A FORWARD -p tcp --sport $PORTASMTP -j ACCEPT
	# Regras para SNAT/DNAT
	$IPTABLES -t nat -A PREROUTING -p tcp -d $IPEXTMAIL --dport $PORTASMTP -j DNAT --to $IPINTMAIL
	$IPTABLES -t nat -A POSTROUTING -p tcp -s $IPINTMAIL --sport $PORTASMTP -j SNAT --to $IPEXTMAIL

	##### LIBERAR DNS PRIMARIO ###########################################
	# Liberar INPUT e/ou FORWARD
	$IPTABLES -A FORWARD -p tcp --dport $PORTADNS -j ACCEPT
	$IPTABLES -A FORWARD -p udp --dport $PORTADNS -j ACCEPT
	$IPTABLES -A FORWARD -p tcp --sport $PORTADNS -j ACCEPT
	$IPTABLES -A FORWARD -p udp --sport $PORTADNS -j ACCEPT
	# Regras para SNAT/DNAT
	$IPTABLES -t nat -A PREROUTING -p tcp -d $IPEXTDNS1 --dport $PORTADNS -j DNAT --to $IPINTDNS1
	$IPTABLES -t nat -A PREROUTING -p udp -d $IPEXTDNS1 --dport $PORTADNS -j DNAT --to $IPINTDNS1
	$IPTABLES -t nat -A POSTROUTING -p tcp -s $IPINTDNS1 --sport $PORTADNS -j SNAT --to $IPEXTDNS1
	$IPTABLES -t nat -A POSTROUTING -p udp -s $IPINTDNS1 --sport $PORTADNS -j SNAT --to $IPEXTDNS1
	
	##### LIBERAR DNS SECUNDARIO #########################################
	# Regras para SNAT/DNAT
	$IPTABLES -t nat -A PREROUTING -p tcp -d $IPEXTDNS2 --dport $PORTADNS -j DNAT --to $IPINTDNS2
	$IPTABLES -t nat -A PREROUTING -p udp -d $IPEXTDNS2 --dport $PORTADNS -j DNAT --to $IPINTDNS2
	$IPTABLES -t nat -A POSTROUTING -p tcp -s $IPINTDNS2 --sport $PORTADNS -j SNAT --to $IPEXTDNS2
	$IPTABLES -t nat -A POSTROUTING -p udp -s $IPINTDNS2 --sport $PORTADNS -j SNAT --to $IPEXTDNS2

	##### LIBERAR HTTP ###################################################
	# Liberar INPUT e/ou FORWARD
	$IPTABLES -A INPUT -p tcp -s $REDEINTERNA --dport $PORTAHTTP -j ACCEPT
	$IPTABLES -A FORWARD -p tcp --dport $PORTAHTTP -j ACCEPT
	$IPTABLES -A FORWARD -p tcp --sport $PORTAHTTP -j ACCEPT
	# Regras para SNAT/DNAT
	$IPTABLES -t nat -A PREROUTING -p tcp -d $IPEXTWWW --dport $PORTAHTTP -j DNAT --to $IPINTWWW
	$IPTABLES -t nat -A POSTROUTING -p tcp -s $IPINTWWW --sport $PORTAHTTP -j SNAT --to $IPEXTWWW

	##### LIBERAR POP ####################################################
	# Liberar INPUT e/ou FORWARD
	$IPTABLES -A FORWARD -p tcp --dport $PORTAPOP -j ACCEPT
	$IPTABLES -A FORWARD -p tcp --sport $PORTAPOP -j ACCEPT
	# Regras para SNAT/DNAT
	$IPTABLES -t nat -A PREROUTING -p tcp -d $IPEXTMAIL --dport $PORTAPOP -j DNAT --to $IPINTMAIL
	$IPTABLES -t nat -A POSTROUTING -p tcp -s $IPINTMAIL --sport $PORTAPOP -j SNAT --to $IPEXTMAIL

	##### LIBERAR IMAP ###################################################
	# Liberar INPUT e/ou FORWARD
	$IPTABLES -A FORWARD -p tcp --dport $PORTAIMAP -j ACCEPT
	$IPTABLES -A FORWARD -p tcp --sport $PORTAIMAP -j ACCEPT
	# Regras para SNAT/DNAT
	$IPTABLES -t nat -A PREROUTING -p tcp -d $IPEXTMAIL --dport $PORTAIMAP -j DNAT --to $IPINTMAIL
	$IPTABLES -t nat -A POSTROUTING -p tcp -s $IPINTMAIL --sport $PORTAIMAP -j SNAT --to $IPEXTMAIL

	##### LIBERAR HTTPS ##################################################
	# Liberar INPUT e/ou FORWARD
	$IPTABLES -A INPUT -p tcp -s $REDEINTERNA --dport $PORTAHTTPS -j ACCEPT
	$IPTABLES -A FORWARD -p tcp --dport $PORTAHTTPS -j ACCEPT
	$IPTABLES -A FORWARD -p tcp --sport $PORTAHTTPS -j ACCEPT
	# Regras para SNAT/DNAT
	$IPTABLES -t nat -A PREROUTING -p tcp -d $IPEXTWWW --dport $PORTAHTTPS -j DNAT --to $IPINTWWW
	$IPTABLES -t nat -A POSTROUTING -p tcp -s $IPINTWWW --sport $PORTAHTTPS -j SNAT --to $IPEXTWWW

	##### LIBERAR PROXY ##################################################
	$IPTABLES -A INPUT -p tcp -s $LOOPBACK --dport $PORTAPROXY -j ACCEPT
	$IPTABLES -A INPUT -p tcp -s $REDEINTERNA --dport $PORTAPROXY -j ACCEPT

	##### LIBERAR VPN (OPENVPN) ##########################################
	# Liberar INPUT e/ou FORWARD
	$IPTABLES -A INPUT -p udp --dport $PORTAOVPN -j ACCEPT
	$IPTABLES -A INPUT -i $IFTUN -j ACCEPT
	$IPTABLES -A FORWARD -i $IFTUN -j ACCEPT

	##### LIBERAR NTPDATE ################################################
	$IPTABLES -A INPUT -p udp --dport $PORTANTP -j ACCEPT
	$IPTABLES -A FORWARD -p udp --dport $PORTANTP -j ACCEPT
	$IPTABLES -A FORWARD -p udp --sport $PORTANTP -j ACCEPT

	##### LIBERAR VNC ####################################################
	#$IPTABLES -A INPUT -p tcp --dport 5900 -j ACCEPT
	#$IPTABLES -t nat -A PREROUTING -p tcp -d $IPEXTFW --dport 5900 -j DNAT --to 192.168.0.1

	##### LIBERAR WEBMIN #################################################
	#$IPTABLES -A INPUT -p tcp -s $REDEINTERNA --dport 10000 -j ACCEPT

	##### LIBERAR ICMP ###################################################
	$IPTABLES -A INPUT -p icmp --icmp-type 0 -m limit --limit 2/s -j ACCEPT
	$IPTABLES -A INPUT -p icmp --icmp-type 3 -m limit --limit 2/s -j ACCEPT
	$IPTABLES -A INPUT -p icmp --icmp-type 5 -m limit --limit 2/s -j ACCEPT
	$IPTABLES -A INPUT -p icmp --icmp-type 8 -m limit --limit 2/s -j ACCEPT
	$IPTABLES -A INPUT -p icmp --icmp-type 11 -m limit --limit 2/s -j ACCEPT
	$IPTABLES -A INPUT -p icmp --icmp-type 12 -m limit --limit 2/s -j ACCEPT
	$IPTABLES -A FORWARD -p icmp --icmp-type 0 -m limit --limit 2/s -j ACCEPT
	$IPTABLES -A FORWARD -p icmp --icmp-type 3 -m limit --limit 2/s -j ACCEPT
	$IPTABLES -A FORWARD -p icmp --icmp-type 5 -m limit --limit 2/s -j ACCEPT
	$IPTABLES -A FORWARD -p icmp --icmp-type 8 -m limit --limit 2/s -j ACCEPT
	$IPTABLES -A FORWARD -p icmp --icmp-type 11 -m limit --limit 2/s -j ACCEPT
	$IPTABLES -A FORWARD -p icmp --icmp-type 12 -m limit --limit 2/s -j ACCEPT

	##### NEGAR IDENT ####################################################
	$IPTABLES -A INPUT -p tcp --dport 113 -j REJECT --reject-with tcp-reset
	$IPTABLES -A FORWARD -p tcp --dport 113 -j REJECT --reject-with tcp-reset

	##### RESET EM CONEXOES PARA PORTA DESCONHECIDAS #####################
	$IPTABLES -A INPUT -p tcp -j REJECT --reject-with tcp-reset

	##### HABILITANDO MASQUERADE DA REDE INTERNA #########################
	$IPTABLES -t nat -A POSTROUTING -s $REDEINTERNA -j MASQUERADE
    ;;
    nat )
	##### HABILITANDO MASQUERADE DA REDE INTERNA #########################
	$IPTABLES -t nat -A POSTROUTING -s $REDEINTERNA -j MASQUERADE
    ;;
    stop )
    	exit 0
    ;;
    * )
    	echo "Use: ./iptables.sh {start|stop|nat}"
    ;;
esac

PHP File Manager