+ Responder ao Tópico



  1. #1
    mcyberx
    Visitante

    Padrão Segurança NAT

    Senhores,

    Gostaria de saber as regras básicas para poder liberar o tráfego para as máquinas internas depois de colocar essas regras:

    iptables -t nat -P PREROUTING DROP
    iptables -t nat -P OUTPUT DROP
    iptables -t nat -P POSTROUTING DROP

    MINHA DÚVIDA : COMO FAÇO PARA QUE AS MAQUINAS "INTERNAS" ACESSEM A
    INTERNET SE A DEFINIÇÃO DA MINHA POLÍTICA DEFAULT É TUDO - DROP ???
    QUERO "DROPAR TUDO" E SÓ LIBERAR O NECESSÁRIO.

    De antemão, agradeço qualquer ajuda.

  2. #2
    redeprotegida
    Visitante

    Padrão Segurança NAT

    ah , é complicado reescrever o tutorial de iptables aqui...
    mas em caso de preguiça ou algo do tipo, te aconselho a pegar algum firewall iptables pronto e editá-lo conforme suas necessidades

    a maioria deles, tem como politica o DROP para tudo, e aos poucos vai liberando oque você tiver que usar..
    aí vai um scriptzinho legal de firewall:


    ps. não que você deva usar esse firewall, mas olhando o esquema de regras dele, voce pode fazer o seu do jeito que você quer.

    abração

    #!/bin/bash
    #
    # cftk Bring up/down the packet filtering rules
    #
    # chkconfig: 345 08 92
    # description: Bring up/down the packet filtering rules
    # description(pt_BR): Bring up/down the packet filtering rules
    # probe: true
    #
    # This script is part of Conectiva Firewall Tool Kit package.
    #
    # It was originally created by
    # Jefferson Luiz Brindarolli <[email protected]> and
    # Fabio R. Schmidlin <[email protected]> for kernels 2.2 (ipchains)
    # Modified to kernel 2.4 by André Ruiz <[email protected]> based
    # On previous work from Harald Welte <[email protected]>,
    # Leonardo Marques de Souza <[email protected]> and
    # Andreas Hasenack <[email protected]>
    #
    # This piece of software is distributed under GPL. See
    # http://www.gpl.org for further information on this license.
    #

    . /etc/rc.d/init.d/functions

    #
    # Observações:
    #
    # O conntrack aplica o conceito de "ESTABLISHED" e "NEW" inclusive
    # para conexões UDP e ICMP, além de TCP.
    #

    #
    # FIXME: retirar as regras daqui, colocar em /etc/sysconfig/iptables
    #


    #################################################################
    # DEFINIÇÃO DE VARIÁVEIS
    #################################################################

    IPTABLES="/usr/sbin/iptables"
    MODPROBE="/sbin/modprobe"

    # Alterar os dados abaixo de acordo com a rede do cliente
    IF_LOC="lo" # Interface Loopback
    IF_INT="eth0" # Interface da intranet (interna)
    IF_EXT="eth1" # Interface da internet (externa)
    IP_INT="192.168.0.1" # IP da interface IF_INT
    IP_EXT="192.168.10.155" # IP da interface IF_EXT
    NET_LOC="127.0.0.0/24" # Rede da interface IF_LOC
    NET_INT="192.168.0.0/24" # Rede da interface IF_INT
    BRO_INT="192.168.0.255" # Broadcast da IF_INT
    BRO_EXT="192.168.10.255" # Broadcast da IF_EXT


    #################################################################
    # CARGA DE MÓDULOS
    #################################################################

    carrega_modulos() {

    $MODPROBE ip_tables
    $MODPROBE iptable_filter
    $MODPROBE ip_conntrack
    $MODPROBE ip_nat_ftp
    $MODPROBE ip_conntrack_ftp

    }

    #################################################################
    # CARGA DE REGRAS
    #################################################################

    cria_regras() {

    cria_regras_auxiliares
    cria_regras_PREROUTING
    cria_regras_INPUTOUTPUT
    cria_regras_INT2EXT
    cria_regras_EXT2INT
    #cria_regras_INT2INT
    cria_regras_FORWARD
    cria_regras_POSTROUTING

    }


    #################################################################
    # FLUSH E POLÍTICAS DEFAULT
    #################################################################

    destroi_regras() {

    # Define política default para chains defaults
    $IPTABLES -P INPUT DROP # política default para filter
    $IPTABLES -P FORWARD DROP # política default para filter
    $IPTABLES -P OUTPUT DROP # política default para filter
    $IPTABLES -F -t filter # flush nas regras de filter
    $IPTABLES -F -t nat # flush nas regras de nat
    $IPTABLES -F -t mangle # flush nas regras de mangle
    $IPTABLES -X -t filter # deleta chains de filter
    $IPTABLES -X -t nat # deleta chains de nat
    $IPTABLES -X -t mangle # deleta chains de mangle
    $IPTABLES -Z -t filter # zera contadores de filter
    $IPTABLES -Z -t nat # zera contadores de nat
    $IPTABLES -Z -t mangle # zera contadores de mangle

    }

    abre_regras() {

    # Define política default para chains defaults
    $IPTABLES -P INPUT ACCEPT # política default para filter
    $IPTABLES -P FORWARD ACCEPT # política default para filter
    $IPTABLES -P OUTPUT ACCEPT # política default para filter
    $IPTABLES -F -t filter # flush nas regras de filter
    $IPTABLES -F -t nat # flush nas regras de nat
    $IPTABLES -F -t mangle # flush nas regras de mangle
    $IPTABLES -X -t filter # deleta chains de filter
    $IPTABLES -X -t nat # deleta chains de nat
    $IPTABLES -X -t mangle # deleta chains de mangle
    $IPTABLES -Z -t filter # zera contadores de filter
    $IPTABLES -Z -t nat # zera contadores de nat
    $IPTABLES -Z -t mangle # zera contadores de mangle

    }


    #################################################################
    # CHAIN DE PREROUTING
    #################################################################

    cria_regras_PREROUTING() {
    $IPTABLES -A PREROUTING -t nat -p tcp --dport 80 -d 200.201.174.207 -j ACCEPT
    $IPTABLES -A PREROUTING -t nat -d 200.231.155.65 -j ACCEPT

    # Faz Proxy Transparente
    #$IPTABLES -A PREROUTING -t nat -p tcp --dport 80 -d 127.0.0.1 -j ACCEPT
    #$IPTABLES -A PREROUTING -t nat -p tcp --dport 80 -d $IP_EXT -j ACCEPT
    #$IPTABLES -A PREROUTING -t nat -p tcp --dport 80 -j REDIRECT --to-port 3128
    #Proxy Transparente
    # $IPTABLES -A PREROUTING -t nat -p tcp --dport 80 -d 127.0.0.1 -j ACCEPT
    # $IPTABLES -A PREROUTING -t nat -p tcp --dport 80 -d $IP_EXT -j ACCEPT
    # $IPTABLES -A PREROUTING -t nat -p tcp --dport 80 -d $IP_INT -j ACCEPT
    # $IPTABLES -A PREROUTING -t nat -p tcp --dport 80 -j REDIRECT --to-port 3128

    # Melhora latência de ssh pra fora
    $IPTABLES -A PREROUTING -t mangle -p tcp --dport ssh -j TOS --set-tos Minimize-Delay

    # Não deixa smtp sair com prioridade pra não matar o link
    $IPTABLES -A PREROUTING -t mangle -p tcp --dport smtp -j TOS --set-tos Normal-Service

    # Melhora Thoughput de http que sai
    #$IPTABLES -A PREROUTING -t mangle -p tcp -s $IP_EXT --sport http -j TOS --set-tos Maximize-Throughput

    # Piora Thoughput de http que entra
    # FIXME: Normal-Service?
    #$IPTABLES -A PREROUTING -t mangle -p tcp --dport http -j TOS --set-tos Normal-Service

    # Melhora desempenho da VPN
    #$IPTABLES -A OUTPUT -t mangle -p udp -d $IP_VPN --sport 500 --dport 500 -j TOS --set-tos Maximize-Throughput
    #$IPTABLES -A OUTPUT -t mangle -p 50 -d $IP_VPN -j TOS --set-tos Maximize-Throughput

    }

    #################################################################
    # CHAINS DE INPUT, OUTPUT
    #################################################################

    cria_regras_INPUTOUTPUT() {

    # Recusa pacotes inválidos em primeiro lugar
    $IPTABLES -A INPUT -j END_INVALID -m state --state INVALID

    # Deixa loopback livre
    $IPTABLES -A INPUT -j ACCEPT -i $IF_LOC
    $IPTABLES -A OUTPUT -j ACCEPT -o $IF_LOC

    # Verifica se o pacote sofreu spoof de IP
    $IPTABLES -A INPUT -j SPOOF_CHECK

    ## Serviços que rodam na máquina

    # Aceita acesso da rede interna
    $IPTABLES -A INPUT -j ACCEPT -p tcp -s $NET_INT
    $IPTABLES -A OUTPUT -j ACCEPT -p tcp -d $NET_INT
    $IPTABLES -A INPUT -j ACCEPT -p udp -s $NET_INT
    $IPTABLES -A OUTPUT -j ACCEPT -p udp -d $NET_INT

    # Libera todos os OUTPUT do firewall
    $IPTABLES -A OUTPUT -j ACCEPT -p tcp -s $IP_EXT
    $IPTABLES -A OUTPUT -j ACCEPT -p tcp -s $IP_INT
    $IPTABLES -A OUTPUT -j ACCEPT -p udp -s $IP_EXT
    $IPTABLES -A OUTPUT -j ACCEPT -p udp -s $IP_INT

    # Libera ftp da Unicamp para o apt-get
    $IPTABLES -A INPUT -j ACCEPT -p tcp -s 143.106.10.51

    # Libera monitoramento da Senior Sistemas ( alterado por Joao 47 221-3332 )
    $IPTABLES -A INPUT -j ACCEPT -p tcp -s 200.180.36.128/28

    $IPTABLES -A INPUT -j ACCEPT -p tcp -s 200.189.113.114
    $IPTABLES -A INPUT -j ACCEPT -p tcp -s 200.189.113.115
    $IPTABLES -A INPUT -j ACCEPT -p tcp -s 200.189.113.86



    # Libera os vários serviços do Firewall
    $IPTABLES -A INPUT -j ACCEPT -p tcp -d $IP_EXT --sport smtp
    $IPTABLES -A INPUT -j ACCEPT -p tcp -d $IP_EXT --dport smtp

    $IPTABLES -A INPUT -j ACCEPT -p tcp -d $IP_EXT --dport 21021
    $IPTABLES -A INPUT -j ACCEPT -p tcp -d $IP_EXT --dport 20020
    $IPTABLES -A INPUT -j ACCEPT -p udp -d $IP_EXT --dport 21021
    $IPTABLES -A INPUT -j ACCEPT -p udp -d $IP_EXT --dport 20020


    $IPTABLES -A INPUT -j ACCEPT -p tcp -d $IP_EXT --sport pop-3
    $IPTABLES -A INPUT -j ACCEPT -p tcp -d $IP_EXT --dport pop-3
    $IPTABLES -A INPUT -j ACCEPT -p tcp -d $IP_EXT --sport ftp
    $IPTABLES -A INPUT -j ACCEPT -p tcp -d $IP_EXT --dport ftp
    $IPTABLES -A INPUT -j ACCEPT -p tcp -d $IP_EXT --sport http
    $IPTABLES -A INPUT -j ACCEPT -p tcp -d $IP_EXT --dport http
    $IPTABLES -A INPUT -j ACCEPT -p tcp -d $IP_EXT --sport https
    $IPTABLES -A INPUT -j ACCEPT -p tcp -d $IP_EXT --dport https
    $IPTABLES -A INPUT -j ACCEPT -p tcp -d $IP_EXT --sport domain
    $IPTABLES -A INPUT -j ACCEPT -p tcp -d $IP_EXT --dport domain
    $IPTABLES -A INPUT -j ACCEPT -p tcp -d $IP_EXT --sport ftp-data
    $IPTABLES -A INPUT -j ACCEPT -p tcp -d $IP_EXT --dport ftp-data
    $IPTABLES -A INPUT -j ACCEPT -p udp -d $IP_EXT --sport snmp
    $IPTABLES -A INPUT -j ACCEPT -p udp -d $IP_EXT --dport snmp
    # Libera acesso do serviço Samba
    $IPTABLES -A INPUT -j ACCEPT -p udp -d $IP_INT --dport 137:139
    $IPTABLES -A INPUT -j ACCEPT -p tcp -d $IP_INT --dport 137:139
    $IPTABLES -A INPUT -j ACCEPT -p udp -d $IP_INT --sport 137:139
    $IPTABLES -A INPUT -j ACCEPT -p tcp -d $IP_INT --sport 137:139

    # Libera acesso ao Servidor de Banco de Dados Remoto
    $IPTABLES -A INPUT -j ACCEPT -p udp -d $IP_EXT --dport 1521
    $IPTABLES -A INPUT -j ACCEPT -p tcp -d $IP_EXT --dport 1521
    $IPTABLES -A INPUT -j ACCEPT -p udp -d $IP_EXT --sport 1521
    $IPTABLES -A INPUT -j ACCEPT -p tcp -d $IP_EXT --sport 1521

    # Libera sistema Integra
    $IPTABLES -A INPUT -j ACCEPT -p udp -d $IP_EXT --dport 8017
    $IPTABLES -A INPUT -j ACCEPT -p tcp -d $IP_EXT --dport 8017
    $IPTABLES -A INPUT -j ACCEPT -p udp -d $IP_EXT --sport 8017
    $IPTABLES -A INPUT -j ACCEPT -p tcp -d $IP_EXT --sport 8017

    # Libera acesso para Icq
    $IPTABLES -A INPUT -j ACCEPT -p tcp -d $IP_EXT --sport 5190
    $IPTABLES -A INPUT -j ACCEPT -p tcp -d $IP_EXT --dport 5190

    # Libera acesso para Proxy Transparente
    $IPTABLES -A INPUT -j ACCEPT -p tcp -d $IP_EXT --sport 8080
    $IPTABLES -A INPUT -j ACCEPT -p tcp -d $IP_EXT --sport 8000

    #Libeira acesso ao site da CAIXA
    $IPTABLES -A INPUT -j ACCEPT -p tcp -d $IP_EXT --sport 3005
    $IPTABLES -A INPUT -j ACCEPT -p tcp -d $IP_EXT --sport 3005
    $IPTABLES -A INPUT -j ACCEPT -p udp -d $IP_EXT --sport 3005
    $IPTABLES -A INPUT -j ACCEPT -p udp -d $IP_EXT --sport 3005

    # Aceita forward obrigatório de servidores DNS internos
    $IPTABLES -A INPUT -j ACCEPT -p udp --sport domain
    $IPTABLES -A INPUT -j ACCEPT -p udp --dport domain
    $IPTABLES -A OUTPUT -j ACCEPT -p udp --sport domain
    $IPTABLES -A OUTPUT -j ACCEPT -p udp --dport domain

    #Libeira acesso ao site IOB - mario 22/03/04
    $IPTABLES -A INPUT -j ACCEPT -p tcp -d $IP_EXT --sport 8900
    $IPTABLES -A INPUT -j ACCEPT -p tcp -d $IP_EXT --sport 8900
    $IPTABLES -A INPUT -j ACCEPT -p udp -d $IP_EXT --sport 8900
    $IPTABLES -A INPUT -j ACCEPT -p udp -d $IP_EXT --sport 8900

    # Aceita consultas a DNSs externos (existe maneira mais restritiva?)
    $IPTABLES -A INPUT -j ACCEPT -p udp --sport domain --dport 1024:
    $IPTABLES -A OUTPUT -j ACCEPT -p udp --sport 1024: --dport domain

    # Aceita ICMP (todos) da rede interna apenas
    #$IPTABLES -A INPUT -j ACCEPT -p icmp -s $NET_INT
    #$IPTABLES -A OUTPUT -j ACCEPT -p icmp -d $NET_INT
    $IPTABLES -A INPUT -j ACCEPT -p icmp
    $IPTABLES -A OUTPUT -j ACCEPT -p icmp
    # Dropa o resto dos ICMP sem logar (muita coisa)
    $IPTABLES -A INPUT -j DROP -p icmp
    $IPTABLES -A OUTPUT -j DROP -p icmp

    # VPN entre este firewall e outro
    #$IPTABLES -A INPUT -j ACCEPT -p 50 -s $IP_VPN
    #$IPTABLES -A INPUT -j ACCEPT -p udp -s $IP_VPN --sport 500 --dport 500
    #$IPTABLES -A OUTPUT -j ACCEPT -p 50 -d $IP_VPN
    #$IPTABLES -A OUTPUT -j ACCEPT -p udp -d $IP_VPN --sport 500 --dport 500

    # Checa por trojans, para logar diferenciado
    $IPTABLES -A INPUT -j TROJAN_CHECK -m state --state NEW

    # Testa por broadcasts e descarta (sem logar)
    $IPTABLES -A INPUT -j DROP -d $BRO_INT
    $IPTABLES -A INPUT -j DROP -d $BRO_EXT
    $IPTABLES -A INPUT -j DROP -d 255.255.255.255
    $IPTABLES -A OUTPUT -j DROP -d $BRO_INT
    $IPTABLES -A OUTPUT -j DROP -d $BRO_EXT
    $IPTABLES -A OUTPUT -j DROP -d 255.255.255.255

    # Recusa e loga todo o resto
    $IPTABLES -A INPUT -j END_INPUT
    $IPTABLES -A OUTPUT -j END_OUTPUT

    }


    #################################################################
    # CHAINS DE FORWARD
    #################################################################

    cria_regras_FORWARD() {

    # Se for inválido, jogamos fora
    $IPTABLES -A FORWARD -j END_INVALID -m state --state INVALID

    # Verifica se o pacote é spoof de IP
    $IPTABLES -A FORWARD -j SPOOF_CHECK

    # Se já está estabelecida, pode passar
    $IPTABLES -A FORWARD -j ACCEPT -m state --state ESTABLISHED

    # Se relacionada, pode passar (inclusive ftp & cia caem aqui)
    $IPTABLES -A FORWARD -j ACCEPT -m state --state RELATED

    ## Apenas conexões NEW daqui pra frente

    # Checa por trojans (para registrar no log se encontrar)
    $IPTABLES -A FORWARD -j TROJAN_CHECK

    # Pula para chain específica
    $IPTABLES -A FORWARD -j INT2EXT -s $NET_INT
    $IPTABLES -A FORWARD -j EXT2INT -d $NET_INT

    # Se sobreviver, dropa e loga
    $IPTABLES -A FORWARD -j END_FORWARD

    }


    ### INT2EXT

    cria_regras_INT2EXT() {

    $IPTABLES -N INT2EXT

    # Restringe o que a rede interna pode acessar fora
    #$IPTABLES -A INT2EXT -j ACCEPT -p tcp --dport smtp
    #$IPTABLES -A INT2EXT -j ACCEPT -p tcp --dport pop-3
    #$IPTABLES -A INT2EXT -j ACCEPT -p tcp --dport pop3s
    #$IPTABLES -A INT2EXT -j ACCEPT -p tcp --dport telnet
    #$IPTABLES -A INT2EXT -j ACCEPT -p tcp --dport ssh
    #$IPTABLES -A INT2EXT -j ACCEPT -p tcp --dport ftp
    #$IPTABLES -A INT2EXT -j ACCEPT -p tcp --dport http
    #$IPTABLES -A INT2EXT -j ACCEPT -p tcp --dport https

    #Libera tudo da rede interna p/ externa
    $IPTABLES -A INT2EXT -j ACCEPT -p tcp
    $IPTABLES -A INT2EXT -j ACCEPT -p udp
    #Aceita forward de icmp
    $IPTABLES -A INT2EXT -j ACCEPT -p icmp
    # fixme: escolher os tipos realmente queremos e limitar flood

    # Bloqueia o que sobrou
    $IPTABLES -A INT2EXT -j END_INT2EXT

    }

    ####INT2INT
    cria_regras_INT2INT() {
    $IPTABLES -N INT2INT

    # Restringe o que a rede interna pode acessar no firewall
    $IPTABLES -A INT2INT -j ACCEPT -p tcp -d $IP_INT --dport smtp
    $IPTABLES -A INT2INT -j ACCEPT -p tcp -d $IP_INT --dport pop-3
    $IPTABLES -A INT2INT -j ACCEPT -p tcp -d $IP_INT --dport pop3s
    $IPTABLES -A INT2INT -j ACCEPT -p tcp -d $IP_INT --dport telnet
    $IPTABLES -A INT2INT -j ACCEPT -p tcp -d $IP_INT --dport ssh
    $IPTABLES -A INT2INT -j ACCEPT -p tcp -d $IP_INT --dport ftp
    $IPTABLES -A INT2INT -j ACCEPT -p tcp -d $IP_INT --dport http
    $IPTABLES -A INT2INT -j ACCEPT -p tcp -d $IP_INT --dport https

    # Bloqueia o que sobrou
    $IPTABLES -A INT2INT -j END_INT2INT
    }


    ### EXT2INT

    cria_regras_EXT2INT() {

    $IPTABLES -N EXT2INT

    # Nenhum accept, simplesmente nega tudo
    $IPTABLES -A EXT2INT -j END_EXT2INT

    }


    #################################################################
    # CHAINS AUXILIARES
    #################################################################

    cria_regras_auxiliares() {

    ### END_INPUT
    $IPTABLES -N END_INPUT
    $IPTABLES -A END_INPUT -j LOG --log-prefix "FIREWALL: End_Input! "
    $IPTABLES -A END_INPUT -j DROP

    ### END_OUTPUT
    $IPTABLES -N END_OUTPUT
    $IPTABLES -A END_OUTPUT -j LOG --log-prefix "FIREWALL: End_Output! "
    $IPTABLES -A END_OUTPUT -j DROP

    ### END_FORWARD
    $IPTABLES -N END_FORWARD
    $IPTABLES -A END_FORWARD -j LOG --log-prefix "FIREWALL: End_Forward! "
    $IPTABLES -A END_FORWARD -j DROP

    ### END_SPOOF
    $IPTABLES -N END_SPOOF
    $IPTABLES -A END_SPOOF -j LOG --log-prefix "FIREWALL: Spoof! "
    $IPTABLES -A END_SPOOF -j DROP

    ### END_INVALID
    $IPTABLES -N END_INVALID
    $IPTABLES -A END_INVALID -j LOG --log-prefix "FIREWALL: Invalid! "
    $IPTABLES -A END_INVALID -j DROP

    ### END_TROJAN
    $IPTABLES -N END_TROJAN
    $IPTABLES -A END_TROJAN -j LOG --log-prefix "FIREWALL: Trojan! "
    $IPTABLES -A END_TROJAN -j DROP

    ### END_INT2EXT
    $IPTABLES -N END_INT2EXT
    $IPTABLES -A END_INT2EXT -j LOG --log-prefix "FIREWALL: End_Int2Ext! "
    $IPTABLES -A END_INT2EXT -j DROP

    ### END_EXT2INT
    $IPTABLES -N END_EXT2INT
    $IPTABLES -A END_EXT2INT -j LOG --log-prefix "FIREWALL: End_Ext2Int! "
    $IPTABLES -A END_EXT2INT -j DROP

    ### END_INT2INT
    #$IPTABLES -N END_INT2INT
    #$IPTABLES -A END_INT2INT -j LOG --log-prefix "FIREWALL: End_Int2Int! "
    #$IPTABLES -A END_INT2INT -j DROP

    ### SPOOFCHECK
    # As redes internas são consideradas confiáveis, só é checado o
    # path de roteamento. Para se proteger de spoof interno também
    # seria necessário monitorar os MAC:IP na rede interna.
    $IPTABLES -N SPOOF_CHECK
    #$IPTABLES -A SPOOF_CHECK -j ACCEPT -p UDP -s 200.168.172.1 -d 192.168.10.1 --sport 161
    $IPTABLES -A SPOOF_CHECK -j END_SPOOF -s $NET_INT -i ! $IF_INT
    $IPTABLES -A SPOOF_CHECK -j END_SPOOF -s ! $NET_INT -i $IF_INT

    ### TROJANS
    # Alguns trojans, os mais comuns
    # Nào é necessário checar por trojans se você adota a política de
    # tudo fechado, abrem-se as excessões. Mas, você pode querer verificar
    # mesmo assim, para poder registrar um log mais específico (nosso caso).
    $IPTABLES -N TROJAN_CHECK
    $IPTABLES -A TROJAN_CHECK -j END_TROJAN -p tcp --dport 555 # phAse zero
    $IPTABLES -A TROJAN_CHECK -j END_TROJAN -p udp --dport 555 # phAse zero
    $IPTABLES -A TROJAN_CHECK -j END_TROJAN -p tcp --dport 1243 # Sub-7, SubSeven
    $IPTABLES -A TROJAN_CHECK -j END_TROJAN -p udp --dport 1243 # Sub-7, SubSeven
    $IPTABLES -A TROJAN_CHECK -j END_TROJAN -p tcp --dport 3129 # Masters Paradise
    $IPTABLES -A TROJAN_CHECK -j END_TROJAN -p udp --dport 3129 # Masters Paradise
    $IPTABLES -A TROJAN_CHECK -j END_TROJAN -p tcp --dport 6670 # DeepThroat
    $IPTABLES -A TROJAN_CHECK -j END_TROJAN -p udp --dport 6670 # DeepThroat
    $IPTABLES -A TROJAN_CHECK -j END_TROJAN -p tcp --dport 6711 # Sub-7, SubSeven
    $IPTABLES -A TROJAN_CHECK -j END_TROJAN -p udp --dport 6711 # Sub-7, SubSeven
    $IPTABLES -A TROJAN_CHECK -j END_TROJAN -p tcp --dport 6969 # GateCrasher
    $IPTABLES -A TROJAN_CHECK -j END_TROJAN -p udp --dport 6969 # GateCrasher
    $IPTABLES -A TROJAN_CHECK -j END_TROJAN -p tcp --dport 12345 # NetBus
    $IPTABLES -A TROJAN_CHECK -j END_TROJAN -p udp --dport 12345 # NetBus
    $IPTABLES -A TROJAN_CHECK -j END_TROJAN -p tcp --dport 21544 # GirlFriend
    $IPTABLES -A TROJAN_CHECK -j END_TROJAN -p udp --dport 21544 # GirlFriend
    $IPTABLES -A TROJAN_CHECK -j END_TROJAN -p tcp --dport 23456 # EvilFtp
    $IPTABLES -A TROJAN_CHECK -j END_TROJAN -p udp --dport 23456 # EvilFtp
    $IPTABLES -A TROJAN_CHECK -j END_TROJAN -p tcp --dport 27374 # Sub-7, SubSeven
    $IPTABLES -A TROJAN_CHECK -j END_TROJAN -p udp --dport 27374 # Sub-7, SubSeven
    $IPTABLES -A TROJAN_CHECK -j END_TROJAN -p tcp --dport 30100 # NetSphere
    $IPTABLES -A TROJAN_CHECK -j END_TROJAN -p udp --dport 30100 # NetSphere
    $IPTABLES -A TROJAN_CHECK -j END_TROJAN -p tcp --dport 31789 # Hack'a'Tack
    $IPTABLES -A TROJAN_CHECK -j END_TROJAN -p udp --dport 31789 # Hack'a'Tack
    $IPTABLES -A TROJAN_CHECK -j END_TROJAN -p tcp --dport 31337 # BackOrifice, and many others
    $IPTABLES -A TROJAN_CHECK -j END_TROJAN -p udp --dport 31337 # BackOrifice, and many others
    $IPTABLES -A TROJAN_CHECK -j END_TROJAN -p tcp --dport 50505 # Sockets de Troie
    $IPTABLES -A TROJAN_CHECK -j END_TROJAN -p udp --dport 50505 # Sockets de Troie

    }


    #################################################################
    # CHAIN DE POSTROUTING
    #################################################################

    cria_regras_POSTROUTING() {

    # Faz o mascaramento da rede interna.
    $IPTABLES -A POSTROUTING -t nat -j SNAT --to-source $IP_EXT -s $NET_INT -o $IF_EXT
    $IPTABLES -t nat -A POSTROUTING -s $NET_INT -o $IF_EXT -j MASQUERADE
    $IPTABLES -t nat -A POSTROUTING -s 192.168.0.0/24 -j SNAT --to $IP_EXT
    }


    #################################################################
    # SCRIPT INIT DO SYSV
    #################################################################

    # checa se o pacote iptables foi instalado
    if [ ! -x "$IPTABLES" ]; then
    echo "O executável $IPTABLES não existe!"
    exit 1
    fi

    # checa se o kernel é 2.3 ou 2.4
    KERNELMAJ=`uname -r | sed -e 's,\..*,,'`
    KERNELMIN=`uname -r | sed -e 's,[^\.]*\.,,' -e 's,\..*,,'`
    if [ ! "$KERNELMAJ" -eq 2 -o ! "$KERNELMIN" -eq 4 ] ; then
    echo "Você não está usando um kernel versão 2.4"
    exit 1
    fi

    # Não insere regras se o modo ipchains estiver carregado
    if /sbin/lsmod 2>/dev/null | grep -q ipchains; then
    echo "Descarregue o módulo ipchains para o netfilter!"
    exit 1
    fi

    if ! carrega_modulos; then
    echo "Não consegui carregar os módulos do iptables"
    exit 1
    fi

    case "$1" in
    start)
    echo -n "Configurando regras do firewall: "
    destroi_regras && cria_regras && \
    echo_success || echo_failure
    echo ""
    touch /var/lock/subsys/iptables
    ;;

    stop)
    echo -n "Removendo regras do firewall: "
    destroi_regras && \
    echo_success || echo_failure
    echo ""
    rm -f /var/lock/subsys/iptables
    ;;

    stopopen)
    echo -n "Removendo regras e abrindo firewall: "
    abre_regras && \
    echo_success || echo_failure
    echo ""
    rm -f /var/lock/subsys/iptables
    ;;

    restart)
    # isso não é um daemon, então não é necessário dar "stop"
    # foi deixado aqui para os que esperam que ele exista
    $0 start
    ;;

    status)
    $IPTABLES --list -n
    ;;

    *)
    echo "Uso: $0 {start|stop|stopopen|restart|status}"
    esac

  3. #3
    mcyberx
    Visitante

    Padrão Re: Segurança NAT

    Cara, vc escreveu tudo, menos o que eu precisava, mas valeu. vai servi pra alguém que tiver com preguiça como você disse. abraço

    Se alguém puder me ajudar agradeço

    eu já tenho as regras prontas de INPUT, OUTPUT e FORWARD
    preciso as de PREROUTING, POSTROUTING e OUTPUT

    depois de DROPA tudo (não para máquina firewall, mas para a rede interna) queria só as regras básicas pra navega na internet, é só

    valeu

  4. #4

    Padrão Segurança NAT

    cara se nao me engano sao essas duas linhas que prescisa, qq coisa da um look no forum que tem varios topicos sobre isso:
    # Se já está estabelecida, pode passar
    $IPTABLES -A FORWARD -j ACCEPT -m state --state ESTABLISHED

    # Se relacionada, pode passar (inclusive ftp & cia caem aqui)
    $IPTABLES -A FORWARD -j ACCEPT -m state --state RELATED

  5. #5
    redeprotegida
    Visitante

    Padrão Segurança NAT

    uai, pra navegar é so vc manter seu DROP
    aí segue as regras:

    (pra funcionar FTP sem ser passive mode)
    modprobe ip_conntrack_ftp
    modprobe ip_nat_ftp

    (nat)
    iptables -t nat -A POSTROUTING -s suarede/24 -d 0/0 -j MASQUERADE
    (liberaçao só pra porta 80)
    iptables -A FORWARD -p TCP -s suarede/24 -d 0/0 --dport 80 -j ACCEPT
    (negação geral)
    iptables -A FORWARD -s suarede/24 -d 0/0 -j REJECT


    com isso ele vai navegar, pela porta 80
    e qualquer outra porta vai negar
    aí caso queira ir liberando outras portas
    como ftp/ssl/ssh etc etc etc
    vc vai pondo no --dport

    ok??

    Abração!

    (Ps. o firewall acima faz isso, só que além de fazer isso ele também tem umas implementações a mais)

  6. #6
    mcyberx
    Visitante

    Padrão Re: Segurança NAT

    ainda não deu certo, tá faltando alguma coisinha com o PREROUTING e não sei como fazer... Quando libero ele consigo navegar

  7. #7
    redeprotegida
    Visitante

    Padrão Segurança NAT

    se vc quer soh navegar, deixa sem o prerouting
    deixa soh o postrouting que eu te passei e as regras de bloqueio de saida
    e mantem o seu input drop para negar conexões de fora!


    caso não funcione ainda, cola teu script enteiro aqui que agente da um jeitinho nele!

    abraço

  8. #8
    sk
    Visitante

    Padrão Para navegar

    Segue as regras:

    iptables -t nat -A PREROUTING -i ! $INTERNET_IFACE -j ACCEPT
    iptables -t nat -A PREROUTING -m state --state ESTABLISHED,RELATED -j ACCEPT
    iptables -t nat -A OUTPUT -m state --state ESTABLISHED,RELATED,NEW -j ACCEPT
    iptables -t nat -A POSTROUTING -m state --state ESTABLISHED,RELATED,NEW -j ACCEPT

    Com essas regras resolvi meu problema,
    Agora vc precisa ir liberando os serviços , etc, qualquer coisa da um alo amigo.

  9. #9
    mcyberx
    Visitante

    Padrão Re: Para navegar

    resolvido,

    obrigado a todos. usei as dicas do SK

    iptables -t nat -A PREROUTING -i eth1 -j ACCEPT
    iptables -t nat -A PREROUTING -m state --state ESTABLISHED,RELATED -j ACCEPT
    iptables -t nat -A OUTPUT -m state --state ESTABLISHED,RELATED,NEW -j ACCEPT
    iptables -t nat -A POSTROUTING -m state --state ESTABLISHED,RELATED,NEW -j ACCEPT

    valeu mesmo