File "rc.firewall-arg.sh"
Full path: /www/wwwroot/fabriciovc.eti.br/downloads/windows/backups/rc.firewall-arg.sh
File size: 13.83 KiB (14161 bytes)
MIME-type: text/x-shellscript
Charset: utf-8
#!/bin/sh
#
# rc.firewall agent start/stop script.
#
# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #
# Script de firewall com iptables #
# http://downloads.fabriciovc.eti.br/iptables/ #
# #
# Copyright (C) 2014 - Fabricio Vaccari Constanski #
# Fabricio Vaccari Constanski | fabriciovc@fabriciovc.eti.br #
# #
# Creative Commons #
# Atribuicao-Compartilhamento pela mesma Licenca 3.0 Brasil. #
# http://creativecommons.org/licenses/by-sa/3.0/br/ #
# #
# Você tem a liberdade de: #
# * Compartilhar: copiar, distribuir e transmitir a obra. #
# * Remixar: criar obras derivadas. #
# * Fazer uso comercial da obra #
# #
# Sob as seguintes condições: #
# * Atribuição - Você deve creditar a obra da forma especificada pelo autor #
# * Compartilhamento pela mesma licença - Se você alterar, transformar ou #
# criar em cima desta obra, você poderá distribuir a obra resultante #
# apenas sob a mesma licença, ou sob uma licença similar à presente. #
# * Aviso: Para qualquer reutilização ou distribuição, você deve deixar claro #
# a terceiros os termos da licença a que se encontra submetida esta #
# obra. A melhor maneira de fazer isso é com um link para a página #
# http://creativecommons.org/licenses/by/3.0/br/. #
# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # #
#=============================================================================#
# Comandos
IP=`which ip`
IPTABLES=`which iptables`
MODPROBE=`which modprobe`
#------------------------------------------------------------------------------
# /proc/sys/net/ipv4
PSNI=/proc/sys/net/ipv4
#------------------------------------------------------------------------------
# Variaveis de Interface
IF_LAN="eth1"
IF_LINK="eth0"
IF_TUN="tun+"
#------------------------------------------------------------------------------
# Variaveis de rede
IP_LAN="172.16.20.0/24"
#------------------------------------------------------------------------------
IP_18="200.195.191.18"
IP_19="200.195.191.19"
IP_20="200.195.191.20"
IP_21="200.195.191.21"
IP_22="200.195.191.22"
#------------------------------------------------------------------------------
# Variaveis para definir IPs de Servidores
IP_SRV_ANP="192.168.2.17"
IP_SRV_NTAGRO="192.168.2.19"
IP_SRV_SALONE01="192.168.2.200"
IP_SRV_SALONE02="192.168.2.201"
IP_SRV_VELTRAC="192.168.2.18"
#------------------------------------------------------------------------------
# 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)
# Definir como 0 quando estiver trabalhando com roteamento avancado
for RP in ${PSNI}/conf/*/rp_filter ; do echo 1 > ${RP} ; done
# Desabilita timestamps
echo 0 > /proc/sys/net/ipv4/tcp_timestamps
# Habilita protecao a mensagem de bad error
echo 1 > /proc/sys/net/ipv4/icmp_ignore_bogus_error_responses
# Desabilita redirecionamentos de ICMP
echo 0 > /proc/sys/net/ipv4/conf/all/accept_redirects
# Controle de ICMP
echo 0 > ${PSNI}/icmp_echo_ignore_all
echo 1 > ${PSNI}/icmp_echo_ignore_broadcasts
#------------------------------------------------------------------------------
# Carregando modulos
${MODPROBE} ip_tables
${MODPROBE} iptable_filter
${MODPROBE} iptable_nat
${MODPROBE} ip_conntrack
${MODPROBE} ip_conntrack_ftp
${MODPROBE} ip_nat_ftp
${MODPROBE} ipt_LOG
${MODPROBE} ipt_REJECT
${MODPROBE} ipt_state
${MODPROBE} ipt_MASQUERADE
#------------------------------------------------------------------------------
# Limpando 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 default ACCEPT
${IPTABLES} -P INPUT ACCEPT
${IPTABLES} -P FORWARD ACCEPT
${IPTABLES} -P OUTPUT ACCEPT
#------------------------------------------------------------------------------
# Bloquear IPs
#
#IPS_BLOQ="
#"
#for IPSBLOQ in ${IPS_BLOQ}
#do
# ${IPTABLES} -A INPUT -s ${IPSBLOQ} -j DROP
# ${IPTABLES} -A FORWARD -s ${IPSBLOQ} -j DROP
# #${IPTABLES} -A PREROUTING -t nat -s ${IPSBLOQ} -j DROP
#done
#------------------------------------------------------------------------------
# Liberar SSH
SSH_PORT="65522"
$IPTABLES -A INPUT -p tcp -m tcp --dport ${SSH_PORT} -j ACCEPT
#------------------------------------------------------------------------------
case $1 in
start)
#-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
# DEFININDO POLITICA DEFAULT
#-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
# Definindo politica padrao DROP
${IPTABLES} -P INPUT DROP
${IPTABLES} -P FORWARD DROP
${IPTABLES} -P OUTPUT ACCEPT
#--------------------------------------------------------------------------
#-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
# CADEIA INPUT
#-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
# Liberar loopback
${IPTABLES} -A INPUT -i lo -j ACCEPT
#--------------------------------------------------------------------------
# Liberar rede interna
${IPTABLES} -A INPUT -i ${IF_LAN} -j ACCEPT
${IPTABLES} -A INPUT -i ${IF_TUN} -j ACCEPT
${IPTABLES} -A INPUT -i eth2 -j ACCEPT
${IPTABLES} -A INPUT -i eth3 -j ACCEPT
#--------------------------------------------------------------------------
# Liberar retorno de conexoes
${IPTABLES} -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
#--------------------------------------------------------------------------
# Liberar ping (ICMP)
${IPTABLES} -A INPUT -p icmp --icmp-type 0 -m limit --limit 1/s -j ACCEPT
${IPTABLES} -A INPUT -p icmp --icmp-type 3 -m limit --limit 1/s -j ACCEPT
${IPTABLES} -A INPUT -p icmp --icmp-type 5 -m limit --limit 1/s -j ACCEPT
${IPTABLES} -A INPUT -p icmp --icmp-type 8 -m limit --limit 1/s -j ACCEPT
${IPTABLES} -A INPUT -p icmp --icmp-type 11 -m limit --limit 1/s -j ACCEPT
${IPTABLES} -A INPUT -p icmp --icmp-type 12 -m limit --limit 1/s -j ACCEPT
#--------------------------------------------------------------------------
# Protecao contra syn-flood
${IPTABLES} -A INPUT -p tcp -m tcp --tcp-flags ALL FIN,URG,PSH -j DROP
${IPTABLES} -A INPUT -p tcp -m tcp --tcp-flags SYN,RST SYN,RST -j DROP
${IPTABLES} -A INPUT -p tcp -m tcp --tcp-flags SYN,FIN SYN,FIN -j DROP
${IPTABLES} -A INPUT -p tcp -m tcp --tcp-flags ALL NONE -j DROP
${IPTABLES} -A INPUT -p tcp -m tcp --sport 0 --tcp-flags FIN,SYN,RST,ACK SYN -j DROP
#--------------------------------------------------------------------------
# Reset em conexoes para portas desconhecidas
${IPTABLES} -A INPUT -p tcp -j REJECT --reject-with tcp-reset
#--------------------------------------------------------------------------
# Protecao contra syn-flood
${IPTABLES} -A INPUT -p tcp --syn -m limit --limit 1/s -j ACCEPT
#--------------------------------------------------------------------------
# Protecao contra port scanners
${IPTABLES} -A INPUT -p tcp --tcp-flags SYN,ACK,FIN,RST RST -m limit --limit 1/s -j ACCEPT
#--------------------------------------------------------------------------
# Habilitando LOG
#${IPTABLES} -A INPUT -j LOG --log-level 7 --log-prefix "INPUT LOG: "
#--------------------------------------------------------------------------
#-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
# CADEIA FORWARD
#-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
# Liberar retorno de conexoes
${IPTABLES} -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT
#--------------------------------------------------------------------------
# Liberar rede interna
${IPTABLES} -A FORWARD -i ${IF_LAN} -j ACCEPT
${IPTABLES} -A FORWARD -i ${IF_TUN} -j ACCEPT
${IPTABLES} -A FORWARD -o ${IF_TUN} -j ACCEPT
${IPTABLES} -A FORWARD -i eth2 -j ACCEPT
${IPTABLES} -A FORWARD -i eth3 -j ACCEPT
#--------------------------------------------------------------------------
# Liberar Portas
${IPTABLES} -A FORWARD -p tcp -m tcp --dport 1025 -j ACCEPT
${IPTABLES} -A FORWARD -p tcp -m tcp --dport 3389 -j ACCEPT
${IPTABLES} -A FORWARD -p tcp -m tcp --dport 4820 -j ACCEPT
${IPTABLES} -A FORWARD -p tcp -m tcp --dport 8200 -j ACCEPT
${IPTABLES} -A FORWARD -p tcp -m tcp --dport 8201 -j ACCEPT
${IPTABLES} -A FORWARD -p tcp -m tcp --dport 33389 -j ACCEPT
${IPTABLES} -A FORWARD -p tcp -m tcp --dport 34200 -j ACCEPT
${IPTABLES} -A FORWARD -p tcp -m tcp --dport 34201 -j ACCEPT
${IPTABLES} -A FORWARD -p tcp -m tcp --dport 35200 -j ACCEPT
${IPTABLES} -A FORWARD -p tcp -m tcp --dport 35201 -j ACCEPT
#--------------------------------------------------------------------------
# Liberar ping (ICMP)
${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
#--------------------------------------------------------------------------
# Reset em conexoes para portas desconhecidas
${IPTABLES} -A FORWARD -p tcp -j REJECT --reject-with tcp-reset
#--------------------------------------------------------------------------
# Protecao contra syn-flood
${IPTABLES} -A FORWARD -p tcp --syn -m limit --limit 2/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
#--------------------------------------------------------------------------
# Habilitando LOG
#${IPTABLES} -A FORWARD -j LOG --log-level 7 --log-prefix "FORWARD LOG: "
#--------------------------------------------------------------------------
#-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
# CADEIA NAT PREROUTING
#-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
# NATs de entrada
# NTAGRO RDP
${IPTABLES} -A PREROUTING -t nat -i ${IF_LINK} -d ${IP_20} -p tcp --dport 3389 -j DNAT --to ${IP_SRV_NTAGRO}
# Equipamentos ANP
${IPTABLES} -A PREROUTING -t nat -i ${IF_LINK} -d ${IP_20} -p tcp --dport 1025 -j DNAT --to ${IP_SRV_ANP}
${IPTABLES} -A PREROUTING -t nat -i ${IF_LINK} -d ${IP_20} -p tcp --dport 4820 -j DNAT --to ${IP_SRV_VELTRAC}
${IPTABLES} -A PREROUTING -t nat -i ${IF_LINK} -d ${IP_20} -p tcp --dport 33389 -j DNAT --to ${IP_SRV_VELTRAC}:3389
# Standalone 001
${IPTABLES} -A PREROUTING -t nat -i ${IF_LINK} -d ${IP_21} -p tcp --dport 8200 -j DNAT --to ${IP_SRV_SALONE01}
${IPTABLES} -A PREROUTING -t nat -i ${IF_LINK} -d ${IP_21} -p tcp --dport 34200 -j DNAT --to ${IP_SRV_SALONE01}
${IPTABLES} -A PREROUTING -t nat -i ${IF_LINK} -d ${IP_21} -p tcp --dport 35200 -j DNAT --to ${IP_SRV_SALONE01}
# Standalone 002
${IPTABLES} -A PREROUTING -t nat -i ${IF_LINK} -d ${IP_21} -p tcp --dport 8201 -j DNAT --to ${IP_SRV_SALONE02}
${IPTABLES} -A PREROUTING -t nat -i ${IF_LINK} -d ${IP_21} -p tcp --dport 34201 -j DNAT --to ${IP_SRV_SALONE02}
${IPTABLES} -A PREROUTING -t nat -i ${IF_LINK} -d ${IP_21} -p tcp --dport 35201 -j DNAT --to ${IP_SRV_SALONE02}
#--------------------------------------------------------------------------
#-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
# CADEIA NAT POSTROUTING
#-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
# Regras SNAT
${IPTABLES} -A POSTROUTING -t nat -s ${IP_SRV_ANP} -o ${IF_LINK} -j SNAT --to ${IP_20}
${IPTABLES} -A POSTROUTING -t nat -s ${IP_SRV_NTAGRO} -o ${IF_LINK} -j SNAT --to ${IP_20}
${IPTABLES} -A POSTROUTING -t nat -s ${IP_SRV_VELTRAC} -o ${IF_LINK} -j SNAT --to ${IP_20}
${IPTABLES} -A POSTROUTING -t nat -s ${IP_SRV_SALONE01} -o ${IF_LINK} -j SNAT --to ${IP_21}
${IPTABLES} -A POSTROUTING -t nat -s ${IP_SRV_SALONE02} -o ${IF_LINK} -j SNAT --to ${IP_21}
#--------------------------------------------------------------------------
# Liberar NAT
${IPTABLES} -A POSTROUTING -t nat -o ${IF_LINK} -j MASQUERADE
#--------------------------------------------------------------------------
#-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
# CADEIA MANGLE
#-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
#--------------------------------------------------------------------------
exit 0
;;
nat)
# Liberar NAT
${IPTABLES} -A POSTROUTING -t nat -o ${IF_LINK} -j MASQUERADE
exit 0
;;
stop)
ipRouteStop
exit 0
;;
*)
echo "Use: $0 {start|stop|nat}"
;;
esac