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