Sobre Como Abir Porta no IPtables

Iniciado por joaotime, 18 de Novembro de 2011, 18:00

tópico anterior - próximo tópico

joaotime

Ola Pessoal Gostaria de saber como abrir porta para um radio
segue o meu firewall
#!/bin/sh
#Configuração do Firewall através do iptables
#Autoria do Script
#"::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::"
#"| Script de Firewall - IPTABLES"
#"| Criado por: Marcelo Magno"
#"| Contribuindo por: Josemar, Marcelo, Urubatan Neto e todos os"
#"| membros da comunidade viva o linux"
#"| Técnico em Informática"
#"| joao@dsoft.com.br"
#"| Uso: firewall start|stop|restart"
#"::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::"

#Declaração de variaveis
PATH=/sbin:/bin:/usr/sbin:/usr/bin
IPTABLES="/sbin/iptables"
PROGRAMA="/usr/local/bin/firewall"

#portas liberadas e bloqueadas
PORTSLIB="/etc/firewall/portslib"
PORTSBLO="/etc/firewall/portsblo"

#Interfaces de Rede
LAN=eth1
WAN=eth0
REDE="192.168.0.0/24"

REDILIST="/etc/firewall/listaderedirecionamento"


# Os diversos módulos do iptables são chamdos através do modprobe
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 "::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::"
echo "| Script de Firewall - IPTABLES"
echo "| Criado por: Marcelo Magno"
echo "| Contribuindo por: Josemar, Marcelo, Urubatan Neto e todos os"
echo "| membros da comunidade viva o linux"
echo "| Técnico em Informática"
echo "| joao@dsoft.com.br"
echo "| Uso: firewall start|stop|restart"
echo "::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::"
echo
echo "=========================================================|"
echo "|:INICIANDO A CONFIGURAÇÃO DO FIREWALL NETFILTER ATRAVÉS:|"
echo "|:                    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_forward
echo "1" > /proc/sys/net/ipv4/ip_forward
echo "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 ACCEPT
echo "ativado o fluxo interno entre os processos"
echo "ON .................................................[ OK ]"


#liberar as portas principais do servidor
for 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 ACCEPT
done
$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 ACCEPT
echo "ativado as portas abertas para estabelecer conexões"
echo "ativado a liberação das portas principais do servidor"  $HOSTNAME
echo "ON .................................................[ OK ]"

#Bloqueio ping da morte
echo "1" > /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 "ativado o bloqueio a tentativa de ataque do tipo ping da morte"
echo "ON .................................................[ OK ]"

#bloquear ataque do tipo SYN-FLOOD
echo "1" > /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 "ativado o bloqueio a tentativa de ataque do tipo SYN-FLOOD"
echo "ON .................................................[ OK ]"

#Bloqueio de ataque ssh de força 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 DROP
echo "ativado o bloqueio a tentativa de ataque do tipo SSH-BRUT-FORCE"
echo "ON .................................................[ OK ]"

#Bloqueio de portas
for 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
done

#bloqueio Anti-Spoofings
$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.1.0/16 -i $WAN -j DROP
echo "ativado o bloqueio de tentativa de ataque do tipo Anti-spoofings"
echo "ON .................................................[ OK ]"


#Bloqueio de scanners ocultos (Shealt Scan)
$IPTABLES -A FORWARD -p tcp --tcp-flags SYN,ACK, FIN,  -m limit --limit 1/s -j ACCEPT
echo "bloqueado scanners ocultos"
echo "ON .................................................[ OK ]"

#-----------------------------------------------------------------------
# Essas nao passam pelo proxy. Liberando por MAC
# Meu note - Joao
#$IPTABLES -t nat -A PREROUTING -p tcp -m mac --mac-source 88:9F:FA:5C:B0:7F -j ACCEPT
#-------------------------------------------------------------------------------------
#iptables -A FORWARD -s $REDE -d sv5.provedor.pro.br -j ACCEPT

#iptables -A FORWARD -s $REDE -d sv5.provedor.pro.br -j ACCEPT

#----------------------------------------------------------------------------------------
# Esta regra eu libero para uma maquina uma porta RADIO DJ
# Esta regra tem que ser antes da porta que vai oara o squid
#$IPTABLES -A FORWARD -s 192.168.0.3 -p tcp --dport 8000 -j ACCEPT
#$IPTABLES -A FORWARD -s 192.168.0.3 -p tcp --dport 8002 -j ACCEPT

#-------------------------------------------------------------------------------------

#-----------------------------------------------------------------------------------------
#Liberando MSN para um IP
#iptables -A FORWARD -s 192.168.1.222 -p tcp --dport 1863 -j ACCEPT
# iptables -A FORWARD -s 192.168.1.222 -p udp --dport 1863 -j ACCEPT
# iptables -A FORWARD -s 192.168.1.222 -d loginnet.passport.com -j ACCEPT
# iptables -A FORWARD -s 192.168.1.222 -d 64.54.239.80 -j ACCEPT
# iptables -A FORWARD -s 192.168.1.222 -d login.live.com -j ACCEPT
# iptables -A FORWARD -s 192.168.1.222 -d login.passport.com -j ACCEPT
# iptables -A FORWARD -s 192.168.1.222 -d gateway.messenger.hotmail.com -j ACCEPT
# iptables -A FORWARD -s 192.168.1.222 -d hotmail.com -j ACCEPT
# iptables -A FORWARD -s 192.168.1.222 -d hotmail.com.br -j ACCEPT

#$IPTABLES -A FORWARD -s 192.168.0.3 -j ACCEPT


#$IPTABLES -t nat -A PREROUTING -p tcp --dport 8002 -s 192.168.0.3 -j RETURN

#--------------------------------------------------------------------------------------------

#---------------------------------------------------------------------------------------------
# Somente as portas 80 e 443 são redirecionadas.
#proxy transparente
$IPTABLES -t nat -A PREROUTING -i $LAN -p tcp --dport 80 -j REDIRECT --to-port 3128
echo "Proxy Transparente ativado"
echo "ON .................................................[ OK ]"
#---------------------------------------------------------------------------------------------

#---------------------------------------------------------------------------------------------
# ativar o mascaramento
$IPTABLES -t nat -A POSTROUTING  -o $WAN -j MASQUERADE
#---------------------------------------------------------------------------------------------

#---------------------------------------------------------------------------------------------

echo
echo "==========================================================|"
echo "::TERMINADA A CONFIGURAÇÃO DO FIREWALL NETFILTER ATRAVÉS::|"
echo "::                  DO IPTABLES                         ::|"
echo "==========================================================|"
echo "FIREWALL ATIVADO - SISTEMA PREPARADO"
echo "SCRIPT DE FIREWALL MODIFICADO POR :-) JOAO BENEVIDES COSTA|"
;;
#----------------------------------------------------- FINAL DO START --------------------------

#

#------------------------------------------------------COMECO STOP -----------------------------
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"
;;
#---------------------------------------------------------FINAL STOP ------------------------------

restart)
$PROGRAMA stop
$PROGRAMA start
;;
*)
echo "Use: $N {start|stop|restart}" >&2
echo -e "\033[01;31mATENÇÃO";tput sgr0
echo "Você não colocou nenhum argumento ou algum conhecido, então Por Padrão será dado em 5 segundos um restart no firewall"
sleep 5
$PROGRAMA restart
exit 1
esac
exit 0


joaotime

Sabe que o ip que quero libera e da maquina 192.168.0.3 para o ip sv5.provedor.pro.br

fiz alguns teste tipo quando coloco



$IPTABLES -P INPUT ACCEPT
$IPTABLES -P OUTPUT ACCEPT
$IPTABLES -P FORWARD ACCEPT


ele navega como devo proceder

ozzyblank

acho que isso pode funcionar ( não sei muito sobre iptables)


iptables -A OUTPUT -i eth1 (interface LAN)  -s 192.168.0.3 -d sv5.provedor.pro.br -j ACCEPT

# o que quiser sair da interface de rede (eth1) com origem 192.168.0.3/255.255.255.0(pode ser que precisa colocar mascara) com destino sv5.provedor.pro.br é aceito, caso voce queira nao deixar é DROP ou REJECT no final, espero ter ajuda em algo hehe

como eu disse nao entendo muito de iptables, estou querendo apenas ajudar.

zekkerj

Só pra saber, joaotime, quem criou esse firewall não pode explicar pra vc onde fazer a alteração pra abrir a porta? ;D
Pesquise antes de perguntar, sua dúvida pode já ter sido respondida.
Não respondo dúvidas por MP, coloque sua dúvida no fórum onde ela pode ser pesquisada pelos seus colegas!
Não venha ao fórum apenas para perguntar. Se você sabe a resposta de um problema, porque não ajudar seu colega? ;D

joaotime

zekkerj ()
Acabei pegando este Iptables na net mesmo funcionou para minhas coisas aqui mais se tiver algo que mudar estou disposto

joaotime

ozzyblank ()
nao deu certo
nao sei o que pode estart de errado

Agora uma pergunta
estas regras tem que estart ante ou depois do


$IPTABLES -t nat -A PREROUTING -i $LAN -p tcp --dport 80 -j REDIRECT --to-port 3128

joaotime

uma outra pergunta numa boa regra de firewall eu devo
1) Negar tudo e abrir o que preciso
2) abrir tudo e negar o resto