File "rc.firewall-exemplo.sh"

Full path: /www/wwwroot/fabriciovc.eti.br/downloads/scripts/rc.firewall-exemplo.sh
File size: 6.5 KiB (6661 bytes)
MIME-type: text/x-shellscript
Charset: utf-8

Download   Open   Back

#!/bin/bash

##############################################################################
##### Autor: Fabricio Vaccari Constanski                                     #
#####        fabriciovc@fabriciovc.eti.br                                    #
##### Ultima Atualizacao: 03/01/2008                                         #
##############################################################################

##### 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.254.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=22
$IPTABLES -A INPUT -p tcp --dport $PSSH -j ACCEPT
	
case $1 in 
    start)
	##### DEFININDO AS PORTAS DOS SERVICOS ###############################
	#PORTAFTP="21"
	#PORTASMTP="25"
	PORTADNS="53"
	PORTAHTTP="80"
	#PORTAPOP="110"
	PORTANTP="123"
	#PORTASAMBA="137:139"
	#PORTAIMAP="143"
	#PORTALDAP="389"
	#PORTAHTTPS="443"
	#PORTAOVPN="1194"
	PORTAPROXY="3128"
	PORTASSH=$PSSH

	##### IPS DOS SERVIDORES - SEPARADOS POR ESPACO ######################
	IPS_SRV='192.168.254.100 192.168.254.101 192.168.254.102 192.168.254.253'

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

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

	##### LIBERAR SERVIDORES #############################################
	for IPS in $IPS_SRV
	do
	  $IPTABLES -A FORWARD -s $IPS -j ACCEPT
	done

	##### 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 DROP
	$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

	##### LIBERAR HTTP ###################################################
	$IPTABLES -A INPUT -p tcp --dport $PORTAHTTP -j ACCEPT
	$IPTABLES -A PREROUTING -t nat -i $IFEXTERNA -p tcp --dport 8080 -j REDIRECT --to-port $PORTAHTTP

	##### LIBERAR VPN (OPENVPN) ##########################################
	#$IPTABLES -A INPUT -p tcp --dport $PORTAOVPN -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

	##### 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 VNC KAEL ###############################################
	$IPTABLES -A FORWARD -p tcp --dport 5936 -j ACCEPT
	$IPTABLES -t nat -A PREROUTING -i $IFEXTERNA -p tcp --dport 5963 -j DNAT --to 192.168.254.103

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

	##### LIBERAR SERVIDORES #############################################
	for IPS_NAT in $IPS_SRV
	do
	  $IPTABLES -t nat -A PREROUTING -s $IPS_NAT -j RETURN
	done

	##### REDIRECIONAMENTO DA PORTA 80 - PROXY TRANSPARENTE ##############
	$IPTABLES -t nat -A PREROUTING -p tcp -s $REDEINTERNA -d 192.168.254.254 -j RETURN
	$IPTABLES -t nat -A PREROUTING -p tcp -s $REDEINTERNA --dport 80 -j REDIRECT --to-port 3128

	##### HABILITANDO MASQUERADE DA REDE INTERNA #########################
	$IPTABLES -t nat -A POSTROUTING -s $REDEINTERNA -j MASQUERADE

	##### CARREGANDO SISTEMA DE CONTROLE DE BANDA ########################
	/etc/init.d/htb.sh
    ;;
    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}"
	$0 start
    ;;
esac

PHP File Manager