Redirecionamento de Portas e Politicas Padrão [RESOLVIDO]

1. Redirecionamento de Portas e Politicas Padrão [RESOLVIDO]

VICTOR FELIPE DOLCE CARDOSO
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



  


2. Re: Redirecionamento de Portas e Politicas Padrão [RESOLVIDO]

Eriton Almeida
eritonalmeida

(usa Debian)

Enviado em 29/08/2011 - 12:44h

cara vc deveria começar com o basicão, já que não manja muito.

sobre politicas padrão, quando vc usa DROP ou REJECT, tudo que não estiver liberado vai ser bloqueado. Isso é recomendado para quem domina a ferramenta, pois é bem complicado


3. Re: Redirecionamento de Portas e Politicas Padrão [RESOLVIDO]

VICTOR FELIPE DOLCE CARDOSO
felipedc

(usa Debian)

Enviado em 29/08/2011 - 13:05h

Opa Eriton, blz cara?

O que seria o basicão?

Eu só preciso de um script que:
Disponibilize os serviços que tenho disponiveis na minha rede como: ftp, ssh, web e ts.
E também de uma segurança funcional, que bloqueie determinadas portas padrões, como: 3389 (ts), 22(ssh).

Estes serviços irao trabalhar com outras portas publicas definidas por mim, a ponto de somente EU ter acesso, ninguem mais.

Sacou?

Mas obrigado pela dica e infelizmente não tem como fugir disso.. pois é oque preciso.

Serviços disponiveis e uma certa segurança, que é exatamente oque o script que nosso amigo Magno disponibilizou no forum.

Mas valeu!!



Pois bem, fiz uma verificação externa.. e os serviçõs de redirecionamento externos estão funcionando, ou seja, consigo acessar ftp, web, ts e os outros serviços que tenho na minha rede.

O Unico problema agora é que eu gostaria de 'trancar' as portas padrões do SSH, que é a 22.. como fazer isso?

Em relação aos serviços nao funcionar internamente, eu já vi um tópico aqui no forum que dava a solução, mas agora não consigo encontrar, o problema é que quando faço uma solicitação para o gateway, quando o servidor vai me retornar a resposta, ele verifica meu ip e ve que é um ip interno e o pacote se perde, existe uma solução e eu irei encontrar e postar aqui.







Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts