File "rc.firewall-at.sh"
Full path: /www/wwwroot/fabriciovc.eti.br/downloads/windows/ltsp/iptables/backups/rc.firewall-at.sh
File size: 12.35 KiB (12649 bytes)
MIME-type: text/x-shellscript
Charset: utf-8
#!/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
#------------------------------------------------------------------------------