File "rc.firewall-at.sh"

Full path: /www/wwwroot/fabriciovc.eti.br/downloads/windows/iptables/backups/rc.firewall-at.sh
File size: 12.35 KiB (12649 bytes)
MIME-type: text/x-shellscript
Charset: utf-8

Download   Open   Back

#!/bin/sh

# Envia IP para noip.com
#/usr/local/bin/noip2

#-- COMANDOS NECESSARIOS ------------------------------------------------------
IPTABLES=`which iptables`	# Comando iptables
MODPROBE=`which modprobe`	# Comando modprobe
PSNI=/proc/sys/net/ipv4		# /proc/sys/net/ipv4
#------------------------------------------------------------------------------

#-- CARREGANDO MODULOS --------------------------------------------------------
$MODPROBE ip_conntrack
$MODPROBE ip_conntrack_ftp
$MODPROBE ip_nat_ftp
$MODPROBE ip_conntrack_irc
$MODPROBE ip_nat_irc
#------------------------------------------------------------------------------

#-- APAGANDO REGRAS EXISTENTES ------------------------------------------------
$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 ALGUNS ENDEREÇOS DE REDE ----------------------------------------
LOOPBACK='127.0.0.0/8'		# Endereco de Loopback
IPLOCAL='10.0.0.254'		# Endereco IP local
REDELOCAL='10.0.0.0/22'		# Rede interna da empresa (IP/Mascara)
IFINTERNA='eth0'		# Placa de rede ligada na rede interna
IFEXTERNA='eth1'		# Placa de rede ligada na rede externa
#IFDMZ='eth2'			# Placa de rede ligada na DMZ
#------------------------------------------------------------------------------

#-- HABILITANDO E DESABILITANDO OPCOES DO KERNEL ------------------------------
echo 1 > $PSNI/ip_forward		# Habilita repasse de pacote
echo 1 > $PSNI/tcp_syncookies		# Habilita protecao contra synflood
echo 0 > $PSNI/icmp_echo_ignore_all	# Controle de ICMP
echo 1 > $PSNI/icmp_echo_ignore_broadcasts # Controle de ICMP

# Verifica rota de origem (Protecao p/ IP Spoofing)
for RP in $PSNI/conf/*/rp_filter; 
do 
  echo 1 > $RP;
done
#------------------------------------------------------------------------------

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

#-- LIBERAR SSH ---------------------------------------------------------------
$IPTABLES -A INPUT -p tcp -m tcp --dport 22022 -j ACCEPT
$IPTABLES -A PREROUTING -t nat -s $REDELOCAL -d 10.0.0.254 \
			-p tcp -m tcp --dport 22 -j REDIRECT --to-port 22022
#------------------------------------------------------------------------------

_START_FUNCTION () {

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

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

#-- LIBERAR CONECTIVIDADE SOCIAL DA CAIXA ECONOMICA ---------------------------
#$IPTABLES -A FORWARD -s $REDELOCAL -d 200.201.173.0/24 -j ACCEPT
$IPTABLES -A FORWARD -s $REDELOCAL -d 200.201.174.0/24 -j ACCEPT
#$IPTABLES -t nat -A PREROUTING -s $REDELOCAL -d 200.201.173.0/24 -j RETURN
$IPTABLES -t nat -A PREROUTING -s $REDELOCAL -d 200.201.174.0/24 -j RETURN
#------------------------------------------------------------------------------

#-- REDIRECT DE PORTA ---------------------------------------------------------
# Redireciona o trafego da 8081 para a 3128
$IPTABLES -A PREROUTING -t nat -p tcp -m tcp -s $REDELOCAL --dport 8081 -j REDIRECT --to-port 3128
#------------------------------------------------------------------------------

#-- LIBERAR TI ----------------------------------------------------------------
$IPTABLES -A FORWARD -m iprange --src-range 10.0.0.1-10.0.0.9 -j ACCEPT
$IPTABLES -t nat -A PREROUTING -m iprange --src-range 10.0.0.1-10.0.0.9 -j RETURN
#------------------------------------------------------------------------------

#-- LIBERAR SERVIDORES --------------------------------------------------------
$IPTABLES -A FORWARD -m iprange --src-range 10.0.0.200-10.0.0.254 -j ACCEPT
$IPTABLES -t nat -A PREROUTING -m iprange --src-range 10.0.0.200-10.0.0.254 -j RETURN
#------------------------------------------------------------------------------

#-- LIBERAR ESTACOES ----------------------------------------------------------
# Define os IPs das máquinas que serão liberadas (separadas por espaco)
HOST_IPS="10.0.0.9 10.0.0.150 10.0.0.152 10.0.2.9"

for HOSTIPS in $TI_IPS $HOST_IPS
do
  $IPTABLES -A FORWARD -s $HOSTIPS -j ACCEPT
  $IPTABLES -A PREROUTING -t nat -s $HOSTIPS -j RETURN
done
#------------------------------------------------------------------------------

#-- BLOQUEAR ALGUMAS PORTAS ---------------------------------------------------
# Define algumas portas que serão bloqueadas (separadas por espaco)
PORT_BLOQ="3128 8080 8081"

for PORTBLOQ in $PORT_BLOQ
do
  $IPTABLES -A FORWARD -p tcp -m tcp --dport $PORTBLOQ -j DROP
done
#------------------------------------------------------------------------------

#-- LIBERAR/BLOQUEAR MSN ------------------------------------------------------
# Bloquear estacoes
$IPTABLES -A FORWARD -p tcp -m multiport --dports 1863,5190 -j DROP
#------------------------------------------------------------------------------

#-- BLOQUEAR GTALK ------------------------------------------------------------
$IPTABLES -A FORWARD -s 10.0.1.28 -p tcp -m multiport --dport 5222,5223 -j ACCEPT
$IPTABLES -A FORWARD -s 10.0.1.28 -p udp -m multiport --dport 5222,5223 -j ACCEPT
# Negando acesso para os demais IPs
$IPTABLES -A FORWARD -p tcp -m multiport --dport 5222,5223 -j DROP
$IPTABLES -A FORWARD -p udp -m multiport --dport 5222,5223 -j DROP
#------------------------------------------------------------------------------

#-- LIBERAR CAMERAS DE MONITORAMENTO - 01 -------------------------------------
CAP_IP1="10.0.0.140"
CAM_PORTS1="3000,3001,3003,3700,8800,2000"
$IPTABLES -A FORWARD -p tcp -m multiport --dports $CAM_PORTS1 -d $CAP_IP1 -j ACCEPT
$IPTABLES -A PREROUTING -t nat -i $IFEXTERNA -p tcp -m multiport --dports $CAM_PORTS1 -j DNAT --to $CAP_IP1
#------------------------------------------------------------------------------

#-- LIBERAR ACESSOS AO PROGRAMA RAIS ------------------------------------------
#$IPTABLES -A FORWARD -p tcp -m tcp -d 161.148.185.46/32 --dport 3007 -j ACCEPT
#$IPTABLES -t nat -A PREROUTING -i eth0 -p tcp -m tcp -d 161.148.185.46/32 --dport 3007 -j RETURN
#$IPTABLES -t nat -A POSTROUTING -o eth0 -p tcp -m tcp -d 161.148.185.46/32 --dport 3007 -j MASQUERADE
#------------------------------------------------------------------------------

#-- LIBERAR ACESSOS À PORTAS E PROGRAMAS ESPECIFICOS --------------------------
$IPTABLES -A FORWARD -p tcp -m tcp --dport 3150 -d 10.0.2.117 -j ACCEPT
$IPTABLES -A PREROUTING -t nat -i $IFEXTERNA -p tcp -m tcp --dport 3150 -j DNAT --to 10.0.2.117
#------------------------------------------------------------------------------

#-- LIBERAR RETORNO DE CONEXOES -----------------------------------------------
$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 REDE LOCAL --------------------------------------------------------
$IPTABLES -A INPUT -s $REDELOCAL -j ACCEPT
$IPTABLES -A FORWARD -s $REDELOCAL -p tcp -m tcp --dport 80 -j RETURN
$IPTABLES -A FORWARD -s $REDELOCAL -j ACCEPT
#------------------------------------------------------------------------------

#-- LIBERAR SMTP --------------------------------------------------------------
#$IPTABLES -A INPUT -p tcp --dport 25 -j ACCEPT
#$IPTABLES -A FORWARD -p tcp --dport 25 -j ACCEPT
#------------------------------------------------------------------------------

#-- LIBERAR DNS ---------------------------------------------------------------
$IPTABLES -A INPUT -s $REDELOCAL -p tcp --dport 53 -j ACCEPT
$IPTABLES -A INPUT -s $REDELOCAL -p udp --dport 53 -j ACCEPT
$IPTABLES -A INPUT -p tcp --sport 53 -j ACCEPT
$IPTABLES -A INPUT -p udp --sport 53 -j ACCEPT
$IPTABLES -A FORWARD -s $REDELOCAL -p tcp --dport 53 -j ACCEPT
$IPTABLES -A FORWARD -s $REDELOCAL -p udp --dport 53 -j ACCEPT
$IPTABLES -A FORWARD -p tcp --sport 53 -j ACCEPT
$IPTABLES -A FORWARD -p udp --sport 53 -j ACCEPT
#------------------------------------------------------------------------------

#-- LIBERAR HTTP --------------------------------------------------------------
$IPTABLES -A INPUT -s $REDELOCAL -p tcp -m tcp --dport 80 -j ACCEPT
#------------------------------------------------------------------------------

#-- LIBERAR NTP ---------------------------------------------------------------
$IPTABLES -A FORWARD -p udp -m udp --sport 123 -j ACCEPT
#------------------------------------------------------------------------------

#-- LIBERAR IMAP --------------------------------------------------------------
#$IPTABLES -A FORWARD -p tcp --dport 143 -j ACCEPT
#------------------------------------------------------------------------------

#-- LIBERAR SNMPD -------------------------------------------------------------
$IPTABLES -A INPUT -s $REDELOCAL -p udp -m udp --dport 161 -j ACCEPT
#------------------------------------------------------------------------------

#-- LIBERAR HTTPS -------------------------------------------------------------
#$IPTABLES -A FORWARD -p tcp --dport 443 -j ACCEPT
#------------------------------------------------------------------------------

#-- LIBERAR PING (PROTOCOLO 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
#------------------------------------------------------------------------------

#-- ALGUMAS PROTECOES ADICIONAIS ----------------------------------------------
# Protecao contra syn-flood
$IPTABLES -A FORWARD -p tcp --syn -m limit --limit 2/s -j ACCEPT

# Protecao contra ping da morte
$IPTABLES -A FORWARD -p icmp --icmp-type echo-request -m limit --limit 1/s -j ACCEPT

# Protecao contra port scanners
$IPTABLES -A FORWARD -p tcp --tcp-flags SYN,ACK,FIN,RST RST -m limit --limit 1/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 PORTAS DESCONHECODAS -------------------------------
$IPTABLES -A INPUT -p tcp -j REJECT --reject-with tcp-reset
#------------------------------------------------------------------------------

#-- NAT PREROUTING ------------------------------------------------------------
# Libera acesso ao servidor FW
$IPTABLES -A PREROUTING -t nat -p tcp -m tcp -s $REDELOCAL -d $IPLOCAL -j RETURN
#------------------------------------------------------------------------------

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

#-- START/STOP/NAT RULES ------------------------------------------------------
case $1 in 
  start)
    _START_FUNCTION
  ;;
  nat)
    #-- HABILITANDO MASQUERADE DA REDE INTERNA
    $IPTABLES -t nat -A POSTROUTING -s $REDELOCAL -j MASQUERADE
  ;;
  stop)
    exit 0
  ;;
  *)
    echo "Use: $0 {start|stop|nat}"
    #/etc/init.d/rc.firewall start
  ;;
esac
#------------------------------------------------------------------------------

PHP File Manager