#!/bin/sh#Configuracao do Firewall atraves do iptables#Autoria do Script#"::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::"#" Script de Firewall - IPTABLES"#" Criado por: Marcio Ferreira da Costa"#" Administrador de Redes"#" mfcostarj@yahoo.com.br"#" Uso: firewall start stop restart"#"::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::"#Declaracao de variaveisPATH=/sbin:/bin:/usr/sbin:/usr/binIPTABLES="/sbin/iptables"MACLIST="/etc/regras/macsliberadosfirewall"PROGRAMA="/etc/init.d/firewall"#portas liberadas e bloqueadasPORTSLIB="/etc/regras/portslib"PORTSBLO="/etc/regras/portsblo"#Interfaces de RedeLAN=eth1WAN=eth0REDE="192.168.253.0/24"SITESNEGADOS=/etc/regras/sitesnegados# Os diversos modulos do iptables sao chamdos atraves do modprobemodprobe ip_tablesmodprobe iptable_natmodprobe ip_conntrackmodprobe ip_conntrack_ftpmodprobe ip_nat_ftpmodprobe ipt_LOGmodprobe ipt_REJECTmodprobe ipt_MASQUERADEmodprobe ipt_statemodprobe ipt_multiportmodprobe iptable_manglemodprobe ipt_tosmodprobe ipt_limitmodprobe ipt_markmodprobe ipt_MARKcase "$1" instart)#mensagem de inicializacaoecho "::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::"echo " Script de Firewall - IPTABLES"echo " Criado por: Marcio Ferreira da Costa"echo " Administrador de Redes"echo " mfcostarj@yahoo.com.br"echo " Uso: firewall start stop restart"echo "::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::"echoecho "=============================================="echo ":INICIANDO A CONFIGURACAO DO FIREWALL NETFILTER "echo ": ATRAVES DO IPTABLES : "echo "=============================================="$IPTABLES -F$IPTABLES -F INPUT$IPTABLES -F OUTPUT$IPTABLES -F FORWARD$IPTABLES -t mangle -F$IPTABLES -t nat -F$IPTABLES -X$IPTABLES -P INPUT DROP$IPTABLES -P OUTPUT ACCEPT$IPTABLES -P FORWARD DROP# ativar o redirecionamento no arquivo ip_forwardecho "1" > /proc/sys/net/ipv4/ip_forwardecho "ativado o redirecionamento no arquivo ip_forward"echo "ON .................................................[ OK ]"#habilitando o fluxo interno entre os processos$IPTABLES -I INPUT -i lo -j ACCEPT$IPTABLES -I OUTPUT -o lo -j ACCEPTecho "ativado o fluxo interno entre os processos"echo "ON .................................................[ OK ]"#liberar as portas principais do servidorfor i in `cat $PORTSLIB`; do$IPTABLES -A INPUT -p tcp --dport $i -j ACCEPT$IPTABLES -A FORWARD -p tcp --dport $i -j ACCEPT$IPTABLES -A OUTPUT -p tcp --sport $i -j ACCEPTdone$IPTABLES -I INPUT -m state --state ESTABLISHED -j ACCEPT$IPTABLES -I INPUT -m state --state RELATED -j ACCEPT$IPTABLES -I OUTPUT -p icmp -o $WAN -j ACCEPT$IPTABLES -I INPUT -p icmp -j ACCEPTecho "ativado as portas abertas para estabelecer conexoes"echo "ativado a liberacao das portas principais do servidor $HOSTNAME"echo "ON .................................................[ OK ]"#ATIVAR O REDIRECIONAMENTO (para ambiente flexivel)#LIBERAR RADIO UOL (para ambiente flexivel)#bloquear acesso de sites negados a rede internafor i in `cat $SITESNEGADOS`; do$IPTABLES -t filter -I FORWARD -s $REDE -d $i -j DROP$IPTABLES -t filter -I FORWARD -s $i -d $REDE -j DROP$IPTABLES -t filter -A INPUT -s $i -j DROP$IPTABLES -t filter -A OUTPUT -d $i -j DROPdoneecho "ativado o bloqueio de envio de pacotes com origem aos sites negados"echo "ON .................................................[ OK ]"#Bloqueio ping da morteecho "0" > /proc/sys/net/ipv4/icmp_echo_ignore_all$IPTABLES -N PING-MORTE$IPTABLES -A INPUT -p icmp --icmp-type echo-request -j PING-MORTE$IPTABLES -A PING-MORTE -m limit --limit 1/s --limit-burst 4 -j RETURN$IPTABLES -A PING-MORTE -j DROPecho "ativado o bloqueio a tentativa de ataque do tipo ping da morte"echo "ON .................................................[ OK ]"#bloquear ataque do tipo SYN-FLOODecho "0" > /proc/sys/net/ipv4/tcp_syncookies$IPTABLES -N syn-flood$IPTABLES -A INPUT -i $WAN -p tcp --syn -j syn-flood$IPTABLES -A syn-flood -m limit --limit 1/s --limit-burst 4 -j RETURN$IPTABLES -A syn-flood -j DROPecho "ativado o bloqueio a tentativa de ataque do tipo SYN-FLOOD"echo "ON .................................................[ OK ]"#Bloqueio de ataque ssh de forca bruta$IPTABLES -N SSH-BRUT-FORCE$IPTABLES -A INPUT -i $WAN -p tcp --dport 22 -j SSH-BRUT-FORCE$IPTABLES -A SSH-BRUT-FORCE -m limit --limit 1/s --limit-burst 4 -j RETURN$IPTABLES -A SSH-BRUT-FORCE -j DROPecho "ativado o bloqueio a tentativa de ataque do tipo SSH-BRUT-FORCE"echo "ON .................................................[ OK ]"#Bloqueio de portasfor i in `cat $PORTSBLO`; do$IPTABLES -A INPUT -p tcp -i $WAN --dport $i -j DROP$IPTABLES -A INPUT -p udp -i $WAN --dport $i -j DROP$IPTABLES -A FORWARD -p tcp --dport $i -j DROP$IPTABLES -A FORWARD -p udp