Formas de liberar portas por IP

1. Formas de liberar portas por IP

Renato dos Santos
rensantos

(usa Ubuntu)

Enviado em 26/05/2013 - 19:16h

Ola a todos.

Antes de postar, procurei algumas informações, inclusive aqui do VOL com relação a liberação de portas, mas como ainda sou novato no assunto, mais me confundi do que entendi, em um primeiro momento, preciso liberar portas para determinados IPs mas encontrei estas várias formas de liberar na rede:

iptables -A FORWARD -p tcp -d 192.168.x.x --dport 1000 -j ACCEPT
iptables -A FORWARD -p tcp -s ${QUALQUER} -d (IP DESTINO) –dport 1555 -j ACCEPT
iptables -t nat -A POSTROUTING -p tcp -s ${QUALQUER} -d (IP DESTINO) –dport 1555 -j MASQUERADE
iptables -t nat -A PREROUTING -s 0/0 -p tcp --dport 110 -j --DNAT --to-destination 10.0.0.100:110
iptables -A FORWARD -p tcp --dport 110 -j ACCEPT
iptables -A FORWARD -p tcp --sport 110 -j ACCEPT
iptables -A FORWARD -s $ip -p tcp --dport $porta -j ACCEPT
iptables -A FORWARD -s $ip -p tcp --sport $porta -j ACCEPT

A pergunta é, qual a forma correta de liberar uma porta para um IP na minha rede, tenho uma adsl com conexão ppp0 um ip fixo e eth0 para rede interna (192.168.1.0/24), gostaria de liberar, por exemplo:
Para o IP 192.168.1.10 tudo (diretor, sabe como é, rsrs), também bloqueei o facebook pelo firewall, posso liberar este IP antes da regra do bloqueio e ele ficará liberado?
Para o IP 192.168.1.11 apenas algumas portas (Tipo Conectividade Social e coisas do governo)
Para o restante da rede, algumas portas, tipo 53 (DNS), 110, 587, 25, desse tipo...

Eu li que o iptables lê o arquivo seqüencialmente, tipo o squid.conf, ou seja, se bloquear em cima, não adianta liberar mais abaixo, isso tb está correto?
Outra coisa, sempre vejo, até pelo man iptables que não se deve usar MASQUERADE com IP fixo, só com dinâmico, porque?

Desculpem a quantidade de perguntas, mas estou mesmo precisando de ajuda e se alguém tiver algum link ou indicação de livro para que eu possa estudar sobre as chains, regras e opções do iptables, para saber quando usar o FORWARD, INPUT, OUTPUT, POSTROUTING, PREROUTING eu agradeço tb.

Abs,

Renato Santos


  


2. Re: Formas de liberar portas por IP

Buckminster
Buckminster

(usa Debian)

Enviado em 26/05/2013 - 20:03h

rensantos escreveu:

Ola a todos.

Antes de postar, procurei algumas informações, inclusive aqui do VOL com relação a liberação de portas, mas como ainda sou novato no assunto, mais me confundi do que entendi, em um primeiro momento, preciso liberar portas para determinados IPs mas encontrei estas várias formas de liberar na rede:

iptables -A FORWARD -p tcp -d 192.168.x.x --dport 1000 -j ACCEPT
iptables -A FORWARD -p tcp -s ${QUALQUER} -d (IP DESTINO) –dport 1555 -j ACCEPT
iptables -t nat -A POSTROUTING -p tcp -s ${QUALQUER} -d (IP DESTINO) –dport 1555 -j MASQUERADE
iptables -t nat -A PREROUTING -s 0/0 -p tcp --dport 110 -j --DNAT --to-destination 10.0.0.100:110
iptables -A FORWARD -p tcp --dport 110 -j ACCEPT
iptables -A FORWARD -p tcp --sport 110 -j ACCEPT
iptables -A FORWARD -s $ip -p tcp --dport $porta -j ACCEPT
iptables -A FORWARD -s $ip -p tcp --sport $porta -j ACCEPT

A pergunta é, qual a forma correta de liberar uma porta para um IP na minha rede, tenho uma adsl com conexão ppp0 um ip fixo e eth0 para rede interna (192.168.1.0/24), gostaria de liberar, por exemplo:
Para o IP 192.168.1.10 tudo (diretor, sabe como é, rsrs), também bloqueei o facebook pelo firewall, posso liberar este IP antes da regra do bloqueio e ele ficará liberado?
Para o IP 192.168.1.11 apenas algumas portas (Tipo Conectividade Social e coisas do governo)
Para o restante da rede, algumas portas, tipo 53 (DNS), 110, 587, 25, desse tipo...

Eu li que o iptables lê o arquivo seqüencialmente, tipo o squid.conf, ou seja, se bloquear em cima, não adianta liberar mais abaixo, isso tb está correto?
Outra coisa, sempre vejo, até pelo man iptables que não se deve usar MASQUERADE com IP fixo, só com dinâmico, porque?

Desculpem a quantidade de perguntas, mas estou mesmo precisando de ajuda e se alguém tiver algum link ou indicação de livro para que eu possa estudar sobre as chains, regras e opções do iptables, para saber quando usar o FORWARD, INPUT, OUTPUT, POSTROUTING, PREROUTING eu agradeço tb.

Abs,

Renato Santos


Para o Diretor:
iptables -A FORWARD -s 192.168.1.10 -j ACCEPT
iptables -A FORWARD -d 192.168.1.10 -j ACCEPT
Essas regras liberarão tudo para o querido Diretor. Mas você deve colocar elas por primeiro porque o iptables lê as regras de cima para baixo e se encontrar algum conflito, vale a primeira regra das duas (ou mais) em conflito.

"masquerade :: Este alvo só é válido na tabela nat na chain postrouting. Ele só deve ser utilizado com IP atribuído dinamicamente (dialup): se você tem um endereço IP estático, você deve usar o alvo snat."

Veja aqui o Manual do iptables traduzido:
http://www.vivaolinux.com.br/artigo/Manual-do-IPtables-Comentarios-e-sugestoes-de-regras/

E veja aqui mais explicações sobre porque não usar MASQUERADE com IP fixo:
http://www.vivaolinux.com.br/artigo/Redes-de-Computadores-IPtables-Enderecos-IPs-Explicacoes-basicas...

Segue um script de configurações mínimas para você se basear. Vá fuçando nele e acrescentando regras e comentando o que não quiser.

#!/bin/bash
#
#Desabilitando o tráfego entre as placas
########################################
echo 0 > /proc/sys/net/ipv4/ip_forward
#
##Apagando e restaurando as chains e tabelas
############################################
iptables -Z # Zera as regras das chains
iptables -F # Remove as regras das chains
iptables -X # Apaga as chains
iptables -t nat -Z
iptables -t nat -F
iptables -t nat -X
iptables -t mangle -Z
iptables -t mangle -F
iptables -t mangle -X
#
##Proteção contra ping, SYN Cookie, IP Spoofing e proteções do kernel
#####################################################################
echo 1 > /proc/sys/net/ipv4/tcp_syncookies #Syn Flood-DoS
echo 1 > /proc/sys/net/ipv4/conf/all/rp_filter #Ip Spoofing
echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_broadcasts #Sem ping e port scanners
echo 0 > /proc/sys/net/ipv4/icmp_ignore_bogus_error_responses #Sem resposta remota
for i in /proc/sys/net/ipv4/conf/*; do
echo 0 > $i/accept_redirects #Sem redirecionar rotas
echo 0 > $i/accept_source_route #Sem traceroute
echo 1 > $i/log_martians #Loga pacotes suspeitos no kernel
echo 1 > $i/rp_filter #Ip Spoofing
echo 1 > $i/secure_redirects; done #Redirecionamento seguro de pacotes
echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_all #Sem ping e tracert
#
#Carregando os módulos.
#######################
modprobe ip_tables
modprobe iptable_nat
modprobe iptable_filter
modprobe iptable_mangle
#
##Definindo políticas padrões
#############################
iptables -P INPUT DROP # iptables a política padrão da chain INPUT é proibir tudo
iptables -P FORWARD DROP
iptables -P OUTPUT ACCEPT
#
##Liberando a Loopback
######################
iptables -A INPUT -i lo -j ACCEPT # adiciona regra na chain INPUT para liberar a loopback
#
##Regras de segurança na internet e de aceitação de pacotes
###########################################################
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A INPUT -m state --state NEW ! -i eth0 -j DROP # << Interface de entrada da internet
iptables -A FORWARD -m state --state NEW ! -i eth0 -j DROP
iptables -A INPUT -m state --state INVALID -j DROP
iptables -A FORWARD -m state --state INVALID -j DROP
#
##Liberando portas somente para a rede interna
##############################################
iptables -A INPUT -p tcp --dport 3128 -i eth1 -j ACCEPT #Proxy
iptables -A INPUT -p tcp --dport 80 -i eth1 -j ACCEPT #HTTP
iptables -A INPUT -p tcp --dport 21 -i eth1 -j ACCEPT #FTP
iptables -A INPUT -p tcp --dport 53 -i eth1 -j ACCEPT #DNS
iptables -A INPUT -p udp --dport 53 -i eth1 -j ACCEPT #DNS
iptables -A INPUT -p tcp --dport 25 -i eth1 -j ACCEPT #SMTP
iptables -A INPUT -p tcp --dport 110 -i eth1 -j ACCEPT #SSL
iptables -A INPUT -p udp --dport 110 -i eth1 -j ACCEPT #SSL
iptables -A INPUT -p tcp --dport 8080 -j ACCEPT #HTTP - Apache
iptables -A INPUT -p udp --dport 8080 -j ACCEPT #HTTP - Apache
#
# Habilita o roteamento no kernel #
echo 1 > /proc/sys/net/ipv4/ip_forward
#
# Compartilha a internet
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
#
# Redirecionando para o Squid
#iptables -t nat -A PREROUTING -i eth1 -p tcp --dport 80 -j REDIRECT --to-port 3128
#
## A PARTIR DAQUI VOCÊ PODE ACRESCENTAR AS TUAS REGRAS OU ANTES DO REDIRECIONAMENTO PARA O SQUID ##


Se quiser pode numerar as regras, exemplo:

iptables -t filter -I FORWARD 1 -p tcp -d facebook.com --dport 443 -j ACCEPT
iptables -t filter -I FORWARD 2 -p tcp -d diretor.com --dport 443 -j ACCEPT
iptables -t filter -I FORWARD 3 -p tcp -d twitter.com --dport 443 -j ACCEPT

iptables -t filter -I OUTPUT 1 -p tcp -d facebook.com --dport 443 -j ACCEPT
iptables -t filter -I OUTPUT 2 -p tcp -d diretor.com --dport 443 -j ACCEPT
iptables -t filter -I OUTPUT 3 -p tcp -d twitter.com --dport 443 -j ACCEPT

E depois bloqueie:

iptables -t filter -I FORWARD 4 -p tcp --dport 443 -j DROP
iptables -t filter -I OUTPUT 4 -p tcp --dport 443 -j DROP

Pode inserir (-I) uma tripa de regras numeradas e somente as duas últimas bloquearão tudo.

E desculpe a quantidade de respostas.






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts