felipedc
(usa Debian)
Enviado em 29/08/2011 - 12:15h
Pessoal bom dia,
Reconfigurei totalmente meu script de firewall seguindo o tutorial
do amigo Magno aqui do forum, porém não sei
aonde exatamente estou cometendo o erro e minha regra nat
de redirecionar porta não está 'funcionando',
segue abaixo meu script, se possivel dar alguma outra dica
tbm ficaria mto grato.
Outra coisa seria em relação as Politicas Padrão, se adiciono as regras de INPUT e FORWARD como DROP, não consigo navegar, porque exatamente? OBG
OBS: Adicionei tambem os arquivos que estão no diretorio init.d, no qual criei um link
para o arquivo que esta dentro do diretorio /etc/firewall, por questão de organização mesmo
este 'atalho'
arquivo firewall.sh localizado em /etc/init.d/
case "$1" in
start)
/etc/firewall/firewall start
;;
restart)
/etc/firewall/firewall restart
;;
stop)
/etc/firewall/firewall stop
;;
*)
/etc/firewall/firewall
esac
arquivo firewall localizado em /etc/firewall/
# Identifica qual é o interpretador que será usado na execução do script:
#!/bin/sh
# "#| Script de Firewall - IPTABLES"
# "#| Editado por: Victor Felipe Dolce Cardoso"
# "#| Técnico em Informática e Redes"
# "#| victorfelipedolcec@hotmail.com"
# "#| Créditos a Marcelo Magno ® Comunidade Viva O Linux!"
# "#| Uso: firewall start|stop|restart"
# Declaração de variáveis
PATH=/sbin:/bin:/usr/sbin:/usr/bin
IPTABLES="/sbin/iptables"
IPSLIBERADOS="/etc/firewall/IPSLIBERADOS"
REDILIST="/etc/firewall/REDILIST"
PROGRAMA="/etc/firewall/firewall"
# Portas liberadas e bloqueadas
PORTSLIB="/etc/firewall/PORTSLIB"
PORTSBLO="/etc/firewall/PORTSBLO"
# Interfaces de Rede
WAN=eth0
LAN=eth1
REDE="192.168.0.0/24"
IP_EXTERNO="XXX.XXX.XXX.XXX"
# Servidores
SERVIDORDADOS="192.168.0.250"
SERVIDORINTERNET="192.168.0.254"
#Carregando Módulos Necessários
modprobe ip_tables
modprobe iptable_nat
modprobe ip_conntrack
modprobe ip_conntrack_ftp
modprobe ip_nat_ftp
modprobe ipt_LOG
modprobe ipt_REJECT
modprobe ipt_MASQUERADE
modprobe ipt_state
modprobe ipt_multiport
modprobe iptable_mangle
modprobe ipt_tos
modprobe ipt_limit
modprobe ipt_mark
modprobe ipt_MARK
case "$1" in
start)
# Mensagem de inicialização
echo #| Script de Firewall - IPTABLES \e[m'
echo #| Editado por: Victor Felipe Dolce Cardoso \e[m'
echo #| Técnico em Informática e Redes \e[m'
echo #| victorfelipedolcec@hotmail.com \e[m'
echo #| Créditos a Marcelo Magno ® Comunidade Viva O Linux! \e[m'
echo #| Uso: firewall start|stop|restart \e[m'
echo
echo "|====================================|"
echo "|INICIANDO A CONFIGURAÇÃO DO FIREWALL|"
echo "| NETFILTER ATRAVÉS DO IPTABLES |"
echo "|====================================|"
echo -n "Zerando Regras..................." ; sleep 1s ;
$IPTABLES -F
$IPTABLES -F INPUT
$IPTABLES -F OUTPUT
$IPTABLES -F FORWARD
$IPTABLES -t mangle -F
$IPTABLES -t nat -F
$IPTABLES -X
echo "[OK]"
echo -n "Políticas Padrão..................." ; sleep 1s ;
# Bloqueia conexões de entrada e redirecionamento
$IPTABLES -P INPUT ACCEPT
$IPTABLES -P OUTPUT ACCEPT
$IPTABLES -P FORWARD ACCEPT
echo "[OK]"
# Ativar o redirecionamento no arquivo ip_forward
echo "1" > /proc/sys/net/ipv4/ip_forward
# Habilitando o fluxo interno entre os processos
$IPTABLES -I INPUT -i lo -j ACCEPT
$IPTABLES -I OUTPUT -o lo -j ACCEPT
echo "Liberando Portas" ; sleep 1s ;
for i in `cat $PORTSLIB`; do
PORTA=`echo $i | cut -d ';' -f 1`
NOME=`echo $i | cut -d ';' -f 2`
echo -n "Liberando Servico $NOME($PORTA)......................." ; sleep 1 ;
$IPTABLES -A INPUT -p tcp --dport $PORTA -j ACCEPT
$IPTABLES -A FORWARD -p tcp --dport $PORTA -j ACCEPT
$IPTABLES -A OUTPUT -p tcp --sport $PORTA -j ACCEPT
echo "[OK]"
done
$IPTABLES -A INPUT -m state --state NEW -j ACCEPT ;
$IPTABLES -A INPUT -m state --state ESTABLISHED -j ACCEPT ;
$IPTABLES -A INPUT -m state --state RELATED -j ACCEPT ;
$IPTABLES -A OUTPUT -p icmp -o $WAN -j ACCEPT ;
$IPTABLES -A INPUT -p icmp -j ACCEPT ;
echo "Portas Liberadas!"
echo "Redirecionamento de Portas" ; sleep 1s ;
for i in `cat $REDILIST`; do
REDIPROTO=`echo $i | cut -d ';' -f 1`
REDISERVICO=`echo $i | cut -d ';' -f 2`
REDIP=`echo $i | cut -d ';' -f 3`
REDIPORTA=`echo $i | cut -d ';' -f 4`
echo "PROTOCOLO: $REDIPROTO"
echo "SERVICO: $REDISERVICO"
echo "IP DE DESTINO: $REDIP"
echo "PORTA DE ORIGEM: $REDIPORTA"
echo -n "SERVICO $REDISERVICO........................" ; sleep 1s ;
$IPTABLES -t nat -A PREROUTING -p $REDIPROTO -i $WAN --dport $REDIPORTA -j DNAT --to $REDIP
echo "[OK]"
done
echo "Redirecionamento OK!"
echo "Liberando Conexão a IPS sem intermédio do Proxy" ; sleep 1s ;
for i in `cat $IPSLIBERADOS `; do
IPLIBERADO=`echo $i | cut -d ';' -f 1`
NOME=`echo $i | cut -d ';' -f 2`
echo -n "Conexão Liberada a $NOME " ; sleep 1 ;
$IPTABLES -A FORWARD -s $IPLIBERADO -j ACCEPT
$IPTABLES -t nat -A PREROUTING -p tcp --dport 80 -s $IPLIBERADO -j RETURN
echo "[OK]"
done
echo "Conexões Liberadas!"
echo -n "Bloquear Ping da Morte..................." ; sleep 1s ;
echo "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 DROP
echo "[OK]"
echo -n "Bloquear ataque do tipo SYN-FLOOD..................." ; sleep 1s ;
echo "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 DROP
echo "[OK]"
echo -n "Bloqueio de Ataque SSH de Força Bruta..................." ; sleep 1s ;
$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 DROP
echo "[OK]"
echo "Bloqueando Portas" ; sleep 1s ;
for i in `cat $PORTSBLO`; do
PORTA=`echo $i | cut -d ';' -f 1`
NOME=`echo $i | cut -d ';' -f 2`
echo -n "Bloqueando Porta $NOME($PORTA)......................." ; sleep 1 ;
$IPTABLES -A INPUT -p tcp -i $WAN --dport $PORTA -j DROP
$IPTABLES -A INPUT -p udp -i $WAN --dport $PORTA -j DROP
$IPTABLES -A FORWARD -p tcp --dport $PORTA -j DROP
$IPTABLES -A FORWARD -p udp --dport $PORTA -j DROP
$IPTABLES -A OUTPUT -p tcp --dport $PORTA -j DROP
$IPTABLES -A OUTPUT -p udp --dport $PORTA -j DROP
echo "[OK]"
done
echo "Portas Bloqueadas!"
echo -n "Bloqueio Anti-Spoofings..................." ; sleep 1s ;
$IPTABLES -A INPUT -s 10.0.0.0/8 -i $WAN -j DROP
$IPTABLES -A INPUT -s 127.0.0.0/8 -i $WAN -j DROP
$IPTABLES -A INPUT -s 172.16.0.0/12 -i $WAN -j DROP
$IPTABLES -A INPUT -s 192.168.0.0/16 -i $WAN -j DROP
echo "[OK]"
echo -n "Bloqueio de scanners ocultos (Sheal Scan) ..................." ; sleep 1s ;
$IPTABLES -A FORWARD -p tcp --tcp-flags SYN,ACK, FIN, -m limit --limit 1/s -j ACCEPT
echo "[OK]"
#echo -n "Ativando Proxy Transparente..................." ; sleep 1s ;
$IPTABLES -t nat -A PREROUTING -s $REDE -p tcp --dport 80 -j REDIRECT --to-port 3128
echo "[OK]"
echo -n "Mascarando Interface..................." ; sleep 1s ;
$IPTABLES -t nat -A POSTROUTING -o $WAN -j MASQUERADE
echo "[OK]"
echo
echo "|=====================================|"
echo "| TERMINADA A CONFIGURAÇÃO DO FIREWALL|"
echo "| NETFILTER ATRAVÉS DO IPTABLES |"
echo "|=====================================|"
echo "FIREWALL ATIVADO - SISTEMA PREPARADO"
echo "SCRIPT DE FIREWALL CONFIGURADO POR :-) VICTOR FELIPE :-)" ;
echo -e '\e[31;5m Free of necessity ... Linux by choice. \e[m' ; sleep 3 ;
;;
stop)
$IPTABLES -F
$IPTABLES -F INPUT
$IPTABLES -F OUTPUT
$IPTABLES -F FORWARD
$IPTABLES -t mangle -F
$IPTABLES -t nat -F
$IPTABLES -X
$IPTABLES -Z
$IPTABLES -P INPUT ACCEPT
$IPTABLES -P OUTPUT ACCEPT
$IPTABLES -P FORWARD ACCEPT
echo "FIREWALL DESCARREGADO - SISTEMA LIBERADO"
echo
;;
restart)
$PROGRAMA stop
$PROGRAMA start
;;
*)
SEG='12'
while [ $SEG != 0 ] ; do
clear ;
echo "Use: $N {start|stop|restart}" >&2
echo -e "\e[31;5m ATENÇÃO \e[m"
echo "Argumento não informado ou inválido, restartando firewall em $SEG segundos" ;
sleep 1 ;
let SEG-- ;
done
$PROGRAMA restart
exit 1
esac
exit 0
arquivo REDILIST localizado em /etc/firewall/
tcp;FTP;192.168.0.250;20:21
tcp;SSH;192.168.0.254;1022
tcp;ISS;192.168.0.250;80
tcp;APACHE;192.168.0.254;8080
tcp;VNC;192.168.0.250;5959
tcp;TS;192.168.0.250:3389;3333